udev regra para mapear ponto para ctrl-enter

4

Eu preciso remapear a chave com o scancode 070037 para a esquerda ctrl + enter. Até agora eu consegui remapeando-o para entrar, criando um arquivo 90-custom-presenter.hwdb com o seguinte conteúdo.

# Logitech Presenter
keyboard:usb:b0003v046DpC515*
 KEYBOARD_KEY_070037=enter

Eu assumo que isto está correto porque o lsusb me dá

Bus 003 Device 018: ID 046d:c515 Logitech, Inc. Cordless 2.4 GHz Presenter Presentation remote control

e evtest confirma que o scancode que estou procurando é 70037

Event: time 1521756520.173637, type 4 (EV_MSC), code 4 (MSC_SCAN), value 70037
Event: time 1521756520.173637, type 1 (EV_KEY), code 52 (KEY_DOT), value 1
Event: time 1521756520.173637, -------------- SYN_REPORT ------------
Event: time 1521756520.277633, type 4 (EV_MSC), code 4 (MSC_SCAN), value 70037
Event: time 1521756520.277633, type 1 (EV_KEY), code 52 (KEY_DOT), value 0
Event: time 1521756520.277633, -------------- SYN_REPORT ------------

Depois de executar udevadm hwdb --update como root, eu esperaria que isso mapeasse a antiga tecla "dot" para entrar, mas isso não acontece. Isso levanta duas questões:

  1. Por que isso não mapeia como esperado?
  2. Depois de funcionar como esperado, como posso mapear isso para ctrl-enter?

Estou executando o Ubuntu 14.04 LTS.

    
por Udo Klein 22.03.2018 / 23:10

1 resposta

2

Você não identificou sua distribuição Linux, que pode ou não usar a mesma versão do udev que o meu Debian 9, portanto, isso pode ou não se aplicar ao seu sistema.

No meu sistema, /lib/udev/hwdb.d/60-keyboard.hwdb tem alguns comentários informativos:

# Note: The format of the "evdev:" prefix match key is a
# contract between the rules file and the hardware data, it might
# change in later revisions to support more or better matches, it
# is not necessarily expected to be a stable ABI.
#
# Supported hardware matches are:
#  - Generic input devices match:
#      evdev:input:bZZZZvYYYYpXXXXeWWWW-VVVV
...

Não há menção de uma correspondência de hardware keyboard:usb na lista.

Portanto, a menos que você tenha documentação específica para sua distribuição e versão do Linux para informar o contrário, ou os arquivos .hwdb padrão do sistema usam a sintaxe keyboard:usb , tente substituir seu keyboard:usb:b0003v046DpC515* por:

evdev:input:b0003v046DpC515*

O problema com a criação da tecla "ponto" do apresentador para Control + Enter é que o arquivo .hwdb só pode mapear um scancode para um código-chave (único). Não é possível inserir uma sequência de códigos-chave. Para mapear uma chave para Control + Enter nesse estágio, você teria que inserir um evento extra além de modificar o evento de chave real e fazer a mesma coisa com o evento de liberação de chave correspondente.

Seu ambiente de área de trabalho pode incluir um recurso de mapeamento / mapeamento de teclado mais versátil, que pode atender melhor às suas necessidades. Você pode ter que primeiro usar as regras do hwdb para mapear a chave do apresentador para algum código-chave de outra forma não utilizado e, em seguida, o recurso do ambiente de área de trabalho para mapear esse código-chave para Control + Enter.

    
por 23.03.2018 / 07:27