tail head cat sleep
QR code linking to this page

manページ  — JOY

名称

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 ;sleep(1);}'

ioctl 呼び出し

いくつかの ioctl() 呼び出しも利用できます。 これらは int * 型の引数を 1 つ取ります。
JOY_SETTIMEOUTint, *limit
  ジョイスティックの状態を読み出す際の時間制限 (マイクロ秒単位) を設定します。 あまり小さな値を設定すると正しい位置の値を得ることができなくなります (その場合は -2147483648 になります) が、 それでもボタンの状態だけに注目している場合には役に立つかもしれません。
JOY_GETTIMEOUTint, *limit
  ジョイスティックの状態を読み出す際の時間制限 (マイクロ秒単位) を得ます。
JOY_SET_X_OFFSETint, *offset
  ジョイスティックの状態を読み出す際に X 位置に加算する値を設定します。
JOY_SET_Y_OFFSETint, *offset
  ジョイスティックの状態を読み出す際に Y 位置に加算する値を設定します。
JOY_GET_X_OFFSETint, *offset
  ジョイスティックの状態を読み出す際に X 位置に加算する値を得ます。
JOY_GET_Y_OFFSETint, *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 に初めて登場しました。

JOY (4) January 23, 1995

tail head cat sleep
QR code linking to this page


このマニュアルページサービスについてのご意見は Ben Bullock にお知らせください。 Privacy policy.

If you have any trouble sounding condescending, find a Unix user to show you how it's done.
— Scott Adams