Ascii foreign keyboard support
Imported-from: https://svn.code.sf.net/p/dosbox/code-0/dosbox/trunk@703
This commit is contained in:
parent
5fb73510fe
commit
60c35559f9
2 changed files with 24 additions and 18 deletions
|
@ -19,17 +19,7 @@
|
|||
#ifndef _KEYBOARD_H_
|
||||
#define _KEYBOARD_H_
|
||||
|
||||
typedef void(KEYBOARD_EventHandler)(void);
|
||||
void KEYBOARD_AddCode(Bit8u code);
|
||||
void KEYBOARD_AddKey(Bitu keytype,bool pressed);
|
||||
void KEYBOARD_AddEvent(Bitu keytype,Bitu state,KEYBOARD_EventHandler * handler);
|
||||
|
||||
|
||||
#define ALT_PRESSED 0x1
|
||||
#define CTRL_PRESSED 0x2
|
||||
#define SHIFT_PRESSED 0x4
|
||||
|
||||
enum {
|
||||
enum KBD_KEYS {
|
||||
KBD_1, KBD_2, KBD_3, KBD_4, KBD_5, KBD_6, KBD_7, KBD_8, KBD_9, KBD_0,
|
||||
KBD_q, KBD_w, KBD_e, KBD_r, KBD_t, KBD_y, KBD_u, KBD_i, KBD_o, KBD_p,
|
||||
KBD_a, KBD_s, KBD_d, KBD_f, KBD_g, KBD_h, KBD_j, KBD_k, KBD_l, KBD_z,
|
||||
|
@ -54,4 +44,16 @@ enum {
|
|||
KBD_LAST
|
||||
};
|
||||
|
||||
typedef void(KEYBOARD_EventHandler)(void);
|
||||
|
||||
void KEYBOARD_AddEvent(Bitu keytype,Bitu state,KEYBOARD_EventHandler * handler);
|
||||
void KEYBOARD_AddKey(KBD_KEYS key,Bitu ascii,Bitu mod,bool pressed);
|
||||
void KEYBOARD_ReadKey(Bitu & scancode,Bitu & ascii,Bitu & mod);
|
||||
|
||||
|
||||
#define KBD_MOD_ALT 0x1
|
||||
#define KBD_MOD_CTRL 0x2
|
||||
#define KBD_MOD_SHIFT 0x4
|
||||
|
||||
|
||||
#endif
|
||||
|
|
|
@ -250,14 +250,12 @@ static void GUI_StartUp(Section * sec) {
|
|||
/* Initialize screen for first time */
|
||||
GFX_SetSize(640,400,8,0,0,0);
|
||||
SDL_EnableKeyRepeat(250,30);
|
||||
|
||||
SDL_EnableUNICODE(1);
|
||||
/* Get some Keybinds */
|
||||
KEYBOARD_AddEvent(KBD_f10,CTRL_PRESSED,CaptureMouse);
|
||||
KEYBOARD_AddEvent(KBD_enter,ALT_PRESSED,SwitchFullScreen);
|
||||
KEYBOARD_AddEvent(KBD_f10,KBD_MOD_CTRL,CaptureMouse);
|
||||
KEYBOARD_AddEvent(KBD_enter,KBD_MOD_ALT,SwitchFullScreen);
|
||||
}
|
||||
|
||||
|
||||
|
||||
void Mouse_AutoLock(bool enable) {
|
||||
sdl.mouse.autolock=enable;
|
||||
if (enable && sdl.mouse.autoenable) sdl.mouse.requestlock=true;
|
||||
|
@ -265,7 +263,7 @@ void Mouse_AutoLock(bool enable) {
|
|||
}
|
||||
|
||||
static void HandleKey(SDL_KeyboardEvent * key) {
|
||||
Bit32u code;
|
||||
KBD_KEYS code;
|
||||
switch (key->keysym.sym) {
|
||||
case SDLK_1:code=KBD_1;break;
|
||||
case SDLK_2:code=KBD_2;break;
|
||||
|
@ -386,7 +384,13 @@ static void HandleKey(SDL_KeyboardEvent * key) {
|
|||
//TODO maybe give warning for keypress unknown
|
||||
return;
|
||||
}
|
||||
KEYBOARD_AddKey(code,(key->state==SDL_PRESSED));
|
||||
/* Check the modifiers */
|
||||
Bitu mod=
|
||||
((key->keysym.mod & KMOD_CTRL) ? KBD_MOD_CTRL : 0) |
|
||||
((key->keysym.mod & KMOD_ALT) ? KBD_MOD_ALT : 0) |
|
||||
((key->keysym.mod & KMOD_SHIFT) ? KBD_MOD_SHIFT : 0);
|
||||
Bitu ascii=key->keysym.unicode<128 ? key->keysym.unicode : 0;
|
||||
KEYBOARD_AddKey(code,ascii,mod,(key->state==SDL_PRESSED));
|
||||
}
|
||||
|
||||
static void HandleMouseMotion(SDL_MouseMotionEvent * motion) {
|
||||
|
|
Loading…
Add table
Reference in a new issue