Neo2 layer 3 fixes für macOS #644

Open
andre wants to merge 1 commits from andre/neo-layout:neo2-layer3-fixes into master
First-time contributor

Mit diesen Änderungen ist es möglich, Shortcuts mit Sonderzeichen verwenden zu können
(bspw. +/, +[ /+] etc.), ohne dass diese als Shortcuts mit interpretiert werden. Die Prevent problematic keys Regeln sind dadurch nicht mehr notwendig.

Erreicht wurde das, indem Layer 1 und Layer 2 in ein Englisch (International) Layout verändert wurden.
Damit die Neo2 Layouts (Neo2, Bone, NeoQWERTZ und ADNW) weiterhin funktionieren, sind neue Karabiner-Regeln notwendig.

Ich habe das ADNW-Layout auch modifiziert, konnte aber keinen Link zu einem Repository auf der ADNW-Seite finden. Deshalb habe ich das Layout dem PR hinzugefügt.

Link zum Karabiner Pull Request: https://github.com/pqrs-org/KE-complex_modifications/pull/1538

Mit diesen Änderungen ist es möglich, Shortcuts mit Sonderzeichen verwenden zu können (bspw. `⌘`+`/`, `⌘`+`[` /`⌘`+`]` etc.), ohne dass diese als Shortcuts mit `⌥` interpretiert werden. Die `Prevent problematic keys` Regeln sind dadurch nicht mehr notwendig. Erreicht wurde das, indem Layer 1 und Layer 2 in ein Englisch (International) Layout verändert wurden. Damit die Neo2 Layouts (Neo2, Bone, NeoQWERTZ und ADNW) weiterhin funktionieren, sind neue Karabiner-Regeln notwendig. Ich habe das ADNW-Layout auch modifiziert, konnte aber keinen Link zu einem Repository auf der ADNW-Seite finden. Deshalb habe ich das Layout dem PR hinzugefügt. Link zum Karabiner Pull Request: https://github.com/pqrs-org/KE-complex_modifications/pull/1538
andre added 1 commit 2023-11-10 16:08:58 +01:00
andre changed title from WIP: Neo2 layer 3 fixes für macOS to Neo2 layer 3 fixes für macOS 2023-11-10 16:13:14 +01:00
andre changed title from Neo2 layer 3 fixes für macOS to WIP: Neo2 layer 3 fixes für macOS 2023-11-10 17:32:29 +01:00
andre force-pushed neo2-layer3-fixes from 1254017aaf to 6f7336fd33 2023-11-12 15:12:28 +01:00 Compare
andre force-pushed neo2-layer3-fixes from 6f7336fd33 to a28c196331 2023-11-12 16:33:10 +01:00 Compare
andre changed title from WIP: Neo2 layer 3 fixes für macOS to Neo2 layer 3 fixes für macOS 2023-11-12 16:42:04 +01:00
Mike1 was assigned by hrnz 2023-11-12 22:25:09 +01:00
Member

Sieht eigentlich gut aus, in Terminal, Firefox, Safari, Slack (Electron), Apple Keynote, MS Powerpoint usw. verhält es sich zumindest für Texteingabe richtig (Shortcuts hab ich jetzt nicht groß getestet).

Mein einziges Problem ist in Exceed Turbo X (Remote Desktop Lösung). Da kommt das Bone’sche ö, ü, ä so an:

KeyPress event, serial 37, synthetic NO, window 0x400001,
    root 0x2c5, subw 0x0, time 337696, (112,105), root:(1943,1069),
    state 0x0, keycode 30 (keysym 0x68, h), same_screen YES,
    XLookupString gives 1 bytes: (68) "h"
    XmbLookupString gives 1 bytes: (68) "h"
    XFilterEvent returns: False

KeyRelease event, serial 37, synthetic NO, window 0x400001,
    root 0x2c5, subw 0x0, time 337814, (112,105), root:(1943,1069),
    state 0x0, keycode 30 (keysym 0x68, h), same_screen YES,
    XLookupString gives 1 bytes: (68) "h"
    XFilterEvent returns: False

KeyPress event, serial 37, synthetic NO, window 0x400001,
    root 0x2c5, subw 0x0, time 338310, (112,105), root:(1943,1069),
    state 0x0, keycode 29 (keysym 0x70, p), same_screen YES,
    XLookupString gives 1 bytes: (70) "p"
    XmbLookupString gives 1 bytes: (70) "p"
    XFilterEvent returns: False

KeyRelease event, serial 37, synthetic NO, window 0x400001,
    root 0x2c5, subw 0x0, time 338427, (112,105), root:(1943,1069),
    state 0x0, keycode 29 (keysym 0x70, p), same_screen YES,
    XLookupString gives 1 bytes: (70) "p"
    XFilterEvent returns: False

KeyPress event, serial 37, synthetic NO, window 0x400001,
    root 0x2c5, subw 0x0, time 338764, (112,105), root:(1943,1069),
    state 0x0, keycode 28 (keysym 0x78, x), same_screen YES,
    XLookupString gives 1 bytes: (78) "x"
    XmbLookupString gives 1 bytes: (78) "x"
    XFilterEvent returns: False

KeyRelease event, serial 37, synthetic NO, window 0x400001,
    root 0x2c5, subw 0x0, time 338870, (112,105), root:(1943,1069),
    state 0x0, keycode 28 (keysym 0x78, x), same_screen YES,
    XLookupString gives 1 bytes: (78) "x"
    XFilterEvent returns: False

Ebene 3 funktioniert dafür richtig, da kommt z.B. ein () so an:

KeyPress event, serial 37, synthetic NO, window 0x400001,
    root 0x2c5, subw 0x0, time 390476, (-1364,522), root:(467,1486),
    state 0x0, keycode 50 (keysym 0xffe1, Shift_L), same_screen YES,
    XLookupString gives 0 bytes: 
    XmbLookupString gives 0 bytes: 
    XFilterEvent returns: False

