夢見るようにPCを操作したい③

「ジュン、いい加減このネタは飽きたのだわ」

なるべく簡単にPCを操作したいがための、キーボードのマッピングの変更なのだが、なんだか逆に難しくなっているような気がする…。vimを覚えた時のように

(そういや現実でvim使いって見たことないわ)。

ChangeKeyの設定

※赤枠が他のキーに変更した部分

Caps Lockは他のキーとは内部的に異なる挙動をするため、いったん使用しないキーに割り当ててからAutoHotKeyでカスタマイズする。

Autohotkeyの設定

#InstallKeybdHook
#UseHook

IME_SET(SetSts, WinTitle="A")    {
    ControlGet,hwnd,HWND,,,%WinTitle%
    if    (WinActive(WinTitle))    {
        ptrSize := !A_PtrSize ? 4 : A_PtrSize
        VarSetCapacity(stGTI, cbSize:=4+4+(PtrSize*6)+16, 0)
        NumPut(cbSize, stGTI,  0, "UInt")   ;    DWORD   cbSize;
        hwnd := DllCall("GetGUIThreadInfo", Uint,0, Uint,&stGTI)
                 ? NumGet(stGTI,8+PtrSize,"UInt") : hwnd
    }

    return DllCall("SendMessage"
          , UInt, DllCall("imm32\ImmGetDefaultIMEWnd", Uint,hwnd)
          , UInt, 0x0283  ;Message : WM_IME_CONTROL
          ,  Int, 0x006   ;wParam  : IMC_SETOPENSTATUS
          ,  Int, SetSts) ;lParam  : 0 or 1
}

;Insert(Caps lock)でウィンドウを閉じる
Insert::Send,!{F4}

;無変換で半/全。WinのIME設定ではうまくいかないため。
sc07B::IME_SET(0)

;無変換・スペースでバックスペース
sc07B & Space::Backspace
;変換・スペースでdelete
sc079 & Space::Delete
;変換で日本語入力
sc079::IME_SET(1)
;無変換・LでEndキー押下
sc07B & l::End
;無変換・HでHomeキー押下
sc07B & h::Home

;右shiftキーで文字をまとめて選択して削除(shift+←のちにバックスペース押下)
RShift::
Send, ^+{Left Down}{Left Up}
Send, {Backspace Down}{Backspace Up}
return

;無変換+wasdで方向キー代替
sc07B & a::Left
sc07B & w::Up
sc07B & s::Down
sc07B & d::Right

;shift+Enterでブラウザタブ移動(右)
+Enter::Send,^{PgDn}
;alt+Enterでブラウザタブ移動(左)
!Enter::Send,^{PgUp}

;マウス:進むボタン→ミドルクリック
XButton2::MButton
;マウス:戻るボタン→ブラウザタブ閉じる(alt+W)
XButton1::^w

IME_SET()関数は次のサイトから引用 

https://namayakegadget.com/765/