Las teclas de función del teclado siempre activan accesos directos multimedia, independientemente de si se mantiene presionada Fn
Recientemente compré un teclado mecánico Varmilo VA109M . Funciona bien en Windows, pero parece confundir mi instalación de Ubuntu porque las teclas de función F1-F12 aparecen siempre para activar los accesos directos de medios, independientemente de si he presionado la tecla modificadora Fn dedicada o no. Por ejemplo, F12 aumentará el volumen de mi sistema si lo presiono solo, y hará lo mismo si presiono Fn+F12; no hay forma de que actúe como una tecla F12 normal. Esto me está causando problemas porque hago mucha programación y muchos atajos de IDE se basan en las teclas de función estándar.
Intenté restablecer la configuración interna del teclado presionando Fn+Esc, pero esto no ayudó. Mi instalación de Windows en la misma máquina funciona perfectamente bien con este teclado. ¿Hay algo que pueda hacer para tratar de diagnosticar exactamente en qué se está confundiendo Ubuntu?
EDITAR: lsusb
genera lo siguiente:
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
Respuestas
¡Esto tiene solución!
Así que investigué un poco sobre esto recientemente y aunque Jd3eBP tiene razón acerca de que el teclado finge ser un teclado de Apple, en realidad es probablemente un problema con el parpadeo de Varmilo en la fábrica.
Venden una versión Mac del teclado que creo que difiere solo en el firmware y el etiquetado, por defecto creo que es compatible con el diseño de Mac, también se supone que puede cambiar al "modo de Windows", lo que probablemente cambia el orden de las teclas a lo que cabría esperar, se identifica como un teclado de Apple para que las Mac lo traten correctamente.
Sin embargo, parece que tal vez actualizaron accidentalmente ese firmware en todos los teclados en lugar de solo en los de Mac, lo que no se nota en Windows ya que ignora la identificación, pero en Linux activará el controlador hid_apple.
Solución:
En la parte de la respuesta. Hay dos grandes opciones para resolver esto, probé ambas y terminé encontrando la segunda mucho mejor.
Cambie hid_apple a un modo en el que trate las teclas de función normalmente, afaik esto básicamente resolverá el problema. Puede encontrar instrucciones aquí sobre cómo hacerlo, también funcionará en Ubuntu.https://wiki.archlinux.org/index.php/Apple_Keyboard#Function_keys_do_not_work.
Vuelva a actualizar el teclado con el ID del producto y del proveedor para que no se detecte. Podría decirse que esta es la respuesta correcta, pero un poco más arriesgada. Puede obtener los archivos de firmware del sitio del fabricante aquí,https://en.varmilo.com/keyboardproscenium/Driverdownload, utilizando la descarga VA87M. El actualizador en sí no funcionó (creo que necesitaba instalar la localización en chino), por lo que puede usar el actualizador que se le proporcionó a alguien aquíhttps://www.reddit.com/r/Varmilo/comments/g4sabk/fn_lock_on_va87m/, usando el archivo de firmware oficial del por si acaso. Si no confía en eso, escuché que si envía un correo electrónico a Varmilo sobre el problema, le proporcionarán los archivos necesarios.
Ese actualizador funcionó en Wine para mí después de instalar Wine desde el sitio oficial. Esto solo vuelve a actualizar el proveedor y la identificación del producto para que no aparezca como un teclado de Apple, también elimina la funcionalidad "cambiar al modo Windows/Mac" que no se usó en la versión de Windows únicamente. Probablemente podría actualizar el firmware de Mac para volver al comportamiento anterior si lo desea. Sin embargo, no probé eso.
Varmilo no hace bien el USB. Evitar.
Alrededor de la WWW se puede ver que sus teclados informan falsamente a sus fabricantes como Apple (ID de proveedor 05ac según lo afirmado por Varmilo VS109M y por Varmilo VA88M), Cypress (ID de proveedor 04b4 según lo afirmado por Varmilo Z104M ), ROF Electronics ( ID de proveedor ffff, según lo afirmado por un Varmilo VA87M ), Nordic Semiconductor (ID de proveedor 1915 según lo afirmado por un Varmilo VB87M ), Holtek y más.
Esto es claramente erróneo y muy problemático.
Si el dispositivo de hardware de uno identifica a su fabricante (en la enumeración de dispositivos de PCI, USB, etc. buses) como Apple y su producto como un teclado Apple específico, entonces es perfectamente legítimo que los sistemas operativos lo traten como ese teclado Apple . Id. de proveedor 05AC Id. de producto 024F es el teclado de aluminio de Apple (EE. UU.).
El problema aquí es que el VA109M no es ese teclado .
El teclado de Apple tiene una semántica especial e inusual para la Fntecla, que difiere de la mayoría de los teclados. El controlador de dispositivo de Linux que se adjunta a los teclados de Apple es hid_apple
, y sabe manejar la Fnclave especial de Apple con su "uso" de USB HID privado.
El VA109M no es un teclado Apple. Es un teclado Varmilo. No funciona como un teclado de Apple. No emite el "uso" especial de USB HID de Apple para Fn. Como la mayoría de los teclados, no se hace visible aFn través del USB .
Así que manejarlo como el teclado de Apple que dice que es, no funciona .
- Una mala solución, que tampoco es trivial de promulgar, es deshabilitar o eliminar el
hid_apple
controlador de Linux. - Una mala solución es utilizar la
fnmode=2
opción delhid_apple
conductor para invertir su Fnestado de cambio. Eso al menos cambia a la semántica de que esas teclas son teclas de función en lugar de teclas de control de medios/dispositivos. - La solución correcta es comprar teclados de un fabricante que sepa cómo configurar las ID de proveedores correctamente, en lugar de Varmilo.
Otras lecturas
- Vroomfondel (2020-06-17). udev: Teclado mal detectado como Apple . Error de Debian n.º 963002.
Según el fabricante:https://en.varmilo.com/keyboardproscenium/subject_product_detailed?subjectid=221
Solo sistema operativo Windows, macOS no admite teclas de método abreviado. Si esto se refiere a la tecla de función, entonces esta puede ser la respuesta. Quizás su compatibilidad con macOS es tan irregular como su compatibilidad con Linux.