Dos teclados en una computadora. Cuando escribo con AI quiero un diseño de teclado estadounidense, cuando uso BI quiero sueco. ¿Posible?

47

Tengo una computadora portátil con la que uso un teclado externo. Cuando escribo usando el teclado externo, quiero usar una distribución de teclado de EE. UU., Ya que ese es el tipo de teclado externo que tengo. Por otro lado, cuando escribo usando el teclado integrado, me gustaría usar un diseño sueco.

es posible? ¿Y cómo voy a hacerlo?

Estoy preguntando aquí porque creo que encontraremos la mayor experiencia en Linux aquí.

Eliminado
fuente

Respuestas:

41

Primero, debe buscar la ID del dispositivo del teclado para cambiar:

$ xinput -list | grep -i key
⎣ Virtual core keyboard                     id=3    [master keyboard (2)]
    ↳ Virtual core XTEST keyboard               id=5    [slave  keyboard (3)]
    ↳ Power Button                              id=6    [slave  keyboard (3)]
    ↳ Power Button                              id=7    [slave  keyboard (3)]
    ↳ LITEON Technology USB Keyboard            id=9    [slave  keyboard (3)]
    ↳ LITEON Technology USB Keyboard            id=10   [slave  keyboard (3)]

Luego cambie el diseño usando setxkbmap:

$ setxkbmap -device 9 dvorak

Algunas versiones de setxkbmap necesitan un argumento '-layout':

$ setxkbmap -device 9 -layout dvorak
flicken
fuente
Hola, hice esto y funciona muy bien para todo excepto las teclas de flecha y otras teclas direccionales (que ya no funcionan en absoluto). Podría ser que el teclado sea uno de esos ergonómicos que tengan asignaciones de teclas originales ... ¿alguna idea de cómo hacer que funcionen nuevamente?
btelles el
8
Entonces, ¿cuál es la mejor manera de establecer esta configuración en el arranque en lugar de tener que invocar manualmente setxkbmap?
Richard Turner
9

Puedo decir positivamente que lo que quieres hacer es realmente posible. Logré el escenario especificado por primera

sudo cat /dev/input/event(0,1,2..)

mientras escribe en cada teclado para asegurarse de que sean reconocidos como dispositivos separados. Luego simplemente apliqué prueba y error, experimentando con

setxkbmap -device (1-x) us.

Descubrí que setxkbmap -device 1 usconfiguró ambos (todos) los teclados, mientras que setxkbmap -device 6 ussolo afectaba al secundario. Quizás sea relevante que ambos estuvieran conectados a través de PS / 2.

Por supuesto, esto no garantiza que funcione para usted, y ni siquiera se clasifica como una respuesta adecuada, pero confirma que es posible. No sé según el esquema en el que se nombran los teclados individuales /dev/input, pero estoy seguro de que los nombres se pueden especificar en udev, lo que hace posible poner el setxkbmapcomando apropiado /etc/rc.localo similar.

Arkenklo
fuente
9

Aunque esta pregunta es un poco antigua, pensé en compartir mi solución, ya que ninguna de las otras respuestas abordaba cómo hacer que esto funcione en el arranque.

Mi situación: tengo un teclado Happy Hacking que se conecta a través de un usb que tiene teclas movidas (controla dónde está el bloqueo de mayúsculas, etc.). Lo uso la mayor parte del tiempo, pero a veces me gustaría usar el teclado estándar para computadora portátil u otro teclado usb. Para estos teclados, creé un diseño de teclado personalizado.

El truco es que el diseño del teclado personalizado no debe aplicarse al teclado Happy Hacking.

Solución: creé un archivo de configuración de Xorg como tal:

$ cat /etc/X11/xorg.conf.d/30-keyboard.conf 
Section "InputClass"
        Identifier "Happily Hacked Keyboard"
        MatchDevicePath "/dev/input/event*"
        MatchIsKeyboard "on"
        Driver "evdev"

        Option "XkbLayout" "us"
        Option "XkbVariant" "hhk"
EndSection

