Difference between revisions of "New LCL shortcut system"
From Lazarus wiki
Jump to navigationJump to searchLine 25: | Line 25: | ||
==Conclusion== | ==Conclusion== | ||
− | * create list of extra shortcut data under TApplication ( | + | * create list of extra shortcut data under TApplication (TLCLShortCut) |
* the TShortCut value would be "an index" to one item in this list, unused bits can distinguish different shortcuts with same key code (0 will be reserved for old version) | * the TShortCut value would be "an index" to one item in this list, unused bits can distinguish different shortcuts with same key code (0 will be reserved for old version) | ||
* modify shortcut handling in TApplication, TForm, TAction and TMenuItem | * modify shortcut handling in TApplication, TForm, TAction and TMenuItem | ||
* add functions like ShortCutToText to TApplication | * add functions like ShortCutToText to TApplication | ||
* modify TShortCut component editor | * modify TShortCut component editor | ||
+ | |||
+ | ===TLCLShortCut class=== | ||
+ | * index - TShortCut with modified unused bits | ||
+ | * priority list of TLCLShortCutItem | ||
+ | ** key modifiers | ||
+ | ** platform modifiers | ||
+ | ** key or UTF-8 character |
Revision as of 16:13, 9 October 2008
This page collects ideas about improving system of shortcuts in LCL.
Current state
TShortCut = Low(Word)..High(Word); // in classes.pp unit // virtual key codes VK_* Key := ShortCut and $FF; // key modifiers Meta := ShortCut and $1000; // scMeta Shift := ShortCut and $2000; // scShift Control := ShortCut and $4000; // scControl Alt := ShortCut and $8000; // scAlt
Unused bits in TShortCut: $0F00
Requirements
- backward compatibility
- accept current TShortCut format
- new format can use only unused bits in current TShortCut format
- secondary, ternary shortcuts
- platform-specific shortcuts (E.g. Ctrl+C under Windows, Cmd + C under Mac OS X)
- shortcuts also with characters (E.g. Cmd + ?)
Conclusion
- create list of extra shortcut data under TApplication (TLCLShortCut)
- the TShortCut value would be "an index" to one item in this list, unused bits can distinguish different shortcuts with same key code (0 will be reserved for old version)
- modify shortcut handling in TApplication, TForm, TAction and TMenuItem
- add functions like ShortCutToText to TApplication
- modify TShortCut component editor
TLCLShortCut class
- index - TShortCut with modified unused bits
- priority list of TLCLShortCutItem
- key modifiers
- platform modifiers
- key or UTF-8 character