パスワードを忘れた? アカウント作成
481355 journal

rutoの日記: LinuxでMX Airはどう見えるか

日記 by ruto

今までOrbit Optical使ってたんだけど、ボタンがへたってきたのでポインティングデバイスを買い替えることにした。

またOrbit Optical買ってもいいんだけど、もうちょっと冒険してみようと思って、空中マウスの一種であるMX Airを買ってみた(腕のねじれないデバイスが欲しかった)。

で、繋いでみたところ、専用ドライバの無いLinuxでもある程度は使えた。以下詳細。

  • デスク上での移動
    → 通常のマウスの動き
  • 左右ボタン
    → 左右ボタン
  • 空中での移動
    → 通常のマウスの動き
  • ホイールをゆっくり撫でる
    → ホイールイベント
  • ホイールをすばやく動かして話す
    → 連続したホイールイベント(手を離した後も発生)。音もマウスからでる。
  • ホイール上の上下ボタン
    → ホイールイベント(オートリピート有り)
  • BACKボタン
    → サイドボタン(input.hで言うところのBTN_SIDE)
  • BACKボタンを2秒以上押す
    → 空中でのカーソル移動停止
  • SELボタン
    → 左クリック(BTN_LEFT)
  • 再生/一時停止ボタン
    → 出力無し(ただし、押しながらジェスチャをすると本体から音は出る)(追記: 別デバイスファイルで、クリック時に再生/一次停止(KEY_PLAYPAUSE)イベントを出力、ジェスチャで次の曲/前の曲(KEY_NEXTSONG/KEY_PREVIOUSSONG)イベントを出力。)
  • VOLボタン
    → 出力無し(ただし、押しながらジェスチャをすると本体から音は出る)(追記: 別デバイスファイルで、クリック時にミュート(KEY_MUTE)イベントを出力、ジェスチャで音量調節(KEY_VOLUMEDOWN/KEY_VOLUMEUP)イベントを出力)

SELが左ボタンと同じイベントなのと、再生/一時停止ボタンやVOLボタンが認識されてないのが痛い。それ以外はまぁまぁ。

さらに自作ツールでevdevを調べてみたところ、以下のイベントを発生させると宣言している。

Event type 0x00  (Sync Events)
  Report  Config
Event type 0x01  (Keys or Buttons)
  Mouse Button Left  Mouse Button Right  Mouse Button Middle  Mouse Button Side  Mouse Button Extra  Mouse Button Forward  Mouse Button Back  Mouse Button Task  Unknown 0x118  Unknown 0x119  Unknown 0x11a  Unknown 0x11b  Unknown 0x11c  Unknown 0x11d  Unknown 0x11e  Unknown 0x11f
Event type 0x02  (Relative Axes)
  X  Y  Horizontal Wheel  Wheel

以下追記

音量調節ボタンなどは別のデバイスファイルに割り当てられる。それらは以下のイベントを出力すると宣言している。

Event type 0x00  (Sync Events)
  Report  Config
Event type 0x01  (Keys or Buttons)
  Mute  Volume Down  Volume Up  Pause  Stop  Props  Undo  Copy  Paste  Find  Cut  Help  Calc  Sleep  File  WWW  Mail  Bookmarks  Back  Forward  Eject CD  Next Song  Play/Pause  Previous Song  Stop CD  Record  Rewind  Config  Homepage  Refresh  Scroll UP  Scroll DOWN  Unknown 0xb5  Unknown 0xb6  Play  Fast Forward  Bass Boost  Print  Unknown 0xe7  Unknown 0xe8  Unknown 0xe9  Unknown 0xea  Unknown 0xeb  Button 0  Program  Radio  Channel Up  Channel Down
Event type 0x02  (Relative Axes)
  Horizontal Wheel
Event type 0x03  (Absolute Axes)
   Volume        value 0 minimum 1 maximum 652 fuzz 0 flat 0

同梱されているWindows用のユーティリティー(SetPoint)で設定した設定はハードウェアに保存されるわけではないらしく、Linuxでは有効にならない。ただ、前述のプログラムの出力を見ると、キーのカスタマイズはソフトウェアによる変換ではなく、ハードが直接別のイベントを出力しているのだと予想できる。おそらく、なんらかのコマンドを送るとハードウェアが別のイベントを送信するようになるのではないかと思う。

この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。
typodupeerror

UNIXはただ死んだだけでなく、本当にひどい臭いを放ち始めている -- あるソフトウェアエンジニア

読み込み中...