Autohotkeyで変換/無変換キーを活用する

日記

変換/無変換をホットキーにする

変換はsc079、無変換はsc07Bをホットキーにする。

この時、ホットキーの直前に~を付けないと本来の変換/無変換が使えなくなってしまう。

;変換+q
~sc079 & q::
{
	MsgBox "変換 + q が押されました"
}

;無変換+q
~sc07B & q::
{
	MsgBox "無変換 + q が押されました"
}

変換/無変換を送る

逆に変換/無変換を押させる場合は、変換はvk1Dsc07B、無変換はvk1Csc079を送る。

;{Ctrl}+{Alt}+F11
^!F11::
{
	;変換
	Send "{vk1Dsc07B}"
}

;{Ctrl}+{Alt}+F12
^!F12::
{
	;無変換
	Send "{vk1Csc079}"
}

一部リモートアプリで変換/無変換が送れない対策

接続先と接続元双方にAutoHotkeyがインストールされていることが条件になるが、以下のように普段使わないファンクションキー(F13~F24)を間に挟んでやると良い。

接続元

;ここでは「ISL Light」というリモートアプリの例
#HotIf WinActive("- ISL Light")
;変換
sc07B::
{
	Send "{F18}"
}
;無変換
sc079::
{
	Send "{F17}"
}
#HotIf

接続先

F18::
{
	;変換
	Send "{vk1Dsc07B}"
}
F17::
{
	;無変換
	Send "{vk1Csc079}"
}

私が使っている変換/無変換ホットキー

私はGoogle日本語入力で、変換を押したらIMEオン、無変換を押したらIMEオフに設定している。

その上で、AutoHotkeyで変換/無変換を押しながら他のキーと組み合わせることで60%キーボードっぽい動きをさせたり、変換/無変換2回押しでタスク切換え画面を出すなどさせている。

ちなみにいくつかのホットキーで使っている{Blind}は何かというと、これを付けると他の修飾キーが有効になる。例えば{無変換}+{j}はカーソル左キーが送られるが、{Shift}+{無変換}+{j}で、{Shift}+カーソル左キーになる。

Send - 構文と使用法|AutoHotkey v2
Send、SendText、SendInput、SendPlay、SendEvent関数は、アクティブウィンドウにキーストロークやマウスクリックのシミュレーションを送信します。
/*
無変換(sc07B)/変換(sc079)を押しながら
1~0-^	F1~F12
q		ESC
w		Ctrl+Shift+Tab タブブラウザなどのタブ移動
e		Ctrl+Tab タブブラウザなどのタブ移動
s		Ctrl+PdUp エクセルのシート移動
d		Ctrl+PgDn エクセルのシート移動
a		AppsKey
z		クリップボードの最初と最後の空白と改行コードを削除
r		7
t		8
y		9
f		4
g		5
h		6
v		1
b		2
n		3
Space	0
m		Enter
u		BackSpace
o		Delete
i		カーソル↑
j		カーソル←
k		カーソル↓
l		カーソル→
,		Home
.		End
p		PgUp
;		PgDn
@		Google検索
[		WheelUp
]		WheelDown
*/

sc07B & 1::
sc079 & 1::
{
	Send "{Blind}{F1}"
}

sc07B & 2::
sc079 & 2::
{
	Send "{Blind}{F2}"
}

sc07B & 3::
sc079 & 3::
{
	Send "{Blind}{F3}"
}

sc07B & 4::
sc079 & 4::
{
	Send "{Blind}{F4}"
}

sc07B & 5::
sc079 & 5::
{
	Send "{Blind}{F5}"
}

sc07B & 6::
sc079 & 6::
{
	Send "{Blind}{F6}"
}

sc07B & 7::
sc079 & 7::
{
	Send "{Blind}{F7}"
}

sc07B & 8::
sc079 & 8::
{
	Send "{Blind}{F8}"
}

sc07B & 9::
sc079 & 9::
{
	Send "{Blind}{F9}"
}

sc07B & 0::
sc079 & 0::
{
	Send "{Blind}{F10}"
}

;sc00C="="
sc07B & sc00C::
sc079 & sc00C::
{
	Send "{Blind}{F11}"
}

;sc00D="^"
sc07B & sc00D::
sc079 & sc00D::
{
	Send "{Blind}{F12}"
}

sc07B & q::
sc079 & q::
{
	Send "{Blind}{Esc}"
}

