Keyboard

カーソルキーやHOME, ENDキーに手を伸ばしてホームポジションを崩す事が地味に辛い……と思う今日この頃。

Macでは、コマンドとCtrl両方あって、ショートカットキーも充実しているけれど、私の使っているWindowsでは、カーソルキー等のショートカットキーはない様子……

と、ゆーことで、自分で作ることに。

以下はその方法の備忘録。

キーの配置を変更する

Change Keyを使う場合

Change Keyのインストール

窓の杜etc.からダウンロードして、任意の場所に解凍。

 

……とココで、なぜかLZHが解凍できない、という問題発生。

どうやら、最近、Windows10に大規模なアップデート(Creators Update)が行われた事が原因のよう。

元々2010年頃から「lzh」形式の圧縮ファイルで、セキュリティ面での深刻な不具合が発見され、利用停止が呼びかけられていた。

で、今回のCreators Updateで、対応停止にした、という話のよう。
でも今回はlzhファイルを開く必要があるので、解凍アプリをインストールすることに。

使用したのは、「Lhaplus」(信用できるアプリ、という事なので。)

こちらも窓の杜からダウンロードし、
lzhにチェックを入れてインストール。

無事に、ChgKey15.LZHファイルを開く事ができた。

CapsLockキーをF13に変更

1. ChgKey.exeを管理者権限で実行 → 仮想キーボードが出てくる。

ChangeKeyの仮想キーボード

2. 変えたいキー=今回はCapsLockキーをクリック。

3. 「キーをどのキーに変更しますか?」というポップアップが出てくる。

ChangeKey-2

4. F13は画面上にないので、右上にあるScan codeをクリックし、スキャンコードを直接入力。

ChangeKey-3

5. 「F13」のスキャンコードは「0064」。

F13-F24の仮想キーコード/スキャンコード
キー 仮想キーコード(Vk) スキャンコード(Sc)
F13 0x007C 0x0064
F14 0x007D 0x0065
F15 0x007E 0x0066
F16 0x007F 0x0067
F17 0x0080 0x0068
F18 0x0081 0x0069
F19 0x0082 0x006A
F20 0x0083 0x006B
F21 0x0084 0x006C
F22 0x0085 0x006D
F23 0x0086 0x006E
F24n 0x0087 0x0076
調査環境:Windows 10 64bit

6. OKをクリックし、「CapsLock」を「F13」に変更。

  • 基本、どのキーに変更してもよい。
  • 他のショートカットキーと被らないように、今回はF13に変更した。
  • 日本語配列のキーボードでは、変換/無変換キー等、使えるキーが多いが、私の場合は英語配列なので、その点だけちょっと不便……

7. Ctrl左をクリック→タブにある登録(R)  → 「現在の設定内容で登録します(R)」をクリック。

(画面を閉じるだけではダメ。)

8. 再起動。

通常はこれでOK。

 

……けれど、私のPC環境では、なぜかうまくいかない……

調べてみると、半角/全角キーやCapsLockの場合、一旦HomeやEndなど、別のキーに割り当て → 再起動 してから、もう一度F13に割り当てる必要がある様子。

……再トライ……やっぱりダメ……

……米国版のKeyboardを使っていることが原因の可能性を指摘しているサイトも(ホント?)……

 

原因はよくわからなかったけど、結局、直接レジストリの変更を行うことで対応した。

レジストリ設定を編集する

❏ レジストリキーの値を変更する方法1:直接入力

1. Windows + R (もしくはメニューの「ここに入力して検索」に「run」)で、「ファイル名を指定して実行」を呼び出す。

2. 「regedit」を指定。

3. レジストリエディタが起動される。

4. キー[HKEY_LOCAL_MACHINE]を選択し、ツリービューを開く。

※HKEY_LOCAL_MACHINEの場合:HKEY_LOCAL_MACHINE > SYSTEM > CurrentControlSet > Control > Keyboard Layout

5. 右クリック → 「New」→「Binary Value」→「New Value #1」の所に「Scancode Map」と名前を変更し、保存。

6. 作成したScancode Mapを開き、Value data欄に下記入力。

