Neuzuordnung einer Taste für XKB

Neuzuordnung einer Taste für XKB

Ich versuche, die Rollen-Taste neu zuzuordnen, sodass sie den Tastencode einer beliebigen Windows-Taste erzeugt.

Als erstes speichere ich die aktuelle Tastaturbelegung:

xkbcomp $DISPLAY original-dump

Suchen Sie dann die Schlüsselcodes der Schlüssel, die mich interessieren:

cat original-dump | grep SCLK
 <SCLK> = 78;

 cat original-dump | grep LWIN
 <LWIN> = 133;

Nun drucke ich die Komponentennamen in eine Datei aus:

setxkbmap -print > original-components

Bearbeiten Sie die Datei, um meine Schlüsselcode-Änderung hinzuzufügen:

    xkb_keymap {
    xkb_keycodes  { 
        include "evdev+aliases(qwerty)" 
        // Remap Scroll-lock to the keycode of LWIN(133)
        <SCLK> = 133;
    };
    xkb_types     { include "complete"  };
    xkb_compat    { include "complete"  };
    xkb_symbols   { include "pc+us+inet(evdev)" };
    xkb_geometry  { include "pc(pc105)" };
    };

Speichern Sie die obige Datei als geänderte Komponenten und führen Sie Folgendes aus:

xkbcomp modified-components $DISPLAY

Nochmal dumpen:

xkbcomp $DISPLAY original-dump

Überprüfen Sie die Schlüsselcodes:

cat another-dump | grep SCLK
<SCLK> = 133;

So weit, so gut, aber wenn ich ausführe xev, ist der Schlüsselcode der Scroll Lock-Taste immer noch78.

Wenn ich ausführe:

xmodmap -e "keycode 78 = Super_L"

xevzeigt mir immer noch78, aber zumindest die Verknüpfungen, die ich in XFCE für LWIN und RWIN erstellt habe, funktionieren.

Ich würde gerne wissen, was ich falsch mache mitxkb. Danke.

Antwort1

Habe folgenden neuen Ansatz ausprobiert (mit Erfolg)

Erstellt eine neue Datei mit dem Namen sclkfileim /usr/share/X11/xkb/symbols/Verzeichnis und fügt den folgenden Inhalt hinzu:

 // Make the Scroll Lock key a left Super.
xkb_symbols "sclk_super" {
    replace key <SCLK> { [ Super_L ] };
    modifier_map  Mod4 { <SCLK> };
};

Die neue Regel wurde hinzugefügt in /usr/share/X11/xkb/rules/evdev:

sclkoption:sclk_super = +sclkfile(sclk_super)

Und Beschreibungen der Regel in /usr/share/X11/xkb/rules/evdev.lst:

! option
sclkoption           Scroll Lock behaviour
sclkoption:sclk_super Scroll Lock is Super

Auch hier /usr/share/X11/xkb/rules/evdev.xml:

<configItem>
        <name>sclkoption</name>
        <description>Scroll Lock behaviour</description>
</configItem>    
<option>
    <configItem>
        <name>sclkoption:sclk_super</name>
        <description>Scroll Lock is Super</description>
    </configItem>
</option>

Führen Sie abschließend Folgendes aus:

$ setxkbmap -option sclkoption:sclk_super

Keine Fehler, und wenn ich die Komponenten meines Layouts drucke:

$ setxkbmap -print
xkb_keymap {
        xkb_keycodes  { include "evdev+aliases(qwerty)" };
        xkb_types     { include "complete"      };
        xkb_compat    { include "complete"      };
        xkb_symbols   { include "pc+us+inet(evdev)+sclkfile(sclk_super)"     };
        xkb_geometry  { include "pc(pc105)"     };
};

Die neue Regel ist da.

Wenn ich jetzt ausführe xev:

keycode 78 (keysym 0xffeb, Super_R)

Der Schlüsselcode ist immer noch 78, aber das Keysym ist Super_R.Erfolg.

verwandte Informationen