AutoHotKeyで右クリック禁止!F1キーも禁止!何もかも禁止!
本記事はAutoHotKey回です。前回はWindows上にMacOSのようなEmacsライクキーバインドを実装する方法を解説しました。
AutoHotKeyは特定の組み合わせのキーを、全く別なキーに変換することができます。単に入れ替えるだけでなく、そのキーが全く使えないように無効化することもできます。 入力したくないキーを引きちぎっても良いんですけど、AutoHotKeyでスマート(?)に解決しましょう
ことの発端はWindowsのF1キーがあまりにも廃棄物過ぎたので、どうにか無効化しようと思い立ったからです。 F1だけじゃなくてCapsLockも潰したい、Insも潰したい……。なんなら ascii code0x20~0x7Eの範囲しか入力できないようにしてみるか……。
と、調子に乗ってストイックすぎるキーボードを作ってみることにしました
要件は以下です
- F1キーを引きちぎりたい
- 右クリックを禁止したい
- Ctrl + zみたいなショートカットキーを禁止したい
- ネットサーフィンぐらいしかさせないようにしたい
つまり、[a-zA-Z0-9]とEnter,SPC,BS以外存在しないキーボードにしたい。
図書館とかにおいてある官製用PCか?と突っ込みたくなりますね。 あのPCすごいですよね、Ctrl+Alt+Del以外ほぼ何もできなくて感動を覚えます。
AutoHotKeyでキーの入れ替え
AutoHotKeyの基本ですが、以下のようにしてAキー単押しをEキー単押しに変更できます。
a::e
もし、Aキーを常に「Shift + A」や「Ctrl + A」と入力されてほしいときは次のようにします。
; a -> Shift + a a::{+a} ; a -> Ctrl + a a::{^a} ; a -> Alt + a a::{!a} ; a -> Win + a a::{#a} ; 逆も然り。これは修飾キーとの同時押しを、装飾キーが押されなかったのと同等の入力にします +a::a ^a::a !a::a #a::a ; 全ての修飾キーを表すときは下記のようにする *a::a
特定のキー入力の無効化
あるキーを別のキーへ変換する方法はわかりました。次は「何も入力しない」に変換する方法をお伝えします。
Returnを書くだけで一発です。AutoHotKeyにおける「::」はプログラミング言語で言うところのGOTOラベルのようになっているので、Returnで「何も入力しない」を表現できます。
; Ctrl + [a-z]による全選択を無効化する ^a::Return ^b::Return ︙ ^z::Return
キーボード、マウスからの入力のうち、無効化したいものを選ぶ
無効化したい入力を列挙して、雑にコードに書けばオールオッケーです。
というわけで無効化したいもの一覧
- [Ctrl / Shift / Alt / Win] + [F1~F24]
- ESC、CapsLock、AppsKey、PrintScreen、Pause、Break、Sleep、Help、ScrollLock、NumLock、Tab
- PgDn、PgUp、Home、End、Del、Ins
- Alt、Ctrl、Winの単押し
- Ctrl + [a-z]のショートカットキー
- テンキー全部
- マウスの左クリックとホイール上下以外
- ブラウザの戻る進む
- メディア、プレイヤーの操作
- アプリ起動ボタン
それらを実現するコードがこちらになります。 微妙に関係なさそうなコードも混ざっていますが、それは後述します。
;; start as Suspend mode Suspend, 1 ;; Ctrl-Shift-Alt-z command for susupend mode Toggle ^!+z:: Suspend, Toggle Return ;; function keys invalid *F1::Return *F2::Return *F3::Return *F4::Return *F5::Return *F6::Return *F7::Return *F8::Return *F9::Return *F10::Return *F11::Return *F12::Return *F13::Return *F14::Return *F15::Return *F16::Return *F17::Return *F18::Return *F19::Return *F20::Return *F21::Return *F22::Return *F23::Return *F24::Return ;; General keys invalid Esc::Return CapsLock::Return AppsKey::Return PrintScreen::Return Pause::Return Break::Return Sleep::Return Help::Return ScrollLock::Return NumLock::Return *Tab::Return !Space::Space ^Space::Space #Space::Space +Space::Space ;; cursor command keys invalid *PgDn::Return *PgUp::Return *Home::Return *End::Return *Del::Return *Ins::Return ;; modifire keys invalid Alt::Return LWin::Return RWin::Return Ctrl::Return ;; Ctrl-[a-z] shortcuts invalid ^a::Return ^b::Return ^c::Return ^d::Return ^e::Return ^f::Return ^g::Return ^h::Return ^i::Return ^j::Return ^k::Return ^l::Return ^m::Return ^n::Return ^o::Return ^p::Return ^q::Return ^r::Return ^s::Return ^t::Return ^u::Return ^v::Return ^w::Return ^x::Return ^y::Return ^z::Return ;; Numpad keys invalid Numpad0::Return NumpadIns::Return Numpad1::Return NumpadEnd::Return Numpad2::Return NumpadDown::Return Numpad3::Return NumpadPgDn::Return Numpad4::Return NumpadLeft::Return Numpad5::Return NumpadClear::Return Numpad6::Return NumpadRight::Return Numpad7::Return NumpadHome::Return Numpad8::Return NumpadUp::Return Numpad9::Return NumpadPgUp::Return NumpadDot::Return NumpadDel::Return NumpadDiv::Return NumpadMult::Return NumpadAdd::Return NumpadSub::Return NumpadEnter::Return ;NumLock::Return ;; mouse button invalid ;LButton::LButton RButton::Return MButton::Return XButton1::Return XButton2::Return ;WheelUp::WheelUp ;WheelDown::WheelDown WheelLeft::Return WheelRight::Return ;; browser shortcuts invalid Browser_Back::Return Browser_Forward::Return Browser_Refresh::Return Browser_Stop::Return Browser_Search::Return Browser_Favorites::Return Browser_Home::Return Volume_Mute::Return Volume_Down::Return Volume_Up::Return Media_Next::Return Media_Prev::Return Media_Stop::Return Media_Play_Pause::Return Launch_Mail::Return Launch_Media::Return Launch_App1::Return Launch_App2::Return
今のままでは(ほぼ)自力で解除できない切腹仕様
さて、次にこの大リーガー養成ギプス状態を解除する方法をお伝えします。 ここまで読んでくれた賢い人であれば気づくだろうが、現状存在しません。(※) 右クリックが使えずAutoHotKeyを止めることができませんので、脱出ボタンを用意しましょう。
その脱出ボタンというのが、先程の微妙に関係なさそうなコードのことです。 その部分について説明します。
ショートカットキー有効/無効の状態はAutoHotKeyの有効/無効で制御しています。 AutoHotKeyの有効/無効状態の切り替えを、特定のショートカットキーで実現しています。 その部分が下記コードの部分です。「Ctrl + Shift + Alt + z」で切り替えるようにしています。 普通に操作していて(多分)ほぼ押されることのないようなものを選びました。 ここは僕のオリジナル要素なので、各人好きに書き換えても大丈夫です。
;; start as Suspend mode Suspend, 1 ;; Ctrl-Shift-Alt-z command for susupend mode Toggle ^!+z:: Suspend, Toggle Return
※ちなみに、OSにとって優先度の高い「Ctrl+Alt+Del」とか「Ctrl+Shift+Esc」がAutoHotKeyでは無効化できない(やりたければ要レジストリ書き換え)ので、タスクマネージャーを起動してどうにかAutoHotKeyを終了する方法もあります。