content: [metadata]
  name = "default"
  description = "test typing rule"
  
  [conversion]
  a = ["", "あ"]
  ba = ["", "ば"]
  tsU = ["", "ちいさいっ"]
  
  [command]
  # Hiraganaモード時のコマンド
  [direct.hiragana]
  "l" = ["ForceKanaConvert(Hiragana)", "ChangeInputMode(Ascii)", "ClearUnconfirmedInputs"]
  "L" = ["ForceKanaConvert(Hiragana)", "ChangeInputMode(Zenkaku)", "ClearUnconfirmedInputs"]
  "C-q" = ["ForceKanaConvert(Hiragana)", "ChangeInputMode(HankakuKatakana)", "ClearUnconfirmedInputs"]
  "q" = ["ForceKanaConvert(Hiragana)", "ChangeInputMode(Katakana)", "ClearUnconfirmedInputs"]
  "Q" = ["ChangeCompositionMode(PreComposition)"]
  "C-j" = ["FinishKeyEvent"]
  "C-g" = ["Abort"]
  "C-G" = ["Abort"]
  "Return" = ["ConfirmDirect"]
  "C-m" = ["ConfirmDirect"]
  "BackSpace" = ["Delete"]
  "C-h" = ["Delete"]
  "C-H" = ["Delete"]
  "slash" = ["ChangeCompositionMode(Abbreviation)"]
  # Katakanaモード時のコマンド
  [direct.katakana]
  "l" = ["ForceKanaConvert(Katakana)", "ChangeInputMode(Ascii)", "ClearUnconfirmedInputs"]
  "L" = ["ForceKanaConvert(Katakana)", "ChangeInputMode(Zenkaku)", "ClearUnconfirmedInputs"]
  "C-q" = ["ForceKanaConvert(Hiragana)", "ChangeInputMode(HankakuKatakana)", "ClearUnconfirmedInputs"]
  "q" = ["ForceKanaConvert(Katakana)", "ChangeInputMode(Hiragana)", "ClearUnconfirmedInputs"]
  "Q" = ["ChangeCompositionMode(PreComposition)"]
  "C-j" = ["FinishKeyEvent"]
  "C-g" = ["Abort"]
  "C-G" = ["Abort"]
  "Return" = ["ConfirmDirect"]
  "C-m" = ["ConfirmDirect"]
  "BackSpace" = ["Delete"]
  "C-h" = ["Delete"]
  "C-H" = ["Delete"]
  "slash" = ["ChangeCompositionMode(Abbreviation)"]
  # 半角カナ(JIS X 0201 カナ)モード時のコマンド
  [direct.hankakukatakana]
  "l" = ["ForceKanaConvert(HankakuKatakana)", "ChangeInputMode(Ascii)", "ClearUnconfirmedInputs"]
  "L" = ["ForceKanaConvert(HankakuKatakana)", "ChangeInputMode(Zenkaku)", "ClearUnconfirmedInputs"]
  "C-q" = ["ForceKanaConvert(HankakuKatakana)", "ChangeInputMode(Katakana)", "ClearUnconfirmedInputs"]
  "q" = ["ForceKanaConvert(HankakuKatakana)", "ChangeInputMode(Hiragana)", "ClearUnconfirmedInputs"]
  "Q" = ["ChangeCompositionMode(PreComposition)"]
  "C-j" = ["FinishKeyEvent"]
  "C-g" = ["Abort"]
  "C-G" = ["Abort"]
  "Return" = ["ConfirmDirect"]
  "C-m" = ["ConfirmDirect"]
  "BackSpace" = ["Delete"]
  "C-h" = ["Delete"]
  "C-H" = ["Delete"]
  "slash" = ["ChangeCompositionMode(Abbreviation)"]
  # 全角英数モード時のコマンド
  [direct.zenkaku]
  "C-g" = ["Abort"]
  "C-j" = ["ChangeInputMode(Hiragana)"]
  "Return" = ["ConfirmDirect"]
  "C-m" = ["ConfirmDirect"]
  "BackSpace" = ["Delete"]
  "C-h" = ["Delete"]
  "C-H" = ["Delete"]
  # asciiモードという名称はddskk由来。いわゆるlatinモードでのコマンド
  [direct.ascii]
  "C-g" = ["Abort"]
  "C-j" = ["ChangeInputMode(Hiragana)"]
  "Return" = ["ConfirmDirect"]
  "C-m" = ["ConfirmDirect"]
  "BackSpace" = ["Delete"]
  "C-h" = ["Delete"]
  "C-H" = ["Delete"]
  
  [pre_composition.hiragana]
  "space" = ["TryNextCandidate"]
  "q" = ["ForceKanaConvert(Katakana)", "ConfirmAs(Katakana)", "ChangeCompositionMode(Direct)"]
  "Q" = ["FinishKeyEvent"]
  "C-q" = ["ConfirmAs(HankakuKatakana)", "ChangeCompositionMode(Direct)"]
  "C-g" = ["ClearUnconfirmedInputs", "ChangeCompositionMode(Direct)"]
  "C-j" = ["ForceKanaConvert(Hiragana)", "ConfirmAs(Hiragana)", "ChangeCompositionMode(Direct)"]
  "BackSpace" = ["Delete"]
  "C-h" = ["Delete"]
  "Tab" = ["TryNextCompletion"]
  [pre_composition.katakana]
  "space" = ["TryNextCandidate"]
  "q" = ["ForceKanaConvert(Hiragana)", "ConfirmAs(Hiragana)", "ChangeCompositionMode(Direct)"]
  "Q" = ["FinishKeyEvent"]
  "C-q" = ["ConfirmAs(HankakuKatakana)", "ChangeCompositionMode(Direct)"]
  "C-g" = ["ClearUnconfirmedInputs", "ChangeCompositionMode(Direct)"]
  "C-j" = ["ForceKanaConvert(Katakana)", "ConfirmAs(Katakana)", "ChangeCompositionMode(Direct)"]
  "BackSpace" = ["Delete"]
  "C-h" = ["Delete"]
  "Tab" = ["TryNextCompletion"]
  [pre_composition.hankakukatakana]
  "space" = ["TryNextCandidate"]
  "q" = ["ForceKanaConvert(Hiragana)", "ConfirmAs(Hiragana)", "ChangeCompositionMode(Direct)"]
  "Q" = ["FinishKeyEvent"]
  "C-q" = ["ConfirmAs(Katakana)", "ChangeCompositionMode(Direct)"]
  "C-g" = ["ClearUnconfirmedInputs", "ChangeCompositionMode(Direct)"]
  "C-j" = ["ForceKanaConvert(HankakuKatakana)", "ConfirmAs(HankakuKatakana)", "ChangeCompositionMode(Direct)"]
  "BackSpace" = ["Delete"]
  "C-h" = ["Delete"]
  "Tab" = ["TryNextCompletion"]
  
  [pre_compisition_okurigana.hiragana]
  "space" = ["TryNextCandidate"]
  "q" = ["ForceKanaConvert(Katakana)", "ConfirmAs(Katakana)", "ChangeCompositionMode(Direct)"]
  "Q" = ["FinishKeyEvent"]
  "C-q" = ["ConfirmAs(HankakuKatakana)", "ChangeCompositionMode(Direct)"]
  "C-g" = ["ClearUnconfirmedInputs", "ChangeCompositionMode(Direct)"]
  "C-j" = ["ForceKanaConvert(Hiragana)", "ConfirmAs(Hiragana)", "ChangeCompositionMode(Direct)"]
  "BackSpace" = ["Delete"]
  "C-h" = ["Delete"]
  [pre_compisition_okurigana.katakana]
  "space" = ["TryNextCandidate"]
  "q" = ["ForceKanaConvert(Hiragana)", "ConfirmAs(Hiragana)", "ChangeCompositionMode(Direct)"]
  "Q" = ["FinishKeyEvent"]
  "C-q" = ["ConfirmAs(HankakuKatakana)", "ChangeCompositionMode(Direct)"]
  "C-g" = ["ClearUnconfirmedInputs", "ChangeCompositionMode(Direct)"]
  "C-j" = ["ForceKanaConvert(Katakana)", "ConfirmAs(Katakana)", "ChangeCompositionMode(Direct)"]
  "BackSpace" = ["Delete"]
  "C-h" = ["Delete"]
  [pre_compisition_okurigana.hankakukatakana]
  "space" = ["TryNextCandidate"]
  "q" = ["ForceKanaConvert(Hiragana)", "ConfirmAs(Hiragana)", "ChangeCompositionMode(Direct)"]
  "Q" = ["FinishKeyEvent"]
  "C-q" = ["ConfirmAs(Katakana)", "ChangeCompositionMode(Direct)"]
  "C-g" = ["ClearUnconfirmedInputs", "ChangeCompositionMode(Direct)"]
  "C-j" = ["ForceKanaConvert(HankakuKatakana)", "ConfirmAs(HankakuKatakana)", "ChangeCompositionMode(Direct)"]
  "BackSpace" = ["Delete"]
  "C-h" = ["Delete"]
  
  [abbreviation.hiragana]
  "space" = ["TryNextCandidate"]
  "BackSpace" = ["Delete"]
  "C-h" = ["Delete"]
  "C-j" = ["ConfirmAs(Ascii)", "ChangeCompositionMode(Direct)"]
  "C-q" = ["ConfirmAs(Zenkaku)", "ChangeCompositionMode(Direct)"]
  "Tab" = ["TryNextCompletion"]
  [abbreviation.katakana]
  "space" = ["TryNextCandidate"]
  "BackSpace" = ["Delete"]
  "C-h" = ["Delete"]
  "C-j" = ["ConfirmAs(Ascii)", "ChangeCompositionMode(Direct)"]
  "C-q" = ["ConfirmAs(Zenkaku)", "ChangeCompositionMode(Direct)"]
  "Tab" = ["TryNextCompletion"]
  [abbreviation.hankakukatakana]
  "space" = ["TryNextCandidate"]
  "BackSpace" = ["Delete"]
  "C-h" = ["Delete"]
  "C-j" = ["ConfirmAs(Ascii)", "ChangeCompositionMode(Direct)"]
  "C-q" = ["ConfirmAs(Zenkaku)", "ChangeCompositionMode(Direct)"]
  "Tab" = ["TryNextCompletion"]
  
  [composition_selection.hiragana]
  "Return" = ["ConfirmComposition", "ChangeCompositionMode(Direct)"]
  "C-j" = ["ConfirmComposition", "ChangeCompositionMode(Direct)"]
  "Escape" = ["Abort"]
  "C-g" = ["Abort"]
  "X" = ["Purge", "ChangeCompositionMode(Direct)"]
  "space" = ["TryNextCandidate"]
  "x" = ["TryPreviousCandidate"]
  "BackSpace" = ["ConfirmComposition", "ChangeCompositionMode(Direct)", "Delete"]
  "C-h" = ["ConfirmComposition", "ChangeCompositionMode(Direct)", "Delete"]
  "q" = ["ConfirmComposition", "ChangeCompositionMode(Direct)", "ChangeInputMode(Katakana)"]
  "C-q" = ["ConfirmComposition", "ChangeCompositionMode(Direct)", "ChangeInputMode(HankakuKatakana)"]
  [composition_selection.katakana]
  "Return" = ["ConfirmComposition", "ChangeCompositionMode(Direct)"]
  "C-j" = ["ConfirmComposition", "ChangeCompositionMode(Direct)"]
  "Escape" = ["Abort"]
  "C-g" = ["Abort"]
  "X" = ["Purge", "ChangeCompositionMode(Direct)"]
  "space" = ["TryNextCandidate"]
  "x" = ["TryPreviousCandidate"]
  "BackSpace" = ["ConfirmComposition", "ChangeCompositionMode(Direct)", "Delete"]
  "C-h" = ["ConfirmComposition", "ChangeCompositionMode(Direct)", "Delete"]
  "q" = ["ConfirmComposition", "ChangeCompositionMode(Direct)", "ChangeInputMode(Hiragana)"]
  "C-q" = ["ConfirmComposition", "ChangeCompositionMode(Direct)", "ChangeInputMode(HankakuKatakana)"]
  [composition_selection.hankakukatakana]
  "Return" = ["ConfirmComposition", "ChangeCompositionMode(Direct)"]
  "C-j" = ["ConfirmComposition", "ChangeCompositionMode(Direct)"]
  "Escape" = ["Abort"]
  "C-g" = ["Abort"]
  "X" = ["Purge", "ChangeCompositionMode(Direct)"]
  "space" = ["TryNextCandidate"]
  "x" = ["TryPreviousCandidate"]
  "BackSpace" = ["ConfirmComposition", "ChangeCompositionMode(Direct)", "Delete"]
  "C-h" = ["ConfirmComposition", "ChangeCompositionMode(Direct)", "Delete"]
  "q" = ["ConfirmComposition", "ChangeCompositionMode(Direct)", "ChangeInputMode(Hiragana)"]
  "C-q" = ["ConfirmComposition", "ChangeCompositionMode(Direct)", "ChangeInputMode(Katakana)"]
  
  [completion.hiragana]
  "Return" = ["ConfirmComposition", "ChangeCompositionMode(Direct)"]
  "C-j" = ["ConfirmComposition", "ChangeCompositionMode(Direct)"]
  "Tab" = ["NextCandidatePointer"]
  "period" = ["NextCandidatePointer"]
  "(shift Tab)" = ["PreviousCandidatePointer"]
  "comma" = ["PreviousCandidatePointer"]
  "C-g" = ["Abort"]
  "Escape" = ["Abort"]
  "BackSpace" = ["ConfirmComposition", "ChangeCompositionMode(Direct)", "Delete"]
  [completion.katakana]
  "Return" = ["ConfirmComposition", "ChangeCompositionMode(Direct)"]
  "C-j" = ["ConfirmComposition", "ChangeCompositionMode(Direct)"]
  "Tab" = ["NextCandidatePointer"]
  "period" = ["NextCandidatePointer"]
  "(shift Tab)" = ["PreviousCandidatePointer"]
  "comma" = ["PreviousCandidatePointer"]
  "C-g" = ["Abort"]
  "Escape" = ["Abort"]
  "BackSpace" = ["ConfirmComposition", "ChangeCompositionMode(Direct)", "Delete"]
  [completion.hankakukatakana]
  "Return" = ["ConfirmComposition", "ChangeCompositionMode(Direct)"]
  "C-j" = ["ConfirmComposition", "ChangeCompositionMode(Direct)"]
  "Tab" = ["NextCandidatePointer"]
  "period" = ["NextCandidatePointer"]
  "(shift Tab)" = ["PreviousCandidatePointer"]
  "comma" = ["PreviousCandidatePointer"]
  "C-g" = ["Abort"]
  "Escape" = ["Abort"]
  "BackSpace" = ["ConfirmComposition", "ChangeCompositionMode(Direct)", "Delete"]