# Rime schema
# encoding: utf-8

schema:
  schema_id: bopomofo_tw
  name: 注音·臺灣正體
  version: "1.2"
  author:
    - 佛振 <chen.sst@gmail.com>
  description: |
    注音符號輸入，採用「大千式」鍵盤排列，輸出臺灣正體字形。

    本方案採用「無模式」設計，以大寫字母鍵或上下方向鍵、回車鍵選詞；
    空格鍵輸入第一聲，標記爲「ˉ」。也可省略聲調或韻母部份。

  dependencies:
    - cangjie5

switches:
  - name: ascii_mode
    reset: 0
    states: [ 中文, 西文 ]
  - name: full_shape
    states: [ 半角, 全角 ]
  - name: ascii_punct
    states: [ ，。, ，． ]
  - name: zh_tw
    reset: 1
    # 啓用opencc字形轉換，但不在選單中顯示

engine:
  processors:
    - ascii_composer
    - recognizer
    - key_binder
    - speller
    - punctuator
    - selector
    - navigator
    - fluency_editor
  segmentors:
    - ascii_segmentor
    - matcher
    - abc_segmentor
    - punct_segmentor
    - fallback_segmentor
  translators:
    - punct_translator
    - table_translator@custom_phrase
    - reverse_lookup_translator
    - script_translator
  filters:
    - simplifier
    - uniquifier

menu:
  alternative_select_keys: "ABCDEFGHIJ"

speller:
  alphabet: '1qaz2wsxedcrfv5tgbyhnujm8ik,9ol.0p;/- 6347'
  initials: '1qaz2wsxedcrfv5tgbyhnujm8ik,9ol.0p;/-'
  finals: " 6347"
  delimiter: "'"
  use_space: true
  algebra:
    - erase/^xx$/
    - xform/^m(\d)$/mu$1/  # 呣
    - xform/^r5$/er5/  # 〜兒
    - xform/iu/iou/
    - xform/ui/uei/
    - xform/ong/ung/
    - xform/^yi?/i/
    - xform/^wu?/u/
    - xform/iu/v/
    - xform/^([jqx])u/$1v/
    - xform/([iuv])n/$1en/
    - xform/^zhi?/Z/
    - xform/^chi?/C/
    - xform/^shi?/S/
    - xform/^([zcsr])i/$1/
    - xform/ai/A/
    - xform/ei/I/
    - xform/ao/O/
    - xform/ou/U/
    - xform/ang/K/
    - xform/eng/G/
    - xform/an/M/
    - xform/en/N/
    - xform/er/R/
    - xform/eh/E/
    - xform/([iv])e/$1E/
    - abbrev/^([bpmfdtnlgkhjqxZCSrzcs]).+$/$1/
    - derive/^([A-Za-z]+)\d$/$1/
    - abbrev/^([bpmfdtnlgkhjqxZCSrzcs]).+(\d)$/$1$2/
    - 'xlit|bpmfdtnlgkhjqxZCSrzcsiuvaoeEAIOUMNKGR12345|1qaz2wsxedcrfv5tgbyhnujm8ik,9ol.0p;/- 6347|'

translator:
  dictionary: terra_pinyin
  prism: bopomofo_tw
  preedit_format:
    - "xlit|1qaz2wsxedcrfv5tgbyhnujm8ik,9ol.0p;/- 6347'|ㄅㄆㄇㄈㄉㄊㄋㄌㄍㄎㄏㄐㄑㄒㄓㄔㄕㄖㄗㄘㄙㄧㄨㄩㄚㄛㄜㄝㄞㄟㄠㄡㄢㄣㄤㄥㄦˉˊˇˋ˙ |"

custom_phrase:
  dictionary: ""
  user_dict: custom_phrase
  db_class: stabledb
  enable_completion: false
  enable_sentence: false
  initial_quality: 1

