Razerキーボード:Xでキーボードをマウスとして使用

Razerキーボード:Xでキーボードをマウスとして使用

OPが完全に再編集されました。

私のものRazer Cynosa Tarantula Chroma エディション3つのインターフェース(1)を提供する物理デバイス(デフォルトではPC_105キーボード以下)。 1つはいくつかのスキャンコードを同時に送信するためのもので、もう1つはキーが押されたときに内部でトランスコードされたいくつかのマウスレポートを送信することです。

Xで後者をマウスとして使用する方法を探しています。


3つのインタフェースはすべて起動時に正しく列挙され、適切なHID汎用カーネル組み込みドライバにバインドされます(2)

その後、バウンスレジェンバードパターン検出中のドライバ(3)

これらはそれぞれ後で入力イベントに関連付けられ、X11サーバー(xorg-server-21.1.4)によって登録されます。

  • これらのデバイスの一般的な方法は、キーボードタイプの最初のインターフェイス(デバイスID 9)とマウスタイプの3番目のインターフェイス(デバイスID 11)に関するものです(4)。
  • 2番目のキーボードタイプ(デバイスID 10)の場合、奇妙で少なくとも不明な方法でした。 (5)(マウスで構成/キーボード順に構成を参照)

これらすべてが報告を混乱させます。

$ xinput --list --short
⎡ Virtual core pointer                          id=2    [master pointer  (3)]
⎜   ↳ Virtual core XTEST pointer                id=4    [slave  pointer  (2)]
⎜   ↳ MOSART Semi. 2.4G Wireless Mouse          id=8    [slave  pointer  (2)]
⎜   ↳ Razer Razer Cynosa Chroma                 id=10   [slave  pointer  (2)]
⎜   ↳ Razer Razer Cynosa Chroma                 id=11   [slave  pointer  (2)]
⎣ Virtual core keyboard                         id=3    [master keyboard (2)]
    ↳ Virtual core XTEST keyboard               id=5    [slave  keyboard (3)]
    ↳ Power Button                              id=6    [slave  keyboard (3)]
    ↳ Power Button                              id=7    [slave  keyboard (3)]
    ↳ Razer Razer Cynosa Chroma                 id=9    [slave  keyboard (3)]

(デバイスID 10番はスレーブポインタでのみ報告され、もともとはキーボードの種類として登録されていました。)

cat /dev/input/event5任意のキーを押すとマウスなどのトラフィックが印刷され、event5はデバイスID 10に接続されているため、キーボードxinput --test-xi2 10イベントタイプ13のみが記録されます(オリジナルキー)と14(オリジナルキーリリース)

evdevは混乱していますか?


1:lsusb -vs 008:002レポート:

$ lsusb -vs 008:002 
Bus 008 Device 002: ID 1532:022a Razer USA, Ltd Cynosa Chroma
Device Descriptor:
  Configuration Descriptor:
    bNumInterfaces          3
    Interface Descriptor:
      bInterfaceClass         3 Human Interface Device
      bInterfaceSubClass      1 Boot Interface Subclass
      bInterfaceProtocol      1 Keyboard
    Interface Descriptor:
      bInterfaceClass         3 Human Interface Device
      bInterfaceSubClass      0 
      bInterfaceProtocol      1 Keyboard
    Interface Descriptor:
      bInterfaceClass         3 Human Interface Device
      bInterfaceSubClass      0 
      bInterfaceProtocol      2 Mouse

2: BootlogはUSBデバイスを列挙します。

[kernel] input: Razer Razer Cynosa Chroma as /devices/pci0000:00/0000:00:1d.2/usb8/8-2/8-2:1.0/0003:1532:022A.0002/input/input4
[kernel] hid-generic 0003:1532:022A.0002: input: USB HID v1.11 Keyboard [Razer Razer Cynosa Chroma] on usb-0000:00:1d.2-2/input0
[kernel] input: Razer Razer Cynosa Chroma Keyboard as /devices/pci0000:00/0000:00:1d.2/usb8/8-2/8-2:1.1/0003:1532:022A.0003/input/input5
[kernel] input: Razer Razer Cynosa Chroma Consumer Control as /devices/pci0000:00/0000:00:1d.2/usb8/8-2/8-2:1.1/0003:1532:022A.0003/input/input6
[kernel] hid-generic 0003:1532:022A.0003: input: USB HID v1.11 Keyboard [Razer Razer Cynosa Chroma] on usb-0000:00:1d.2-2/input1
[kernel] input: Razer Razer Cynosa Chroma as /devices/pci0000:00/0000:00:1d.2/usb8/8-2/8-2:1.2/0003:1532:022A.0004/input/input9
[kernel] hid-generic 0003:1532:022A.0004: input: USB HID v1.11 Mouse [Razer Razer Cynosa Chroma] on usb-0000:00:1d.2-2/input2

3: modprobe 時 Razer インターフェイスの再バインド

