Eyes, JAPAN Blog > 自作キーボードで作業環境の効率アップ

自作キーボードで作業環境の効率アップ

shimizu

この記事は1年以上前に書かれたもので、内容が古い可能性がありますのでご注意ください。

「自作キーボード」というジャンルがあります。PC用のキーボードにこだわりを持ち、使いやすい製品を探求し続けるIT技術者やゲーマーは数多くいますが、好みのパーツを組み合わせて自分用のキーボードを作ってしまおうというのがその趣旨です。昨年はテレビ番組の特集でも紹介され、興味を持っている方も増えてきていると思います。

自作キーボードを取り扱う専門店では、必要なパーツがセットになったキット製品や、はんだ付け不要で比較的簡単に組み立てられるセットが提供されており、作り方を参考にして工作することができます。とはいえ、すべてのキーを備えたフルキーボード作りに取り掛かるのは初心者にとってはハードルが高いですが、少ないキーに限定した「マクロパッド」という小型のモデルもあります。ここではこれを作った実例と、実際の作業で効率アップにつなげる使い方について紹介します。

自作キットについて

今回の目的としては、PCでの動画視聴を行うときに便利なショートカットキーを集めたマクロパッドを目指します。私が選んだのはこちらのキットです。

8つのキーに加えて、左右に回転するツマミが付いています。ロータリーエンコーダーと呼ばれるこのツマミは、音量の上げ下げや再生位置の移動を行うのに便利そうです。キットには「PCB」と呼ばれるキーボード基板と、ロータリーエンコーダーの部品、ネジ等が含まれます。

このキットの組み立てに当たって揃えたパーツは、以下のとおりです。キットに含まれていない部品として、キーボードの処理を制御するArduino互換機であるPro Microと、キーの心臓部となるスイッチ、キーキャップを追加で揃えました。

組み立てる

キットに含まれる部品

公式のビルドガイドで解説されている組み立て手順にしたがって作り上げていきます。

左手用(TONE)か右手用(NOTE)を選んで組み立てられる


ProMicroにコンスルーヘッダーをはんだ付けする


キースイッチとロータリーエンコーダの取り付け

ProMicroの取り付け



ボトムプレートの取り付け

キーキャップとロータリーエンコーダノブの取り付け

ハードウェアはこれで組み立て完了です。

ファームウエアの書き込み

続いて、ファームウェアの書き込みを行います。TONE&NOTEでは、「QMK Firmware」という自作キーボード用制御ファームウェアを用います。用途に合わせてカスタマイズしたキーの割り当て(キーマップ)を設定したファームウェアを書き込むことで、好みのキーボードに仕上げることができます。

まずは動作確認

初めに、はんだ付け作業などのキーボードの組み立てが正しく行われて、キーが動作しているか確認するために、テスト用のファームウェアを書き込んで動作確認します。ビルドガイドの「ファームウェアの書き込み」の、「TONEの動作確認をする」に手順があります。書き込み用のツールであるQMK Toolboxを起動し、キーボードをUSB接続してファームウェアを書き込んでみましょう。正しく動作していれば、キーを押すとA~Hの文字が、ロータリーエンコーダーを回すと0または1の数字が入力されます。

※私が試した時点では、ビルドガイドに掲載されている配列とは異なり、キーの上段下段が入れ替わっていました。また、ロータリーエンコーダーの回転方向が左右逆の結果となりました。ビルドガイド執筆時点から現在までにQMK Firmwareの仕様が変わったことによるかもしれません。

テスト結果が問題なければ、TONE&NOTEのデフォルト配列であるAdobe Photoshop Lightroom Classic用キーマップのファームウェアも用意されていますので、Lightroomをお持ちの方は試してみるとよいでしょう。

キーの割り当てをカスタマイズする

それでは、自分独自のキー割り当てを行ってみましょう。QMK Firmwareでカスタマイズすることで、思い通りのキーマップを設定できます。

まずはQMK Firmwareの作業環境を作ります。今回はWindows 10のWSL上で動作するUbuntuでの作業を紹介します。

ビルド環境を作る

QMK Firmwareのリポジトリをcloneします。

$ git clone https://github.com/qmk/qmk_firmware

インストールスクリプトを実行します。

$ cd qmk_firmware
$ ./util/qmk_install.sh
$ make git-submodule

※もし「usb.hが見つからない」というエラーが発生したら、libusb-devをインストールして再試行してみてください。

TONEの設定ファイルをダウンロード

