level 6
鸡精人
楼主
各位做插件、做系统精简包的老哥们,大家肯定都遇到过这个问题:
写好的 deb 插件里带了 postinst 安装脚本,想实现一点高级逻辑,比如询问用户“是否清理系统缓存”或者“是否保留某个组件”。
按理说,用 shell 里的 read 命令就能搞定。但尴尬的是,在 Cydia 的安装界面里,系统根本不会唤起键盘,用户空有一身操作,却连个 y/n 都敲不进去。
这就是典型的“正路走不通,只能曲线救国”。以前大家遇到这种情况,通常只能把脚本释放到 /usr/bin 里,然后写个说明让用户去终端手动执行。这样操作实在太繁琐。
为了解决这个问题,我写了一个小工具:VKey (Volume Key)。
逻辑很简单:直接捕获物理音量键的按下事件。
用了 VKey 之后,你的脚本交互就会从这样:
是否需要删除 报刊杂志 ?
请输入 [y/n]: (此处卡死,因为没键盘)
变成这样:
是否需要删除 报刊杂志 ?
请按下 [音量+ 确认 / 音量- 取消]
用户只需要按一下音量按键,脚本就能立刻捕获到信号并继续执行。不需要 read,不需要唤起终端,直接在 Cydia 的黑底白字界面就能完成选择。

1. 基础用法: 直接运行 vkey
脚本会停在这里等用户按一下音量键。
按下【音量+】输出 UP,按下【音量-】输出 DOWN。
你的 Shell 脚本只需要写个简单的 if 判断,就能实现分支逻辑。
2. 进阶用法: -t 10:设置 10 秒超时。如果用户 10 秒没按,vkey 自动退出,返回状态码1,防止安装过程卡死。
-v:直接获取当前媒体音量数值。
-l:循环监听,适合做一些更复杂的实时交互。

该命令行工具已上架 GS 源(apt.gs),搜索 vkey 或 Volume Key 即可下载。
2026年03月23日 12点03分
1
写好的 deb 插件里带了 postinst 安装脚本,想实现一点高级逻辑,比如询问用户“是否清理系统缓存”或者“是否保留某个组件”。
按理说,用 shell 里的 read 命令就能搞定。但尴尬的是,在 Cydia 的安装界面里,系统根本不会唤起键盘,用户空有一身操作,却连个 y/n 都敲不进去。
这就是典型的“正路走不通,只能曲线救国”。以前大家遇到这种情况,通常只能把脚本释放到 /usr/bin 里,然后写个说明让用户去终端手动执行。这样操作实在太繁琐。
为了解决这个问题,我写了一个小工具:VKey (Volume Key)。
逻辑很简单:直接捕获物理音量键的按下事件。
用了 VKey 之后,你的脚本交互就会从这样:
是否需要删除 报刊杂志 ?
请输入 [y/n]: (此处卡死,因为没键盘)
变成这样:
是否需要删除 报刊杂志 ?
请按下 [音量+ 确认 / 音量- 取消]
用户只需要按一下音量按键,脚本就能立刻捕获到信号并继续执行。不需要 read,不需要唤起终端,直接在 Cydia 的黑底白字界面就能完成选择。

1. 基础用法: 直接运行 vkey脚本会停在这里等用户按一下音量键。
按下【音量+】输出 UP,按下【音量-】输出 DOWN。
你的 Shell 脚本只需要写个简单的 if 判断,就能实现分支逻辑。
2. 进阶用法: -t 10:设置 10 秒超时。如果用户 10 秒没按,vkey 自动退出,返回状态码1,防止安装过程卡死。
-v:直接获取当前媒体音量数值。
-l:循环监听,适合做一些更复杂的实时交互。

该命令行工具已上架 GS 源(apt.gs),搜索 vkey 或 Volume Key 即可下载。