[kernel] input: Razer Razer Cynosa Chroma as /devices/pci0000:00/0000:00:1d.2/usb8/8-2/8-2:1.0/0003:1532:022A.0002/input/input10
[kernel] razerkbd 0003:1532:022A.0002: input: USB HID v1.11 Keyboard [Razer Razer Cynosa Chroma] on usb-0000:00:1d.2-2/input0
[kernel] input: Razer Razer Cynosa Chroma as /devices/pci0000:00/0000:00:1d.2/usb8/8-2/8-2:1.1/0003:1532:022A.0003/input/input11
[kernel] razerkbd 0003:1532:022A.0003: input: USB HID v1.11 Keyboard [Razer Razer Cynosa Chroma] on usb-0000:00:1d.2-2/input1
[kernel] input: Razer Razer Cynosa Chroma as /devices/pci0000:00/0000:00:1d.2/usb8/8-2/8-2:1.2/0003:1532:022A.0004/input/input12
[kernel] razerkbd 0003:1532:022A.0004: input: USB HID v1.11 Mouse [Razer Razer Cynosa Chroma] on usb-0000:00:1d.2-2/input2

4: 最初のキーボードインタフェースとマウスインタフェースのXCONFIG-ing

config/udev: Adding input device Razer Razer Cynosa Chroma (/dev/input/event4)
Razer Razer Cynosa Chroma: Applying InputClass "evdev keyboard catchall"
Razer Razer Cynosa Chroma: Applying InputClass "system-keyboard"
Using input driver 'evdev' for 'Razer Razer Cynosa Chroma'
systemd-logind: got fd for /dev/input/event4 13:68 fd 39 paused 0
Razer Razer Cynosa Chroma: always reports core events
evdev: Razer Razer Cynosa Chroma: Device: "/dev/input/event4"
evdev: Razer Razer Cynosa Chroma: Vendor 0x1532 Product 0x22a
evdev: Razer Razer Cynosa Chroma: Found keys
evdev: Razer Razer Cynosa Chroma: Configuring as keyboard
Option "config_info" "udev:/sys/devices/pci0000:00/0000:00:1d.2/usb8/8-2/8-2:1.0/0003:1532:022A.0002/input/input10/event4"
Adding extended input device "Razer Razer Cynosa Chroma" (type: KEYBOARD, id 9)
Option "xkb_rules" "evdev"

config/udev: Adding input device Razer Razer Cynosa Chroma (/dev/input/event6)
Razer Razer Cynosa Chroma: Applying InputClass "evdev pointer catchall"
Using input driver 'evdev' for 'Razer Razer Cynosa Chroma'
systemd-logind: got fd for /dev/input/event6 13:70 fd 41 paused 0
Razer Razer Cynosa Chroma: always reports core events
evdev: Razer Razer Cynosa Chroma: Device: "/dev/input/event6"
evdev: Razer Razer Cynosa Chroma: Vendor 0x1532 Product 0x22a
evdev: Razer Razer Cynosa Chroma: Found 9 mouse buttons
evdev: Razer Razer Cynosa Chroma: Found scroll wheel(s)
evdev: Razer Razer Cynosa Chroma: Found relative axes
evdev: Razer Razer Cynosa Chroma: Found x and y relative axes
evdev: Razer Razer Cynosa Chroma: Configuring as mouse
evdev: Razer Razer Cynosa Chroma: Adding scrollwheel support
evdev: Razer Razer Cynosa Chroma: YAxisMapping: buttons 4 and 5
evdev: Razer Razer Cynosa Chroma: EmulateWheelButton: 4, EmulateWheelInertia: 10, EmulateWheelTimeout: 200
Option "config_info" "udev:/sys/devices/pci0000:00/0000:00:1d.2/usb8/8-2/8-2:1.2/0003:1532:022A.0004/input/input12/event6"
XINPUT: Adding extended input device "Razer Razer Cynosa Chroma" (type: MOUSE, id 11)
evdev: Razer Razer Cynosa Chroma: initialized for relative axes.
Razer Razer Cynosa Chroma: (accel) keeping acceleration scheme 1
Razer Razer Cynosa Chroma: (accel) acceleration profile 0
Razer Razer Cynosa Chroma: (accel) acceleration factor: 2.000
Razer Razer Cynosa Chroma: (accel) acceleration threshold: 4

5:2番目のキーボードインターフェイスのXCONFIG-ingは不明です。

