touchscreen: Use pointing mode in the yes/no screen

Seems to fix the unintuitive / inaccurate behavior of this screen.
Rejigger the generic touchscreen keymap because the 3x3 buttons are
no longer used. Also map physical keys for yes/no on the Q1.

Change-Id: I2ed633896b87030fa654d47d9d02929b849495da
This commit is contained in:
Aidan MacDonald 2021-08-10 21:27:28 +01:00
parent a8063054f9
commit 69420e796c
3 changed files with 28 additions and 4 deletions

View File

@ -164,6 +164,12 @@ enum yesno_res gui_syncyesno_run(const struct text_message * main_message,
gui_yesno_draw(&(yn[i]));
}
#ifdef HAVE_TOUCHSCREEN
/* switch to point mode because that's more intuitive */
enum touchscreen_mode tsm = touchscreen_get_mode();
touchscreen_set_mode(TOUCHSCREEN_POINT);
#endif
/* make sure to eat any extranous keypresses */
action_wait_for_release();
button_clear_queue();
@ -211,12 +217,23 @@ enum yesno_res gui_syncyesno_run(const struct text_message * main_message,
/* ignore some SYS events that can happen */
continue;
default:
if(default_event_handler(button) == SYS_USB_CONNECTED)
return(YESNO_USB);
if(default_event_handler(button) == SYS_USB_CONNECTED) {
#ifdef HAVE_TOUCHSCREEN
/* restore old touchscreen mode */
touchscreen_set_mode(tsm);
#endif
return YESNO_USB;
}
result = YESNO_NO;
}
}
#ifdef HAVE_TOUCHSCREEN
/* restore old touchscreen mode */
touchscreen_set_mode(tsm);
#endif
FOR_NB_SCREENS(i)
result_displayed=gui_yesno_draw_result(&(yn[i]), result);

View File

@ -57,6 +57,13 @@ static const struct button_mapping button_context_list[] = {
LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD)
}; /* button_context_list */
static const struct button_mapping button_context_yesno[] = {
/* note: touchscreen buttons are usable in addition to physical keys */
{ACTION_YESNO_ACCEPT, BUTTON_PLAY, BUTTON_NONE},
{ACTION_STD_CANCEL, BUTTON_POWER, BUTTON_NONE},
LAST_ITEM_IN_LIST
}; /* button_context_yesno */
const struct button_mapping* target_get_context_mapping(int context)
{
switch (context)
@ -73,5 +80,7 @@ const struct button_mapping* target_get_context_mapping(int context)
//return button_context_tree;
case CONTEXT_LIST:
return button_context_list;
case CONTEXT_YESNOSCREEN:
return button_context_yesno;
}
}

View File

@ -179,8 +179,6 @@ static const struct button_mapping button_context_mainmenu[] =
static const struct button_mapping button_context_yesno[] = {
{ ACTION_YESNO_ACCEPT, BUTTON_TOPRIGHT, BUTTON_NONE },
{ ACTION_YESNO_ACCEPT, BUTTON_BOTTOMLEFT, BUTTON_NONE },
LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_CUSTOM2|CONTEXT_YESNOSCREEN)
}; /* button_context_settings_yesno */