Skip to content

Commit ec5d10b

Browse files
committed
Add remaining relevant keyboard inputs.
1 parent c558cf4 commit ec5d10b

4 files changed

Lines changed: 288 additions & 60 deletions

File tree

src/NativeInput.h

Lines changed: 65 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -29,24 +29,43 @@ extern "C" {
2929
#endif
3030

3131
// Input action enum (must match C# enum)
32-
typedef enum {
33-
VPE_INPUT_LEFT_FLIPPER = 0,
34-
VPE_INPUT_RIGHT_FLIPPER = 1,
35-
VPE_INPUT_UPPER_LEFT_FLIPPER = 2,
36-
VPE_INPUT_UPPER_RIGHT_FLIPPER = 3,
32+
typedef enum {
33+
VPE_INPUT_LEFT_FLIPPER = 0,
34+
VPE_INPUT_RIGHT_FLIPPER = 1,
35+
VPE_INPUT_UPPER_LEFT_FLIPPER = 2,
36+
VPE_INPUT_UPPER_RIGHT_FLIPPER = 3,
3737
VPE_INPUT_LEFT_MAGNASAVE = 4,
3838
VPE_INPUT_RIGHT_MAGNASAVE = 5,
3939
VPE_INPUT_START = 6,
4040
VPE_INPUT_PLUNGE = 7,
4141
VPE_INPUT_PLUNGER_ANALOG = 8,
4242
VPE_INPUT_COIN_INSERT_1 = 9,
4343
VPE_INPUT_COIN_INSERT_2 = 10,
44-
VPE_INPUT_COIN_INSERT_3 = 11,
45-
VPE_INPUT_COIN_INSERT_4 = 12,
46-
VPE_INPUT_EXIT_GAME = 13,
47-
VPE_INPUT_SLAM_TILT = 14,
48-
VPE_INPUT_MAX = 32 // Reserve space for future actions
49-
} VpeInputAction;
44+
VPE_INPUT_COIN_INSERT_3 = 11,
45+
VPE_INPUT_COIN_INSERT_4 = 12,
46+
VPE_INPUT_EXIT_GAME = 13,
47+
VPE_INPUT_SLAM_TILT = 14,
48+
VPE_INPUT_LEFT_STAGED_FLIPPER = 15,
49+
VPE_INPUT_RIGHT_STAGED_FLIPPER = 16,
50+
VPE_INPUT_LEFT_NUDGE = 17,
51+
VPE_INPUT_RIGHT_NUDGE = 18,
52+
VPE_INPUT_CENTER_NUDGE = 19,
53+
VPE_INPUT_TILT = 20,
54+
VPE_INPUT_EXTRA_BALL = 21,
55+
VPE_INPUT_LOCKBAR = 22,
56+
VPE_INPUT_PAUSE_GAME = 23,
57+
VPE_INPUT_COIN_DOOR = 24,
58+
VPE_INPUT_RESET = 25,
59+
VPE_INPUT_SERVICE_1 = 26,
60+
VPE_INPUT_SERVICE_2 = 27,
61+
VPE_INPUT_SERVICE_3 = 28,
62+
VPE_INPUT_SERVICE_4 = 29,
63+
VPE_INPUT_SERVICE_5 = 30,
64+
VPE_INPUT_SERVICE_6 = 31,
65+
VPE_INPUT_SERVICE_7 = 32,
66+
VPE_INPUT_SERVICE_8 = 33,
67+
VPE_INPUT_MAX = 64 // Reserve space for future actions
68+
} VpeInputAction;
5069

5170
// Input binding type
5271
typedef enum {
@@ -61,18 +80,52 @@ typedef enum {
6180
VPE_KEY_RSHIFT = 0xA1,
6281
VPE_KEY_LCONTROL = 0xA2,
6382
VPE_KEY_RCONTROL = 0xA3,
83+
VPE_KEY_LALT = 0xA4,
84+
VPE_KEY_RALT = 0xA5,
85+
VPE_KEY_ESCAPE = 0x1B,
6486
VPE_KEY_SPACE = 0x20,
87+
VPE_KEY_PAGEUP = 0x21,
88+
VPE_KEY_PAGEDOWN = 0x22,
89+
VPE_KEY_END = 0x23,
90+
VPE_KEY_HOME = 0x24,
6591
VPE_KEY_RETURN = 0x0D,
92+
VPE_KEY_F1 = 0x70,
93+
VPE_KEY_F2 = 0x71,
94+
VPE_KEY_F3 = 0x72,
95+
VPE_KEY_F4 = 0x73,
96+
VPE_KEY_F5 = 0x74,
97+
VPE_KEY_F6 = 0x75,
98+
VPE_KEY_F7 = 0x76,
99+
VPE_KEY_F8 = 0x77,
100+
VPE_KEY_F9 = 0x78,
101+
VPE_KEY_F10 = 0x79,
102+
VPE_KEY_F11 = 0x7A,
103+
VPE_KEY_F12 = 0x7B,
104+
VPE_KEY_D0 = 0x30,
66105
VPE_KEY_D1 = 0x31,
67106
VPE_KEY_NUM1 = 0x31,
107+
VPE_KEY_D2 = 0x32,
108+
VPE_KEY_D3 = 0x33,
109+
VPE_KEY_D4 = 0x34,
68110
VPE_KEY_D5 = 0x35,
69111
VPE_KEY_NUM5 = 0x35,
112+
VPE_KEY_D6 = 0x36,
113+
VPE_KEY_D7 = 0x37,
114+
VPE_KEY_D8 = 0x38,
115+
VPE_KEY_D9 = 0x39,
116+
VPE_KEY_O = 0x4F,
117+
VPE_KEY_P = 0x50,
118+
VPE_KEY_T = 0x54,
119+
VPE_KEY_Y = 0x59,
70120
VPE_KEY_NUMPAD1 = 0x61,
71121
VPE_KEY_A = 0x41,
122+
VPE_KEY_B = 0x42,
72123
VPE_KEY_S = 0x53,
73124
VPE_KEY_D = 0x44,
74125
VPE_KEY_W = 0x57,
75-
// Add more as needed
126+
VPE_KEY_MINUS = 0xBD, // VK_OEM_MINUS
127+
VPE_KEY_QUOTE = 0xDE, // VK_OEM_7
128+
VPE_KEY_CARET = 0xC0, // VK_OEM_3 (layout dependent)
76129
} VpeKeyCode;
77130

78131
// Input event structure (matches C# struct layout)

src/NativeInput_Linux.cpp

Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,24 +57,94 @@ namespace {
5757
return XK_Control_L;
5858
case VPE_KEY_RCONTROL:
5959
return XK_Control_R;
60+
case VPE_KEY_LALT:
61+
return XK_Alt_L;
62+
case VPE_KEY_RALT:
63+
return XK_Alt_R;
64+
case VPE_KEY_ESCAPE:
65+
return XK_Escape;
6066
case VPE_KEY_SPACE:
6167
return XK_space;
68+
case VPE_KEY_PAGEUP:
69+
return XK_Prior;
70+
case VPE_KEY_PAGEDOWN:
71+
return XK_Next;
72+
case VPE_KEY_HOME:
73+
return XK_Home;
74+
case VPE_KEY_END:
75+
return XK_End;
6276
case VPE_KEY_RETURN:
6377
return XK_Return;
78+
case VPE_KEY_F1:
79+
return XK_F1;
80+
case VPE_KEY_F2:
81+
return XK_F2;
82+
case VPE_KEY_F3:
83+
return XK_F3;
84+
case VPE_KEY_F4:
85+
return XK_F4;
86+
case VPE_KEY_F5:
87+
return XK_F5;
88+
case VPE_KEY_F6:
89+
return XK_F6;
90+
case VPE_KEY_F7:
91+
return XK_F7;
92+
case VPE_KEY_F8:
93+
return XK_F8;
94+
case VPE_KEY_F9:
95+
return XK_F9;
96+
case VPE_KEY_F10:
97+
return XK_F10;
98+
case VPE_KEY_F11:
99+
return XK_F11;
100+
case VPE_KEY_F12:
101+
return XK_F12;
102+
case VPE_KEY_D0:
103+
return XK_0;
64104
case VPE_KEY_D1:
65105
return XK_1;
106+
case VPE_KEY_D2:
107+
return XK_2;
108+
case VPE_KEY_D3:
109+
return XK_3;
110+
case VPE_KEY_D4:
111+
return XK_4;
66112
case VPE_KEY_D5:
67113
return XK_5;
114+
case VPE_KEY_D6:
115+
return XK_6;
116+
case VPE_KEY_D7:
117+
return XK_7;
118+
case VPE_KEY_D8:
119+
return XK_8;
120+
case VPE_KEY_D9:
121+
return XK_9;
68122
case VPE_KEY_NUMPAD1:
69123
return XK_KP_1;
70124
case VPE_KEY_A:
71125
return XK_a;
126+
case VPE_KEY_B:
127+
return XK_b;
128+
case VPE_KEY_O:
129+
return XK_o;
130+
case VPE_KEY_P:
131+
return XK_p;
72132
case VPE_KEY_S:
73133
return XK_s;
74134
case VPE_KEY_D:
75135
return XK_d;
136+
case VPE_KEY_T:
137+
return XK_t;
76138
case VPE_KEY_W:
77139
return XK_w;
140+
case VPE_KEY_Y:
141+
return XK_y;
142+
case VPE_KEY_MINUS:
143+
return XK_minus;
144+
case VPE_KEY_QUOTE:
145+
return XK_apostrophe;
146+
case VPE_KEY_CARET:
147+
return XK_asciicircum;
78148
default:
79149
return NoSymbol;
80150
}

src/NativeInput_Mac.mm

Lines changed: 105 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,33 +55,138 @@ bool MapKeyCode(int keyCode, CGKeyCode* nativeKeyCode) {
5555
case VPE_KEY_RCONTROL:
5656
*nativeKeyCode = 62;
5757
return true;
58+
case VPE_KEY_LALT:
59+
*nativeKeyCode = 58;
60+
return true;
61+
case VPE_KEY_RALT:
62+
*nativeKeyCode = 61;
63+
return true;
64+
case VPE_KEY_ESCAPE:
65+
*nativeKeyCode = 53;
66+
return true;
5867
case VPE_KEY_SPACE:
5968
*nativeKeyCode = 49;
6069
return true;
70+
case VPE_KEY_PAGEUP:
71+
*nativeKeyCode = 116;
72+
return true;
73+
case VPE_KEY_PAGEDOWN:
74+
*nativeKeyCode = 121;
75+
return true;
76+
case VPE_KEY_END:
77+
*nativeKeyCode = 119;
78+
return true;
79+
case VPE_KEY_HOME:
80+
*nativeKeyCode = 115;
81+
return true;
6182
case VPE_KEY_RETURN:
6283
*nativeKeyCode = 36;
6384
return true;
85+
case VPE_KEY_F1:
86+
*nativeKeyCode = 122;
87+
return true;
88+
case VPE_KEY_F2:
89+
*nativeKeyCode = 120;
90+
return true;
91+
case VPE_KEY_F3:
92+
*nativeKeyCode = 99;
93+
return true;
94+
case VPE_KEY_F4:
95+
*nativeKeyCode = 118;
96+
return true;
97+
case VPE_KEY_F5:
98+
*nativeKeyCode = 96;
99+
return true;
100+
case VPE_KEY_F6:
101+
*nativeKeyCode = 97;
102+
return true;
103+
case VPE_KEY_F7:
104+
*nativeKeyCode = 98;
105+
return true;
106+
case VPE_KEY_F8:
107+
*nativeKeyCode = 100;
108+
return true;
109+
case VPE_KEY_F9:
110+
*nativeKeyCode = 101;
111+
return true;
112+
case VPE_KEY_F10:
113+
*nativeKeyCode = 109;
114+
return true;
115+
case VPE_KEY_F11:
116+
*nativeKeyCode = 103;
117+
return true;
118+
case VPE_KEY_F12:
119+
*nativeKeyCode = 111;
120+
return true;
121+
case VPE_KEY_D0:
122+
*nativeKeyCode = 29;
123+
return true;
64124
case VPE_KEY_D1:
65125
*nativeKeyCode = 18;
66126
return true;
127+
case VPE_KEY_D2:
128+
*nativeKeyCode = 19;
129+
return true;
130+
case VPE_KEY_D3:
131+
*nativeKeyCode = 20;
132+
return true;
133+
case VPE_KEY_D4:
134+
*nativeKeyCode = 21;
135+
return true;
67136
case VPE_KEY_D5:
68137
*nativeKeyCode = 23;
69138
return true;
139+
case VPE_KEY_D6:
140+
*nativeKeyCode = 22;
141+
return true;
142+
case VPE_KEY_D7:
143+
*nativeKeyCode = 26;
144+
return true;
145+
case VPE_KEY_D8:
146+
*nativeKeyCode = 28;
147+
return true;
148+
case VPE_KEY_D9:
149+
*nativeKeyCode = 25;
150+
return true;
70151
case VPE_KEY_NUMPAD1:
71152
*nativeKeyCode = 83;
72153
return true;
73154
case VPE_KEY_A:
74155
*nativeKeyCode = 0;
75156
return true;
157+
case VPE_KEY_B:
158+
*nativeKeyCode = 11;
159+
return true;
160+
case VPE_KEY_O:
161+
*nativeKeyCode = 31;
162+
return true;
163+
case VPE_KEY_P:
164+
*nativeKeyCode = 35;
165+
return true;
76166
case VPE_KEY_S:
77167
*nativeKeyCode = 1;
78168
return true;
79169
case VPE_KEY_D:
80170
*nativeKeyCode = 2;
81171
return true;
172+
case VPE_KEY_T:
173+
*nativeKeyCode = 17;
174+
return true;
82175
case VPE_KEY_W:
83176
*nativeKeyCode = 13;
84177
return true;
178+
case VPE_KEY_Y:
179+
*nativeKeyCode = 16;
180+
return true;
181+
case VPE_KEY_MINUS:
182+
*nativeKeyCode = 27;
183+
return true;
184+
case VPE_KEY_QUOTE:
185+
*nativeKeyCode = 39;
186+
return true;
187+
case VPE_KEY_CARET:
188+
*nativeKeyCode = 50;
189+
return true;
85190
default:
86191
return false;
87192
}

0 commit comments

Comments
 (0)