Comportamento estranho das teclas de função Fn no MSI Creator no Ubuntu 23.04

Comportamento estranho das teclas de função Fn no MSI Creator no Ubuntu 23.04

Atualmente estou tendo problemas com as teclas de função do meu MSI Creator 17 B11UG. As coisas ficaram cada vez piores a cada atualização do Ubuntu (atualmente 23.04) e tenho um interesse particular em fazer a webcam funcionar novamente, já que aparentemente ela ficou presa no "estado de hardware desabilitado". Algumas teclas de função funcionam (mudo, aumentar/diminuir volume, luz do teclado), algumas pararam de funcionar após a atualização, algumas registram erros no dmesg e algumas funcionam, mas não são registradas no showkey -k. A tabela detalhada com a descrição de como as teclas de função se comportam atualmente:

Tabela de descrição de problemas das teclas Fn

Atualização:Inicialmente criei uma tabela de descontos, que parecia muito boa na visualização, mas ficou confusa por algum motivo quando postei, então criei uma imagem.

showkey -kdetecta absolutamente os mesmos códigos se as teclas de função forem pressionadas sozinhas ou junto com a tecla Fn. Também verifiquei as configurações do BIOS e não há nenhuma configuração que altere a forma como as teclas Fn funcionam.

sudo udevadm info /dev/input/by-path/platform-i8042-serio-0-event-kbdme dá esta saída:

P: /devices/platform/i8042/serio0/input/input3/event3
M: event3
R: 3
U: input
D: c 13:67
N: input/event3
L: 0
S: input/by-path/platform-i8042-serio-0-event-kbd
E: DEVPATH=/devices/platform/i8042/serio0/input/input3/event3
E: DEVNAME=/dev/input/event3
E: MAJOR=13
E: MINOR=67
E: SUBSYSTEM=input
E: USEC_INITIALIZED=5374008
E: KEYBOARD_KEY_a0=mute
E: KEYBOARD_KEY_ae=volumedown
E: KEYBOARD_KEY_b0=volumeup
E: KEYBOARD_KEY_b2=www
E: KEYBOARD_KEY_c2=ejectcd
E: KEYBOARD_KEY_df=sleep
E: KEYBOARD_KEY_e2=bluetooth
E: KEYBOARD_KEY_e4=f21
E: KEYBOARD_KEY_ec=email
E: KEYBOARD_KEY_ee=camera
E: KEYBOARD_KEY_f6=wlan
E: KEYBOARD_KEY_f7=brightnessdown
E: KEYBOARD_KEY_f8=brightnessup
E: KEYBOARD_KEY_f9=search
E: ID_INPUT=1
E: ID_INPUT_KEY=1
E: ID_INPUT_KEYBOARD=1
E: ID_BUS=i8042
E: ID_SERIAL=noserial
E: ID_PATH=platform-i8042-serio-0
E: ID_PATH_TAG=platform-i8042-serio-0
E: XKBMODEL=pc105
E: XKBLAYOUT=us,ru
E: XKBVARIANT=,
E: XKBOPTIONS=grp:alt_shift_toggle,lv3:ralt_alt,compose:caps,terminate:ctrl_alt_bksp,grp_led:scroll
E: BACKSPACE=guess
E: LIBINPUT_DEVICE_GROUP=11/1/1:isa0060/serio0
E: DEVLINKS=/dev/input/by-path/platform-i8042-serio-0-event-kbd
E: TAGS=:power-switch:
E: CURRENT_TAGS=:power-switch:

Todos os meios de diagnóstico (veja a tabela acima) aparentemente me dão resultados contraditórios, por exemplo, F8 funciona e altera as luzes do teclado, mas showkeynão registra nada e dmesgregistra um erro, algumas teclas geram Unknown event received, algumas Unknown key pressed, algumas ambas.

udevadm infoaparentemente aponta para o fato de que o teclado foi identificado incorretamente (como a saída contém, E: KEYBOARD_KEY_f9=searchpor exemplo, e eu não tenho essa chave), então tentei mexer em /lib/udev/hwdb.d:

Eu editei /lib/udev/hwdb.d/90-keyboard-ubuntu.hwdb:

