Keyboard

最近、コードを打つことが多くなり、

カーソルキーやHOME, ENDキーに手を伸ばしてホームポジションを崩す事が地味に辛くなってきました。

Macでは、コマンドとCtrl両方あるせいか、ショートカットキーが充実しているようですが、私の使っているWindowsでは、カーソルキー等のショートカットキーはない様子……

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

 

その際、まず悩んだのが、カーソルキーの場所。

vi系, Google系だと

  • H:「←」
  • J:「↓」
  • K:「↑」
  • l:「→」

だし、

日本語入力でも、

  • Z + H : 「←」
  • Z + J : 「↓」
  • Z + K : 「↑」
  • Z + L : 「→」

と出せますよね。

 

ちょっと脱線しますが、

  • Z + . : 「…」(三点リーダ)
  • Z + , : 「‥」(二点リーダ)
  • Z + – : 「〜」(波線、波ダッシュ)
  • Z + [ : 「『」(二重かぎかっこ)
  • Z + ] : 「』」(二重閉じかぎかっこ)

です。

 

これがMacだと、

  • cont + B : 「←」"Back"
  • cont + N : 「↓」 "dowN"
  • cont + P : 「↑」 "uP"
  • cont + F : 「→」"Front"

なんですよね。

 

私は、矢印はHJKLの方が馴染みがあるんですが、それ以外はvimとか使っていないし、

できればこの機会にHOME, END, Del, Back等のショートカットも割り当てたい…

Macだと、

  • Cont + H: Delete
  • Cont + K: カーソルから行末までをカット

と、他のショートカットに割り当てられているので、バッティングしてしまう…

 

迷った挙げ句、とりあえず

  • F13 + B  or  F13+ H : 「←」
  • F13 + N  or  F13+ J : 「↓」
  • F13 + P  or  F13+ K : 「↑」
  • F13 + F  or  F13+ L : 「→」

と、両方assignしてみて、どちらが使いやすいか試してみることにしました。



と、前置きが長くなりましたが、ここからはソフトを使ってショートカットを割り当てる方法。

今回は、下記2つのソフトを使用することにしました。

  • Change Key
  • AutoHotkey

(ところが、結局Change Keyは私のPC環境ではうまく作動せず、結局レジストリから直接変更することになりました。折角色々調べたので、Change Keyの内容も記録しておきます。)

キーの配置を変更する

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を使っていることが原因の可能性を指摘しているサイトも(ホント?)……

とゆーことで、結局

zkxs/map_capslock_to_f13.reg 」を使わせてもらって、直接レジストリの変更を行った。

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

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

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

2. 「regedit」を指定。

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

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

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

※HKEY_CURRENT_USERの場合:HKEY_CURRENT_USER > 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. まずは.txtファイルで保存。

2-2. そのファイルを選択肢、F2で.regにファイル形式を変更。

うまく保存できたら、.regのファイルができる。

REGのファイル

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

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

4. 再起動して反映。

 

……できた!

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

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ユーザー名AppDataRoamingMicrosoftWindowsStart MenuProgramsStartup

もしくは下記でも。

%APPDATA%MicrosoftWindowsStart MenuProgramsStartup

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

 

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

ahkファイルの編集

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

;-----------------------------------------------------
; ChangeKey -> CapsLock -> F13
; cursor (mac)
F13 & b::Send,{Blind}{Left}
F13 & p::Send,{Blind}{Up}
F13 & n::Send,{Blind}{Down}
F13 & f::Send,{Blind}{Right}
;-----------------------------------------------------
; Home,End,PgUp,PgDn
F13 & a::Send,{Blind}{Home}
F13 & e::Send,{Blind}{End}
F13 & s::Send,{Blind}{PgUp}
F13 & v::Send,{Blind}{PgDn}
;-----------------------------------------------------
; BS, Del, 
F13 & d::Send,{Blind}{Del}
F13 & i::Send,{Blind}+{End}{Del}
F13 & g::Send,{Blind}+{Home}{Del}
F13 & u::Send,{Blind}{BS}
;-----------------------------------------------------
; cursor(vim)
F13 & h::Send,{Blind}{Left}
F13 & j::Send,{Blind}{Down}
F13 & k::Send,{Blind}{Up}
F13 & l::Send,{Blind}{Right}
;-----------------------------------------------------
; Back space 
F13 & Alt::Send,{Blind}{BS} 
; Enter 
F13 & Space::Send,{Blind}{Enter}
;-----------------------------------------------------
; three dot reader 
F13 & sc027::Send,{…} 

(概要)

左カーソル: F13 (CapsLock) + B / F13 + H
右カーソル : F13 (CapsLock) + F / F13 + L
上カーソル : F13 (CapsLock) + P / F13 + K
下カーソル : F13 (CapsLock) + N / F13 + J

Home : F13 (CapsLock) + A
End : F13 (CapsLock) + E

Page Down : F13 (CapsLock) + V
Page Up : F13 (CapsLock) + S

Delete : F13 (CapsLock) + D
Backspace : F13 (CapsLock) + Alt / F13 (CapsLock) + U
Enter : F13 (CapsLock) + Space
行末まで削除 : F13 (CapsLock) + I

3点リーダー (おまけ) : F13 + ; 

 

※ 最初、H, L, K, JはAltと組み合わせて

!h::Send,{blind}{Left}
!j::Send,{Blind}{Down}
!k::Send,{Blind}{Up}
!l::Send,{Blind}{Right}

と入れていたのですが、 別のショートカットとバッティングすることがあったので、F13との組み合わせに変更した。

結局、mac風のもvim風のも、慣れたらどちらとも使い勝手がよく、

メール系やサイト閲覧系などの用途に合わせて

イメージしやすい方で使い分けています。

また、Backspaceは、

「Backspace : F13 (CapsLock) + Alt / F13 (CapsLock) + U」

と2つ割り当てていますが、

F13 + Alt: イラストレーターなどのグラフィック系ソフトを使用する際、右手は常にマウスを触っている状態で、左手だけでBSを打ちたい時に使用。
F13 + U: 通常の文章作成時に使用。

というように、使い分けています。

1つのショートカットを2つのキーにassignするって、

ちょっともったいないですが、

今のところ、他にたくさんショートカットキーを作る予定もないので、

このように使用しています。

 

 

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が変更できない時のトラブルシューティング

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

にほんブログ村 子育てブログ ワーキングマザー育児へ