« 改善 | トップページ | たった1枚で »

2021年12月20日 (月)

Caps Lockキーを修飾キー化

朝はいい天気だった。

お昼過ぎから、曇ったり晴れたり。

太陽の傾きがとても低くなっている。

 

昨日の続きで、Caps LockキーのEnterキー化について、ネットで調べてみると、面白い情報があった!

CapsLockキーを超便利なキーに変更する方法 (Windows)

なんと、Caps Lockキーを修飾キー化して、新たなショートカットキーを作るというもの。

修飾キーっていうのは、英数字のように、打っても何も表示されないキー、Ctrlキー、Altキー、Shiftキーのようなもの。

Caps Lockキーを、そういう修飾キーとしてしまうという手法なのだそうだ。

 

まずは、Caps Lockキーを、一般的なキーボードには存在しない「F13」に割り当てる。

割り当てるのは、数日前に紹介したこれで実施した。

SharpKeys | randyrants.com

変更して、ログオフするか、再起動。

 

そして次に、

AutoHotkey

をインストールする。

このAutoHotkeyはとても有名なソフトウェアだよね。

スクリプトを書いて、ショートカットキーを作ったり、マクロを作って作業を効率化させられるエンジン・ソフトウェア。

もちろん、存在は知っていたけれど、使う必要性を感じていなかったから、手を付けていなかった。

僕的には、インストールしたくないので、ポータブル化したい。

【連載】AutoHotkeyのインストール・環境構築 - スズキのあしあと

を参考に、インストールしないでも使えるようにしてみた。

ポータブル化しておけば、その環境を簡単に持ち出せるしね。

AutoHotkeyを使う上において、どのキーがどう表現されるかを知っておかないといけない。

キーリスト - AutoHotkey Wiki

は何度も見ることになるでしょう。

 

で、Caps LockキーをF13に割り当て、ショートカットキーを作ってみた。

これ、めっちゃいい!

CtrlキーやAltキーって、色んなソフトウェアで既にショートカットキーが設定されているので、存在しないショートカットキーを探しながら、覚えにくい英数字を割り当てるなんて、あまり効率のいいことではない。

でも、Caps Lockキーを修飾キー化すれば、F13なんて存在しないので、自由自在にショートカットキーを割り当て出来る!

これは素晴らしいことだと思う。

まず、Caps LockキーF13を、Enterキーに割り当て。

F13:: Send, {Blind}{Enter}

Caps Lockキーは、F13に割り当て済みなので、左側にF13を書き、右側にEnterキーを指定するだけ。

これで、Caps Lockキーを一度押すだけで、Enterキーとして振る舞ってくれる。応用版は後述。

 

AutoHotkeyそのものの話になるんだけれど、AutoHotkey用にファイルを作成する必要性がある。
その中に、スクリプトを書きこんでいく。

拡張子は「ahk」で、「UTF-8 BOM付き」で作成のこと。

そして、「パス\AutoHotkey.exe パス\スクリプト名.ahk」として起動する。

そうすると、トレイアイコンに、AutoHotkeyのアイコンが現れる。

ahkファイルを編集し、保存するだけでは、編集内容は反映されない。

AutoHotkeyアイコンを右クリックして、「Reload This Script」をクリックして、反映される。

スクリプト編集をしたい時、右クリックのメニューの中の「Edit This Script」を選択すると、「メモ帳」で開いてくれる。

でも、出来れば、自分のお気に入りのテキスト・エディターで編集したいよね。

調べてみると、AutoHotkeyをインストールした場合は、レジストリを編集すれば変更可能のよう。

でも、ポータブル化してしまうと、そういうことは出来ない。

どうやら、テキスト・エディターにahkファイルを引数として渡して起動する必要性があるようだ。

バッチファイルなり、ショートカットを作ってもいいだろうけれど、AutoHotkeyから起動させるのも一つの手。

F13 & 4:: Run "フルパス\テキスト・エディター名.exe" "フルパス\スクリプト名.ahk"

この例では、F13と数字の「4」を押すと、お好みのテキスト・エディターで、そのスクリプトを開くようにしている。

話を少し戻して、「パス\AutoHotkey.exe パス\スクリプト名.ahk」として起動するって書いたけれど、Windows起動時に自動起動させたいなら、ショートカットを作成するか、バッチファイルを作成して、スタートアップに登録しておけばいい。

そうすれば、自動的に起動してくれるので、スクリプトを編集したい時は、F13+4で、そのスクリプト・ファイルを開いてくれる。

次にやりたいことは、編集したスクリプトをリロードする処理。

編集が終わったら、保存して、AutoHotkeyのアイコンを右クリックして、「Reload This Script」を押せばいい。

でも、毎回こんなことやっていたら面倒。

これもスクリプト化すればいい。

F13 & 5::
Send, ^s
Sleep,1000
Reload
Sleep,500
MsgBox,リロード失敗
Return

まずは、「Ctrl+S」で、上書き保存。
このショートカットは、ほぼどのテキスト・エディターでも同じでしょう。

そして、リロードしている。

最初の頃、上記を実行してもリロードしてくれなかった。
もう1回リロードすると反映するのだけれど、どうも保存とリロードの間隔が短いと保存とのタイミングがズレて反映されないようだ。

よって、コマンドの間に、Sleepを入れて、間を置いてからリロードするようにしたら、一発で反映されるようになった。
そして、エラーでリロードが失敗すると、メッセージが表示されるようになっている。

これで、いちいちアイコンをクリックしないで済む。

 

ここからは、ここ数日使ってみて、いいかな、と思ったスクリプトを例として書いておこうと思う。

ただ、使い始めて数日なので、書いている内容がAutoHotkeyの本来の書き方に相応しいかどうかはわからない。
でも、動いているからいいかな、と。(苦笑)

ショートカットのキーそのものは、ご自身の好きな英数字に置き換えるといいでしょう。「& e」とかの英字部分。

まずは、キーボードの右側にある矢印キーやPageUp/Down、Home/Endを左手で操作出来るようにする。

;CapsLock+英字で矢印キー

F13 & e::Send, {Blind}{Up}
F13 & d::Send, {Blind}{Down}
F13 & s::Send, {Blind}{Left}
F13 & f::Send, {Blind}{Right}
F13 & a::Send, {Blind}{Home}
F13 & g::Send, {Blind}{End}
F13 & r::Send, {Blind}{PgUp}
F13 & t::Send, {Blind}{PgDn}
F13 & q::Send, {Blind}{Delete}
F13 & w::Send, {Blind}{BackSpace}

; Alt+←、→
F13 & c::!Left
F13 & v::!Right

; Alt+Shift+Enter, Alt+Enter
F13 & h::Send, !+{Enter}
F13 & b::Send, !{Enter}

せっかくなので、Webブラウザやファイル・エクスプローラを使っている時の遷移も左手で出来るように。

あと、Webブラウザのロケーションバーに文字を入れ、タブを裏で開きたい時に、いちいち「Alt+Shift+Enter」を押すのも面倒なので、それもショートカットキー化。

これ、やってみればわかるけれど、かなりいい。

右手がトラックボール(マウス)にあっても、いちいち手を外して、それぞれのキーを押さなくて済む。
右手はトラックボールに置いたままで、左手で矢印キーやら何やらを操作出来る。
慣れるまでちょっと時間掛かるけれどね。

 

次は、お、と思ったもの。

Alt+F数字キーを押す時、F数字キーって、ちょっと離れた場所にあるよね。

それを、Alt+数字キーにしてみるのもいいかもしれない。
そうすれば、指をあまり伸ばさなくてよくなる。

が、自分的に問題が!

使っているソフトウェアで、Alt+数字キーを使っているものがある。
そうなると、それが使えなくなってしまう。

でも大丈夫。

そのソフトウェアの時だけ、無効、というか、通常通りのAlt+数字キーで動くようにすればいい。

!4::
If WinActive("ahk_exe aaa.exe"){
Send {Blind}{Alt}4
} else {
Send {Blind}{F4}
}
return

上記の例だと、Alt+4を押した時、Alt+F4として動作させるためのもの。
これは、そのウィンドウを閉じる時に使うショートカットキー。

「aaa.exe」というプログラムの時だけ、Alt+4で動作させ、それ以外の時は、F4キーとして動作させるというもの。

どのプログラムがどのような名称かは、AutoHotkeyのアイコンを右クリックして、「Window Spy」というプログラムを起動して調査する。

それを起動させて、対象となるソフトウェアのウィンドウをクリックすると、そこに情報が出てくる。
その情報を書き込む。

「ahk_class」でもいいけれど、「ahk_exe」のEXEファイル指定の方がわかりやすいと思うので、それを使う。
でも、場合によっては、Class指定の方がいいこともあるかもしれない。

これを知っていれば、このソフトウェアの時はこうして、ということが出来るようになる。

 

次は、ちょっと便利かな、というツール的なもので、日付表示。

