Странное поведение функциональных клавиш Fn в MSI Creator на Ubuntu 23.04

Странное поведение функциональных клавиш Fn в MSI Creator на Ubuntu 23.04

В настоящее время у меня возникли проблемы с функциональными клавишами на моем MSI Creator 17 B11UG. С каждым обновлением Ubuntu (текущее 23.04) все становилось все хуже и хуже, и я особенно заинтересован в том, чтобы снова заработала веб-камера, поскольку она, по-видимому, просто застряла в «аппаратно отключенном состоянии». Некоторые функциональные клавиши работают (отключение звука, увеличение/уменьшение громкости, подсветка клавиатуры), некоторые перестали работать после обновления, некоторые регистрируют ошибки в dmesg, а некоторые работают, но не регистрируются в showkey -k. Подробная таблица с описанием того, как функциональные клавиши ведут себя в настоящее время:

Таблица описания проблем с клавишами Fn

ОБНОВЛЕНИЕ:Сначала я создал таблицу разметки, которая выглядела очень красиво в предварительном просмотре, но по какой-то причине она испортилась при публикации, поэтому вместо нее я создал изображение.

showkey -kопределяет абсолютно те же коды, если функциональные клавиши нажимаются отдельно или вместе с клавишей Fn. Я также проверил настройки BIOS, и там нет никаких настроек, которые бы меняли способ работы клавиш Fn.

sudo udevadm info /dev/input/by-path/platform-i8042-serio-0-event-kbdдает мне такой вывод:

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:

Все диагностические средства (см. таблицу выше) по-видимому дают мне противоречивые результаты, например, F8 работает и изменяет подсветку клавиатуры, но showkeyничего не регистрирует и dmesgвыдает ошибку, некоторые клавиши генерируют Unknown event received, некоторые Unknown key pressed, а некоторые и то, и другое.

udevadm infoпо-видимому, это указывает на тот факт, что клавиатура была определена неправильно (поскольку вывод содержит, E: KEYBOARD_KEY_f9=searchнапример, а у меня нет этой клавиши), поэтому я попробовал поиграться с /lib/udev/hwdb.d:

Я отредактировал /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

А именно, я добавил последние две строки, все остальное было там и раньше. Затем я применил изменения: systemd-hwdb updateи udevadm trigger --verbose --sysname-match="event*". После этого ничего, по-видимому, не изменилось в поведении клавиши F6. Я также пробовал некоторые другие случайные вещи, например, изменение cameraна !cameraили другие шестнадцатеричные клавиши вместо KEYBOARD_KEY_ee, но это, по-видимому, ничего не изменило.

Поскольку ни , showkey -kни не dmesgдали мне никаких указаний на то, каково фактическое шестнадцатеричное значение клавиши F6, я попробовал 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

Он распознал /dev/input/event7: MSI WMI hotkeys, но при реальном тестировании, когда я последовательно нажал все функциональные клавиши (с клавишей Fn или без нее), он не выдал вообще никакого результата. Хотя он работает с обычной клавиатурой.

Я был бы очень признателен за любые советы о том, как исследовать дальше или даже как исправить проблему. В качестве обходного пути мне также будут интересны ваши предложения о том, как я могу включить свою веб-камеру попеременно (т. е. имитировать нажатие Fn + F6 каким-то другим способом или, может быть, что-то в этом роде).

решение1

Я использую Creator 17 2020. Ubuntu 22.04:

Когда я выполнил sudo evtestкоманду на своем MSI, я обнаружил, что

event7: Горячие клавиши MSI WMI — не будут отображать коды клавиш

event4: клавиатура AT Translated Set 2 сделает свое дело - покажет вам коды клавиш

Связанный контент