🎉
個人的AutoHotKeyの設定
個人的なAutoHotKeyの設定です。
- 左 Alt 空打ちで IME を OFF
- 右 Alt 空打ちで IME を ON
- 左 Win 空打ちで IME を OFF
- 右 Win 空打ちで IME を ON
- ESC で IME を OFF
- 日時入力
ご参考まで。
key_bind.ahk
#Include, IME.ahk
;-----------------------------------------------------
; AutoHotKeyでの記号の意味について
;-----------------------------------------------------
; ^ Ctrl
; + Shift
; ! Alt
; # Win
; * ワイルドカード(*#c とすると Shift+Win+C、Ctrl+Win+C、Alt+Win+C などでも起動される)
; ~ ネイティブ保護(ホットキーが起動してもそのキーのネイティブ機能はブロックされない)
;-----------------------------------------------------
; 主要なキーを HotKey に設定し、何もせずパススルーする
;-----------------------------------------------------
*~a::
*~b::
*~c::
*~d::
*~e::
*~f::
*~g::
*~h::
*~i::
*~j::
*~k::
*~l::
*~m::
*~n::
*~o::
*~p::
*~q::
*~r::
*~s::
*~t::
*~u::
*~v::
*~w::
*~x::
*~y::
*~z::
*~1::
*~2::
*~3::
*~4::
*~5::
*~6::
*~7::
*~8::
*~9::
*~0::
*~F1::
*~F2::
*~F3::
*~F4::
*~F5::
*~F6::
*~F7::
*~F8::
*~F9::
*~F10::
*~F11::
*~F12::
*~`::
*~~::
*~!::
*~@::
*~#::
*~$::
*~%::
*~^::
*~&::
*~*::
*~(::
*~)::
*~-::
*~_::
*~=::
*~+::
*~[::
*~{::
*~]::
*~}::
*~\::
*~|::
*~;::
*~'::
*~"::
*~,::
*~<::
*~.::
*~>::
*~/::
*~?::
*~Esc::
*~Tab::
*~Space::
*~Left::
*~Right::
*~Up::
*~Down::
*~Enter::
*~PrintScreen::
*~Delete::
*~Home::
*~End::
*~PgUp::
*~PgDn::
Return
;-----------------------------------------------------
; 上部メニューがアクティブになるのを抑制
;-----------------------------------------------------
*~LAlt::Send {Blind}{vk07}
*~RAlt::Send {Blind}{vk07}
;-----------------------------------------------------
; 左 Alt 空打ちで IME を OFF
;-----------------------------------------------------
LAlt up::
if (A_PriorHotkey == "*~LAlt")
{
IME_SET(0)
}
Return
;-----------------------------------------------------
; 右 Alt 空打ちで IME を ON
;-----------------------------------------------------
RAlt up::
if (A_PriorHotkey == "*~RAlt")
{
IME_SET(1)
}
Return
;-----------------------------------------------------
; スタートメニューがアクティブになるのを抑制
;-----------------------------------------------------
*~LWin::Send {Blind}{vk07}
*~RWin::Send {Blind}{vk07}
;-----------------------------------------------------
; 左 Win 空打ちで IME を OFF
;-----------------------------------------------------
LWin up::
if (A_PriorHotkey == "*~LWin")
{
IME_SET(0)
}
Return
;-----------------------------------------------------
; 右 Win 空打ちで IME を ON
;-----------------------------------------------------
RWin up::
if (A_PriorHotkey == "*~RWin")
{
IME_SET(1)
}
Return
;-----------------------------------------------------
; ESC で IME を OFF
;-----------------------------------------------------
~Esc::IME_SET(0)
;-----------------------------------------------------
; 日時入力
;-----------------------------------------------------
; Ctrl + Shift + I
^+i::
FormatTime,TimeString,,yyyyMMdd
ime_mode := IME_GET()
IME_SET(0)
Send,%TimeString%
IME_SET(ime_mode)
Return
; Ctrl + alt + I
^!i::
FormatTime,TimeString,,yyyy/MM/dd
ime_mode := IME_GET()
IME_SET(0)
Send,%TimeString%
IME_SET(ime_mode)
Return
; Ctrl + Shift + alt + I
^+!i::
FormatTime,TimeString,,yyyy/MM/dd HH:mm:ss
ime_mode := IME_GET()
IME_SET(0)
Send,%TimeString%
IME_SET(ime_mode)
Return
IME.ahk
;-----------------------------------------------------------
; IMEの状態の取得
; WinTitle="A" 対象Window
; 戻り値 1:ON / 0:OFF
;-----------------------------------------------------------
IME_GET(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, 0x0005 ;wParam : IMC_GETOPENSTATUS
, Int, 0) ;lParam : 0
}
;-----------------------------------------------------------
; IMEの状態をセット
; SetSts 1:ON / 0:OFF
; WinTitle="A" 対象Window
; 戻り値 0:成功 / 0以外:失敗
;-----------------------------------------------------------
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
}
Discussion