Fnが押されているかどうかに関係なく、キーボードファンクションキーは常にメディアショートカットをトリガーします

Aug 17 2020

最近、VarmiloVA109Mメカニカルキーボードを購入しました。Windowsでは問題なく動作しますが、専用のFn修飾キーを持っているかどうかに関係なく、F1-F12ファンクションキーが常にメディアショートカットをアクティブにするように見えるという点で、Ubuntuのインストールを混乱させるようです。たとえば、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モード」に切り替えることもできるはずです。あなたが期待することは、それはMacにそれを適切に扱わせるためのAppleキーボードとしてそれ自身を識別します。

ただし、Macだけでなく、すべてのキーボードに誤ってファームウェアをフラッシュしたようです。これは、IDを無視するため、Windowsでは目立ちませんが、Linuxではhid_appleドライバーがアクティブになります。

解決:

答えの部分に移ります。これを解決するための2つの大きなオプションがあります。私は両方をテストし、2番目の方がはるかに優れていることを発見しました。

  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のみのバージョンでは使用されていなかった「Windows / Macモードへの切り替え」機能も削除されます。ただし、テストしなかった場合は、Macファームウェアをフラッシュして古い動作に戻すことができます。

3 JdeBP Aug 21 2020 at 15:23

VarmiloはUSBを正しく実行しません。避ける。

WWWの周りには、そのキーボードが様々にあることが分かる偽っアップル(Varmilo VS109MによっておよびVarmilo VA88Mにより記載のベンダーID 05ac)としてその製造元を報告し、サイプレス(ベンダーID 04b4 Varmilo Z104Mで記載)、ROFエレクトロニクス(ベンダーID FFFF、Varmilo VA87Mにより記載)、ノルディックセミコンダクタ(ベンダーID 1915 Varmilo VB87Mにより記載)、HOLTEK、より。

これは明らかに誤りであり、非常に問題があります。

ハードウェアデバイスが(PCI、USBなどのバスのデバイス列挙で)その製造元をAppleとして識別し、その製品を特定のAppleキーボードとして識別した場合、オペレーティングシステムがそれをそのAppleキーボードとして扱うことは完全に正当です。ベンダーID05AC製品ID024Fは、Appleアルミニウムキーボード(米国)です。

ここでの問題は、VA109Mがそのキーボードではないということです。

AppleキーボードにはFn、ほとんどのキーボードとは異なる、キーの特別で珍しいセマンティクスがあります。Appleキーボードに接続されるLinuxデバイスドライバーはhid_appleであり、Appleの特別なFnキーをそのプライベートUSBHID「使用法」で処理することを知っています。

VA109MはAppleキーボードではありません。Varmiloキーボードです。Appleキーボードのようには機能しません。Appleの特別なUSBHID「使用法」を放出しませんFn。ほとんどのキーボードのように、それはなりませんFnUSB経由で見えるすべてで

そのため、Appleキーボードのようにそれを運転すると、それは機能しません

  • 不十分な修正は、制定するのも簡単ではありませんがhid_apple、Linuxからドライバーを無効にするか削除することです。
  • 不十分な修正はfnmode=2hid_appleドライバーのオプションを使用してFnシフト状態を反転することです。それは少なくとも、メディア/デバイスのコントロールキーではなくファンクションキーであるこれらのキーのセマンティクスに切り替わります。
  • 正しい解決策は、Varmiloからではなく、ベンダーIDを適切に設定する方法を知っているメーカーからキーボードを購入することです。

参考文献

  • Vroomfondel(2020-06-17)。udev:キーボードがAppleとして誤って検出されました。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サポートと同じくらいむらがあります。