KeyPress event, serial 37, synthetic NO, window 0x400001,
    root 0x2c5, subw 0x0, time 390480, (-1364,522), root:(467,1486),
    state 0x1, keycode 18 (keysym 0x28, parenleft), same_screen YES,
    XLookupString gives 1 bytes: (28) "("
    XmbLookupString gives 1 bytes: (28) "("
    XFilterEvent returns: False

KeyRelease event, serial 37, synthetic NO, window 0x400001,
    root 0x2c5, subw 0x0, time 390594, (-1364,522), root:(467,1486),
    state 0x1, keycode 18 (keysym 0x28, parenleft), same_screen YES,
    XLookupString gives 1 bytes: (28) "("
    XFilterEvent returns: False

KeyPress event, serial 37, synthetic NO, window 0x400001,
    root 0x2c5, subw 0x0, time 392661, (-1364,522), root:(467,1486),
    state 0x1, keycode 19 (keysym 0x29, parenright), same_screen YES,
    XLookupString gives 1 bytes: (29) ")"
    XmbLookupString gives 1 bytes: (29) ")"
    XFilterEvent returns: False

KeyRelease event, serial 37, synthetic NO, window 0x400001,
    root 0x2c5, subw 0x0, time 392773, (-1364,522), root:(467,1486),
    state 0x1, keycode 19 (keysym 0x29, parenright), same_screen YES,
    XLookupString gives 1 bytes: (29) ")"
    XFilterEvent returns: False

KeyRelease event, serial 37, synthetic NO, window 0x400001,
    root 0x2c5, subw 0x0, time 393587, (-1364,522), root:(467,1486),
    state 0x1, keycode 50 (keysym 0xffe1, Shift_L), same_screen YES,
    XLookupString gives 0 bytes:

Ich bin mir nicht ganz sicher was da wo schiefläuft, ich glaub der mappt die Ebenen/Modifier irgendwie falsch? Ich experimentiere mal mit den ETX Settings.

Sieht eigentlich gut aus, in Terminal, Firefox, Safari, Slack (Electron), Apple Keynote, MS Powerpoint usw. verhält es sich zumindest für Texteingabe richtig (Shortcuts hab ich jetzt nicht groß getestet). Mein einziges Problem ist in Exceed Turbo X (Remote Desktop Lösung). Da kommt das Bone’sche ö, ü, ä so an: ``` KeyPress event, serial 37, synthetic NO, window 0x400001, root 0x2c5, subw 0x0, time 337696, (112,105), root:(1943,1069), state 0x0, keycode 30 (keysym 0x68, h), same_screen YES, XLookupString gives 1 bytes: (68) "h" XmbLookupString gives 1 bytes: (68) "h" XFilterEvent returns: False KeyRelease event, serial 37, synthetic NO, window 0x400001, root 0x2c5, subw 0x0, time 337814, (112,105), root:(1943,1069), state 0x0, keycode 30 (keysym 0x68, h), same_screen YES, XLookupString gives 1 bytes: (68) "h" XFilterEvent returns: False KeyPress event, serial 37, synthetic NO, window 0x400001, root 0x2c5, subw 0x0, time 338310, (112,105), root:(1943,1069), state 0x0, keycode 29 (keysym 0x70, p), same_screen YES, XLookupString gives 1 bytes: (70) "p" XmbLookupString gives 1 bytes: (70) "p" XFilterEvent returns: False KeyRelease event, serial 37, synthetic NO, window 0x400001, root 0x2c5, subw 0x0, time 338427, (112,105), root:(1943,1069), state 0x0, keycode 29 (keysym 0x70, p), same_screen YES, XLookupString gives 1 bytes: (70) "p" XFilterEvent returns: False KeyPress event, serial 37, synthetic NO, window 0x400001, root 0x2c5, subw 0x0, time 338764, (112,105), root:(1943,1069), state 0x0, keycode 28 (keysym 0x78, x), same_screen YES, XLookupString gives 1 bytes: (78) "x" XmbLookupString gives 1 bytes: (78) "x" XFilterEvent returns: False KeyRelease event, serial 37, synthetic NO, window 0x400001, root 0x2c5, subw 0x0, time 338870, (112,105), root:(1943,1069), state 0x0, keycode 28 (keysym 0x78, x), same_screen YES, XLookupString gives 1 bytes: (78) "x" XFilterEvent returns: False ``` Ebene 3 funktioniert dafür richtig, da kommt z.B. ein () so an: ``` KeyPress event, serial 37, synthetic NO, window 0x400001, root 0x2c5, subw 0x0, time 390476, (-1364,522), root:(467,1486), state 0x0, keycode 50 (keysym 0xffe1, Shift_L), same_screen YES, XLookupString gives 0 bytes: XmbLookupString gives 0 bytes: XFilterEvent returns: False KeyPress event, serial 37, synthetic NO, window 0x400001, root 0x2c5, subw 0x0, time 390480, (-1364,522), root:(467,1486), state 0x1, keycode 18 (keysym 0x28, parenleft), same_screen YES, XLookupString gives 1 bytes: (28) "(" XmbLookupString gives 1 bytes: (28) "(" XFilterEvent returns: False KeyRelease event, serial 37, synthetic NO, window 0x400001, root 0x2c5, subw 0x0, time 390594, (-1364,522), root:(467,1486), state 0x1, keycode 18 (keysym 0x28, parenleft), same_screen YES, XLookupString gives 1 bytes: (28) "(" XFilterEvent returns: False KeyPress event, serial 37, synthetic NO, window 0x400001, root 0x2c5, subw 0x0, time 392661, (-1364,522), root:(467,1486), state 0x1, keycode 19 (keysym 0x29, parenright), same_screen YES, XLookupString gives 1 bytes: (29) ")" XmbLookupString gives 1 bytes: (29) ")" XFilterEvent returns: False KeyRelease event, serial 37, synthetic NO, window 0x400001, root 0x2c5, subw 0x0, time 392773, (-1364,522), root:(467,1486), state 0x1, keycode 19 (keysym 0x29, parenright), same_screen YES, XLookupString gives 1 bytes: (29) ")" XFilterEvent returns: False KeyRelease event, serial 37, synthetic NO, window 0x400001, root 0x2c5, subw 0x0, time 393587, (-1364,522), root:(467,1486), state 0x1, keycode 50 (keysym 0xffe1, Shift_L), same_screen YES, XLookupString gives 0 bytes: ``` Ich bin mir nicht ganz sicher was da wo schiefläuft, ich glaub der mappt die Ebenen/Modifier irgendwie falsch? Ich experimentiere mal mit den ETX Settings.
Member

