@ -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 ' :
{
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 ;
}
}
case ( GRUB_TERM_CTRL | ' l ' ) :
case ( GRUB_TERM_CTRL | ' L ' ) :
case ( GRUB_TERM_SHIFT | ' l ' ) :
case ( GRUB_TERM_SHIFT | ' L ' ) :
case ' l ' :
case ' L ' :
{
VTOY_COMM_HOTKEY ( " VTOY_LANG_CMD " ) ;
break ;
}
case ( GRUB_TERM_CTRL | ' m ' ) :