mirror of
https://github.com/CTCaer/RetroArch.git
synced 2025-02-20 19:40:39 +00:00
Merge pull request #461 from libretro/kb_overlay
Support for keyboard keys on overlays.
This commit is contained in:
commit
e7cf6d1672
@ -166,10 +166,24 @@ static bool g_is_syncing = true;
|
||||
[g_view addSubview:g_pause_indicator_view];
|
||||
|
||||
self.view = g_view;
|
||||
|
||||
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(showPauseIndicator) name:UIApplicationWillEnterForegroundNotification object:nil];
|
||||
return self;
|
||||
}
|
||||
|
||||
// Pause Menus
|
||||
- (void)viewDidAppear:(BOOL)animated
|
||||
{
|
||||
[self showPauseIndicator];
|
||||
}
|
||||
|
||||
- (void)showPauseIndicator
|
||||
{
|
||||
g_pause_indicator_view.alpha = 1.0f;
|
||||
[NSObject cancelPreviousPerformRequestsWithTarget:g_instance];
|
||||
[g_instance performSelector:@selector(hidePauseButton) withObject:g_instance afterDelay:3.0f];
|
||||
}
|
||||
|
||||
- (void)viewWillLayoutSubviews
|
||||
{
|
||||
UIInterfaceOrientation orientation = self.interfaceOrientation;
|
||||
@ -419,16 +433,8 @@ static RAScreen* get_chosen_screen()
|
||||
bool apple_gfx_ctx_init(void)
|
||||
{
|
||||
// Make sure the view was created
|
||||
[RAGameView get];
|
||||
|
||||
#ifdef IOS // Show pause button for a few seconds, so people know it's there
|
||||
g_pause_indicator_view.alpha = 1.0f;
|
||||
[NSObject cancelPreviousPerformRequestsWithTarget:g_instance];
|
||||
[g_instance performSelector:@selector(hidePauseButton) withObject:g_instance afterDelay:3.0f];
|
||||
#endif
|
||||
|
||||
[RAGameView get];
|
||||
g_initialized = true;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
171
input/overlay.c
171
input/overlay.c
@ -35,7 +35,8 @@ enum overlay_type
|
||||
{
|
||||
OVERLAY_TYPE_BUTTONS = 0,
|
||||
OVERLAY_TYPE_ANALOG_LEFT,
|
||||
OVERLAY_TYPE_ANALOG_RIGHT
|
||||
OVERLAY_TYPE_ANALOG_RIGHT,
|
||||
OVERLAY_TYPE_KEYBOARD
|
||||
};
|
||||
|
||||
struct overlay_desc
|
||||
@ -181,6 +182,162 @@ static unsigned input_str_to_bind(const char *str)
|
||||
return RARCH_BIND_LIST_END;
|
||||
}
|
||||
|
||||
static const struct str_to_bind_map str_to_keyboard[] = {
|
||||
{ "retrok_backspace", RETROK_BACKSPACE },
|
||||
{ "retrok_tab", RETROK_TAB },
|
||||
{ "retrok_clear", RETROK_CLEAR },
|
||||
{ "retrok_return", RETROK_RETURN },
|
||||
{ "retrok_pause", RETROK_PAUSE },
|
||||
{ "retrok_escape", RETROK_ESCAPE },
|
||||
{ "retrok_space", RETROK_SPACE },
|
||||
{ "retrok_exclaim", RETROK_EXCLAIM },
|
||||
{ "retrok_quotedbl", RETROK_QUOTEDBL },
|
||||
{ "retrok_hash", RETROK_HASH },
|
||||
{ "retrok_dollar", RETROK_DOLLAR },
|
||||
{ "retrok_ampersand", RETROK_AMPERSAND },
|
||||
{ "retrok_quote", RETROK_QUOTE },
|
||||
{ "retrok_leftparen", RETROK_LEFTPAREN },
|
||||
{ "retrok_rightparen", RETROK_RIGHTPAREN },
|
||||
{ "retrok_asterisk", RETROK_ASTERISK },
|
||||
{ "retrok_plus", RETROK_PLUS },
|
||||
{ "retrok_comma", RETROK_COMMA },
|
||||
{ "retrok_minus", RETROK_MINUS },
|
||||
{ "retrok_period", RETROK_PERIOD },
|
||||
{ "retrok_slash", RETROK_SLASH },
|
||||
{ "retrok_0", RETROK_0 },
|
||||
{ "retrok_1", RETROK_1 },
|
||||
{ "retrok_2", RETROK_2 },
|
||||
{ "retrok_3", RETROK_3 },
|
||||
{ "retrok_4", RETROK_4 },
|
||||
{ "retrok_5", RETROK_5 },
|
||||
{ "retrok_6", RETROK_6 },
|
||||
{ "retrok_7", RETROK_7 },
|
||||
{ "retrok_8", RETROK_8 },
|
||||
{ "retrok_9", RETROK_9 },
|
||||
{ "retrok_colon", RETROK_COLON },
|
||||
{ "retrok_semicolon", RETROK_SEMICOLON },
|
||||
{ "retrok_less", RETROK_LESS },
|
||||
{ "retrok_equals", RETROK_EQUALS },
|
||||
{ "retrok_greater", RETROK_GREATER },
|
||||
{ "retrok_question", RETROK_QUESTION },
|
||||
{ "retrok_at", RETROK_AT },
|
||||
{ "retrok_leftbracket", RETROK_LEFTBRACKET },
|
||||
{ "retrok_backslash", RETROK_BACKSLASH },
|
||||
{ "retrok_rightbracket", RETROK_RIGHTBRACKET },
|
||||
{ "retrok_caret", RETROK_CARET },
|
||||
{ "retrok_underscore", RETROK_UNDERSCORE },
|
||||
{ "retrok_backquote", RETROK_BACKQUOTE },
|
||||
{ "retrok_a", RETROK_a },
|
||||
{ "retrok_b", RETROK_b },
|
||||
{ "retrok_c", RETROK_c },
|
||||
{ "retrok_d", RETROK_d },
|
||||
{ "retrok_e", RETROK_e },
|
||||
{ "retrok_f", RETROK_f },
|
||||
{ "retrok_g", RETROK_g },
|
||||
{ "retrok_h", RETROK_h },
|
||||
{ "retrok_i", RETROK_i },
|
||||
{ "retrok_j", RETROK_j },
|
||||
{ "retrok_k", RETROK_k },
|
||||
{ "retrok_l", RETROK_l },
|
||||
{ "retrok_m", RETROK_m },
|
||||
{ "retrok_n", RETROK_n },
|
||||
{ "retrok_o", RETROK_o },
|
||||
{ "retrok_p", RETROK_p },
|
||||
{ "retrok_q", RETROK_q },
|
||||
{ "retrok_r", RETROK_r },
|
||||
{ "retrok_s", RETROK_s },
|
||||
{ "retrok_t", RETROK_t },
|
||||
{ "retrok_u", RETROK_u },
|
||||
{ "retrok_v", RETROK_v },
|
||||
{ "retrok_w", RETROK_w },
|
||||
{ "retrok_x", RETROK_x },
|
||||
{ "retrok_y", RETROK_y },
|
||||
{ "retrok_z", RETROK_z },
|
||||
{ "retrok_delete", RETROK_DELETE },
|
||||
|
||||
{ "retrok_kp0", RETROK_KP0 },
|
||||
{ "retrok_kp1", RETROK_KP1 },
|
||||
{ "retrok_kp2", RETROK_KP2 },
|
||||
{ "retrok_kp3", RETROK_KP3 },
|
||||
{ "retrok_kp4", RETROK_KP4 },
|
||||
{ "retrok_kp5", RETROK_KP5 },
|
||||
{ "retrok_kp6", RETROK_KP6 },
|
||||
{ "retrok_kp7", RETROK_KP7 },
|
||||
{ "retrok_kp8", RETROK_KP8 },
|
||||
{ "retrok_kp9", RETROK_KP9 },
|
||||
{ "retrok_kp_period", RETROK_KP_PERIOD },
|
||||
{ "retrok_kp_divide", RETROK_KP_DIVIDE },
|
||||
{ "retrok_kp_multiply", RETROK_KP_MULTIPLY },
|
||||
{ "retrok_kp_minus", RETROK_KP_MINUS },
|
||||
{ "retrok_kp_plus", RETROK_KP_PLUS },
|
||||
{ "retrok_kp_enter", RETROK_KP_ENTER },
|
||||
{ "retrok_kp_equals", RETROK_KP_EQUALS },
|
||||
|
||||
{ "retrok_up", RETROK_UP },
|
||||
{ "retrok_down", RETROK_DOWN },
|
||||
{ "retrok_right", RETROK_RIGHT },
|
||||
{ "retrok_left", RETROK_LEFT },
|
||||
{ "retrok_insert", RETROK_INSERT },
|
||||
{ "retrok_home", RETROK_HOME },
|
||||
{ "retrok_end", RETROK_END },
|
||||
{ "retrok_pageup", RETROK_PAGEUP },
|
||||
{ "retrok_pagedown", RETROK_PAGEDOWN },
|
||||
|
||||
{ "retrok_f1", RETROK_F1 },
|
||||
{ "retrok_f2", RETROK_F2 },
|
||||
{ "retrok_f3", RETROK_F3 },
|
||||
{ "retrok_f4", RETROK_F4 },
|
||||
{ "retrok_f5", RETROK_F5 },
|
||||
{ "retrok_f6", RETROK_F6 },
|
||||
{ "retrok_f7", RETROK_F7 },
|
||||
{ "retrok_f8", RETROK_F8 },
|
||||
{ "retrok_f9", RETROK_F9 },
|
||||
{ "retrok_f10", RETROK_F10 },
|
||||
{ "retrok_f11", RETROK_F11 },
|
||||
{ "retrok_f12", RETROK_F12 },
|
||||
{ "retrok_f13", RETROK_F13 },
|
||||
{ "retrok_f14", RETROK_F14 },
|
||||
{ "retrok_f15", RETROK_F15 },
|
||||
|
||||
{ "retrok_numlock", RETROK_NUMLOCK },
|
||||
{ "retrok_capslock", RETROK_CAPSLOCK },
|
||||
{ "retrok_scrollock", RETROK_SCROLLOCK },
|
||||
{ "retrok_rshift", RETROK_RSHIFT },
|
||||
{ "retrok_lshift", RETROK_LSHIFT },
|
||||
{ "retrok_rctrl", RETROK_RCTRL },
|
||||
{ "retrok_lctrl", RETROK_LCTRL },
|
||||
{ "retrok_ralt", RETROK_RALT },
|
||||
{ "retrok_lalt", RETROK_LALT },
|
||||
{ "retrok_rmeta", RETROK_RMETA },
|
||||
{ "retrok_lmeta", RETROK_LMETA },
|
||||
{ "retrok_lsuper", RETROK_LSUPER },
|
||||
{ "retrok_rsuper", RETROK_RSUPER },
|
||||
{ "retrok_mode", RETROK_MODE },
|
||||
{ "retrok_compose", RETROK_COMPOSE },
|
||||
|
||||
{ "retrok_help", RETROK_HELP },
|
||||
{ "retrok_print", RETROK_PRINT },
|
||||
{ "retrok_sysreq", RETROK_SYSREQ },
|
||||
{ "retrok_break", RETROK_BREAK },
|
||||
{ "retrok_menu", RETROK_MENU },
|
||||
{ "retrok_power", RETROK_POWER },
|
||||
{ "retrok_euro", RETROK_EURO },
|
||||
{ "retrok_undo", RETROK_UNDO },
|
||||
};
|
||||
|
||||
static unsigned input_str_to_keyboard(const char *str)
|
||||
{
|
||||
unsigned i;
|
||||
for (i = 0; i < ARRAY_SIZE(str_to_keyboard); i++)
|
||||
{
|
||||
if (!strcmp(str_to_keyboard[i].str, str))
|
||||
return str_to_keyboard[i].bind;
|
||||
}
|
||||
|
||||
RARCH_ERR("[Overlay] Unknown keyboard key: %s.\n", str);
|
||||
return RETROK_UNKNOWN;
|
||||
}
|
||||
|
||||
static void input_overlay_scale(struct overlay *overlay, float scale)
|
||||
{
|
||||
size_t i;
|
||||
@ -322,6 +479,11 @@ static bool input_overlay_load_desc(input_overlay_t *ol, config_file_t *conf, st
|
||||
desc->type = OVERLAY_TYPE_ANALOG_LEFT;
|
||||
else if (strcmp(key, "analog_right") == 0)
|
||||
desc->type = OVERLAY_TYPE_ANALOG_RIGHT;
|
||||
else if (strstr(key, "retrok_") == key)
|
||||
{
|
||||
desc->type = OVERLAY_TYPE_KEYBOARD;
|
||||
desc->key_mask = input_str_to_keyboard(key);
|
||||
}
|
||||
else
|
||||
{
|
||||
const char *tmp;
|
||||
@ -357,7 +519,7 @@ static bool input_overlay_load_desc(input_overlay_t *ol, config_file_t *conf, st
|
||||
goto end;
|
||||
}
|
||||
|
||||
if (desc->type != OVERLAY_TYPE_BUTTONS)
|
||||
if (desc->type == OVERLAY_TYPE_ANALOG_LEFT || desc->type == OVERLAY_TYPE_ANALOG_RIGHT)
|
||||
{
|
||||
if (desc->hitbox != OVERLAY_HITBOX_RADIAL)
|
||||
{
|
||||
@ -760,6 +922,11 @@ void input_overlay_poll(input_overlay_t *ol, input_overlay_state_t *out, int16_t
|
||||
if (mask & (UINT64_C(1) << RARCH_OVERLAY_NEXT))
|
||||
ol->next_index = desc->next_index;
|
||||
}
|
||||
else if (desc->type == OVERLAY_TYPE_KEYBOARD)
|
||||
{
|
||||
if (desc->key_mask < RETROK_LAST)
|
||||
OVERLAY_SET_KEY(out, desc->key_mask);
|
||||
}
|
||||
else
|
||||
{
|
||||
float x_dist = x - desc->x;
|
||||
|
@ -34,8 +34,13 @@ typedef struct input_overlay_state
|
||||
{
|
||||
uint64_t buttons; // This is a bitmask of (1 << key_bind_id).
|
||||
int16_t analog[4]; // Left X, Left Y, Right X, Right Y
|
||||
uint32_t keys[RETROK_LAST / 32 + 1];
|
||||
} input_overlay_state_t;
|
||||
|
||||
#define OVERLAY_GET_KEY(state, key) (((state)->keys[(key) / 32] >> ((key) % 32)) & 1)
|
||||
#define OVERLAY_SET_KEY(state, key) (state)->keys[(key) / 32] |= 1 << ((key) % 32)
|
||||
#define OVERLAY_CLEAR_KEY(state, key) (state)->keys[(key) / 32] &= ~(1 << ((key) % 32))
|
||||
|
||||
input_overlay_t *input_overlay_new(const char *overlay);
|
||||
void input_overlay_free(input_overlay_t *ol);
|
||||
|
||||
|
107
media/overlays/qwerty/qwerty.cfg
Normal file
107
media/overlays/qwerty/qwerty.cfg
Normal file
@ -0,0 +1,107 @@
|
||||
overlays = 1
|
||||
overlay0_normalized = true
|
||||
overlay0_full_screen = true
|
||||
overlay0_descs = 101
|
||||
overlay0_overlay = qwerty.png
|
||||
|
||||
overlay0_desc0 = "retrok_escape,0.020833,0.784722,rect,0.020833,0.015625"
|
||||
overlay0_desc1 = "retrok_f1,0.108796,0.784722,rect,0.020833,0.015625"
|
||||
overlay0_desc2 = "retrok_f2,0.152778,0.784722,rect,0.020833,0.015625"
|
||||
overlay0_desc3 = "retrok_f3,0.196759,0.784722,rect,0.020833,0.015625"
|
||||
overlay0_desc4 = "retrok_f4,0.240741,0.784722,rect,0.020833,0.015625"
|
||||
overlay0_desc5 = "retrok_f5,0.307870,0.784722,rect,0.020833,0.015625"
|
||||
overlay0_desc6 = "retrok_f6,0.351852,0.784722,rect,0.020833,0.015625"
|
||||
overlay0_desc7 = "retrok_f7,0.395833,0.784722,rect,0.020833,0.015625"
|
||||
overlay0_desc8 = "retrok_f8,0.439815,0.784722,rect,0.020833,0.015625"
|
||||
overlay0_desc9 = "retrok_f9,0.506944,0.784722,rect,0.020833,0.015625"
|
||||
overlay0_desc10 = "retrok_f10,0.550926,0.784722,rect,0.020833,0.015625"
|
||||
overlay0_desc11 = "retrok_f11,0.594907,0.784722,rect,0.020833,0.015625"
|
||||
overlay0_desc12 = "retrok_f12,0.638889,0.784722,rect,0.020833,0.015625"
|
||||
overlay0_desc13 = "retrok_print,0.699074,0.784722,rect,0.020833,0.015625"
|
||||
overlay0_desc14 = "retrok_scrollock,0.743056,0.784722,rect,0.020833,0.015625"
|
||||
overlay0_desc15 = "retrok_pause,0.787037,0.784722,rect,0.020833,0.015625"
|
||||
overlay0_desc16 = "retrok_tilde,0.020833,0.852431,rect,0.020833,0.015625"
|
||||
overlay0_desc17 = "retrok_1,0.064815,0.852431,rect,0.020833,0.015625"
|
||||
overlay0_desc18 = "retrok_2,0.108796,0.852431,rect,0.020833,0.015625"
|
||||
overlay0_desc19 = "retrok_3,0.152778,0.852431,rect,0.020833,0.015625"
|
||||
overlay0_desc20 = "retrok_4,0.196759,0.852431,rect,0.020833,0.015625"
|
||||
overlay0_desc21 = "retrok_5,0.240741,0.852431,rect,0.020833,0.015625"
|
||||
overlay0_desc22 = "retrok_6,0.284722,0.852431,rect,0.020833,0.015625"
|
||||
overlay0_desc23 = "retrok_7,0.328704,0.852431,rect,0.020833,0.015625"
|
||||
overlay0_desc24 = "retrok_8,0.372685,0.852431,rect,0.020833,0.015625"
|
||||
overlay0_desc25 = "retrok_9,0.416667,0.852431,rect,0.020833,0.015625"
|
||||
overlay0_desc26 = "retrok_0,0.460648,0.852431,rect,0.020833,0.015625"
|
||||
overlay0_desc27 = "retrok_minus,0.504630,0.852431,rect,0.020833,0.015625"
|
||||
overlay0_desc28 = "retrok_equals,0.548611,0.852431,rect,0.020833,0.015625"
|
||||
overlay0_desc29 = "retrok_backspace,0.615741,0.852431,rect,0.043981,0.015625"
|
||||
overlay0_desc30 = "retrok_tab,0.032407,0.885417,rect,0.032407,0.015625"
|
||||
overlay0_desc31 = "retrok_q,0.087963,0.885417,rect,0.020833,0.015625"
|
||||
overlay0_desc32 = "retrok_w,0.131944,0.885417,rect,0.020833,0.015625"
|
||||
overlay0_desc33 = "retrok_e,0.175926,0.885417,rect,0.020833,0.015625"
|
||||
overlay0_desc34 = "retrok_r,0.219907,0.885417,rect,0.020833,0.015625"
|
||||
overlay0_desc35 = "retrok_t,0.263889,0.885417,rect,0.020833,0.015625"
|
||||
overlay0_desc36 = "retrok_y,0.307870,0.885417,rect,0.020833,0.015625"
|
||||
overlay0_desc37 = "retrok_u,0.351852,0.885417,rect,0.020833,0.015625"
|
||||
overlay0_desc38 = "retrok_i,0.395833,0.885417,rect,0.020833,0.015625"
|
||||
overlay0_desc39 = "retrok_o,0.439815,0.885417,rect,0.020833,0.015625"
|
||||
overlay0_desc40 = "retrok_p,0.483796,0.885417,rect,0.020833,0.015625"
|
||||
overlay0_desc41 = "retrok_leftbracket,0.527778,0.885417,rect,0.020833,0.015625"
|
||||
overlay0_desc42 = "retrok_rightbracket,0.571759,0.885417,rect,0.020833,0.015625"
|
||||
overlay0_desc43 = "retrok_backslash,0.627315,0.885417,rect,0.032407,0.015625"
|
||||
overlay0_desc44 = "retrok_capslock,0.038194,0.918403,rect,0.038194,0.015625"
|
||||
overlay0_desc45 = "retrok_a,0.099537,0.918403,rect,0.020833,0.015625"
|
||||
overlay0_desc46 = "retrok_s,0.143519,0.918403,rect,0.020833,0.015625"
|
||||
overlay0_desc47 = "retrok_d,0.187500,0.918403,rect,0.020833,0.015625"
|
||||
overlay0_desc48 = "retrok_f,0.231481,0.918403,rect,0.020833,0.015625"
|
||||
overlay0_desc49 = "retrok_g,0.275463,0.918403,rect,0.020833,0.015625"
|
||||
overlay0_desc50 = "retrok_h,0.319444,0.918403,rect,0.020833,0.015625"
|
||||
overlay0_desc51 = "retrok_j,0.363426,0.918403,rect,0.020833,0.015625"
|
||||
overlay0_desc52 = "retrok_k,0.407407,0.918403,rect,0.020833,0.015625"
|
||||
overlay0_desc53 = "retrok_l,0.451389,0.918403,rect,0.020833,0.015625"
|
||||
overlay0_desc54 = "retrok_semicolon,0.495370,0.918403,rect,0.020833,0.015625"
|
||||
overlay0_desc55 = "retrok_quote,0.539352,0.918403,rect,0.020833,0.015625"
|
||||
overlay0_desc56 = "retrok_return,0.611111,0.918403,rect,0.048611,0.015625"
|
||||
overlay0_desc57 = "retrok_lshift,0.048611,0.951389,rect,0.048611,0.015625"
|
||||
overlay0_desc58 = "retrok_z,0.120370,0.951389,rect,0.020833,0.015625"
|
||||
overlay0_desc59 = "retrok_x,0.164352,0.951389,rect,0.020833,0.015625"
|
||||
overlay0_desc60 = "retrok_c,0.208333,0.951389,rect,0.020833,0.015625"
|
||||
overlay0_desc61 = "retrok_v,0.252315,0.951389,rect,0.020833,0.015625"
|
||||
overlay0_desc62 = "retrok_b,0.296296,0.951389,rect,0.020833,0.015625"
|
||||
overlay0_desc63 = "retrok_n,0.340278,0.951389,rect,0.020833,0.015625"
|
||||
overlay0_desc64 = "retrok_m,0.384259,0.951389,rect,0.020833,0.015625"
|
||||
overlay0_desc65 = "retrok_comma,0.428241,0.951389,rect,0.020833,0.015625"
|
||||
overlay0_desc66 = "retrok_period,0.472222,0.951389,rect,0.020833,0.015625"
|
||||
overlay0_desc67 = "retrok_slash,0.516204,0.951389,rect,0.020833,0.015625"
|
||||
overlay0_desc68 = "retrok_rshift,0.599537,0.951389,rect,0.060185,0.015625"
|
||||
overlay0_desc69 = "retrok_lctrl,0.031250,0.984375,rect,0.031250,0.015625"
|
||||
overlay0_desc70 = "retrok_lalt,0.142361,0.984375,rect,0.031250,0.015625"
|
||||
overlay0_desc71 = "retrok_space,0.329861,0.984375,rect,0.153935,0.015625"
|
||||
overlay0_desc72 = "retrok_ralt,0.517361,0.984375,rect,0.031250,0.015625"
|
||||
overlay0_desc73 = "retrok_rctrl,0.628472,0.984375,rect,0.031250,0.015625"
|
||||
overlay0_desc74 = "retrok_insert,0.699074,0.852431,rect,0.020833,0.015625"
|
||||
overlay0_desc75 = "retrok_home,0.743056,0.852431,rect,0.020833,0.015625"
|
||||
overlay0_desc76 = "retrok_pageup,0.787037,0.852431,rect,0.020833,0.015625"
|
||||
overlay0_desc77 = "retrok_delete,0.699074,0.885417,rect,0.020833,0.015625"
|
||||
overlay0_desc78 = "retrok_end,0.743056,0.885417,rect,0.020833,0.015625"
|
||||
overlay0_desc79 = "retrok_pagedown,0.787037,0.885417,rect,0.020833,0.015625"
|
||||
overlay0_desc80 = "retrok_up,0.743056,0.951389,rect,0.020833,0.015625"
|
||||
overlay0_desc81 = "retrok_left,0.699074,0.984375,rect,0.020833,0.015625"
|
||||
overlay0_desc82 = "retrok_down,0.743056,0.984375,rect,0.020833,0.015625"
|
||||
overlay0_desc83 = "retrok_right,0.787037,0.984375,rect,0.020833,0.015625"
|
||||
overlay0_desc84 = "retrok_numlock,0.847222,0.852431,rect,0.020833,0.015625"
|
||||
overlay0_desc85 = "retrok_kp_divide,0.891204,0.852431,rect,0.020833,0.015625"
|
||||
overlay0_desc86 = "retrok_kp_multiply,0.935185,0.852431,rect,0.020833,0.015625"
|
||||
overlay0_desc87 = "retrok_kp_minus,0.979167,0.852431,rect,0.020833,0.015625"
|
||||
overlay0_desc88 = "retrok_kp7,0.847222,0.885417,rect,0.020833,0.015625"
|
||||
overlay0_desc89 = "retrok_kp8,0.891204,0.885417,rect,0.020833,0.015625"
|
||||
overlay0_desc90 = "retrok_kp9,0.935185,0.885417,rect,0.020833,0.015625"
|
||||
overlay0_desc91 = "retrok_kp_plus,0.979167,0.901910,rect,0.020833,0.032118"
|
||||
overlay0_desc92 = "retrok_kp4,0.847222,0.918403,rect,0.020833,0.015625"
|
||||
overlay0_desc93 = "retrok_kp5,0.891204,0.918403,rect,0.020833,0.015625"
|
||||
overlay0_desc94 = "retrok_kp6,0.935185,0.918403,rect,0.020833,0.015625"
|
||||
overlay0_desc95 = "retrok_kp1,0.847222,0.951389,rect,0.020833,0.015625"
|
||||
overlay0_desc96 = "retrok_kp2,0.891204,0.951389,rect,0.020833,0.015625"
|
||||
overlay0_desc97 = "retrok_kp3,0.935185,0.951389,rect,0.020833,0.015625"
|
||||
overlay0_desc98 = "retrok_kp_enter,0.979167,0.967882,rect,0.020833,0.032118"
|
||||
overlay0_desc99 = "retrok_kp0,0.869213,0.984375,rect,0.042824,0.015625"
|
||||
overlay0_desc100 = "retrok_kp_equals,0.935185,0.984375,rect,0.020833,0.015625"
|
BIN
media/overlays/qwerty/qwerty.png
Normal file
BIN
media/overlays/qwerty/qwerty.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 20 KiB |
30
retroarch.c
30
retroarch.c
@ -492,6 +492,8 @@ size_t audio_sample_batch(const int16_t *data, size_t frames)
|
||||
#ifdef HAVE_OVERLAY
|
||||
static inline void input_poll_overlay(void)
|
||||
{
|
||||
input_overlay_state_t old_key_state;
|
||||
memcpy(old_key_state.keys, driver.overlay_state.keys, sizeof(driver.overlay_state.keys));
|
||||
memset(&driver.overlay_state, 0, sizeof(driver.overlay_state));
|
||||
|
||||
unsigned device = input_overlay_full_screen(driver.overlay) ?
|
||||
@ -512,6 +514,9 @@ static inline void input_poll_overlay(void)
|
||||
input_overlay_poll(driver.overlay, &polled_data, x, y);
|
||||
|
||||
driver.overlay_state.buttons |= polled_data.buttons;
|
||||
|
||||
for (j = 0; j < ARRAY_SIZE(driver.overlay_state.keys); j++)
|
||||
driver.overlay_state.keys[j] |= polled_data.keys[j];
|
||||
|
||||
// Fingers pressed later take prio and matched up with overlay poll priorities.
|
||||
for (j = 0; j < 4; j++)
|
||||
@ -521,6 +526,29 @@ static inline void input_poll_overlay(void)
|
||||
polled = true;
|
||||
}
|
||||
|
||||
for (i = 0; i < ARRAY_SIZE(driver.overlay_state.keys); i++)
|
||||
if (driver.overlay_state.keys[i] != old_key_state.keys[i])
|
||||
{
|
||||
uint32_t orig = old_key_state.keys[i];
|
||||
uint32_t new = driver.overlay_state.keys[i];
|
||||
|
||||
uint16_t mod = 0;
|
||||
mod |= (OVERLAY_GET_KEY(&driver.overlay_state, RETROK_LSHIFT) ||
|
||||
OVERLAY_GET_KEY(&driver.overlay_state, RETROK_RSHIFT)) ? RETROKMOD_SHIFT : 0;
|
||||
mod |= (OVERLAY_GET_KEY(&driver.overlay_state, RETROK_LCTRL) ||
|
||||
OVERLAY_GET_KEY(&driver.overlay_state, RETROK_RCTRL)) ? RETROKMOD_CTRL : 0;
|
||||
mod |= (OVERLAY_GET_KEY(&driver.overlay_state, RETROK_LALT) ||
|
||||
OVERLAY_GET_KEY(&driver.overlay_state, RETROK_RALT)) ? RETROKMOD_ALT : 0;
|
||||
mod |= (OVERLAY_GET_KEY(&driver.overlay_state, RETROK_LMETA) ||
|
||||
OVERLAY_GET_KEY(&driver.overlay_state, RETROK_RMETA)) ? RETROKMOD_META : 0;
|
||||
// CAPSLOCK SCROLLOCK NUMLOCK
|
||||
|
||||
for (j = 0; j < 32; j++)
|
||||
if ((orig & (1 << j)) != (new & (1 << j)))
|
||||
input_keyboard_event(new & (1 << j), i * 32 + j, 0, mod);
|
||||
}
|
||||
|
||||
|
||||
if (polled)
|
||||
input_overlay_post_poll(driver.overlay);
|
||||
else
|
||||
@ -589,6 +617,8 @@ static int16_t input_state(unsigned port, unsigned device, unsigned index, unsig
|
||||
#ifdef HAVE_OVERLAY
|
||||
if (device == RETRO_DEVICE_JOYPAD && port == 0)
|
||||
res |= driver.overlay_state.buttons & (UINT64_C(1) << id) ? 1 : 0;
|
||||
else if (device == RETRO_DEVICE_KEYBOARD && port == 0 && id < RETROK_LAST)
|
||||
res |= OVERLAY_GET_KEY(&driver.overlay_state, id) ? 1 : 0;
|
||||
else if (device == RETRO_DEVICE_ANALOG && port == 0)
|
||||
{
|
||||
unsigned base = (index == RETRO_DEVICE_INDEX_ANALOG_RIGHT) ? 2 : 0;
|
||||
|
Loading…
x
Reference in New Issue
Block a user