GNU/Linux >> Linux Esercitazione >  >> Linux

regola udev per caricare automaticamente il layout della tastiera quando la tastiera USB è collegata

Ho trovato un modo per aggirare questo problema, anche se è un po' confuso.

Oggi sono arrivato allo stesso punto esatto nel tentativo di configurare due tastiere con udev, setxkbmap e xinput --list e farle funzionare con l'hotplugging USB. Sto scambiando i tasti, non cambiando il layout, ma è lo stesso, una volta che hai identificato la tua tastiera su un hotplug e puoi chiamare in modo condizionale setxkbmap, allora dovresti essere in grado di impostare la lingua solo della tastiera che hai specificato . L'elenco dei layout di tastiera può essere trovato qui ls -l /usr/share/kbd/keymaps/i386/ e puoi trovare il nome del tuo dispositivo in verde con xinput -list .

  1. Ti consigliamo di sostituire rizumu con il tuo nome utente, poiché ho scoperto che non era possibile farlo senza essere espliciti.
  2. Assicurati di afferrare il your nome della tastiera.
  3. Usa lsusb per scoprire l'ID hardware che devi impostare nella regola udev. La mia tastiera das ha questo aspetto Bus 002 Device 009: ID 04d9:2013 Holtek Semiconductor, Inc.

Per prima cosa ho impostato la regola udev per rilevare automaticamente la tastiera creando una regola udev:

Nel file /etc/udev/rules.d/00-usb-keyboards.rules :

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

Ho due file ~/bin/kbd e ~/bin/kbd_udev. Assicurati che abbiano i permessi corretti chmod 755 ~/bin/kbd*

L'~/bin/kbd_udev lo script contiene:

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

E noterai che tutto ciò che fa è chiamare ~/bin/kbd in background, in modo che udev possa completare il suo processo e attivare la tastiera. All'interno del ~/bin/kbd script dormiamo per un secondo, perché dobbiamo aspettare che la tastiera sia attivata in modo da poter ottenere l'id del dispositivo usando xinput. Per raggiungere questo obiettivo ho impostato alcune variabili e le ho esportate in modo che xinput setxkbmap possa fare il loro lavoro:DISPLAY , XAUTHORITY , HOME e un daskb_id per l'id della mia 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

A seconda della tua distribuzione, potresti già avere una regola udev per le tastiere in /lib/udev/rules.d/64-xorg-xkb.rules. Su Ubuntu, questo importa /etc/default/keyboard, che ha opzioni più o meno come questa:

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

Per la mia configurazione, ho scoperto che questa regola integrata veniva eseguita dopo la mia regola udev personalizzata e sovrascriveva le mie impostazioni. Invece ho cambiato XKBOPTIONS in /etc/default/keyboard in:

XKBOPTIONS="-option ctrl:nocaps"

Per ottenere il comportamento "Caps Lock is Control" che volevo su tutte le tastiere.


Se stai utilizzando GNOME, dovrai disabilitare il plug-in per la gestione della tastiera in modo che non sovrascriva le modifiche al layout.

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

Esegui di nuovo lo stesso comando per abilitarlo come desiderato.


Linux
  1. 4 Modo utile per conoscere il nome del dispositivo USB collegato in Linux

  2. Modifica della lingua e del layout della tastiera su varie distribuzioni

  3. Perché la sincronizzazione è così importante quando si crea una chiavetta USB avviabile Linux?

  4. Come ottenere la chiave USB per il montaggio automatico?

  5. Come eseguire uno script quando i dispositivi USB vengono collegati o rimossi utilizzando UDEV

Disattiva automaticamente il touchpad quando il mouse è collegato a GNOME

Correggi il layout della tastiera errato in Ubuntu

Modificare il layout della tastiera in Lightdm?

Regola Udev quando l'unità flash USB è scollegata?

Chiama notifica-invia da una regola Udev?

Cambia il layout della tastiera di GRUB nella fase 1