Thumb-Key
一款注重隐私、专为拇指设计的键盘
报告 Bug
·
请求功能
·
发布版本
关于 Thumb-Key
Thumb-Key 是一款_注重隐私_的智能键盘,专为您的拇指设计。
它采用 3x3 网格布局,并使用滑动操作输入较少使用的字母。它易于学习,并专为快速打字速度而设计。
与大多数流行的手机键盘(如 Gboard 和 Swiftkey)不同,Thumb-Key 不依赖以利润为导向、侵犯隐私的单词和句子预测来提高准确性,而是使用位置可预测的大按键,以防止您的眼睛四处搜寻和敲击字母。
随着按键位置逐渐融入您的肌肉记忆,最终您将能够接近盲打的快速速度,而您的眼睛无需离开文本编辑区域。
该项目是现已停止维护(且闭源)的 MessagEase Keyboard的后续作品,后者是其主要的灵感来源。
功能
- 高度可配置。
- 可自定义尺寸、ThumbKey 和 MessagEase 布局、动态 / Material v3 主题、动画、触觉反馈和音频反馈。
- 开源,AGPL 许可证。
用户指南
- 轻点或滑动以输入字母。
- 在
A上向上或向下滑动以切换大写。(如果您更改了布局,则是#旁边的按钮)
- 双击空格键以输入逗号,三击以输入句号。更多次点击可输入更多标点符号。
- 在退格键上向左滑动或长按以删除光标左侧的整个单词。
- 在退格键上向右滑动以删除光标右侧的整个单词。
- 在空格键上向左或向右滑动以将光标移动 1 个字符。
- 在空格键上向左下或右下滑动以将光标移动 1 个单词。
- 长按回车键以插入换行符
Emoji 键
- 轻点以访问表情符号选择器。
- 向上滑动以配置 Thumb-key。
- 向右滑动以更改键盘位置。
- 向下滑动以访问输入法切换器(在 Thumb-key 和其他键盘之间切换)。
- 向左滑动以在已选择的布局(语言)之间循环切换。
- 向左下滑动以切换语音输入。需要 FUTO Voice Input、Transcribro 或 Whisper IME。
符号 / 字母键
- 轻点以访问数字和符号。再次轻点以返回字母。
- 向左上角滑动以全选。
- 向左上角滑动并返回以选择当前行。
- 向上滑动以复制 - 如果未选择任何内容,将复制所有文本。
- 向右上角滑动以剪切 - 如果未选择任何内容,将选择并剪切所有文本。
- 向右滑动以重做。
- 向下滑动以粘贴。
- 在粘贴时向下滑动然后向上滑动以打开剪贴板历史记录(滑动返回手势)。
- 向左滑动以撤销。
滑动手势
在键盘设置中启用 Slide gestures 将启用以下连续滑动手势:
- 水平滑动空格键以左右移动光标位置。
- 在滑动空格键的同时向上滑动以选择文本。
- 向左滑动退格键以选择要删除的文本。松开按键时文本将被删除。
在键盘设置中启用 Spacebar: Allow normal swipes to work with slide gestures 将启用以下功能:
- 左右滑动以按单个字符移动光标。
- 允许我们在 typesplit 布局中使用空格键上的其他字符。
在键盘设置中启用 Backspace: Allow normal swipes to work with slide gestures 将启用以下功能:
- 向左滑动以删除光标左侧的整个单词。
- 向右滑动以删除光标右侧的整个单词。
拖动并返回
- 您可以通过从原始按键拖开,然后再拖回原始按键,来输入相反大小写的字母。
- 顺时针和逆时针拖拽可以配置为输入相反大小写的字母,或数字布局上等效的中心按键。
幽灵键
在键盘设置中启用 Ghost keys 将允许在不切换到数字布局的情况下滑动隐藏符号键。
来自 MessagEase 键盘的提示
- 对于习惯点击手形键以隐藏 MessagEase 键盘并腾出更多屏幕空间的用户,可以通过使用 Android 返回键,或在 Android 10 及更高版本上使用手势导航返回来实现此功能。
- 您可以使用
Modify keys和HideKeyboard操作来实现 MessagEase 体验
修改按键
可以使用 YAML 自定义键盘按键。
示例 1
ENThumbKey:
main:
key1_0:
center:
text: ñ
此 YAML 配置将第二行第一列中心字母的键从 'n' 修改为 'ñ'。
ENThumbKey指定要修改的键盘。在此情况下,它是 'english thumbkey' 布局。- 此处 是所有键盘布局的列表。
main指定主键盘布局。可能的值包括:mainshiftednumericctrledalted
key1_0指定要修改的键。第一个数字是行,第二个数字是列。顶行为 0,左列为 0。center指定要修改的键的滑动/触摸方向。可能的值取决于swipeType的值 -- 对于swipeType: EIGHT_WAY,它们为:centerlefttopLefttoptopRightrightbottomRightbottombottomLeft
text指定键的文本
示例 2
ENThumbKey:
main:
key0_0:
swipeType: EIGHT_WAY
right: { text: ê }
topRight: { text: è }
top: { text: ę }
shifted:
key0_0:
swipeType: EIGHT_WAY
right: { text: Ê }
topRight: { text: È }
top: { text: Ę }
ESCAMessagEase:
main:
key0_0:
bottom: { text: "( ͡° ͜ʖ ͡°)", size: SMALLEST }
key0_1:
# Unicode escape sequence can be optionally used for convenience or readability.
bottomLeft: { text: "\U000121EB", size: SMALL }
# this is equivalent to:
# bottomLeft: {text: "𒇫", size: SMALL}
key2_2:
swipeType: FOUR_WAY_CROSS
center: { text: "𓀒", size: LARGE }
topLeft: { remove: true }
topRight: { remove: true }
bottomRight: { remove: true }
bottomLeft: { remove: true }
![]()
- 修改了两个键盘:
ENThumbKey (english thumbkey)和ESCAMessagEase (español català messagease)。 - 第一个键盘同时修改了
main和shifted模式。 - 由于我们在
ENThumbKey中为默认没有滑动方向的字母添加了滑动方向,因此必须调整swipeType。 - 第二个键盘使用
size属性来指定文本的显示大小。可能的值为:LARGESMALLSMALLEST
remove属性用于移除键侧。swipeType属性用于修改键的方向性。可能的值为:EIGHT_WAYFOUR_WAY_CROSSFOUR_WAY_DIAGONALTWO_WAY_VERTICALTWO_WAY_HORIZONTAL
示例 3
ENThumbKey:
main:
key0_3:
center:
keyAction: SwitchLanguage
left:
keyAction: ToggleEmojiMode
![]()
这会交换右上角按键上的“切换语言”和“切换表情符号”操作。keyAction 的可能值为:
ToggleNumericModeToggleABCModeToggleEmojiModeToggleClipboardModeToggleCapsLockToggleShiftModeTrueToggleShiftModeFalseToggleCtrlModeTrueToggleCtrlModeFalseToggleAltModeTrueToggleAltModeFalseLeftRightTopBottomIMECompletePreviousWordBeforeCursorNextWordAfterCursorGotoSettingsSelectAllCutCopyPasteUndoRedoDeleteDeleteCharacterAfterCursorDeleteWordBeforeCursorDeleteWordAfterCursorSwitchLanguageSwitchIMESwitchIMEVoiceHideKeyboardNoop# 无操作。不执行任何操作。
keyAction 和 text 不能同时使用。
示例 4
ENThumbKey:
main:
key0_0: { longPress: { text: "1" } }
key0_1: { longPress: { text: "2" } }
key0_2: { longPress: { text: "3" } }
key1_0: { longPress: { text: "4" } }
key1_1: { longPress: { text: "5" } }
key1_2: { longPress: { text: "6" } }
key2_0: { longPress: { text: "7" } }
key2_1: { longPress: { text: "8" } }
key2_2: { longPress: { text: "9" } }
key3_0: { longPress: { text: "0" } }
这启用了长按输入数字的功能。longPress 属性为:text、keyAction、remove。这些属性的用法与 center、left、topLeft 等相同。
示例 5
本示例展示了声明组合变音符号的一种方法:
ENMessagEase:
main:
key0_0:
topLeft:
text: "\u0301" # unicode sequence for Combining Acute Accent
displayText: "◌́" # Dotted Circle + Combining Acute Accent
top:
text: "\u0302" # Combining Circumflex Accent
displayText: "◌̂"
topRight:
text: "\u030b" # Combining Double Acute Accent
displayText: "◌̋"
请注意,text 字段仅包含一个字符:组合变音符号,而 displayText 字段包含两个字符:带点圆圈和组合变音符号。
示例 6
ENThumbKey:
main:
key0_1:
right:
text: "!"
swipeReturnText: "¡" # upside-down exclamation mark, used commonly in Spanish
key1_3:
bottomLeft:
swipeReturnAction: Redo
bottomRight:
swipeReturnAction: Undo
属性 swipeReturnText 和 swipeReturnAction 允许定义滑动返回行为。swipeReturnAction 的可能值与 keyAction 的相同。
剪贴板
剪贴板历史
此功能保留最近复制/剪切的文本片段,以便您可以选择较早的片段。它在参数中启用,并可通过 paste 滑动操作上的滑动返回访问。
私有剪贴板
启用后,通过 ThumbKey 中的复制/剪切操作复制或剪切的文本不会与 Android 的系统剪贴板共享。 相反,它将存储在应用内存中,并从那里粘贴,而不是从系统剪贴板粘贴。
请注意,从键盘外部使用剪切/复制/粘贴控件将使用标准系统剪贴板,而不是 ThumbKey 的私有剪贴板。
这确保了更高的隐私性,因为添加到系统剪贴板的数据实际上可以被任何应用访问。 在某些 Android 设备(例如 samsung 设备)上,它还会被专有应用程序自动检索和存储,且没有任何选项可以禁用此功能。
其他
- 练习打字,并使用 monkeytype.com 检查您的每分钟单词数
Thumb-Key 设计
手机键盘的历史
物理键盘,采用全尺寸 QWERTY 布局,并非为手机等小型设备的使用而设计;它们专为十指置于键床上、位于稳固表面上的场景而设计。 手机必须用食指和手掌握持,或用一只手握住并用另一只手打字,仅剩下 1 或 2 个拇指(而非 10 个手指)可用于执行按键操作。随着短信的兴起,单词预测被视为解决输入速度慢的最佳方案。
在使用 9 键数字布局的手机上,使用了 T9 预测文本。其他手机则使用带有熟悉的 QWERTY 布局的全手布局,以及其他专有的预测方法。
当手机键盘变成键盘记录器
随着手机从物理按键转向软键盘,按键尺寸变小,点击变得更加不精确且易出错,而更好的预测技术则弥补了这一不足。
像 Apple 和 Google 这样的智能手机公司,为了改进其单词预测算法,以及收集用户正在输入内容的潜在盈利信息,开始将所有用户的按键提交并聚合到其服务器上,在此过程中侵犯了用户隐私。 被称为键盘记录器,在台式计算机上被视为 普遍恶意 的程序,这些应用不幸地在手机上被正常化并被视为必需品。
手机键盘设计缺乏创新,最能解释这一点的是这些公司通过收集和聚合用户输入的所有内容所获得的_潜在利润_;包括直接将该数据商品化,或从这些数据中了解到的关于你的信息和趋势,他们可以将这些信息出售给广告商和第三方。这些可能包括你的购买偏好、常用网站、你与朋友最常谈论的话题,以及你在搜索栏和文本框中输入的所有内容。
截至今天,手机键盘的隐私状况极其糟糕,以至于没有多少键盘能够保证不记录你的所有按键。
MessagEase
作为桌面和手机键盘创新严重缺乏的证明,1880 年代的 QWERTY 布局仍然是主流布局,即使在 21 世纪的智能手机上也是如此。
一家名为 Exideas 的公司创建了一款名为 MessagEase 的键盘应用,它依赖于旧手机原始的大 9 键网格,并设法实现了与其他键盘相当的高速打字速度,而无需依赖大数据驱动的单词预测。
MessagEase 的设计投入了大量研究,其许多用户每分钟可以输入 > 50 个单词。
不幸的是,MessagEase 已不再维护,而 Thumb-Key 使用了更好的交替拇指布局字母位置(尽管原始 MessagEase 键盘布局可在设置中找到)。
Thumb-Key 字母位置
- 大按键位于可预测的 9 键网格中。最终,你应该能够将视线保持在文本输入区域,而不是逐个寻找字母,从而近似盲打。
- 字母位置基于 英文文本字母频率。最常见的字母是:ETAOINSHR。仅这 9 个字母就占所有英文文本的 ~70%。
- 按频率排序的前 9 个字母是 9 个中心键敲击。接下来的 8 个是向中心的滑动。再接下来的 8 个是在中心枢纽键上的滑动。Z 排在最后。
- 元音和辅音交替使用拇指(元音在键盘右侧,辅音在左侧)。这自然会导致快速的双字母组合速度。
- 优先使用键盘底部和右侧。因此 EAO 应在右侧,且从下到上排列,而 TNS 在左侧。
Built With
Installation / Releases
Verifying Fingerprints
你可以使用 以下工具 在安装前验证证书:
apksigner verify -v --print-certs <path-to-apk>
SHA256: EA:71:95:CF:CE:63:8A:E6:B1:A8:00:2D:DC:0D:48:63:36:60:95:EA:5B:8D:95:C1:CD:5E:25:DB:0F:E2:E7:C3
贡献
请参阅 Contributing.md 了解如何添加键盘布局和主题。
通过 Weblate 进行翻译:
支持 / 捐赠
Thumb-Key 将始终保持为免费、开源软件。我们见过许多键盘(以及一般的开源项目)在几年后停止维护。定期捐赠已被证明是这些项目得以存续的唯一途径。
您的捐赠直接支持全职开发,并帮助保持此项目的维护。如果您发现自己每天都在使用 Thumb-Key,请考虑进行捐赠:
加密货币
- Bitcoin:
1Hefs7miXS5ff5Ck5xvmjKjXf5242KzRtK - Ethereum:
0x400c96c96acbC6E7B3B43B1dc1BB446540a88A01 - Monero:
41taVyY6e1xApqKyMVDRVxJ76sPkfZhALLTjRvVKpaAh2pBd4wv9RgYj1tSPrx8wc6iE1uWUfjtQdTmTy2FGMeChGVKPQuV
社交 / 联系
Android IME 资源
- https://github.com/THEAccess/compose-keyboard-ime
- https://stackoverflow.com/questions/65570024/build-software-keyboard-with-jetpack-compose-ime-input-method-with-jetpack-com
- https://developer.android.com/develop/ui/views/touch-and-input/creating-input-method
- https://www.answertopia.com/jetpack-compose/a-jetpack-compose-in-app-purchasing-tutorial/
相关项目
- iOS 的替代方案:Wurstfinger


