Lazarus: CMD-Taste im OnKeyDown unter Mac OS X
Frage von Gast | 24.03.2017 um 20:25
Für vieles, wofür man unter Windows die STRG-Taste benutzen würde, wird unter Mac OS X die CMD-Taste herangezogen.
In einem Lazarus Programm habe ich bisher im OnKeyDown-Ereignis etwas in der Form "if ((ssCtrl in Shift) and (Key = 65)) then ..." benutzt (siehe: mit STRG+A alles markieren).
Wie aber würde man das für Apple Mac OS X anpassen, damit es statt mit der STRG-Taste mit CMD läuft? Gibt es so etwas ähnliches wie ssCtrl für CMD? Die Konstante ssCMD scheint es leider nicht zu geben...
Ähnliche Themen
Delphi/Lazarus: Markierte Items aus ListBox mit ENTF-Taste löschen
Tipp | 0 Kommentare
jQuery: Tasten auf Tastatur Aktion zuweisen (Keyboard Event)
Tipp | 0 Kommentare
Delphi/Lazarus: Ist die ALT, SHIFT oder STRG-Taste gedrückt?
Tutorial | 0 Kommentare
MacOS: Abgestürzte Programme beenden
Tutorial | 0 Kommentare
Delphi: Systemweiter HotKey
Tutorial | 3 Kommentare
Die ersten Programme für Mac OS X
Blog | 0 Kommentare
Delphi/Lazarus: Mit ENTF-Taste markierte Einträge aus ListView löschen
Tipp | 0 Kommentare
Wichtiger Hinweis
Bitte beachten Sie: Die Beiträge auf askingbox.de sind Beiträge von Nutzern und sollen keine professionelle Beratung ersetzen. Sie werden nicht von Unabhängigen geprüft und spiegeln nicht zwingend die Meinung von askingbox.de wieder. Mehr erfahren.
Jetzt mitmachen
Stellen Sie Ihre eigene Frage oder schreiben Sie Ihren eigenen Artikel auf askingbox.de. So gehts.
Statt ssCtrl kannst du den ShiftState ssMeta unter Mac OS X benutzen. ssMeta steht für die CMD-Taste.
Dein Code würde dann zum Beispiel so aussehen:
Wenn du deinen Code sowohl unter Windows als auch unter Mac OS X (oder Linux) kompilieren und verwenden möchtest ohne ihn zu ändern, kannst du Compiler-Switches verwenden:
Unter Mac OS X wird der hinter "DARWIN" geschriebene Code kompiliert und damit die CMD-Taste, in allen anderen Fällen wird auf STRG geprüft.
Alternativ kannst du natürlich auch die gerade aktuelle Taste zwischenspeichern, dann kommst du mit nur einem Compiler-Switch aus.
Hier haben wir eine globale Variable AModKey definiert, die beim Erstellen unserer Form je nach Betriebssystem gesetzt wird. Später können wir in unseren Prozeduren nur noch auf AModKey prüfen und ersparen uns immer wieder eine Fallunterscheidung vorzunehmen.
25.03.2017 um 13:18