В настоящее время у меня возникли проблемы с функциональными клавишами на моем 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 сделает свое дело - покажет вам коды клавиш