diff options
| -rw-r--r-- | src/irc.c | 57 |
1 files changed, 38 insertions, 19 deletions
@@ -698,6 +698,7 @@ static void start_keystroke(void) { char i, s; i = cgetc(); + if(i >= '1' && i <= '7') { s = i - '1'; if(s != scr_current) { @@ -706,25 +707,43 @@ static void start_keystroke(void) { scr_display(s); } } - } else if(i == CH_CURS_UP || i == '-') { - scrollback(); - } else if(i == CH_ESC) { - scr_prev = SCR_PRIV; - scr_destroy(scr_current); - } else if(i == CH_CURS_LEFT || i == '+') { - scr_prev = scr_current; - hunt_screen(-1); - } else if(i == CH_CURS_RIGHT || i == '*') { - scr_prev = scr_current; - hunt_screen(1); - } else if(i == CH_TAB) { - i = scr_current; - scr_display(scr_prev); - scr_prev = i; - } else if(i == 'a' || i == 'A') { - switch_to_active(); - } else if(i == 's' || i == 'S') { - edbox_hide(); + return; + } + + switch(i) { + case CH_CURS_UP: + case '-': + scrollback(); + return; + case CH_ESC: + scr_prev = SCR_PRIV; + scr_destroy(scr_current); + return; + case CH_CURS_LEFT: + case '+': + scr_prev = scr_current; + hunt_screen(-1); + return; + case CH_CURS_RIGHT: + case '*': + scr_prev = scr_current; + hunt_screen(1); + return; + case CH_TAB: + i = scr_current; + scr_display(scr_prev); + scr_prev = i; + return; + case 'a': + case 'A': + switch_to_active(); + return; + case 's': + case 'S': + edbox_hide(); + /* fall thru */ + default: + break; } } |
