# Rime schema settings
# encoding: utf-8

schema:
  name: 三码郑码
  schema_id: smzm
  version: 'V20220601'
  author:
    - 郑易里、郑珑<svc@zmsjit.com>
    - 史岳（至至）<65003074@qq.com>
  description: |
    *重码率低，编码确定性高，为盲打而生。非简码字选重率仅0.15%。可轻松实现不看键盘、不看屏幕、不看候选框的真正盲打！
    *高效率、字均按键少。综合码长2.35（平均2.35键一字），纯单字效率即可达到传统形码词组输入的效率水平。按每秒击键7次计算，可以轻松实现170字/分钟的水平。效率可轻松达到拼音输入法两至三倍！
    *极其规律易学难忘的字根体系。输入法基于汉字形码理论体系的奠基人郑易里教授的科学字根体系。该体系汉字拆分直观符直觉，规律性极强，完全理解记忆不死记硬背，绝对无需记忆字根口诀！
    *纯单字输入，无需人工分词。无需像传统形码输入法一样人工分词输入词组，输入体验舒适度极佳，类似拼音整句，却无需选重！
    *易于精通。全部简码仅约290字，数量不到传统形码的二分之一，且完全无需对词组作任何特殊训练。这使得该输入法从入门到精通（140字/分）的总时间远短于，总成本远低于传统形码。
    *高度符合人机工程学的键位设计。左右手负荷均衡，两手顺序交替频率高相同手指连击频率低，食中无名小指使用率依次降低，任一手指负荷适当。卓越的人机工程学设计有效保证了高速输入的持久性。
    *规范。在基本字根选用、字根笔画分类、笔形分区、取码笔顺及根顺等主要方面符合国家语言文字规范，与汉语语文识字教学背景一致。
    *均衡。达到了效率、易学性、速学性、舒适度的极佳均衡。
    *三码郑码输入法基础设定及快捷键：
      输入法设置菜单：	Ctrl + `（数字键1左侧键）
      中英文切换：			Shift 
      候选翻页：				" + - "（数字排减号等号）后一页前一页
      中英文标点切换：	Ctrl + .（句号键）
      全半角切换：			Shift + Space（空格键）
      拼音反查(以音查形)：	" ` "符号引导加拼音编码 （数字键1左侧键）临时碰到不会拆分的汉字可使用拼音反查编码
      以形查音：				" ~ "符号引导加字编码 （Shift+数字键1左侧键）临时碰到不会读的汉字可使用~查读音
      清除编码：				Enter（回车键）            
      如输入码为空码，则自动清除编码。

  dependencies:  
    - pinyin_simp   
    - smzmcore    


switches:    
  - name: extended_char  
    #states: [全字集模式(含生僻字), 常规字集模式]   
    states: [生僻字✔, 生僻字✖]  #移动端设置显示。 
    reset: 1
  - name: simp_trad    
    # states: [常规输入模式, 简入繁出模式]     
    states: [简入繁出✖, 简入繁出✔]  #移动端设置显示。
    reset: 0   
  - name: chaifen    
    # states: [不显示拆分, 显示拆分提示]  
    states: [拆分✖, 拆分✔]   #移动端设置显示。   
    reset: 0
  - name: full_shape   
    states: [半角, 全角]     
    reset: 0  
  - name: ascii_punct   
    # states: [中文标点, 英文标点]    
    states: [。，, ．，]   #移动端设置显示。
  - name: ascii_mode   
    reset: 0   
  - name: show_pinyin         
    reset: 1       
 
   
engine:
  processors:  
    - ascii_composer      
    - recognizer          
    - key_binder          
    - speller             
    - punctuator                
    - lua_processor@exe_processor   
    - lua_processor@exemore_processor 
    - lua_processor@switch_processor 
    - selector            
    - navigator           
    - express_editor      
  segmentors:  
    - ascii_segmentor     
    - matcher             
    - abc_segmentor       
    - affix_segmentor@smzm_to_pinyin  
    - punct_segmentor     
    - fallback_segmentor     
  translators:    
    - punct_translator     
    - table_translator     
    - reverse_lookup_translator       
    - table_translator@smzm_to_pinyin    
    - lua_translator@date_translator    
    - lua_translator@time_translator    
    - lua_translator@week_translator 
    - lua_translator@helper_translator  
    - lua_translator@number_translator  
  filters:     
    - lua_filter@smzmcore 
    - simplifier            
    - simplifier@show_pinyin    
    - reverse_lookup_filter@smzm_lookup  
    - simplifier@chaifen
    - uniquifier          
   
speller:  
  algebra: 
    - 'derive/[1-9]$/ /' 
    - xform/=// 
    - xlit/123/&;./    
    - xform/\*$// 
  alphabet: zyxwvutsrqponmlkjihgfedcba&;/.,  
  initials: zyxwvutsrqponmlkjihgfedcba;/  
  auto_select: true   
  auto_clear: auto   


translator:
  dictionary: smzm  
  enable_charset_filter: false 
  enable_sentence: false
  enable_encoder: false 
  encode_commit_history: false 
  enable_user_dict: false   
  enable_completion: true   
  preedit_format:        
    - xlit/&/_/  
  comment_format:   
    - xform/~\[(\w+)\]/→ \[$1\]/  
    - xform/~\w*\*$// 
    - xlit/123/_;./ 
    - xform/^~.*=.*// 


show_pinyin:   
  opencc_config: smzm_py.json   
  option_name: show_pinyin   
  show_in_comment: true   
  comment_format:      
    - "xform/_/ /"   
  tags:        
    - smzm_to_pinyin   
  tips: all   