00000000 00 00 00 00 00 00 00 00
00000008 02 00 00 00 64 00 3A 00
00000010 00,00,00,00

※ 因みに、この16進コードの意味は、

00,00,00,00,00,00,00,00,02,00,00,00,64,00,3a,00,00,00,00,00

先頭の00,00,00,00はヘッダ。バージョン番号を示す。全て0に設定する必要がある。

続く00,00,00,00もヘッダ。フラグを示す。ここもすべて0でOK。

③ その次の02,00,00,00はエントリー数を表す。ココでは2エントリー。(1d,00,3a,00と、00,00,00,00 (NULL終端) の2つという意味。)

④ その次の64,00,3a,00が肝心の、キーコードを変換する部分。

  • Capsのコードは3a、左Ctrlキーのコードは1d。
  • 1d,00,3a,00が、003aを001dに変更する、という意味になる

⑤ 最後の00,00,00,00は終端を表す。日本語の句点のような感じ。すべて0で。

7. 実行して再起動。

※ 設定を戻したい場合は、追加したキーを削除する。

HKEY_LOCAL_MACHINE > SYSTEM > CurrentControlSet > Control > Keyboard Layout

→ ”Scancode Map” → 右クリック → Delete

レジストリキーの値を変更する方法2:REGファイルを作って実行

1. 空のテキストファイルを作り、下記入力。

Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlKeyboard Layout]
“Scancode Map”=hex:00,00,00,00,00,00,00,00,03,00,00,00,1d,00,3a,00,3a,00,1d,00,00,00,00,00

※” Windows Registry Editor Version 5.00 “はファイルの先頭(1行目)にくるように

※” Windows Registry Editor Version 5.00 “の下には空行を入れておく

2. REGファイルにする。

2-1.「Scancode Map.reg」と名前をつけて保存。うまく保存できたら、.regのファイルができる。

REGのファイル

2-2. REGファイルをダブルクリックして実行。

→ 色々壊れるかもしれないけど、本当にいいですか?みたいに聞いてくるので、「Yes」と答えて実行。

3. 再起動して反映。

 

……できた!

慣れれば、レジストリから変更するほうが楽かも。

AutoHotkeyでショートカットキーを割り当てる

 AutoHotkeyのインストール

AutoHotkeyを下記からダウンロードし、インストール。

ahkファイルの作成

1. ノートパッドなどのテキストファイルを作成し、拡張子:ahkファイル、文字コード:UTF-8にして保存。

※ 私は、使い勝手の良いテキストエディタを使用。使用しているのはVisual Studio Code ↓

※テキストエディタを使用する場合は、文字エンコードを「UTF-8 with BOM」で作成/保存する必要がある。(WindowsのワードパットUTF-8のテキストを作成した場合は、UTF-8で保存した時に自動的にBOMが追加される。)

