Treiber neo2-llkh jetzt auch für AdNW, AdNWzjßf und KOY

225 views
Skip to first unread message

MaxGyver

unread,
Sep 1, 2019, 2:36:36 AM9/1/19
to ADNW
Hallo zusammen!

Nachdem ich einen halben Tag unter Windows mit dem NeoVars-Treiber getippt habe und er immer wieder mit gesperrtem CapsLock hängen geblieben ist, hab ich hier in Gruppe erfahren, dass dieses Problem schon lange bekannt ist. Nach weiterer Recherche habe ich diesen Thread entdeckt, in dem dieser geniale Treiber als Alternative empfohlen wird (für Neo2):

https://github.com/david0/neo2-llkh

Der Treiber ist super stabil, klein und ressourcenschonend, da er ohne AutoHotkey auskommt (0,9 vs 8,1 MB im Arbeitsspeicher).

Allerdings hat er auch ein paar Nachteile:
- Keine Unterstützung von AdNW und KOY
- Nur die Ebenen 1-4 sind umgesetzt
- Viele Sonderzeichen fehlen: •–ℓ»«„“”¹›‹¢¥‚‘’—…ſ№·£¤
- Tote Tasten fehlen teilweise und manche sind nicht tot (z.B. `e)
- Kein "Einrasten" von Ebene 2 (CapsLock) oder 4

Deshalb habe ich ihn geforkt und um folgende Funktionen erweitert:
- Unterstützung von AdNW, AdNWzjßf, KOY (und KOU, meiner persönlichen Weiterentwicklung von KOY)
- Alle Sonderzeichen funktionieren jetzt
- Die meisten toten Tasten funktionieren
- Der rechte Ebene3-Modifier kann auf die ä-Taste gelegt werden.

Außerdem habe ich das README erweitert.

Meine erweiterte Version findet ihr hier:

https://github.com/MaxGyver83/neo2-llkh

Ich hoffe, dass es dem ein oder anderen hilft.

Grüße
Max

MaxGyver

unread,
Sep 1, 2019, 7:43:48 AM9/1/19
to ADNW
Hallo nochmal,

ich hab noch zwei Funktionen hinzugefügt:
  • Es gibt jetzt einen Shift Lock (CapsLock). Diese Funktion muss aber ausdrücklich aktiviert werden (weil ich sie noch nicht so ausführlich getestet habe). Dafür muss der Treiber mit einer 1 als drittem Parameter gestartet werden, zum Beispiel: neo-llkh.exe neo 0 0 1
  • Neu ist auch der "QWERTZ für Shortcuts"-Modus. Damit gilt immer das QWERTZ-Layout, wenn Strg, Alt (links) oder eine Windows-Taste gedrückt sind. Aktivierung über den vierten Parameter: neo-llkh.exe adnw 0 0 0 1
Die Parameter können auch einfach in die verwendete bat-Datei im bin-Ordner eingetragen werden.

In Zukunft soll es eine benutzerfreundliche ini-Datei für die Optionen geben.

Grüße
Max

urac

unread,
Sep 1, 2019, 8:31:09 AM9/1/19
to ad...@googlegroups.com
Super Arbeit!
Werde ich mir gleich mal ansehen.

Jurek

--
Sie erhalten diese Nachricht, weil Sie in Google Groups E-Mails von der Gruppe "ADNW" abonniert haben.
Wenn Sie sich von dieser Gruppe abmelden und keine E-Mails mehr von dieser Gruppe erhalten möchten, senden Sie eine E-Mail an adnw+uns...@googlegroups.com.
Wenn Sie diese Diskussion im Web verfolgen möchten, rufen Sie https://groups.google.com/d/msgid/adnw/f4011bc6-5b94-4b1f-8053-ada7a893484e%40googlegroups.com auf.

MaxGyver

unread,
Sep 5, 2019, 3:33:15 AM9/5/19
to ADNW
Dankeschön!

Inzwischen ist noch einiges dazugekommen:
  • Unterstützung der Ebenen 5 und 6! (Nicht alle Zeichen funktionieren.)
  • Die Einstellugen werden jetzt in einer settings.ini gesetzt (statt über Kommandozeilenparameter)
  • Die Option, die linke Alt- mit der linken Strg-Taste zu vertauschen. So kann man z.B. mit beiden Daumen auf Alt (=Strg) und AltGr + S/F ein Wort zurück/vor springen oder mit Q/T (=Bild Auf/Ab) Tabs wechseln.
Grüße
Max


Am Sonntag, 1. September 2019 14:31:09 UTC+2 schrieb urac:
Super Arbeit!
Werde ich mir gleich mal ansehen.

Jurek

Am So., 1. Sept. 2019 um 13:43 Uhr schrieb MaxGyver <maximilian...@gmail.com>:
Hallo nochmal,

ich hab noch zwei Funktionen hinzugefügt:
  • Es gibt jetzt einen Shift Lock (CapsLock). Diese Funktion muss aber ausdrücklich aktiviert werden (weil ich sie noch nicht so ausführlich getestet habe). Dafür muss der Treiber mit einer 1 als drittem Parameter gestartet werden, zum Beispiel: neo-llkh.exe neo 0 0 1
  • Neu ist auch der "QWERTZ für Shortcuts"-Modus. Damit gilt immer das QWERTZ-Layout, wenn Strg, Alt (links) oder eine Windows-Taste gedrückt sind. Aktivierung über den vierten Parameter: neo-llkh.exe adnw 0 0 0 1
Die Parameter können auch einfach in die verwendete bat-Datei im bin-Ordner eingetragen werden.

In Zukunft soll es eine benutzerfreundliche ini-Datei für die Optionen geben.

Grüße
Max

--
Sie erhalten diese Nachricht, weil Sie in Google Groups E-Mails von der Gruppe "ADNW" abonniert haben.
Wenn Sie sich von dieser Gruppe abmelden und keine E-Mails mehr von dieser Gruppe erhalten möchten, senden Sie eine E-Mail an ad...@googlegroups.com.

urac

unread,
Sep 5, 2019, 8:35:45 AM9/5/19
to ad...@googlegroups.com
Funktioniert bei mir soweit alles sehr gut. Sehr schön!
Einziger Nachtteil, den ich bisher sehe: Bei Neovars ist Shift+Shift wie in der Spezifikation vorgesehen ein echtes CapsLock, kein Shiftlock.
Hut ab. Werde das im täglichen Gebrauch weiter testen.

Wenn Sie sich von dieser Gruppe abmelden und keine E-Mails mehr von dieser Gruppe erhalten möchten, senden Sie eine E-Mail an adnw+uns...@googlegroups.com.
Wenn Sie diese Diskussion im Web verfolgen möchten, rufen Sie https://groups.google.com/d/msgid/adnw/48431c6d-1f05-4bf6-aabc-80eb8b2b9132%40googlegroups.com auf.

Andreas

unread,
Sep 5, 2019, 1:57:30 PM9/5/19
to ad...@googlegroups.com
Hallo Max,

> https://github.com/david0/neo2-llkh

Gut, dass du das ausgegraben hast. Auf der Neo-Mailingliste wurde diese
Lösung offenbar ignoriert. Sie scheint aber gerade an Popularität zu
gewinnen; hier ist eine weitere Umsetzung, der Beschreibung nach noch
nicht so weit gediehen wie deine:

https://github.com/Trundle/Neo2-LLHK

> Außerdem habe ich das README erweitert.

Das ist besonders löblich. Ich habe noch eine Frage, die dort
vielleicht beantwortet werden könnte: Wie wirkt sich die "gewöhnliche"
Tastaturbelegung aus? Ich könne mir vorstellen, dass das zumindest für
die toten Tasten (welche als tote Tasten funktionieren, welche als
"combining character" funktionieren, und welche nicht funktionieren)
eine gewisse Rolle spielt.

Andreas

Max Schillinger

unread,
Sep 10, 2019, 12:36:29 AM9/10/19
to ad...@googlegroups.com
Hallo Jurek, hallo Andreas!

@Jurek: Das echte CapsLock werde ich noch umsetzen. Das sollte kein großer Aufwand sein.

@Andreas: Guter Hinweis! Mein Basislayout war bisher immer deutsches QWERTZ. Mir ist noch nicht klar, wo die Zeichen kombiniert werden: Ob im Tastaturtreiber, ob Windows das macht oder jedes Programm extra. Ich könnte natürlich auch im Treiber die toten Tasten bis zum nächsten Anschlag zurückhalten und dann mit dem zweiten Anschlag direkt das kombinierte Zeichen ausgeben (also / + o = ø), sofern die Kombination sinnvoll ist. Aber es geht ja auch bei manchen Zeichen automatisch, obwohl sie nicht im QWERTZ-Layout enthalten sind, zum Beispiel beim Punkt über dem Buchstaben. Das spricht dafür, dass Windows sich darum kümmert.

Ich werde mich jedenfalls noch um beide Themen kümmern, allerdings frühestens Mitte nächster Woche, weil ich gerade auf Dienstreise bin.

Grüße aus dem Silicon Valley,
Max


--
Sie erhalten diese Nachricht, weil Sie in Google Groups ein Thema der Gruppe "ADNW" abonniert haben.
Wenn Sie sich von diesem Thema abmelden möchten, rufen Sie https://groups.google.com/d/topic/adnw/vvfuI5cmZrs/unsubscribe auf.
Wenn Sie sich von dieser Gruppe und allen Themen dieser Gruppe abmelden möchten, senden Sie eine E-Mail an adnw+uns...@googlegroups.com.
Besuchen Sie https://groups.google.com/d/msgid/adnw/87ftlalj7h.fsf%40509.ch, um diese Diskussion im Web anzuzeigen.

Annette Volz

unread,
Sep 15, 2019, 3:55:08 PM9/15/19
to ADNW
Hallo Entwickler von neo-llkh,
ich probiere es gerade aus, seit 8 Jahren schreibe ich mit KOY. Bis vorhin war ich nach 3 Stunden Test auch zufrieden. ABER: das Slash auf der dem Num-Pad geht nicht! Außerdem vermisse ich noch die Bildschirmtastatur, die ich benutze, wenn ich ein paar nicht normale Zeichen brauche.

Vielen Dank für die Entwicklung. Aber nun muss ich wieder zurück oder so.

Viele Grüße und Gottes Segen
Annette
Wenn Sie sich von dieser Gruppe und allen Themen dieser Gruppe abmelden möchten, senden Sie eine E-Mail an ad...@googlegroups.com.

Annette Volz

unread,
Sep 16, 2019, 10:03:45 AM9/16/19
to ADNW
Hallo zusammen,
ich bin halt am Testen. Das Euro-Zeichen (Shift+7) geht nur, wenn vorher das Dollar-Zeichen (Shift+6) gedrückt wurde. Und ich vermissen die Einhand-Bedienung über die Leertaste.
Viele Grüße
Annette

urac

unread,
Sep 16, 2019, 10:50:57 AM9/16/19
to ad...@googlegroups.com
Den €-Bug kann ich bestätigen. Geht nur wenn man Shift weiter hält nachdem man eine andere Shift-Kombi gedrückt hat (Es sind deutlich mehr als nur $).

--
Sie erhalten diese Nachricht, weil Sie in Google Groups E-Mails von der Gruppe "ADNW" abonniert haben.
Wenn Sie sich von dieser Gruppe abmelden und keine E-Mails mehr von dieser Gruppe erhalten möchten, senden Sie eine E-Mail an adnw+uns...@googlegroups.com.
Wenn Sie diese Diskussion im Web verfolgen möchten, rufen Sie https://groups.google.com/d/msgid/adnw/11212706-a6be-4277-bd0e-363e8a91322d%40googlegroups.com auf.

Max Schillinger

unread,
Sep 16, 2019, 5:12:32 PM9/16/19
to ad...@googlegroups.com
Hallo Annette, hallo Jurek,

danke für die Info! Ich schau mir das morgen Abend mal an!
Vermutlich muss ich nur den Quellcode von UTF-8 nach UTF-16 konvertieren. Dann funktionieren vielleicht auch die fehlenden toten Tasten.

Grüße
Max


Sie erhalten diese Nachricht, weil Sie in Google Groups ein Thema der Gruppe "ADNW" abonniert haben.
Wenn Sie sich von diesem Thema abmelden möchten, rufen Sie https://groups.google.com/d/topic/adnw/vvfuI5cmZrs/unsubscribe auf.
Wenn Sie sich von dieser Gruppe und allen Themen dieser Gruppe abmelden möchten, senden Sie eine E-Mail an adnw+uns...@googlegroups.com.
Wenn Sie diese Diskussion im Web verfolgen möchten, rufen Sie https://groups.google.com/d/msgid/adnw/CABGEsDPv2mGuy53uTXtvZfqo5oNcOvwo8bqvCZkvw3Gfey0QDQ%40mail.gmail.com auf.

Max Schillinger

unread,
Sep 17, 2019, 2:12:26 PM9/17/19
to ad...@googlegroups.com
Den Fehler mit dem NumPad-/ und den mit dem Euro habe ich behoben.

Komischerweise werden manche Zeichen der Ebene 6 im Notepad++ als Rechtecke angezeigt, und wenn ich z.B. ein 6. Zeichen eingebe, verwandeln sich die fünf Rechtecke davor in die korrekten Zeichen. Ist vielleicht auch nur ein Bug in Notepad++. Muss ich mal weiter untersuchen.

Max Schillinger

unread,
Sep 17, 2019, 4:07:02 PM9/17/19
to ad...@googlegroups.com
Hallo Jurek,

Einziger Nachtteil, den ich bisher sehe: Bei Neovars ist Shift+Shift wie in der Spezifikation vorgesehen ein echtes CapsLock, kein Shiftlock.

Echtes CapsLock wird jetzt auch unterstützt. (Wer will, kann aber auch weiterhin den Level2-Lock verwenden.)

Grüße
Max

urac

unread,
Sep 17, 2019, 7:04:12 PM9/17/19
to ad...@googlegroups.com
Stark!

Klaus Weber

unread,
Jun 5, 2020, 9:16:16 AM6/5/20
to ad...@googlegroups.com

Hallo Max,

 

ich habe mir den Treiber llkh auch mal angesehen, um zu prüfen, wie er sich auf einem US-ANSI 60% Tastenlayout anpassen lässt (Dierya DK63 Tastatur).

 

 

Hab die Enter-Taste und die Tab-Taste als Modifier requiriert und schicke aber weiter Enter und Tab (falls losgelassen ohne andere Taste).

 

Bitte prüfe, ob Du das in Deinen Quellcode auf Github übernehmen magst.

 

Was mir aufgefallen ist:

  • Bei der Ziffer 4-Taste scheint mit MOD4 ein Zeichen zu viel gesendet zu werden:
  • Bei der Taste A scheint der Backslash nicht zu funktionieren.

 

Ansonsten sehr fein und klein!

 

Falls jemand dran rumbasteln mag:

  1. Man installiere: https://netcologne.dl.sourceforge.net/project/mingw-w64/Toolchains%20targetting%20Win32/Personal%20Builds/mingw-builds/installer/mingw-w64-install.exe
  2. Erweitere den Path um: C:\Program Files\mingw-w64\i686-8.1.0-posix-dwarf-rt_v6-rev0\mingw32\bin
  3. Dann kann gebaut werden indem man
    1. cd …\neo2-llkh-master\src
    2. mingw32-make 

 

LLKH scheint nur zu funktionieren, wenn man deutsches Layout eingestellt hat. Evtl. kann diese Vorgehensweise helfen, um dies robuster zu machen: http://www.markodevcic.com/post/.NET_Keyboard_Hook

 

Funktioniert eigentlich Compose? AltGr wäre nun frei dafür :-)

 

Bis denn -  Klaus.

image001.jpg
main.c

MaxGyver

unread,
Jun 6, 2020, 3:20:55 PM6/6/20
to ADNW
Hallo Klaus,

danke fürs Teilen deiner Erweiterungen!

Am Freitag, 5. Juni 2020 15:16:16 UTC+2 schrieb ksweber:

Hab die Enter-Taste und die Tab-Taste als Modifier requiriert und schicke aber weiter Enter und Tab (falls losgelassen ohne andere Taste).

Bitte prüfe, ob Du das in Deinen Quellcode auf Github übernehmen magst.

 
Ich all deine Kommentare übernommen und einen Teil der neuen Funktionen! Bisher nur für die Enter-Taste: Sowohl die Verwendung als Mod3R, als auch das Senden von Enter beim alleinigen Antippen. Letzteres kann auch ohne ersteres aktiviert werden, das heißt, die #-Taste sendet dann Enter, wenn sie alleine angetippt wird.

Den Rest mach ich wahrscheinlich morgen.

Als ich deinen Code angesehen habe, ist mir erst aufgefallen, was für Probleme man bekommt, wenn man für die Modifier auf die Virtual Key Codes schaut: Die #-Taste ist VK_OEM_2, was aber auf einer US-Tastatur der Schrägstrich-Taste (= Bindestrich-Taste auf der deutschen Tastatur). Diese soll natürlich auf gar keinen Fall zu einer Mod3R-Taste werden. Deshalb schau ich jetzt für alle Mod3/4-Tasten auf die Scancodes.
 

Was mir aufgefallen ist:

  • Bei der Ziffer 4-Taste scheint mit MOD4 ein Zeichen zu viel gesendet zu werden:
Die Taste hab ich in meinem Layout durch ✘ ersetzt. Deshalb hatte ich das Problem noch nie. Aber wenn ich Neo einstelle, scheint es nicht gut zu funktionieren: Wenn ich in Notepad++ am Zeilenanfang einfüge, erhalte ich ein Platzhalter-Rechteck. Innerhalb einer Zeile funktioniert es aber. Laut vim ist es im Quellcode das Zeichen 0x22EE, was prinzipiell zu passen scheint: https://www.compart.com/de/unicode/U+22EE. Vielleicht hängt es mit der Kodierung der main.c zusammen?



  • Bei der Taste A scheint der Backslash nicht zu funktionieren.
Komisch, Backslash geht bei mir. In meinem Layout, aber auch wenn ich Neo auswähle. Du könntest den Treiber mal über die Git Bash starten, dann erhältst du Debugging-Informationen. (Achja, du hast da noch eine Funktion für eine separate Shell hinzugefügt. Die macht vielleicht das Gleiche. Hab ich noch gar nicht getetestet.)


LLKH scheint nur zu funktionieren, wenn man deutsches Layout eingestellt hat. Evtl. kann diese Vorgehensweise helfen, um dies robuster zu machen: http://www.markodevcic.com/post/.NET_Keyboard_Hook

 
Danke für den Hinweis, schau ich mir an!

 

Funktioniert eigentlich Compose? AltGr wäre nun frei dafür :-)

 
Gute Frage, hab ich nie ausprobiert. (Nicht mal unter Linux, was ich hauptsächlich nutze.)
 
Grüße
Max

MaxGyver

unread,
Jun 9, 2020, 1:24:49 PM6/9/20
to ADNW
Hallo nochmal,

ich kam gar nicht mehr dazu, nochmal zu schreiben.

Am Samstag, 6. Juni 2020 21:20:55 UTC+2 schrieb MaxGyver:
Hallo Klaus,

danke fürs Teilen deiner Erweiterungen!

Am Freitag, 5. Juni 2020 15:16:16 UTC+2 schrieb ksweber:

Hab die Enter-Taste und die Tab-Taste als Modifier requiriert und schicke aber weiter Enter und Tab (falls losgelassen ohne andere Taste).

Bitte prüfe, ob Du das in Deinen Quellcode auf Github übernehmen magst.

 
Ich all deine Kommentare übernommen und einen Teil der neuen Funktionen! Bisher nur für die Enter-Taste: Sowohl die Verwendung als Mod3R, als auch das Senden von Enter beim alleinigen Antippen. Letzteres kann auch ohne ersteres aktiviert werden, das heißt, die #-Taste sendet dann Enter, wenn sie alleine angetippt wird.

Den Rest mach ich wahrscheinlich morgen.

Jetzt gibt es folgende neue Optionen:
  • returnKeyAsMod3R
  • tabKeyAsMod4L
  • mod3RAsReturn
  • mod4LAsTab
 
Als ich deinen Code angesehen habe, ist mir erst aufgefallen, was für Probleme man bekommt, wenn man für die Modifier auf die Virtual Key Codes schaut: Die #-Taste ist VK_OEM_2, was aber auf einer US-Tastatur der Schrägstrich-Taste (= Bindestrich-Taste auf der deutschen Tastatur). Diese soll natürlich auf gar keinen Fall zu einer Mod3R-Taste werden. Deshalb schau ich jetzt für alle Mod3/4-Tasten auf die Scancodes.

Scancodes sind auch nicht das Wahre! Alt und AltGr haben beide den gleichen Scancode. Für AltGr schaue ich jetzt doch wieder auf den Virtual Key Code.

 
  • Bei der Taste A scheint der Backslash nicht zu funktionieren.
Komisch, Backslash geht bei mir. In meinem Layout, aber auch wenn ich Neo auswähle. Du könntest den Treiber mal über die Git Bash starten, dann erhältst du Debugging-Informationen. (Achja, du hast da noch eine Funktion für eine separate Shell hinzugefügt. Die macht vielleicht das Gleiche. Hab ich noch gar nicht getetestet.)

Deine Funktion für die separate Debugging-Konsole ist echt cool! Ich hab sie übernommen. Sie kann mit

debugWindow=1

aktiviert werden (wie immer entweder in der settings.ini oder als Kommandozeilenparameter).

Grüße
Max

qwertfisch

unread,
Jun 9, 2020, 5:36:23 PM6/9/20
to ADNW
Hallo Max,

vielen Dank erstmal für diesen alternativen Treiber für AdNW, Neo & Co. Du hast die vorhandene Basis stark erweitert, verschiedene Layouts eingebaut und Spezialfälle konfigurierbar gemacht.

Leider zeigt sich bisher an vielen Stellen, dass es mit simplen Buchstabenersetzungen nicht getan ist. Das Abfangen und Ersetzen von Tastendrücken ist unter Windows ein Sammelsurium an Kompatiblitätsschichten, an Spezialbehandlung bestimmter Tasten und Berücksichtigung in welchem Modus ein Programm läuft. Nicht ohne Grund ist AutoHotkey ein ziemlich umfangreiches und detailreiches Tool.

Faktisch versuchst Du, die Funktionalität des Autohotkey-Treibers nachzubauen – nur eben auf direktem Wege unter Nutzung der WIndows-eigenen Lowlevel-Funktionen. Ich vermute, dass sich dieser Weg lohnen kann, da eben eine Schicht ausgelassen wird. Bei NeoVars ist zum Einen des (umfangreiche) Skript, welches das Layout, die sechs Layer und die ganzen Composes berücksichtigt. Dieses wird wiederum an die generischen Funktionen von AutoHotkey durchgeleitet. Gelegentlich kommt es nunmal vor, dass sich das Skript „verheddert“, weil Eingaben zu schnell erfolgen. Als ich das früher im Einsatz hatte, aktivierte sich öfter mal der Capslock ohne mein (bewusstes) Zutun. (Ich glaube, das ist in den letzten Jahren behoben worden – dazu müsste ich das aber längere Zeit testen.) Es könnte aber auch am USB-Hub und am zu langsamen Rechner gelegen haben.

Der Weg scheint einfach: man nimmt die High-Level-Funktionalität von NeoVars, braucht sich nicht um die manchmal umständliche Programmierung von AutoHotkey kümmern und verwenden „einfach“ die Windows-eigenen Lowlevel-Funktionen. Leider klappt das nicht wie gedacht. Wie schon gesagt, es gibt sehr viele Spezialfälle. Ich habe selbst Ende 2012 eine ähnliche Idee gehabt, nur wollte ich das Keyboard zum einen komplett konfigurierbar gestalten (ähnlich wie xkb-Definitionen in Linux), zum anderen habe ich das in C# gebaut – lediglich die einzelnen Systemfunktionsaufrufe waren lowlevel gekapselt. Bei den vielen Problemen habe ich irgendwann nicht mehr nur in Microsoft-Dokumentationen gewühlt, sondern mir tatsächlich angeschaut, wie AutoHotkey das macht. Die Stellen sind leicht zu finden. Da zeigte sich, dass ich noch ziemlich viel Aufwand reinstecken müsste und gewissermaßen AHK nachbauen – und den einzigen Vorteil, den ich damals sah wäre, dass ich es besser konfigurieren könnte als ein AHK-Skript. Als ich dann noch bemerkte, dass DirectX-Anwendungen wiederum anders behandelt werden als GDI-Anwendungen, hab ich es wieder sein lassen.

Was ich damit sagen möchte: wenn Du diesen Weg weiterverfolgst, spare dir eventuelles Try&Error, sondern schau bei AutoHotkey rein: https://github.com/Lexikos/AutoHotkey_L – Es behandelt alles, was es an Problemen gibt und hat eine extensive Quellcode-Dokumentation. Das sollte hier ziemlich nützlich sein, bevor man sich ständig fragt, warum dies und jenes schon wieder nicht geht.

Zu DirectX übrigens, das habe ich eben mit ein paar Spielen ausgetestet. neo-llkh scheint sich da zu verhakeln, selbst bei normalen Buchstaben. Eventuell läufst Du in die gleichen Probleme rein wie ich damals. AutoHotkey scheint das gelöst zu haben. (Ich kann mich allerdings nicht mehr erinnern, was genau schieflief. Ist einfach zu lange her. Dazu müsste ich den Code entstauben und wieder verstehen.)


qwertfisch


Am Sonntag, 1. September 2019 08:36:36 UTC+2 schrieb MaxGyver:

MaxGyver

unread,
Jun 10, 2020, 3:44:45 PM6/10/20
to ADNW
Hallo qwertfisch,


Am Dienstag, 9. Juni 2020 23:36:23 UTC+2 schrieb qwertfisch:
Faktisch versuchst Du, die Funktionalität des Autohotkey-Treibers nachzubauen – nur eben auf direktem Wege unter Nutzung der WIndows-eigenen Lowlevel-Funktionen. Ich vermute, dass sich dieser Weg lohnen kann, da eben eine Schicht ausgelassen wird. Bei NeoVars ist zum Einen des (umfangreiche) Skript, welches das Layout, die sechs Layer und die ganzen Composes berücksichtigt. Dieses wird wiederum an die generischen Funktionen von AutoHotkey durchgeleitet. Gelegentlich kommt es nunmal vor, dass sich das Skript „verheddert“, weil Eingaben zu schnell erfolgen. Als ich das früher im Einsatz hatte, aktivierte sich öfter mal der Capslock ohne mein (bewusstes) Zutun. (Ich glaube, das ist in den letzten Jahren behoben worden – dazu müsste ich das aber längere Zeit testen.) Es könnte aber auch am USB-Hub und am zu langsamen Rechner gelegen haben.

Ich bin ja nur auf den neo-llkh-Treiber gekommen, weil der NeoVars-Treiber total instabil war (vor 9-10 Monaten). neo-llkh lief zuverlässig und ließ sich relativ leicht erweitern. Aber wenn du sagst, dass du keine Probleme mehr hast, teste ich NeoVars nochmal.

 
Der Weg scheint einfach: man nimmt die High-Level-Funktionalität von NeoVars, braucht sich nicht um die manchmal umständliche Programmierung von AutoHotkey kümmern und verwenden „einfach“ die Windows-eigenen Lowlevel-Funktionen. Leider klappt das nicht wie gedacht. Wie schon gesagt, es gibt sehr viele Spezialfälle. Ich habe selbst Ende 2012 eine ähnliche Idee gehabt, nur wollte ich das Keyboard zum einen komplett konfigurierbar gestalten (ähnlich wie xkb-Definitionen in Linux), zum anderen habe ich das in C# gebaut – lediglich die einzelnen Systemfunktionsaufrufe waren lowlevel gekapselt. Bei den vielen Problemen habe ich irgendwann nicht mehr nur in Microsoft-Dokumentationen gewühlt, sondern mir tatsächlich angeschaut, wie AutoHotkey das macht. Die Stellen sind leicht zu finden. Da zeigte sich, dass ich noch ziemlich viel Aufwand reinstecken müsste und gewissermaßen AHK nachbauen – und den einzigen Vorteil, den ich damals sah wäre, dass ich es besser konfigurieren könnte als ein AHK-Skript. Als ich dann noch bemerkte, dass DirectX-Anwendungen wiederum anders behandelt werden als GDI-Anwendungen, hab ich es wieder sein lassen.

Es stimmt, dass neo-llkh nicht perfekt ist, aber ich selbst brauche weder seltene diakritische Zeichen, noch einen separaten Nummernblock mit 6 Ebenen, eigentlich brauch ich nicht einmal die Ebenen 5 und 6. Wichtig ist mir nur, dass ich mein Layout mit Anpassungen in den Ebenen 1-4 benutzen kann und dass ich Mod3R auf die Ä-Taste legen kann. Und dass ich Strg, Alt und die Windows-Taste vertauschen kann. Das ist alles sicher auch in NeoVars möglich. Ich kenne mich nur nicht mit AHK aus und wollte mich auch nicht einarbeiten.
 

Was ich damit sagen möchte: wenn Du diesen Weg weiterverfolgst, spare dir eventuelles Try&Error, sondern schau bei AutoHotkey rein: https://github.com/Lexikos/AutoHotkey_L – Es behandelt alles, was es an Problemen gibt und hat eine extensive Quellcode-Dokumentation. Das sollte hier ziemlich nützlich sein, bevor man sich ständig fragt, warum dies und jenes schon wieder nicht geht.

Danke für den Tipp!
 

Zu DirectX übrigens, das habe ich eben mit ein paar Spielen ausgetestet. neo-llkh scheint sich da zu verhakeln, selbst bei normalen Buchstaben. Eventuell läufst Du in die gleichen Probleme rein wie ich damals. AutoHotkey scheint das gelöst zu haben. (Ich kann mich allerdings nicht mehr erinnern, was genau schieflief. Ist einfach zu lange her. Dazu müsste ich den Code entstauben und wieder verstehen.)

Das ist ja doof. Kann man das irgendwie reproduzieren?

Grüße
Max

Max Schillinger

unread,
Jun 16, 2020, 6:09:14 AM6/16/20
to ad...@googlegroups.com
Am Mi., 10. Juni 2020 um 21:44 Uhr schrieb MaxGyver <maximilian....@gmail.com>:
Am Dienstag, 9. Juni 2020 23:36:23 UTC+2 schrieb qwertfisch:
... Gelegentlich kommt es nunmal vor, dass sich das Skript „verheddert“, weil Eingaben zu schnell erfolgen. Als ich das früher im Einsatz hatte, aktivierte sich öfter mal der Capslock ohne mein (bewusstes) Zutun. (Ich glaube, das ist in den letzten Jahren behoben worden – dazu müsste ich das aber längere Zeit testen.) Es könnte aber auch am USB-Hub und am zu langsamen Rechner gelegen haben.

Ich bin ja nur auf den neo-llkh-Treiber gekommen, weil der NeoVars-Treiber total instabil war (vor 9-10 Monaten). neo-llkh lief zuverlässig und ließ sich relativ leicht erweitern. Aber wenn du sagst, dass du keine Probleme mehr hast, teste ich NeoVars nochmal.
 
Ich hab den NeoVars-Treiber nochmal getestet und soweit läuft er ohne Probleme. Was meine Anforderungen betrifft:
  • QWERTZ für Shortcuts: Gibt es in NeoVars nicht, aber zum Glück verwende ich diese Funktion nicht mehr (da ich inzwischen X, C, V und Z auf der linken Hand habe).
  • Mod3R auf der Ä-Taste: Dafür habe ich einen Pull Request geöffnet: https://git.neo-layout.org/neo/neo-layout/pulls/544
  • Anpassungen der Ebenen 3 und 4: Habe ich direkt im Quellcode vorgenommen. Es wäre gut, wenn man sowas über die ini-Datei einstellen könnte (analog zum customLayout für die Ebenen 1, 2, 5, 6).
  • Vertauschen von Strg, Alt und der Windows-Taste: Das habe ich jetzt mit dem Tool SharpKeys gelöst, welches die Vertauschung in die Windows-Registry einträgt. Das hat aber den Nachteil, dass die Vertauschung auch gilt, wenn ich QWERTZ benutze (falls ich mal jemand anderen an meinen Rechner lasse), und außerdem benötigt man dafür Administrator-Rechte (was bei der Arbeit ein Problem ist). Das ist mit neo-llkh definitiv unkomplizierter. Vielleicht bekommen wir diese Funktion ja auch noch eines Tages in NeoVars rein.
Grüße
Max

qwertfisch

unread,
Jun 16, 2020, 1:24:20 PM6/16/20
to ADNW
Hallo,
habe diese Antwort nicht per Mailingliste erhalten (erst die nachfolgende Nachricht), daher meine späte Antwort.

Ich bin ja nur auf den neo-llkh-Treiber gekommen, weil der NeoVars-Treiber total instabil war (vor 9-10 Monaten). neo-llkh lief zuverlässig und ließ sich relativ leicht erweitern. Aber wenn du sagst, dass du keine Probleme mehr hast, teste ich NeoVars nochmal.
 
Ich nutze seit Jahren kbdneo, weil mir die Capslock-Problematik zu sehr auf die Nerven ging. Dafür hat dieser Treiber wieder andere Nachteile. Es ist Abwägungssache. Der aktuelle NeoVars hat ein paar Patches anderer Nutzer drin, ansonsten habe ich den nur jeweils kurz getestet, nicht im langen Einsatz.
 
Es stimmt, dass neo-llkh nicht perfekt ist, aber ich selbst brauche weder seltene diakritische Zeichen, noch einen separaten Nummernblock mit 6 Ebenen, eigentlich brauch ich nicht einmal die Ebenen 5 und 6. Wichtig ist mir nur, dass ich mein Layout mit Anpassungen in den Ebenen 1-4 benutzen kann und dass ich Mod3R auf die Ä-Taste legen kann. Und dass ich Strg, Alt und die Windows-Taste vertauschen kann. Das ist alles sicher auch in NeoVars möglich. Ich kenne mich nur nicht mit AHK aus und wollte mich auch nicht einarbeiten.

Auch hier eine Abwägungssache, ob man sich lieber in AHK und die Struktur von NeoVars einarbeitet, oder ob man sich in C++ oder C# auskennt und lieber seine eigene Variante baut. Letzteres hat die erwähnten Fallstricke, aber deren Lösungen sind in AutoHotkey gut dokumentiert.
  
Zu DirectX übrigens, das habe ich eben mit ein paar Spielen ausgetestet. neo-llkh scheint sich da zu verhakeln, selbst bei normalen Buchstaben. Eventuell läufst Du in die gleichen Probleme rein wie ich damals. AutoHotkey scheint das gelöst zu haben. (Ich kann mich allerdings nicht mehr erinnern, was genau schieflief. Ist einfach zu lange her. Dazu müsste ich den Code entstauben und wieder verstehen.)

Das ist ja doof. Kann man das irgendwie reproduzieren?

Es kommt auf das Spiel an – dort aber jeweils reproduzierbar. Habe ein paar gestartet und in den jeweiligen Tasteneinstellungen herumgespielt, weil man da gleich sieht, welche Taste das Spiel erkannt hat.

Konkretes Beispiel bei „Flatout 2 Ultimate Carnage“: Ich wähle eine Spielfunktion mit Enter aus und kann dann eine Taste dafür definieren. Mit kbdneo oder NeoVars keine Probleme. Mit neo2llkh werden im Auswahlmodus sehr viele Buchstabentasten nicht erkannt, andere aber schon. Das hängt aber wiederum davon ob, welche Tasten ich davor gedrückt habe. Kurz gesagt: durcheinander. Ich mag da ungerne Bugreports schreiben – probiere einfach selbst mit verschiedenen DirectX-Anwendungen.

qwertfisch

unread,
Jun 16, 2020, 1:29:47 PM6/16/20
to ADNW
Optionen oder umfangreiche Änderungen an NeoVars (z.B. freie Definition von Layouts) kann man gerne besprechen, aber nicht auf der AdNW-Mailingliste. Entweder als Issues/Vorschläge im Neo-Bugtracker, oder im IRC oder auf der Mailingliste.

– Zu Anpassungen der Ebene 3 und 4: da würde ich gleich das Einlesen von generischen Layouts als Ziel sehen, am Besten in einem bereits vorhandenen Format. Dies wäre eine sehr umfangreiche Änderung am Treiber.

– Vertauschen von Strg/Win/Alt: denke schon, dass das geht. Kenne mich mit AHK aber leider nicht gut aus.

– Deine Pull Requests habe ich eingepflegt.

qwertfisch
Reply all
Reply to author
Forward
0 new messages