極楽とんぼのロボット製作記

情報工学系大学院生がロボットとその周辺技術や身の回りの出来事について紹介するブログ

【Ubuntu】ジョイスティック(PS3コントローラ)がマウスとして認識されてしまう問題

ロボットを動かそうとしてPS3コントローラをPCに接続したところ、コントローラのジョイスティックがマウスとして認識され、ジョイスティックを動かす度にポインタが移動してしまう現象が発生しました。対処策は以下の通りです。

xserver-xorg-input-joystickの削除

xserver-xorg-input-joystickが入っている場合、これが悪さをしている可能性があります。下記コマンドから削除しましょう。
$ sudo apt purge xserver-xorg-input-joystick

xserver-xorg-input-joystickが入っていない、もしくは消しても直らない

xserver-xorg-input-joystickが入っていない、もしくは消しても直らない場合は以下を実行します。まずxinputを使って認識されているデバイスのリストを出します。

$ xinput -list
⎡ Virtual core pointer                          id=2    [master pointer  (3)]
⎜   ↳ Virtual core XTEST pointer                id=4    [slave  pointer  (2)]
⎜   ↳ SynPS/2 Synaptics TouchPad                id=12   [slave  pointer  (2)]
⎜   ↳ Logitech M545/M546                        id=9    [slave  pointer  (2)]
⎜   ↳ Sony PLAYSTATION(R)3 Controller           id=14   [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)]
    ↳ Video Bus                                 id=7    [slave  keyboard (3)]
    ↳ Power Button                              id=8    [slave  keyboard (3)]
    ↳ USB HD Webcam: USB HD Webcam              id=10   [slave  keyboard (3)]
    ↳ AT Translated Set 2 keyboard              id=11   [slave  keyboard (3)]
    ↳ Panasonic Laptop Support                  id=13   [slave  keyboard (3)]

問題のSony PLAYSTATION(R)3 Controllerが認識されていることがわかります(他のコントローラの場合は適宜読み替えてください)。再びxinputを使ってコントローラのプロパティを参照します。

$ xinput watch-props 'Sony PLAYSTATION(R)3 Controller' 
Device 'Sony PLAYSTATION(R)3 Controller':
        Device Enabled (141):   1
        Coordinate Transformation Matrix (143): 1.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 1.000000
        Device Accel Profile (273):     0
        Device Accel Constant Deceleration (274):       1.000000
        Device Accel Adaptive Deceleration (275):       1.000000
        Device Accel Velocity Scaling (276):    10.000000
        Device Product ID (262):        1356, 616
        Device Node (263):      "/dev/input/event17"
        Evdev Axis Inversion (277):     0, 0
        Evdev Axis Calibration (278):   <no items>
        Evdev Axes Swap (279):  0
        Axis Labels (280):      "Abs X" (391), "Abs Y" (392), "Abs Z" (604), "Abs Rotary X" (605), "Abs Rotary Y" (606), "Abs Rotary Z" (607)
        Evdev Scrolling Distance (282): 0, 0, 0

Device Enabledのフラグを1から0に変更します。 $ xinput set-prop 'Sony PLAYSTATION(R)3 Controller' 'Device Enabled' 0 以上でマウスとして認識されなくなっていれば成功です。

参考サイト
10.10 - Joystick acts as mouse; won't stop - Ask Ubuntu
Ubuntuでジョイスティックをつなぐとマウスポインターも動いてしまう: 電気羊の夢を見た
タッチパッドの有効無効を一発で@Ubuntu10.04 - 何にしても生っかじりの朴念仁