Tombol fungsi keyboard selalu memicu pintasan media, terlepas dari apakah Fn ditahan atau tidak
Saya baru saja membeli keyboard mekanis Varmilo VA109M . Ini berfungsi dengan baik di Windows, tetapi tampaknya membingungkan pemasangan Ubuntu saya karena tombol fungsi F1-F12 selalu muncul untuk mengaktifkan pintasan media, terlepas dari apakah saya telah menahan tombol pengubah Fn khusus atau tidak. Misalnya, F12 akan meningkatkan volume sistem saya jika saya menekannya sendiri, dan akan melakukan hal yang sama jika saya menekan Fn + F12; tidak ada cara untuk membuatnya bertindak seperti kunci F12 biasa. Ini menyebabkan masalah bagi saya karena saya melakukan banyak pemrograman, dan banyak pintasan IDE mengandalkan tombol fungsi standar.
Saya telah mencoba mengatur ulang pengaturan internal keyboard dengan menahan Fn + Esc, tetapi ini tidak membantu. Instalasi Windows saya pada mesin yang sama berfungsi dengan baik dengan keyboard ini. Apakah ada yang bisa saya lakukan untuk mencoba dan mendiagnosis dengan tepat apa yang membuat Ubuntu bingung?
EDIT: lsusb
menghasilkan yang berikut:
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
Jawaban
Ini bisa dipecahkan!
Jadi saya melakukan beberapa penelitian sendiri baru-baru ini dan sementara Jd3eBP benar tentang keyboard yang berpura-pura menjadi keyboard Apple, sebenarnya mungkin ada masalah dengan flashing Varmilo di pabrik.
Mereka menjual versi Mac dari keyboard yang menurut saya hanya berbeda dalam firmware dan pelabelan, secara default saya pikir itu mendukung tata letak Mac, itu juga seharusnya dapat beralih ke "mode windows" yang mungkin menukar urutan tombol ke apa yang Anda harapkan, itu mengidentifikasi dirinya sebagai papan ketik Apple agar Mac memperlakukannya dengan benar.
Namun sepertinya mungkin mereka secara tidak sengaja mem-flash firmware itu ke setiap keyboard, bukan hanya Mac saja, yang tidak terlihat di Windows karena mengabaikan id, tetapi di linux akan mengaktifkan driver hid_apple.
Larutan:
Ke bagian jawaban. Ada dua opsi besar untuk menyelesaikan ini, saya menguji keduanya dan akhirnya menemukan yang kedua jauh lebih baik.
Ubah hid_apple menjadi mode di mana ia memperlakukan tombol fungsi secara normal, afaik ini pada dasarnya akan menyelesaikan masalah. Anda dapat menemukan petunjuk di sini tentang cara melakukannya, ini juga akan berfungsi di Ubuntu.https://wiki.archlinux.org/index.php/Apple_Keyboard#Function_keys_do_not_work.
Flash ulang keyboard dengan ID produk dan vendor sedemikian rupa sehingga tidak akan terdeteksi. Ini bisa dibilang jawaban yang benar tetapi sedikit lebih berisiko. Anda bisa mendapatkan file firmware dari situs pabrikan di sini,https://en.varmilo.com/keyboardproscenium/Driverdownload, menggunakan unduhan VA87M. Updater itu sendiri tidak berfungsi (saya pikir saya perlu menginstal lokalisasi bahasa Mandarin), jadi Anda dapat menggunakan updater yang diberikan kepada seseorang di sinihttps://www.reddit.com/r/Varmilo/comments/g4sabk/fn_lock_on_va87m/, menggunakan file firmware resmi dari for good measure. Jika Anda tidak mempercayainya, saya dengar jika Anda mengirim email ke Varmilo tentang masalah ini, mereka akan memberikan file yang diperlukan.
Pembaru itu bekerja di bawah anggur untuk saya setelah menginstal anggur dari situs resmi. Ini hanya merefleksikan vendor dan ID produk agar tidak muncul sebagai keyboard Apple, ini juga menghapus fungsionalitas "beralih ke mode windows / mac" yang tidak digunakan pada versi khusus Windows. Anda mungkin dapat mem-flash firmware Mac untuk kembali ke perilaku lama jika Anda mau, saya tidak mengujinya.
Varmilo tidak melakukan USB dengan benar. Menghindari.
Di sekitar WWW dapat dilihat bahwa keyboardnya secara keliru melaporkan pabrikan mereka sebagai Apple (vendor ID 05ac seperti diklaim oleh Varmilo VS109M dan oleh Varmilo VA88M), Cypress (vendor ID 04b4 seperti diklaim oleh Varmilo Z104M ), ROF Electronics ( ID vendor ffff, seperti yang diklaim oleh Varmilo VA87M ), Nordic Semiconductor (ID vendor 1915 seperti yang diklaim oleh Varmilo VB87M ), Holtek, dan banyak lagi.
Ini jelas salah, dan sangat bermasalah.
Jika perangkat keras seseorang mengidentifikasi pabrikannya (dalam enumerasi perangkat PCI, USB, dkk. Bus) sebagai Apple dan produknya sebagai keyboard Apple tertentu, maka sangat sah untuk sistem operasi untuk memperlakukannya sebagai keyboard Apple itu . Vendor ID 05AC ID Produk 024F adalah Apple Aluminium Keyboard (AS).
Masalahnya di sini adalah bahwa VA109M bukan keyboard itu .
Papan ketik Apple memiliki semantik khusus dan tidak biasa untuk Fntuts, yang berbeda dari kebanyakan papan ketik. Driver perangkat Linux yang terpasang ke keyboard Apple adalah hid_apple
, dan yang mengetahui cara menangani Fnkunci khusus Apple dengan "penggunaan" USB HID pribadinya.
VA109M bukanlah papan ketik Apple. Ini adalah keyboard Varmilo. Tidak berfungsi seperti papan ketik Apple. Itu tidak mengeluarkan "penggunaan" USB HID khusus Apple untuk Fn. Seperti kebanyakan keyboard, itu tidak Fnterlihat melalui USB sama sekali .
Jadi mengendarainya seperti papan ketik Apple yang dikatakan begitu, tidak berfungsi .
- Perbaikan yang buruk, yang juga tidak sepele untuk diberlakukan, adalah menonaktifkan atau menghapus
hid_apple
driver dari Linux. - Perbaikan yang buruk adalah dengan menggunakan
fnmode=2
opsi kepadahid_apple
pengemudi untuk membalikkan status Fnshiftnya. Setidaknya beralih ke semantik tombol tersebut menjadi tombol fungsi daripada tombol kontrol media / perangkat. - Perbaikan yang tepat adalah membeli keyboard dari pabrikan yang tahu cara mengatur ID vendor dengan benar, bukan dari Varmilo.
Bacaan lebih lanjut
- Vroomfondel (2020-06-17). udev: Keyboard salah terdeteksi sebagai Apple . Bug Debian # 963002.
Menurut pabrikan: https://en.varmilo.com/keyboardproscenium/subject_product_detailed?subjectid=221
Khusus OS Windows, macOS tidak mendukung tombol pintasan. Jika ini mengacu pada tombol fungsi, maka ini mungkin jawabannya mengapa. Mungkin dukungan macOS mereka sama jerawatannya dengan dukungan Linux mereka.