进阶专题

软键盘

一块常驻的符号面板,开启后接管主键区——敲键或点键帽都按当前面出符号。出厂 13 面,可自定义

v0.120.1
0.120 新增

打开一块常驻的符号面板。开启期间主键区的按键被接管:敲 q 出的不是 q,而是 q 这个键位在当前面上对应的符号。鼠标点面板上的键帽也一样。

用它来打那些平时不知道怎么打的字符——数学符号、希腊字母、制表框线、日文假名。

它不是输入方案

软键盘不查码表、不出候选、不参与词频,就是一张「键位 → 符号」的对照表。原理和自定义标点一样,只是范围从几个标点键扩大到整个键盘。开着的时候正常的中文输入是停的,用完关掉即可。

开和关

三个入口,效果相同:

入口说明
工具栏的软键盘格出厂就显示。点一下开、再点一下关,开着时高亮。右键这一格可以直接选一面
功能主菜单 → 软键盘本身是开关,子菜单里直接选面
热键 Ctrl + Shift + K出厂绑好的,可改

关闭有四条路:Esc、面板上的关闭按钮、再点一次上面任一入口,以及切换到别的程序——切走就自动关,切回来不会自己弹出来。

面板开着时 Esc 不传给程序

Esc 被面板吃掉用来关闭自己。要给程序发 Esc,先关掉面板。

出厂的 13 个面

面名和内容沿用 QQ 五笔、微软拼音一脉的经典分组,从别的输入法过来基本认得。

内容
PC键盘键盘原字符,英文标点原样出。软键盘的「透明」面
标点符号中文标点、括号、引号、书名号
数字序号① ⑴ Ⅰ ㈠ 壹 等序号族
数学符号运算、关系、集合、逻辑
单位符号℃ ㎡ ㎏ ‰ ¥ € 等
制表符─ │ ┌ ┐ 框线族
特殊符号★ ☆ ※ ◆ ● 等装饰
希腊字母α–ω / Α–Ω
俄文字母а–я / А–Я
注音符号ㄅㄆㄇㄈ
拼音字母ā á ǎ à 等带调元音
日文平假名あ–ん
日文片假名ア–ン

换面

三个入口,同一个动作:

  • 翻页键(PgUp / PgDn 及你设的其它翻页键)——软键盘态下没有候选窗,翻页键正好闲着
  • 面板底部可点的 PgUp / PgDn 键位
  • 面板顶部的标签行,点面名直接跳

关掉再开停在同一面,重启也停在同一面。这一项不受「记住上次状态」管——那个开关管的是中英、全半角这类输入态;「上次停在哪一面」只是界面便利,没人会想每次都跳回第一面。

哪些键被接管

行为
布局里的符号键位(字母、数字、标点那些)接管,出当前面的符号。该键位在这一面上是空的,就吃掉不出字
特殊键:回车、Tab、Esc、空格、退格、Del、Ins、Home、End、PgUp、PgDn、方向键原样传给程序,不能被映射
布局之外的一切:F1–F12、小键盘、Ctrl / Alt 组合键原样传给程序

Shift 按住 = 第二层

按住 Shift 期间整面切到第二层,松开还原。不是「按一下切过去、再按一下切回来」。

CapsLock 那个键位在面板上被画成当前面按钮(显示面名,点它切下一面),但物理 CapsLock 键不接管——按它照常切大小写。

长按连出

按住不放会连续出字,首次延迟和重复速度读的是系统键盘设置里那两个滑块,和你在别处长按的手感一致。鼠标按住键帽也连出。

切面键、Shift、Esc、关闭按钮不重复——它们改的是状态不是输出,重复的话按住一下面就飞速乱切。

面板本身

  • 永远不抢焦点。点面板上任何东西,光标都还在原来那个输入框里
  • 拖顶部那条可以挪位置。位置固定,不跟着光标走
  • 面板显示期间不影响工具栏自动隐藏——面板自带关闭按钮,Esc 也能关,不会因此没法关掉

绑更多键

config.toml[keys].key_actions,或方案文件的 [key_actions] 里写:

[keys]
key_actions = { "ctrl+shift+k" = "softkeyboard", "ctrl+shift+g" = "softkeyboard:greek" }
动词作用
softkeyboard开 / 关面板
softkeyboard:<面id>开面板并直接切到那一面。面 id 见下面的配置文件

全局表和方案级表都能绑:软键盘是浮层,不改变当前方案,所以在方案级表里绑的那个键,开着面板时照样按得动。

自定义键盘面

映射表在程序目录的 data\system.softkeyboard.toml别改那一份——升级会整体替换。把它拷到 %APPDATA%\WindInput\ 下同名,改拷贝那份,改完重启输入法生效。

文件长什么样

[[pages]]
id   = "math"
name = "数学"
rows = [
  "∵ + - × ÷ = ≠ ≈ ≡ < > ° ‰",   # ` 1 2 3 4 5 6 7 8 9 0 - =
  "√ ∛ ∜ ∑ ∏ ∫ ∮ ∂ ∇ ∆ ⌈ ⌉ ∕",      # q w e r t y u i o p [ ] \
  "∈ ∉ ⊂ ⊃ ⊆ ⊇ ∪ ∩ ∖ ∧ ∨",          # a s d f g h j k l ; '
  "∞ ∝ ∠ ⊥ ∥ ≌ ≅ ≪ ≫ ⊙",            # z x c v b n m , . /
]
rows_shift = []                         # 按住 Shift 的第二层;省略 = 第二层全空
keys = { q = "√", "shift+q" = "∛" }     # 单个键位的补丁,压在画布之上

rows四行画布,每行用空格分开的段按位置落到键盘上:第一行对应 `=,第二行 q\,第三行 a',第四行 z/。这样写文件里看着就是键盘的样子,改的时候不用对着键位表数格子。

  • 行不必写满,尾部缺的就是空键位
  • 想让某个键位空着,写 . 占位;要出字面的 .,写 \.
  • 只认四行,多余的行忽略
  • keys 里的键名(qshift+qbracketleft)用的是和按键设置里同一套拼写,别自创。认不出的键名会跳过,日志里记一条

改一面还是加一面

id 对上出厂的面:

你写了什么结果
[[pages]],但没写 rows出厂那面的画布不动,只把你的 keys 补丁叠上去
写了 rows整面画布换成你的(keys 仍叠在上面)
id 对不上任何出厂面新增一面,排在最后

想改一两个键,只写 keys 就行,不用把整面抄下来。

设置界面不会动这个文件

软键盘目前只读:没有键盘编辑器,程序也不会回写这份文件,你手写的内容不会被改掉。

定制版时,改好的 system.softkeyboard.toml 放进 data_custom\ 即可,成为这个定制版的出厂键盘面。

本页目录