Oh, einen Bug hab ich noch gefunden: CapsLock+QWERTZ'sches V gibt mir statt einer Tilde ein ˇ (also ein dead key accent, wenn ich danach z.B. s drücke kriege š). Magst du das fixen?

Tritt sowohl mit Neo als auch Bone auf und direkt am Macbook als auch an einer angeschlossenen nicht-Apple Tastatur.

Oh, einen Bug hab ich noch gefunden: CapsLock+QWERTZ'sches V gibt mir statt einer Tilde ein ˇ (also ein dead key accent, wenn ich danach z.B. s drücke kriege š). Magst du das fixen? Tritt sowohl mit Neo als auch Bone auf und direkt am Macbook als auch an einer angeschlossenen nicht-Apple Tastatur.
Member

Einen hab ich noch: In KVirc öffnet sich das “Configure registered users” Fenster wenn ich ß drücke. Das Setting hat anscheinend als Shortcut Option+U.

Das Programm “Key Codes” zeigt mir wenn ich ß drücke folgendes:

Modifier Change
	Keys:		⌥
	Modifiers:	524576 / 0x80120 ⓘ

Key Down
	Characters:	ß
	Unicode:		223 / 0xdf
	Keys:		⌥U
	Key Code:	14 / 0xe
	Modifiers:	524576 / 0x80120 ⓘ

Key Up
	Characters:	ß
	Unicode:		223 / 0xdf
	Keys:		⌥U
	Key Code:	14 / 0xe
	Modifiers:	524576 / 0x80120 ⓘ

Modifier Change
	Modifiers:	256 / 0x100 ⓘ

** Keys: ⌥U**

Nicht gut, oder? Irgendeine Möglichkeit das richtig hinzukriegen?

Einen hab ich noch: In KVirc öffnet sich das “Configure registered users” Fenster wenn ich ß drücke. Das Setting hat anscheinend als Shortcut Option+U. Das Programm “Key Codes” zeigt mir wenn ich ß drücke folgendes: ``` Modifier Change Keys: ⌥ Modifiers: 524576 / 0x80120 ⓘ Key Down Characters: ß Unicode: 223 / 0xdf Keys: ⌥U Key Code: 14 / 0xe Modifiers: 524576 / 0x80120 ⓘ Key Up Characters: ß Unicode: 223 / 0xdf Keys: ⌥U Key Code: 14 / 0xe Modifiers: 524576 / 0x80120 ⓘ Modifier Change Modifiers: 256 / 0x100 ⓘ ``` ** Keys: ⌥U** Nicht gut, oder? Irgendeine Möglichkeit das richtig hinzukriegen?
Author
First-time contributor

Oh, einen Bug hab ich noch gefunden: CapsLock+QWERTZ'sches V gibt mir statt einer Tilde ein ˇ (also ein dead key accent, wenn ich danach z.B. s drücke kriege š). Magst du das fixen?

Tritt sowohl mit Neo als auch Bone auf und direkt am Macbook als auch an einer angeschlossenen nicht-Apple Tastatur.

Das Problem konnte ich mit den verlinkten Karabiner-Regeln nicht reproduzieren.
Bei mir produziert CapsLock+V eine Tilde.

Be KVirc habe ich diese Version ausprobiert und bei NeoQwertz macht das Ä Probleme (ruft Configure registered users auf).

Ich denke nicht, dass dieses spezifische Problem gelöst werden kann.
Das Numpad kann für die Umlaute und ß zweckentfremdet werden (die Nummern funktionieren dann nach Remapping trotzdem).

Normalerweise sollten Programme den Shortcut Option+U bei EN-Intl Layouts nicht nutzen, da dieser für die Umlaute genutzt wird.

> Oh, einen Bug hab ich noch gefunden: CapsLock+QWERTZ'sches V gibt mir statt einer Tilde ein ˇ (also ein dead key accent, wenn ich danach z.B. s drücke kriege š). Magst du das fixen? > > Tritt sowohl mit Neo als auch Bone auf und direkt am Macbook als auch an einer angeschlossenen nicht-Apple Tastatur. Das Problem konnte ich mit den verlinkten Karabiner-Regeln nicht reproduzieren. Bei mir produziert CapsLock+V eine Tilde. Be KVirc habe ich [diese](https://nightly.kvirc.net/macos/KVIrc-5.0.1-dev-2023-10-24-git-b53073b.dmg) Version ausprobiert und bei NeoQwertz macht das Ä Probleme (ruft *Configure registered users* auf). ~~Ich denke nicht, dass dieses spezifische Problem gelöst werden kann~~. Das Numpad kann für die Umlaute und ß zweckentfremdet werden (die Nummern funktionieren dann nach Remapping trotzdem). Normalerweise sollten Programme den Shortcut Option+U bei EN-Intl Layouts nicht nutzen, da dieser für die Umlaute genutzt wird.
andre force-pushed neo2-layer3-fixes from a28c196331 to 1a78e934ca 2023-11-13 18:54:29 +01:00 Compare
Author
First-time contributor

Ich habe die Änderungen nun in beiden Repos gepusht.

Ich habe die Änderungen nun in beiden Repos gepusht.
Member

Das Ebene 4 Numpad ist jetzt aber kaputt weil das auf keypad_* mappt und dort im keylayout nun Umlaute und Zeug liegen :D

