GNU/Linux >> Tutoriels Linux >  >> Linux

Règle udev pour charger automatiquement la disposition du clavier lorsque le clavier USB est branché

J'ai trouvé un moyen de contourner ce problème, même si c'est un peu hacky.

Je suis arrivé au même point aujourd'hui en essayant de configurer deux claviers avec udev, setxkbmap et xinput --list et pour qu'ils fonctionnent avec le hotplug usb. J'échange les touches, sans changer la disposition, mais c'est tout de même, une fois que vous avez identifié votre clavier sur un hotplug et que vous pouvez appeler setxkbmap de manière conditionnelle, vous devriez pouvoir définir la langue du clavier que vous avez spécifié . La liste des dispositions de clavier peut être trouvée ici ls -l /usr/share/kbd/keymaps/i386/ et vous pouvez trouver le nom de votre appareil à utiliser avec xinput -list .

  1. Vous voudrez remplacer rizumu avec votre nom d'utilisateur, car j'ai trouvé qu'il n'était pas possible de le faire sans être explicite.
  2. Assurez-vous de grep sur le your nom du clavier.
  3. Utilisez lsusb pour découvrir l'ID matériel que vous devez définir dans la règle udev. Mon clavier das ressemble à ceci Bus 002 Device 009: ID 04d9:2013 Holtek Semiconductor, Inc.

J'ai d'abord configuré la règle udev pour détecter automatiquement le clavier en créant une règle udev :

Dans le fichier /etc/udev/rules.d/00-usb-keyboards.rules :

ACTION=="add", ATTRS{idVendor}=="04d9", ATTRS{idProduct}=="2013", RUN+="/home/rizumu/bin/kbd_udev", OWNER="rizumu"

J'ai deux fichiers ~/bin/kbd et ~/bin/kbd_udev. Assurez-vous qu'ils disposent des autorisations appropriées chmod 755 ~/bin/kbd*

Le ~/bin/kbd_udev le script contient :

#!/bin/bash
/home/rizumu/bin/kbd &

Et vous remarquerez qu'il ne fait qu'appeler ~/bin/kbd en arrière-plan, afin qu'udev puisse terminer son processus et activer le clavier. À l'intérieur du ~/bin/kbd script, nous dormons une seconde, car nous devons attendre que le clavier soit activé pour pouvoir obtenir l'identifiant de l'appareil à l'aide de xinput. Pour y parvenir, j'ai défini certaines variables et les ai exportées afin que xinput setxkbmap puisse faire son travail :DISPLAY , XAUTHORITY , HOME , et un daskb_id pour l'identifiant de mon daskeyboard :

#!/bin/bash
sleep 1
DISPLAY=":0.0"
HOME=/home/rizumu/
XAUTHORITY=$HOME/.Xauthority
export DISPLAY XAUTHORITY HOME
daskb_id=`xinput -list | grep -i 'daskeyboard' | grep -o id=[0-9]. | grep -o [0-9]. | head -1`

xset r rate 200 30
setxkbmap -layout colemak
setxkbmap -option ctrl:nocaps
if [ "${daskb_id}" ]; then
    setxkbmap -device "${daskb_id}" -option altwin:swap_lalt_lwin
fi

Selon votre distribution, vous avez peut-être déjà une règle udev pour les claviers dans /lib/udev/rules.d/64-xorg-xkb.rules. Sur Ubuntu, cela importe /etc/default/keyboard, qui a des options à peu près comme ceci :

XKBMODEL="pc105"
XKBLAYOUT="us"
XKBVARIANT=""
XKBOPTIONS=""

Pour ma configuration, j'ai constaté que cette règle intégrée s'exécutait après ma règle udev personnalisée et remplaçait mes paramètres. Au lieu de cela, j'ai changé XKBOPTIONS dans /etc/default/keyboard pour être :

XKBOPTIONS="-option ctrl:nocaps"

Pour obtenir le comportement "Caps Lock is Control" que je voulais sur tous les claviers.


Si vous utilisez GNOME, vous devrez désactiver son plug-in de gestion du clavier afin qu'il ne remplace pas vos modifications de mise en page.

gconftool-2 --toggle /apps/gnome_settings_daemon/plugins/keyboard/active

Exécutez à nouveau la même commande pour l'activer comme vous le souhaitez.


Linux
  1. 4 façons utiles de connaître le nom du périphérique USB branché sous Linux

  2. Modification de la langue et de la disposition du clavier sur diverses distributions

  3. Linux :changer la disposition du clavier à la volée

  4. Utilisation des règles udev pour exécuter un script sur l'insertion USB

  5. Comment changer la disposition du clavier dans i3 ?

Désactivation automatique du pavé tactile lorsque la souris est connectée à GNOME

Corriger la mauvaise disposition du clavier dans Ubuntu

Appeler Notify-send à partir d'une règle Udev ?

Disposition du clavier Xéphyr

Modifier la disposition du clavier de GRUB à l'étape 1

Règle Udev pour correspondre à un périphérique USB à plusieurs nœuds