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 sclkfile
im /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.