top: tweak logic associated with keyboard translations
This commit most significant change is the elimination
of the kbd_ENTER entry from that tinfo_tab in iokey().
That entry was a useless artifact left from the commit
which is shown below. It makes no sense to 'translate'
a keystroke into something it already was (i.e. '\n').
The remaining changes just reorder those table entries
for a progression consistent with vim keys: h,j,k & l.
Reference(s):
. fix 'iokey()' flaw preventing proper translations
commit 42f0a341ba
Signed-off-by: Jim Warner <james.warner@comcast.net>
This commit is contained in:
parent
ac83617d4f
commit
dd95e865de
41
top/top.c
41
top/top.c
@ -1139,20 +1139,19 @@ static int iokey (int action) {
|
||||
const char *str;
|
||||
int key;
|
||||
} tinfo_tab[] = {
|
||||
{ "\n", kbd_ENTER }, { NULL, kbd_UP }, { NULL, kbd_DOWN },
|
||||
{ NULL, kbd_LEFT }, { NULL, kbd_RIGHT }, { NULL, kbd_PGUP },
|
||||
{ NULL, kbd_PGDN }, { NULL, kbd_HOME }, { NULL, kbd_END },
|
||||
{ NULL, kbd_BKSP }, { NULL, kbd_INS }, { NULL, kbd_DEL },
|
||||
{ NULL, kbd_LEFT }, { NULL, kbd_DOWN }, { NULL, kbd_UP }, { NULL, kbd_RIGHT },
|
||||
{ NULL, kbd_HOME }, { NULL, kbd_PGDN }, { NULL, kbd_PGUP }, { NULL, kbd_END },
|
||||
// remainder are alternatives for above, just in case...
|
||||
// ( the k,j,l,h entries are the vim cursor motion keys )
|
||||
{ "\033k", kbd_UP }, { "\033j", kbd_DOWN }, /* meta+ k,j */
|
||||
{ "\033h", kbd_LEFT }, { "\033l", kbd_RIGHT }, /* meta+ h,l */
|
||||
{ "\033\013", kbd_PGUP }, { "\033\012", kbd_PGDN }, /* ctrl+meta+ k,j */
|
||||
{ "\033\010", kbd_HOME }, { "\033\014", kbd_END }, /* ctrl+meta+ h,l */
|
||||
{ "\xC3\xAB", kbd_UP }, { "\xC3\xAA", kbd_DOWN }, /* meta+ k,j (some xterms) */
|
||||
{ "\xC3\xA8", kbd_LEFT }, { "\xC3\xAC", kbd_RIGHT }, /* meta+ h,l (some xterms) */
|
||||
{ "\xC2\x8B", kbd_PGUP }, { "\xC2\x8A", kbd_PGDN }, /* ctrl+meta+ k,j (some xterms) */
|
||||
{ "\xC2\x88", kbd_HOME }, { "\xC2\x8C", kbd_END } /* ctrl+meta+ h,l (some xterms) */
|
||||
// ( the h,j,k,l entries are the vim cursor motion keys )
|
||||
{ "\033h", kbd_LEFT }, { "\033j", kbd_DOWN }, /* meta+ h,j */
|
||||
{ "\033k", kbd_UP }, { "\033l", kbd_RIGHT }, /* meta+ k,l */
|
||||
{ "\033\010", kbd_HOME }, { "\033\012", kbd_PGDN }, /* ctrl+meta+ h,j */
|
||||
{ "\033\013", kbd_PGUP }, { "\033\014", kbd_END }, /* ctrl+meta+ k,l */
|
||||
{ "\xC3\xA8", kbd_LEFT }, { "\xC3\xAA", kbd_DOWN }, /* meta+ h,j (some xterms) */
|
||||
{ "\xC3\xAB", kbd_UP }, { "\xC3\xAC", kbd_RIGHT }, /* meta+ k,l (some xterms) */
|
||||
{ "\xC2\x88", kbd_HOME }, { "\xC2\x8A", kbd_PGDN }, /* ctrl+meta+ h,j (some xterms) */
|
||||
{ "\xC2\x8B", kbd_PGUP }, { "\xC2\x8C", kbd_END } /* ctrl+meta+ k,l (some xterms) */
|
||||
};
|
||||
#ifdef TERMIOS_ONLY
|
||||
char buf[SMLBUFSIZ], *pb;
|
||||
@ -1165,17 +1164,17 @@ static int iokey (int action) {
|
||||
|
||||
if (action == 0) {
|
||||
#define tOk(s) s ? s : ""
|
||||
tinfo_tab[1].str = tOk(key_up);
|
||||
tinfo_tab[2].str = tOk(key_down);
|
||||
tinfo_tab[0].str = tOk(key_backspace);
|
||||
tinfo_tab[1].str = tOk(key_ic);
|
||||
tinfo_tab[2].str = tOk(key_dc);
|
||||
tinfo_tab[3].str = tOk(key_left);
|
||||
tinfo_tab[4].str = tOk(key_right);
|
||||
tinfo_tab[5].str = tOk(key_ppage);
|
||||
tinfo_tab[6].str = tOk(key_npage);
|
||||
tinfo_tab[4].str = tOk(key_down);
|
||||
tinfo_tab[5].str = tOk(key_up);
|
||||
tinfo_tab[6].str = tOk(key_right);
|
||||
tinfo_tab[7].str = tOk(key_home);
|
||||
tinfo_tab[8].str = tOk(key_end);
|
||||
tinfo_tab[9].str = tOk(key_backspace);
|
||||
tinfo_tab[10].str = tOk(key_ic);
|
||||
tinfo_tab[11].str = tOk(key_dc);
|
||||
tinfo_tab[8].str = tOk(key_npage);
|
||||
tinfo_tab[9].str = tOk(key_ppage);
|
||||
tinfo_tab[10].str = tOk(key_end);
|
||||
// next is critical so returned results match bound terminfo keys
|
||||
putp(tOk(keypad_xmit));
|
||||
// ( converse keypad_local issued at pause/pgm end, just in case )
|
||||
|
Loading…
Reference in New Issue
Block a user