config/udev: Adding input device Razer Razer Cynosa Chroma (/dev/input/event5)
Razer Razer Cynosa Chroma: Applying InputClass "evdev keyboard catchall"
Razer Razer Cynosa Chroma: Applying InputClass "system-keyboard"
Using input driver 'evdev' for 'Razer Razer Cynosa Chroma'
systemd-logind: got fd for /dev/input/event5 13:69 fd 40 paused 0
Razer Razer Cynosa Chroma: always reports core events
evdev: Razer Razer Cynosa Chroma: Device: "/dev/input/event5"
evdev: Razer Razer Cynosa Chroma: Vendor 0x1532 Product 0x22a
evdev: Razer Razer Cynosa Chroma: Found 1 mouse buttons
evdev: Razer Razer Cynosa Chroma: Found scroll wheel(s)
evdev: Razer Razer Cynosa Chroma: Found relative axes
evdev: Razer Razer Cynosa Chroma: Forcing relative x/y axes to exist.
evdev: Razer Razer Cynosa Chroma: Found absolute axes
evdev: Razer Razer Cynosa Chroma: Forcing absolute x/y axes to exist.
evdev: Razer Razer Cynosa Chroma: Found keys
evdev: Razer Razer Cynosa Chroma: Configuring as mouse
evdev: Razer Razer Cynosa Chroma: Configuring as keyboard
evdev: Razer Razer Cynosa Chroma: Adding scrollwheel support
evdev: Razer Razer Cynosa Chroma: YAxisMapping: buttons 4 and 5
evdev: Razer Razer Cynosa Chroma: EmulateWheelButton: 4, EmulateWheelInertia: 10, EmulateWheelTimeout: 200
Option "config_info" "udev:/sys/devices/pci0000:00/0000:00:1d.2/usb8/8-2/8-2:1.1/0003:1532:022A.0003/input/input11/event5"
XINPUT: Adding extended input device "Razer Razer Cynosa Chroma" (type: KEYBOARD, id 10)
Option "xkb_rules" "evdev"
evdev: Razer Razer Cynosa Chroma: initialized for relative axes.
evdev: Razer Razer Cynosa Chroma: ignoring absolute axes.
Razer Razer Cynosa Chroma: (accel) keeping acceleration scheme 1
Razer Razer Cynosa Chroma: (accel) acceleration profile 0
Razer Razer Cynosa Chroma: (accel) acceleration factor: 2.000
Razer Razer Cynosa Chroma: (accel) acceleration threshold: 4

ベストアンサー1

背景情報:Xには元のマウスとキーボードしかありませんでした。 XINPUT拡張(現在の2番目のメジャーバージョン)はこれをより柔軟にします。元のシングルマウスと単一のキーボードを「コアポインタ」と「コアキーボード」に保ちますが、コアペアなどの追加の「マスターデバイス」を許可し、すべてのデバイスをマスターデバイスに接続できるスレーブデバイスに切り替えます。 XアプリケーションはXINPUTイベントを直接照会することもできますが、実際にこれを実行するアプリケーションはほとんどなく、ほとんど「核心」イベントにのみ反応します。

デフォルトでは(少なくとも私のシステムでは)すべてのevdevデバイスは「コア」マスターデバイスに接続され、キーボードまたはマウスとして機能します。明らかに、これはあなたのシステムでは動作しません。を使用して現在のマッピングを表示し、マッピングに関係なく特定のデバイスが実際に出力を生成していることをxinput --list確認できます。xinput --test-xi2 <device id>

完全性のために、より低いレベルでイベントをデバッグする必要がある場合(Xがイベントを処理する前に)、evtestカーネル入力層で何が起こっているのかを確認すると便利です。

xinput --test-xi2 <razor id>したがって、何らかの理由で「Razerキーボードマウス」がコアポインタに接続されていないために機能しない場合、マウスイベントを表示できる場合は、必要に応じてxinput --float <razor id>`xinputを使用して接続を解除できます。 - コアポインタに接続されています。 <コアポインタID'を再接続してください。

たとえば、「Razerキーボードマウス」でキーボードイベントが発生した場合など、他のことが発生した場合(何かわかりません。これまでに追加情報を提供していません)、状況はより複雑になります。

udevおよび/またはxorg.confが混乱していても、コマンドラインツールを使用してすべてを動作状態にすることができます(マウスイベントが発生しないなど、より根本的な問題がない限り)。これが完了したら、設定ファイルを確認して永久に作成できます。


さて、新しい情報があります。 3つの入力層デバイス(元の質問によると2つではありません)と、対応する3つのXデバイス、キーボード、マウス、およびハイブリッドデバイスがあります。

したがって、最初のステップは、これらのデバイスがカーネル入力層で何をしているのかを理解することです。したがって、evtest3つすべてを実行します。これを使用するときは、シンボリックリンクを使用して3つ/dev/input/by-*すべてを参照し、最も便利なものを選択してください(by-id十分です)。質問を編集し、押したキーとそのキーが望む効果があったかどうかを含む3つの関連出力をすべて提供します。

3つのデバイスすべてについてこの手順を繰り返し、xinput --test-xi2 ...イベントがXに正しく変換されていることを確認してください。

Xポインタイベントを生成する2つのデバイスがある場合(たとえば、ハイブリッドデバイスとマウスの両方がこれらのイベントを生成する場合)、混合デバイスをフローティングします。これは正常に動作し、xev必要に応じてテストに使用できます。

どのデバイスもXポインタイベントを生成しない場合は、何が起こっているのかを理解するために詳細を確認する必要があります。

おすすめ記事