终端应用程序的编程模型是什么样的?

看了一部分 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 moveCursorstream, dx, dy { if dx < 0 { stream.writex1b[ + -dx + D; } else if dx > 0 { stream.writex1b[ + dx + C; } if dy < 0 { stream.writex1b[ + -dy + A; } else if dy > 0 { stream.writex1b[ + dy + B; }
}
exports.moveCursor = moveCursor;

但是终端里的字符不像是图形界面抽象那么清晰,
而且有些操作之后光标会跳到意外的位置, 也让我难以理解.
所以想问, 终端应用程序的编程模型是什么样子的?

发表评论

电子邮件地址不会被公开。 必填项已用*标注