⌨
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