@@ -70,6 +70,83 @@ static enum android_metastate convert_meta_state(SDL_Keymod mod) {
70
70
return autocomplete_metastate (metastate );
71
71
}
72
72
73
+ // only used if raw_key_events is enabled
74
+ static SDL_bool convert_text_keycode (SDL_Keycode from , enum android_keycode * to ) {
75
+ switch (from ) {
76
+ MAP (SDLK_SPACE , AKEYCODE_SPACE );
77
+ MAP (SDLK_HASH , AKEYCODE_POUND );
78
+ MAP (SDLK_QUOTE , AKEYCODE_APOSTROPHE );
79
+ MAP (SDLK_ASTERISK , AKEYCODE_STAR );
80
+ MAP (SDLK_COMMA , AKEYCODE_COMMA );
81
+ MAP (SDLK_MINUS , AKEYCODE_MINUS );
82
+ MAP (SDLK_PERIOD , AKEYCODE_PERIOD );
83
+ MAP (SDLK_SLASH , AKEYCODE_SLASH );
84
+ MAP (SDLK_0 , AKEYCODE_0 );
85
+ MAP (SDLK_1 , AKEYCODE_1 );
86
+ MAP (SDLK_2 , AKEYCODE_2 );
87
+ MAP (SDLK_3 , AKEYCODE_3 );
88
+ MAP (SDLK_4 , AKEYCODE_4 );
89
+ MAP (SDLK_5 , AKEYCODE_5 );
90
+ MAP (SDLK_6 , AKEYCODE_6 );
91
+ MAP (SDLK_7 , AKEYCODE_7 );
92
+ MAP (SDLK_8 , AKEYCODE_8 );
93
+ MAP (SDLK_9 , AKEYCODE_9 );
94
+ MAP (SDLK_SEMICOLON , AKEYCODE_SEMICOLON );
95
+ MAP (SDLK_EQUALS , AKEYCODE_EQUALS );
96
+ MAP (SDLK_AT , AKEYCODE_AT );
97
+ MAP (SDLK_LEFTBRACKET , AKEYCODE_LEFT_BRACKET );
98
+ MAP (SDLK_BACKSLASH , AKEYCODE_BACKSLASH );
99
+ MAP (SDLK_RIGHTBRACKET , AKEYCODE_RIGHT_BRACKET );
100
+ MAP (SDLK_BACKQUOTE , AKEYCODE_GRAVE );
101
+ MAP (SDLK_a , AKEYCODE_A );
102
+ MAP (SDLK_b , AKEYCODE_B );
103
+ MAP (SDLK_c , AKEYCODE_C );
104
+ MAP (SDLK_d , AKEYCODE_D );
105
+ MAP (SDLK_e , AKEYCODE_E );
106
+ MAP (SDLK_f , AKEYCODE_F );
107
+ MAP (SDLK_g , AKEYCODE_G );
108
+ MAP (SDLK_h , AKEYCODE_H );
109
+ MAP (SDLK_i , AKEYCODE_I );
110
+ MAP (SDLK_j , AKEYCODE_J );
111
+ MAP (SDLK_k , AKEYCODE_K );
112
+ MAP (SDLK_l , AKEYCODE_L );
113
+ MAP (SDLK_m , AKEYCODE_M );
114
+ MAP (SDLK_n , AKEYCODE_N );
115
+ MAP (SDLK_o , AKEYCODE_O );
116
+ MAP (SDLK_p , AKEYCODE_P );
117
+ MAP (SDLK_q , AKEYCODE_Q );
118
+ MAP (SDLK_r , AKEYCODE_R );
119
+ MAP (SDLK_s , AKEYCODE_S );
120
+ MAP (SDLK_t , AKEYCODE_T );
121
+ MAP (SDLK_u , AKEYCODE_U );
122
+ MAP (SDLK_v , AKEYCODE_V );
123
+ MAP (SDLK_w , AKEYCODE_W );
124
+ MAP (SDLK_x , AKEYCODE_X );
125
+ MAP (SDLK_y , AKEYCODE_Y );
126
+ MAP (SDLK_z , AKEYCODE_Z );
127
+ MAP (SDLK_KP_ENTER , AKEYCODE_NUMPAD_ENTER );
128
+ MAP (SDLK_KP_1 , AKEYCODE_NUMPAD_1 );
129
+ MAP (SDLK_KP_2 , AKEYCODE_NUMPAD_2 );
130
+ MAP (SDLK_KP_3 , AKEYCODE_NUMPAD_3 );
131
+ MAP (SDLK_KP_4 , AKEYCODE_NUMPAD_4 );
132
+ MAP (SDLK_KP_5 , AKEYCODE_NUMPAD_5 );
133
+ MAP (SDLK_KP_6 , AKEYCODE_NUMPAD_6 );
134
+ MAP (SDLK_KP_7 , AKEYCODE_NUMPAD_7 );
135
+ MAP (SDLK_KP_8 , AKEYCODE_NUMPAD_8 );
136
+ MAP (SDLK_KP_9 , AKEYCODE_NUMPAD_9 );
137
+ MAP (SDLK_KP_0 , AKEYCODE_NUMPAD_0 );
138
+ MAP (SDLK_KP_DIVIDE , AKEYCODE_NUMPAD_DIVIDE );
139
+ MAP (SDLK_KP_MULTIPLY , AKEYCODE_NUMPAD_MULTIPLY );
140
+ MAP (SDLK_KP_MINUS , AKEYCODE_NUMPAD_SUBTRACT );
141
+ MAP (SDLK_KP_PLUS , AKEYCODE_NUMPAD_ADD );
142
+ MAP (SDLK_KP_PERIOD , AKEYCODE_NUMPAD_DOT );
143
+ MAP (SDLK_KP_EQUALS , AKEYCODE_NUMPAD_EQUALS );
144
+ MAP (SDLK_KP_LEFTPAREN , AKEYCODE_NUMPAD_LEFT_PAREN );
145
+ MAP (SDLK_KP_RIGHTPAREN , AKEYCODE_NUMPAD_RIGHT_PAREN );
146
+ FAIL ;
147
+ }
148
+ }
149
+
73
150
static SDL_bool convert_keycode (SDL_Keycode from , enum android_keycode * to ) {
74
151
switch (from ) {
75
152
MAP (SDLK_RETURN , AKEYCODE_ENTER );
@@ -119,15 +196,19 @@ static enum android_motionevent_buttons convert_mouse_buttons(Uint32 state) {
119
196
}
120
197
121
198
SDL_bool input_key_from_sdl_to_android (const SDL_KeyboardEvent * from ,
122
- struct control_event * to ) {
199
+ struct control_event * to ,
200
+ SDL_bool raw_key_events ) {
123
201
to -> type = CONTROL_EVENT_TYPE_KEYCODE ;
124
202
125
203
if (!convert_keycode_action (from -> type , & to -> keycode_event .action )) {
126
204
return SDL_FALSE ;
127
205
}
128
206
129
207
if (!convert_keycode (from -> keysym .sym , & to -> keycode_event .keycode )) {
130
- return SDL_FALSE ;
208
+ if (!raw_key_events ||
209
+ !convert_text_keycode (from -> keysym .sym , & to -> keycode_event .keycode )) {
210
+ return SDL_FALSE ;
211
+ }
131
212
}
132
213
133
214
to -> keycode_event .metastate = convert_meta_state (from -> keysym .mod );
0 commit comments