[情報] 關於在 PC room (ccws) 的 keyboard setting
據說在 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
10/25 00:20, 2F
→
10/25 00:21, , 3F
10/25 00:21, 3F
→
10/25 00:22, , 4F
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