Merge keyboard improvement in latest inputevents management
This commit is contained in:
parent
999e4abf73
commit
7ca9d64fe9
5 changed files with 281 additions and 5 deletions
|
@ -176,6 +176,7 @@ DEFEVENT(KEY_TAB,_T("Tab"),AM_K,0,0,AK_TAB)
|
|||
DEFEVENT(KEY_CTRL,_T("CTRL"),AM_K,0,0,AK_CTRL)
|
||||
DEFEVENT(KEY_CAPS_LOCK,_T("Caps Lock"),AM_K,0,0,AK_CAPSLOCK)
|
||||
DEFEVENT(KEY_SHIFT_LEFT,_T("Left Shift"),AM_K,0,0,AK_LSH)
|
||||
DEFEVENT(KEY_LTGT,_T("Lower Greater"),AM_K,0,0,AK_LTGT)
|
||||
DEFEVENT(KEY_ALT_LEFT,_T("Left Alt"),AM_K,0,0,AK_LALT)
|
||||
DEFEVENT(KEY_AMIGA_LEFT,_T("Left Amiga"),AM_K,0,0,AK_LAMI)
|
||||
DEFEVENT(KEY_AMIGA_RIGHT,_T("Right Amiga"),AM_K,0,0,AK_RAMI)
|
||||
|
|
|
@ -515,6 +515,8 @@ static int real_main2 (int argc, TCHAR **argv)
|
|||
SDL_Init (SDL_INIT_TIMER | SDL_INIT_AUDIO | SDL_INIT_JOYSTICK | SDL_INIT_NOPARACHUTE);
|
||||
#endif
|
||||
#endif
|
||||
|
||||
keyboard_settrans();
|
||||
|
||||
if (restart_config[0]) {
|
||||
default_prefs (&currprefs, 0);
|
||||
|
|
|
@ -15,6 +15,240 @@
|
|||
#include <SDL.h>
|
||||
|
||||
|
||||
static struct uae_input_device_kbr_default keytrans_amiga_x11[] = {
|
||||
|
||||
{ 9 , INPUTEVENT_KEY_ESC},
|
||||
{ 67, INPUTEVENT_KEY_F1},
|
||||
{ 68, INPUTEVENT_KEY_F2},
|
||||
{ 69, INPUTEVENT_KEY_F3},
|
||||
{ 70, INPUTEVENT_KEY_F4},
|
||||
{ 71, INPUTEVENT_KEY_F5},
|
||||
{ 72, INPUTEVENT_KEY_F6},
|
||||
{ 73, INPUTEVENT_KEY_F7},
|
||||
{ 74, INPUTEVENT_KEY_F8},
|
||||
{ 75, INPUTEVENT_KEY_F9},
|
||||
{ 76, INPUTEVENT_KEY_F10},
|
||||
//{ 95, INPUTEVENT_KEY_F11},
|
||||
//{ 96, INPUTEVENT_KEY_F12},
|
||||
|
||||
{ 49, INPUTEVENT_KEY_BACKQUOTE},
|
||||
|
||||
{ 10, INPUTEVENT_KEY_1},
|
||||
{ 11, INPUTEVENT_KEY_2},
|
||||
{ 12, INPUTEVENT_KEY_3},
|
||||
{ 13, INPUTEVENT_KEY_4},
|
||||
{ 14, INPUTEVENT_KEY_5},
|
||||
{ 15, INPUTEVENT_KEY_6},
|
||||
{ 16, INPUTEVENT_KEY_7},
|
||||
{ 17, INPUTEVENT_KEY_8},
|
||||
{ 18, INPUTEVENT_KEY_9},
|
||||
{ 19, INPUTEVENT_KEY_0},
|
||||
{ 20, INPUTEVENT_KEY_SUB},
|
||||
{ 21, INPUTEVENT_KEY_EQUALS},
|
||||
{ 22, INPUTEVENT_KEY_BACKSLASH},
|
||||
|
||||
{ 23, INPUTEVENT_KEY_TAB},
|
||||
{ 24, INPUTEVENT_KEY_Q},
|
||||
{ 25, INPUTEVENT_KEY_W},
|
||||
{ 26, INPUTEVENT_KEY_E},
|
||||
{ 27, INPUTEVENT_KEY_R},
|
||||
{ 28, INPUTEVENT_KEY_T},
|
||||
{ 29, INPUTEVENT_KEY_Y},
|
||||
{ 30, INPUTEVENT_KEY_U},
|
||||
{ 31, INPUTEVENT_KEY_I},
|
||||
{ 32, INPUTEVENT_KEY_O},
|
||||
{ 33, INPUTEVENT_KEY_P},
|
||||
{ 34, INPUTEVENT_KEY_LEFTBRACKET},
|
||||
{ 35, INPUTEVENT_KEY_RIGHTBRACKET},
|
||||
{ 36, INPUTEVENT_KEY_RETURN},
|
||||
|
||||
{ 66, INPUTEVENT_KEY_CAPS_LOCK},
|
||||
{ 38, INPUTEVENT_KEY_A},
|
||||
{ 39, INPUTEVENT_KEY_S},
|
||||
{ 40, INPUTEVENT_KEY_D},
|
||||
{ 41, INPUTEVENT_KEY_F},
|
||||
{ 42, INPUTEVENT_KEY_G},
|
||||
{ 43, INPUTEVENT_KEY_H},
|
||||
{ 44, INPUTEVENT_KEY_J},
|
||||
{ 45, INPUTEVENT_KEY_K},
|
||||
{ 46, INPUTEVENT_KEY_L},
|
||||
{ 47, INPUTEVENT_KEY_SEMICOLON},
|
||||
{ 48, INPUTEVENT_KEY_SINGLEQUOTE},
|
||||
{ 51, INPUTEVENT_KEY_BACKSLASH},
|
||||
|
||||
{ 50, INPUTEVENT_KEY_SHIFT_LEFT},
|
||||
{ 94, INPUTEVENT_KEY_LTGT},
|
||||
{ 52, INPUTEVENT_KEY_Z},
|
||||
{ 53, INPUTEVENT_KEY_X},
|
||||
{ 54, INPUTEVENT_KEY_C},
|
||||
{ 55, INPUTEVENT_KEY_V},
|
||||
{ 56, INPUTEVENT_KEY_B},
|
||||
{ 57, INPUTEVENT_KEY_N},
|
||||
{ 58, INPUTEVENT_KEY_M},
|
||||
{ 59, INPUTEVENT_KEY_COMMA},
|
||||
{ 60, INPUTEVENT_KEY_PERIOD},
|
||||
{ 61, INPUTEVENT_KEY_DIV},
|
||||
{ 62, INPUTEVENT_KEY_SHIFT_RIGHT},
|
||||
|
||||
{ 37, INPUTEVENT_KEY_CTRL},
|
||||
{ 64, INPUTEVENT_KEY_ALT_LEFT},
|
||||
{ 65, INPUTEVENT_KEY_SPACE},
|
||||
|
||||
{ 108, INPUTEVENT_KEY_ALT_RIGHT},
|
||||
|
||||
//{ 78, INPUTEVENT_KEY_SCROLLOCK},
|
||||
|
||||
//{ 77, INPUTEVENT_KEY_NUMLOCK},
|
||||
{ 106, INPUTEVENT_KEY_NP_DIV},
|
||||
{ 63, INPUTEVENT_KEY_NP_MUL},
|
||||
{ 82, INPUTEVENT_KEY_NP_SUB},
|
||||
|
||||
{ 79, INPUTEVENT_KEY_NP_7},
|
||||
{ 80, INPUTEVENT_KEY_NP_8},
|
||||
{ 81, INPUTEVENT_KEY_NP_9},
|
||||
{ 86, INPUTEVENT_KEY_NP_ADD},
|
||||
|
||||
{ 83, INPUTEVENT_KEY_NP_4},
|
||||
{ 84, INPUTEVENT_KEY_NP_5},
|
||||
{ 85, INPUTEVENT_KEY_NP_6},
|
||||
|
||||
{ 87, INPUTEVENT_KEY_NP_1},
|
||||
{ 88, INPUTEVENT_KEY_NP_2},
|
||||
{ 89, INPUTEVENT_KEY_NP_3},
|
||||
{ 104, INPUTEVENT_KEY_ENTER}, // The ENT from keypad..
|
||||
|
||||
{ 90, INPUTEVENT_KEY_NP_0},
|
||||
{ 91, INPUTEVENT_KEY_PERIOD},
|
||||
|
||||
{ 111, INPUTEVENT_KEY_CURSOR_UP},
|
||||
{ 113, INPUTEVENT_KEY_CURSOR_LEFT},
|
||||
{ 116, INPUTEVENT_KEY_CURSOR_DOWN},
|
||||
{ 114, INPUTEVENT_KEY_CURSOR_RIGHT},
|
||||
|
||||
{ 133, INPUTEVENT_KEY_AMIGA_LEFT}, // Left amiga mapped to left Windows
|
||||
{ 134, INPUTEVENT_KEY_AMIGA_RIGHT}, // Right amiga mapped to right windows key.
|
||||
{ 135, INPUTEVENT_KEY_AMIGA_RIGHT} // Right amiga mapped to Menu key.
|
||||
};
|
||||
|
||||
|
||||
|
||||
static struct uae_input_device_kbr_default keytrans_amiga_fbcon[] = {
|
||||
|
||||
{ 9 +8 , INPUTEVENT_KEY_ESC},
|
||||
{ 67 +8 , INPUTEVENT_KEY_F1},
|
||||
{ 68 +8 , INPUTEVENT_KEY_F2},
|
||||
{ 69 +8 , INPUTEVENT_KEY_F3},
|
||||
{ 70 +8 , INPUTEVENT_KEY_F4},
|
||||
{ 71 +8 , INPUTEVENT_KEY_F5},
|
||||
{ 72 +8 , INPUTEVENT_KEY_F6},
|
||||
{ 73 +8 , INPUTEVENT_KEY_F7},
|
||||
{ 74 +8 , INPUTEVENT_KEY_F8},
|
||||
{ 75 +8 , INPUTEVENT_KEY_F9},
|
||||
{ 76 +8 , INPUTEVENT_KEY_F10},
|
||||
// { 95 +8 , INPUTEVENT_KEY_F11},
|
||||
// { 96 +8 , INPUTEVENT_KEY_F12},
|
||||
|
||||
{ 49 +8 , INPUTEVENT_KEY_BACKQUOTE},
|
||||
|
||||
{ 10 +8 , INPUTEVENT_KEY_1},
|
||||
{ 11 +8 , INPUTEVENT_KEY_2},
|
||||
{ 12 +8 , INPUTEVENT_KEY_3},
|
||||
{ 13 +8 , INPUTEVENT_KEY_4},
|
||||
{ 14 +8 , INPUTEVENT_KEY_5},
|
||||
{ 15 +8 , INPUTEVENT_KEY_6},
|
||||
{ 16 +8 , INPUTEVENT_KEY_7},
|
||||
{ 17 +8 , INPUTEVENT_KEY_8},
|
||||
{ 18 +8 , INPUTEVENT_KEY_9},
|
||||
{ 19 +8 , INPUTEVENT_KEY_0},
|
||||
{ 20 +8 , INPUTEVENT_KEY_SUB},
|
||||
{ 21 +8 , INPUTEVENT_KEY_EQUALS},
|
||||
{ 22 +8 , INPUTEVENT_KEY_BACKSLASH},
|
||||
|
||||
{ 23 +8 , INPUTEVENT_KEY_TAB},
|
||||
{ 24 +8 , INPUTEVENT_KEY_Q},
|
||||
{ 25 +8 , INPUTEVENT_KEY_W},
|
||||
{ 26 +8 , INPUTEVENT_KEY_E},
|
||||
{ 27 +8 , INPUTEVENT_KEY_R},
|
||||
{ 28 +8 , INPUTEVENT_KEY_T},
|
||||
{ 29 +8 , INPUTEVENT_KEY_Y},
|
||||
{ 30 +8 , INPUTEVENT_KEY_U},
|
||||
{ 31 +8 , INPUTEVENT_KEY_I},
|
||||
{ 32 +8 , INPUTEVENT_KEY_O},
|
||||
{ 33 +8 , INPUTEVENT_KEY_P},
|
||||
{ 34 +8 , INPUTEVENT_KEY_LEFTBRACKET},
|
||||
{ 35 +8 , INPUTEVENT_KEY_RIGHTBRACKET},
|
||||
{ 36 +8 , INPUTEVENT_KEY_RETURN},
|
||||
|
||||
{ 66 +8 , INPUTEVENT_KEY_CAPS_LOCK},
|
||||
{ 38 +8 , INPUTEVENT_KEY_A},
|
||||
{ 39 +8 , INPUTEVENT_KEY_S},
|
||||
{ 40 +8 , INPUTEVENT_KEY_D},
|
||||
{ 41 +8 , INPUTEVENT_KEY_F},
|
||||
{ 42 +8 , INPUTEVENT_KEY_G},
|
||||
{ 43 +8 , INPUTEVENT_KEY_H},
|
||||
{ 44 +8 , INPUTEVENT_KEY_J},
|
||||
{ 45 +8 , INPUTEVENT_KEY_K},
|
||||
{ 46 +8 , INPUTEVENT_KEY_L},
|
||||
{ 47 +8 , INPUTEVENT_KEY_SEMICOLON},
|
||||
{ 48 +8 , INPUTEVENT_KEY_SINGLEQUOTE},
|
||||
{ 51 +8 , INPUTEVENT_KEY_BACKSLASH},
|
||||
|
||||
{ 50 +8 , INPUTEVENT_KEY_SHIFT_LEFT},
|
||||
{ 94 +8 , INPUTEVENT_KEY_LTGT},
|
||||
{ 52 +8 , INPUTEVENT_KEY_Z},
|
||||
{ 53 +8 , INPUTEVENT_KEY_X},
|
||||
{ 54 +8 , INPUTEVENT_KEY_C},
|
||||
{ 55 +8 , INPUTEVENT_KEY_V},
|
||||
{ 56 +8 , INPUTEVENT_KEY_B},
|
||||
{ 57 +8 , INPUTEVENT_KEY_N},
|
||||
{ 58 +8 , INPUTEVENT_KEY_M},
|
||||
{ 59 +8 , INPUTEVENT_KEY_COMMA},
|
||||
{ 60 +8 , INPUTEVENT_KEY_PERIOD},
|
||||
{ 61 +8 , INPUTEVENT_KEY_DIV},
|
||||
{ 62 +8 , INPUTEVENT_KEY_SHIFT_RIGHT},
|
||||
|
||||
{ 37 +8 , INPUTEVENT_KEY_CTRL},
|
||||
{ 64 +8 , INPUTEVENT_KEY_ALT_LEFT},
|
||||
{ 65 +8 , INPUTEVENT_KEY_SPACE},
|
||||
|
||||
{ 108 +8 , INPUTEVENT_KEY_ALT_RIGHT},
|
||||
|
||||
//{ 78 +8 , INPUTEVENT_KEY_SCROLLOCK},
|
||||
|
||||
//{ 77 +8 , INPUTEVENT_KEY_NUMLOCK},
|
||||
{ 106 +8 , INPUTEVENT_KEY_NP_DIV},
|
||||
{ 63 +8 , INPUTEVENT_KEY_NP_MUL},
|
||||
{ 82 +8 , INPUTEVENT_KEY_NP_SUB},
|
||||
|
||||
{ 79 +8 , INPUTEVENT_KEY_NP_7},
|
||||
{ 80 +8 , INPUTEVENT_KEY_NP_8},
|
||||
{ 81 +8 , INPUTEVENT_KEY_NP_9},
|
||||
{ 86 +8 , INPUTEVENT_KEY_NP_ADD},
|
||||
|
||||
{ 83 +8 , INPUTEVENT_KEY_NP_4},
|
||||
{ 84 +8 , INPUTEVENT_KEY_NP_5},
|
||||
{ 85 +8 , INPUTEVENT_KEY_NP_6},
|
||||
|
||||
{ 87 +8 , INPUTEVENT_KEY_NP_1},
|
||||
{ 88 +8 , INPUTEVENT_KEY_NP_2},
|
||||
{ 89 +8 , INPUTEVENT_KEY_NP_3},
|
||||
{ 104 +8 , INPUTEVENT_KEY_ENTER}, // The ENT from keypad..
|
||||
|
||||
{ 90 +8 , INPUTEVENT_KEY_NP_0},
|
||||
{ 91 +8 , INPUTEVENT_KEY_PERIOD},
|
||||
|
||||
{ 111 +8, INPUTEVENT_KEY_CURSOR_UP},
|
||||
{ 113 +8, INPUTEVENT_KEY_CURSOR_LEFT},
|
||||
{ 116 +8, INPUTEVENT_KEY_CURSOR_DOWN},
|
||||
{ 114 +8, INPUTEVENT_KEY_CURSOR_RIGHT},
|
||||
|
||||
|
||||
{ 133 +8 , INPUTEVENT_KEY_AMIGA_LEFT}, // Left amiga mapped to left Windows
|
||||
{ 134 +8 , INPUTEVENT_KEY_AMIGA_RIGHT}, // Right amiga mapped to right windows key.
|
||||
{ 135 +8 , INPUTEVENT_KEY_AMIGA_RIGHT} // Right amiga mapped to Menu key.
|
||||
};
|
||||
|
||||
|
||||
static struct uae_input_device_kbr_default keytrans_amiga[] = {
|
||||
|
||||
{ SDLK_a, INPUTEVENT_KEY_A },
|
||||
|
@ -83,6 +317,20 @@ static struct uae_input_device_kbr_default *keytrans[] = {
|
|||
keytrans_amiga
|
||||
};
|
||||
|
||||
|
||||
static struct uae_input_device_kbr_default *keytrans_x11[] = {
|
||||
keytrans_amiga_x11,
|
||||
keytrans_amiga_x11,
|
||||
keytrans_amiga_x11
|
||||
};
|
||||
|
||||
|
||||
static struct uae_input_device_kbr_default *keytrans_fbcon[] = {
|
||||
keytrans_amiga_fbcon,
|
||||
keytrans_amiga_fbcon,
|
||||
keytrans_amiga_fbcon
|
||||
};
|
||||
|
||||
static int kb_none[] = { -1 };
|
||||
static int *kbmaps[] = { kb_none, kb_none, kb_none, kb_none, kb_none,
|
||||
kb_none, kb_none, kb_none, kb_none, kb_none };
|
||||
|
@ -90,12 +338,30 @@ static int *kbmaps[] = { kb_none, kb_none, kb_none, kb_none, kb_none,
|
|||
|
||||
void keyboard_settrans (void)
|
||||
{
|
||||
inputdevice_setkeytranslation (keytrans, kbmaps);
|
||||
char vid_drv_name[32];
|
||||
// get display type...
|
||||
SDL_VideoDriverName(vid_drv_name, sizeof(vid_drv_name));
|
||||
if (strcmp(vid_drv_name, "x11") == 0)
|
||||
{
|
||||
printf("Will use keycode from x11 mapping.\n");
|
||||
inputdevice_setkeytranslation (keytrans_x11, kbmaps);
|
||||
} else if (strcmp(vid_drv_name, "fbcon") == 0)
|
||||
{
|
||||
printf("Will use keycode from fbcon mapping.\n");
|
||||
inputdevice_setkeytranslation (keytrans_fbcon, kbmaps);
|
||||
} else
|
||||
{
|
||||
printf("Unknown keycode to use, will use keysym\n");
|
||||
inputdevice_setkeytranslation (keytrans, kbmaps);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
int translate_pandora_keys(int symbol, int *modifier)
|
||||
{
|
||||
#ifndef PANDORA_SPECIFIC
|
||||
return 0;
|
||||
#endif
|
||||
switch(symbol)
|
||||
{
|
||||
case SDLK_UP:
|
||||
|
|
|
@ -834,7 +834,7 @@ int main (int argc, char *argv[])
|
|||
alloc_AmigaMem();
|
||||
RescanROMs();
|
||||
|
||||
keyboard_settrans();
|
||||
//keyboard_settrans();
|
||||
real_main (argc, argv);
|
||||
|
||||
ClearAvailableROMList();
|
||||
|
@ -921,7 +921,11 @@ int handle_msgpump (void)
|
|||
inputdevice_do_keyboard(AK_LSH, 0);
|
||||
inputdevice_do_keyboard(keycode, 1);
|
||||
} else {
|
||||
#ifdef RASPBERRY
|
||||
inputdevice_translatekeycode(0, rEvent.key.keysym.scancode, 1);
|
||||
#else
|
||||
inputdevice_translatekeycode(0, rEvent.key.keysym.sym, 1);
|
||||
#endif
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
@ -966,7 +970,11 @@ int handle_msgpump (void)
|
|||
if(modifier == KMOD_SHIFT)
|
||||
inputdevice_do_keyboard(AK_LSH, 0);
|
||||
} else {
|
||||
#ifdef RASPBERRY
|
||||
inputdevice_translatekeycode(0, rEvent.key.keysym.scancode, 0);
|
||||
#else
|
||||
inputdevice_translatekeycode(0, rEvent.key.keysym.sym, 0);
|
||||
#endif
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
|
|
@ -51,7 +51,6 @@ static int cdrdcnt = 0;
|
|||
|
||||
#ifdef NO_SOUND
|
||||
|
||||
|
||||
void finish_sound_buffer (void) { }
|
||||
|
||||
int setup_sound (void) { sound_available = 0; return 0; }
|
||||
|
@ -145,7 +144,7 @@ static void sound_thread_mixer(void *ud, Uint8 *stream, int len)
|
|||
//if((cnt%SOUND_BUFFERS_COUNT) == (wrcnt%SOUND_BUFFERS_COUNT))
|
||||
//printf("Error: Both consumer and writer use same buffer\n");
|
||||
|
||||
cdrdcnt = cdwrcnt;
|
||||
//cdrdcnt = cdwrcnt;
|
||||
cnt++;
|
||||
#ifdef SOUND_USE_SEMAPHORES
|
||||
sem_post(&callback_sem);
|
||||
|
@ -277,7 +276,7 @@ void finish_cdaudio_buffer (void)
|
|||
{
|
||||
cdwrcnt++;
|
||||
cdbufpt = render_cdbuff = cdaudio_buffer[cdwrcnt & (CDAUDIO_BUFFERS - 1)];
|
||||
finish_cdbuff = cdbufpt + CDAUDIO_BUFFER_LEN;
|
||||
finish_cdbuff = cdbufpt + CDAUDIO_BUFFER_LEN * 2;
|
||||
audio_activate();
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue