From 5bcdf676421308f463d0917e3e5eac04f41ee608 Mon Sep 17 00:00:00 2001 From: Hans de Goede Date: Wed, 15 Apr 2020 12:26:18 +0200 Subject: [PATCH] kern/term: Make grub_getkeystatus() helper function available everywhere Move grub_getkeystatushelper() function from grub-core/commands/keystatus.c to grub-core/kern/term.c and export it so that it can be used outside of the keystatus command code too. There's no logic change in this patch. The function definition is moved so it can be called from grub-core/kern/term.c in a subsequent patch. It will be used to determine if a SHIFT key has was held down and use that also to interrupt the countdown, without the need to press a key at the right time. Signed-off-by: Hans de Goede Signed-off-by: Javier Martinez Canillas Reviewed-by: Daniel Kiper --- grub-core/commands/keystatus.c | 18 ------------------ grub-core/kern/term.c | 18 ++++++++++++++++++ include/grub/term.h | 1 + 3 files changed, 19 insertions(+), 18 deletions(-) diff --git a/grub-core/commands/keystatus.c b/grub-core/commands/keystatus.c index 460cf4e7e..ff3f58781 100644 --- a/grub-core/commands/keystatus.c +++ b/grub-core/commands/keystatus.c @@ -35,24 +35,6 @@ static const struct grub_arg_option options[] = {0, 0, 0, 0, 0, 0} }; -static int -grub_getkeystatus (void) -{ - int status = 0; - grub_term_input_t term; - - if (grub_term_poll_usb) - grub_term_poll_usb (0); - - FOR_ACTIVE_TERM_INPUTS(term) - { - if (term->getkeystatus) - status |= term->getkeystatus (term); - } - - return status; -} - static grub_err_t grub_cmd_keystatus (grub_extcmd_context_t ctxt, int argc __attribute__ ((unused)), diff --git a/grub-core/kern/term.c b/grub-core/kern/term.c index 07720ee67..93bd3378d 100644 --- a/grub-core/kern/term.c +++ b/grub-core/kern/term.c @@ -120,6 +120,24 @@ grub_getkey (void) } } +int +grub_getkeystatus (void) +{ + int status = 0; + grub_term_input_t term; + + if (grub_term_poll_usb) + grub_term_poll_usb (0); + + FOR_ACTIVE_TERM_INPUTS(term) + { + if (term->getkeystatus) + status |= term->getkeystatus (term); + } + + return status; +} + void grub_refresh (void) { diff --git a/include/grub/term.h b/include/grub/term.h index 8117e2a24..c21513338 100644 --- a/include/grub/term.h +++ b/include/grub/term.h @@ -327,6 +327,7 @@ grub_term_unregister_output (grub_term_output_t term) void grub_putcode (grub_uint32_t code, struct grub_term_output *term); int EXPORT_FUNC(grub_getkey) (void); int EXPORT_FUNC(grub_getkey_noblock) (void); +int EXPORT_FUNC(grub_getkeystatus) (void); void grub_cls (void); void EXPORT_FUNC(grub_refresh) (void); void grub_puts_terminal (const char *str, struct grub_term_output *term);