最近リアルフォースを購入してみたのですが、いろいろ思うところがあり、キー数の少ないレイアウトのキーボードにも挑戦してみようと思っています。
リアルフォースの記事はこちら。
購入したのはフルキーのリアルフォースなのですが、あーだこーだ考えた結果、極限までキーを削って、そのキー操作に慣れることこそが後々のキーボード体験を向上させることにつながるのではないかという結論に至りました。
HHKBにスムーズに移行したい
さて、そんな状況の中、無策で新たに変態キー配置のキーボードを追加しても、結局使いづらい、という結論になるのは嫌だったので、何か予習できる良い方法はないのかと色々考えました。
変態配置のキーボードというのはこういうやつです。
むちゃくちゃ高いです。
ですので、いきなりこれを買って「やっぱ俺には無理だったわー」ってなる展開は出来れば避けたい。
そこで、どうにか現状のキーボードで最小のキー配置での実際の使い心地を再現できないかという事で今回試行錯誤してみました。
サードパーティ製のキーマッピングツール
いきなりの超結論ですが、その筋では有名なAutoHotKeyというフリーツールがあるようです。
一体どういったアプリケーションなのかというと、キーマッピングを自由自在に操ることが出来る割と神ツールです。
軽く調べた限り、ほぼほぼ自由自在で、基本的にメーカー純正で出ているキーマッピングツールでできることは全て出来そうだなという印象。
Windowsの純正ソフトウェアでもキーマッピングツールの開発が進んでいるようなのですが、実際に重要なのは、キーマッピング出来ることであって、ソフト自体は別にこだわる必要はありませんので、AutoHotKeyで行きたいと思います。
効率的なキー配置について考える
何となく実現できそうなツールは発見できましたので、実際に配置されるレイアウトについて考えていきます。
やりたい事を一言でいうとホームポジションから手を動かさずにほぼ全ての操作をキーボードのみで完了させることが出来る環境を作ることです。
具体的にいうとこの写真の位置のみによく使うキーを全て再現していきます。
ちなみに機種はこちら。
一応上記キーボートの配置を前提として今回のスクリプトを製作していきます。一般的に使われているキーボードと違う部分があるとしたら、「英語配列」であるという事くらいです。
英語配列と言っても、スペースキーの形が違うのと、記号の入力位置が普通と少し違うくらいで、それほど大きな違いはありません。
コンビネーションで再現するキー
さて、この狭い範囲で不便を感じないレベルでコンビネーションを使って各種キーを再現していく必要があります。
僕がよく使うけどのこの範囲にないキーを書き出します。
カーソルキー
もうこれは必須も必須、どう考えても要ります。
矢印のヤツですね。キーは合計で四つです。
Deleteキー
これも必須です。フルのレイアウトだと、カーソルキーの上の方にあるDeleteキーは何とかしてねじ込んでいきたい。
BackSpace
Deleteと同じく、コーディングやブログを書くときに無茶苦茶押す頻度が高いですが、何気にホームポジションから考えると遠い位置に存在していて、手の小さい僕は全開に小指伸ばしても届かないレベルです。
もちろん、軽くて首を浮かせれば届くには届くのですが、使用頻度も高いキーなのでもうちょっと楽な位置で押すことが出来たら非常に便利になりそうと感じましたので、これもねじ込んでいきます。
Homeキー / Endキー
この二つはニコイチです。
コーディングや物書きをする方は共感いただけるかと思いますが、めちゃくちゃ使います。
これを再現しないわけにはいかないので、もちろんマッピングを考えます。
PageUp / PageDown
ブラウジングだけならSpace / Shift + Space で代用できるのですが、コーディング等のエディタを使っている際も比較的使う頻度が多いので、ここ二つも欲しいところです。
一通り書き出しましたが概ねこんな感じ。
F1~F12のファンクションキー一式は使うっちゃ使う(特にF7~F10)んですが、使うキーに関しては、基本的にCtrlコンビネーションでショートカットが使えることが多いので、一旦ここまででAutoHotKeyのスクリプトコーディングしていきます。
AutoHotKey
具体的にどういったソフトなのかというと、専用のスクリプトをテキストエディタで編集して、そのスクリプトに基づいて、キーを監視します。
スクリプトで指定されたキーの入力を検出するとAutoHotKeyがキーを置き換えて送出するという仕組みのようです。
インストールしているウイルス対策ソフト次第ではウイルス判定を受ける可能性もあるようです。
キーロガーって感じの判定になるんでしょうね。
Windowsディフェンダーには弾かれません。
AutoHotKey自体はバックグラウンドで常に起動させておく必要があり、起動していない状態ではスクリプトで指定したキーマッピングは有効になりません。
AutoHotKeyの使い方
UIと呼べるUIはほぼ持たず、基本的に操作の大部分はスクリプト(テキストファイル)によって行います。
「え、スクリプトってなんか難しそう」と思うかもしれませんが、まぁ待って下さい。
やってみればそれほど難しいという事はありませんし、最悪誰かが書いてるスクリプトをコピペすればその通り動くってのがこの仕様のいいところです。
端末を変えたときは、AutoHotKey自体をインストールする必要はありますが、設定自体がスクリプトファイルなので、ドロップボックスの様なクラウドストレージにスクリプトを保存しておけば、どの端末からでも同じキーマッピングで操作することが可能ですね。
AutoHotKeyをインストールする
とりあえず公式ページがあるようなので、ダウンロード&インストール。
特に何も難しくないので解説は省略します。
スクリプト(テキストファイル)を準備する
スクリプトというと、何となく難しそうだという事で身構えてしまう方も多いかもしれませんが、なんてことはないただのテキストファイルです。
AutoHotKeyに限らず、スクリプトの実態はただのテキストです。
必要以上に難しく受け止めることはありません。
まずは任意の位置にテキストファイルを作成します。
Windows標準のメモ帳でもOkですし、僕はサクラエディタ(無料)という軽量のテキストエディタを好んで使っています。
適当にテキストエディタを立ち上げて、とりあえず名前を付けて保存します。
注意すべき点は拡張子です。
普通のテキストファイルではなく、AutoHotKeyのスクリプトであるという事を示すために、拡張子を「ahk」として保存する必要があります。
ファイル名はなんでもOKです。
AutoHotKeyがインストールされている状態で、正しくスクリプトファイルを作成すると、ファイルのアイコンがこのような状態で表示されます。
このスクリプトファイルのアイコンをダブルクリックすると、スクリプトが実行されキーのマッピングが適用されます。
普通にダブルクリックすると動作の開始として認識されてしまうので、以後スクリプトファイルを編集しようとする場合は右クリックの「プログラムから開く」からテキストエディタを選択して、編集を開始する必要があります。
AutoHotKeyスクリプトの書き方
上でスクリプトはただのテキストであると説明しましたが、問題はそのテキストの記述ルールです。
ルールを守って記述しないと正しく動作の認識はされませんし、最悪動作自体しません。
ここで「ああ、難しそう」となるのは分かりますが、最悪でも「動かない」のダメージです。
いきなりPCがぶっ壊れたりすることは基本的にありませんので、必要以上に恐れることはありません。
という事で、AutoHotKeyのスクリプトの基本中の基本を少し解説していきます。
単純な置き換え
a::b
単純なキーの置き換えは「::」コロン二つで表すことが出来ます。
上記の例では「a」のキーを押したとき「b」の信号を送出すると言うスクリプトです。
簡単でしょ??
よく使う装飾キーのコンビネーションを置き換える
よくホットキーとして使われるいくつかのキーにはスクリプト上での省略記号が割り当てられています。
それぞれ、右側の省略記号であらわすことが出来ます。例えば「Ctrl + w」を「b」に置き換えたい場合は以下の様に記述します。
^w::b
こうすると、「Ctrl + w」を押した場合「b」が押されたと認識されます。
もちろん、送出する側のキーを装飾キーのコンビネーションに置き換えることも可能です。
a::^c
上記の場合、「a」というキーを「Ctrl + c」として置き換えて送出します。
装飾キー以外のコンビネーションを置き換える
装飾キー以外のコンビネーションを置き換えることもできますが、ちょっとだけめんどくさくなります。
まず置き換えられる側のキーのコンビネーションは&で繋いで表現します。
a & b::c
これは「a」キーと「b」キーを同時に押した場合「c」キーを送出する、というスクリプトです。「&」の両サイドのスペースも意味を持っていて、必ずスペースを空ける必要があります。
置き換え側で装飾キーも使えます。
a & b::^c
これは「a」キーと「b」キーの同時押しで「ctrl + c」が送出されます。
装飾キー以外のコンビネーション「に」置き換える
ちょっとややこしいんですが、置き換える側のキーが標準の装飾キー以外のコンビネーションであった場合は「Send」コマンドを使う必要があります。
具体例は以下です。
a::Send,{BackSpace}{Delete}
「a」というキーを押したときに「BackSpace」「Delete」のコンビネーションを送出します。
少し細かいですが意味があるのかはさておき、Sendでないとキーを置き換えできない状況が存在します。
実際にAutoHotKeyのスクリプトでキーをマッピングしてみる
では、本番です。
今回は左手一本でホームポジションを崩さずに各種ナビゲーションキーを再現するというスクリプトを作成してみます。
左手で扱うキーの中で「別にお前、そこにいなくていいんじゃね?」的なキーといえば・・・?
そう、「CapsLock」です。
かの有名なHHKBなんかではCapsLockの位置にCtrlが設置されていたりと、何かと効率的な配置になってるんですね。
これを模して、今回は「CapsLock」絡みのコンビネーションで、各種ナビゲーションを再現していきます。
CapsLockはキーの中でもちょっと特殊
CapsLockキーは各種キーの中でもちょっと特殊なキーのようで、コンビネーションを置き換えること自体は割と普通にできるのですが、CapsLockキー本来の動作が絡んできたりして、普通にやっていてはキー単体の動作を完全に殺しきることが出来ません。
capslock::ctrl
このように書きたいのは山々なんですが、普通にCapsLockの動作が残ってしまい挙動が全く安定しません。
「ChangeKey」などの、レジストリを編集するタイプのソフトを使って、CapsLockを完全に無効化して「F13」などの仮想キーに置き換える手法を解説しているブログなんかも多いのですが、問題が多いと感じました。
まず、たった一つの目的を達成するのに、似たようなソフトを2つも使わなければいけない時点で少し違和感がありますし、自分が使う端末ごとに設定を施していく際に手間も倍増します。
共用のPCではレジストリの編集自体が許可されない場合も多いかと思います。
ってことで、色々調べた結果。
ありました。
まさにやりたかったことはこれ。
どうやら「CapsLock」と記述するのではなく「sc03A」というキーコードに置き換えることで、いい感じの動作になるとのこと。
でも、CapsLock本来の動作もちょっと残したい
わがままですが、僕別にCapsLockを完全に使わないってわけじゃないんです。
というより、割と使います。
大文字小文字の入力を固定するときもありますし、日本語入力/英語入力を切り替えるときなんかも普通に使ってます。最近使ってるキーボードが全部英語配列のため、かな切り替えキーが存在しないんですね。
ってことで、「CapsLockをダブルクリック(二連入力)した時に本来の動作(一部)できるようにしよう」と思いつきました。
厳密にはクリックではないですよね。何て言うんでしょう。
取り合えず調べました。
ありました。
パイセン流石です。
先人たちのおかげで難関二つをクリアし、完成しました。
AutoHotKey(Left Nav)
① 全て「CapsLock」の同時押しです。
② ゲームなんかで使う「WASD」キーに基本のカーソルを振っています。
③ 「W」の両サイドにCtrl +(← or →)
④ スペースをバックスペースに。
⑤ よく使うCtrl + ○○ 系のそのままのポジションで使えるように。
sc03A:: Keywait, sc03A, U ;ここで1回目のキーが押し上げられるのを待ちます Keywait, sc03A, D T0.1 ;0.1秒待ちます.この間にEscが押されれば成功=0,失敗なら1がErrorLevelにはいります. If (ErrorLevel=1) ;直前のコマンド=Keywaitがタイムアウトで失敗=1なら { Send,{Blind}{F13} ;シングルで入力されたら無効なキーを送出 } else { Keywait, sc03A, U Keywait, sc03A, D T0.1 If (ErrorLevel=1) { Send,{Blind}{CapsLock} ;ダブルクリックの場合大小文字切り替え } else { Send,{Blind}+{CapsLock} ;トリプルクリックの場合かな/英語切り替え } } return sc03A & a::left sc03A & w::up sc03A & s::down sc03A & d::right sc03A & f::End sc03A & r::Home sc03A & e::^right sc03A & q::^left sc03A & c::^c ;copy sc03A & v::^v ;past sc03A & t::^t ;半角英数(F10) sc03A & i::^i ;全角カタカナ(F7) sc03A & o::^o ;半角カタカナ(F8) sc03A & u::^u ;よくわからん sc03A & p::^p ;全角英数(F9) sc03A & x::^x ;cut sc03A & z::^z ;undo sc03A & y::^y ;redo sc03A & 1::PgUp sc03A & 2::PgDn sc03A & 3::Delete sc03A & `::Esc sc03A & Space::BackSpace
特にSpace → BackSpace が結構いい感じです。
更に通常のCapsLockの動作の中でもよく使う動作は残していて、
- ダブルクリック:大文字/小文字の固定を切り替え
- トリプルクリック:日本語入力/英語入力を切り替え
となっています。
この他にもマウスの操作自体をキーボードから行えるようにも出来るみたいなのでまた機会があれば考えて挑戦してみます。
コメント