Windows 10で仮想デスクトップを切り替えるための小さなAutoHotKeyスクリプトを作成しました。このコードを作成したのは、Windows 10のデフォルトのショートカット(WIN + CTRL + LEFT/RIGHT)を使用する代わりに、独自のカスタムキーボードショートカットでデスクトップを切り替えることができるようにするためです。
コード:
#LAlt::^#Right ; switch to next desktop with Windows key + Left Alt key
#LCtrl::^#Left ; switch to next desktop with Windows key + Left CTRL key
このコードは機能しますが、キーを押す前に現在のデスクトップ上のウィンドウまたは何かをクリックした場合のみです。デスクトップを切り替える前にクリック機能を使用してクリックをシミュレートしようとしましたが(機能しました)、クリックした座標にマウスが移動しました。これは明らかに私が望むものではありません。 ControlClickを少しいじってみましたが、うまくいきませんでした。
だから私の質問はこれです:デスクトップを切り替えるコマンドを実行する前に、現在のデスクトップにフォーカスを設定する方法はありますか?または、デフォルトのWin 10ショートカットをシミュレートせずにデスクトップを切り替えることができる別の方法はありますか?
ありがとう!
編集1
私が気づいたことの1つは、タスクバーをクリックすると、 LWin+LAlt/LCtrl、押し続けることでスムーズに切り替えができます LWin そして交互に LAlt そして LCtrl。
タスクバーをクリックしてから LWin+LAlt、これはKeyHistoryが吐き出すものです:
VK SC Type Up/Dn Elapsed Key Window
----------------------------------------------
5B 15B d 1.91 LWin
A4 038 h d 0.31 LAlt
A2 01D i d 0.00 LControl
A2 01D i u 0.00 LControl
A4 038 i u 0.00 LAlt
A2 01D i d 0.05 LControl
5B 15B i d 0.02 LWin
27 14D i d 0.02 Right
27 14D i u 0.00 Right
A2 01D i u 0.01 LControl
5B 15B i u 0.02 LWin
A2 01D i d 0.01 LControl
5B 15B i d 0.00 LWin
A2 01D i u 0.00 LControl
A4 038 s u 0.00 LAlt
5B 15B u 0.06 LWin
A2 01D i d 0.00 LControl
A2 01D i u 0.00 LControl
(This is what I want it to do without clicking the taskbar)
しかし、私がちょうどヒットしたとき LWin+LAlt、KeyHistoryは、キーイベントが「RightUp」イベントの後に停止することを示しています。
VK SC Type Up/Dn Elapsed Key Window
----------------------------------------------
5B 15B d 1.91 LWin
A4 038 h d 0.31 LAlt
A2 01D i d 0.00 LControl
A2 01D i u 0.00 LControl
A4 038 i u 0.00 LAlt
A2 01D i d 0.05 LControl
5B 15B i d 0.02 LWin
27 14D i d 0.02 Right
27 14D i u 0.00 Right
(There should be more after this)
LControl Upイベントが発生することはなく、すべてが台無しになっているようです。
場合によっては、修飾キー(win/ctrl/alt)を送信しようとしていて、トリガー文字列にも修飾キーがある場合、トリガーキーが解放されるのを待つ必要があります。そうしないと、置換文字列に影響を及ぼします。
これを実現するには、KeyWait
を使用してみてください。ホットキー構文とホットストリングを使用していることに注意してください
#LAlt:: ; switch to next desktop with Windows key + Left Alt key
KeyWait LAlt
SendInput #^{Right}
Return
#LCtrl:: ; switch to previous desktop with Windows key + Left CTRL key
KeyWait LCtrl
SendInput #^{Left}
Return
デスクトップを切り替える目的で、上記は私のために働いた。
また、このアプローチでも機能しない場合もあり、別の解決策が考えられます。これらのようなキー待機の代わりに...
KeyWait LAlt
KeyWait LCtrl
...これらのキーストロークの対応するものに置き換えて、キーの状態をクリアします。
Send,{LAlt Down}{LAlt Up}
Send,{LCtrl Down}{LCtrl Up}
私はどこかにポイントを逃していない限り、Windows + ctrl + ← / → 矢印スイッチデスクトップ?少なくともそれは私のものです。