Kindle 搜索栏快捷代码研究

对于 Kindle 越狱玩家来说,搜索栏快捷代码绝对不是什么陌生的东西.最近,我注意到 USBNetwork 这个越狱插件在安装后会为 Kindle 添加两个自定义的快捷代码:  ;un 和  ;usbnetwork ,这似乎意味着此类代码并非是写死在系统中的,而是可以通过某种手段新增或修改的.

如何做到对快捷代码的自定义呢?或者说,快捷代码被调用的实际过程是怎样的?一个自然的思路是,每个快捷代码都对应  $PATH 中的一个可执行文件.为了验证这一猜想,执行  find / -name "*711*" 命令,发现存在  /usr/bin/711.sh 文件.进一步发现  /usr/bin 目录下存在大量与某一快捷代码对应的 Shell 脚本,如 311.sh  411.sh  611.sh  debugOn.sh 等.这一猜想似乎是正确的.

我研究搜索栏快捷代码的原因其实是想找到一条快速启动 KOReader 阅读器的途径.(默认是通过 KUAL 这个应用启动器来启动 KOReader 的,但操作十分繁琐.)于是我新建了  /usr/bin/ko.sh 文件,内容为:

然后回到主屏幕,在搜索栏中输入  ;ko 并回车,发现并没有成功启动 KOReader.看来并没有找对方法.

当然,这些快捷代码也有可能是以 LIPC 方式储存的 (Kindle 系统一大特色).于是尝试  lipc-probe -av | grep 711 命令,但没有发现与  ;711 这个快捷代码的定义有关的内容.(不过意外地发现执行  ;711 后返回的内容是存在 LIPC 里的)

查阅 MobileRead Wiki 后发现,所有的快捷代码实际上都定义在  /usr/share/webkit-1.0/pillow/debug_cmds.json 这个文件内.这个文件的内容是:

一目了然,快捷代码与可执行文件的对应关系以 JSON 格式储存,可以自行添加.同时也注意到,快捷代码并非必须以  ; 开头.考虑到我添加快捷代码是为了方便启动 KOReader, 而分号在 Kindle 的虚拟键盘里并非那么容易找到,我添加了这么一行:

然后重启.以后,就可以通过在搜索栏里输入  .ko 来启动 KOReader 了,非常方便.使用类似的方法,也可以为其它 Kindle 功能或越狱插件设置快捷代码.

有两点需要注意:

  1. 修改  /usr/share/webkit-1.0/pillow/debug_cmds.json 前,似乎需要把 Kindle 的根文件系统挂载为读写,方法是执行  mntroot rw .出于安全考虑,修改完成后应该执行  mntroot ro 挂载只读.
  2. 在为  /usr/share/webkit-1.0/pillow/debug_cmds.json 新增内容时,记得要给上一行的末尾加上逗号,这毕竟是 JSON.

以上.

6 thoughts on “Kindle 搜索栏快捷代码研究

    • 我不知道,但可以给你提供一个思路: Kindle 的操作系统的 UI 部分用的全是 web 那套技术,或许搜索栏的图标和布局是定义在系统目录的某个 HTML 文件里的.或者,你也可以在 Kindle 的开放源代码里找找(虽说 UI 部分的代码很大可能是私有的闭源代码)

发表评论

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