QMK FirmwareにはTONE用の設定ファイル(ソースコード)が含まれていないため、別途ダウンロードして配置します。ビルドガイドの説明どおり、 https://github.com/peraneko/TONE_NOTE_Rev2/tree/master/tone_rev2 をダウンロードして、QMK Firmwareのディレクトリ以下の keyboards\tone_rev2 に置きます。

設定ファイルのビルド

まずは、デフォルトの設定をそのままビルドしてみます。

$ make tone_rev2:default
(中略)
Compiling: keyboards/tone/keymaps/default/keymap.c                                             	keyboards/tone/keymaps/default/keymap.c:26:6: error: conflicting types for ‘encoder_update_user’
 void encoder_update_user(uint16_t index, bool clockwise) {
  	^
In file included from quantum/quantum.h:204:0,
             	from keyboards/tone/tone.h:18,
             	from keyboards/tone/keymaps/default/keymap.c:16:
quantum/encoder.h:26:6: note: previous declaration of ‘encoder_update_user’ was here
 bool encoder_update_user(uint8_t index, bool clockwise);
  	^
 [ERRORS]
 |
 |
 |
make[1]: *** [tmk_core/rules.mk:436: .build/obj_tone_default/keyboards/tone/keymaps/default/keymap.o] Error 1
Make finished with errors
make: *** [Makefile:530: tone:default] Error 1

すると、関数の引数や戻り値の定義に不整合があるとのエラーになりました。QMK Firmwareのドキュメントの情報から察すると、仕様変更があった可能性があります。

現在の仕様に合わせて、keyboards/tone_rev2/keymaps/default/keymap.cを以下のように修正しました。

@@ -23,10 +23,11 @@
 };

 /* Rotary encoder settings */
-void encoder_update_user(uint16_t index, bool clockwise) {
+bool encoder_update_user(uint8_t index, bool clockwise) {
	if (clockwise) {
     	tap_code(KC_UP);	//Rotary encoder clockwise
 	} else {
     	tap_code(KC_DOWN);  //Rotary encoder Reverse clockwise
 	}
+   return true;
 }

再度 make tone_rev2:default を実行するとエラーが解消され、tone_rev2_default.hex が生成されます。これをQMK Toolboxで書き込めば、TONE&NOTEのデフォルトファームウェアと同じキー配列になることが確認できます。

キーマップのカスタマイズ

それでは当初の目標である、動画再生用キーボードへのカスタマイズをしてみましょう。YouTubeの動画再生操作のショートカットキーを割り当てるようソースコードを変更します。デフォルトキーマップをコピーして、YouTube用のファイルを作ります。

$ cd (qmk_firmwareの第1階層)
$ ./util/new_keymap.sh tone_rev2 youtube

keyboards/tone_rev2/keymaps/youtube/keymap.c に作成されましたので、これを編集して行きます。

YouTube のキーボード ショートカットの説明を参考にして、キーの割当は次のように決めました。

  • キー上段: ブラウザ戻る(ALT+←)/速度を遅く(<)/フルスクリーン(F)/速度を速く(>)
  • キー下段: タブを閉じる(Ctrl+W)/10秒戻す(j)/一時停止・再開(k)/|10秒進める(l)
  • エンコーダー: 左回しで5秒戻す(←)/右回しで5秒進める(→)

これを反映したソースコードは以下のようになります。

const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
	[0] = LAYOUT(
    	C(KC_W),	KC_J,    	 KC_K, KC_L,
    	A(KC_LEFT), S(KC_COMMA), KC_F, S(KC_DOT)
	)
};

/* Rotary encoder settings */
bool encoder_update_user(uint8_t index, bool clockwise) {
   if (clockwise) {
    	tap_code(KC_LEFT);
	} else {
    	tap_code(KC_RIGHT);
	}
   return true;
}

ビルドします。

$ make tone_rev2:youtube

これでtone_rev2_youtube.hexが生成されますので、QMK Toolboxで書き込みます。

実際にYouTubeで動画再生して使ってみると、必要なキーがコンパクトにまとまっており、今まではフルキーボードのキーを押していた操作が手軽に行えるようになりました。また、ツマミを回して戻ったり進めたりすることで、より直感的にシークできるようになりました。

なお、割り当てられるキーの種類や指定方法については、公式資料を参照してください。

まとめ

今回は小型の自作キーボードとしてマクロパッドを作った実例と、実際の作業で効率アップにつなげる使い方について紹介しました。カスタマイズ次第で、自分に合った快適な作業環境を作れるのが自作キーボードの魅力です。全てのキーを備えたフルキーボードのキットにも、左右分割型であったり超小型であったり、バリエーションに富んだ製品が売られています。興味をお持ちであればぜひチャレンジしてみてください。

Comments are closed.