Hast du da eine Idee? Vielleicht Ebene 4 Numpad einfach auf z.B. "1" statt "keypad_1" mappen? Ist natürlich suboptimal falls man wirklich Numpad Inputs will.

Die Tilde funktoniert bei mir mit "Deutsch (AdNW)" aber nicht bei den Layouts im neo.bundle (dort kriege ich wie gehabt das ˇ). Weißt du wo der Unterschied ist?

Das Ebene 4 Numpad ist jetzt aber kaputt weil das auf keypad_* mappt und dort im keylayout nun Umlaute und Zeug liegen :D Hast du da eine Idee? Vielleicht Ebene 4 Numpad einfach auf z.B. "1" statt "keypad_1" mappen? Ist natürlich suboptimal falls man wirklich Numpad Inputs will. Die Tilde funktoniert bei mir mit "Deutsch (AdNW)" aber nicht bei den Layouts im neo.bundle (dort kriege ich wie gehabt das ˇ). Weißt du wo der Unterschied ist?
Author
First-time contributor

Mit deinem Vorschlag funktionieren die Ebene 4 Nummern wieder, danke.
Was das Problem mit dem Numpad angeht, zumindest bei Blender kann man Emulate Numpad aktivieren, damit die Numrow als Numpad interpretiert wird (und damit auch die Ebene 4-Ziffern). Mir fällt momentan kein anderes Programm ein, wo ein Numpad zwingend notwendig wäre.

Bezüglich der Tilde: Ich kann das Problem nicht reproduzieren. Hast du bereits versucht, Karabiner mit einer neuen config zu starten (gegebenenfalls vorher die Karabiner-Systemconfig zurücksetzen)?

Die Karabiner-Regeln unterscheiden sich bei den Layouts nur in Ebene 1 und 2.

Das Ganze ist ziemlich hacky, aber ohne QMK-Keyboard oder kmonad wird man das Sonderzeichen-Problem mit den Neo-Layouts unter macOS, denke ich, nicht lösen können.

Mit deinem Vorschlag funktionieren die Ebene 4 Nummern wieder, danke. Was das Problem mit dem Numpad angeht, zumindest bei Blender kann man `Emulate Numpad` aktivieren, damit die Numrow als Numpad interpretiert wird (und damit auch die Ebene 4-Ziffern). Mir fällt momentan kein anderes Programm ein, wo ein Numpad zwingend notwendig wäre. Bezüglich der Tilde: Ich kann das Problem nicht reproduzieren. Hast du bereits versucht, Karabiner mit einer neuen config zu starten (gegebenenfalls vorher die Karabiner-Systemconfig zurücksetzen)? Die Karabiner-Regeln unterscheiden sich bei den Layouts nur in Ebene 1 und 2. Das Ganze ist ziemlich hacky, aber ohne QMK-Keyboard oder kmonad wird man das Sonderzeichen-Problem mit den Neo-Layouts unter macOS, denke ich, nicht lösen können.
Member

Bin auf ein paar Probleme mit der Taste links von 1 (soll ein ^ erzeugen) und der Taste rechts vom linken Shift (M4L) gestoßen.

First of all ist da das gute alte Problem das die Taste links von 1 bei Mac Tastaturen ein "non_us_backslash" ist und bei normalen Tastaturen ein "grave_accent_and_tilde". Vice versa für M4L: Bei Mac ist es "grave_accent_and_tilde", bei normalen Tastaturen ein "non_us_backslash".

Momentan ist das in deinen KE Rules für Mac falsch implementiert, statt non_us_backslash sollte hier grave_accent_and_tilde stehen:

  description: 'Neo2 layers (Mac keyboards). Rule applied to Mac keyboards only.',
  manipulators: [].concat(neo2Modifiers('caps_lock', 'backslash', 'non_us_backslash', 'right_command'))
    .concat(layer6())
    .concat(layer5())
    .concat(layer4())
    .concat(layer3())
    .concat(layer2())
    .concat(layer1())
},

Das führt auch schon zum nächsten Problem: Mischbetrieb mit einer Mac Tastatur (z.B. eingebaut im Macbook) und normaler Tastatur ist so nicht möglich. Darum hatten wir bisher die device_if conditions in den KE Rules. Das brauchen wir wieder.

Das Rätsel um die Tilde hat sich auch geklärt: Du mappst in KE das v auf Shift+non_us_backslash (bisserl ein Hack). Im AdNW keylayout liegt dort die Tilde, in den Neo'schen Layouts liegt dort ˇ wie in der Neo Referenz spezifiziert. Ich vermute wir müssen mit den Neo'schen Layouts nachziehen und haben halt dann keine Möglichkeit mehr ˇ einzugeben?

Bin auf ein paar Probleme mit der Taste links von 1 (soll ein ^ erzeugen) und der Taste rechts vom linken Shift (M4L) gestoßen. First of all ist da das gute alte Problem das die Taste links von 1 bei Mac Tastaturen ein "non_us_backslash" ist und bei normalen Tastaturen ein "grave_accent_and_tilde". Vice versa für M4L: Bei Mac ist es "grave_accent_and_tilde", bei normalen Tastaturen ein "non_us_backslash". Momentan ist das in deinen KE Rules für Mac falsch implementiert, statt non_us_backslash sollte hier grave_accent_and_tilde stehen: ``` description: 'Neo2 layers (Mac keyboards). Rule applied to Mac keyboards only.', manipulators: [].concat(neo2Modifiers('caps_lock', 'backslash', 'non_us_backslash', 'right_command')) .concat(layer6()) .concat(layer5()) .concat(layer4()) .concat(layer3()) .concat(layer2()) .concat(layer1()) }, ``` Das führt auch schon zum nächsten Problem: Mischbetrieb mit einer Mac Tastatur (z.B. eingebaut im Macbook) und normaler Tastatur ist so nicht möglich. Darum hatten wir bisher die device_if conditions in den KE Rules. Das brauchen wir wieder. Das Rätsel um die Tilde hat sich auch geklärt: Du mappst in KE das v auf Shift+non_us_backslash (bisserl ein Hack). Im AdNW keylayout liegt dort die Tilde, in den Neo'schen Layouts liegt dort ˇ wie in der Neo Referenz spezifiziert. Ich vermute wir müssen mit den Neo'schen Layouts nachziehen und haben halt dann keine Möglichkeit mehr ˇ einzugeben?
Author
First-time contributor