reverse_lookup:
  dictionary: cangjie5
  enable_completion: true
  prefix: "`"
  suffix: "'"
  tips: 〔倉頡〕
  preedit_format:
    - "xlit|abcdefghijklmnopqrstuvwxyz|日月金木水火土竹戈十大中一弓人心手口尸廿山女田難卜符|"
  comment_format:
    - xform/e?r5$/er5/
    - xform/([jqx])u/$1v/
    - xform/yu/v/
    - xform/yi?/i/
    - xform/wu?/u/
    - xform/iu/iou/
    - xform/ui/uei/
    - xform/ong/ung/
    - xform/([iu])n/$1en/
    - xform/zh/Z/
    - xform/ch/C/
    - xform/sh/S/
    - xform/ai/A/
    - xform/ei/I/
    - xform/ao/O/
    - xform/ou/U/
    - xform/ang/K/
    - xform/eng/G/
    - xform/an/M/
    - xform/en/N/
    - xform/er/R/
    - xform/eh/E/
    - xform/([iv])e/$1E/
    - xform/1//
    - 'xlit|bpmfdtnlgkhjqxZCSrzcsiuvaoeEAIOUMNKGR2345|ㄅㄆㄇㄈㄉㄊㄋㄌㄍㄎㄏㄐㄑㄒㄓㄔㄕㄖㄗㄘㄙㄧㄨㄩㄚㄛㄜㄝㄞㄟㄠㄡㄢㄣㄤㄥㄦˊˇˋ˙|'

simplifier:
  opencc_config: zht2zhtw_v.ini
  option_name: zh_tw

punctuator:
  full_shape:
    " " : { commit: "　" }
    "<" : { commit: "，" }
    ">" : { commit: "。" }
    "?" : [ ？, ／, ÷ ]
    ":" : [ ：, ； ]
    "'" : { pair: [ "‘", "’" ] }
    "\"" : { pair: [ "“", "”" ] }
    "\\" : [ 、, ＼ ]
    "|" : [ ·, ｜, "§", "¦" ]
    "`" : ｀
    "~" : ～
    "!" : { commit: ！ }
    "@" : [ ＠, ☯ ]
    "#" : [ ＃, ⌘ ]
    "%" : [ ％, "°", "℃" ]
    "$" : [ ￥, "$", "€", "£", "¥", "¢", "¤" ]
    "^" : { commit: …… }
    "&" : ＆
    "*" : [ ＊, ·, ・, ×, ※, ❂ ]
    "(" : （
    ")" : ）
    "_" : [ ——, － ]
    "+" : ＋
    "=" : ＝
    "[" : [ 「, 【, 《, 〔, ［ ]
    "]" : [ 」, 】, 》, 〕, ］ ]
    "{" : [ 『, 〖, 〈, ｛ ]
    "}" : [ 』, 〗, 〉, ｝ ]
  half_shape:
    "<" : { commit: "，" }
    ">" : { commit: "。" }
    "?" : [ ？, ／, "/", ÷ ]
    ":" : [ ：, ； ]
    "'" : { pair: [ "‘", "’" ] }
    "\"" : { pair: [ "“", "”" ] }
    "\\" : [ 、, "\\", ＼ ]
    "|" : [ ·, "|", ｜, "§", "¦" ]
    "`" : "`"
    "~" : "~"
    "!" : { commit: ！ }
    "@" : "@"
    "#" : "#"
    "%" : [ "%", ％, "°", "℃" ]
    "$" : [ ￥, "$", "€", "£", "¥", "¢", "¤" ]
    "^" : { commit: …… }
    "&" : "&"
    "*" : [ "*", ＊, ·, ・, ×, ※, ❂ ]
    "(" : （
    ")" : ）
    "_" : [ ——, －, "-" ]
    "+" : "+"
    "=" : "="
    "[" : [ 「, 【, 《, 〔, ［ ]
    "]" : [ 」, 】, 》, 〕, ］ ]
    "{" : [ 『, 〖, 〈, ｛ ]
    "}" : [ 』, 〗, 〉, ｝ ]

key_binder:
  import_preset: default
  bindings:
    - { when: has_menu, accept: comma, send: comma }      # ㄝ
    - { when: has_menu, accept: period, send: period }    # ㄡ
    - { when: has_menu, accept: minus, send: minus }      # ㄦ
    - { when: paging, accept: minus, send: Page_Up }
    - { when: has_menu, accept: equal, send: Page_Down }

recognizer:
  patterns:
    email: "^[a-z][-_.0-9a-z]*@.*$"
    uppercase: "^[A-Z][-_+.'0-9A-Za-z]*$"
    url: "^(www[.]|https?:|ftp:|mailto:).*$"
    reverse_lookup: "`[a-z]*'?$"
