JOY(4) | FreeBSD Kernel Interfaces Manual | JOY(4) |
名称
joy — ジョイスティックのデバイスドライバ書式
このドライバをカーネルにコンパイルするためには、次の行を利用者のカーネル設定ファイルに置きます:
device joy
もう一つの方法として、ブート時にモジュールとしてドライバをロードするためには、次の行を loader.conf(5) に置きます:
joy_load="YES"
/boot/device.hints 中で:
hint.joy.0.at="isa"
hint.joy.0.port="0x201"
hint.joy.1.at="isa"
hint.joy.1.port="0x201"
#include < sys/joystick.h>
解説
ジョイスティックのデバイスドライバによって、アプリケーションは、 PC のジョイスティックの状態を読み込むことができます。一度に 1 つのプロセスによってのみ、このデバイスをオープンすることができます。
ジョイスティックの状態は、read() 呼び出しによって構造体から読み込まれます。構造体は、次のヘッダファイルに定義されています:
struct joystick { int x; /* x 位置 */ int y; /* y 位置 */ int b1; /* ボタン 1 の状態 */ int b2; /* ボタン 2 の状態 */ };
位置は、一般的に範囲 0-2000 です。
perl の 1 行例:
perl -e 'open(JOY,"/dev/joy0")||die;while(1) {sysread(JOY,$x,16);@j=unpack("iiii",$x);print "@j\n";sleep(1);}'
ioctl 呼び出し
また、いくつかの ioctl() 呼び出しが利用可能です。それらは、タイプ int * の引数を取ります。- JOY_SETTIMEOUT int *limit
- ジョイスティックの状態の読み込むための (マイクロ秒単位の) 時間制限を設定します。値を小さすぎるように設定することは、(次に、それらは -2147483648 に設定される) 位置に対して正確な値を取得することを防ぎますが、ボタンの状態だけに興味があるなら、これは、役に立つかもしれません。
- JOY_GETTIMEOUT int *limit
- ジョイスティックの状態の読み込むために使用される (マイクロ秒単位の) 時間制限を取得します。
- JOY_SET_X_OFFSET int *offset
- ジョイスティックの状態を読み込むとき、X 位置に追加される値を設定します。
- JOY_SET_Y_OFFSET int *offset
- ジョイスティックの状態を読み込むとき、Y 位置に追加される値を設定します。
- JOY_GET_X_OFFSET int *offset
- ジョイスティックの状態を読み込むとき、X 位置に追加される値を取得します。
- JOY_GET_Y_OFFSET int *offset
- ジョイスティックの状態を読み込むとき、Y 位置に追加される値を取得します。
技術的な仕様
DB-15 コネクタのピン配置は、次の通りです:
1 XY1 (+5v) 2 スイッチ 1 3 X1 (ポテンショメータ #1) 4 スイッチ 1 (GND) 5 スイッチ 2 (GND) 6 Y1 (ポテンショメータ #2) 7 スイッチ 2 8 N.C. 9 XY2 (+5v) 10 スイッチ 4 11 X2 (ポテンショメータ #3) 12 スイッチ 3&4 (GND) 13 Y2 (ポテンショメータ #4) 14 スイッチ 3 15 N.C.
ポテンショメータ (分圧器) は、通常 0-150k (ときどき 0-100k) の可変抵抗器で、 IBM の技術文献によれば、時間は、 Time = 24.2e-6s + 0.011e-6s * R/Ohms によって与えられます。
関連ファイル
- /dev/joy?
- ジョイスティックのデバイスファイル
歴史
joy ドライバは、 FreeBSD 2.0.5 で登場しました。作者
<jmz@cabri.obs-besancon.fr>January 23, 1995 | FreeBSD |