chaifen:
  opencc_config: smzm_cf.json
  option_name: chaifen
  show_in_comment: true 
  comment_format:     
    - "xform/_/ /"   
  tags:     
    - abc
    - reverse_lookup
  tips: char  


reverse_lookup:
  dictionary: pinyin_simp
  prefix: "`"        
  tips: 〔拼音反查〕  
  closing_tips: 〔三码郑码〕  
  preedit_format:          
    - xform/([nl])v/$1ü/
    - xform/([nl])ue/$1üe/
    - xform/([jqxy])v/$1u/


smzm_to_pinyin:     
  __include: translator  
  prefix: '~'   
  tips: '〔查询拼音〕'    
  tag: smzm_to_pinyin     


smzm_lookup:
  tags:
    - abc
    - pinyin
  dictionary: smzm     
  comment_format:  
    - xform/.{199,}// 
    - xform/^\w*\*$// 
    - xlit/123/_;./ 


simplifier:
  option_name: simp_trad 
  opencc_config: s2t.json 


editor:   
  __include: default:/editor?  
  bindings:
    Return: cancel     
    Shift+Shift_L: confirm  
   


key_binder:    
  bindings:
    - {when: has_menu, accept: Left, send: Up}  
    - {when: has_menu, accept: Right, send: Down}  
    - {when: has_menu, accept: equal, send: Page_Down} 
    - {when: has_menu, accept: minus, send: Page_Up}  
    - {accept: Shift+space, toggle: full_shape, when: always}
    - {accept: Control+period, toggle: ascii_punct, when: always}   
    - {when: has_menu, accept: apostrophe, send: 2} 
    - { when: has_menu, accept: Tab, send: 3}   
    - {when: has_menu, accept: space, send: "&"}  
    - {when: has_menu, accept: period, send: period}    
    - {when: always, accept: Control+Shift+D, toggle: chaifen}  
    - {when: always, accept: Control+Shift+F, toggle: simp_trad}  
    - {when: always, accept: Control+Shift+U, toggle: extended_char} 


recognizer:  
  patterns:
    reverse_lookup: "^`[a-z]*$"      
    uppercase: "[A-Z][-_+.'0-9A-Za-z]*$"   
    smzm_to_pinyin: '^~([a-z]+[&;]?|;)?$'       
    url: "^(www[.]|ftp[.:]|mai).*$"     
    zhe: "^zhe.*$"   
   

menu:
  page_size: 6  
 
style:
  font_point: 14  
  horizontal: false  
    
punctuator: 
  half_shape:   
    ',': { commit: ， }
    '.': { commit: 。 }
    '<': [ 《 , '<' ,〈 , « , ‹ ]
    '>': [ 》, '>' , 〉, » , › ]
    '/' : [ '四字词多字词：引导键"/" + 一二三末字首码' , '/', ／, ÷ ]  
    '?' : { commit: ？ }
    ';' : [ ；, ';', の ]    
    ':' : ：   
    '''' : { pair: [ '‘', '’' ] }
    '"' : { pair: [ '“', '”' ] }   
    '\' : { commit: 、 }   
    '|' : [ ·, '|', ｜, '§', '¦', '‖', ・ ]
    '`' : [ ·, '`', ′, ″, ‴, ‵, ‶, ‷, ⁗ ]
    '~' : [ '~', ～, ˜, ≈, ≋, ≃, ≅, ≇, ∽, ⋍, ≌, ﹏, ﹋, ﹌ ]
    '!' : { commit: ！ }
    '@' : [ '@', ©, ®, ·, ℗ ,＠]
    '#' : [ '#', №, ＃, ⌘ ]
    '%' : [ '%', ％, '°', '℃', ‰, ‱, ℉ ]
    '$' : [ '$', ￥, '€', '£', '¥', '¢', '¤', ₩ ]
    '^' : { commit: …… }
    '&' : ''   
    '*' : [ '*', '&', ＊, ·, ※, ×, ❂, ⁂, ☮, ☯, ☣, ・ ]
    '(' : （
    ')' : ）
    '-' : '-'
    '_' : ——
    '+' : '+'
    '=' : [ '=', 々, 〃,＝ ]
    '[' : [ 「, 【, 〔, '[',［ ]
    ']' : [ 」, 】, 〕, ']',］ ]
    '{' : [ 『, 〖, '{',｛ ]
    '}' : [ 』, 〗, '}',｝ ]
      
   
  full_shape:   
    ',' : { commit: ， }
    '.' : { commit: 。 }
    '<' : [ 《, 〈, «, ‹ ]
    '>' : [ 》, 〉, », › ]
    '/' : [ '多字词引导键' , ／, ÷ ]  
    '?' : { commit: ？ }
    ';' : [ ；, の ]
    ':' : { commit: ： }
    '''' : { pair: [ '‘', '’' ] }
    '"' : { pair: [ '“', '”' ] }
    '\' : [  、, ＼ ]
    '|' : [ ·, ｜, '§', '¦' ]
    '`' : ｀
    '~' : ～
    '!' : { commit: ！ }
    '@' : [ ＠, ☯ ]
    '#' : [ ＃, ⌘ ]
    '%' : [ ％, '°', '℃' ]
    '$' : [ ￥, '$', '€', '£', '¥', '¢', '¤', ₩ ]
    '^' : { commit: …… }
    '&' : ''   
    '*' : [ ＊, ·, ・, ×, ※, ❂ ]
    '(' : （
    ')' : ）
    '-' : －
    '_' : ——
    '+' : ['+','＋']
    '=' : [ ＝, 々, 〃 ]
    '[' : [ 「, 【, 〔, ［ ]
    ']' : [ 」, 】, 〕, ］ ]
    '{' : [ 『, 〖, ｛ ]
    '}' : [ 』, 〗, ｝ ]
 
 
   