BOM(バイトオーダーマーク)とは、Unicodeで記述された文書の冒頭に記載される短い符号で、使用されている文字符号化方式(文字エンコーディングの種類や、そのバイト順(エンディアン)を指定するためのもの。

右下にある表示がUTF-8になっていたら、そこをクリック → 「Save with Encoding」→ UTF-8 with BOMを選択 → 表示がUTF-8 with BOMに変更されていたらOK。

ちなみに、Visual Studio Codeのシンタックスハイライト機能は見た目的かなり便利(拡張機能インストールが必要)。

※Visual Studio Codeシンタックスハイライト拡張機能のインストール法 ↓

  1. 左側の拡張機能アイコンをクリック
  2. 検索ウインドウで「autohotkey」と検索
  3. 検索結果の一番上に出てくる「AutoHotkey 0.22」を選択し、「install」ボタンでインストール

 

2. 保存先は、どこでも良いけれど、私は他のPCでも使用したいので、Dropbox etc.のクラウドに保存し、スタートアップにショートカットを作成した。

(スタートアップに入れておけば、AutoHotKeyをマシン起動時に常駐させることができる。)

 

2-1. まず、AutoHotKeyを停止させ、Windows10のスタートアップフォルダを開く。

C:Users/ユーザー名/AppData//Roaming/Microsoft/Windows/Start Menu/Programs/Startup

私はAppDataからショートカットするのが

%AppData%/Microsoft/Windows/Start Menu/ProgramsStartup

2-2. Dropboxに保存しておいたahkファイルを、Altを押しながらスタートアップフォルダに移動。

 

2-3. スタートアップフォルダにショートカットが作成される。

ahkファイルの編集

1. 今回は、下記のように編集した。

#Requires AutoHotkey v2.0
;=====================================================
; 前提:CapsLock を F13 に割り当てている場合(必要なら有効化)
;CapsLock::F13
;=====================================================

;----------------------------
; カーソル移動
;----------------------------
F13 & b::Send "{Blind}{Left}"      ; ←
F13 & f::Send "{Blind}{Right}"     ; →
F13 & p::Send "{Blind}{Up}"        ; ↑
F13 & n::Send "{Blind}{Down}"      ; ↓

; 行頭/行末
F13 & a::Send "{Blind}{Home}"      ; 行頭へ
F13 & e::Send "{Blind}{End}"       ; 行末へ

; ページ移動
F13 & v::Send "{Blind}{PgDn}"      ; PageDown
F13 & s::Send "{Blind}{PgUp}"      ; PageUp

;----------------------------
; 削除系等
;----------------------------
F13 & d::Send "{Blind}{Del}"           ; カーソル位置の1文字削除(Shift+D)
F13 & h::Send "{Blind}{BS}"            ; 左1文字削除(Shift+H)
F13 & u::Send "+{Home}{Del}"           ; 行頭まで削除(Shift+U)
F13 & k::Send "+{End}{Del}"            ; 行末まで削除(Shift+K)
F13 & w::Send "^+{Left}{Del}"          ; 直前の単語削除(Shift+W)

F13 & y::Send "{Home}+{End}^c"         ; 行コピー
F13 & x::Send "{Home}+{End}{Del}"      ; 行全体を削除
F13 & t::Send "{End}{Enter}"           ; 行の下に新しい行を挿入

;----------------------------
; その他便利系
;----------------------------
F13 & Space::Send "{Blind}{Enter}" ; Enter
F13 & c::Send "^c"                 ; Cancel (Ctrl+C)
F13 & l::Send "^l"                 ; 画面クリア(

2. あとは、PCを再起動するか、ahkファイルを右クリックしてRun ScriptすればOK。

※以下、AutoHotkeyの備忘録。

  • ホットキーのラベルには、大文字小文字の区別はない。
  • 複合キーを指定する場合は「&」でつなぐ。このとき&マークの前後の半角スペースは必須。
  • カーソルなどの役割系のキーは{}の中に記述。
  • 途中に挟んである{Blind}は、他キーとの同時打鍵を有効にするもの。例えば範囲選択などの操作は、Shift + カーソルキーなどで行うが、{Blind}を記述することで可能となる。

 

キー ラベル 文字表記のラベル
Shift + Shift
Ctrl ^ Control (Ctrl)
Alt ! Alt
Win #  
AltGr※1 <^?>!  

 

キー ラベル 修飾記号での表記
左シフト LShift ^+
右シフト RShift >+
左コントロール LControl (LCtrl) <^
右コントロール RControl (RCtrl) >^
左Alt LAlt <!
右Alt RAlt >!
左Win LWin <#
右Win RWin >#

 

キー ラベル
Numlock ON Numlock OFF
0 Numpad0 NumpadIns
1 Numpad1 NumpadEnd
2 Numpad2 NumpadDown
3 Numpad3 NumpadPgDn
4 Numpad4 NumpadLeft
5 Numpad5 NumpadClear
6 Numpad6 NumpadRight
7 Numpad7 NumpadHome
8 Numpad8 NumpadUp
9 Numpad9 NumpadPgUp
. NumpadDot NumpadDel
/ NumpadDiv
* NumpadMult
+ NumpadAdd
- NumpadSub
Enter NumpadEnter

References

◆ ショートカットキー作成全般

◆ カーソル等のショートカットキー備忘録

◆ 「lzh」ファイル解凍のトラブルシューティング

◆ AutoHotKey全般

◆ VSCodeについて

◆ ChangeKeyでCapLocksが変更できない時のトラブルシューティング

◆ レジストリを変更する方法