readline: Handle xterm escape sequences for Home/End keys
This fixes the Home/End keys in the monitor using the GTK frontend. Signed-off-by: Kevin Wolf <kwolf@redhat.com> Message-id: 1368526554-15866-1-git-send-email-kwolf@redhat.com Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
This commit is contained in:
parent
7791dba3ec
commit
d34dc45d34
15
readline.c
15
readline.c
|
@ -27,6 +27,7 @@
|
||||||
#define IS_NORM 0
|
#define IS_NORM 0
|
||||||
#define IS_ESC 1
|
#define IS_ESC 1
|
||||||
#define IS_CSI 2
|
#define IS_CSI 2
|
||||||
|
#define IS_SS3 3
|
||||||
|
|
||||||
#undef printf
|
#undef printf
|
||||||
#define printf do_not_use_printf
|
#define printf do_not_use_printf
|
||||||
|
@ -397,6 +398,9 @@ void readline_handle_byte(ReadLineState *rs, int ch)
|
||||||
if (ch == '[') {
|
if (ch == '[') {
|
||||||
rs->esc_state = IS_CSI;
|
rs->esc_state = IS_CSI;
|
||||||
rs->esc_param = 0;
|
rs->esc_param = 0;
|
||||||
|
} else if (ch == 'O') {
|
||||||
|
rs->esc_state = IS_SS3;
|
||||||
|
rs->esc_param = 0;
|
||||||
} else {
|
} else {
|
||||||
rs->esc_state = IS_NORM;
|
rs->esc_state = IS_NORM;
|
||||||
}
|
}
|
||||||
|
@ -439,6 +443,17 @@ void readline_handle_byte(ReadLineState *rs, int ch)
|
||||||
rs->esc_state = IS_NORM;
|
rs->esc_state = IS_NORM;
|
||||||
the_end:
|
the_end:
|
||||||
break;
|
break;
|
||||||
|
case IS_SS3:
|
||||||
|
switch(ch) {
|
||||||
|
case 'F':
|
||||||
|
readline_eol(rs);
|
||||||
|
break;
|
||||||
|
case 'H':
|
||||||
|
readline_bol(rs);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
rs->esc_state = IS_NORM;
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
readline_update(rs);
|
readline_update(rs);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue