🚀
第5回:濁音・半濁音・小文字・記号の処理 AutHotkeyV2
🧩 はじめに
2タッチ入力方式では、基本的なひらがな入力に加えて、濁音・半濁音・小文字・記号などの特殊な文字処理が必要になります。本記事では、それらをAutoHotkey v2でどのように実装しているかを詳しく解説します。
🧠 処理対象の分類
特殊文字処理は以下の4つに分類されます:
- 濁音化(例:か → が)
- 半濁音化(例:は → ぱ)
- 小文字変換(例:つ → っ)
-
記号・数字の直接入力(例:
- → 1
で1
)
🔧 実装例:濁音・半濁音の変換
濁音マッピング
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リポジトリ
🔗 Zenn記事一覧
🔗 Note記事一覧
EXEファイルの購入
Discussion