diff -urN cui0/key.c cui1/key.c --- cui0/key.c Thu Jan 30 03:00:00 2014 +++ cui1/key.c Thu Jan 30 03:10:00 2014 @@ -44,4 +44,26 @@ return uc; } +int +cui_key_get2(void) +{ + int k, k2, k3; + + k= cui_key_get(); + if(k == 0x7f) return CUI_KEY_BS; + if(k == CUI_KEY_ESC){ + k2 = cui_key_get(); + if(k2 == '['){ + k3 = cui_key_get(); + switch(k3){ + case 'A': return CUI_KEY_UP; + case 'B': return CUI_KEY_DOWN; + case 'C': return CUI_KEY_RIGHT; + case 'D': return CUI_KEY_LEFT; + } + } + } + return k; +} + /* EOF */ diff -urN cui0/key.h cui1/key.h --- cui0/key.h Thu Jan 30 03:00:00 2014 +++ cui1/key.h Thu Jan 30 03:10:00 2014 @@ -1,8 +1,17 @@ #ifndef __KEY_H__ #define __KEY_H__ +#define CUI_KEY_ENTER 0x0d /* '\r' */ +#define CUI_KEY_BS 0x08 /* '\b' */ +#define CUI_KEY_UP 0x11 /* DC1 */ +#define CUI_KEY_DOWN 0x12 /* DC2 */ +#define CUI_KEY_LEFT 0x13 /* DC3 */ +#define CUI_KEY_RIGHT 0x14 /* DC4 */ +#define CUI_KEY_ESC 0x1b + void cui_key_enter(void); void cui_key_exit(void); int cui_key_get(void); +int cui_key_get2(void); #endif diff -urN cui0/key_test.c cui1/key_test.c --- cui0/key_test.c Thu Jan 30 03:00:00 2014 +++ cui1/key_test.c Thu Jan 30 03:10:00 2014 @@ -9,7 +9,7 @@ cui_key_enter(); - while((key = cui_key_get()) != 'q'){ + while((key = cui_key_get2()) != 'q'){ if(key == 0){ printf("."); }else{