Hotkey change:

1. Change F1 from Memdisk to help
2. Add d/Ctrl+d for Memdisk
3. Add L for Language selection

So update the help txt files and menu json files at the same time.
This commit is contained in:
longpanda
2022-12-03 13:44:46 +08:00
parent bda74cd89b
commit 25b055bb0f
21 changed files with 111 additions and 63 deletions

View File

@@ -51,7 +51,29 @@ int g_ventoy_fn_mutex = 0;
int g_ventoy_secondary_menu_on = 0;
int g_ventoy_terminal_output = 0;
char g_ventoy_hotkey_tip[256];
int g_ventoy_virt_esc = 0;
static int g_vt_key_num = 0;
static int g_vt_key_code[128];
static int ventoy_menu_pop_key(void)
{
if (g_vt_key_num > 0 && g_vt_key_num < (int)(sizeof(g_vt_key_code) / sizeof(g_vt_key_code[0])))
{
g_vt_key_num--;
return g_vt_key_code[g_vt_key_num];
}
return -1;
}
int ventoy_menu_push_key(int code)
{
if (g_vt_key_num >= 0 && g_vt_key_num < (int)(sizeof(g_vt_key_code) / sizeof(g_vt_key_code[0])))
{
g_vt_key_code[g_vt_key_num++] = code;
return 0;
}
return -1;
}
#define VTOY_COMM_HOTKEY(cmdkey) \
if (0 == g_ventoy_fn_mutex && 0 == g_ventoy_secondary_menu_on) { \
@@ -798,9 +820,8 @@ run_menu (grub_menu_t menu, int nested, int *auto_boot)
return default_entry;
}
if (g_ventoy_virt_esc > 0) {
c = GRUB_TERM_ESC;
g_ventoy_virt_esc--;
if (g_vt_key_num > 0) {
c = ventoy_menu_pop_key();
} else {
c = grub_getkey_noblock ();
}
@@ -941,6 +962,21 @@ run_menu (grub_menu_t menu, int nested, int *auto_boot)
goto refresh;
case GRUB_TERM_KEY_F1:
case '1':
if (0 == g_ventoy_secondary_menu_on)
{
cmdstr = grub_env_get("VTOY_HELP_CMD");
if (cmdstr)
{
grub_script_execute_sourcecode(cmdstr);
while (grub_getkey() != GRUB_TERM_ESC)
;
menu_fini ();
goto refresh;
}
}
break;
case (GRUB_TERM_CTRL | 'd'):
case 'd':
if (0 == g_ventoy_secondary_menu_on)
{
menu_fini ();
@@ -989,21 +1025,14 @@ run_menu (grub_menu_t menu, int nested, int *auto_boot)
goto refresh;
}
break;
case (GRUB_TERM_CTRL | 'h'):
case 'h':
case (GRUB_TERM_CTRL | 'l'):
case (GRUB_TERM_CTRL | 'L'):
case (GRUB_TERM_SHIFT | 'l'):
case (GRUB_TERM_SHIFT | 'L'):
case 'l':
case 'L':
{
if (0 == g_ventoy_secondary_menu_on)
{
cmdstr = grub_env_get("VTOY_HELP_CMD");
if (cmdstr)
{
grub_script_execute_sourcecode(cmdstr);
while (grub_getkey() != GRUB_TERM_ESC)
;
menu_fini ();
goto refresh;
}
}
VTOY_COMM_HOTKEY("VTOY_LANG_CMD");
break;
}
case (GRUB_TERM_CTRL | 'm'):

View File

@@ -1056,7 +1056,6 @@ extern int g_vhdboot_enable;
extern int g_default_menu_mode;
extern char g_ventoy_hotkey_tip[256];
extern int g_ventoy_menu_refresh;
extern int g_ventoy_virt_esc;
#define VENTOY_IMG_WHITE_LIST 1
#define VENTOY_IMG_BLACK_LIST 2
@@ -1265,6 +1264,7 @@ void * ventoy_alloc_chain(grub_size_t size);
int ventoy_plugin_load_menu_lang(const char *lang);
const char *ventoy_get_vmenu_title(const char *vMenu);
grub_err_t ventoy_cmd_cur_menu_lang(grub_extcmd_context_t ctxt, int argc, char **args);
extern int ventoy_menu_push_key(int code);
#endif /* __VENTOY_DEF_H__ */

View File

@@ -3532,7 +3532,8 @@ int ventoy_plugin_load_menu_lang(const char *lang)
grub_snprintf(g_ventoy_hotkey_tip, sizeof(g_ventoy_hotkey_tip), "%s", ventoy_get_vmenu_title("VTMENU_STR_HOTKEY_LIST"));
}
g_ventoy_virt_esc = 2;
ventoy_menu_push_key(GRUB_TERM_ESC);
ventoy_menu_push_key(GRUB_TERM_ESC);
g_ventoy_menu_refresh = 1;
ret = 0;