Tengo un archivo llamado ~ / .speedswapper que contiene lo siguiente:
! Swap caps lock and escape
remove Lock = Caps_Lock
keysym Escape = Caps_Lock
keysym Caps_Lock = Escape
add Lock = Caps_Lock
... cuando corro xmodmap ~/.speedswapper
, esto cambia las teclas escy Caps Lock. Tengo esta línea en mi ~ / .profile, por lo que cada vez que inicio sesión estas teclas se cambian.
Sin embargo , si conecto un teclado USB externo, esta configuración no parece persistir. El teclado de mi computadora portátil funciona perfectamente bien, pero tengo que ejecutar el comando nuevamente para que el teclado externo cambie las dos teclas. Afortunadamente, hacerlo no parece afectar el teclado de mi computadora portátil, parecen sincronizarse.
Una solución sería encontrar alguna forma de ejecutar ese comando xmodmap cada vez que se conecta un teclado externo, pero estaría abierto a otra solución de intercambio de teclas, si fuera más robusto. El sistema operativo es Ubuntu 13.04.
Dado el comentario de justbrowsing, parece que esto se puede lograr escribiendo una regla udev: creo que tengo que usar la opción EJECUTAR y que debe activarse en / dev / hidraw0 o / dev / hidraw1, que son los dispositivos que aparece cuando conecto mi teclado ... pero todavía estoy tratando de entender el concepto, así que agradecería cualquier ayuda de alguien que sepa lo que está haciendo con udev.
Respuestas:
Dado que tiene este comando en su
~/.profile
, solo se ejecutará una vez, cuando inicie sesión. Una solución no muy elegante sería colocar el comando en su~/.bashrc
lugar para que se ejecute cada vez que abra un terminal.Una mejor solución sería definir una
udev
regla que se ejecutexmodmap
cuando se inserte su teclado USB (estoy usando los valores devueltos para mi teclado USB, deberá editar esta solución para que se ajuste al suyo):Obtenga los detalles de su teclado USB. Ejecute este comando con el teclado enchufado:
Para escribir
udev
reglas, necesita saber con qué deben coincidir. Puede obtenerlo buscando en la salida deudevadm info --export-db
laevent6
entrada, o simplemente analizarla directamente así:Eso devuelve varias líneas de texto, incluidas las que usaremos:
udev
se complica al usar programas X comoxmodmap
, ni siquiera pude hacerlo funcionar al exportar$DISPLAY
y$XAUTHORITY
. De todos modos, no pude hacerlo funcionar con su método, por lo que mi solución usa en sukeymap
lugar. Primero, deberá encontrar los códigos clave para Escy Caps Lock, puede hacerlo ejecutandoy luego presionando las teclas relevantes. En mi sistema, esto devuelve:
Cree una nueva regla de mapa de teclas que contenga estas líneas:
y guardarlo como
/lib/udev/keymaps/speedswap
.Define una nueva
udev
regla. Cree un archivo llamado/etc/udev/rules.d/95-speedswap.rules
y agregue estas líneas:Eso debería hacerlo, al menos en mi sistema, enchufar mi USB externo hace Escque actúe como Caps Locky viceversa .
fuente
udevadm info --export-db
con algunos teclados y ver qué tienen en común. QuizásID_MODEL=USB_Keykoard
oID_USB_DRIVER=usbhid
eso también podría desencadenar la regla con el dispositivo incorrecto. Depende de usted.