Skip to content

Commit

Permalink
maple/visio.c: Refine and support more key sequence varieties. [ref: …
Browse files Browse the repository at this point in the history
…PttBBS 'common/sys/vtkbd.c']

* maple/visio.c: `vkey()`: Add comments about current key sequences for conditions.
* maple/visio.c: `vkey()`: Fix any key sequence of "<Esc> [ <12> ch" being processed as `KEY_F*` keys.
* maple/visio.c: Reorder comment about "Home" key group to match the order of key values.
     "Ins Del Home End PgUp PgDn" => "Home Ins Del End PgUp PgDn"
* maple/visio.c: Support more key sequence varieties. [ref: PttBBS 'common/sys/vtkbd.c']
  • Loading branch information
IepIweidieng committed Jul 1, 2019
1 parent ebde965 commit 592dd97
Showing 1 changed file with 52 additions and 21 deletions.
73 changes: 52 additions & 21 deletions maple/visio.c
Original file line number Diff line number Diff line change
Expand Up @@ -2361,51 +2361,82 @@ vkey(void)
return ch;
}
#endif
else if (mode == 1)
else if (mode == 1) /* "<Esc> `ch`" */
{ /* Escape sequence */
if (ch == '[' || ch == 'O')
if (ch == '[' || ch == 'O') /* "<Esc> <[O>" */
mode = 2;
else if (ch == '1' || ch == '4')
mode = 3;
else
{
return Meta(ch);
}
}
else if (mode == 2)
else if (mode == 2) /* "<Esc> <[O> `ch`" */
{
if (ch >= 'A' && ch <= 'D') /* Cursor key */
if (ch >= 'A' && ch <= 'D') /* "<Esc> <[O> <A-D>" */ /* Cursor key */
return KEY_UP + (ch - 'A');
else if (last == 'O')
else switch (ch) /* "<Esc> <[O> <HF>" */ /* Home Ens (xterm) */
{
case 'H':
return KEY_HOME;
case 'F':
return KEY_END;
}
/* else */ if (last == 'O') /* "<Esc> O `ch`" */
{
if (ch >= 'P' && ch <= 'S') /* F1 - F4 */
if (ch >= 'P' && ch <= 'S') /* "<Esc> O <PQRS>" */ /* F1 - F4 */
return KEY_F1 + (ch - 'P');
else if (ch == 'w') /* "<Esc> O w" */ /* END (PuTTY-rxvt) */
return KEY_END;
else
return ch;
}
else if (ch == 'Z') /* Shift-Tab */
return KEY_STAB;
else if (ch >= '1' && ch <= '6')
else if (ch >= '1' && ch <= '8') /* "<Esc> [ <1-8>" */
mode = 3;
else
else switch (ch) /* "<Esc> [ `ch`" */
{
/* "<Esc> [ <GIL>" */ /* PgDn PgUp Ins (SCO) */
case 'G':
return KEY_PGDN;
case 'I':
return KEY_PGUP;
case 'L':
return KEY_INS;

case 'Z': /* "<Esc> [ Z" */ /* Shift-Tab */
return KEY_STAB;

default:
return ch;
}
}
else if (mode == 3)
{ /* Ins Del Home End PgUp PgDn */
if (ch == '~')
return KEY_HOME + (last - '1');
else if (last >= '1' && last <= '2')
else if (mode == 3) /* "<Esc> [ <1-8> `ch`" */
{ /* Home Ins Del End PgUp PgDn */
if (ch == '~') /* "<Esc> [ <1-8> ~" */
{
if (last <= '6') /* "<Esc> [ <1-6> ~" */
return KEY_HOME + (last - '1');
else switch (last) /* "<Esc> [ <78> ~" */ /* Home End (rxvt) */
{
case '7':
return KEY_HOME;
case '8':
return KEY_END;
default:
return ch;
}
}
else if (ch >= '0' && ch <= '9') /* "<Esc> [ <1-6> <0-9>" */
mode = 4;
else
return ch;
}
else if (mode == 4)
else if (mode == 4) /* "<Esc> [ <1-6> <0-9> `ch`" */
{ /* F1 - F12 */
if (ch == '~')
if (ch == '~') /* "<Esc> [ <1-6> <0-9> ~" */
{
if (last2 == '1') /* F1 - F8 */
if (last2 == '1') /* "<Esc> [ 1 `last` ~" */ /* F1 - F8 */
return KEY_F1 + (last - '1') - (last > '6');
else if (last2 == '2') /* F9 - F12 */
else if (last2 == '2') /* "<Esc> [ 2 `last` ~" */ /* F9 - F12 */
return KEY_F9 + (last - '0') - (last > '2');
else
return ch;
Expand Down

0 comments on commit 592dd97

Please sign in to comment.