rcmdnk's blog

20250105_microsoft365_200_200

AutoHotkeyを使ってショートカットキーを作ってるときに良くわからない挙動があって 結局簡単には解決出来なそうだったという話。

Ctrl-Alt-Shift-Win

XユーザーのPaul Thurrottさん: 「I got this on Mastodon but worth repeating… Fun fact about Microsoft Windows: if you type Ctrl-Shift-Alt-Win-L, LinkedIn will open in your default browser. This is an OS hotkey that cannot be turned off. I know this reads like a joke but it isn’t.」 / X

How do I disable specific windows 10/Office Keyboard Shortcut (CTRL+SHIFT+WIN+ALT+D) - Super User

Disabling the Office hotkey in Windows 10 - Microsoft Community

これまでなんとなくそれっぽい動作を起こして何が起こってるか(何を押してそうなってるか)よくわからなかったことで今更知ったのですが、 Windows(手元のWindowsはWindows 11)上で Ctrl-Alt-Shift-Winを全て同時に押して離すと Microsoft 365のアプリが起動します。

さらに Ctrl-Alt-Shift-Winと同時にWを押すとWord, Eを押すとExcel, Pを押すとPowerPointが起動します。 さらにはLを同時に押すとブラウザでLinkedInが開きます。

通常は押さないことがほとんどだと思うので無視しておけば良いものではありますが、 無効化しようと思っても簡単に出来ません。

このショートカットの機能を無効にする、ということであれば現状はRegistryをいじるしかないようです。

Disabling the Office hotkey in Windows 10 - Microsoft Community

Windows謹製のPowerToysに入っているPowerToysKeyboard Manager を使って変更しようとしても、修飾キーだけだとアクションキーが1つ含める必要がありますと言われて変更できません。

Ctrl-Alt-Shift-Win-LとかはDisableすることは出来ます。

ただ、AutoHotkeyを使えばこれらのキーを潰すことは出来ます。

How do I disable specific windows 10/Office Keyboard Shortcut (CTRL+SHIFT+WIN+ALT+D) - Super User

AHK hot keys conflict with Windows 10 default shortcuts - AutoHotkey Community

1
2
3
4
5
6
7
8
9
10
11
12
#^!+w::
#^!+x::
#^!+p::
#^!+l::
#^!Shift::
#^+Alt::
#!+Ctrl::
^!+LWin::
^!+RWin::
{
  Send {Blind}{vk07}
}

のような設定で4つ同時押しで話した場合や、Wなどを同時に押す場合など全て無効にすることが出来ます。({vk07}は何もしないキー, Blindは修飾キーを押したままにする)

Windowsキーは単体で押して離すとスタートメニューが開いたりするので AutoHotkeyでキーマップするときとかでも入力側で使うことは無く 4つ同時押し、というキーマップは無いので今まできちんと気づきませんでした。

ただ、時々Microsoft 365のアプリが起動することはあって、なんなんだと思っていたところで上のショートカットが関係していました。

AutoHotkeyで入力と出力の修飾キー

1
2
^!+y::SendInput "#^{Left}"
^!+o::SendInput "#^{Right}"

こんな感じの設定を考えます。

Win-Ctrl-Leftは左の仮想デスクトップに移動するショートカットです。

が、これを設定していざ、Ctrl-Alt-Shift-Yを押すと 左の仮想デスクトップに移動することは出来ますが、 同時にMicrosoft 365のアプリが起動してしまいます。

どうやら修飾キーが押された状態が保持されていて、かつなぜかYは無視された状態になって(?) マップされたWin-Ctrl-Left が実行されると同時に、 Ctrl-Alt-Shift-Winを全て押した状態にもなって さらにAHKでのキーの出力がおさると同時に実際にはキーを離していなくても全てを離した状態と解釈され(?) Microsoft 365のアプリが起動してしまう、ということのようです。

入力と出力のキーがconflictするような状態は通常はないはずで、 そのために上にもある{Blind}と言う機能があり、 これが無効の場合には入力として押された修飾キーは解放された状態で出力のキーが実行されるはずです。

ですが、何故かこの場合は解放されないようです。

仕方がないので、明示的に解放してあげるとMicrosoft 365のアプリが起動しなくなります。

1
2
^!+y::SendInput "{Alt up}{Shift up}#^{Left}"
^!+o::SendInput "{Alt up}{Shift up}#^{Right}"

この設定で上手くいくことに気づく前にWindows側で簡単にこのキー無効に出来ないかな、と思って調べたのが上の結果ですが、 Windows側で無効にするのはRegistryをいじるしかなさそうなのでなんとかAHKだけでということでこの様な形で上手くいきました。

Sponsored Links
Sponsored Links

« WindowsとMacそれぞれでアプリをトグル表示する

}