1 #pragma once
2 
3 #include "../System.h"
4 
5 #define JOYCONFIG_MESSAGE (WM_USER + 1000)
6 #define JOYPADS 4
7 #define MOTION_KEYS 4
8 #define KEYS_PER_PAD 13
9 #define MOTION(i) ((JOYPADS*KEYS_PER_PAD)+i)
10 #define JOYPAD(i,j) ((i*KEYS_PER_PAD)+j)
11 
12 #define DEVICEOF(key) (key >> 8)
13 #define KEYOF(key) (key & 255)
14 
15 typedef CList<LONG_PTR,LONG_PTR> KeyList;
16 
17 enum {
18   KEY_LEFT, KEY_RIGHT,
19   KEY_UP, KEY_DOWN,
20   KEY_BUTTON_A, KEY_BUTTON_B,
21   KEY_BUTTON_START, KEY_BUTTON_SELECT,
22   KEY_BUTTON_L, KEY_BUTTON_R,
23   KEY_BUTTON_SPEED, KEY_BUTTON_CAPTURE,
24   KEY_BUTTON_GS
25 };
26 
27 class Input {
28 
29  public:
30   KeyList joypaddata[JOYPADS * KEYS_PER_PAD + MOTION_KEYS];
31 
Input()32   Input() {};
~Input()33   virtual ~Input() {};
34 
35   virtual bool initialize() = 0;
36 
37   virtual bool readDevices() = 0;
38   virtual u32 readDevice(int which) = 0;
39   virtual CString getKeyName(LONG_PTR key) = 0;
40   virtual void checkKeys() = 0;
41   virtual void checkMotionKeys() = 0;
42   virtual void checkDevices() = 0;
43   virtual void activate() = 0;
44   virtual void loadSettings() = 0;
45   virtual void saveSettings() = 0;
46 };
47