Dois teclados em um computador. Quando escrevo com AI, quero um layout de teclado americano, quando uso BI, quero sueco. Possível?


47

Eu tenho um laptop com o qual uso um teclado externo. Quando digito usando o teclado externo, quero usar um layout de teclado americano, pois esse é o tipo de teclado externo que tenho. Por outro lado, quando digito usando o teclado integrado, gostaria de usar um layout sueco.

Isso é possível? E como eu faria isso?

Estou perguntando aqui, pois acho que vamos encontrar a maioria dos conhecimentos sobre Linux aqui.

Respostas:


41

Primeiro, você precisa encontrar o ID do dispositivo do teclado para alterar:

$ 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)]

Em seguida, altere o layout usando setxkbmap:

$ setxkbmap -device 9 dvorak

Algumas versões do setxkbmap precisam de um argumento '-layout':

$ setxkbmap -device 9 -layout dvorak

Olá, fiz isso e funciona muito bem para tudo, exceto as teclas de seta e outras teclas direcionais (que não funcionam mais). Pode ser que o teclado seja um daqueles ergonômicos que possuem mapeamentos de teclas descolados ... alguma idéia de como fazê-los funcionar novamente?
btelles

8
Então, qual é a melhor maneira de definir essa configuração na inicialização, em vez de precisar invocar manualmente o setxkbmap?
Richard Turner

9

Posso dizer positivamente que o que você quer fazer é realmente possível. Atingi o cenário especificado pela primeira vez

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

enquanto digita em cada teclado para garantir que eles sejam reconhecidos como dispositivos separados. Simplesmente apliquei tentativa e erro, experimentando

setxkbmap -device (1-x) us.

Eu descobri que setxkbmap -device 1 usconfigurou os dois teclados, enquanto setxkbmap -device 6 usafetava apenas o secundário. Talvez seja relevante que os dois estivessem conectados via PS / 2.

Obviamente, isso não garante que funcione para você e nem sequer é classificado como uma resposta adequada, mas confirma que é possível. Não sei de acordo com qual esquema os teclados individuais são nomeados /dev/input, mas tenho certeza de que os nomes podem ser especificados no udev, tornando possível colocar o setxkbmapcomando apropriado /etc/rc.localou semelhante.


9

Embora essa pergunta seja um pouco antiga, pensei em compartilhar minha solução, pois nenhuma das outras respostas abordava como ter esse trabalho na inicialização.

Minha situação: Eu tenho um teclado Happy Hacking que se conecta via usb com chaves movidas (controle onde está o caps lock, etc.). Eu uso isso na maioria das vezes, mas às vezes eu gostaria de usar o teclado de laptop padrão ou outro teclado USB. Para esses teclados, criei um layout de teclado personalizado.

O truque é que o layout do teclado personalizado não deve ser aplicado ao teclado Happy Hacking.

Solução: Criei um arquivo de configuração do 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

A primeira parte diz basicamente para qualquer teclado padrão, aplique o layout dos EUA com a variante personalizada. A segunda parte diz que, para o feliz teclado de hackers, use o layout dos EUA com a variante básica.

Você pode combinar dispositivos com base em vários parâmetros: xorg doc


a sua resposta final talvez merece um comentário tarde ... você tem identificador como "Happy Hacking Kbd" em ambos ... Eu acho que é provavelmente um erro, o primeiro identificador InputClass provavelmente deve ser "Teclado Genérico"
Daniel

1
@ Daniel Os identificadores são realmente diferentes, "Happily Hacked Keyboard" vs "Happy Hacking teclado", mas apenas ligeiramente :)
zanegray

obrigado pelo correto! ... Eu culpo meus maus óculos de leitura:)> v
Daniel

... mas isso (para que o teclado funcione bastante, também são possíveis vários layouts diferentes para percorrer!), como nós, ru, ua em um e de, cz, ua no segundo teclado), para mim, de alguma forma, acabei com o botão do meio do mouse do meu mouse USB externo. Tenho que procurar o que é a interferência ...
Golar Ramblar

Eu adoraria que essa solução funcionasse para mim, mas não está funcionando - talvez porque não consiga obter o ID do fornecedor certo? O comando "lsusb -v | grep -e idVendor" me deu "0x09da A4Tech Co., Ltd." então eu também tentei várias opções (sem código hexadecimal, sublinhado em vez de espaço etc.). Depois, tentei o ID do fornecedor obtido através da "lista xinput" e "udevadm info" (A4TECH). Mudei até o número 30 para 50 também porque tenho um arquivo "/usr/share/X11/xorg.conf.d/40-libinput.conf", incluindo uma configuração global de teclado. Mas não consegui chegar a lugar nenhum. Alguma idéia por favor? (Ubuntu 18.04)
Sadi

5

Pode ser possível, julgando pelo argumento -device, para setxkbmap:

       dispositivo
               Especifica o ID do dispositivo numérico do dispositivo de entrada a ser
               atualizado com o novo layout do teclado. Se não especificado, o
               o dispositivo de teclado principal do servidor X é atualizado.

Naturalmente, no entanto, não tenho um segundo teclado para experimentá-lo no momento.

-Um usuário Dvorak


Hmph. O dispositivo 0 alterna os dois, o dispositivo 2 (deve ser o teclado integrado pela resposta de Arkenklo) não muda nada, pelo menos no meu laptop e teclado USB.
Tommy McGuire

1

Eu não acho que você pode fazer isso exatamente do jeito que você quiser. Existem duas opções que eu conheço:

1) Você pode alterar um simples clique / pressionamento de tecla do mouse.

Com o Ubuntu / GNOME:

Clique do mouse

No Ubuntu / Gnome, desde que você tenha os layouts de entrada configurados, vá para um local vazio no painel, clique com o botão direito do mouse e clique em 'Adicionar ao painel'. Selecione 'Indicador do teclado' para adicionar isso ao painel. Isso deve inserir um pequeno pedaço de texto indicando o layout do teclado e você pode clicar aqui para alternar.

Atalho do teclado

Sistema -> Preferências -> Teclado -> Layouts -> Opções de Layout

Existe uma opção lá "Tecla (s) para alterar o layout". Você pode configurá-lo para Alt + Shift, o que não deve perturbar nenhum atalho de teclado normal.

Eu presumo que existe uma maneira do KDE de fazer isso também.

2) A outra alternativa é http://en.wikipedia.org/wiki/Xneur , mas não tenho certeza se isso está disponível para o sueco e pode não ser possível para idiomas com construções semelhantes ao inglês.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.