Ich konnte das Problem mit der Tilde reproduzieren, indem ich das Tastaturlayout auf ANSI stelle. Stelle ich das wieder auf ISO um, funktioniert es.

Bei mir verhalten sich die MacBook Tastatur und das externe Magic Keyboard gleich (Taste links neben 1 geben beim Karabiner Event Viewer beide ein grave_accent_and_tilde aus).

Gibt es eine Referenz für ADNW? Denn bei Shift+Grave Accent and Tilde kommt dieses Zeichen heraus: ˜

Ich konnte das Problem mit der Tilde reproduzieren, indem ich das Tastaturlayout auf ANSI stelle. Stelle ich das wieder auf ISO um, funktioniert es. Bei mir verhalten sich die MacBook Tastatur und das externe Magic Keyboard gleich (Taste links neben 1 geben beim Karabiner Event Viewer beide ein `grave_accent_and_tilde` aus). Gibt es eine Referenz für ADNW? Denn bei Shift+Grave Accent and Tilde kommt dieses Zeichen heraus: ˜
Member

Egal ob ich ISO oder ANSI einstelle, die Taste links neben 1 wird bei meinem Macbook Pro 2019 (ISO layout, QWERTY Beschriftung) als non_us_backslash reported. Ich bin verwirrt.

Die verschiedenen Varianten vom Layout für Mactastaturen und normale Tastaturen gabs schon vor meiner Zeit, also ich glaub nicht das ich der einzige bin bei dem es so ist. Komisch nur das es sich bei dir richtig verhält. Eine normale USB Tastatur zum Gegenchecken hast du nicht zufällig?

Edit: Habe diesen alten Issue dazu gefunden, scheint ein bekannter, alter MacOS Bug zu sein
https://github.com/pqrs-org/Karabiner-Elements/issues/885

Edit2: Und den https://github.com/pqrs-org/Karabiner-Elements/issues/2514 und den: https://github.com/pqrs-org/Karabiner-Elements/issues/2985

Egal ob ich ISO oder ANSI einstelle, die Taste links neben 1 wird bei meinem Macbook Pro 2019 (ISO layout, QWERTY Beschriftung) als non_us_backslash reported. Ich bin verwirrt. Die verschiedenen Varianten vom Layout für Mactastaturen und normale Tastaturen gabs schon vor meiner Zeit, also ich glaub nicht das ich der einzige bin bei dem es so ist. Komisch nur das es sich bei dir richtig verhält. Eine normale USB Tastatur zum Gegenchecken hast du nicht zufällig? Edit: Habe diesen alten Issue dazu gefunden, scheint ein bekannter, alter MacOS Bug zu sein https://github.com/pqrs-org/Karabiner-Elements/issues/885 Edit2: Und den https://github.com/pqrs-org/Karabiner-Elements/issues/2514 und den: https://github.com/pqrs-org/Karabiner-Elements/issues/2985
Author
First-time contributor

Ich habe noch eine ISO MX Keys Mini, die gibt auch grave_accent_and_tilde aus (sowohl im Mac- als auch im Windows-Modus).
Die interne MacBook Tastatur und das Magic Keyboard sind aber ANSI. Alle drei Tastaturen verhalten sich bei mir identisch, nur dass die ANSI-Tastaturen Backslash als zweiten Mod3-Key haben und der erste Mod4-Key natürlich fehlt.

EDIT: Aus irgendeinen Grund habe ich jetzt das gleiche Problem. o_O

Ich habe noch eine ISO MX Keys Mini, die gibt auch `grave_accent_and_tilde` aus (sowohl im Mac- als auch im Windows-Modus). Die interne MacBook Tastatur und das Magic Keyboard sind aber ANSI. Alle drei Tastaturen verhalten sich bei mir identisch, nur dass die ANSI-Tastaturen Backslash als zweiten Mod3-Key haben und der erste Mod4-Key natürlich fehlt. EDIT: Aus irgendeinen Grund habe ich jetzt das gleiche Problem. o_O
Author
First-time contributor

Da ich kein MacBook mit ISO-Layout habe, kann ich leider nicht testen, welche Änderungen nötig sind, damit die Karabiner-Regeln mit allen ISO-Mac-Tastaturen funktionieren.

Mit diesen Änderungen in der neo Karabiner-Datei lassen sich Modifikationen schnell testen (Vorsicht: das überschreibt das vorhandene Profil)

function main() {
  console.log(
    JSON.stringify(
      {
        test: '',
        title: 'Neo2',
        'profiles': [
          {
            'name': 'Default',
            selected: true,
            'complex_modifications': {
              rules: rules()
            }
          }],
        rules: []
      },
      null,
      '  '
    )
  )
}

Aus dem Rootverzeichnis des Karabiner-Repos auführen:
ls src/json/neo2.json.js | entr -s "make && cp public/json/neo2.json ~/.config/karabiner/karabiner.json"

Da ich kein MacBook mit ISO-Layout habe, kann ich leider nicht testen, welche Änderungen nötig sind, damit die Karabiner-Regeln mit allen ISO-Mac-Tastaturen funktionieren. Mit diesen Änderungen in der neo Karabiner-Datei lassen sich Modifikationen schnell testen (Vorsicht: das überschreibt das vorhandene Profil) ``` function main() { console.log( JSON.stringify( { test: '', title: 'Neo2', 'profiles': [ { 'name': 'Default', selected: true, 'complex_modifications': { rules: rules() } }], rules: [] }, null, ' ' ) ) } ``` Aus dem Rootverzeichnis des Karabiner-Repos auführen: `ls src/json/neo2.json.js | entr -s "make && cp public/json/neo2.json ~/.config/karabiner/karabiner.json"`
Author
First-time contributor

