Changeset c8bf88d in mainline for kernel/genarch/src/srln/srln.c
- Timestamp:
- 2009-04-03T15:52:14Z (16 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- a7b1071
- Parents:
- 2398ee9
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
kernel/genarch/src/srln/srln.c
r2398ee9 rc8bf88d 40 40 #include <proc/thread.h> 41 41 #include <arch.h> 42 #include <string.h> 42 43 43 44 static indev_t srlnout; … … 51 52 indev_t *in = (indev_t *) arg; 52 53 bool cr = false; 54 uint32_t escape = 0; 53 55 54 56 while (true) { 55 uint8_t ch = _getc(in);57 wchar_t ch = _getc(in); 56 58 59 /* ANSI escape sequence processing */ 60 if (escape != 0) { 61 escape <<= 8; 62 escape |= ch & 0xff; 63 64 if ((escape == 0x1b4f) || (escape == 0x1b5b) || (escape == 0x1b5b33)) 65 continue; 66 67 switch (escape) { 68 case 0x1b4f46: 69 case 0x1b5b46: 70 ch = U_END_ARROW; 71 escape = 0; 72 break; 73 case 0x1b4f48: 74 case 0x1b5b48: 75 ch = U_HOME_ARROW; 76 escape = 0; 77 break; 78 case 0x1b5b41: 79 ch = U_UP_ARROW; 80 escape = 0; 81 break; 82 case 0x1b5b42: 83 ch = U_DOWN_ARROW; 84 escape = 0; 85 break; 86 case 0x1b5b43: 87 ch = U_RIGHT_ARROW; 88 escape = 0; 89 break; 90 case 0x1b5b44: 91 ch = U_LEFT_ARROW; 92 escape = 0; 93 break; 94 case 0x1b5b337e: 95 ch = U_DELETE; 96 escape = 0; 97 break; 98 default: 99 escape = 0; 100 } 101 } 102 103 if (ch == 0x1b) { 104 escape = ch & 0xff; 105 continue; 106 } 107 108 /* Replace carriage return with line feed 109 and suppress any following line feed */ 57 110 if ((ch == '\n') && (cr)) { 58 111 cr = false; … … 66 119 cr = false; 67 120 121 /* Backspace */ 68 122 if (ch == 0x7f) 69 123 ch = '\b';
Note:
See TracChangeset
for help on using the changeset viewer.