Bluetooth Apple Magic Keyboard用Fnキー(2015)

Bluetooth Apple Magic Keyboard用Fnキー(2015)

使用に問題があります。アップルマジックキーボード(リチウムイオンバッテリーを搭載したBluetoothワイヤレス、充電およびテザリングを使用するためのLightningポート)Fedora 25を含む(カーネル:)4.8.15-300.fc25.x86_64

問題は、ワイヤレスモードで使用しているときにFnキーが登録されていないようです。私はそれを試しましたが、xevキー自体はイベントを発生させず、他のキーと一緒にキーを押すと他のキーだけを押すのとは異なりイベントは発生しません。そのキーを使用したいのは、Fn+ Fn/を別々にマッピングし、基本的にファンクションキーに設定されているマルチメディアキーも使用したいからです。HomeEnd

興味深いことに、ライトニングケーブルを使用してコンピュータに接続すると、キーボードは通常のApple有線キーボードのように動作します。これは、Bluetoothラジオを使用せずにOriginal AppleにUSBハードウェア/ドライバ(おそらく登録経由)を使用するためであると仮定します。アルミキーボードのUSBデバイスIDが異なりますが、これは確認されていません。)これにより、ファンクションキーだけでなく、インターネットで見つけることができるプライマリファンクションキーやマルチメディアキーなどのすべての機能を使用できます。

ただ、Bluetoothキーボードで使っても同じ機能が出てほしいです。可能であればカーネルをパッチします。しかし、どこで始めるのか、どうやってテストしてデバッグするのかわかりません(明らかにあまり「侵入的」な方法を最初に試してみたい)。

この問題を解決する方法のアイデアを歓迎します。

修正する

を読むときに/dev/hidraw0キーを押すと何らかのアクティビティが発生するため、Fnこれはfnシステムに登録されているが途中で失われたことを意味します。

アップデート2

evtestこのキーを押すとイベントは表示されずFn/dev/input/event4Magic Keyboardのイベントデバイス)、イベントは発生しません(他のキーは実行されます)。したがって、問題は、Fnシステムがキー(/dev/hidraw0データ表示を介して暗黙的に)を読み取ったが渡されないことです/dev/input/event4。しかし、Linuxでユーザー入力データストリームがどのように機能するのかわからないので、これは単なる推測です。

アップデート3

fn以下は、キーを数回押した結果です(押す+離す)。

> sudo cat /dev/hidraw2 | hexdump
0000000 0001 0000 0000 0000 0000 0001 0000 0000
0000010 0000 0200 0001 0000 0000 0000 0000 0001
0000020 0000 0000 0000 0200 0001 0000 0000 0000
0000030 0000 0001 0000 0000 0000 0200 0001 0000
0000040 0000 0000 0000 0001 0000 0000 0000 0200
0000050 0001 0000 0000 0000 0000 0001 0000 0000
0000060 0000 0200 0001 0000 0000 0000 0000 0001
0000070 0000 0000 0000 0200 0001 0000 0000 0000
0000080 0000 0001 0000 0000 0000 0200 0001 0000
0000090 0000 0000 0000 0001 0000 0000 0000 0200
00000a0 0001 0000 0000 0000 0000 0001 0000 0000
00000b0 0000 0200 0001 0000 0000 0000 0000 0001
00000c0 0000 0000 0000 0200 0001 0000 0000 0000
00000d0 0000 0001 0000 0000 0000 0200 0001 0000
00000e0 0000 0000 0000 0001 0000 0000 0000 0200
00000f0 0001 0000 0000 0000 0000 0001 0000 0000
0000100 0000 0200 0001 0000 0000 0000 0000 0001
0000110 0000 0000 0000 0200 0001 0000 0000 0000
0000120 0000 0001 0000 0000 0000 0200 0001 0000
0000130 0000 0000 0000 0001 0000 0000 0000 0200
0000140 0001 0000 0000 0000 0000 0001 0000 0000
0000150 0000 0200 0001 0000 0000 0000 0000 0001
0000160 0000 0000 0000 0200 0001 0000 0000 0000
0000170 0000 0001 0000 0000 0000 0200 0001 0000
0000180 0000 0000 0000 0001 0000 0000 0000 0200
0000190 0001 0000 0000 0000 0000 0001 0000 0000
00001a0 0000 0200 0001 0000 0000 0000 0000 0001
00001b0 0000 0000 0000 0200 0001 0000 0000 0000
00001c0 0000 0001 0000 0000 0000 0200 0001 0000
00001d0 0000 0000 0000 0001 0000 0000 0000 0200
00001e0 0001 0000 0000 0000 0000 0001 0000 0000
00001f0 0000 0200 0001 0000 0000 0000 0000 0001
0000200 0000 0000 0000 0200 0001 0000 0000 0000
0000210 0000 0001 0000 0000 0000 0200 0001 0000
0000220 0000 0000 0000 0001 0000 0000 0000 0200
0000230 0001 0000 0000 0000 0000 0001 0000 0000

