FBReader 中文文档 下载 App

keymap.xml 实体按键映射自定义

什么是 keymap.xml

keymap.xml 是 FBReader 提供的一个高级自定义功能——通过一个 XML 文件,可以在 Android 设备上把实体按键(电纸书的侧边翻页键、音量键、返回键等)重新绑定到 FBReader 的操作。

典型使用场景:

创建 keymap.xml

在你的书籍文件夹里(默认是 Book 文件夹)创建一个名为 keymap.xml 的文件,内容类似:

<keymap>
  <key keycode="24" action="PREV_PAGE"/>
  <key keycode="25" action="NEXT_PAGE"/>
  <key keycode="4" action="TOGGLE_TOC"/>
</keymap>

上面的例子把:

查找按键码

每个物理按键有一个 keycode 数字。怎么找?

  1. 用开发者选项:Android 开发者选项 → 开启「显示按键操作」,按一下按键屏幕上会显示 keycode
  2. 查文档:Nook、Kobo、InkBook 等设备有现成的 keymap.xml 模板,可以在 GitHub 上找到
  3. FBReader 源码:FBReader 源码里有几个设备的示例(如 keymap-nook.xml)

常见 keycode:

按键keycode
音量上24
音量下25
返回4
主页3
菜单82
电纸书侧边键(各品牌不同)需实测

可用的 Action

FBReader 里可以绑定的动作列表很长,完整列表在 ActionCode.java 源码文件里。常用的:

Action说明
NEXT_PAGE下一页
PREV_PAGE上一页
TOGGLE_TOC显示/隐藏目录
TOGGLE_TABLE_OF_CONTENTS同上
OPEN_BOOKMARKS打开书签列表
ADD_BOOKMARK在当前位置加书签
SEARCH打开搜索
INCREASE_FONT_SIZE字号放大
DECREASE_FONT_SIZE字号缩小
TOGGLE_DAY_NIGHT日/夜模式切换
OPEN_PREFERENCES打开设置

示例:Nook 电纸书

FBReader 官方提供了 Nook 电纸书的 keymap.xml 模板:

<keymap>
  <key keycode="95" action="PREV_PAGE"/>
  <key keycode="94" action="NEXT_PAGE"/>
  <key keycode="257" action="NEXT_PAGE"/>
  <key keycode="258" action="PREV_PAGE"/>
</keymap>

具体到你的设备,按键码需要自己测试。

不写 XML 也能用的简化方式

如果不想折腾 XML 文件,FBReader 设置里也有一些简化的按键选项:

这些覆盖了最常见的需求。keymap.xml 是给那些想要完全自定义的人准备的。