// 生成と終了 /// <summary> /// コンストラクタ。 /// ゲームコントローラデバイスをRawInputに登録する。 /// </summary> /// <param name="hWindow"> /// 対象とするウィンドウのハンドル。<see cref="IntPtr.Zero"/> にすると、キーボードフォーカスに追従する。 /// </param> public GameControllersHID(IntPtr hWindow, SoundTimer soundTimer) { using var _ = new LogBlock(Log.現在のメソッド名); this._SoundTimer = soundTimer; this.入力イベントリスト = new List <InputEvent>(); this.Devices = new Dictionary <IntPtr, GameControllerHIDProperty>(); // 登録したいデバイスの配列(ここでは2個)。 var devs = new RawInput.RawInputDevice[] { new RawInput.RawInputDevice { usUsagePage = UsagePage.Generic, // Genericページの usUsage = UsageId.GenericGamepad, // Genericゲームパッドと、 Flags = RawInput.DeviceFlags.None, hwndTarget = hWindow, }, new RawInput.RawInputDevice { usUsagePage = UsagePage.Generic, // Genericページの usUsage = UsageId.GenericJoystick, // Genericジョイスティック。 Flags = RawInput.DeviceFlags.None, hwndTarget = hWindow, } }; // デバイスを登録。 RawInput.RegisterRawInputDevices(devs, devs.Length, Marshal.SizeOf <RawInput.RawInputDevice>()); }
// 生成と終了 public KeyboardHID(SoundTimer soundTimer) { using var _ = new LogBlock(Log.現在のメソッド名); this._SoundTimer = soundTimer; // 登録したいデバイスの配列(ここでは1個)。 var devs = new RawInput.RawInputDevice[] { new RawInput.RawInputDevice { usUsagePage = UsagePage.Generic, // Genericページの usUsage = UsageId.GenericKeyboard, // Genericキーボード。 Flags = RawInput.DeviceFlags.None, hwndTarget = IntPtr.Zero, }, }; // デバイスを登録。 RawInput.RegisterRawInputDevices(devs, 1, Marshal.SizeOf <RawInput.RawInputDevice>()); }