パッケージのインストール
ツールが入っている「joystick」パッケージと、GUIで確認できる「jstest-gtk」パッケージをインストールする。# apt-get install joystick jstest-gtk
これで、jstest-gtkコマンドが使えるようになるので、GUIで見ながら動作するかどうかを確認する。マッピング変更もできるらしい。jstest /dev/input/js0 などとすると、コマンドラインでも確認できる。普通の使い方
さらに「xserver-xorg-input-joystick」パッケージをインストールし、Xを再起動すると、スティックがマウスカーソルに、ボタンがマウスボタンのように使えるようになる。Xの設定やら、xbindkeysの設定などすればそれはそれで良い感じで使えると思う。が、今回は消した。シェルスクリプトで処理する
ただ、Xの入力に変換すると、どこのインプットデバイスから来たのかなど設定が面倒そうなので、(cf. Multiple keyboards)今回はシンプルにシェルスクリプトと先ほどのjstestコマンド、それからキー操作がコマンドでできるxdotoolコマンドでやることにした。jstest --event /dev/input/js0 とすると、以下の感じで1行1イベントで飛んでくる。type 1がボタンのイベントで、numberがボタンの番号、valueがpress/releaseを意味している。type 2は軸の動作。
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Event: type 1, time 28407820, number 0, value 1 | |
Event: type 1, time 28407884, number 0, value 0 | |
Event: type 1, time 28408052, number 2, value 1 | |
Event: type 1, time 28408132, number 2, value 0 | |
Event: type 1, time 28408308, number 3, value 1 | |
Event: type 1, time 28408396, number 3, value 0 | |
Event: type 1, time 28408588, number 1, value 1 | |
Event: type 1, time 28408636, number 1, value 0 | |
Event: type 2, time 28411012, number 1, value -17229 | |
Event: type 2, time 28411028, number 1, value -32767 | |
Event: type 2, time 28411172, number 1, value 0 | |
Event: type 2, time 28411636, number 5, value -32767 | |
Event: type 2, time 28411796, number 5, value 0 | |
Event: type 2, time 28412500, number 1, value 10810 | |
Event: type 2, time 28412516, number 1, value 32767 | |
Event: type 2, time 28412700, number 1, value 15877 | |
Event: type 2, time 28412716, number 1, value 0 |
releaseだけ見ておけば使える感じになったので、こうなった。
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/sh | |
jstest --event /dev/input/js0 | \ | |
sed -une 's/^Event: type 1, time [0-9]*, number \([0-9]*\), value 0.*$/\1/p' | \ | |
while read BUTTON; do | |
BUTTON=`expr $BUTTON + 1` # Adjust to a printed name | |
echo "JoyKey: $BUTTON" | |
case $BUTTON in | |
1) ;; # Y: | |
2) ;; # X: | |
3) xdotool key F8;; # B: Step Over | |
4) xdotool key F7;; # A: Step Into | |
5) xdotool key Shift+F8;; # L1: Step Out | |
6) xdotool key F9;; # R1: Resume | |
7) ;; # L2: | |
8) xdotool key Ctrl+F5;; # R2: Rerun | |
9) xdotool key Ctrl+F2;; # SELECT: Stop | |
10) ;; # START: | |
esac | |
done |
sedにはバッファしない-uオプションを忘れないようにしないと、流れてこなくなる。
0 件のコメント:
コメントを投稿