ปุ่มฟังก์ชันแป้นพิมพ์จะเรียกใช้ทางลัดสื่อเสมอไม่ว่าจะกด Fn ค้างไว้หรือไม่

Aug 17 2020

ฉันเพิ่งซื้อคีย์บอร์ดแบบกลไก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

คำตอบ

2 modwizcode Nov 07 2020 at 23:49

นี่แก้ได้!

เมื่อเร็ว ๆ นี้ฉันได้ทำการวิจัยเกี่ยวกับเรื่องนี้ด้วยตัวเองและในขณะที่ Jd3eBP พูดถูกเกี่ยวกับแป้นพิมพ์ที่แสร้งทำเป็นแป้นพิมพ์ของ Apple แต่จริงๆแล้วอาจเป็นปัญหากับการกระพริบของ Varmilo ที่โรงงาน

พวกเขาขายแป้นพิมพ์เวอร์ชัน Mac ซึ่งฉันคิดว่าแตกต่างเฉพาะในเฟิร์มแวร์และการติดฉลากโดยค่าเริ่มต้นฉันคิดว่ามันรองรับเค้าโครง Mac แต่ก็ควรจะสามารถเปลี่ยนเป็น "โหมด windows" ซึ่งอาจจะสลับลำดับของปุ่มเป็น สิ่งที่คุณคาดหวังมันระบุว่าตัวเองเป็นแป้นพิมพ์ของ Apple เพื่อให้ Mac ใช้งานได้อย่างเหมาะสม

อย่างไรก็ตามดูเหมือนว่าบางทีพวกเขาอาจจะแฟลชเฟิร์มแวร์นั้นลงบนแป้นพิมพ์ทุกตัวโดยไม่ได้ตั้งใจแทนที่จะเป็นเฉพาะ Mac เท่านั้นซึ่งไม่สามารถสังเกตเห็นได้ใน Windows เนื่องจากไม่สนใจ id แต่บน linux จะเปิดใช้งานไดรเวอร์ hid_apple

สารละลาย:

ในส่วนคำตอบ มีสองตัวเลือกใหญ่ในการแก้ปัญหานี้ฉันทดสอบทั้งคู่และพบว่าตัวเลือกที่สองดีกว่ามาก

  1. เปลี่ยน hid_apple เป็นโหมดที่ใช้กับปุ่มฟังก์ชั่นตามปกติซึ่งโดยทั่วไปจะช่วยแก้ปัญหาได้ คุณสามารถดูคำแนะนำได้ที่นี่สำหรับวิธีการดังกล่าวซึ่งจะใช้ได้กับ Ubuntu เช่นกันhttps://wiki.archlinux.org/index.php/Apple_Keyboard#Function_keys_do_not_work.

  2. แฟลชคีย์บอร์ดอีกครั้งด้วยผลิตภัณฑ์และ ID ผู้จำหน่ายเพื่อไม่ให้ตรวจพบ นี่เป็นคำตอบที่ถูกต้อง แต่มีความเสี่ยงมากกว่าเล็กน้อย คุณสามารถรับไฟล์เฟิร์มแวร์ได้จากเว็บไซต์ผู้ผลิตที่นี่https://en.varmilo.com/keyboardproscenium/Driverdownloadโดยใช้การดาวน์โหลด VA87M ตัวอัปเดตใช้งานไม่ได้ (ฉันคิดว่าฉันต้องการการแปลเป็นภาษาจีน) ดังนั้นคุณสามารถใช้ตัวอัปเดตที่ให้มากับใครบางคนได้ที่นี่https://www.reddit.com/r/Varmilo/comments/g4sabk/fn_lock_on_va87m/โดยใช้ไฟล์เฟิร์มแวร์อย่างเป็นทางการจากการวัดผลที่ดี หากคุณไม่ไว้วางใจเราได้ยินว่าหากคุณส่งอีเมลถึง Varmilo เกี่ยวกับปัญหาพวกเขาจะให้ไฟล์ที่จำเป็น

ตัวอัปเดตนั้นทำงานภายใต้ไวน์ให้ฉันหลังจากติดตั้งไวน์จากเว็บไซต์อย่างเป็นทางการ นี่เป็นเพียงการรีเฟรชผู้จำหน่ายและ ID ผลิตภัณฑ์เพื่อไม่ให้ปรากฏเป็นแป้นพิมพ์ของ Apple นอกจากนี้ยังลบฟังก์ชัน "เปลี่ยนไปใช้โหมด windows / mac" ที่ไม่ได้ใช้ในเวอร์ชัน Windows เท่านั้น คุณอาจแฟลชเฟิร์มแวร์ Mac เพื่อย้อนกลับไปใช้พฤติกรรมเดิมได้หากคุณต้องการฉันไม่ได้ทดสอบอย่างไรก็ตาม

