Changes between Version 3 and Version 4 of Treiber-Know-How/NeoVars
- Timestamp:
- 23/02/09 17:24:06 (17 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
Treiber-Know-How/NeoVars
v3 v4 2 2 3 3 = NeoVars für Entwickler = 4 4 == Geschichte == 5 5 NeoVars ist die nunmehr zweite Implementierung des NEO-Tastaturlayouts in der Programmiersprache AutoHotKey (auch AHK), www.autohotkey.com. Statt mit langen if-then-else-Bäumen auf getrennten Key-Hooks arbeitet neo-vars mit einem globalen, für (fast) alle Tasten durchlaufenen Key-Hook (keyhooks.ahk), der nicht nur für key-press sondern auch für key-release (up) verwendet wird. 6 6 7 == Key-Hook == 7 8 Der Key-Hook durchläuft die Funktion AllStar (varsfunctions.ahk), in der der Name der gedrückten Taste (PhysKey, dann ActKey) um die aktuelle Ebenennummer erweitert wird und das Ergebnis als Variable abgefragt wird. Diese Variable (gespeichert in char) sagt nun, was sich hinter dem Tastendruck für ein Zeichen (z. B. „U0041“ für ein großes A) oder auch Sonderzeichen (z. B. „SComp“ für Compose), oder auch Unterprogrammaufruf (z. B. „P_EHt“ für das Umschalten des Einhand-Modus) verbirgt. Dieser „Lookup“, den man in „besseren“ Programmiersprachen mit assoziativen Hash-Arrays implementiert, wird in AHK über dynamische Variablenabfragen gemacht, wobei diese Variablen vorher definiert wurden. 8 9 10 == Variablen == 9 11 Variablen werden aber nicht nur für die Zuweisung Ebene+Taste=Zeichen (keydefinitions.ahk) verwendet, sondern auch für Shortcuts (shortcuts.ahk), die später dazu dienen, aus abstrakten Zeichen wieder von Programmen verwendbare Tastendrücke zu machen: Aus „SHome“ wird beispielsweise über »send« wieder „{Home down}“ für den Tastendruck und „{Home up}“ für das Loslassen. Auch für Buchstaben und Sonderzeichen wird diese Methode verwendet, um größtmögliche Kompatibilität mit normalen Programmen zu gewährleisten. Alles, wofür es keine Shortcuts gibt, wird als Unicode-Zeichen an die 10 12 Applikation geschickt. Ein paar wenige Zeichen können nicht oder nur schwer durch getrennte Down-Up-Sequenzen umgesetzt werden; an diesen Stellen wird auf den getrennten Key-Release verzichtet und das Zeichen bzw. eine dafür notwendige Zeichenfolge über das gute alte »send« geschickt. … … 21 23 Eine weitere Stelle für Hooks ist die Ausgabefunktion, die derzeit für das Decodieren von Unicode-Zeichen verwendet wird: ♫dd und dann ein Zeichen eingeben, das auch über ein Compositum entstanden sein kann, und ein kleiner ToolTip gibt den entsprechenden Unicode-Codepoint aus (tools.ahk). 22 24 25 == Bildschirmtastatur == 23 26 Die Bildschirmtastatur (M3+F1) reagiert nunmehr dynamisch auf die verschiedenen aktivierten Ebenen, d. h. mit dem Drücken eines Modifiers wird automatisch die entsprechende Ebene angezeigt, ohne dass man diese manuell wählen müsste. Im CapsLock-Modus funktioniert das noch nicht richtig, da sich dort Buchstaben und Sonderzeichen unterschiedlich verhalten und wir dafür noch zwei zusätzliche PNG-Dateien brauchen. Abgesehen davon gibt es Überlegungen, die Bildschirmtastatur komplett dynamisch zu machen, das heißt, dass man auch die zu erwartenden Compose-Sequenzen sehen kann. Wenn man also das tote Hochkomma ́ tippt, würde die Bildschirmtastatur für die solcherart unterstützten Tasten die Buchstaben mit Apostroph darstellen. Ob das aber so einfach geht, ist nicht ganz klar: Erstens muss die Ausgabe ausreichend gut ausschauen, zweitens muss die Existenz eines dafür ausgelegten Unicode-Fonts sichergestellt sein, und schließlich muss man die entsprechenden Windows-Funktionen umständlich über DLL-Calls aufrufen, um die AHK-Beschränkung auf die System-Codepage zu überwinden. Ob diese Funktion dann auch die benötigte Performance hat, müsste sich erst erweisen. 24 27 … … 29 32 Last, but not least gehört für die vielen Konfigurationsoptionen ein entsprechender Dialog her. Der Kapselung wegen könnten die einzelnen Module hier separate Dialogboxen oder Tabs erhalten. 30 33 34 == Tray-Tipps == 31 35 Übrigens stellt neo-vars seine Informationen (z. B. über die Aktivierung des Mod4-Lock) über Tray-Tips dar, die mitunter im Explorer oder über die Registry aktiviert werden müssen. Diese Einstellung zu ändern, wäre auch ein heißer Kandidat für die Config-Dialoge. 32 36
