New LCL shortcut system
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; // scAltUnused 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+Cunder Windows,Cmd+Cunder Mac OS X) - shortcuts also with characters (E.g.
Cmd+?)
Conclusion
- create list of extra shortcut data under TApplication (TLCLShortCutList)
- 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
- check for character shortcuts in IntfUTF8KeyPress
- 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
From the Free Pascal wiki, page "New LCL shortcut system", as it stood on 2020-02-21 after a change by Trev, out of the wiki's dump of 2024-05-26. Copyright stays with the author who wrote it, according to the old wiki's Licensing page. If you have concerns about this material, message the admin.
Edited on wiki.freepascal.org by 5 people, 2008–2020
From the official wiki's backup of 26 May 2024: who edited this page there, and when. Edits made there after that date were not recorded, and the earlier versions are not shown here; the main page says why.
| When | Who | What changed |
|---|---|---|
| Tombo | New page: 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 := Shor... | |
| Tombo | Current state (minor) | |
| Tombo | ||
| Tombo | Requirements (minor) | |
| Tombo | Requirements | |
| Tombo | Conclusion | |
| Tombo | Conclusion (minor) | |
| Tombo | Conclusion | |
| Chronos | ||
| Chronos | ||
| Chronos | code highlighting | |
| Vincent | Text replace - "delphi>" to "syntaxhighlight>" (minor) | |
| Ggeldenhuys | Requirements: - applied wiki shortcut styling (minor) | |
| Trev | Fixed syntax highlighting (minor) |
Talk about this page
Nobody has opened a bench for this page yet. Sign in to open one.
