diff --git a/src/winio.c b/src/winio.c index e5438f357933ee3053b20964be341837c178cb49..ac5d573cfdeec62d4c94028f794db7382e90c9fa 100644 --- a/src/winio.c +++ b/src/winio.c @@ -772,7 +772,7 @@ int convert_sequence(const int *seq, size_t length, int *consumed) switch (seq[1]) { case '1': if (length > 4 && seq[2] == ';') { - + /* <-<-<-<-<-<-<- */ *consumed = 5; switch (seq[3]) { case '2': @@ -806,7 +806,7 @@ int convert_sequence(const int *seq, size_t length, int *consumed) } break; } - + /* ->->->->->->-> */ } break; case '2': @@ -942,7 +942,10 @@ int convert_sequence(const int *seq, size_t length, int *consumed) *consumed = 3; switch (seq[1]) { case '1': - if (length > 3 && seq[3] == '~') { + if (length > 2 && seq[2] == '~') + /* Esc [ 1 ~ == Home on VT320/Linux console. */ + return KEY_HOME; + else if (length > 3 && seq[3] == '~') { *consumed = 4; switch (seq[2]) { case '1': /* Esc [ 1 1 ~ == F1 on rxvt/Eterm. */ @@ -964,7 +967,7 @@ int convert_sequence(const int *seq, size_t length, int *consumed) return KEY_F(8); } } else if (length > 4 && seq[2] == ';') { - + /* <-<-<-<-<-<-<- */ *consumed = 5; switch (seq[3]) { case '2': @@ -1041,11 +1044,7 @@ int convert_sequence(const int *seq, size_t length, int *consumed) break; #endif } - - } else if (length > 2 && seq[2] == '~') { - *consumed = 3; - /* Esc [ 1 ~ == Home on VT320/Linux console. */ - return KEY_HOME; + /* ->->->->->->-> */ } break; case '2':