3 JdeBP Aug 21 2020 at 15:23

Varmilo ทำ USB ไม่ถูกต้อง หลีกเลี่ยง.

รอบ WWW มันจะเห็นได้ว่าคีย์บอร์ดของนานัปการตู่รายงานผู้ผลิตของพวกเขาเป็นแอปเปิ้ล (05ac รหัสผู้ให้บริการเป็นโดยอ้างว่า Varmilo VS109M และโดย Varmilo VA88M) ไซเปรส (ID 04b4 ผู้ขายอ้างว่าเป็นโดย Varmilo Z104M ) ROF นิคส์ ( รหัสผู้ขาย ffff ตามที่อ้างโดย Varmilo VA87M ), Nordic Semiconductor (ID ผู้จำหน่าย 1915 ตามที่อ้างโดย Varmilo VB87M ), Holtek และอื่น ๆ

สิ่งนี้ผิดพลาดอย่างชัดเจนและเป็นปัญหาอย่างมาก

หากอุปกรณ์ฮาร์ดแวร์ของคนระบุผู้ผลิต (ในการแจงนับอุปกรณ์ PCI, USB, et al. รถเมล์) เป็นแอปเปิ้ลและผลิตภัณฑ์ของตนเป็นแป้นพิมพ์เฉพาะแอปเปิ้ลแล้วมันเป็นอย่างดีที่ถูกต้องสำหรับระบบปฏิบัติการที่จะรักษามันเป็นแป้นพิมพ์ที่แอปเปิ้ล ID ผู้ขาย 05AC รหัสผลิตภัณฑ์ 024F คือแป้นพิมพ์อะลูมิเนียมของ Apple (US)

ปัญหาตรงนี้คือ VA109M ไม่ใช่คีย์บอร์ดนั้น

แป้นพิมพ์ของ Apple มีความหมายพิเศษและผิดปกติสำหรับFnคีย์ซึ่งแตกต่างจากแป้นพิมพ์ส่วนใหญ่ ไดรเวอร์อุปกรณ์ Linux ที่เชื่อมต่อกับแป้นพิมพ์ของ Apple คือhid_appleและรู้ว่าจะจัดการFnคีย์พิเศษของ Apple ด้วย "การใช้งาน USB HID" ส่วนตัว

VA109M ไม่ใช่คีย์บอร์ดของ Apple มันคือคีย์บอร์ด Varmilo มันไม่ทำงานเหมือนแป้นพิมพ์ของ Apple มันไม่ได้ปล่อยแอปเปิ้ล USB HID พิเศษ "การใช้งาน" Fnสำหรับ เช่นเดียวกับแป้นพิมพ์ส่วนใหญ่ก็ไม่ได้ทำให้Fnมองเห็นได้ผ่านทาง USB ได้ในทุก

ดังนั้นการขับรถมันเหมือนแป้นพิมพ์แอปเปิ้ลที่มันบอกว่ามันเป็นไม่ได้ทำงาน

  • การแก้ไขที่ไม่ดีซึ่งยังไม่สำคัญในการออกกฎหมายคือการปิดใช้งานหรือลบhid_appleไดรเวอร์ออกจาก Linux
  • การแก้ไขที่ไม่ดีคือการใช้fnmode=2ตัวเลือกให้กับhid_appleไดรเวอร์เพื่อกลับFnสถานะกะ อย่างน้อยก็เปลี่ยนไปใช้ความหมายของคีย์เหล่านั้นเป็นปุ่มฟังก์ชันมากกว่าปุ่มควบคุมสื่อ / อุปกรณ์
  • การแก้ไขที่ถูกต้องคือการซื้อคีย์บอร์ดจากผู้ผลิตที่รู้วิธีตั้งรหัสผู้จำหน่ายอย่างถูกต้องแทนที่จะซื้อจาก Varmilo

อ่านเพิ่มเติม

  • Vroomfondel (2020-06-17). udev: คีย์บอร์ดผิดพลาดตรวจพบว่าเป็นแอปเปิ้ล ข้อผิดพลาด Debian # 963002
1 RoubenTchakhmakhtchian Aug 18 2020 at 03:59

ตามผู้ผลิต: https://en.varmilo.com/keyboardproscenium/subject_product_detailed?subjectid=221

Windows OS เท่านั้น macOS ไม่รองรับปุ่มลัด หากนี่หมายถึงปุ่มฟังก์ชันนี่อาจเป็นคำตอบว่าทำไม บางทีการรองรับ macOS ของพวกเขาอาจไม่แน่นอนพอ ๆ กับการรองรับ Linux