diff --git a/src/core/ansiesc.c b/src/core/ansiesc.c index 68e7061b3..ca9a73ce0 100644 --- a/src/core/ansiesc.c +++ b/src/core/ansiesc.c @@ -99,7 +99,8 @@ int ansiesc_process ( struct ansiesc_context *ctx, int c ) { DBG ( "Too many parameters in ANSI escape " "sequence\n" ); } - } else if ( ( c >= 0x20 ) && ( c <= 0x2f ) ) { + } else if ( ( ( c >= 0x20 ) && ( c <= 0x2f ) ) || + ( c == '?' ) ) { /* Intermediate Byte */ ctx->function <<= 8; ctx->function |= c; diff --git a/src/include/ipxe/ansiesc.h b/src/include/ipxe/ansiesc.h index e84545769..c1c74481d 100644 --- a/src/include/ipxe/ansiesc.h +++ b/src/include/ipxe/ansiesc.h @@ -124,6 +124,12 @@ struct ansiesc_context { */ #define ANSIESC_LOG_PRIORITY 'p' +/** Show cursor */ +#define ANSIESC_DECTCEM_SET ( ( '?' << 8 ) | 'h' ) + +/** Hide cursor */ +#define ANSIESC_DECTCEM_RESET ( ( '?' << 8 ) | 'l' ) + /** @} */ extern int ansiesc_process ( struct ansiesc_context *ctx, int c );