奇妙な点は、発売後、たまに2行が出力されることもあるが、ほとんど1行が出力されるという点だfn

F2Fn+それぞれ次のようになりますF2

sudo cat /dev/hidraw2 | hexdump
0000000 0001 0000 0000 0000 0000 0001 3b00 0000
^[OQ0000010 0000 0000 0001 0000 0000 0000 0000 0001
^[OQ0000020 3b00 0000 0000 0000 0001 0000 0000 0000
^[OQ0000030 0000 0001 3b00 0000 0000 0000 0001 0000
0000040 0000 0000 0000 0001 3b00 0000 0000 0000
^[OQ0000050 0001 0000 0000 0000 0000 0001 3b00 0000
^[OQ0000060 0000 0000 0001 0000 0000 0000 0000 0001
^[OQ0000070 3b00 0000 0000 0000 0001 0000 0000 0000
0000080 0000 0101 0000 0000 0000 0000 0101 0600
^C

Fn+ F2:

> sudo cat /dev/hidraw2 | hexdump
0000000 0001 0000 0000 0000 0000 0001 0000 0000
^[OQ0000010 0000 0200 0001 3b00 0000 0000 0200 0001
0000020 0000 0000 0000 0200 0001 3b00 0000 0000
^[OQ0000030 0200 0001 0000 0000 0000 0200 0001 3b00
^[OQ0000040 0000 0000 0200 0001 0000 0000 0000 0200
^[OQ0000050 0001 3b00 0000 0000 0200 0001 0000 0000
^[OQ0000060 0000 0200 0001 3b00 0000 0000 0200 0001
0000070 0000 0000 0000 0200 0001 3b00 0000 0000
^[OQ0000080 0200 0001 0000 0000 0000 0200 0001 3b00
^[OQ0000090 0000 0000 0200 0001 0000 0000 0000 0200
^[OQ00000a0 0001 3b00 0000 0000 0200 0001 0000 0000
00000b0 0000 0200 0001 0000 0000 0000 0000 0101
00000c0 0000 0000 0000 0000 0101 0600 0000 0000
^C

アップデート4

@dirktの要求に応じて、レポート記述子情報は次のようになります(コメントの説明に従って行を実行できないため、ここに完全なダンプがあります。hidraw2キーボードを変更する必要があることにも注意してください)。

> sudo ./hid-desc /dev/hidraw2
Report Descriptor Size: 171
Report Descriptor:
05 01 09 06 a1 01 85 01 05 07 15 00 25 01 19 e0 29 e7 75 01 95 08 81 02 95 05 75 01 05 08 19 01 29 05 91 02 95 01 75 03 91 03 95 08 75 01 15 00 25 01 06 00 ff 09 03 81 03 95 06 75 08 15 00 25 65 05 07 19 00 29 65 81 00 95 01 75 01 15 00 25 01 05 0c 09 b8 81 02 95 01 75 01 06 00 ff 09 03 81 02 95 01 75 06 81 03 06 02 ff 09 55 85 55 15 00 26 ff 00 75 08 95 40 b1 a2 c0 06 00 ff 09 14 a1 01 85 90 05 84 75 01 95 03 15 00 25 01 09 61 05 85 09 44 09 46 81 02 95 05 81 01 75 08 95 01 15 00 26 ff 00 09 65 81 02 c0 00 

Raw Name: Magic Keyboard
Raw Phys: 00:c2:c6:f7:eb:57
Raw Info:
    bustype: 5 (Bluetooth)
    vendor: 0x004c
    product: 0x0267

ベストアンサー1

上記のヒントの助けを借りて、Apple Magic KeyboardをBluetoothに接続するときにFnキーが機能するようにするパッチを作成できました。

問題のいくつかは、Magic KeyboardがベンダーID 0x004c(AppleのBluetoothベンダーID)を表示しているのに対し、hid-appleは0x05ac(Apple USBベンダーID)のみを見つけるため、hid-appleの代わりにhid-genericモジュールが使用されることです。です。 。

2番目の問題は、元のapple_input_mappinggitログのコードで発生しました。hidinput_configure_usage

パッチはここに掲載されています:https://bugzilla.kernel.org/show_bug.cgi?id=99881#c41

おすすめ記事