macOSからWindowsにPCを切り替えた時に一番苦労したのがキーバインドだったので、慣れ親しんだmacOSのEmacs風キーバインドをAutoHotKeyで設定するための備忘録になります。
AutoHotkey(AHK)は、Windows上で動作するOSSのスクリプト言語およびユーティリティソフトウェアです。ユーザーは、キーボードやマウスの操作を自動化し、ホットキーやホットストリングを設定することで、作業効率を向上させることができます。具体的な機能として、キー操作のカスタマイズ、マクロの作成、特定の文字列入力時の自動変換などが挙げられます。これらの機能により、日常のPC操作を効率化し、生産性を高めることが可能になります。
ゲームをプレイされる方
一部のゲームではAHKが起動しているとプレイできないゲームがあるようなので、ゲームの起動が失敗した際にAHKを落としてみてください
設定方法
v1.1はdeprecatedになっているので、v2.0を使用します。
以下が作成した設定ファイル(スクリプト)になります。AltキーをOptionキーのようにも使いたかったので、一部Emacsとは関係ない設定も混ざっています。
また、set_ignore_applications()で除外したいアプリケーションを指定しています。
対象アプリケーションの情報を調べるには Windows Spy を利用します。
設定スクリプト
set_ignore_applications() {
GroupAdd "IgnoreApplications", "ahk_class CASCADIA_HOSTING_WINDOW_CLASS" ; Windows Terminalを除外
GroupAdd "IgnoreApplications", "ahk_exe Code.exe" ; Visual Studio Codeを除外
GroupAdd "IgnoreApplications", "ahk_exe Cursor.exe" ; Cursor AI Editorを除外
}
main() {
ListLines 0 ; スクリプト実行中のライン表示を無効化
SetControlDelay 0 ; コントロールへのコマンド送信の遅延を最小化
SetKeyDelay -1 ; キー入力の遅延を無効化
SetWinDelay 0 ; ウィンドウ関連コマンドの遅延を無効化
SendMode "Input" ; キー入力モードを設定
set_ignore_applications() ; 除外するアプリケーションを設定
}
main()
#UseHook ; フックを使用するように設定
;; <ctrl>+F1でスクリプトを一時停止/再開
#SuspendExempt
^F1::Suspend
#SuspendExempt False
#HotIf not WinActive("ahk_group IgnoreApplications") ; 除外したアプリケーションではホットキーを無効化
;
; <ctrl>b - カーソルを左に移動
;
^b:: Send "{Left}"
;
; <shift><ctrl>b - カーソルを左に移動(文字を選択)
;
+^b:: Send "+{Left}"
; <ctrl+f> - カーソルを右に移動
^f::Send "{Right}"
; <shift+ctrl+f> - カーソルを右に移動(文字を選択)
+^f::Send "+{Right}"
; <ctrl+p> - カーソルを上に移動
^p::Send "{Up}"
; <shift+ctrl+p> - カーソルを上に移動(文字を選択)
+^p::Send "+{Up}"
; <ctrl+n> - カーソルを下に移動
^n::Send "{Down}"
; <shift+ctrl+n> - カーソルを下に移動(文字を選択)
+^n::Send "+{Down}"
; <ctrl+d> - カーソル右の文字を削除
^d::Send "{Del}"
; <ctrl+h> - カーソル左の文字を削除(Backspace)
^h::Send "{BS}"
; <ctrl+a> - 現在の行の先頭にカーソルを移動
^a::Send "{Home}"
; <shift+ctrl+a> - 現在の行の先頭までカーソルを移動(文字を選択)
+^a::Send "+{Home}"
; <ctrl+e> - 現在の行の末尾にカーソルを移動
^e::Send "{End}"
; <shift+ctrl+e> - 現在の行の末尾までカーソルを移動(文字を選択)
+^e::Send "+{End}"
; <shift+alt+f> - カーソルを単語単位で右に移動(文字を選択)
+!f::Send "+^{Right}"
; <ctrl+k> - カーソルから行末まで削除
^k::
{
Send "{ShiftDown}{End}{ShiftUp}"
Sleep 50 ; 遅延
Send "{Del}"
Return
}
; <ctrl+u> - カーソルから行頭まで削除
^u::
{
Send "{ShiftDown}{Home}{ShiftUp}"
Sleep 50 ; 遅延
Send "{Del}"
Return
}
; <ctrl+m> - 改行を挿入(Enter)
^m::Send "{Enter}"
; <alt+f> - 検索ダイアログを開く
!f::Send "^f"
; <alt+a> - すべてのテキストを選択
!a::Send "^a"
; <alt+c> - 選択したテキストをコピー
!c::Send "^c"
; <alt+x> - 選択したテキストをカット
!x::Send "^x"
; <alt+v> - クリップボードのテキストを貼り付け
!v::Send "^v"
; <alt+s> - 現在のドキュメントまたはファイルを保存
!s::Send "^s"
; <alt+n> - 新しいウィンドウを開く
!n::Send "^n"
; <alt+t> - 新しいタブを開く
!t::Send "^t"
; <alt+w> - 現在のタブを閉じる
!w::Send "^w"
; <alt+r> - 現在のページまたはドキュメントを再読み込み
!r::Send "^r"
; <alt+l> - ブラウザのURLバーにフォーカス
!l::Send "^l"
参考