#あらすじ
いままで、Macで英語キーボードを使用していた。
その時はKarabinerで、左コマンドキーが英数(IMEオフ)、右コマンドキーがかな(IMEオン)になるように設定していた。
現在Windows 10のコンピューターで、英語キーボードを使用している。
レジストリを変更して、Mac環境に近い操作ができるようにカスタマイズした。
\ | Command | Option | Control | |
---|---|---|---|---|
Windows USキーボード 左手側 | Alt | Windows | Ctrl -> Windows | |
Windows USキーボード 右手側 | Alt | Appkey | Ctrlはそのまま |
(右手側の最下段は、ALt - Fn - App - Ctrl と並んでいるタイプのキーボードです。)
IMEのオンオフをKarabinerで設定していたようにするために、AutoHotkeyを使うことにした。
本文
Alt-IME-AHKを参考にして、以下のようにプログラムを書いた。
上記ページのソースコードからIME.ahkというライブラリの簡易版をコピーしたものをIncludeしている。
AutoHotkey
1#InstallKeybdHook 2#UseHook 3#NoEnv 4#KeyHistory 5#Include IME.ahk 6SendMode Input 7 8~LCtrl up:: 9 IME_SET(0) 10 return 11 12~RCtrl up:: 13 IME_SET(1) 14 return 15
問題なく動作はする。
しかし、右CtrlでIMEをオン -> 左Ctrl+Aというような操作をするときに、左CtrlのKey up時に、IMEがオフになってしまう。
不便である。
#やりたいこと
右CtrlでIMEをオン -> 左Ctrl+A
という操作をするときに、
- 左Ctrl押し、その次にキーボードの文字列(a-z,0-9,セミコロンとかの記号など)が入力されると、IMEをオフはしない
- 左Ctrl押し、離すだけの場合、IMEをオンにする
(左右逆も然り)
という振り分ける処理をさせたい。
試したこと
AHK
1;GetKeyState(A) - Aを押したときに、True (a-z0-9)みたいな指定をしたい。 2;A_PriorKeyっていう組み込み変数はこういうときにつかえる? 3 4~LCtrl up:: ;LCtrl up時に発動 5 if(GetKeyState(A) == 0){ ;Aを押していないときにFalse 6 IME_SET(0) 7 return 8 }
みたいなことを試したりしましたが、Trueにならず。
あなたの回答
tips
プレビュー