Allow skip/cancel gamepad button mapping using menu button.
This commit is contained in:
49
input.cpp
49
input.cpp
@@ -1217,6 +1217,12 @@ int get_map_clear()
|
||||
return mapping_clear;
|
||||
}
|
||||
|
||||
static uint32_t osd_timer = 0;
|
||||
int get_map_cancel()
|
||||
{
|
||||
return (mapping && !is_menu_core() && osd_timer && CheckTimer(osd_timer));
|
||||
}
|
||||
|
||||
static char *get_map_name(int dev, int def)
|
||||
{
|
||||
static char name[128];
|
||||
@@ -1767,15 +1773,41 @@ static void input_cb(struct input_event *ev, struct input_absinfo *absinfo, int
|
||||
}
|
||||
|
||||
int osd_event = 0;
|
||||
if (old_combo != 3 && input[dev].osd_combo == 3) osd_event = 1;
|
||||
else if (old_combo == 3 && input[dev].osd_combo != 3) osd_event = 2;
|
||||
if (old_combo != 3 && input[dev].osd_combo == 3)
|
||||
{
|
||||
osd_event = 1;
|
||||
if (mapping && !is_menu_core()) osd_timer = GetTimer(1000);
|
||||
}
|
||||
else if (old_combo == 3 && input[dev].osd_combo != 3)
|
||||
{
|
||||
osd_event = 2;
|
||||
if (mapping && !is_menu_core())
|
||||
{
|
||||
if (CheckTimer(osd_timer))
|
||||
{
|
||||
cancel = 1;
|
||||
ev->code = KEY_ESC;
|
||||
ev->value = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
map_skip = 1;
|
||||
ev->value = 1;
|
||||
}
|
||||
}
|
||||
osd_timer = 0;
|
||||
}
|
||||
|
||||
//mapping
|
||||
if (mapping && (mapping_dev >=0 || ev->value) && !((mapping_type < 2 || !mapping_button) && (cancel || enter)))
|
||||
if (mapping && (mapping_dev >= 0 || ev->value) && !((mapping_type < 2 || !mapping_button) && (cancel || enter)))
|
||||
{
|
||||
if (is_menu_core()) spi_uio_cmd(UIO_KEYBOARD); //ping the Menu core to wakeup
|
||||
if (is_menu_core())
|
||||
{
|
||||
spi_uio_cmd(UIO_KEYBOARD); //ping the Menu core to wakeup
|
||||
osd_event = 0;
|
||||
}
|
||||
|
||||
if (ev->type == EV_KEY && mapping_button>=0)
|
||||
if (ev->type == EV_KEY && mapping_button>=0 && !osd_event)
|
||||
{
|
||||
if (mapping_type == 2)
|
||||
{
|
||||
@@ -1830,10 +1862,7 @@ static void input_cb(struct input_event *ev, struct input_absinfo *absinfo, int
|
||||
mapping_clear = 0;
|
||||
if (mapping_dev >= 0 && (mapping_dev == dev || clear) && mapping_button < (is_menu_core() ? (SYS_BTN_OSD_KTGL+1) : mapping_count))
|
||||
{
|
||||
if (is_menu_core()) osd_event = 0;
|
||||
if (osd_event) key_mapped = 0;
|
||||
|
||||
if ((ev->value == 1 && !key_mapped) || osd_event == 1)
|
||||
if (ev->value == 1 && !key_mapped)
|
||||
{
|
||||
if (is_menu_core())
|
||||
{
|
||||
@@ -1868,7 +1897,7 @@ static void input_cb(struct input_event *ev, struct input_absinfo *absinfo, int
|
||||
}
|
||||
else
|
||||
{
|
||||
if ((mapping_type && osd_event == 1) || clear)
|
||||
if (clear)
|
||||
{
|
||||
memset(input[mapping_dev].map, 0, sizeof(input[mapping_dev].map));
|
||||
mapping_button = 0;
|
||||
|
||||
1
input.h
1
input.h
@@ -76,6 +76,7 @@ void start_map_setting(int cnt, int set = 0);
|
||||
int get_map_button();
|
||||
int get_map_type();
|
||||
int get_map_clear();
|
||||
int get_map_cancel();
|
||||
void finish_map_setting(int dismiss);
|
||||
uint16_t get_map_vid();
|
||||
uint16_t get_map_pid();
|
||||
|
||||
25
menu.cpp
25
menu.cpp
@@ -2129,9 +2129,18 @@ void HandleUI(void)
|
||||
menustate = MENU_JOYDIGMAP1;
|
||||
parentstate = MENU_JOYDIGMAP;
|
||||
for (int i = 0; i < OsdGetSize(); i++) OsdWrite(i);
|
||||
OsdWrite(7, " Esc \x16 Cancel");
|
||||
OsdWrite(8, " Enter \x16 Finish");
|
||||
OsdWrite(9, " Space \x16 Skip");
|
||||
if (is_menu_core())
|
||||
{
|
||||
OsdWrite(7, " Space \x16 Skip");
|
||||
OsdWrite(8, " Esc \x16 Cancel");
|
||||
OsdWrite(9, " Enter \x16 Finish");
|
||||
}
|
||||
else
|
||||
{
|
||||
OsdWrite(7, " Space/Menu \x16 Skip");
|
||||
OsdWrite(8, " Menu-hold \x16 Cancel");
|
||||
OsdWrite(9, " Enter \x16 Finish");
|
||||
}
|
||||
break;
|
||||
|
||||
case MENU_JOYDIGMAP1:
|
||||
@@ -2146,6 +2155,14 @@ void HandleUI(void)
|
||||
break;
|
||||
}
|
||||
|
||||
if (get_map_cancel())
|
||||
{
|
||||
OsdWrite(3);
|
||||
OsdWrite(4, " Canceling");
|
||||
OsdWrite(5);
|
||||
break;
|
||||
}
|
||||
|
||||
const char* p = 0;
|
||||
if (get_map_button() < 0)
|
||||
{
|
||||
@@ -2221,7 +2238,7 @@ void HandleUI(void)
|
||||
if (!get_map_type()) OsdWrite(9);
|
||||
}
|
||||
OsdWrite(5, s);
|
||||
if (!is_menu_core()) OsdWrite(10, " Menu/F12 \x16 Clear all");
|
||||
if (!is_menu_core()) OsdWrite(10, " F12 \x16 Clear all");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user