🚀

第5回:濁音・半濁音・小文字・記号の処理 AutHotkeyV2

に公開

🧩 はじめに

2タッチ入力方式では、基本的なひらがな入力に加えて、濁音・半濁音・小文字・記号などの特殊な文字処理が必要になります。本記事では、それらをAutoHotkey v2でどのように実装しているかを詳しく解説します。

🧠 処理対象の分類

特殊文字処理は以下の4つに分類されます:

  1. 濁音化(例:か → が)
  2. 半濁音化(例:は → ぱ)
  3. 小文字変換(例:つ → っ)
  4. 記号・数字の直接入力(例:- → 11

🔧 実装例:濁音・半濁音の変換

濁音マッピング

dakutenMap := Map(
  "ka", "ga", "ki", "gi", "ku", "gu", "ke", "ge", "ko", "go",
  "sa", "za", "si", "zi", "su", "zu", "se", "ze", "so", "zo",
  "ta", "da", "ti", "di", "tu", "du", "te", "de", "to", "do",
  "ha", "ba", "hi", "bi", "hu", "bu", "he", "be", "ho", "bo"
)

半濁音マッピング

handakutenMap := Map(
  "ha", "pa", "hi", "pi", "hu", "pu", "he", "pe", "ho", "po"
)
変換処理の例
if (lastOutputRomaji != "" && dakutenMap.Has(lastOutputRomaji)) {
  convertedRomaji := dakutenMap[lastOutputRomaji]
  Send("{Backspace}")
  Send(convertedRomaji)
}

🔠 小文字変換の処理
小文字マッピング

smallKanaMap := Map(
  "a", "xa", "i", "xi", "u", "xu", "e", "xe", "o", "xo",
  "tu", "xtu", "ya", "xya", "yu", "xyu", "yo", "xyo",
  "wa", "xwa", "ka", "xka", "ke", "xke"
)

実装例

if (lastOutputRomaji != "" && smallKanaMap.Has(lastOutputRomaji)) {
  convertedRomaji := smallKanaMap[lastOutput]
  Send("{Backspace}")
  Send(convertedRomaji)
}

🔣 記号・数字の直接入力
特殊キーの組み合わせ

specialTwoTouchMap := Map(
  "61", "!", "62", "?", "28", "[", "24", "]",
  "-1", "1", "-2", "2", "-3", "3", ...
)

実装例

if (lastPressedKeyCode = "-") {
  specialKey := "-" . currentNum
  if (specialTwoTouchMap.Has(specialKey)) {
    Send(specialTwoTouchMap[specialKey])
  }
}

🛠 実装上の工夫
• 直前の出力に対する変換:濁音・小文字は lastOutputRomaji を参照
• Backspaceによる置換:変換前の文字を削除して新しい文字を挿入
• NumLockの状態に依存しないキー処理


🖼 実行例
• 8 → 1 → 濁音キー → 出力:ga
• 4 → 3 → 小文字キー → 出力:っ
• - → 2 → 出力:2


✅ まとめ

今回は、2タッチ入力方式における濁音・半濁音・小文字・記号の処理について解説しました。次回は、誤変換時の対応やNumLock制御など、入力モードの切り替えと通常キーとの共存設計について紹介します。

📥 SNS

🔗 GitHubリポジトリ
https://github.com/chiquwa/2touch-ime

🔗 Zenn記事一覧
https://zenn.dev/chiquwagohan

🔗 Note記事一覧
https://note.com/search?context=note&q=from%3A%40chiquwa&size=10

EXEファイルの購入
https://note.com/chiquwa/n/n59973d490326

https://www.youtube.com/watch?v=7_C7cDYGKiA

Discussion