[情報] 關於在 PC room (ccws) 的 keyboard setting

看板EE_DSnP作者 (Ric)時間17年前 (2006/10/24 18:20), 編輯推噓4(402)
留言6則, 4人參與, 最新討論串1/1
據說在 PC 室 (ccws) 的 keyboard setting 為: ccws Back space 127 Delete 27 91 51 126 既然修改 "charDef.h" and "charDef.cpp" 不是這個作業的重點, 但卻造成不少同學 的困擾, 這裡提供了專為上面 keyboard setting 修改的 code --- ========= charDef.h ========= #ifdef MY_KB_SETTING // Customize your setting here... // Here's a sample for DELETE = ( 27 91 51 126 ) // BACKSPACE = 127 // others --> the same enum ParseChar { // Meta type FUNC_BASE_SHIFT = 1 << 8, // shifted 8 bits (char size) ARROW_BASE_SHIFT = 1 << 9, UNDEFINED_CHAR = INT_MAX, // char #1 LINE_BEGIN_CHAR = 1, // ctrl-a LINE_END_CHAR = 5, // ctrl-e INPUT_END_CHAR = 4, // ctrl-d BEEP_CHAR = 7, // BACK_SPACE_CHAR = 8, BACK_SPACE_CHAR = 127, ESC_CHAR = 27, // DELETE_CHAR = 127, DELETE_CHAR = 126, TAB_CHAR = int('\t'), NEWLINE_CHAR = int('\n'), // char #2 FUNC_BASE_CHAR = 79, ARROW_BASE_CHAR = 91, DELETE_BASE1_CHAR= 91, // char #3 FUNC_F1_CHAR = 80 + FUNC_BASE_SHIFT, FUNC_F2_CHAR = 81 + FUNC_BASE_SHIFT, FUNC_F3_CHAR = 82 + FUNC_BASE_SHIFT, FUNC_F4_CHAR = 83 + FUNC_BASE_SHIFT, ARROW_UP_CHAR = 65 + ARROW_BASE_SHIFT, ARROW_DOWN_CHAR = 66 + ARROW_BASE_SHIFT, ARROW_RIGHT_CHAR = 67 + ARROW_BASE_SHIFT, ARROW_LEFT_CHAR = 68 + ARROW_BASE_SHIFT, DELETE_BASE2_CHAR= 51, // dummy end PARSE_CHAR_END }; #else enum ParseChar { .... 原來的 code, 以下省略. }; #endif // MY_KB_SETTING =========== charDef.cpp =========== #ifdef MY_KB_SETTING // Modify for your terminal setting accordingly // Here's a sample for DELETE = ( 27 91 51 126 ) // BACKSPACE = 127 // others --> the same ParseChar CmdParser::getChar(istream& istr) const { char ch = mygetc(istr); if (istr.eof()) return INPUT_END_CHAR; switch (ch) { case LINE_BEGIN_CHAR: case LINE_END_CHAR: case INPUT_END_CHAR: case BACK_SPACE_CHAR: // case DELETE_CHAR: case TAB_CHAR: case NEWLINE_CHAR: return ParseChar(ch); case ESC_CHAR: { char ch2 = mygetc(istr); if (ch2 == char(FUNC_BASE_CHAR)) { char ch3 = mygetc(istr); if ((ch3 >= char(FUNC_F1_CHAR)) && (ch3 <= char(FUNC_F4_CHAR))) return ParseChar(int(ch3) + FUNC_BASE_SHIFT); else return UNDEFINED_CHAR; } else if (ch2 == char(ARROW_BASE_CHAR)) { char ch3 = mygetc(istr); if ((ch3 >= char(ARROW_UP_CHAR))&&(ch3 <= char(ARROW_LEFT_CHAR))) return ParseChar(int(ch3) + ARROW_BASE_SHIFT); else return UNDEFINED_CHAR; } else if (ch2 == char(DELETE_BASE1_CHAR)) { if (mygetc(istr) == char(DELETE_BASE2_CHAR)) { if (mygetc(istr) == DELETE_CHAR)) { return ParseChar(DELETE_CHAR); } } return UNDEFINED_CHAR; return UNDEFINED_CHAR; } } default: if (isprint(ch)) return ParseChar(ch); else return UNDEFINED_CHAR; } return UNDEFINED_CHAR; } #else ParseChar CmdParser::getChar(istream& istr) const { .... 原來的 code, 以下省略. }; #endif // MY_KB_SETTING ====================== -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.112.4.242

10/24 18:58, , 1F
頭推阿!!!!
10/24 18:58, 1F

10/25 00:20, , 2F
嗯, 不過以上的 code 我沒試過 --> 我沒 ccws account 啊..
10/25 00:20, 2F

10/25 00:21, , 3F
如有問題, 請反映.
10/25 00:21, 3F

10/25 00:22, , 4F
對了, 要記得改 Makefile...
10/25 00:22, 4F

10/25 08:28, , 5F
先推再試! 謝謝老師先~~~
10/25 08:28, 5F

10/25 16:17, , 6F
ㄜ...應該是有問題...
10/25 16:17, 6F
文章代碼(AID): #15FUZsWE (EE_DSnP)