Mehrere Modifikatorebenen mit XKB (auf einer japanischen Tastatur)

7

Ich habe die folgende Tastatur (HHKB JP).

Bild

Ich verwende Lubuntu 14.04 und habe es bearbeitet /usr/share/X11/xkb/symbols/us, um ein benutzerdefiniertes Layout zu implementieren .

Jetzt möchte ich die folgenden Tasten als Modifikatoren der 5., 6., 7., ... und 20. Stufe verwenden. (Unter Windows schaffe ich das mit AutoHotkey und jetzt kann ich nicht mehr ohne (zumindest einige) davon leben.)

Geben Sie hier die Bildbeschreibung ein

Ich habe 2 Probleme.

  1. Ich weiß nicht, wie die "Namen" für einige der nicht standardmäßigen Tasten auf der Tastatur lauten (um sie hinzuzufügen /usr/share/X11/xkb/symbols/us).
  2. Ich weiß nicht, wie ich zusätzliche Modifikatoren hinzufügen soll xkb(ich verstehe, dass dies xmodmapveraltet ist), insbesondere "normale" Schlüssel wie 9.

Meine Fragen sind:

  1. Wie finde ich die Namen / Codes für die Mystery Keys heraus (z. B. key <AC01>)?
  2. Wie füge ich einem bestimmten Schlüssel eine beliebige Anzahl von Modifiziererebenen hinzu?

Hinweis: Möglicherweise kann dies mit XKB nicht erreicht werden. Ich würde mich freuen, ein Skript-Tool zu kennen, das dies implementieren kann.

étale-kohomologie
quelle
Um die physischen XKB-Schlüsselnamen zu finden, können Sie mit xev die Schlüsselcodes suchen und dann die XKB-Schlüsselcodetabelle durchsuchen.
Gilles 'SO - hör auf böse zu sein'
@ Gilles Das hat funktioniert, danke. Aber jetzt kann ich nicht herausfinden , wie man zusätzliche Mengen an Modifizierungs ...
étale-cohomology
1
Ich bezweifle, dass Xkb so viele verschiedene Modifikatoren anbieten kann.
Guildenstern

Antworten:

6

XKB-Layouts werden in einem Modell definiert, das als RMLVORegeln, Modell, Layout, Variante, Optionen bezeichnet wird. Die System-XKB-Datenbank befindet sich normalerweise in /usr/share/X11/xkb:

/usr/share/X11/xkb/
├── compat       # ??? dark magic here, avoid
├── geometry     # as in physical, eg for generating layout maps
├── keycodes     # helpful for translating keycodes (from xev) to <FOO>
├── rules        # "evdev" is the important one; *.lst & *.xml are descriptions
├── symbols      # main layouts, variants, optional overrides
└── types        # ??? dark magic here, avoid

Das keycodesVerzeichnis definiert Schlüsselnamen wie <CAPS>oder <AC01>von Scancodes, die die Schlüssel tatsächlich generieren. setxkbmap -query -verbose 10zeigt Ihnen genau, auf welche Dateien zugegriffen wird, um Ihre aktuelle Keymap zu erstellen; Wenn es heißt keycodes: evdev+aliases(qwerty), werden die ../keycodes/evdevDatei und die qwertyZeilengruppe aus der ../keycodes/aliasesDatei geladen. Wenn Sie Tools verwenden xev, um zu bestimmen, welchen Schlüsselcode ein Schlüssel generiert, wird in diesen Dateien angezeigt, welcher Schlüsselname diesem Code zugeordnet ist.


Ihre Modifikatorfrage ist schwieriger. Ich habe nur Hinweise auf 8 ISO-Stufen gesehen und bin mir nicht sicher, ob dies eine XKB-Einschränkung ist oder ob keine gängigen Layouts mehr als das verwenden. (Nachdem ich dies weiter untersucht habe, bin ich mir ziemlich sicher, dass Sie den XKB-Code ändern müssen, um zusätzlichen hinzuzufügen

            symbol    press this
level 1       a       key
level 2       A       shift+key
level 3       á       <level3>+key
level 4       Á       <level3>+shift+key
level 5       ??      <level5>+key
level 6       ??      <level5>+shift+key
level 7       ??      <level5>+<level3>+key
level 8       ??      <level5>+<level3>+shift+key

Wie Sie sehen können, gibt es in einem 8-Ebenen-Layout nur 2 Tasten, die als "neue Modifikator" -Tasten fungieren. Siehe /usr/share/X11/xkb/compat/level5und /usr/share/X11/xkb/types/level5, wo Level5-Shift-, Latch- und Lock-Verhalten definiert sind; Diese werden dann über die in definierten Symboloptionen an die Schlüssel angehängt /usr/share/X11/xkb/symbols/level5.

Wenn Sie Ihren eigenen level9Modifikator definiert haben, erhalten Sie durch die Kombination mit vorhandenen Ebenen 8 weitere Ebenen, bevor Sie einen weiteren Ebenenmodifikator benötigen:

            symbol    press this
level 9       ??      <level9>+key
level 10      ??      <level9>+shift+key
level 11      ??      <level9>+<level3>+key
level 12      ??      <level9>+<level3>+shift+key
level 13      ??      <level9>+<level5>+key
level 14      ??      <level9>+<level5>+shift+key
level 15      ??      <level9>+<level5>+<level3>+key
level 16      ??      <level9>+<level5>+<level3>+shift+key

Wie Sie sehen können, werden viele Tasten gleichzeitig gedrückt. Die Verwendung von Schlössern und Verriegelungen anstelle von Verschiebungen würde dies verringern, aber dies wäre ein sehr kompliziertes Layout, und wir haben uns nur vorgestellt, eine Ebenenauswahl hinzuzufügen. Jede zusätzliche Auswahl würde die vorhandenen Ebenen verdoppeln.


Die "Modifikatoren", die Sie sich vorstellen, wählen wahrscheinlich eine bestimmte Ebene aus, weshalb Sie denken, dass Sie so viele benötigen. Möglicherweise können Sie solche Auswahlaktionen definieren und sie beispielsweise auf Ebene 3 dieser Tasten platzieren, sodass level3+key9Sie eine level14_latchAktion erhalten. Wenn Sie dann die nächste Taste drücken, erhalten Sie die 14. Ebene dieser Taste.

Bearbeiten : Eine weitere Frage , die speziell zum Erstellen einer gestellt wurde ISO_Level4_{Shift,Latch,Lock}, und ich habe eine Fälschung unterISO_Level4_Latch Verwendung vorhandener XKB-Keysyms und -Aktionen demonstriert . Diese Methode sollte für die Stufen 4, 6, 7 und 8 wirksam sein.

quixotic
quelle