SDL  2.0
SDL_bkeyboard.cc
Go to the documentation of this file.
1 /*
2  Simple DirectMedia Layer
3  Copyright (C) 1997-2019 Sam Lantinga <slouken@libsdl.org>
4 
5  This software is provided 'as-is', without any express or implied
6  warranty. In no event will the authors be held liable for any damages
7  arising from the use of this software.
8 
9  Permission is granted to anyone to use this software for any purpose,
10  including commercial applications, and to alter it and redistribute it
11  freely, subject to the following restrictions:
12 
13  1. The origin of this software must not be misrepresented; you must not
14  claim that you wrote the original software. If you use this software
15  in a product, an acknowledgment in the product documentation would be
16  appreciated but is not required.
17  2. Altered source versions must be plainly marked as such, and must not be
18  misrepresented as being the original software.
19  3. This notice may not be removed or altered from any source distribution.
20 */
21 #include "../../SDL_internal.h"
22 
23 #if SDL_VIDEO_DRIVER_HAIKU
24 
25 #include <SupportDefs.h>
26 #include <support/UTF8.h>
27 
28 #ifdef __cplusplus
29 extern "C" {
30 #endif
31 
32 #include "SDL_events.h"
33 #include "SDL_keycode.h"
34 
35 #include "SDL_bkeyboard.h"
36 
37 
38 #define KEYMAP_SIZE 128
39 
40 
41 static SDL_Scancode keymap[KEYMAP_SIZE];
42 static int8 keystate[KEYMAP_SIZE];
43 
44 void HAIKU_InitOSKeymap(void) {
45  for( uint i = 0; i < SDL_TABLESIZE(keymap); ++i ) {
46  keymap[i] = SDL_SCANCODE_UNKNOWN;
47  }
48 
49  for( uint i = 0; i < KEYMAP_SIZE; ++i ) {
50  keystate[i] = SDL_RELEASED;
51  }
52 
53  keymap[0x01] = SDL_GetScancodeFromKey(SDLK_ESCAPE);
54  keymap[B_F1_KEY] = SDL_GetScancodeFromKey(SDLK_F1);
55  keymap[B_F2_KEY] = SDL_GetScancodeFromKey(SDLK_F2);
56  keymap[B_F3_KEY] = SDL_GetScancodeFromKey(SDLK_F3);
57  keymap[B_F4_KEY] = SDL_GetScancodeFromKey(SDLK_F4);
58  keymap[B_F5_KEY] = SDL_GetScancodeFromKey(SDLK_F5);
59  keymap[B_F6_KEY] = SDL_GetScancodeFromKey(SDLK_F6);
60  keymap[B_F7_KEY] = SDL_GetScancodeFromKey(SDLK_F7);
61  keymap[B_F8_KEY] = SDL_GetScancodeFromKey(SDLK_F8);
62  keymap[B_F9_KEY] = SDL_GetScancodeFromKey(SDLK_F9);
63  keymap[B_F10_KEY] = SDL_GetScancodeFromKey(SDLK_F10);
64  keymap[B_F11_KEY] = SDL_GetScancodeFromKey(SDLK_F11);
65  keymap[B_F12_KEY] = SDL_GetScancodeFromKey(SDLK_F12);
66  keymap[B_PRINT_KEY] = SDL_GetScancodeFromKey(SDLK_PRINTSCREEN);
67  keymap[B_SCROLL_KEY] = SDL_GetScancodeFromKey(SDLK_SCROLLLOCK);
68  keymap[B_PAUSE_KEY] = SDL_GetScancodeFromKey(SDLK_PAUSE);
69  keymap[0x11] = SDL_GetScancodeFromKey(SDLK_BACKQUOTE);
70  keymap[0x12] = SDL_GetScancodeFromKey(SDLK_1);
71  keymap[0x13] = SDL_GetScancodeFromKey(SDLK_2);
72  keymap[0x14] = SDL_GetScancodeFromKey(SDLK_3);
73  keymap[0x15] = SDL_GetScancodeFromKey(SDLK_4);
74  keymap[0x16] = SDL_GetScancodeFromKey(SDLK_5);
75  keymap[0x17] = SDL_GetScancodeFromKey(SDLK_6);
76  keymap[0x18] = SDL_GetScancodeFromKey(SDLK_7);
77  keymap[0x19] = SDL_GetScancodeFromKey(SDLK_8);
78  keymap[0x1a] = SDL_GetScancodeFromKey(SDLK_9);
79  keymap[0x1b] = SDL_GetScancodeFromKey(SDLK_0);
80  keymap[0x1c] = SDL_GetScancodeFromKey(SDLK_MINUS);
81  keymap[0x1d] = SDL_GetScancodeFromKey(SDLK_EQUALS);
82  keymap[0x1e] = SDL_GetScancodeFromKey(SDLK_BACKSPACE);
83  keymap[0x1f] = SDL_GetScancodeFromKey(SDLK_INSERT);
84  keymap[0x20] = SDL_GetScancodeFromKey(SDLK_HOME);
85  keymap[0x21] = SDL_GetScancodeFromKey(SDLK_PAGEUP);
87  keymap[0x23] = SDL_GetScancodeFromKey(SDLK_KP_DIVIDE);
89  keymap[0x25] = SDL_GetScancodeFromKey(SDLK_KP_MINUS);
90  keymap[0x26] = SDL_GetScancodeFromKey(SDLK_TAB);
91  keymap[0x27] = SDL_GetScancodeFromKey(SDLK_q);
92  keymap[0x28] = SDL_GetScancodeFromKey(SDLK_w);
93  keymap[0x29] = SDL_GetScancodeFromKey(SDLK_e);
94  keymap[0x2a] = SDL_GetScancodeFromKey(SDLK_r);
95  keymap[0x2b] = SDL_GetScancodeFromKey(SDLK_t);
96  keymap[0x2c] = SDL_GetScancodeFromKey(SDLK_y);
97  keymap[0x2d] = SDL_GetScancodeFromKey(SDLK_u);
98  keymap[0x2e] = SDL_GetScancodeFromKey(SDLK_i);
99  keymap[0x2f] = SDL_GetScancodeFromKey(SDLK_o);
100  keymap[0x30] = SDL_GetScancodeFromKey(SDLK_p);
103  keymap[0x33] = SDL_GetScancodeFromKey(SDLK_BACKSLASH);
104  keymap[0x34] = SDL_GetScancodeFromKey(SDLK_DELETE);
105  keymap[0x35] = SDL_GetScancodeFromKey(SDLK_END);
106  keymap[0x36] = SDL_GetScancodeFromKey(SDLK_PAGEDOWN);
107  keymap[0x37] = SDL_GetScancodeFromKey(SDLK_KP_7);
108  keymap[0x38] = SDL_GetScancodeFromKey(SDLK_KP_8);
109  keymap[0x39] = SDL_GetScancodeFromKey(SDLK_KP_9);
110  keymap[0x3a] = SDL_GetScancodeFromKey(SDLK_KP_PLUS);
111  keymap[0x3b] = SDL_GetScancodeFromKey(SDLK_CAPSLOCK);
112  keymap[0x3c] = SDL_GetScancodeFromKey(SDLK_a);
113  keymap[0x3d] = SDL_GetScancodeFromKey(SDLK_s);
114  keymap[0x3e] = SDL_GetScancodeFromKey(SDLK_d);
115  keymap[0x3f] = SDL_GetScancodeFromKey(SDLK_f);
116  keymap[0x40] = SDL_GetScancodeFromKey(SDLK_g);
117  keymap[0x41] = SDL_GetScancodeFromKey(SDLK_h);
118  keymap[0x42] = SDL_GetScancodeFromKey(SDLK_j);
119  keymap[0x43] = SDL_GetScancodeFromKey(SDLK_k);
120  keymap[0x44] = SDL_GetScancodeFromKey(SDLK_l);
121  keymap[0x45] = SDL_GetScancodeFromKey(SDLK_SEMICOLON);
122  keymap[0x46] = SDL_GetScancodeFromKey(SDLK_QUOTE);
123  keymap[0x47] = SDL_GetScancodeFromKey(SDLK_RETURN);
124  keymap[0x48] = SDL_GetScancodeFromKey(SDLK_KP_4);
125  keymap[0x49] = SDL_GetScancodeFromKey(SDLK_KP_5);
126  keymap[0x4a] = SDL_GetScancodeFromKey(SDLK_KP_6);
127  keymap[0x4b] = SDL_GetScancodeFromKey(SDLK_LSHIFT);
128  keymap[0x4c] = SDL_GetScancodeFromKey(SDLK_z);
129  keymap[0x4d] = SDL_GetScancodeFromKey(SDLK_x);
130  keymap[0x4e] = SDL_GetScancodeFromKey(SDLK_c);
131  keymap[0x4f] = SDL_GetScancodeFromKey(SDLK_v);
132  keymap[0x50] = SDL_GetScancodeFromKey(SDLK_b);
133  keymap[0x51] = SDL_GetScancodeFromKey(SDLK_n);
134  keymap[0x52] = SDL_GetScancodeFromKey(SDLK_m);
135  keymap[0x53] = SDL_GetScancodeFromKey(SDLK_COMMA);
136  keymap[0x54] = SDL_GetScancodeFromKey(SDLK_PERIOD);
137  keymap[0x55] = SDL_GetScancodeFromKey(SDLK_SLASH);
138  keymap[0x56] = SDL_GetScancodeFromKey(SDLK_RSHIFT);
139  keymap[0x57] = SDL_GetScancodeFromKey(SDLK_UP);
140  keymap[0x58] = SDL_GetScancodeFromKey(SDLK_KP_1);
141  keymap[0x59] = SDL_GetScancodeFromKey(SDLK_KP_2);
142  keymap[0x5a] = SDL_GetScancodeFromKey(SDLK_KP_3);
143  keymap[0x5b] = SDL_GetScancodeFromKey(SDLK_KP_ENTER);
144  keymap[0x5c] = SDL_GetScancodeFromKey(SDLK_LCTRL);
145  keymap[0x5d] = SDL_GetScancodeFromKey(SDLK_LALT);
146  keymap[0x5e] = SDL_GetScancodeFromKey(SDLK_SPACE);
147  keymap[0x5f] = SDL_GetScancodeFromKey(SDLK_RALT);
148  keymap[0x60] = SDL_GetScancodeFromKey(SDLK_RCTRL);
149  keymap[0x61] = SDL_GetScancodeFromKey(SDLK_LEFT);
150  keymap[0x62] = SDL_GetScancodeFromKey(SDLK_DOWN);
151  keymap[0x63] = SDL_GetScancodeFromKey(SDLK_RIGHT);
152  keymap[0x64] = SDL_GetScancodeFromKey(SDLK_KP_0);
153  keymap[0x65] = SDL_GetScancodeFromKey(SDLK_KP_PERIOD);
154  keymap[0x66] = SDL_GetScancodeFromKey(SDLK_LGUI);
155  keymap[0x67] = SDL_GetScancodeFromKey(SDLK_RGUI);
156  keymap[0x68] = SDL_GetScancodeFromKey(SDLK_MENU);
157  keymap[0x69] = SDL_GetScancodeFromKey(SDLK_2); /* SDLK_EURO */
158  keymap[0x6a] = SDL_GetScancodeFromKey(SDLK_KP_EQUALS);
159  keymap[0x6b] = SDL_GetScancodeFromKey(SDLK_POWER);
160 }
161 
163  if(bkey > 0 && bkey < (int32)SDL_TABLESIZE(keymap)) {
164  return keymap[bkey];
165  } else {
166  return SDL_SCANCODE_UNKNOWN;
167  }
168 }
169 
170 int8 HAIKU_GetKeyState(int32 bkey) {
171  if(bkey > 0 && bkey < KEYMAP_SIZE) {
172  return keystate[bkey];
173  } else {
174  return SDL_RELEASED;
175  }
176 }
177 
178 void HAIKU_SetKeyState(int32 bkey, int8 state) {
179  if(bkey > 0 && bkey < KEYMAP_SIZE) {
180  keystate[bkey] = state;
181  }
182 }
183 
184 #ifdef __cplusplus
185 }
186 #endif
187 
188 #endif /* SDL_VIDEO_DRIVER_HAIKU */
189 
190 /* vi: set ts=4 sw=4 expandtab: */
SDLK_KP_6
@ SDLK_KP_6
Definition: SDL_keycode.h:167
SDLK_KP_5
@ SDLK_KP_5
Definition: SDL_keycode.h:166
SDLK_KP_MINUS
@ SDLK_KP_MINUS
Definition: SDL_keycode.h:159
SDLK_F6
@ SDLK_F6
Definition: SDL_keycode.h:134
SDL_events.h
SDLK_F5
@ SDLK_F5
Definition: SDL_keycode.h:133
SDLK_x
@ SDLK_x
Definition: SDL_keycode.h:123
SDLK_j
@ SDLK_j
Definition: SDL_keycode.h:109
SDLK_8
@ SDLK_8
Definition: SDL_keycode.h:82
SDLK_2
@ SDLK_2
Definition: SDL_keycode.h:76
SDLK_RALT
@ SDLK_RALT
Definition: SDL_keycode.h:282
SDLK_u
@ SDLK_u
Definition: SDL_keycode.h:120
SDLK_e
@ SDLK_e
Definition: SDL_keycode.h:104
SDLK_6
@ SDLK_6
Definition: SDL_keycode.h:80
SDLK_LSHIFT
@ SDLK_LSHIFT
Definition: SDL_keycode.h:277
SDLK_F7
@ SDLK_F7
Definition: SDL_keycode.h:135
HAIKU_GetKeyState
int8 HAIKU_GetKeyState(int32 bkey)
SDLK_F8
@ SDLK_F8
Definition: SDL_keycode.h:136
SDLK_NUMLOCKCLEAR
@ SDLK_NUMLOCKCLEAR
Definition: SDL_keycode.h:156
SDLK_PAUSE
@ SDLK_PAUSE
Definition: SDL_keycode.h:144
SDLK_KP_MULTIPLY
@ SDLK_KP_MULTIPLY
Definition: SDL_keycode.h:158
SDLK_F9
@ SDLK_F9
Definition: SDL_keycode.h:137
SDLK_t
@ SDLK_t
Definition: SDL_keycode.h:119
SDLK_f
@ SDLK_f
Definition: SDL_keycode.h:105
SDLK_9
@ SDLK_9
Definition: SDL_keycode.h:83
SDL_keycode.h
SDLK_F3
@ SDLK_F3
Definition: SDL_keycode.h:131
SDLK_F11
@ SDLK_F11
Definition: SDL_keycode.h:139
SDL_Scancode
SDL_Scancode
The SDL keyboard scancode representation.
Definition: SDL_scancode.h:43
SDLK_DOWN
@ SDLK_DOWN
Definition: SDL_keycode.h:153
SDLK_RIGHTBRACKET
@ SDLK_RIGHTBRACKET
Definition: SDL_keycode.h:96
SDLK_KP_PLUS
@ SDLK_KP_PLUS
Definition: SDL_keycode.h:160
SDLK_UP
@ SDLK_UP
Definition: SDL_keycode.h:154
uint
#define uint
SDLK_KP_0
@ SDLK_KP_0
Definition: SDL_keycode.h:171
SDLK_KP_DIVIDE
@ SDLK_KP_DIVIDE
Definition: SDL_keycode.h:157
SDLK_KP_4
@ SDLK_KP_4
Definition: SDL_keycode.h:165
SDL_RELEASED
#define SDL_RELEASED
Definition: SDL_events.h:49
SDLK_LEFT
@ SDLK_LEFT
Definition: SDL_keycode.h:152
SDLK_m
@ SDLK_m
Definition: SDL_keycode.h:112
SDLK_QUOTE
@ SDLK_QUOTE
Definition: SDL_keycode.h:65
SDLK_KP_EQUALS
@ SDLK_KP_EQUALS
Definition: SDL_keycode.h:176
SDLK_w
@ SDLK_w
Definition: SDL_keycode.h:122
SDL_GetScancodeFromKey
#define SDL_GetScancodeFromKey
Definition: SDL_dynapi_overrides.h:221
SDLK_v
@ SDLK_v
Definition: SDL_keycode.h:121
SDLK_l
@ SDLK_l
Definition: SDL_keycode.h:111
SDLK_LGUI
@ SDLK_LGUI
Definition: SDL_keycode.h:279
SDLK_ESCAPE
@ SDLK_ESCAPE
Definition: SDL_keycode.h:55
SDLK_g
@ SDLK_g
Definition: SDL_keycode.h:106
SDLK_7
@ SDLK_7
Definition: SDL_keycode.h:81
SDLK_F1
@ SDLK_F1
Definition: SDL_keycode.h:129
SDLK_COMMA
@ SDLK_COMMA
Definition: SDL_keycode.h:70
SDLK_4
@ SDLK_4
Definition: SDL_keycode.h:78
SDLK_KP_7
@ SDLK_KP_7
Definition: SDL_keycode.h:168
SDLK_p
@ SDLK_p
Definition: SDL_keycode.h:115
SDLK_F10
@ SDLK_F10
Definition: SDL_keycode.h:138
SDLK_INSERT
@ SDLK_INSERT
Definition: SDL_keycode.h:145
HAIKU_SetKeyState
void HAIKU_SetKeyState(int32 bkey, int8 state)
HAIKU_InitOSKeymap
void HAIKU_InitOSKeymap(void)
HAIKU_GetScancodeFromBeKey
SDL_Scancode HAIKU_GetScancodeFromBeKey(int32 bkey)
SDLK_SPACE
@ SDLK_SPACE
Definition: SDL_keycode.h:58
SDLK_KP_8
@ SDLK_KP_8
Definition: SDL_keycode.h:169
SDLK_z
@ SDLK_z
Definition: SDL_keycode.h:125
SDLK_q
@ SDLK_q
Definition: SDL_keycode.h:116
SDLK_BACKQUOTE
@ SDLK_BACKQUOTE
Definition: SDL_keycode.h:99
SDLK_a
@ SDLK_a
Definition: SDL_keycode.h:100
SDLK_KP_1
@ SDLK_KP_1
Definition: SDL_keycode.h:162
SDLK_h
@ SDLK_h
Definition: SDL_keycode.h:107
SDLK_0
@ SDLK_0
Definition: SDL_keycode.h:74
SDLK_KP_3
@ SDLK_KP_3
Definition: SDL_keycode.h:164
SDLK_PAGEUP
@ SDLK_PAGEUP
Definition: SDL_keycode.h:147
SDLK_END
@ SDLK_END
Definition: SDL_keycode.h:149
SDLK_KP_2
@ SDLK_KP_2
Definition: SDL_keycode.h:163
SDLK_KP_9
@ SDLK_KP_9
Definition: SDL_keycode.h:170
SDLK_SLASH
@ SDLK_SLASH
Definition: SDL_keycode.h:73
SDLK_BACKSPACE
@ SDLK_BACKSPACE
Definition: SDL_keycode.h:56
SDL_SCANCODE_UNKNOWN
@ SDL_SCANCODE_UNKNOWN
Definition: SDL_scancode.h:45
SDLK_MENU
@ SDLK_MENU
Definition: SDL_keycode.h:191
SDLK_DELETE
@ SDLK_DELETE
Definition: SDL_keycode.h:148
SDLK_BACKSLASH
@ SDLK_BACKSLASH
Definition: SDL_keycode.h:95
SDLK_PERIOD
@ SDLK_PERIOD
Definition: SDL_keycode.h:72
SDLK_i
@ SDLK_i
Definition: SDL_keycode.h:108
SDLK_RGUI
@ SDLK_RGUI
Definition: SDL_keycode.h:283
SDLK_d
@ SDLK_d
Definition: SDL_keycode.h:103
SDLK_RCTRL
@ SDLK_RCTRL
Definition: SDL_keycode.h:280
SDLK_KP_PERIOD
@ SDLK_KP_PERIOD
Definition: SDL_keycode.h:172
SDLK_RETURN
@ SDLK_RETURN
Definition: SDL_keycode.h:54
SDLK_MINUS
@ SDLK_MINUS
Definition: SDL_keycode.h:71
SDLK_LEFTBRACKET
@ SDLK_LEFTBRACKET
Definition: SDL_keycode.h:94
SDLK_F4
@ SDLK_F4
Definition: SDL_keycode.h:132
SDL_TABLESIZE
#define SDL_TABLESIZE(table)
Definition: SDL_stdinc.h:116
SDLK_RSHIFT
@ SDLK_RSHIFT
Definition: SDL_keycode.h:281
SDLK_EQUALS
@ SDLK_EQUALS
Definition: SDL_keycode.h:87
SDLK_TAB
@ SDLK_TAB
Definition: SDL_keycode.h:57
SDLK_c
@ SDLK_c
Definition: SDL_keycode.h:102
SDL_bkeyboard.h
SDLK_POWER
@ SDLK_POWER
Definition: SDL_keycode.h:175
SDLK_k
@ SDLK_k
Definition: SDL_keycode.h:110
SDLK_5
@ SDLK_5
Definition: SDL_keycode.h:79
SDLK_CAPSLOCK
@ SDLK_CAPSLOCK
Definition: SDL_keycode.h:127
SDLK_RIGHT
@ SDLK_RIGHT
Definition: SDL_keycode.h:151
SDLK_F12
@ SDLK_F12
Definition: SDL_keycode.h:140
SDLK_3
@ SDLK_3
Definition: SDL_keycode.h:77
SDLK_o
@ SDLK_o
Definition: SDL_keycode.h:114
SDLK_KP_ENTER
@ SDLK_KP_ENTER
Definition: SDL_keycode.h:161
SDLK_LALT
@ SDLK_LALT
Definition: SDL_keycode.h:278
SDLK_PAGEDOWN
@ SDLK_PAGEDOWN
Definition: SDL_keycode.h:150
SDLK_s
@ SDLK_s
Definition: SDL_keycode.h:118
SDLK_HOME
@ SDLK_HOME
Definition: SDL_keycode.h:146
SDLK_r
@ SDLK_r
Definition: SDL_keycode.h:117
SDLK_F2
@ SDLK_F2
Definition: SDL_keycode.h:130
state
struct xkb_state * state
Definition: SDL_waylandsym.h:113
SDLK_LCTRL
@ SDLK_LCTRL
Definition: SDL_keycode.h:276
i
return Display return Display Bool Bool int int int return Display XEvent Bool(*) XPointer return Display return Display Drawable _Xconst char unsigned int unsigned int return Display Pixmap Pixmap XColor XColor unsigned int unsigned int return Display _Xconst char char int char return Display Visual unsigned int int int char unsigned int unsigned int in i)
Definition: SDL_x11sym.h:50
SDLK_1
@ SDLK_1
Definition: SDL_keycode.h:75
SDLK_SCROLLLOCK
@ SDLK_SCROLLLOCK
Definition: SDL_keycode.h:143
SDLK_b
@ SDLK_b
Definition: SDL_keycode.h:101
SDLK_y
@ SDLK_y
Definition: SDL_keycode.h:124
SDLK_PRINTSCREEN
@ SDLK_PRINTSCREEN
Definition: SDL_keycode.h:142
SDLK_SEMICOLON
@ SDLK_SEMICOLON
Definition: SDL_keycode.h:85
SDLK_n
@ SDLK_n
Definition: SDL_keycode.h:113