@Mike1
Ich habe jetzt ein paar Änderungen bezüglich der Tilde/Zirkumflex gepusht.
Getestet wurde mit der MX Keys Mini (ISO) im PC und Mac-Modus, dort funktioniert die Zirkumflex-Taste in allen Ebenen nun korrekt (ebenfalls CapsLock+V und CapsLock+B).

Könntest du bitte die MacBook-Tastatur ebenfalls testen?

@Mike1 Ich habe jetzt ein paar Änderungen bezüglich der Tilde/Zirkumflex gepusht. Getestet wurde mit der MX Keys Mini (ISO) im PC und Mac-Modus, dort funktioniert die Zirkumflex-Taste in allen Ebenen nun korrekt (ebenfalls CapsLock+V und CapsLock+B). Könntest du bitte die MacBook-Tastatur ebenfalls testen?
Member

Sieht schon mal gut aus :)

Einziges Problem das ich noch habe ist Mischbetrieb.

Wenn ich nur die Mac Rule aktiv habe geht auf der Macbook-Tastatur alles aber auf der externen Tastatur sind Mod4L und ^ vertauscht. Wenn ich die „PC keyboards“ rule aktiv habe ist es genau umgekehrt. Also so wie ich es sehe brauchen wir die device_if conditions von früher damit man Macbook mit angesteckter normaler Tastatur problemlos verwenden kann.

Sieht schon mal gut aus :) Einziges Problem das ich noch habe ist Mischbetrieb. Wenn ich nur die Mac Rule aktiv habe geht auf der Macbook-Tastatur alles aber auf der externen Tastatur sind Mod4L und ^ vertauscht. Wenn ich die „PC keyboards“ rule aktiv habe ist es genau umgekehrt. Also so wie ich es sehe brauchen wir die device_if conditions von früher damit man Macbook mit angesteckter normaler Tastatur problemlos verwenden kann.
Author
First-time contributor

Die Änderungen sind gepusht.

Die Änderungen sind gepusht.
Member

Jetzt ist aber Ebene 4 mit der „Neo2 layers (PC keyboards)“ rule kaputt. M4R + n öffnet mir z.B. in Terminal einen neuen Tab statt eine „4” auszugeben.

Soll da wirklich right_option und nicht right_command stehen?

  description: 'Neo2 layers (PC keyboards). Rule applied to PC keyboards only. Can\'t be used with the other Mac Neo2 layer rule together, but can be used with the internal Mac keyboard rule or alone.',
  manipulators: []
    .concat(neo2Modifiers('caps_lock', 'non_us_pound', 'non_us_backslash', 'right_option'))

Übrigens: Wir matchen hier genau genommen nicht nur auf interne keyboards sondern auch auf externe mit der ID von Apple (was ich auch gut finde, außer Apple produziert irgendwann mal eine normale ISO Tastatur):

  const internalMacKeyboardIdentifiers = [{ vendor_id: 1452 }, { is_built_in_keyboard: true }]
  const isInternalMacKeyboard = { type: 'device_if', identifiers: internalMacKeyboardIdentifiers }
Jetzt ist aber Ebene 4 mit der „Neo2 layers (PC keyboards)“ rule kaputt. M4R + n öffnet mir z.B. in Terminal einen neuen Tab statt eine „4” auszugeben. Soll da wirklich right_option und nicht right_command stehen? ``` description: 'Neo2 layers (PC keyboards). Rule applied to PC keyboards only. Can\'t be used with the other Mac Neo2 layer rule together, but can be used with the internal Mac keyboard rule or alone.', manipulators: [] .concat(neo2Modifiers('caps_lock', 'non_us_pound', 'non_us_backslash', 'right_option')) ``` Übrigens: Wir matchen hier genau genommen nicht nur auf interne keyboards sondern auch auf externe mit der ID von Apple (was ich auch gut finde, außer Apple produziert irgendwann mal eine normale ISO Tastatur): ``` const internalMacKeyboardIdentifiers = [{ vendor_id: 1452 }, { is_built_in_keyboard: true }] const isInternalMacKeyboard = { type: 'device_if', identifiers: internalMacKeyboardIdentifiers } ```
Author
First-time contributor

Ich habe die Variablen und Beschreibungen dementsprechend geändert.
AltGr+N produziert bei mir die 4, sowohl mit der MX Keys in PC-Modus als auch mit einer USB Logitech PC-Tastatur.

Ich habe die Variablen und Beschreibungen dementsprechend geändert. AltGr+N produziert bei mir die 4, sowohl mit der MX Keys in PC-Modus als auch mit einer USB Logitech PC-Tastatur.
Member

Mein Fehler wegen right_option vs. right_command, ich hatte aus irgendeinem Grund eine simple rule um die beiden zu vertauschen.

Das Problem mit der Tilde ist zurück, mit AdnW geht es, bei den Neo'schen Layouts kriege ich sowohl beim Macbook als auch auf der externen Tastatur wieder den ˇ statt der Tilde.

Ansonsten würds jetzt eigentlich gut aussehen, habe mit der ISO Tastatur vom Macbook, einem Truly Ergonomic Keyboard („ISO“) mit eigener Firmware und einer Logitech K330 getestet.

Mein Fehler wegen right_option vs. right_command, ich hatte aus irgendeinem Grund eine simple rule um die beiden zu vertauschen. Das Problem mit der Tilde ist zurück, mit AdnW geht es, bei den Neo'schen Layouts kriege ich sowohl beim Macbook als auch auf der externen Tastatur wieder den ˇ statt der Tilde. Ansonsten würds jetzt eigentlich gut aussehen, habe mit der ISO Tastatur vom Macbook, einem Truly Ergonomic Keyboard („ISO“) mit eigener Firmware und einer Logitech K330 getestet.
Member

