EN JA
JOY(4)
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 で登場しました。

作者

Jean-Marc Zucconi <jmz@cabri.obs-besancon.fr>
January 23, 1995 FreeBSD