# Dell G16 microphone mute
evdev:name:Dell WMI hotkeys:dmi:bvn*:bvr*:bd*:svnDell*:pnDellG16*:*
 KEYBOARD_KEY_100150=f20

evdev:atkbd:dmi:bvn*:bvr*:bd*:svnMicro-Star*:pn*pnCreator17B11UG*:*
 KEYBOARD_KEY_ee=camera                                 # Fn+F6 camera disable

Ou seja, adicionei as duas últimas linhas, todo o resto estava lá antes. Então apliquei as alterações: systemd-hwdb updatee udevadm trigger --verbose --sysname-match="event*". Depois disso, nada aparentemente mudou no comportamento da tecla F6. Eu também tentei algumas outras coisas aleatórias, como mudar camerapara !cameraou outras chaves hexadecimais em vez de KEYBOARD_KEY_ee, mas aparentemente não mudou nada.

Como nem showkey -kme dmesgdeu nenhuma indicação sobre qual era o valor hexadecimal real da tecla F6, tentei sudo evtest:

No device specified, trying to scan all of /dev/input/event*
Available devices:
/dev/input/event0:  Lid Switch
/dev/input/event1:  Sleep Button
/dev/input/event10: HDA NVidia HDMI/DP,pcm=7
/dev/input/event11: HDA NVidia HDMI/DP,pcm=8
/dev/input/event12: HDA NVidia HDMI/DP,pcm=9
/dev/input/event13: Video Bus
/dev/input/event14: Video Bus
/dev/input/event15: sof-hda-dsp Mic
/dev/input/event16: sof-hda-dsp Headphone
/dev/input/event17: sof-hda-dsp HDMI/DP,pcm=3
/dev/input/event18: sof-hda-dsp HDMI/DP,pcm=4
/dev/input/event19: sof-hda-dsp HDMI/DP,pcm=5
/dev/input/event2:  Power Button
/dev/input/event3:  AT Translated Set 2 keyboard
/dev/input/event4:  SynPS/2 Synaptics TouchPad
/dev/input/event5:    FX-2
/dev/input/event6:    FX-2 Keyboard
/dev/input/event7:  MSI WMI hotkeys
/dev/input/event8:  gpio-keys
/dev/input/event9:  HDA NVidia HDMI/DP,pcm=3
Select the device event number [0-19]: 7
Input driver version is 1.0.1
Input device ID: bus 0x19 vendor 0x0 product 0x0 version 0x0
Input device name: "MSI WMI hotkeys"
Supported events:
  Event type 0 (EV_SYN)
  Event type 1 (EV_KEY)
    Event code 113 (KEY_MUTE)
    Event code 114 (KEY_VOLUMEDOWN)
    Event code 115 (KEY_VOLUMEUP)
    Event code 148 (KEY_PROG1)
    Event code 149 (KEY_PROG2)
    Event code 224 (KEY_BRIGHTNESSDOWN)
    Event code 225 (KEY_BRIGHTNESSUP)
    Event code 240 (KEY_UNKNOWN)
  Event type 4 (EV_MSC)
    Event code 4 (MSC_SCAN)
Properties:
Testing ... (interrupt to exit)
^C

Ele reconheceu /dev/input/event7: MSI WMI hotkeys, mas após testes reais, quando pressionei em sequência todas as teclas de função (com ou sem a tecla Fn), não produziu nenhuma saída. Porém, funciona com o teclado normal.

Eu apreciaria muito qualquer conselho sobre como investigar mais detalhadamente ou até mesmo como corrigir o problema. Como solução alternativa, também estarei interessado em suas sugestões sobre como posso ativar minha webcam alternadamente (ou seja, imitar pressionar Fn + F6 de alguma outra forma ou talvez algo nesse sentido).

Responder1

Estou no Creator 17 2020. Ubuntu 22.04:

Quando executo o sudo evtestcomando, no meu MSI, descobri que

event7: Teclas de atalho MSI WMI - não mostrarão códigos de acesso

event4: O teclado AT Translated Set 2 resolverá o problema - mostrará os códigos-chave

informação relacionada