次の方法で共有


レジストリの設定

レジストリは、構成、調整、およびユーザー設定情報の格納を目的としてジョイスティック インターフェイスによって使用されます。 また、調整プログラム用にカスタマイズされたテキストを格納するためにも使用されます。 Windows 95/98/Me のジョイスティック調整プログラムは、ジョイスティックに固有の調整中にユーザーに指示を提供するために、レジストリを介してカスタマイズできます。

値は 5 つのグループに分類されます。

OEM によって提供され、INF ファイル (前述) からインストールされた元のデータ。

ユーザー値

現在のレジストリ設定には、格納する値 (標準ポーリングの代わりとなる値) と、機能、調整された値、およびミニドライバー データが格納されるキーの 2 つの部分があります。

関連付けられたミニドライバーを持たないデバイスをポーリングし、標準のポーリングを置き換えるために使用するミニドライバーは、REGSTR_VAL_JOYCALLOUT という名前のキーで定義できます。 この機能は DirectX 3.0 の新機能でした。 値は、コントロール パネルの詳細設定ページで、JOY_HWS_ISGAMEPORTDRIVER フラグが設定されているすべてのミニドライバーを含む一覧から、ユーザーが新しいグローバル ドライバーを選択すると設定されます。

その他の設定は、REGSTR_KEY_JOYCURR キーに格納されます。 デバイスが最初に特定のジョイスティック ID に構成されると、コントロール パネルは、REGSTR_PATH_JOYOEM の関連する OEM キーからREGSTR_KEY_JOYCURR キーに値をコピーします。 このキーの下の各キー値の名前には、名前の一部としてジョイスティック ID が含まれているため、ジョイスティックごとに独自の設定を持つことができます。 REGSTR_VAL_JOYOEMNAME 値は関連する REGSTR_VAL_JOYNOEMNAME にコピーされ、存在する場合は REGSTR_VAL_JOYOEMCALLOUT 値が REGSTR_VAL_JOYNOEMCALLOUT にコピーされます。 REGSTR_VAL_JOYOEMDATA 値は、REGSTR_VAL_JOYNCONFIG 値の最初の 2 つのダブルワードとして使用され、その値の全体は次のように定義されます (展開されている場合)。

struct {
  /* usage settings, copied from REGSTR_VAL_JOYOEMNAME */
  struct {
    DWORD   dwFlags;
    DWORD   dwNumButtons;
  } hws;

  /* usage flags, described below */
  DWORD    dwUsageSettings;

  struct {
    /* values returned by hardware during calibration */
    struct {
      /* minimums for each axis */
      struct {
        DWORD    dwX;
        DWORD    dwY;
        DWORD    dwZ;
        DWORD    dwR;
        DWORD    dwU;
        DWORD    dwV;
      } jpMin;
      /* maximums for each axis */
      struct {
        DWORD    dwX;
        DWORD    dwY;
        DWORD    dwZ;
        DWORD    dwR;
        DWORD    dwU;
        DWORD    dwV;
      } jpMax;
      /* center positions for each axis */
      struct
      {
        DWORD    dwX;
        DWORD    dwY;
        DWORD    dwZ;
        DWORD    dwR;
        DWORD    dwU;
        DWORD    dwV;
      } jpCenter;
    } jrvHardware;

    /* POV values returned by hardware during calibration */
    DWORD   dwPOVValues[JOY_POV_NUMDIRS];

    /* calibration flags, described below */
    DWORD   dwCalFlags;
  } hwv;

  /* type of joystick, described below */
  DWORD   dwType;

  /* reserved for OEM drivers */
  DWORD   dwReserved;
};

使用法の設定は、次の値の組み合わせです。

設定 説明
JOY_US_HASRUDDER 0x00000001 ラダーで構成されたジョイスティック
JOY_US_PRESENT 0x00000002 ジョイスティックが実際に存在するか
JOY_US_ISOEM 0x00000004 ジョイスティックは OEM によって定義されたタイプである
JOY_US_RESERVED 0x80000000 予約されています。

調整フラグは、次の値の組み合わせです。

