このページの本文へ

前へ 1 2 3 4 次へ

KTUの自作キーボー道 第4回

カスタムキーマップで自作キーボードを自分の分身とする

2018年03月15日 12時00分更新

文● 加藤勝明 編集●北村/ASCII編集部

  • この記事をはてなブックマークに追加
  • 本文印刷

配列を作り込む

 まずは_QWERTYレイヤーからキーマップをテコ入れしていこう。筆者の考えはこうだ……デフォルトのキーマップだと、親指で押すキーがSPC(Space)とENT(Enter)に2つとも割り当てられているし、ESCが左上でやや遠い。

 右上のBSPC(BackSpace)キーの下がDELなのは、誤爆が多くて使いづらいと感じた。KinesisやErgodoxに合わせて左手親指にBSPC、右手親指にSPCを移動させたい。Aキー左もCtrlにしたい……。こんな感じでキーを“置いていく”のだ。

Irisデフォルトの_QWERTYレイヤー。赤丸を付けたキーの配置が(筆者としては)我慢がならない部分。親指部分の配置をErgodox系に寄せつつ、日本語入力に優しくしたい

QMKのキーマップはカンマがキーの境界を示すので、カンマの総数を変えないように編集しよう。左手に偏っていたレイヤー切り替えキー(LOWRとRASE)を左右に分けたはいいが、Altキー(LALTまたはRALT)の場所は後で考えなくてはならない……

 単一キーマップでは網羅しきれないキーが山のように出てくる。上の例では「Alt」だが、他にもカーソルキーなど省略せざるを得ないキーが山のようにある。これを解決するのが「デュアルロールキー」と「レイヤー」。特に前者は自作キーボードの真骨頂といえる機能だ。

 デュアルロールキーとは名前の通り2つの機能を1キーに持たせるということ。具体的には“タップ(短押し)”時と“ホールド(長押し)”時で違うキーとして利用できる。例えばタップでTabキー、ホールドでAltキーとすれば、2つのキーが1つに統合できる。これを利用して修飾キーを左右に設置しておくと非常に便利なのだ。

 今回の例では、以下のようなデュアルロールキーを作っている。LGUIが多いのは、筆者がMac環境でも使うことを想定しているためである。

  • タップでBSPC(BackSpace)、ホールドでLGUI(左Win)
  • タップでTAB、ホールドでLALT(左Alt)
  • タップでSLSH(スラッシュ)、ホールドでLGUI(左Win)
  • タップでDOT(ピリオド)、ホールドでLALT(左Alt)

AltとWinキーをデュアルロールキーで使うためにはMT(MOD_XXX, KC_YYY)という表記を使う。1行目はタップでBSPC(BackSpace)、ホールドだとLGUI(Win)キーとして機能する。デュアルロールキーを上手く利用するとキーの数を効率よく減らせる

 だがデュアルロールが有効なキーはそう多くないので、レイヤーを活用しよう。Irisのデフォルトキーマップを叩き台にしているなら_LOWERと_RAISEの2レイヤーから調整しよう。

 カーソルキーは右手の一等地(J/K/L/;)に←↓↑→の順番で置くことで、ホームポジションから極力指を動かさずにカーソル制御を行ないたい……などなど、自分の理想を詰め込んでいこう。

一番使用頻度の高いものを_LOWERレイヤーに集めた。緑枠内、右手の超一等地にはカーソルキー(緑枠)、IMEの操作はその下(橙枠)、紫枠内の「LANG1」「LANG2」はIMEのモードを直接切り替えるキーコードが出る。そして左手赤枠内には、カーソルを移動させながらそのままコピペできるようショートカットを配置した

RAISEレイヤーにもカーソルキーを配置しているが、こちらはWASDに配置。周囲の「NO」は誤爆を防ぐために“何もしない”キーの意味だ。橙枠はiTunesの再生制御やボリューム調整、右手側の水色枠はAtomで多用するショートカットを登録している。またPARANやSQUAR等の青枠内のキーは、カッコ記号を2つ入力するためのもの(今回解説は割愛する)

ショートカットはすべてkeymap.cの序盤で宣言して、4文字のキーワードに短縮登録してしまう。例えばCtrl+Shift+Kは「LCTL(LSFT(KC_K))」と本来表記するが、これを「KC_AKIL」と宣言しておけば、キーマップ上には「AKIL」の4文字を書くだけで済む。AKILは“Atomで行削除(Kill Line)”をイメージするためのもの

