結城浩の一言
日本語入力のモード切替がいまひとつしっくりこないのでKarabinar-Elementsでいろいろ実験をしているところです。 もしかしたらCTRL+GはESC+英数キーの方がVim的にはうれしいかもしれません。
以下の文章は Claude が作成したものです。
日本語入力をサポートするためのKarabiner-Elementsのルール(実験中) by Claude
作成した2つのKarabiner-Elementsルールについて記録します。
ルール1: 日本語モードでCtrl+G → 英数切り替え
日本語入力モードでCtrl+Gを押すと英数キーを送信するルールです。
{
"description": "日本語モードでCTRL+Gを押すと英数キーを送る",
"manipulators": [
{
"conditions": [
{
"input_sources": [{ "language": "ja" }],
"type": "input_source_if"
}
],
"from": {
"key_code": "g",
"modifiers": { "mandatory": ["left_control"] }
},
"to": [{ "key_code": "japanese_eisuu" }],
"type": "basic"
}
]
}
動作
- 条件: 日本語入力モード(
"language": "ja"
) - 入力: 左Ctrl + G
- 出力: 英数キー(
japanese_eisuu
) - 用途: 日本語入力中に素早く英数モードに切り替えます
ルール2: Ctrl+J による入力モード切り替え(ディレイ付き)
入力モードに応じてCtrl+Jで切り替えを行う、より複雑なルールです。
{
"description": "日本語モードでCTRL+Jを打つと英数キーとかなキーを送る(ディレイあり)。英数の場合はかなキーを送る",
"manipulators": [
{
"conditions": [
{
"input_sources": [{ "language": "ja" }],
"type": "input_source_if"
}
],
"from": {
"key_code": "j",
"modifiers": { "mandatory": ["left_control"] }
},
"parameters": { "basic.to_delayed_action_delay_milliseconds": 100 },
"to": [{ "key_code": "japanese_eisuu" }],
"to_delayed_action": { "to_if_invoked": [{ "key_code": "japanese_kana" }] },
"type": "basic"
},
{
"conditions": [
{
"input_sources": [{ "language": "en" }],
"type": "input_source_if"
}
],
"from": {
"key_code": "j",
"modifiers": { "mandatory": ["left_control"] }
},
"parameters": { "basic.to_delayed_action_delay_milliseconds": 100 },
"to": [{ "key_code": "japanese_kana" }],
"type": "basic"
}
]
}
動作
日本語モードの場合
- 即座に: 英数キー(
japanese_eisuu
)を送信します - 100ms後: かなキー(
japanese_kana
)を送信します(遅延アクション) - 結果: 一時的に英数モードになった後、かなモードに戻ります
英数モードの場合
- 即座に: かなキー(
japanese_kana
)を送信します - 結果: 日本語入力モードに切り替わります
特徴
- ディレイ機能:
basic.to_delayed_action_delay_milliseconds: 100
で100ms後の追加アクションを設定しています - 言語判定: 現在の入力ソース言語(ja/en)によって動作を分岐させています
- トグル動作: 日本語⇔英数の切り替えが可能です
使い分け
- Ctrl+G: 日本語→英数への一方向切り替え(シンプル)
- Ctrl+J: 現在の入力モードに応じた柔軟な切り替え(ディレイ付き)
解説:ルール2の遅延アクションの意味
ルール2で日本語モード時に遅延アクションを使って一瞬英数モードに切り替える仕組みには、重要な意味があります。これは日本語入力で確定を待っている文字列を一旦確定させるという目的があります。
日本語入力中に未確定の文字列(変換候補が表示されている状態など)がある場合、英数キーを送信することでその未確定文字列が強制的に確定されます。その後100ms後にかなキーを送信することで、日本語入力モードに戻りつつ、確定処理を確実に行うことができます。
この仕組みにより、日本語入力の状態をリセットしながら継続的に日本語入力を行うことが可能になります。
関連リンク
スクリーンショット(このメモを作成するときのClaudeとの会話)
(2025年7月7日)