レジストリをちょさないでHHKBをWindowsで使う

  • 18
    いいね
  • 0
    コメント
この記事は最終更新日から1年以上が経過しています。

こ↑こ↓の続き

バイト先の端末は制限ユーザーなので、いつも通りAHKでなんとかする
基本的にMac準拠、DIPスイッチは2,3のみON(Macモード, delete→Backspace)の設定で

US配列へリマップ

autohotkey.ahk
; HHKBを日本語配列設定の端末に繋げてもそのまま使えるようキーリマップ
*"::send, @
*&::send, {^}
*'::send, &
*(::send, *
*)::send, (
*+0::send, )
*=::send, _
*^::send, =
*~::send, {+}
*@::send, [
*`::send, {{}
*[::send, ]
*{::send, {}}
*]::send, \
*}::send, |
*+::send, :
+*::send, "
*vkBA::send, '

一個ずつ確認しながらリマップしてたけど、ストレスマッハだったのでこ↑こ↓を参考にした
インターネッツすごい(小並感)

カーソル, Backspace, Enter

autohotkey.ahk
; left alt+hjklでカーソルキー
<!h::
  Send,{Left}
  return
<!l::
  Send,{Right}
  return
<!j::
  Send,{Down}
  return
<!k::
  Send,{Up}
  return

; ^mで<CR>
^m::
  Send,{enter}
  return

; ^hで<BS>
^h::
  Send,{BS}
  return

慣れたらこれ以外無理です

IME

autohotkey.ahk
; LWin, RWinでそれぞれIME切り替え
; Windows7だと動かなかったので、そのうちなんとかする
IME_ON(hWindow, IsON)
{
  ; WM_IME_CONTROL    = 0x0283
    ; IMC_SETOPENSTATUS = 0x0006
    bufCurrentDetectMode := A_DetectHiddenWindows
    DetectHiddenWindows, On
    buf := DllCall("user32.dll\SendMessageA", "UInt", DllCall("imm32.dll\ImmGetDefaultIMEWnd", "Uint",hWindow), "UInt", 0x0283, "Int", 0x0006, "Int", IsON)
    DetectHiddenWindows, %bufCurrentDetectMode%
    Return buf
}
LWin::IME_ON(WinExist("A"), False)
RWin::IME_ON(WinExist("A"), True)

Windows7だと動かなかったので後でなんとかする
たぶん使ってるAHKが古いやつだからな気がする
最悪alt+`でも切り替えられるので優先順位は低い

ショートカット

autohotkey.ahk
; 使ってる範囲でショートカットをLWin+hogeでリマップ
Lwin & C::Send,^c
Lwin & x::Send,^x
Lwin & v::Send,^v
Lwin & s::Send,^s
Lwin & a::Send,^a
Lwin & q::WinClose,A
Lwin & z::Send,^z
Lwin & r::send, #r
Lwin & w::send, ^w

とりあえず程度に入れといた
LWin+Qでウィンドウを閉じるのは凄い楽