Функциональные клавиши клавиатуры всегда запускают ярлыки мультимедиа, независимо от того, удерживается ли Fn.
Я недавно купил механическую клавиатуру Varmilo VA109M . Он отлично работает в Windows, но, похоже, сбивает с толку мою установку Ubuntu тем, что функциональные клавиши F1-F12 всегда появляются для активации ярлыков мультимедиа, независимо от того, удерживал ли я специальную клавишу-модификатор Fn или нет. Например, F12 увеличит громкость моей системы, если я нажму ее самостоятельно, и сделает то же самое, если я нажму Fn + F12; нет способа заставить его работать как обычная клавиша F12. Это вызывает у меня проблемы, потому что я много занимаюсь программированием, а многие ярлыки IDE полагаются на стандартные функциональные клавиши.
Я попытался сбросить внутренние настройки клавиатуры, удерживая Fn + Esc, но это не помогло. Моя Windows, установленная на той же машине, отлично работает с этой клавиатурой. Могу ли я что-нибудь сделать, чтобы попытаться определить, в чем именно запуталась Ubuntu?
РЕДАКТИРОВАТЬ: lsusb
выводит следующее:
Bus 001 Device 003: ID 05ac:024f Apple, Inc. Varmilo Keyboard
Device Descriptor:
bLength 18
bDescriptorType 1
bcdUSB 2.00
bDeviceClass 0
bDeviceSubClass 0
bDeviceProtocol 0
bMaxPacketSize0 8
idVendor 0x05ac Apple, Inc.
idProduct 0x024f
bcdDevice 1.00
iManufacturer 1
iProduct 2
iSerial 0
bNumConfigurations 1
Configuration Descriptor:
bLength 9
bDescriptorType 2
wTotalLength 0x005b
bNumInterfaces 3
bConfigurationValue 1
iConfiguration 0
bmAttributes 0xa0
(Bus Powered)
Remote Wakeup
MaxPower 350mA
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 0
bAlternateSetting 0
bNumEndpoints 1
bInterfaceClass 3 Human Interface Device
bInterfaceSubClass 1 Boot Interface Subclass
bInterfaceProtocol 1 Keyboard
iInterface 0
HID Device Descriptor:
bLength 9
bDescriptorType 33
bcdHID 1.10
bCountryCode 0 Not supported
bNumDescriptors 1
bDescriptorType 34 Report
wDescriptorLength 75
Report Descriptors:
** UNAVAILABLE **
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x81 EP 1 IN
bmAttributes 3
Transfer Type Interrupt
Synch Type None
Usage Type Data
wMaxPacketSize 0x0008 1x 8 bytes
bInterval 1
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 1
bAlternateSetting 0
bNumEndpoints 1
bInterfaceClass 3 Human Interface Device
bInterfaceSubClass 0
bInterfaceProtocol 0
iInterface 0
HID Device Descriptor:
bLength 9
bDescriptorType 33
bcdHID 1.10
bCountryCode 0 Not supported
bNumDescriptors 1
bDescriptorType 34 Report
wDescriptorLength 85
Report Descriptors:
** UNAVAILABLE **
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x82 EP 2 IN
bmAttributes 3
Transfer Type Interrupt
Synch Type None
Usage Type Data
wMaxPacketSize 0x0010 1x 16 bytes
bInterval 1
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 2
bAlternateSetting 0
bNumEndpoints 2
bInterfaceClass 3 Human Interface Device
bInterfaceSubClass 0
bInterfaceProtocol 0
iInterface 0
HID Device Descriptor:
bLength 9
bDescriptorType 33
bcdHID 1.10
bCountryCode 0 Not supported
bNumDescriptors 1
bDescriptorType 34 Report
wDescriptorLength 33
Report Descriptors:
** UNAVAILABLE **
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x83 EP 3 IN
bmAttributes 3
Transfer Type Interrupt
Synch Type None
Usage Type Data
wMaxPacketSize 0x0020 1x 32 bytes
bInterval 4
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x04 EP 4 OUT
bmAttributes 3
Transfer Type Interrupt
Synch Type None
Usage Type Data
wMaxPacketSize 0x0020 1x 32 bytes
bInterval 4
Ответы
Это решаемо!
Так что я недавно сам провел небольшое исследование, и хотя Jd3eBP прав насчет клавиатуры, выдавающей себя за клавиатуру Apple, на самом деле, вероятно, проблема с перепрошивкой Вармило на заводе.
Они продают версию клавиатуры для Mac, которая, я думаю, отличается только прошивкой и маркировкой, по умолчанию я думаю, что она поддерживает макет Mac, она также должна иметь возможность переключаться в «режим Windows», который, вероятно, меняет порядок клавиш на как и следовало ожидать, он идентифицирует себя как клавиатуру Apple, чтобы компьютеры Mac правильно с ней обращались.
Однако кажется, что они случайно установили эту прошивку на каждую клавиатуру, а не только на Mac, что не заметно в Windows, поскольку она игнорирует идентификатор, но в Linux активирует драйвер hid_apple.
Решение:
Переходим к ответу. Есть два больших варианта решения этой проблемы, я протестировал оба и в итоге нашел второй намного лучше.
Измените hid_apple на режим, в котором он обычно обрабатывает функциональные клавиши, и, скорее всего, это решит проблему. Здесь вы можете найти инструкции, как это сделать, это также будет работать в Ubuntu.https://wiki.archlinux.org/index.php/Apple_Keyboard#Function_keys_do_not_work.
Перепишите на клавиатуре идентификатор продукта и поставщика, чтобы он не обнаруживался. Возможно, это правильный ответ, но немного более рискованный. Вы можете скачать файлы прошивки с сайта производителя здесь,https://en.varmilo.com/keyboardproscenium/Driverdownload, используя загрузку VA87M. Само средство обновления не работало (я думаю, мне нужно было установить китайскую локализацию), поэтому вы можете использовать средство обновления, которое было предоставлено кому-то здесьhttps://www.reddit.com/r/Varmilo/comments/g4sabk/fn_lock_on_va87m/, воспользовавшись официальным файлом прошивки из архива. Если вы этому не верите, я слышал, что если вы напишите Вармило о проблеме, они предоставят необходимые файлы.
Это средство обновления работало у меня под вином после установки Wine с официального сайта. Это просто перепрограммирует производителя и идентификатор продукта, чтобы не отображать клавиатуру Apple, а также удаляет функцию «переключиться в режим Windows / Mac», которая не использовалась в версии только для Windows. Возможно, вы могли бы перепрограммировать прошивку Mac, чтобы вернуться к старому поведению, если хотите, однако я этого не тестировал.
Вармило не делает USB правильно. Избегайте.
Во всем WWW можно увидеть, что его клавиатуры по-разному ошибочно сообщают о своих производителях как Apple (идентификатор поставщика 05ac, заявленный Varmilo VS109M и Varmilo VA88M), Cypress (идентификатор поставщика 04b4, заявленный Varmilo Z104M ), ROF Electronics ( идентификатор поставщика ffff, заявленный Varmilo VA87M ), Nordic Semiconductor (идентификатор поставщика 1915, заявленный Varmilo VB87M ), Holtek и другие.
Это явно ошибочно и весьма проблематично.
Если какое-либо аппаратное устройство идентифицирует своего производителя (в перечислении устройств для шин PCI, USB и др.) Как Apple, а его продукт как конкретную клавиатуру Apple, то операционные системы вполне законно рассматривают его как клавиатуру Apple . Идентификатор поставщика 05AC Код продукта 024F - алюминиевая клавиатура Apple (США).
Проблема здесь в том, что VA109M не та клавиатура .
Клавиатура Apple имеет особую и необычную семантику Fnклавиш, которая отличается от большинства клавиатур. Драйвер устройства Linux, который подключается к клавиатурам Apple hid_apple
, умеет обрабатывать специальный Fnключ Apple с его частным «использованием» USB HID.
VA109M - это не клавиатура Apple. Это клавиатура Вармило. Это не работает как клавиатура Apple. Он не испускает специального использования Apple USB HID для Fn. Как и большинство клавиатур, это не делает Fnвидимым через USB на всех .
Так что управлять им, как клавиатурой Apple, которая говорит, что это так, не работает .
- Плохое исправление, которое также нетривиально внедрить, - это отключить или удалить
hid_apple
драйвер из Linux. - Плохое решение - использовать
fnmode=2
опциюhid_apple
драйвера, чтобы инвертировать его Fnсостояние переключения. Это, по крайней мере, переключается на семантику тех клавиш, которые являются функциональными клавишами, а не клавишами управления носителями / устройствами. - Правильное решение - покупать клавиатуру у производителя, который знает, как правильно устанавливать идентификаторы поставщика, а не у Varmilo.
дальнейшее чтение
- Врумфондель (17.06.2020). udev: Клавиатура ошибочно определяется как Apple . Ошибка Debian № 963002.
По данным производителя: https://en.varmilo.com/keyboardproscenium/subject_product_detailed?subjectid=221
Только ОС Windows, macOS не поддерживает сочетания клавиш. Если это относится к функциональной клавише, то это может быть ответом, почему. Возможно, их поддержка macOS так же нестабильна, как и поддержка Linux.