Skip to content

feat: 英語入力への切り替えショートカットを追加 (#313)#315

Open
nyanko3141592 wants to merge 6 commits intomainfrom
claude/zealous-hugle-b003f7
Open

feat: 英語入力への切り替えショートカットを追加 (#313)#315
nyanko3141592 wants to merge 6 commits intomainfrom
claude/zealous-hugle-b003f7

Conversation

@nyanko3141592
Copy link
Copy Markdown
Collaborator

@nyanko3141592 nyanko3141592 commented Apr 18, 2026

Summary

  • azooKey日本語モード中に Ctrl+Shift+; で azooKey英語モードに切り替えられるようにした
  • 日本語モードへの切り替え Ctrl+Shift+J(macOSがsmJapanese scriptに自動割り当て)と対になるショートカット
  • キー割り当ては Google日本語入力に揃えた

Closes #313

実装の経緯

最初は Info.plistcom.apple.inputmethod.RomantsInputModeKeyEquivalentModifiersKey / tsInputModeKeyEquivalentKey を追加する方針で試したが、実機で動作しないことを確認した。原因はmacOSの仕様で、smJapanese scriptのプライマリIMEには Ctrl+Shift+J が自動割り当てされる一方、smRoman scriptには同様の自動割り当てがないため、Info.plistでショートカットを宣言してもOSに拾われない。

そこで azooKeyMacInputController.handle(_:client:) 内で直接ショートカットをキャッチする方針に変更した。Info.plistの実験的な変更は結局効果がなかったため最終的に差し戻している(コミット履歴には残っている)。

変更内容

  • azooKeyMac/InputController/azooKeyMacInputController.swift: handle() の早い段階で keyCode 41; キーの物理位置)+ Ctrl+Shift を検出し、switchInputLanguage(.english) を呼ぶ処理を追加。変換中のマークドテキストがある場合は確定してから切り替える

挙動

状態 挙動
azooKey日本語モード / 何も入力していない azooKey英語モードに切り替わる
azooKey日本語モード / 変換中 マークドテキストを確定してから英語モードに切り替わる
azooKey英語モード 何もしない(すでに英語なので無視)
OS標準英語モード等 azooKey非アクティブ時 azooKeyは介入しない

keyCodeベースで判定しているため、JIS/ANSIいずれのキーボードでも物理キー位置(USでの ; 位置)で動作する。

Test plan

  • azooKey日本語モードで Ctrl+Shift+; を押して英語モードに切り替わることをローカル実機で確認
  • 既存の Ctrl+Shift+J による日本語モード復帰動作に影響がないことを確認
  • 変換中に Ctrl+Shift+; を押した場合、マークドテキストが確定されて英語モードに切り替わることを確認

Naoki Takahashi and others added 4 commits April 18, 2026 14:59
Info.plistのcom.apple.inputmethod.RomanにtsInputModeKeyEquivalentModifiersKey
/Keyを追加し、Google日本語入力と同じCtrl+Shift+;で英語入力に切り替えられる
ようにする。日本語モード側のCtrl+Shift+Jと対になるショートカット。

Closes #313

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
日本語モードのtsInputModeKeyEquivalentKeyが"J"(shift+jの結果)であるのに
合わせて、英語モードも";"から":"(shift+;の結果)に修正。

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
macOSのsmJapanese scriptにはCtrl+Shift+Jが自動割り当てされているが、
smRoman scriptには同様の自動割り当てがないため、Info.plistでの
tsInputModeKeyEquivalent設定だけでは英語モードへの切り替えが効かない。

azooKeyMacInputController.handle(_:client:)内でkeyCode 41(; キー)と
Ctrl+Shiftの組み合わせを検出し、明示的にswitchInputLanguage(.english)を
呼び出す形で対処する。JIS/ANSIキーボードいずれでも物理キー位置で動作する。

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
smRoman scriptには macOS 側にショートカット自動割り当ての仕組みが
なく、Info.plistで宣言してもショートカットが有効にならないことを
実機で確認したため削除する。英語モードへの切り替えは
azooKeyMacInputController.handle(_:client:) 内の自前実装で行う。

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@nyanko3141592 nyanko3141592 changed the title feat: 英語入力モードへの切り替えショートカット(Ctrl+Shift+;)を追加 feat: 英語入力への切り替えショートカットを追加 (#313) Apr 18, 2026
@amatsus
Copy link
Copy Markdown
Contributor

amatsus commented Apr 18, 2026

私はUS配列なので Ctrl+Shift+' ですが、Info.plistに下記を追加して動作しています。

 <key>tsInputModeJISKeyboardShortcutKey</key>
 <integer>3</integer>
 <key>tsInputModeKeyEquivalentKey</key>
 <string>'</string>
 <key>tsInputModeKeyEquivalentModifiersKey</key>
 <integer>4608</integer>

@ensan-hcl
Copy link
Copy Markdown
Member

これUS配列とJIS配列で違うんですか?
image

@amatsus
Copy link
Copy Markdown
Contributor

amatsus commented Apr 18, 2026

すみません。US配列でも Ctrl+Shift+; でした。キー配列の違いでこのショートカットは変えられませんよね。

なぜ Ctrl+Shift+' にしたのか、自分なりに根拠があったように思うのですが、ちょっと思い出せません。
勘違いしてすみません。

image

@ensan-hcl
Copy link
Copy Markdown
Member

@amatsus なるほど、理解です!とはいえ、実装方法はinfo.plistを変更するほうが妥当だと思うので、そっちにしたいです。 @nyanko3141592

@amatsus
Copy link
Copy Markdown
Contributor

amatsus commented Apr 19, 2026

tsInputModeJISKeyboardShortcutKey の値は

Mode value
(英数の)全角/半角トグル 0
ひらがな 1
カタカナ 2
英数 3

ですかね。
ショートカットキー割り当てを明示したい(固定したい)ときは tsInputModeKeyEquivalentKeytsInputModeKeyEquivalentModifiersKey を記述する、と。

Naoki Takahashi and others added 2 commits April 20, 2026 01:10
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

feat: 英語入力への切り替えショートカットを追加してほしい

3 participants