Klawisze funkcyjne klawiatury zawsze wyzwalają skróty multimedialne, niezależnie od tego, czy klawisz Fn jest wciśnięty
Niedawno kupiłem klawiaturę mechaniczną Varmilo VA109M . Działa dobrze w systemie Windows, ale wydaje się mylić moją instalację Ubuntu, ponieważ klawisze funkcyjne F1-F12 pojawiają się zawsze, aby aktywować skróty multimedialne, niezależnie od tego, czy trzymałem dedykowany klawisz modyfikujący Fn, czy nie. Na przykład F12 zwiększy głośność mojego systemu, jeśli naciśnę go sam, i zrobi to samo, jeśli naciśnę Fn + F12; nie ma sposobu, aby działał jak zwykły klawisz F12. Powoduje to problemy, ponieważ dużo programuję, a wiele skrótów IDE polega na standardowych klawiszach funkcyjnych.
Próbowałem zresetować wewnętrzne ustawienia klawiatury, przytrzymując Fn + Esc, ale to nie pomogło. Moja instalacja systemu Windows na tym samym komputerze działa doskonale z tą klawiaturą. Czy jest coś, co mogę zrobić, aby spróbować dokładnie zdiagnozować, w czym Ubuntu jest zdezorientowany?
EDYCJA: lsusb
wyświetla następujące informacje:
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
Odpowiedzi
To jest możliwe do rozwiązania!
Niedawno przeprowadziłem kilka badań w tej sprawie i chociaż Jd3eBP ma rację co do klawiatury udającej klawiaturę Apple, prawdopodobnie jest to problem z flashowaniem Varmilo w fabryce.
Sprzedają klawiaturę w wersji dla Maca, która moim zdaniem różni się tylko oprogramowaniem i etykietami, domyślnie myślę, że obsługuje układ Maca, ma też być w stanie przełączyć się w "tryb Windows", który prawdopodobnie zmienia kolejność klawiszy na czego można się spodziewać, identyfikuje się jako klawiatura Apple, aby komputery Mac mogły ją prawidłowo traktować.
Wygląda jednak na to, że może przypadkowo sflashowali to oprogramowanie na każdą klawiaturę zamiast tylko na komputery Mac, co nie jest zauważalne w systemie Windows, ponieważ ignoruje identyfikator, ale w systemie Linux aktywuje sterownik hid_apple.
Rozwiązanie:
Przejdźmy do części dotyczącej odpowiedzi. Istnieją dwie duże możliwości rozwiązania tego problemu, przetestowałem obie i ostatecznie znalazłem drugą znacznie lepiej.
Zmień hid_apple w tryb, w którym normalnie traktuje klawisze funkcyjne, afaik to w zasadzie rozwiąże problem. Możesz znaleźć instrukcje, jak to zrobić, będzie to działać również na Ubuntu.https://wiki.archlinux.org/index.php/Apple_Keyboard#Function_keys_do_not_work.
Ponownie przepłucz klawiaturę identyfikatorem produktu i dostawcy, aby nie zostały wykryte. To prawdopodobnie właściwa odpowiedź, ale trochę bardziej ryzykowna. Pliki oprogramowania można pobrać ze strony producenta tutaj,https://en.varmilo.com/keyboardproscenium/Driverdownload, korzystając z pobranego pliku VA87M. Sam aktualizator nie działał (myślę, że potrzebowałem zainstalowanej chińskiej lokalizacji), więc możesz skorzystać z aktualizatora, który został dostarczony tutaj komuśhttps://www.reddit.com/r/Varmilo/comments/g4sabk/fn_lock_on_va87m/, używając oficjalnego pliku oprogramowania układowego z dobrego środka. Jeśli nie ufasz temu, słyszę, że jeśli napiszesz do Varmilo o problemie, dostarczy wymagane pliki.
Ten aktualizator działał dla mnie pod winem po zainstalowaniu wina z oficjalnej strony. To tylko odzwierciedla identyfikator dostawcy i produktu, aby nie pojawiały się jako klawiatura Apple, a także usuwa funkcję „przełączania na tryb Windows / Mac”, która nie była używana w wersji tylko dla systemu Windows. Prawdopodobnie możesz sflashować oprogramowanie układowe Maca, aby powrócić do starego zachowania, jeśli chcesz, jednak tego nie testowałem.
Varmilo nie robi dobrze USB. Uniknąć.
W sieci WWW można zauważyć, że jego klawiatury różnie fałszywie zgłaszają swoich producentów jako Apple (identyfikator sprzedawcy 05ac, jak twierdzi Varmilo VS109M i Varmilo VA88M), Cypress (identyfikator sprzedawcy 04b4, jak twierdzi Varmilo Z104M ), ROF Electronics ( identyfikator sprzedawcy ffff, jak twierdzi Varmilo VA87M ), Nordic Semiconductor (identyfikator sprzedawcy 1915, jak twierdzi Varmilo VB87M ), Holtek i nie tylko.
Jest to oczywiście błędne i bardzo problematyczne.
Jeśli urządzenie sprzętowe identyfikuje swojego producenta (w wyliczaniu magistrali PCI, USB i innych) jako Apple, a jego produkt jako konkretną klawiaturę Apple, to jest całkowicie uzasadnione, aby systemy operacyjne traktowały je jako tę klawiaturę Apple . Identyfikator dostawcy 05AC Identyfikator produktu 024F to aluminiowa klawiatura Apple (USA).
Problem w tym, że VA109M to nie ta klawiatura .
Klawiatura Apple ma specjalną i nietypową semantykę Fnklawisza, która różni się od większości klawiatur. Sterownik Linuksa, który jest dołączany do klawiatur Apple, jest hid_apple
i wie, jak obsługiwać specjalny Fnklucz Apple z jego prywatnym „użyciem” USB HID.
VA109M nie jest klawiaturą Apple. To klawiatura Varmilo. Nie działa jak klawiatura Apple. Nie emituje specjalnego „użycia” USB HID firmy Apple dla Fn. Podobnie jak większość klawiatur, to nie ma Fnwidoczne poprzez USB w ogóle .
Więc prowadzenie go jak klawiatury Apple, który mówi, że tak, nie działa .
- Słabą poprawką, która jest również nietrywialna do wprowadzenia, jest wyłączenie lub usunięcie
hid_apple
sterownika z Linuksa. - Słabym rozwiązaniem jest użycie
fnmode=2
opcji dlahid_apple
sterownika, aby odwrócić Fnstan zmiany biegów. To przynajmniej przełącza się na semantykę tych klawiszy, które są klawiszami funkcyjnymi, a nie klawiszami sterowania mediami / urządzeniami. - Właściwym rozwiązaniem jest kupowanie klawiatur od producenta, który wie, jak prawidłowo ustawić identyfikatory dostawców, a nie od Varmilo.
Dalsza lektura
- Vroomfondel (17.06.2020). udev: klawiatura błędnie wykryta jako Apple . Błąd Debiana nr 963002.
Według producenta: https://en.varmilo.com/keyboardproscenium/subject_product_detailed?subjectid=221
Tylko system operacyjny Windows, macOS nie obsługuje klawiszy skrótów. Jeśli odnosi się to do klawisza funkcyjnego, może to być odpowiedź dlaczego. Być może ich obsługa macOS jest tak samo nierówna, jak obsługa Linuksa.