Repository navigation
越狱 iOS 设备的终端 App,最低支持 iOS 12.0。终端仿真核心(VT100/xterm、UTF-8、中文与 emoji 列宽、256 色与真彩色、回滚与 reflow)为纯 C,界面层是 Objective-C + UIKit。
这一版修的是 tab:以前按下去没反应,现在能补全了,硬件键盘的 tab / shift+tab 也真正送进了 PTY。
安装
rootless 越狱(Dopamine / Palera1n 等)— 推荐
- 文件:
Terminal_1.0.8_iphoneos-arm64.deb - 包名:
terminal - 安装位置:
/var/jb/Applications/Terminal.app - 方式:Sileo / Zebra 里直接升级,或
dpkg -i Terminal_1.0.8_iphoneos-arm64.deb
装完由 Sileo 给出「重启 SpringBoard」按钮,点不点由你决定。
本版修复
-
输入法还在组词时,屏幕上的字和 shell 里的命令行是对不上的 —— #4,
4bc254b中文键盘组词(预编辑,带下划线的那串字母)时,屏幕上显示的字只画在 App 里,并没有
送进 PTY。此时按tab,shell 收到的只是一个 tab、命令行还是空的,补全自然没反应:
屏幕上写着pyt,shell 那边什么都没有。现在按tab、^C、方向键这类功能键时,终端
会先把预编辑内容上屏再发按键,两边保持一致。 -
硬件键盘的
tab根本到不了 App ——4bc254biOS 13.4 之后系统把
tab当「焦点导航」键,没在keyCommands里显式声明的话 UIKit
会直接吃掉,insertText:也不会被调用。现在tab/shift+tab都注册成按键命令
(分别发送0x09与ESC [ Z),iOS 15 起再带上wantsPriorityOverSystemBehavior
抢在系统行为前面。 -
快捷键条点按更跟手 ——
4bc254b快捷键条所在的
UIScrollView关掉delaysContentTouches,按下即发送,不用等滚动视图
判定手势。 -
vt_key_encode的shift+tab分支少拷了结尾的NUL,顺手补上 ——4bc254b
关于 tab 补全
补全是 shell 的能力,终端只负责把 0x09 原样写进 PTY:bash 与 zsh 都自带命令与文件名
补全,但被补全的命令必须真的在 PATH 里。若没有任何候选(例如设备上并没有装 python,
或者前缀有歧义),按 tab 不会有可见变化,最多响一声铃 —— 那是 shell 的正常行为,不是
终端把按键丢了。
验证
make test:177 项断言,0 failures(新增tab/shift+tab/backtab编码用例)- 本机真 PTY 探针(App 同一套
vt.c/pty.c):zsh 下ec+Tab补全为echo、
pyt+Tab补全为python3;bash 下wh+Tab按预期响铃(候选有歧义),说明
按键确实到达了 shell
SHA256:b31358e420b255e226ac5fcc13eab754e9f27fe6c989312dbf1bd43865df6c3b