home icon indicating copy to clipboard operation
home copied to clipboard

[求助]Mac + Karabiner Element:重定义选字键出错 key_binder+punctuator无法处理选字 会先输入中文标点

Open WesleyBlancoYuan opened this issue 11 months ago • 0 comments

Hi, 以上设置在Mac里面又出现了问题。Karabiner存在的情况下,出现上屏的按键如果对应了中文标点,则会再次出现符号和第一个候选字上屏的问题。

比如输入"dashi",数字键2,5可以正常选字,但是按3会输入“大师(”,按4会输入“大师《“。我理解这两字应该先用punctuator处理,然后用selector,但以下设置不起作用:

# default.custom.yaml
customization:
  distribution_code_name: Weasel
  distribution_version: 0.9.30
  generator: "Rime::SwitcherSettings"
  modified_time: "Tue Oct 17 09:30:32 2017"
  rime_version: 1.1.2
patch:
  engine:
    processors:
      - punctuator
      - key_binder
      - selector
    segmentors:
      - abc_segmentor
      - punct_segmentor   # 劃界,與前後方的其他編碼區分開
      - fallback_segmentor
    translators:
      - echo_translator
      - punct_translator  # 轉換
      - table_translator
  schema_list:
    - {schema: luna_pinyin}
  punctuator:
    import_preset: default #導入預設
    full_shape:
      "(" : "("
      "<" : "<"

  ascii_composer/switch_key:
    # commit_code: commit the letters
    # commit_text: commit the characters
    # clear: does not commit
    # noop: disable

  # "menu/alternative_select_keys":
  #   '{[(</\>)]}'    # not working
    # Enable Shift switching language
     # Shift_L: commit_code
     # Shift_R: commit_code
    # Disable Shift switching language
     Shift_L: noop
     Shift_R: noop

# luna_pinyin.custom.yaml
# Luna custom
# encoding: utf-8
patch:
  switches:
    - name: full_shape
      reset: 1
      states: ["半角", "全角"]
    - name: simplification
      reset: 1
      states: ["漢字", "汉字"]
    - name: ascii_punct
      reset: 0
      states: ["句讀", "符號"]

  # first launch type English
  "switches/@0/reset": 0 #表示將 switcher 列表中的第一個元素(即 ascii_mode 開關)的初始值重設爲狀態1(即「英文」)。

  "key_binder/bindings":
    # Change language with Ctrl+|
    - {accept: "Control+bar", toggle: ascii_mode, when: always}
    # pageup/pagedown to choose characters with ,/.
    - {when: has_menu, accept: period, send: Page_Down}
    - {when: has_menu, accept: comma, send: Page_Up}
    # For SymmeTri
    - {accept: braceleft, send: 1, when: has_menu}      # 大括号選1
    - {accept: bracketleft, send: 2, when: has_menu}    # 中括号選2
    - {accept: parenleft, send: 3, when: has_menu}      # 括号選3
    - {accept: less, send: 4, when: has_menu}           # 小括号選4
    - {accept: slash, send: 5, when: has_menu}          # 斜杠选5
    - {accept: backslash, send: 6, when: has_menu}      # 反斜杠选6
    - {accept: greater, send: 7, when: has_menu}        # 右小括号选7
    - {accept: parenright, send: 8, when: has_menu}     # 右括号选8
    - {accept: bracketright, send: 9, when: has_menu}   # 右中括号选9
    - {accept: braceright, send: 0, when: has_menu}     # 右大括号选0

我已经用Key Codes.app和Karabiner-EventViewer.app查看了按键event,两个程序都显示系统收到了(半角字符。

Image

请指教一下,万分感谢

Originally posted by @WesleyBlancoYuan in #191

WesleyBlancoYuan avatar May 09 '25 08:05 WesleyBlancoYuan