schema.yaml
详解
雪斋 09-Nov-2013
开始之前
# Rime schema
# encoding: utf-8
方案描述 schema
name
方案的显示名偁〔即出现于方案选单中以示人的,通常为中文〕schema_id
方案内部名,在代码中引用此方案时以此名为正,通常由英文、数字、下划线组成author
发明人、撰写者。如果您对方案做出了修改,请保留原作者名,并将自己的名字加在后面description
请简要描述方案历史、码表来源、该方案规则等dependencies
如果本方案依赖于其它方案〔通常来说会依頼其它方案做为反查,抑或是两种或多种方案混用时〕version
版本号,在发布新版前请确保已升版本号
示例:
schema:
name: "苍颉检字法"
schema_id: cangjie6
author:
- "发明人 朱邦复先生、沈红莲女士"
dependencies:
- luna_pinyin
- jyutping
- zyenpheng
description: |
第六代仓颉输入法
码表由雪斋、惜缘和crazy4u整理
version: 0.19
开关 switches
通常包含以下数个,但并不限于此,自定义过滤器皆可设置开关调控
ascii_mode
是中英文转换开关。预设0
为中文,1
为英文full_shape
是全角符号/半角符号开关。注意,开启全角时英文字母亦为全角。0
为半角,1
为全角extended_charset
是字符集开关。0
为 CJK 基本字符集,1
为 CJK 全字符集(仅table_translator
可用)ascii_punct
是中西文标点转换开关,0
为中文句读,1
为西文标点。simplification
是转化字开关。一般情况下与上同,0
为不开启转化,1
为转化。
所有关关选项名偁可自定义,可用快捷键切换:该名偁可用于 key_binder/bindings
中的 toggle
后
- name: simplification
states: ["汉字", "汉字"]
reset: 0
亦可使用多选开关,同样支持快捷键:options
名偁用于 key_binder/bindings
时,使用 set_option
或 unset_option
开启或关闭某一个
- options: [zh_trad, zh_cn, zh_mars]
states:
- 字型 → 汉字
- 字型 → 汉字
- 字型 → 䕼茡
reset: 0
name
/options
名:须与simplifier
中option_name
相同states
:可不写,如不写则此开关存在但不可见,可由快捷键操作reset
:设定默认状态〔reset
可不写,此时切换窗口时不会重置到默认状态〕
示例:
switches:
- name: ascii_mode
reset: 0
states: ["中文", "西文"]
- name: full_shape
states: ["半角", "全角"]
- name: extended_charset
states: ["通用", "增广"]
- name: simplification
states: ["汉字", "汉字"]
- name: ascii_punct
states: ["句读", "符号"]
引擎 engine
在引擎中可以指定各类组件来执行输入法功能。特别地,以下加粗项为可进一步配置的组件。引擎分四组:
一、处理器 processors
这批组件负责笼统地处理各类按键消息
ascii_composer
处理西文模式及中西文切recognizer
与matcher
搭配,处理符合特定规则的输入码,如网址、反查等tags
key_binder
在特定条件下将按键绑定到其他按键,如重定义逗号、句号为候选翻页、开关快捷键等speller
拼写处理器,接受字符按键,编辑输入punctuator
句读处理器,将单个字符按键直接映射为标点符号或文字selector
选字处理器,处理数字选字键〔可以换成别的哦〕、上、下候选定位、换页navigator
处理输入栏内的光标移动express_editor
编辑器,处理空格、回车上屏、回退键fluid_editor
句式编辑器,用于以空格断词、回车上屏的【注音】、【语句流】等输入方案,替换express_editor
chord_composer
和弦作曲家或曰并击处理器,用于【宫保拼音】等多键并击的输入方案lua_processor
使用 Lua 自定义处理器,参见 Lua
二、分段器 segmentors
这批组件识别不同内容类型,将输入码分段并加上 tag
ascii_segmentor
标识西文段落〔譬如在西文模式下〕字母直接上屛matcher
配合recognizer
标识符合特定规则的段落,如网址、反查等,加上特定tag
abc_segmentor
标识常规的文字段落,加上abc
这个tag
punct_segmentor
标识句读段落〔键入标点符号用〕加上punct
这个tag
fallback_segmentor
标识其他未标识段落affix_segmentor
用户自定义tag
- 此项可加载多个实例,后接
@
+tag
名
- 此项可加载多个实例,后接
lua_segmentor
使用 Lua 自定义切分,参见 Lua
三、翻译器 translators
这批组件翻译特定类型的编码段为一组候选文字
echo_translator
没有其他候选字时,回显输入码〔输入码可以Shift
+Enter
上屛〕punct_translator
配合punct_segmentor
转换标点符号table_translator
码表翻译器,用于仓颉、五笔等基于码表的输入方案- 此项可加载多个实例,后接
@
+翻译器名〔如:cangjie
、wubi
等〕
- 此项可加载多个实例,后接
script_translator
脚本翻译器,用于拼音、粤拼等基于音节表的输入方案- 此项可加载多个实例,后接
@
+翻译器名〔如:pinyin
、jyutping
等〕
- 此项可加载多个实例,后接
history_translator
产生上屏历史候选lua_translator
使用 Lua 自定义翻译器,例如动态输入当前日期、时间,参见 Lua
另有 reverse_lookup_translator
作为反查翻译器,用另一种编码方案查码。librime 1.0 后,建议使用下面的 reverse_lookup_filter
代替。
四、过滤器 filters
这批组件过滤翻译的结果,自定义过滤器皆可使用开关调控
uniquifier
过滤重复的候选字,例如有可能来自simplifier
cjk_minifier
字符集过滤〔仅用于script_translator
,使之支援extended_charset
开关〕single_char_filter
单字过滤器,如加载此组件,则屛敝词典中的词组〔仅table_translator
有效〕simplifier
用字转换reverse_lookup_filter
反查过滤器,以更灵活的方式反查,librime 1.0 后替代reverse_lookup_translator
- 此项可加载多个实例,后接
@
+过滤器名〔如:pinyin_lookup
、jyutping_lookup
等〕
- 此项可加载多个实例,后接
lua_filter
使用 Lua 自定义过滤器,例如过滤字符集、调整排序,参见 Lua
示例:
# cangjie6.schema.yaml
engine:
processors:
- ascii_composer
- recognizer
- key_binder
- speller
- punctuator
- selector
- navigator
- express_editor
segmentors:
- ascii_segmentor
- matcher
- affix_segmentor@pinyin
- affix_segmentor@jyutping
- affix_segmentor@pinyin_lookup
- affix_segmentor@jyutping_lookup
- affix_segmentor@reverse_lookup
- abc_segmentor
- punct_segmentor
- fallback_segmentor
translators:
- punct_translator
- table_translator
- script_translator@pinyin
- script_translator@jyutping
- script_translator@pinyin_lookup
- script_translator@jyutping_lookup
- lua_translator@get_date
filters:
- simplifier@zh_simp
- uniquifier
- cjk_minifier
- reverse_lookup_filter@middle_chinese
- reverse_lookup_filter@pinyin_reverse_lookup
- reverse_lookup_filter@jyutping_reverse_lookup
- lua_filter@single_char_first
组件配置:处理器类
拼写处理器 speller
alphabet
定义本方案输入键initials
定义仅作始码之键finals
定义仅作末码之键delimiter
上屛时的音节间分音符algebra
拼写运算规则,由之算出的拼写汇入prism
中max_code_length
形码最大码长,超过则顶字上屛〔number
〕auto_select
自动上屛〔true
或false
〕auto_select_pattern
自动上屏规则,以正则表达式描述,当输入串可以被匹配时自动顶字上屏。use_space
以空格作输入码〔true
或false
〕
speller
的演算包含:
xform
--改写〔不保留原形〕derive
--衍生〔保留原形〕abbrev
--简拼〔出字优先级较上两组更低〕fuzz
--畧拼〔此种简拼仅组词,不出单字〕xlit
--变换〔适合大量一对一变换〕erase
--删除
凡comment_format
、preedit_format
、speller/algebra
所用之正则表达式,请参阅「Perl 正则表达式」
示例:
luna_pinyin.schema.yaml
speller:
alphabet: zyxwvutsrqponmlkjihgfedcba
delimiter: " '"
algebra:
- erase/^xx$/
- abbrev/^([a-z]).+$/$1/
- abbrev/^([zcs]h).+$/$1/
- derive/^([nl])ve$/$1ue/
- derive/^([jqxy])u/$1v/
- derive/un$/uen/
- derive/ui$/uei/
- derive/iu$/iou/
- derive/([aeiou])ng$/$1gn/
- derive/([dtngkhrzcs])o(u|ng)$/$1o/
- derive/ong$/on/
- derive/ao$/oa/
- derive/([iu])a(o|ng?)$/a$1$2/
快捷编辑器 express_editor
/ 句式编辑器 fluid_editor
用以订制操作键,键名可参考按键名称,效果定义如下:
- confirm 上屏候选项
- commit_comment 上屏候选项备注
- commit_raw_input 上屏原始输入
- commit_script_text 上屏变换后输入
- commit_composition 语句流单字上屏
- revert 撤消上次输入
- back 按字符回退
- back_syllable 按音节回退
- delete_candidate 删除候选项
- delete 向后删除
- cancel 取消输入
- noop 空
示例:
editor:
bindings:
Return: commit_comment
并击处理器 chord_composer
并击把键盘分两半,相当于两块键盘。两边同时击键,系统默认在其中一半上按的键先于另一半,由此得出上屛码
alphabet
字母表,包含用于并击的按键。击键虽有先后,形成并击时,一律以字母表顺序排列algebra
拼写运算规则,将一组并击编码转换为拼音音节output_format
并击完成后套用的式样,追加隔音符号prompt_format
并击过程中套用的式样,加方括弧
示例:
# combo_pinyin.schema.yaml
chord_composer:
# 字母表,包含用于并击的按键
# 击键虽有先后,形成并击时,一律以字母表顺序排列
alphabet: "swxdecfrvgtbnjum ki,lo."
# 拼写运算规则,将一组并击编码转换为拼音音节
algebra:
# 先将物理按键字符对应到宫保拼音键位中的拼音字母
- "xlit|swxdecfrvgtbnjum ki,lo.|sczhlfgdbktpRiuVaNIUeoE|"
# 以下根据宫保拼音的键位分别变换声母、韵母部分
# 组合声母
- xform/^zf/zh/
- xform/^cl/ch/
- xform/^fb/m/
- xform/^ld/n/
- xform/^hg/r/
- ……
# 声母独用时补足隠含的韵母
- xform/^([bpf])$/$1u/
- xform/^([mdtnlgkh])$/$1e/
- xform/^([mdtnlgkh])$/$1e/
- xform/^([zcsr]h?)$/$1i/
# 并击完成后套用的式样,追加隔音符号
output_format:
- "xform/^([a-z]+)$/$1'/"
# 并击过程中套用的式样,加方括弧
prompt_format:
- "xform/^(.*)$/[$1]/"
识别器 recognizer
import_preset
由外部统一文件导入
下设patterns
配合segmentor
的prefix
和suffix
完成段落划分、tag
分配
前字段可以为以affix_segmentor@someTag
定义的Tag
名,或者punct
、reverse_lookup
两个内设的字段。其它字段不调用输入法引擎,输入即输出〔如url
等字段〕
recognizer:
import_preset: default
patterns:
email: "^[a-z][-_.0-9a-z]*@.*$"
url: "^(www[.]|https?:|ftp:|mailto:).*$"
reverse_lookup: "`[a-z]*;?$"
pinyin_lookup: "`P[a-z]*;?$"
jyutping_lookup: "`J[a-z]*;?$"
pinyin: "(?<!`)P[a-z']*;?$"
jyutping: "(?<!`)J[a-z']*;?$"
punct: "/[a-z]*$" #配合symbols.yaml中的特殊字符输入
按键绑定器 key_binder
key_binder
下设 bindings
设置功能性快捷键。每一条 binding
包含:when
作用范围、accept
实际所按之键,以及期望的操作。
when
可用字段包含:
paging
翻䈎时has_menu
操作候选项时composing
操作输入码时always
全域
操作可为以下任意一个:
send
输出按键toggle
切换开关,可用字段包含各开关名send_sequence
输出一串按键set_option
开某多选开关unset_option
关某多选开关set_option
、unset_option
可用字段包含多选开关名
select
选候选字
accept
和 send
可用字段除 A-Za-z0-9 外,还包含以下键板上的各种特殊按键,具体请参考附录。
示例:
key_binder:
import_preset: default
bindings:
- { accept: semicolon, send: 2, when: has_menu } #分号选第二重码
- { accept: apostrophe, send: 3, when: has_menu } #引号选第三重码
- { accept: "Control+1", select: .next, when: always }
- { accept: "Control+2", toggle: full_shape, when: always }
- { accept: "Control+3", toggle: simplification, when: always }
- { accept: "Control+4", toggle: extended_charset, when: always }
标点处理器 punctuator
下设 full_shape
和 half_shape
分别控制全角模式下的符号和半角模式下的符号,另有 use_space
空格顶字〔true
或 false
〕
每条标点项可加 commit
直接上屏和 pair
交替上屏两种模式,默认为选单模式
示例:
# 修改自 cangjie6.schema.yaml
punctuator:
import_preset: symbols
half_shape:
"'": { pair: ["「", "」"] } #第一次按是「,第二次是」
"(": ["〔", "["] #弹出选单
.: { commit: "。" } #无选单,直接上屛。优先级最高
组件配置:分段器类
正则分段器 affix_segmentor
segmentor
配合 recognizer
标记出 tag
,tag
会用在translator
、reverse_lookup_filter
、simplifier
中用以标定各自作用范围。
tag
设定其tag
prefix
设定其前缀标识,可不塡,不塡则无前缀suffix
设定其尾缀标识,可不塡,不塡则无尾缀tips
设定其输入前提示符,可不塡,不塡则无提示符closing_tips
设定其结束输入提示符,可不塡,不塡则无提示符extra_tags
为此segmentor
所标记的段落插上其它tag
如果一个 affix_segmentor
仅仅用于副翻译器,且不需要用到 extra_tags
,则该 affix_segmentor
的配置可以写在对应的副翻译器下面,此处 1-5 条对应副翻译器配置(见下)24-28 条。
文本分段器 abc_segmentor
abc_segmentor
仅可设 extra_tags
。
示例:
cangjie6.schema.yaml
reverse_lookup:
tag: reverse_lookup
prefix: "`"
suffix: ";"
tips: "【反查】"
closing_tips: "【苍颉】"
extra_tags:
- pinyin_lookup
- jyutping_lookup
组件配置:翻译器类
脚本翻译器 script_translator
/ 码表翻译器 table_translator
每个方案有一个主翻译器,可以是 script_translator
/ table_translator
二者之一,在引擎列表中不需要加 @
+ 翻译器名,在细项配置时直接以 translator
命名。以下加粗项为只能在副翻译器〔以 @
+ 翻译器名命名〕中定义
enable_charset_filter
是否开启字符集过滤〔仅table_translator
有效。启用cjk_minifier
后可适用于script_translator
〕enable_encoder
是否开启自动造词〔仅table_translator
有效〕encode_commit_history
是否对已上屛词自动成词〔仅table_translator
有效〕max_phrase_length
最大自动成词词长〔仅table_translator
有效〕enable_completion
提前显示尚未输入完整码的字〔仅table_translator
有效〕enable_correction
启用自动纠错〔仅script_translator
有效〕sentence_over_completion
在无全码对应字而仅有逐键提示时也开启智能组句〔仅table_translator
有效〕strict_spelling
配合speller
中的fuzz
规则,仅以畧拼码组词〔仅table_translator
有效〕disable_user_dict_for_patterns
禁止某些编码录入用户词典enable_sentence
是否开启自动造句enable_user_dict
是否开启用户词典〔用户词典记录动态字词频、用户词〕- 以上 11 项,选塡
true
或false
- 以上 11 项,选塡
dictionary
翻译器将调取此字典文件prism
设定由此主翻译器的speller
生成的棱镜文件名,或此副编译器调用的棱镜名user_dict
设定用户词典名db_class
设定用户词典类型,可设tabledb
〔文本〕或userdb
〔二进制〕preedit_format
上屛码自定义comment_format
提示码自定义spelling_hints
设定多少字以内候选标注完整带调拼音〔仅script_translator
有效〕always_show_comments
始终显示提示码〔仅script_translator
有效〕initial_quality
设定此翻译器出字优先级contextual_suggestions
是否使用语言模型优化输出结果〔需配合grammar
使用〕max_homophones
最大同音簇长度〔需配合grammar
使用〕max_homographs
最大同形簇长度〔需配合grammar
使用〕tag
设定此翻译器针对的tag
。可不塡,不塡则仅针对abc
prefix
设定此翻译器的前缀标识,可不塡,不塡则无前缀suffix
设定此翻译器的尾缀标识,可不塡,不塡则无尾缀tips
设定此翻译器的输入前提示符,可不塡,不塡则无提示符closing_tips
设定此翻译器的结束输入提示符,可不塡,不塡则无提示符
历史翻译器 history_translator
tag
: 同 Translator 说明initial_quality
: 同 Translator 说明size
: 设定候选记录量,预设: 0 等同(commit_record 最大储存量 20)input
: 触发此翻译器的字串
示例:
# cangjie6.schema.yaml 苍颉主翻译器
translator:
dictionary: cangjie6
enable_charset_filter: true
enable_sentence: true
enable_encoder: true
encode_commit_history: true
max_phrase_length: 5
preedit_format:
- xform/^([a-z ])$/$1|\U$1\E/
- xform/(?<=[a-z])\s(?=[a-z])//
- "xlit|ABCDEFGHIJKLMNOPQRSTUVWXYZ|日月金木水火土竹戈十大中一弓人心手口尸廿山女田止卜片|"
comment_format:
- "xlit|abcdefghijklmnopqrstuvwxyz~|日月金木水火土竹戈十大中一弓人心手口尸廿山女田止卜片・|"
disable_user_dict_for_patterns:
- "^z.$"
initial_quality: 0.75
# cangjie6.schema.yaml 拼音副翻译器
pinyin:
tag: pinyin
dictionary: luna_pinyin
enable_charset_filter: true
prefix: "P" #须配合recognizer
suffix: ";" #须配合recognizer
preedit_format:
- "xform/([nl])v/$1ü/"
- "xform/([nl])ue/$1üe/"
- "xform/([jqxy])v/$1u/"
tips: "【汉拼】"
closing_tips: "【苍颉】"
# pinyin_simp.schema.yaml 拼音・简化字主翻译器
translator:
dictionary: luna_pinyin
prism: luna_pinyin_simp
preedit_format:
- xform/([nl])v/$1ü/
- xform/([nl])ue/$1üe/
- xform/([jqxy])v/$1u/
# luna_pinyin.schema.yaml 朙月拼音用户短语
custom_phrase: #这是一个table_translator
dictionary: ""
user_dict: custom_phrase
db_class: tabledb
enable_sentence: false
enable_completion: false
initial_quality: 1
组件配置:过滤器类
反查过滤器 reverse_lookup_filter
此过滤器查询候选中文字在某种输入方案中的输入码,然后将其放到候选的 comment 中。
tags
设定其作用范围overwrite_comment
是否覆盖其他提示dictionary
反查所得提示码之码表comment_format
自定义提示码格式apply_comment
示例:
# cangjie6.schema.yaml
pinyin_reverse_lookup: #该反查过滤器名
tags: [pinyin_lookup] #挂在这个tag所对应的翻译器上
overwrite_comment: true
dictionary: cangjie6 #反查所得为苍颉码
comment_format:
- "xform/$/〕/"
- "xform/^/〔/"
- "xlit|abcdefghijklmnopqrstuvwxyz |日月金木水火土竹戈十大中一弓人心手口尸廿山女田止卜片、|"
用字转换器 simplifier
option_name
对应switches
中设定的切换项名,暨key_binder/binding
中所用名opencc_config
用字转换配置文件,位于:rime_dir/opencc/
,自带之配置文件含:- 繁转简〔默认〕:
t2s.json
- 繁转台湾:
t2tw.json
- 繁转香港:
t2hk.json
- 简转繁:
s2t.json
- 繁转简〔默认〕:
tags
设定转换范围tips
设定是否提示转换前的字,可塡none
〔或不塡〕、char
〔仅对单字有效〕、all
comment_format
自定义提示码格式allow_erase_comment
是否允许返回空提示码〔默认false
〕show_in_comment
设定是否仅将转换结果显示在备注中excluded_types
取消特定范围〔一般为*reverse_lookup_translator
*〕转化用字
示例:
# 修改自 luna_pinyin_kunki.schema.yaml
zh_tw:
option_name: zh_tw
opencc_config: t2tw.json
tags: [abc] #abc对应abc_segmentor
tips: none
allow_erase_comment: true
comment_format:
- xform/.*//
Lua
使用 Lua 组件时要指明调用的是哪一个 Lua 函数,例如 lua_translator@date
表示调用 date
这个 Lua 函数作为翻译器。具体的函数接口如下:
lua_processor
:参数为key_event, env
lua_segmentor
:参数为input, env
lua_translator
:参数为input, segment, env
lua_filter
:参数为translation, env
请参攷 hchunhui/librime-lua 以寻求更多灵感。
示例:
; lua/rime.lua
function get_date(input, seg, env)
--- 以 show_date 为开关名或 key_binder 中 toggle 的对象
on = env.engine.context:get_option("show_date")
if (on and input == "date") then
--- Candidate(type, start, end, text, comment)
yield(Candidate("date", seg.start, seg._end, os.date("%Y年%m月%d日"), " 日期"))
end
end
---
function single_char_first(input, env)
--- 以 single_char 为开关名或 key_binder 中 toggle 的对象
on = env.engine.context:get_option("single_char")
local cache = {}
for cand in input:iter() do
if (not on or utf8.len(cand.text) == 1) then
yield(cand)
else
table.insert(cache, cand)
end
end
for i, cand in ipairs(cache) do
yield(cand)
end
end
其它
grammar
语法
下设:
language
取值zh-han[ts]-t-essay-bg[wc]
collocation_max_length
最大搭配长度(整句输入可忽畧此项)collocation_min_length
最小搭配长度(整句输入可忽畧此项)
menu
选单
- Rime 还为每个方案提供选单和一定的外观订制能力
- 通常情况下
menu
在default.custom.yaml
,
示例:
menu:
alternative_select_labels: [①, ②, ③, ④, ⑤, ⑥, ⑦, ⑧, ⑨] # 修改候选标签
alternative_select_keys: ASDFGHJKL #如编码字符占用数字键则须另设选字键
page_size: 5 #选单每䈎显示个数
style
样式
在用户修改档squirrel.custom.yaml
或weasel.custom.yaml
style:
font_face: "HanaMinA, HanaMinB" #字体〔小狼毫得且仅得设一个字体;鼠须管得设多个字体,后面的字体自动补前面字体不含的字〕
font_point: 15 #字号
label_format: "%s" # 候选标签格式
horizontal: false #横/直排
line_spacing: 1 #行距
inline_preedit: true #输入码内嵌
附录:按键名称
BackSpace 退格
Tab 水平定位符
Linefeed 换行
Clear 清除
Return 回车
Pause 暂停
Sys_Req 印屏
Escape 退出
Delete 删除
Home 原位
Left 左箭头
Up 上箭头
Right 右箭头
Down 下箭头
Prior、Page_Up 上翻
Next、Page_Down 下翻
End 末位
Begin 始位
Shift_L 左Shift
Shift_R 右Shift
Control_L 左Ctrl
Control_R 右Ctrl
Meta_L 左Meta
Meta_R 右Meta
Alt_L 左Alt
Alt_R 右Alt
Super_L 左Super
Super_R 右Super
Hyper_L 左Hyper
Hyper_R 右Hyper
Caps_Lock 大写锁
Shift_Lock 上档锁
Scroll_Lock 滚动锁
Num_Lock 小键板锁
Select 选定
Print 列印
Execute 执行
Insert 插入
Undo 还原
Redo 重做
Menu 菜单
Find 搜寻
Cancel 取消
Help 帮助
Break 中断
space
exclam !
quotedbl "
numbersign #
dollar $
percent %
ampersand &
apostrophe '
parenleft (
parenright )
asterisk *
plus +
comma ,
minus -
period .
slash /
colon :
semicolon ;
less <
equal =
greater >
question ?
at @
bracketleft [
backslash \
bracketright ]
asciicircum ^
underscore _
grave `
braceleft {
bar |
braceright }
asciitilde ~
KP_Space 小键板空格
KP_Tab 小键板水平定位符
KP_Enter 小键板回车
KP_Delete 小键板删除
KP_Home 小键板原位
KP_Left 小键板左箭头
KP_Up 小键板上箭头
KP_Right 小键板右箭头
KP_Down 小键板下箭头
KP_Prior、KP_Page_Up 小键板上翻
KP_Next、KP_Page_Down 小键板下翻
KP_End 小键板末位
KP_Begin 小键板始位
KP_Insert 小键板插入
KP_Equal 小键板等于
KP_Multiply 小键板乘号
KP_Add 小键板加号
KP_Subtract 小键板减号
KP_Divide 小键板除号
KP_Decimal 小键板小数点
KP_0 小键板0
KP_1 小键板1
KP_2 小键板2
KP_3 小键板3
KP_4 小键板4
KP_5 小键板5
KP_6 小键板6
KP_7 小键板7
KP_8 小键板8
KP_9 小键板9