Noch ein Problem: Die ^ Taste links von 1 erzeugt bei mir auf dem Macbook überhaupt keinen Output, vermutlich weil du sie quasi auf M4L mappst:

            fromKeys: ['non_us_backslash'],
            fromModifiers: { optional: ['any'] },
            toKeys: ['grave_accent_and_tilde'],

Ist das ein Versuch die ANSI vs ISO Diskrepanzen zu lösen? Bei mir hats komischerweise überhaupt keine Auswirkung wenn ich in den MacOS system settings zwischen ANSI und ISO umstelle, ich weiß also nicht obs an meinen Settings liegt oder was für Settings ich überhaupt habe. Auf der externen Tastatur bekomme ich ein ` statt dem ^

Edit: Jetzt krieg ich auf dem Macbook auch den ` mit der Taste links von 1.

Das mit dem ˇ wundert mich auch nicht wenn man Neo'sche Layouts und AdnW vergleicht, siehe Screenshot.

Noch ein Problem: Die ^ Taste links von 1 erzeugt bei mir auf dem Macbook überhaupt keinen Output, vermutlich weil du sie quasi auf M4L mappst: ``` fromKeys: ['non_us_backslash'], fromModifiers: { optional: ['any'] }, toKeys: ['grave_accent_and_tilde'], ``` Ist das ein Versuch die ANSI vs ISO Diskrepanzen zu lösen? Bei mir hats komischerweise überhaupt keine Auswirkung wenn ich in den MacOS system settings zwischen ANSI und ISO umstelle, ich weiß also nicht obs an meinen Settings liegt oder was für Settings ich überhaupt habe. Auf der externen Tastatur bekomme ich ein ` statt dem ^ Edit: Jetzt krieg ich auf dem Macbook auch den ` mit der Taste links von 1. Das mit dem ˇ wundert mich auch nicht wenn man Neo'sche Layouts und AdnW vergleicht, siehe Screenshot.
andre force-pushed neo2-layer3-fixes from 1a78e934ca to 6f83711fb2 2023-12-01 11:37:14 +01:00 Compare
Author
First-time contributor

Das Problem mit ˇ habe ich nur, wenn hier ANSI ausgewählt ist.

image

Ich habe mir nun ein Magic Keyboard ISO mit TouchID gekauft und nachdem ich die Vendor ID hinzugefügt habe, funktioniert bei mir alles.

ADNW ist nun auch gefixt.

Das Problem mit ˇ habe ich nur, wenn hier ANSI ausgewählt ist. ![image](/attachments/35f30cee-3722-41e9-a17f-768ad362856c) Ich habe mir nun ein Magic Keyboard ISO mit TouchID gekauft und nachdem ich die Vendor ID hinzugefügt habe, funktioniert bei mir alles. ADNW ist nun auch gefixt.
746 KiB
Member

Ah nice, mit Virtual Keyboard in KE auf ISO geht ~ jetzt bei mir.

Ich bin leider noch auf zwei weitere Probleme draufgekommen: Ein „ (M3L + 8) öffnet in KVirc das Emoticon-Menü, weil das dort auf Option + E gemappt ist. Irgendeine Idee wie wir das umgehen können?

Zweites: MacOS screen locken mit Command+Control+q funktioniert nicht (es hat keinen Effekt).

Output vom KE Events Viewer. Die letzten zwei Events sind wenn ich q ohne Modifier drücke. Verwendetes Layout ist Bone.


[
  {
    "type": "down",
    "name": {"key_code":"left_command"},
    "usagePage": "7 (0x0007)",
    "usage": "227 (0x00e3)",
    "misc": "flags left_command"
  },
  {
    "type": "down",
    "name": {"key_code":"left_control"},
    "usagePage": "7 (0x0007)",
    "usage": "224 (0x00e0)",
    "misc": "flags left_command,left_control"
  },
  {
    "type": "down",
    "name": {"key_code":"quote"},
    "usagePage": "7 (0x0007)",
    "usage": "52 (0x0034)",
    "misc": "flags left_command,left_control"
  },
  {
    "type": "up",
    "name": {"key_code":"quote"},
    "usagePage": "7 (0x0007)",
    "usage": "52 (0x0034)",
    "misc": "flags left_command,left_control"
  },
  {
    "type": "up",
    "name": {"key_code":"left_command"},
    "usagePage": "7 (0x0007)",
    "usage": "227 (0x00e3)",
    "misc": "flags left_control"
  },
  {
    "type": "up",
    "name": {"key_code":"left_control"},
    "usagePage": "7 (0x0007)",
    "usage": "224 (0x00e0)",
    "misc": ""
  },
  {
    "type": "down",
    "name": {"key_code":"v"},
    "usagePage": "7 (0x0007)",
    "usage": "25 (0x0019)",
    "misc": ""
  },
  {
    "type": "up",
    "name": {"key_code":"v"},
    "usagePage": "7 (0x0007)",
    "usage": "25 (0x0019)",
    "misc": ""
  }
]
Ah nice, mit Virtual Keyboard in KE auf ISO geht ~ jetzt bei mir. Ich bin leider noch auf zwei weitere Probleme draufgekommen: Ein „ (M3L + 8) öffnet in KVirc das Emoticon-Menü, weil das dort auf Option + E gemappt ist. Irgendeine Idee wie wir das umgehen können? Zweites: MacOS screen locken mit Command+Control+q funktioniert nicht (es hat keinen Effekt). Output vom KE Events Viewer. Die letzten zwei Events sind wenn ich q ohne Modifier drücke. Verwendetes Layout ist Bone. ``` [ { "type": "down", "name": {"key_code":"left_command"}, "usagePage": "7 (0x0007)", "usage": "227 (0x00e3)", "misc": "flags left_command" }, { "type": "down", "name": {"key_code":"left_control"}, "usagePage": "7 (0x0007)", "usage": "224 (0x00e0)", "misc": "flags left_command,left_control" }, { "type": "down", "name": {"key_code":"quote"}, "usagePage": "7 (0x0007)", "usage": "52 (0x0034)", "misc": "flags left_command,left_control" }, { "type": "up", "name": {"key_code":"quote"}, "usagePage": "7 (0x0007)", "usage": "52 (0x0034)", "misc": "flags left_command,left_control" }, { "type": "up", "name": {"key_code":"left_command"}, "usagePage": "7 (0x0007)", "usage": "227 (0x00e3)", "misc": "flags left_control" }, { "type": "up", "name": {"key_code":"left_control"}, "usagePage": "7 (0x0007)", "usage": "224 (0x00e0)", "misc": "" }, { "type": "down", "name": {"key_code":"v"}, "usagePage": "7 (0x0007)", "usage": "25 (0x0019)", "misc": "" }, { "type": "up", "name": {"key_code":"v"}, "usagePage": "7 (0x0007)", "usage": "25 (0x0019)", "misc": "" } ] ```
Author
First-time contributor

