终端应用程序的编程模型是什么样的?
看了一部分 Node.js readline 模块的代码,
https://github.com/joyent/node/blob/master/lib/readline.js#L1028
中间有一些代码看不懂, 像是对键盘原始的编码做处理, 还有写入字符的...
switch (code) {
/* xterm/gnome ESC O letter */
case 'OP': key.name = 'f1'; break;
case 'OQ': key.name = 'f2'; break;
case 'OR': key.name = 'f3'; break;
case 'OS': key.name = 'f4'; break;
/* xterm/rxvt ESC [ number ~ */
case '[11~': key.name = 'f1'; break;
case '[12~': key.name = 'f2'; break;
case '[13~': key.name = 'f3'; break;
case '[14~': key.name = 'f4'; break;
function moveCursor(stream, dx, dy) {
if (dx < 0) {
stream.write('\x1b[' + (-dx) + 'D');
} else if (dx > 0) {
stream.write('\x1b[' + dx + 'C');
}
if (dy < 0) {
stream.write('\x1b[' + (-dy) + 'A');
} else if (dy > 0) {
stream.write('\x1b[' + dy + 'B');
}
}
exports.moveCursor = moveCursor;
但是终端里的字符不像是图形界面抽象那么清晰,
而且有些操作之后光标会跳到意外的位置, 也让我难以理解.
所以想问, 终端应用程序的编程模型是什么样子的?
唤潮鲛姬娜美
11 years ago