Skip to content

0.11.0 --- the keystrokes this kernel keeps for itself are a position now - #22

Merged
Sunrisepeak merged 1 commit into
mainfrom
openkal-0.14
Sep 20, 2026
Merged

Sunrisepeak merged 1 commit into
mainfrom
openkal-0.14

Conversation

@Sunrisepeak

Copy link
Copy Markdown
Member

跟随 openkal 0.14(mcpplibs/openkal#38):模式字第三个位 KAL_TERM_PASS_CONTROL 的读写,以及规范在 set_mode 旁新增的两条规则。

  • 位的映射取本环境保留按键机制的全集(termios: ISIG|IXON|IEXTEN;console: ENABLE_PROCESSED_INPUT),否则同一个模式字在两个系统上含义不同。
  • 请求值与当前值相同的位不写。
  • 关行组装时确立「读至少等一个字节」,否则 kal_stream_read 会报出一个不是输入结束的 0(条款 7.4)。

依赖:openkal 0.14.0。各仓库同名分支 openkal-0.14,CI 会检出同名规范分支。端到端验证(^C 以 0x03 到达、^S 不冻结、恢复后终端回到原样)在 openkal-musl 的 pty 探针里与宿主 C 库对照。

… now

openkal 0.14 adds KAL_TERM_PASS_CONTROL, and this implementation reads and
writes it. The mapping is the one the other termios kernel uses with this
kernel's own constants: ISIG, IXON and IEXTEN together, because the position
states that NO keystroke is reserved and an implementation mapping ISIG alone
would leave one mode word meaning two things on two systems.

A position whose requested value is the one in effect is not written, which
the specification states beside set_mode and which matters here because this
position stands for three flags. And with line assembly off the least number
of bytes a read waits for is established, so that a terminal left at VMIN=0
does not make kal_stream_read report the end of an input that has not ended
(clause 7.4).
@Sunrisepeak
Sunrisepeak merged commit d52a637 into main Sep 20, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant