スポンサーリンク

JOY(4) FreeBSD/i386 カーネルインタフェースマニュアル JOY(4)

名称

joy − ジョイスティックのデバイスドライバ

書式

device joy0 at isa? port IO_GAME #include <machine/joystick.h>

解説

ジョイスティックデバイスドライバは、アプリケーションが PC ジョイスティッ クの状態を読み出せるようにします。

ある時点でこのデバイスをオープンできるプロセスは 1 つだけです。

ジョイスティックの状態は、read() システムコールによって、 joystick 構造体 に入れられます。この構造体はヘッダファイルで次のように定義されています。

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 * 型の引数を 1 つ 取ります。

       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?

ジョイスティックのデバイスファイル

作者

Jean-Marc Zucconi ⟨jmz@cabri.obs-besancon.fr⟩

歴史

joystick ドライバは FreeBSD 2.0.5 に初めて登場しました。

FreeBSD 10.0 January 23, 1995 FreeBSD 10.0

スポンサーリンク