Dans cette article, je détaille comment j’ai remappé la touche « scroll » sur le caractère « & » sous gnome-wayland.
On détermine le keycode X de la touche « scroll » :
max@laptop % sudo evtest /dev/input/by-id/usb-TypeMatrix.com_USB_Keyboard-event-kbd | grep 'EV_KEY.*value 1'
Event: time 1469737067.370782, type 1 (EV_KEY), code 70 (KEY_SCROLLLOCK), value 1
max@laptop % echo $((70+8))
78
ou :
max@laptop % xev | awk -F'[ )]+' '/^KeyPress/ { a[NR+2] } NR in a { printf "%-3s %s\n", $5, $8 }'
78 Scroll_Lock
Le keycode X de la touche est 78.
Les keycode symbolique de la touche « scroll » est « SCLK » :
max@laptop % grep '\s78;' /usr/share/X11/xkb/keycodes/evdev
<SCLK> = 78;
Le keysym de « & » est « ampersand » :
max@laptop % grep 'key .* &' /usr/share/X11/xkb/symbols/fr
key <AE01> { [ ampersand, 1, dead_caron, dead_ogonek ] }; // & 1 ˇ
key <AE01> { [ ampersand, 1, dead_caron, dead_cedilla ] }; // & 1 ˇ ¸
key <AE01> { [ ampersand, 1, caron, ogonek ] }; // & 1 ˇ
key <AD03> { [ p, P, ampersand, section ] }; // p P & §
On écrit un fichier XkeyboardConfig associant la touch « scroll » au symbole « & » :
root@laptop # cat > /usr/share/X11/xkb/symbols/perso
partial alphanumeric_keys
xkb_symbols "scroll" {
// Scroll key
key <SCLK> { [ ampersand ] } ; // &
};
On ajoute, sous le nom perso:scroll, le block xkb_symbols "scroll" du fichier /usr/share/X11/xkb/symbols/perso (+perso(scroll)) à la liste des options (! option = symbols).
Cette opération sera à refaire à chaque réinstallation/mise à jour du paquet xkeyboard-config.
root@laptop # cp /usr/share/X11/xkb/rules/evdev /tmp
root@laptop # vim /usr/share/X11/xkb/rules/evdev
root@laptop # diff -Naur /tmp/evdev /usr/share/X11/xkb/rules/evdev
--- /tmp/evdev 2016-07-28 22:37:10.486058981 +0200
+++ /usr/share/X11/xkb/rules/evdev 2016-07-28 22:37:31.436363836 +0200
@@ -958,6 +958,7 @@
* misc:typo = +typo(base):4
! option = symbols
+ perso:scroll = +perso(scroll)
grp:shift_toggle = +group(shifts_toggle)
altwin:menu = +altwin(menu)
altwin:meta_alt = +altwin(meta_alt)
Il semble que, sous X11 (que je n’utilise pas ; j’utilise gnome-wayland), il soit aussi demandé de modifier le fichier evdev.lst pour ajouter une description à « perso » et « perso:scroll ».
J’ai aussi du modifier les fichiers /usr/share/X11/xkb/rules/base{,.lst} pour que l’option « perso:scroll » soit affiché par localectl list-x11-keymap-options.
J’ai ensuite supprimé ces modifications voyant qu’elle était inutile sous gnome-wayland.
Si vous êtes sous X11 essayer :
max@laptop % localectl
…
VC Keymap: fr
X11 Layout: fr
X11 Variant: bepo
max@laptop % localectl list-x11-keymap-options | grep -i perso
perso:scroll
max@laptop % localectl set-x11-keymap fr '' bepo 'perso:scroll'
max@laptop % localectl
…
VC Keymap: fr
X11 Layout: fr
X11 Variant: bepo
X11 Options: perso:scroll
La commande suivante permet d’activer « perso:scroll » sous gnome-wayland, l’effet est immédiat.
max@laptop % dconf dump /org/gnome/desktop/input-sources/
[/]
current=uint32 1
sources=[('xkb', 'fr+bepo'), ('xkb', 'fr+oss')]
xkb-options=['terminate:ctrl_alt_bksp']
max@laptop % gsettings get org.gnome.desktop.input-sources xkb-options
['terminate:ctrl_alt_bksp']
max@laptop % gsettings set org.gnome.desktop.input-sources xkb-options "['terminate:ctrl_alt_bksp', 'perso:scroll']"
Sources :