Section "InputClass"
        Identifier "Happy Hacking Keyboard"
        MatchIsKeyboard "on"
        MatchVendor "Topre_Corporation"
        Driver "evdev"

        Option "XkbLayout" "us"
        Option "XkbVariant" "basic"
EndSection

La primera parte básicamente dice que para cualquier teclado estándar, aplique el diseño de EE. UU. Con la variante personalizada. La segunda parte dice que para el teclado de pirateo feliz, use el diseño de EE. UU. Con la variante básica.

Puede hacer coincidir dispositivos en función de varios parámetros: xorg doc

zanegray
fuente
su respuesta tardía tal vez merezca un comentario tardío ... tiene un identificador como "Happy Hacking Kbd" en ambos ... Creo que eso es probablemente un error, el primer identificador de InputClass probablemente debería ser "Teclado genérico"
Daniel
1
@Daniel Los identificadores son realmente diferentes, "Teclado felizmente pirateado" frente a "Teclado feliz pirateado", pero solo un poco :)
zanegray
gracias por lo correcto! ... culpo a mis lentes de mala lectura:)> v
Daniel
... pero esto (para que el teclado funcione en gran medida, ¡también son posibles diferentes diseños múltiples para recorrer! !, como nosotros, ru, ua en uno y de, cz, ua en el segundo teclado) cambio para mí de alguna manera maté el botón central del mouse de mi mouse USB externo. Hay que buscar cuál es la interferencia ...
Golar Ramblar
Me encantaría si esta solución me funcionó, pero no funciona, tal vez porque no puedo obtener la identificación del proveedor, ¿verdad? El comando "lsusb -v | grep -e idVendor" me dio "0x09da A4Tech Co., Ltd." así que también probé varias opciones (sin código hexadecimal, guión bajo en lugar de espacio, etc.). Luego probé la identificación del proveedor obtenida a través de "xinput list" y "udevadm info" (A4TECH). Incluso cambié el número 30 a 50 también porque tengo un archivo "/usr/share/X11/xorg.conf.d/40-libinput.conf" que incluye una configuración de teclado global. Pero no pude llegar a ninguna parte. Alguna idea por favor? (Ubuntu 18.04)
Sadi
5

Podría ser posible, a juzgar por el argumento -device para setxkbmap:

       dispositivo de dispositivo
               Especifica la identificación del dispositivo numérico del dispositivo de entrada a ser
               actualizado con la nueva distribución del teclado. Si no se especifica, el
               Se actualiza el dispositivo de teclado central del servidor X.

Naturalmente, sin embargo, no tengo un segundo teclado para probarlo en este momento.

-Un usuario de Dvorak

Tommy McGuire
fuente
Hmph -dispositivo 0 cambia ambos, -dispositivo 2 (debería ser el teclado integrado según la respuesta de Arkenklo) no cambia nada, al menos en mi computadora portátil y teclado USB.
Tommy McGuire
1

No creo que puedas hacer esto exactamente como quieres. Hay dos opciones que conozco:

1) Puede hacer cambiar un simple clic del mouse / pulsación de tecla.

Con Ubuntu / GNOME:

Click del raton

En Ubuntu / Gnome, siempre que tenga su configuración de diseños de entrada, vaya a un lugar vacío en su panel, haga clic derecho y haga clic en 'Agregar al panel'. Seleccione 'Indicador de teclado' para agregar esto al panel. Eso debería ingresar un pequeño trozo de texto que indica la distribución de su teclado y puede hacer clic para cambiar.

Atajo de teclado

Sistema -> Preferencias -> Teclado -> Diseños -> Opciones de diseño

Hay una opción allí "Clave (s) para cambiar el diseño". Puede configurarlo en Alt + Shift, lo que no debería alterar ningún atajo de teclado normal.

Supongo que hay una forma de KDE de hacer eso también.

2) La otra alternativa es http://en.wikipedia.org/wiki/Xneur , pero no estoy seguro de si está disponible para sueco y puede que no sea posible para idiomas que tienen construcciones similares al inglés.

Phil
fuente