[ShareMouse] Macでも変換無変換(かな英数)キーで入力ソースを切り替えられるようにする(未解決)
左のモニターにWindows, 右のモニターにMacの画面を表示している。
今まではLogicool Flowを使用して、一つのキーボード・マウスでその2画面を行き来し、クリップボードも共有できるようにしていた。
しかし、Logicool Flowだとそれに対応しているLogicool製品しか使えない。
他のキーボードやマウスも使ってみたいので、他の方法を試してみることに。
BarrierやInput Leapよりも導入が簡単そうだったShareMouseを試してみた。
導入にあたっては、こちらの記事がとても参考になりました。
結果としては、クリップボードの共有も使えて、快適だった。
私の場合は、Windows機にマウスとキーボードをつないでいる。
Macの方のShareMouseのKeys設定で、CTRL -> Command, ALT -> Option, WIN -> Controlに設定して快適に使えている(今まではKanabiner-Elementsを使ってMacのキー配列を変えていたが、ShareMouse使用中は、今回Windows機にマウス・キーボードをつないでいるため、Kanabiner-Elementsの設定は適用されない模様)。
ちなみに、Windowsの方ではCaps LockをCtrlキーとして使用しているが、問題なく使えている。
Caps LockキーをCtrlキーにする方法は以下の記事を参考にしています。
ただ問題として、かな英数キーが使えない。
正確にいうと、Windows機で認識された無変換キー, 変換キーのデータが、Macの方で都合よく英数, かなキーとは認識されないっぽい。
私にとって、かな英数キーで入力を切り替えられるのはかなり便利で、WindowsのGoogle日本語入力でもそのキー(変換無変換キー)で入力を切り替えられるようにしているほどだ。
Windowsでの設定方法については以下の記事を参考にしています。
これが使えないのはかなり不便なので、解決策を考える。
こちらのユーザーガイドによると、英字に切り替えるのはControl+Shift+セミコロン(;)、ひらがなに切り替えるのはControl+Shift+Jキーというショートカットキーがあるとのこと。
変換無変換キーでこのショートカットを呼び出せばいいのではと考え、WindowsのPowerToysでKeyboard Managerを使った。
Keyboard Managerのキーの再マップで、無変換キー(IME Non-Convert)にWin (Left), Shift (Left), ;を登録し、変換キー(IME Convert)にWin (Left), Shift (Left), Jを登録。
なお、ここでWinキーになっているのは、上記に記載した通り、MacでWinキーをControlキーに置き換えているため。
これによりMacで変換無変換キーにより入力ソースを切り替えるようになった。
ただこれではWindowsで同様に切り替えることはできない。
Google日本語入力にこのショートカットキーを登録することも考えたが、WinキーやAltキー, 文字キーを含むショートカットキーは登録できないっぽい。
そのため、再びPowerToysのKeyboard Managerでこのキーボードショートカットキーで変換無変換キーを呼び出すようにする。
Keyboard Managerのショートカットの再マップで、Win (Left), Shift (Left), JをIME Convertに、Win (Left), Shift (Left), ;をIME Non-Convertに設定。
これで、ShareMouse使用中でも、Windows, Mac両方で変換無変換キーによる入力ソースの切り替えができるようになった。
PowerToys設定↓
と思ったら、しばらくしてmacで入力ソースの切り替えができなくなった。
PowerToysでのキーの再マップの設定がMacでは適用されなくなったっぽい。
(例えば、1キーにShift+JをPowerToysで設定しても、Macでは1になる)
PowerToysのアップデートの影響なのか?
調査中…
一旦、MacではControl+Space(私の場合はWinキー+Space)で対応。
PowerToysで、DキーをFキーに設定したところ、これはMacでも機能した。
同様に、DキーをShift+Fキーに設定してもMacで機能した。
1キーにWin+Shift+Jを割り当てたところ、これもMacで機能した。
って使っていると、変換無変換キーでの入力切り替えがMacでできるように戻った。
ちょっとよくわからないので、経過をしばらく見てみる。
メモ:もしかしたら、ShareMouseの無料版→Standard版→Pro版と切り替えたので、Standard版のときには機能しなかったとか?(この可能性を考えPro版にしてみて直らなかったと思ったが、MacにPro版が適用されるまで時間がかかったからだったとか?)
WindowsとMac両方再起動してもちゃんと機能した。これはいけたか!?
Windowsはシャットダウン、Macはスリープにして次の日になった。
起動後、Mac側でキーボードがUS配列扱いされる問題が起こったが、マウスとキーボードをつなぎ直すとこの問題は解決。
しかし、再びMac側で変換無変換キーでの入力切り替えがMacでできなくなる。
前と同様、PowerToysでDキーをFキーに設定してみたが、これもMacで適用されなかった。
結局PowerToysでのキー設定がMacで適用されない問題のようだ。
ShareMouseとPowerToysが変に干渉しているため起こる問題なのか?
なお、PowerToysのキーの再マップとショートカットの再マップが干渉している可能性を考え、ショートカットの再マップはIME Convert, IME Non-Convertとなっていたものを、それぞれIME On, IME Offに変更している。
調査中…
PowerToysではなく、AutoHotkeyを使ってみることに。
使い方は以下の記事を参考にしました。
スクリプトは以下のようにした。
(AutoHotkeyのv2での記法がよくわからなかったので、ChatGPTに書いてもらった)
#Requires AutoHotkey v2.0
; 無変換キーに Win+Shift+; を割り当て
vk1D::Send("{LWin down}{Shift down}{; down}{; up}{Shift up}{LWin up}")
; 変換キーに Win+Shift+j を割り当て
vk1C::Send("{LWin down}{Shift down}j{Shift up}{LWin up}")
PowerToysのキーの再マップ設定を削除した上でこのAutoHotkeyのスクリプトを有効にしてみた。
Windowsではちゃんとこのスクリプトが機能した。
しかし、Macでは機能しなかった。
これらを踏まえると、ShareMouseでは、実際に繋いでいるPCとは違うPCで操作する際、PowerToysやAutoHotkeyなどのソフト上でのキーではなく物理キーの方が優先される場合があるようだ。
メモ:参考になるかもしれないフォーラム
機能するときもあったので、はっきりと理由はわからない。
実は、Logicool FlowをやめてShareMouseにしようと思ったのは、自作キーボードを作って使ってみたかったからなので、自作キーボードを作って、入力ソース切り替え用のキーを作ってそこにショートカットを登録した場合どうなるか試してみたい。