sc07B & w::
sc079 & w::
{
	;{Ctrl}+{Shift}+{Tab}
	Send "^+{Tab}"
}

sc07B & e::
sc079 & e::
{
	;{Ctrl}+{Tab}
	Send "^{Tab}"
}

sc07B & s::
sc079 & s::
{
	;{Ctrl}+{PgUp}
	Send "^{PgUp}"
}

sc07B & d::
sc079 & d::
{
	;{Ctrl}+{PgDn}
	Send "^{PgDn}"
}

sc07B & a::
sc079 & a::
{
	Send "{AppsKey}"
}

sc07B & z::
sc079 & z::
{
	;クリップボードの最初と最後の空白と改行コードを削除
	A_Clipboard := Trim(A_Clipboard)
	A_Clipboard := Trim(A_Clipboard, "`r`n")
}

sc07B & r::
sc079 & r::
{
	Send "7"
}

sc07B & t::
sc079 & t::
{
	Send "8"
}

sc07B & y::
sc079 & y::
{
	Send "9"
}

sc07B & f::
sc079 & f::
{
	Send "4"
}

sc07B & g::
sc079 & g::
{
	Send "5"
}

sc07B & h::
sc079 & h::
{
	Send "6"
}

sc07B & v::
sc079 & v::
{
	Send "1"
}

sc07B & b::
sc079 & b::
{
	Send "2"
}

sc07B & n::
sc079 & n::
{
	Send "3"
}

sc07B & Space::
sc079 & Space::
{
	Send "0"
}

sc07B & m::
sc079 & m::
{
	Send "{Blind}{Enter}"
}

sc07B & u::
sc079 & u::
{
	Send "{Blind}{BackSpace}"
}

sc07B & o::
sc079 & o::
{
	Send "{Blind}{Delete}"
}

sc07B & i::
sc079 & i::
{
	Send "{Blind}{Up}"
}

sc07B & j::
sc079 & j::
{
	Send "{Blind}{Left}"
}

sc07B & k::
sc079 & k::
{
	Send "{Blind}{Down}"
}

sc07B & l::
sc079 & l::
{
	Send "{Blind}{right}"
}

;sc033=","
sc07B & sc033::
sc079 & sc033::
{
	Send "{Blind}{Home}"
}

;sc034="."
sc07B & sc034::
sc079 & sc034::
{
	Send "{Blind}{End}"
}

sc07B & p::
sc079 & p::
{
	Send "{Blind}{PgUp}"
}

;sc027=";"
sc07B & sc027::
sc079 & sc027::
{
	Send "{Blind}{PgDn}"
}

sc07B & @::
sc079 & @::
{
	;Google検索
	searchstr := InputBox("","Google検索","w300 h70").value
	if(searchstr != ""){
		Run "http://www.google.com/search?q=" . searchstr
	}
}

;sc01B="["
sc07B & sc01B::
sc079 & sc01B::
{
	Send "{blind}{WheelUp}"
}

;SC02B="]"
sc07B & sc02B::
sc079 & sc02B::
{
	Send "{blind}{WheelDown}"
}

;{変換}単独
sc079::
{
	;2回押しでタスクの切り替え画面を出す
	if (A_ThisHotkey == A_PriorHotkey && A_TimeSincePriorHotkey <= 400)
	{
		Send "^!{Tab}"
	}
	;{無変換}を送る(Google日本語入力でIMEを有効化)
	Send "{vk1Csc079}"
}

;{無変換}単独
sc07B::
{
	;2回押しでタスクの切り替え画面を出す
	if (A_ThisHotkey == A_PriorHotkey && A_TimeSincePriorHotkey <= 400)
	{
		Send "^!+{Tab}"
	}
	;{無変換}を送る(Google日本語入力でIMEを無効化)
	else
	{
		Send "{vk1Dsc07B}"
	}
}

;「タスクの切り替え」画面中の操作
#HotIf WinActive("タスクの切り替え")
	i::
	{
		Send "{Up}"
	}
	j::
	{
		Send "{Left}"
	}
	k::
	{
		Send "{Down}"
	}
	l::
	{
		Send "{Right}"
	}
	q::
	{
		Send "{Esc}"
		;50ミリ秒後にマウスカーソルの下にあるウィンドウIDを取得してアクティブにする
		Sleep 50
		MouseGetPos , , &id
		WinActivate(id)
	}
	m::
	{
		Send "{Enter}"
	}
#HotIf

コメント

タイトルとURLをコピーしました