AutoHotKeyで英語配列設定のまま日本語配列キーボードを使う

に公開

ノートPCがUS(英語配列)キーボードで、外付けでJIS(日本語配列)キーボードを使いたくて、AutoHotKeyでキーの入れ替えをしてみました。

AutoHotKey とは

AutoHotKey は、Windows向けのオープンソースのスクリプト言語・自動化ツールです。キーボードやマウスの入力をカスタマイズしたり、繰り返し作業を自動化したりできます。

主な特徴:

  • キーのリマップ: 任意のキーを別のキーに割り当て変更できる
  • ホットキー: 独自のショートカットキーを定義して、任意の処理を実行できる
  • テキスト展開: 短い略語を入力するだけで定型文を自動入力できる
  • スクリプトによる自動化: ウィンドウ操作やファイル操作など、さまざまな作業を自動化できる

.ahk拡張子のスクリプトファイルを作成し、実行するだけで利用できます。

設定

下記のスクリプトを書きました。AutoHotkey v2.0で動作します。

JisOnUs.ahk
#Requires AutoHotkey v2.0
#SingleInstance Force

A_TrayMenu.Delete()
A_TrayMenu.Add("終了", (*) => ExitApp())
A_TrayMenu.Add("履歴", (*) => KeyHistory())
A_IconTip := "JisOnUs: 動作中"

; Shiftなし
sc01A:: Send("@")          ; JIS @
sc00D:: Send("{^}")        ; JIS ^
sc01B:: Send("{[}")        ; JIS [
sc02B:: Send("{]}")        ; JIS ]
sc028:: Send(":")          ; JIS :
sc073:: Send("\")          ; JIS \
sc07D:: Send("{U+00A5}")   ; JIS \

sc029:: Send("{vkF4sc029}")  ; 半角/全角キーをそのまま通す

; Shiftあり
+sc003:: Send("{U+0022}")  ; JIS Shift+2  → "
+sc007:: Send("{U+0026}")  ; JIS Shift+6  → &
+sc008:: Send("{U+0027}")  ; JIS Shift+7  → '
+sc009:: Send("{U+0028}")  ; JIS Shift+8  → (
+sc00A:: Send("{U+0029}")  ; JIS Shift+9  → )
+sc00B:: return            ; JIS Shift+0  → なし
+sc00C:: Send("{U+003D}")  ; JIS Shift+-  → =
+sc00D:: Send("{U+007E}")  ; JIS Shift+^  → ~
+sc01A:: Send("{U+0060}")  ; JIS Shift+@  → `
+sc01B:: Send("{U+007B}")  ; JIS Shift+[  → {
+sc02B:: Send("{U+007D}")  ; JIS Shift+]  → }
+sc027:: Send("{U+002B}")  ; JIS Shift+;  → +
+sc028:: Send("{U+002A}")  ; JIS Shift+:  → *
+sc073:: Send("{U+005F}")  ; JIS Shift+\  → _
+sc07D:: Send("{U+007C}")  ; JIS Shift+\  → |

これで外付けのJISキーボードの時にAutoHotKeyを起動しておけば、USキーボード設定のままJISキーボードを使うことができます。(キーボードレイアウトの変更が制限されている時などにも有効)

注意点

管理者権限で起動しているアプリケーションだと、AutoHotKeyも管理者権限で起動していないとキーの入れ替えが効かないのでご注意ください。
(特定のアプリケーションで効かないなと思ったら、管理者権限で起動されるアプリケーションだった)

Discussion