Descobrir o código de acesso emitido para Fn + F6

3

No meu Lenovo IdeaPad Yoga 2 Pro no Windows, existe uma função disponível Fn + F6 que deve ativar e desativar o touchpad (Eu gostaria de mapear a chave correta para o script aqui no askubuntu ).

Mas no Linux, não funciona.

Como posso descobrir o código de evento que ele emite quando pressiono essa combinação?

Eu tentei showkey -a , showkey -k e xev que mostram a maioria dos códigos de teclas quando pressionados, mas em Fn + F6 eles ficam quietos. A outra saída mostra Fn + F1-F5 , apenas F6 , embora funcione no Windows. Quais outras alternativas estão lá para xev e showkey ?

A única dica que encontrei até agora é:

grep TOUCHPAD /usr/include/linux/input.h

#define KEY_TOUCHPAD_TOGGLE 0x212   /* Request switch touchpad on or off */
#define KEY_TOUCHPAD_ON     0x213
#define KEY_TOUCHPAD_OFF    0x214

fonte: comente em link com link para este artigo

Talvez alguém tenha uma ideia?

    
por rubo77 18.04.2014 / 23:18

3 respostas

4

Quando executo xev ou showkey , consigo obter códigos de teclas para Fn + F6

.

Exemplo

Quando uso showkey -k , recebo o seguinte em um laptop Thinkpad T410.

$ sudo showkey -k 
kb mode was ?UNKNOWN?
[ if you are trying this under X, it might not work
since the X server is also reading /dev/console ]

press any key (program terminates 10s after last keypress)...
keycode  28 release
keycode 143 press                   <--- Fn press + release
keycode 143 release
^[[17~keycode  64 press             <--- F6 press + release
keycode  64 release
keycode 212 press                   <--- Fn + F6 press + release
keycode 212 release
keycode  29 press                   <--- Ctrl + C press + release
^Ccaught signal 2, cleaning up...

Talvez não seja compatível?

Eu encontrei este wiki do Arch Linux intitulado: Lenovo Ideapad Yoga 2 Pro , que parece estar mostrando que esta chave não está sendo mapeada diretamente. Continuaremos cavando, mas pensei em adicionar essa informação aqui também.

trecho

Keyboard special keys

BIOS has a setting to flip the behavior of the FN key.

  fn+F1   XF86AudioMute
  fn+F2   XF86AudioLowerVolume
  fn+F3   XF86AudioRaiseVolume
  fn+F4   Alt_L+<F4>
  fn+F5   <F5>
  fn+F6   n/a
  fn+F7   n/a
  fn+F8   Alt_L+Tab
  fn+F9   n/a?
  fn+F10  super_L+p
  fn+F11  XF86MonBrightnessDown
  fn+F12  XF86MonBrightnessUp

Use o módulo ideapad_laptop modificado?

Eu encontrei esta página intitulada: Lenovo IdeaPad Yoga 2 Pro no Wiki do LinLap. O artigo discute uma versão corrigida do módulo ideapad_laptop , que pode resolver seus problemas com certas teclas que não funcionam.

trecho

Blacklist ideapad_laptop to get it to work, by adding blacklist ideapad_laptop to /etc/modprobe.d/blacklist.conf. The patched ideapad_laptop module available from https://github.com/pfps/yoga-laptop in the yoga_laptop directory makes wireless work correctly and also handles the Airplane Mode key.

O README para este módulo corrigido também teve isto a dizer sobre a chave F6 :

Disable Touchpad (F6) produces scan codes that are not recognized. This can be fixed manually by sudo setkeycodes e03f 191 and then setting XF86TouchPadToggle to trigger a script to toggle the state of the touchpad. Pause and Break produce the same character. This can be fixed by sudo setkeycodes e046 194; xmodmap -e "keycode 202 = Break". A better way to do this is via udev rules - see the yoga_laptop/README for more information.

Referências

por 19.04.2014 / 01:42
1

link tem algumas dicas para solucionar esses problemas de teclado:

instale

sudo apt-get install evtest

e execute

sudo evtest

selecione 3 para

/dev/input/event3:  AT Translated Set 2 keyboard

e você verá algo como

Event: time 1397868878.732211, -------------- SYN_REPORT ------------
Event: time 1397868878.915728, type 4 (EV_MSC), code 4 (MSC_SCAN), value bf
    
por 19.04.2014 / 02:56
1

Na minha caixa (Lenovo Yoga 900 13ISK2) sempre que eu pressionar o Fn F6, posso ver a seguinte saída em dmesg :

[20468.127492] atkbd serio0: Unknown key pressed (translated set 2, code 0xbf on isa0060/serio0). [20468.127504] atkbd serio0: Use 'setkeycodes e03f <keycode>' to make it known.

Estou usando a compilação do kernel 4.8 da árvore de fontes do git. Em include/uapi/linux/input-event-codes.h , vejo:

#define KEY_TOUCHPAD_TOGGLE 0x212   /* Request switch touchpad on or off */

Então eu fiz setkeycodes e03f 530 . Depois disso, dmesg não mostrou mais a mensagem, mas pressionar a tecla não ligou / desligou o touchpad.

Outro fato interessante: quando eu viro a tela para "modo tablet", consigo a mesma mensagem em dmesg , então parece que o BIOS está enviando o mesmo evento que pressionar Fn F6. Infelizmente isso só acontece depois de eu virar a tela completamente e não depois de ter ultrapassado 190º.

    
por 11.11.2016 / 05:45