ショートカット類もひとつひとつ登録する。前半部分はMac環境で使うコピー&ペースト系のショートカットやCtrl+Alt+Delを一発で送信するキー、後半はIMEでよく使うショートカットなどを登録しておいた

 レイヤーの切り替えキーもデュアルロールにすることも可能だ。今回の例ではEnterキーやSpaceキーを右手親指側に配置しているが、これらをホールドした時に_LOWERレイヤーに切り替わるようになれば、大抵のショートカットが親指+任意のキーという形で発動できるのだ。

 ここまでのキーマップは基本的に両手を使って文字入力をするためのものだが、Excelで数字を集中的に入力するには使いにくい。そこで数字入力特化のレイヤー「_NUMPAD」を追加してみよう。このレイヤーは一度切り替えたら、手を離してもそのままの状態を保持するようにしておきたい。

 ……と、こんな感じでさらにQMKならではの機能を用いて、便利なキーを追加していく。「ホールド時だけレイヤー切り替え」になるキーと「ダブルタップしたらレイヤーへ切り替え」という2つのやり方をチェックする

右手親指側、左下2つのキーはEnterとSpaceに割り当てたが、ここは親指にとっての一等地でもある。これら2つのキーはホールドした時に_LOWERへ切り替える機能を持たせたい。そしてもともとLOWRに割り振った図中右下のキーは、押しにくい“死にキー”。ここには数字入力用のレイヤーへ移行するキーを置く

keymap.cにレイヤー切り替え用の宣言を追加した。最初のLT(……が含まれる行(KC_SPLWとKC_ENLW)がホールドした時レイヤーを切り替えるもの、一番下のTT(……の行(KC_NPD)が複数回タップで_NUMPADレイヤーに切り替える宣言だ

レイヤーを追加する場合はレイヤー名宣言部分に#define文を追加する。レイヤー名_NUMPADに続く数字は_RAISE以上_ADJUST未満のものを入れておく。下のenum……の部分にも「NUMPAD,」の項目を入れておく

キーマップの_RAISEと_ADJUSTの間に新たに_NUMPADレイヤーを作る。Iキーを中心にテンキー上に数字キーを配置したほか、Excelでセル移動に使う「TAB」や「STAB(Shift+TAB)」等を集約。左手側はカーソル移動やワンキーでコピペやアンドゥが発動できるようにするなど、Excel使用時の入力省力化を主眼において構成

レイヤー切り替えにTT(……)を使う場合は、keymap.cと同じ階層にあるconfig.hに図中赤線のような#define文を追加する。TAPPING_TOGGLEが2、TAPPING_TERM 150の場合、150ミリ秒以内に2回タップすればレイヤーがオン・オフされる

レイヤー切り替えキーの宣言を追加たら、キーマップ側にそのキーコードを反映させる。_LOWERレイヤーへの切り替えが2つあるのは、筆者がまだどちらが良いか決めかねているためだ

まだまだ改善の余地はある

 かなりのテキスト量を使ってキーマップのカスタマイズ例を解説してきたが、まだQMKには面白い機能がある。これをすべて解説することはできない。Githubにはさまざまなユーザーが作ったキーマップがアップされているので、それを見て参考にするといいだろう。

筆者の現在のIris。はんだ付けを少しやり直し、ついでにキーバックライトと側面の壁を追加、さらにケーブルも金属っぽいものをチョイス。上下のプレートをアクリル板で作った2号機もサブ機として運用中だ

 筆者のキーマップも試行錯誤を重ねつつ常に変化している。一度変えたらしばらく使ってみて、駄目なら戻すの繰り返しになることも多いが、やはり自分の究極の環境を作り上げていく楽しさは普通のキーボードではなかなか味わえない。

 まるっきり無経験からだと相当難しそうに思うかもしれないが、チャレンジする価値は十分にある。ぜひ読者の皆さんも自分なりのendgameキーボードを目指していただきたい。

前へ 1 2 3 4 次へ

カテゴリートップへ

この連載の記事

注目ニュース

ASCII倶楽部

ピックアップ

ASCII.jpメール アキバマガジン

ASCII.jp RSS2.0 配信中