#Hotstring *
#Hotstring O
::ddf:: ; today's date
FormatTime, now,, MM月dd日(ddd)
SendInput %now%
;Clipboard = %now%
;Send,^v
return
::ddr:: ; tomorrow's date
tmr = %a_now%
tmr += +1, days
FormatTime, tmr, %tmr%, MM月dd日(ddd)
SendInput %tmr%
return
::ddv:: ; yesterday's date
yst = %a_now%
yst += -1, days
FormatTime, yst, %yst%, MM月dd日(ddd)
SendInput %yst%
return

上記の例では、「ddf」を押すと、今日の日付と曜日が、「ddr」を押すと、明日の日付が、「ddv」を押すと、昨日の日付が表示されるようになる。
(英字部分は、お好みで。)

コメント化しているのだけれど、クリップボードに保存して、Ctrl+Vで反映させるやり方もある。

 

次は、あまり使っていない右Altキーを押すと、MS-IMEをオン・オフにするというもの。

RAlt::
If (A_PriorHotKey = "RAlt") AND (A_TimeSincePriorHotkey < 200){
Send, {RAlt Down}
KeyWait, RAlt
Send, {RAlt Up}
Send, ^{Space}
}
Send, ^{Space}
return

自分の場合は、Ctrl+Spaceで、オン・オフしている。
日本語キーボードであれば、全角/半角キーを送信コマンドとして指定してあげればいい。

 

最後は、修飾キーを2回以上押した時に、何かを実行したい場合。

F13::
cl++
SetTimer check_CL, -300
return
check_CL:
if (cl = 1) {
Send, {Blind}{Enter}
; MsgBox, 1
}
if (cl = 2) {
Send,{Blind}{CapsLock}
; MsgBox, 2
}
if (cl = 3) {
;Send,{Blind}{CapsLock}
; MsgBox, 3
}
cl = 0
return

この場合は、F13キーを押すのを遅延させて、その回数を実行しているやり方。

上記の場合であれば、1回押せば、Enterキーを送信。
最初の方に、「F13:: Send, {Blind}{Enter}」を書いたけれど、やっぱりCaps Lockキーも有効にしたいな、と思った場合は、上記のように、1回のところにそれを入れる。

そして、2回F13キーを押すと、Caps Lockキーを送信するようにしている。

このようにしておけば、Caps LockキーはF13にしていて無効化されているけれど、使いたい時は有効に出来るのでいい。

これを応用して、先述の、右Altキーを押した時にMS-IMEをオン・オフにするというのを、2回連続でAltキーを押せば、MS-IMEを有効化、なんてすることも出来る。

RAlt::
ra++
SetTimer check_RALT, -800
return
check_RALT:
if (ra = 1) {
; MsgBox, 1
}
if (ra = 2) {
Send, ^{Space}
; MsgBox, 2
}
if (ra = 3) {
; MsgBox, 3
}
ra = 0
return

タイマーの数値は、ミリ秒。

数字を大きくすれば、待ち時間が長くなる。

F13キーを押した時の方は、Enterキーとしても使いたいので、短めに設定。
この場合は、ゆったりめに設定している。

2回以上押した時に動作させるこれを知っておけば、他のCtrlキーやShiftキーなんかにも応用出来るよね。

 

と、ここ数日触っていて、ネットで調べてよさそうなものを紹介。

ただ、このAutoHotkey、わかりづらいというか、どういう時にこうなる、っていうのがわかりづらい。

例えば、今回のAltキー。

「!」でいいのか、「Alt」でいいのか、「{Alt}」でいいのか、いまいちわからない時がある。

トライ&エラーでやってみるしかないかな。

あとは、押した時「Alt Down」、押し上がった時「Alt Up」という表現もあるので、設定次第では、そういう表現も必要になるかもしれない。

昔からとても有名なAutoHotkeyを今更ながら使い始めることになろうとは思いもしなかったよ。(笑)

でも、このCaps LockキーをF13にして、修飾キー化することによって、随分と操作が改善されるので、これはとてもいいと思う。

もし、日本語キーボードを使っていて、「変換キー」や「無変換キー」をほとんど使っていないなら、これらのキーも修飾キー化してしまえば、更にショートカットキーを増やすことが出来るよね。

これからしばらくは、AutoHotkeyと遊ぶことになりそうだ。(笑)

|

« 改善 | トップページ | たった1枚で »

パソコン・インターネット」カテゴリの記事

コメント

コメントを書く



(ウェブ上には掲載しません)




« 改善 | トップページ | たった1枚で »