软键盘
一块常驻的符号面板,开启后接管主键区——敲键或点键帽都按当前面出符号。出厂 13 面,可自定义
打开一块常驻的符号面板。开启期间主键区的按键被接管:敲 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里的键名(q、shift+q、bracketleft)用的是和按键设置里同一套拼写,别自创。认不出的键名会跳过,日志里记一条
改一面还是加一面
按 id 对上出厂的面:
| 你写了什么 | 结果 |
|---|---|
有 [[pages]],但没写 rows | 出厂那面的画布不动,只把你的 keys 补丁叠上去 |
写了 rows | 整面画布换成你的(keys 仍叠在上面) |
id 对不上任何出厂面 | 新增一面,排在最后 |
想改一两个键,只写 keys 就行,不用把整面抄下来。
设置界面不会动这个文件
软键盘目前只读:没有键盘编辑器,程序也不会回写这份文件,你手写的内容不会被改掉。
做定制版时,改好的 system.softkeyboard.toml 放进 data_custom\ 即可,成为这个定制版的出厂键盘面。