Anscheinend erwartet macOS bei Command+Control Shortcuts die Keycodes der Tasten, statt der Buchstaben.
Wenn ich Q und P per Karabiner vertausche (ABC Extended Layout), funktioniert der Shortcut für mich.

Ich denke daher, dass der beste Kompromiss ist, die Neo-Layouts komplett in Karabiner zu implementieren.

Vorteile

  • gute Kompatibilität mit den Sonderzeichen
  • kein Modifizieren der vorhanden Neo-Layouts notwendig
  • mit dem ABC Extended Layout sind die meisten Sonderzeichen/Dead Keys abgedeckt

Nachteile

  • für die restlichen Zeichen (griechische Buchstaben etc.) ist ein Wechseln zwischen dem ABC Extended und dem jeweiligen Neo-Layout notwendig
  • bei Programmen, die zum Beispiel Option-U als Shortcut nutzen (KVirc), muss ebenfalls das jeweilige Neo-Layout verwendet werden, da Option-U für die Umlaute benötigt wird

image
image

Anscheinend erwartet macOS bei Command+Control Shortcuts die Keycodes der Tasten, statt der Buchstaben. Wenn ich Q und P per Karabiner vertausche (ABC Extended Layout), funktioniert der Shortcut für mich. Ich denke daher, dass der beste Kompromiss ist, die Neo-Layouts komplett in Karabiner zu implementieren. Vorteile - gute Kompatibilität mit den Sonderzeichen - kein Modifizieren der vorhanden Neo-Layouts notwendig - mit dem ABC Extended Layout sind die meisten Sonderzeichen/Dead Keys abgedeckt Nachteile - für die restlichen Zeichen (griechische Buchstaben etc.) ist ein Wechseln zwischen dem ABC Extended und dem jeweiligen Neo-Layout notwendig - bei Programmen, die zum Beispiel Option-U als Shortcut nutzen (KVirc), muss ebenfalls das jeweilige Neo-Layout verwendet werden, da Option-U für die Umlaute benötigt wird ![image](/attachments/d52a112b-80f2-4b4e-bf24-2f0e52576ebf) ![image](/attachments/c24fd61b-bf15-4b27-87cc-101e05cabf05)
Author
First-time contributor

@Mike1
Ich habe die Layouts (Neo, NeoQwertz, Bone, Mine, Noted, AdNW, KOY und VOU) nun implementiert.

Um diese zu testen, müssen beide Regelsätze (neo2.json und neo_layouts_based_on_abc_extended_layout.json) nach ~/.config/karabiner/assets/complex_modifications/ kopiert werden.
Außerdem, falls noch nicht geschehen, müssen die modifizierten Neo-Layouts aus diesem Pull Request wieder mit denen aus dem Upstream erzetzt werden.

Für die Layouts aus dem neuen Regelsatz muss das ABC Extended Layout ausgewählt sein. Danach können alle bisherigen Neo-Regeln und die jeweilige Regel für das Neo-Layout aus dem neuen Regelsatz aktiviert werden.

Um ein PC-Keyboard zu nutzen, müssen für dieses folgende Modifikationen aktiviert werden:

grave_accent_and_tilde (`) -> non_us_backslash
non_us_backslash -> grave_accent_and_tilde (`)
non_us_pound -> backslash (\)
right_option -> right_command

Wenn es alles soweit in Ordnung ist, würde ich diesen Pull Request dann schließen und die Neo2 Dokumentation anpassen.

@Mike1 Ich habe die Layouts (Neo, NeoQwertz, Bone, Mine, Noted, AdNW, KOY und VOU) nun implementiert. Um diese zu testen, müssen beide Regelsätze (neo2.json und neo_layouts_based_on_abc_extended_layout.json) nach `~/.config/karabiner/assets/complex_modifications/` kopiert werden. Außerdem, falls noch nicht geschehen, müssen die modifizierten Neo-Layouts aus diesem Pull Request wieder mit denen aus dem Upstream erzetzt werden. Für die Layouts aus dem neuen Regelsatz muss das ABC Extended Layout ausgewählt sein. Danach können alle bisherigen Neo-Regeln und die jeweilige Regel für das Neo-Layout aus dem neuen Regelsatz aktiviert werden. Um ein PC-Keyboard zu nutzen, müssen für dieses folgende Modifikationen aktiviert werden: <pre> grave_accent_and_tilde (`) -> non_us_backslash<br/> non_us_backslash -> grave_accent_and_tilde (`)<br/> non_us_pound -> backslash (\)<br/> right_option -> right_command </pre> Wenn es alles soweit in Ordnung ist, würde ich diesen Pull Request dann schließen und die Neo2 Dokumentation anpassen.
This pull request can be merged automatically.
You are not authorized to merge this pull request.
You can also view command line instructions.

Step 1:

From your project repository, check out a new branch and test the changes.
git checkout -b andre-neo2-layer3-fixes master
git pull neo2-layer3-fixes

Step 2:

Merge the changes and update on Gitea.
git checkout master
git merge --no-ff andre-neo2-layer3-fixes
git push origin master
Sign in to join this conversation.
No description provided.