remapear CapsLock para Control ao usar um adaptador PS2 para USB?

1

A configuração: Estou tentando remapear a tecla CapsLock para Control ao usar meu teclado Modelo M (com trackpoint) com um adaptador PS2 para USB.

O problema: se a tecla de controle agora remapeada permanecer pressionada por mais de meio segundo, parará de modificar os caracteres subsequentes. Isto é, se eu pressionar o controle, pressione e solte x, espere meio segundo, pressione e solte c, eu recebo control-x c ao invés de control-x control-c. Você pode imaginar que isso pode ser um problema para um usuário do emacs e bash!

Este problema não se manifesta com teclados USB comuns, com teclados embutidos no laptop, no Windows, ou se eu não remapear o capslock para controle.

Eu usei as Configurações do sistema > Dispositivos de entrada > Teclado no Kubuntu para fazer o remapeamento, e também fiz o xmodmap direto. Mesmo comportamento. Como setkeycodes não tem efeito nos teclados usb, não posso usar isso.

Soluções alternativas em que não estou interessado:

  • Use um teclado USB Unicomp. Enquanto o mecanismo de mola de flambagem é idêntico ao IBM / Lexmark, a qualidade do trackpoint é inferior, tornando-o praticamente inutilizável. As teclas do mouse também não são confiáveis. Pena, porque essa teria sido a solução certa. Além disso, eles mudaram o fator de forma para algo feio.
  • Use um teclado de mola sem flambagem. Obviamente não é uma opção!
  • Não remapeie as chaves. Contra minha religião.
  • Solte o Linux e use o Windows (onde o problema não existe). Também contra a minha religião.
  • Solte o Linux e use o OSX. O OSX tem o mesmo problema, mais é contra a minha religião.

A solução que considero é a criação de um dos link e o remapeamento dessa maneira, mas é um pouco extremo. Eu prefiro fazer isso em software.

    
por JayEye 16.05.2015 / 17:07

2 respostas

0

Você pode resolver o problema descobrindo as respectivas identidades do PS / 2 - > Adaptador USB e o teclado.

Experimente o comando

    lsusb

Para mim, mostrou, entre outras coisas, que existe um

Barramento 001 Dispositivo 018: ID 04d9: 1400 Holtek Semiconductor, Inc. Teclado PS / 2 + controlador de mouse

A primeira parte do código de identidade USB (04d9) identifica o fabricante e o segundo o produto.

Agora você pode usar essas informações para descobrir as identidades dos dispositivos conectados a esse adaptador, digitando

    xinput list --long | grep 04d9

O que eu consegui foi

↳ HID 04d9: 1400 id = 9 [ponteiro do escravo (2)]

↳ HID 04d9: 1400 id = 8 [teclado escravo (3)]

Não tenho teclado conectado ao adaptador, mas há o meu mouse trackball antigo, o Logitech TrackMan Marble FX.

Então, eu queria saber mais sobre o dispositivo identificado acima como id = 9 e usei o comando xinput para conseguir o que queria:

    xinput list-props 9

A primeira linha da listagem foi

Dispositivo 'HID 04d9: 1400':

A listagem também mostra as propriedades do dispositivo e usei-as para criar comandos necessários para modificar essas propriedades. O que eu terminei foram dois comandos:

    xinput set-int-prop "pointer:HID 04d9:1400" "Evdev Wheel Emulation Button" 8 3

    xinput set-int-prop "pointer:HID 04d9:1400" "Evdev Wheel Emulation" 8 1

A primeira linha ativa o botão 3 do mouse TrackMan em um botão de emulação de roda. (O botão 4 a.k.a. "8" parece não funcionar de todo). "Ponteiro" nos comandos refere-se ao mouse e evita confusões com "teclado" que pode ser anexado ao mesmo adaptador (não no meu sistema).

Da mesma forma, talvez você possa modificar as propriedades do seu teclado com comandos como

    xinput set-int-prop "keyboard:HID (keyboard usb-identifier) (property to be set)

    etc with other individual properties
    
por Jorma 21.03.2018 / 07:18
0

Isso acabou sendo um problema de hardware. Em algum momento, percebeu-se que um adaptador PS2-USB diferente não tinha esse problema, mudou para essa marca e o problema resolveu-se.

O dispositivo que funciona bem é feito (reempacotado, na verdade) pela Belkin e se identifica como

ID 0d3d:0001 Tangtop Technology Co., Ltd HID Keyboard

(Sim, diz apenas "teclado", mas lsusb -v mostra que tem um descritor de teclado e mouse, obviamente).

    
por JayEye 23.03.2018 / 15:38