フラグ 説明
JOY_ISCAL_XY 0x00000001 XY が調整済み
JOY_ISCAL_Z 0x00000002 Z が調整済み
JOY_ISCAL_R 0x00000004 R が調整済み
JOY_ISCAL_U 0x00000008 U が調整済み
JOY_ISCAL_V 0x00000010 V が調整済み
JOY_ISCAL_POV 0x00000020 POV が調整済み

dwType メンバーは、定義済みのジョイスティックの種類を表す数値を保持します。 OEM 調整ユーティリティでこの値を設定する場合は、Mmddk.h で定義されている値の範囲外の値を設定する必要があります。 標準のコントロール パネルによってリセットされるため、値の正確性はそれほど重要ではありません。

現在の設定

これらのレジストリ設定は、「INF ファイルの作成」で説明されているように、INF ファイルからのインストール時、および起動時のデバイス列挙時に設定されます。

保存された設定

現在のジョイスティック設定を保存すると、REGSTR_KEY_JOYCURR キーの下に保存されている REGSTR_VAL_JOYNCONFIG も、OEM 定義の設定の取得元と同じ名前のサブキーの REGSTR_KEY_JOYSETTINGS キーの下に書き込まれます (OEM 以外の設定は、"predef" と種類を示す番号で構成されたサブキーに保存されます)。 ジョイスティックを交換した場合でも保存された設定は維持され、そのジョイスティックを再度使用したときに、保存された設定が現在の設定に戻されます。 これらのレジストリ値は、コントロール パネルによってのみ使用されます。

ドライバーの設定

REGSTR_VAL_JOYUSERVALUES という名前の単一の値には、以下で説明する構造体が格納されます。 この構造体は、アプリケーションがデータのスケーリング、センタリング、またはデッド ゾーンの定義を要求するときに、VJoyD によってデータを操作する方法を指定します。

struct {
  /* value at which to time-out internal joystick polling */
  DWORD   dwTimeOut;

  /* range of values app wants returned for axes */
  struct {
    /* minimums for each axis */
    struct {
      DWORD  dwX;
      DWORD  dwY;
      DWORD  dwZ;
      DWORD  dwR;
      DWORD  dwU;
      DWORD  dwV;
    } jpMin;
    /* maximums for each axis */
    struct {
      DWORD  dwX;
      DWORD  dwY;
      DWORD  dwZ;
      DWORD  dwR;
      DWORD  dwU;
      DWORD  dwV;
    } jpMax;
    /* center positions for each axis */
    struct {
      DWORD  dwX;
      DWORD  dwY;
      DWORD  dwZ;
      DWORD  dwR;
      DWORD  dwU;
      DWORD  dwV;
    } jpCenter;
  } jrvRanges;

  /* area around center to be considered as "dead". specified as */
  /* a percentage (0-100). Only X & Y handled by system driver */
  struct {
    DWORD  dwX;
    DWORD  dwY;
    DWORD  dwZ;
    DWORD  dwR;
    DWORD  dwU;
    DWORD  dwV;
  } jpDeadZone;
}

ユーザー値、現在の設定、保存された設定はすべて、「現在の」ジョイスティック ドライバーに属するパスの下のレジストリに格納されます。 ドライバーがインストールされている各ジョイスティック デバイスには、Msjstick.drv<xxxx> という形式のパス REGSTR_PATH_JOYCONFIGの下にキーがあります。ここで、xxxx はキー名を一意に保つために使用される 4 桁の数値です。 この数は、インストールされているマルチメディア (サウンド、ビデオ、ゲーム コントローラー) ドライバーの数に関連します。 Msjstick.drv は、起動時に各ゲーム コントローラー ドライバーの構成に初期化されます。 一度に 1 つの構成しか処理できないので、それぞれが最後の構成を置き換え、「現在の」ドライバーが初期化される最後のドライバーになります。 つまり、新しいドライバーをインストールすると、ユーザーは現在の設定をすべて失う可能性があるため、これらのレジストリ値へのパスが常に同じであるという前提でミニドライバーを構成することはできません。