Changeset 25391
- Timestamp:
- 05/08/08 21:22:37 (3 days ago)
- Files:
-
- haiku/trunk/src/apps/terminal/CodeConv.cpp (modified) (1 diff)
- haiku/trunk/src/apps/terminal/TermView.cpp (modified) (8 diffs)
- haiku/trunk/src/apps/terminal/VTkeymap.h (modified) (1 diff)
- haiku/trunk/src/apps/terminal/VTKeyTbl.c (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
haiku/trunk/src/apps/terminal/CodeConv.cpp
r23591 r25391 73 73 // applies to haiku, and if not, get rid of this class and just use the system api directly. 74 74 if (coding == B_EUC_CONVERSION && state != 0) { 75 const char *end_of_jis = " (B";75 const char *end_of_jis = "\033(B"; 76 76 strncpy((char *)dst + dstlen, end_of_jis, 3); 77 77 dstlen += 3; haiku/trunk/src/apps/terminal/TermView.cpp
r25388 r25391 1484 1484 // TODO: Cleanup 1485 1485 if (numBytes == 1) { 1486 const char *toWrite = NULL; 1486 1487 switch (*bytes) { 1487 1488 case B_RETURN: 1488 if (rawChar == B_RETURN) { 1489 char c = 0x0d; 1490 fShell->Write(&c, 1); 1491 return; 1492 } 1489 if (rawChar == B_RETURN) 1490 toWrite = "\r"; 1493 1491 break; 1494 1492 1495 1493 case B_LEFT_ARROW: 1496 1494 if (rawChar == B_LEFT_ARROW) { 1497 fShell->Write(LEFT_ARROW_KEY_CODE, sizeof(LEFT_ARROW_KEY_CODE) - 1); 1498 return; 1495 if (mod & B_CONTROL_KEY) 1496 toWrite = CTRL_LEFT_ARROW_KEY_CODE; 1497 else 1498 toWrite = LEFT_ARROW_KEY_CODE; 1499 1499 } 1500 1500 break; … … 1502 1502 case B_RIGHT_ARROW: 1503 1503 if (rawChar == B_RIGHT_ARROW) { 1504 fShell->Write(RIGHT_ARROW_KEY_CODE, sizeof(RIGHT_ARROW_KEY_CODE) - 1); 1505 return; 1504 if (mod & B_CONTROL_KEY) 1505 toWrite = CTRL_RIGHT_ARROW_KEY_CODE; 1506 else 1507 toWrite = RIGHT_ARROW_KEY_CODE; 1506 1508 } 1507 1509 break; … … 1516 1518 } 1517 1519 if (rawChar == B_UP_ARROW) { 1518 fShell->Write(UP_ARROW_KEY_CODE, sizeof(UP_ARROW_KEY_CODE) - 1); 1519 return; 1520 if (mod & B_CONTROL_KEY) 1521 toWrite = CTRL_UP_ARROW_KEY_CODE; 1522 else 1523 toWrite = UP_ARROW_KEY_CODE; 1520 1524 } 1521 1525 break; … … 1529 1533 1530 1534 if (rawChar == B_DOWN_ARROW) { 1531 fShell->Write(DOWN_ARROW_KEY_CODE, sizeof(DOWN_ARROW_KEY_CODE) - 1); 1532 return; 1535 if (mod & B_CONTROL_KEY) 1536 toWrite = CTRL_DOWN_ARROW_KEY_CODE; 1537 else 1538 toWrite = DOWN_ARROW_KEY_CODE; 1533 1539 } 1534 1540 break; 1535 1541 1536 1542 case B_INSERT: 1537 if (rawChar == B_INSERT) { 1538 fShell->Write(INSERT_KEY_CODE, sizeof(INSERT_KEY_CODE) - 1); 1539 return; 1540 } 1543 if (rawChar == B_INSERT) 1544 toWrite = INSERT_KEY_CODE; 1541 1545 break; 1542 1546 1543 1547 case B_HOME: 1544 if (rawChar == B_HOME) { 1545 fShell->Write(HOME_KEY_CODE, sizeof(HOME_KEY_CODE) - 1); 1546 return; 1547 } 1548 if (rawChar == B_HOME) 1549 toWrite = HOME_KEY_CODE; 1548 1550 break; 1549 1551 1550 1552 case B_END: 1551 if (rawChar == B_END) { 1552 fShell->Write(END_KEY_CODE, sizeof(END_KEY_CODE) - 1); 1553 return; 1554 } 1553 if (rawChar == B_END) 1554 toWrite = END_KEY_CODE; 1555 1555 break; 1556 1556 … … 1563 1563 return; 1564 1564 } 1565 if (rawChar == B_PAGE_UP) { 1566 fShell->Write(PAGE_UP_KEY_CODE, sizeof(PAGE_UP_KEY_CODE) - 1); 1567 return; 1568 } 1565 if (rawChar == B_PAGE_UP) 1566 toWrite = PAGE_UP_KEY_CODE; 1569 1567 break; 1570 1568 … … 1576 1574 } 1577 1575 1578 if (rawChar == B_PAGE_DOWN) { 1579 fShell->Write(PAGE_DOWN_KEY_CODE, sizeof(PAGE_DOWN_KEY_CODE) - 1); 1580 return; 1581 } 1576 if (rawChar == B_PAGE_DOWN) 1577 toWrite = PAGE_DOWN_KEY_CODE; 1582 1578 break; 1583 1579 … … 1594 1590 break; 1595 1591 } 1592 if (toWrite) { 1593 fShell->Write(toWrite, strlen(toWrite)); 1594 return; 1595 } 1596 1596 } else { 1597 1597 // input multibyte character … … 1637 1637 { 1638 1638 entry_ref ref; 1639 char *ctrl_l = " ";1639 char *ctrl_l = "\x0c"; 1640 1640 1641 1641 // first check for any dropped message haiku/trunk/src/apps/terminal/VTkeymap.h
r13734 r25391 66 66 67 67 68 #define LEFT_ARROW_KEY_CODE " [D"69 #define RIGHT_ARROW_KEY_CODE " [C"70 #define UP_ARROW_KEY_CODE " [A"71 #define DOWN_ARROW_KEY_CODE " [B"68 #define LEFT_ARROW_KEY_CODE "\033[D" 69 #define RIGHT_ARROW_KEY_CODE "\033[C" 70 #define UP_ARROW_KEY_CODE "\033[A" 71 #define DOWN_ARROW_KEY_CODE "\033[B" 72 72 73 #define HOME_KEY_CODE "[@" 74 #define INSERT_KEY_CODE "[2~" 75 #define END_KEY_CODE "[[" 76 #define PAGE_UP_KEY_CODE "[5~" 77 #define PAGE_DOWN_KEY_CODE "[6~" 73 #define CTRL_LEFT_ARROW_KEY_CODE "\033[5D" 74 #define CTRL_RIGHT_ARROW_KEY_CODE "\033[5C" 75 #define CTRL_UP_ARROW_KEY_CODE "\033[5A" 76 #define CTRL_DOWN_ARROW_KEY_CODE "\033[5B" 77 78 //#define HOME_KEY_CODE "\033[@" 79 #define HOME_KEY_CODE "\033[1~" 80 #define INSERT_KEY_CODE "\033[2~" 81 //#define END_KEY_CODE "\033[[" 82 #define END_KEY_CODE "\033[4~" 83 #define PAGE_UP_KEY_CODE "\033[5~" 84 #define PAGE_DOWN_KEY_CODE "\033[6~" 78 85 79 86 //#define IS_DOWN_KEY(x) (info.key_states[(x) / 8] & key_state_table[(x) % 8]) haiku/trunk/src/apps/terminal/VTKeyTbl.c
r13734 r25391 49 49 char *function_key_char_table [] = 50 50 { 51 " [11~",52 " [12~",53 " [13~",54 " [14~",55 " [15~",56 " [16~",57 " [17~",58 " [18~",59 " [19~",60 " [20~",61 " [21~",62 " [22~",51 "\033[11~", 52 "\033[12~", 53 "\033[13~", 54 "\033[14~", 55 "\033[15~", 56 "\033[16~", 57 "\033[17~", 58 "\033[18~", 59 "\033[19~", 60 "\033[20~", 61 "\033[21~", 62 "\033[22~", 63 63 };
