自作キーボードキット「Center x Enter」を組み立てました(ビルドログ・ソフトウェア編)
先日書いた、自作キーボードキット「Center x Enter」を組み立てました(ビルドログ・ハードウェア編)に引き続き、自作キーボードキット「Center x Enter」のキー配列(キーマップ)設定について書いていきます。
※キーマップ設定ツール「Remap」の説明と、ロータリーエンコーダーの設定がメインです。
ハードウェア編のおさらい
「ハードウェア編」では、こんなことを書きました。
・「Center x Enter」とは?
・ファームウェアの書き込み
・組み立て手順
この「ソフトウェア編」では、自作キーボードキット「Center x Enter」を物理的に組み立てた後のことを書いています。
組み立ての手順については「ハードウェア編」をご覧ください。
(本当は、「ファームウェアの書き込み」がソフトウェア編のメインになる予定だったのですが、ものすごく簡単にできるようになっていたのでハードウェア編に収めました)
「Center x Enter」のキーマップ紹介
ハードウェア編の「ファームウェアの書き込み」で書き込んだ、「Center x Enter」のVIAキーマップは以下のようになっています。
(画像はRemapのWebサイトで生成したPDFファイルをスクリーンショットしたものです。日本語入力キーボードでの表示にしています)
特殊なキーの読み方を簡単に記載します。
・キーの文字の下に、「*Alt」のような表記がされている場合 … キーを長押しすると「Alt」キーを押したことになる
・キーの文字の下に、「Layer(1)」のような表記がされている場合 … キーを長押ししたままにしておくとレイヤー1の文字が入力できる(短く押すとキーの真ん中に書いてある文字が入力できる)
・MO(3) … そのキーを長押したままにしておくとレイヤー3の文字が入力できる(短く押してもキー入力は特にされない)
・▽ … 上のレイヤー(番号が若いほう)のキーを引き継ぐ。例として、レイヤー0で「A」、レイヤー1の同じキーの場所に「▽」が書かれていたら、レイヤー0でもレイヤー1でも「A」が入力される
・空欄 … 基本的には、何も入力されないキー。特殊な割り当てが確認できている場合は都度記載しています。
※ロータリーエンコーダーを取り付けた場合、回転動作はマウスホイール回転に割り当てられています(ロータリーエンコーダー右回転がホイール上回転、左回転がホイール下回転)。これは、すべてのレイヤー上で同じ操作になります。
レイヤー0は、何も考えずにキーボードのキーを押したときに入力されるキーです。基本的なアルファベットを入力することができます。
また、長押しするとモディファイアキー(ShiftとかCtrlとかAltとか)になるキーが随所に散りばめられています。
真ん中のEnterキーは空白になっていますが、かな/英数(Lang1/Lang2)の切り替えに割り当てられています。
(ロータリーエンコーダーの押し込み動作は、ISO-Enterキーの真下のキーに割り当てられています。以下のレイヤーでも同様)
レイヤー1は、(レイヤー0の)「V」キーか「M」キーを押しながら押すと入力されるキーです。
Enterキーをはさんで左側の文字を入力したいときは「M」を押しながら、右側の文字を入力したいときは「V」を押しながら該当のキーを押します。
1段目が数字、2段目が記号、3段目がモディファイアキーに割り当てられています。
個人的には、各種括弧が同じ列(同じ指)で打てるようになっているのがポイント高い。
レイヤー2は、(レイヤー0の)「Q」キーか「K」キーを押しながら押すと入力されるキーです。
右側にカーソルキーが割り当てられています。
左側では「?」や「!」が入力できるようになっています。「?」「!」はセットで使うことも多いのに、普通のキーボードでは左上と右下に分かれているので、この配置は何気に便利そう。
レイヤー3は、(レイヤー0の)「Q」キーか「K」キーを押しながら「.」キーを押し、そのままの状態で押すと入力されるキーです。
(例えば、「Q」を押しっぱなし→「.」キーを押しっぱなし→右上のキーを押すと「F5」キーを押したことになる)
左側はLEDの色や光り方を調整できるキーに割り当てられています。
右側はファンクションキーに割り当てられています。
レイヤー4から下は、自動で設定されているもののようで、基本のVIAキーマップでは、キーボードからの操作で入力することはできません。
そのため、説明は省略します。
キーマップ設定ツール「Remap」について
「Center x Enter」のキーマップ変更は、「Remap」というWebサイトで簡単に行うことができます。
※「Center x Enter」では、ロータリーエンコーダーの回転動作は、Remapで変更できないので注意です。
「Remap」の詳しい説明は、サリチル酸さんのブログ記事「(初心者編)Remapを使ってキーマップを書き換えよう」をご覧いただくのがいいと思います。
「Remap」は日々機能が追加されています。上記のブログ記事には書かれていないこともあるので、2021年11月現在の「Center x Enter」での簡単なキーマップ変更について書いていきます。
(あくまでも執筆時点での画面表示・機能なので、古くなったらごめんなさい!)
「Remap」へのキーボード接続
WebHID APIに対応したインターネットブラウザ(Google Chromeを推奨)を立ち上げ、「Remap」のWebサイトを開きます。
「START REMAP FOR YOUR KEYBOARD」ボタンをクリックします。
接続がまだであれば、「Center x Enter」をUSBケーブルでパソコンに接続し、「+ KEYBOARD」の部分をクリックします。
(「Center x Enter」がリストに表示されていたら、そちらをクリックします)
「HIDデバイスへの接続を要求しています」のウィンドウが出てきたら、「Center x Enter」→「接続」と順にクリックします。
もし「Center x Enter」が表示されていない場合は、VIA用のファームウェアが書き込まれていない可能性があります。
ファームウェアが書き込まれていない場合は、ビルドログ・ハードウェア編の「ファームウェアの書き込み」を参照してファームウェアの書き込みを行ったあと、もう一度試してみてください。
接続がうまくいくと、「Center x Enter」のキーマップ編集画面が表示されます。
画面下には「Remap」で設定できるキーのリストが表示されています。
「BASIC」「SYMBOL」などにカテゴリ分けされており、カテゴリ名をクリックすると、表示されるリストも変わります。
※「FUNCTIONS」カテゴリの下には、マクロ(複数のキーを押していく手順を再現)を設定できるキーもあります。詳しくはYoichiroさんのブログ記事「Remapのマクロ機能を活用しましょう」をお読みください。
「Remap」でのキーマップ変更
キーマップ変更の前に、キーマップ表示をパソコンの設定に合わせます。
OSのキーボード設定が日本語になっている場合(普段日本語キーボードをっ使用している場合)は、画面右上の言語が書いてあるプルダウンで「Japanese」を選びます。
左側のリストから、キーマップを変更するレイヤーを選びます。
キーマップ変更の方法は2種類。
・下に表示されているキーのリストからドラッグ&ドロップする
・変更したいキーをクリックして設定する
ドラッグ&ドロップするときはこんな感じで、下のリストから、変更したいキーの場所に直接ドラッグ&ドロップします。
(ブラウザのウィンドウの大きさによっては、ドラッグさせづらいものもあるかも)
変更したいキーをクリックすると、ウィンドウが出てきて、直接設定できるようになっています。
「Keycode」のボックスに文字を入れると、該当するキーが候補として挙がってきます。入力したいキーが見つかったら、そこをクリックします。
下の「Modifiers」にチェックを入れると、Ctrl、Shift、Alt、Win/Cmdキーとの同時押しが設定できます。
下記は「Winキー+Shiftキー+Sキー」の同時押し。Windows10でスクリーンショットが取れます(スクリーンショットを取る範囲をマウス操作で選べるので、PrintScreenキーより直感的に扱えます)。
通常であれば3キー同時押しになる便利ショートカットも1キーで入力できていい感じ。
「HOLD/TAP」タブは「長押し(Hold)でShiftキー、短押し(Tap)でAキー」みたいな設定ができます。
長押し(Hold)に設定できるキーはモディファイヤや、レイヤー切り替えに限られているので注意。あと、「Hold」欄を入れてからでないと「Tap」欄を設定できないので注意。
「CUSTOM」タブ、使ったことないのですが、好きなキーコードを入れられるようです。キーコードの一覧はこちらのようです(リンク先はPDFファイル、英語)。
各キーのキーマップを編集して、好きなキーマップに変更できたら「flash」ボタンをクリックします。
キーマップの書き込みが終わると、「success」表示が出てきます。
これで、編集したキーマップが「Center x Enter」に書き込まれました。
これ以後、USBケーブルを抜き差ししても、違うパソコンに「Center x Enter」を接続しても、同じキーマップを使うことができます。
「Remap」の機能あれこれ
「Remap」では、簡単にキーマップを書き換えることができるのですが、それ以外にもたくさん機能があります。
右上の人アイコン(ログインボタン)。
クリックすると「Login」の文字が出てきて、さらに文字をクリックするとGoogleアカウントもしくはGitHubアカウントでログインできます。
ログインすると、キーマップを「Remap」内に保存したり公開したり、逆に他の人が公開したキーマップを自分の「Center x Enter」に取り入れたり…といったことができるようになります。
「Clear all changes」ボタン。
「flash」する前のキーマップ変更を取り消しできます。
「Lightning」ボタン。
LEDの色や、光り方のパターンを設定することができます。リアルタイムで色やパターンが設定されるので面白いです。
こういう遊びもできます。
「Save/Restore a keymap」ボタンは、キーマップを「Remap」内に保存したり、キーマップを公開・共有したりできます。
ログインしていると、Keymapsウィンドウが出てきます。
「SAVE CURRENT KEYMAP」で現在のキーマップを「Remap」内に保存できます。
「MINE」タブでは自分が保存したキーマップ、「SHARED」は他の人が共有・公開したキーマップが表示されます。「HISTORY」はちょっとよくわかってないです。
いずれも、キーマップのタイトルや説明文が書いてあるところをクリックすると、キーマップ編集画面に反映されます。キーマップの書き込みは「flash」を別途行う必要があります。
「Get keymap cheat sheet(PDF)」ボタンをクリックすると、現在のキーマップをPDF出力することができます。
入力に慣れるまでは、机の前とかモニタの下とかに貼っておくといいかも。
下の「…」ボタンの下にはさらに機能があります。よく使うのは下の2つ。
「Test Matrix mode」ではキー入力テストができます。
押したキーの色が変わります。どのようなキーマップが設定されているかは関係なく、「物理的にキーが反応するか」を確認することができるので便利。
(ちょっと反応が鈍いときがあるように感じます)
「Reset Keymap」ではキーマップを初期状態(Pro MicroにVIAファームウェアを書き込んだときの状態)に戻すことができます。
キーマップをいじりすぎてわかんなくなって、元に戻したい! ってなったときに使います。
(「Import keyboard definition file」はどちらかというと開発者向けの機能だと思うので、この記事では割愛します)
キーマップを設定するよ!
「Remap」のキーマップ変更機能をひと通り説明したところで、ごりごりとキーマップの設定をしていきます。
私はこんなかんじのことを意識して変更していきました。
・ISO Enterは「Enter」キーの入力
・Lキーの横は「-」
・カーソルキーの入力は「レイヤー切り替えキー+HJKL」
・一番左下のキーは「Ctrl」、その上が「Shift」
こんなかんじのキーマップになりました。
レイヤー4以降は設定していないので、表示させていません。
キーの数が30個前後でも、レイヤーが4つもあると結構余りますね。
空いているところ(▽のところ)にマクロとか割り当ててみても面白いと思います。
今使っている感想としては、以下のような感じです。
(参考までに、私は普段40%の分割キーボードを使用しています)
・右小指の外側の列がないので、ちょっと戸惑う(右側のホームポジションがうまく取れてないことが多い)
・人差し指でEnterキーを打つのは割とすぐ慣れる、楽しい
・Space、BackSpace、Deleteのように、よく使うキーが下位レイヤー(=他キーとの同時押し)なので、頭の切り替えに時間がかかる(だんだん慣れてきた)
・「左側がロウスタッガード(横ずれ配列)、右側がオルソリニア(格子型配列)」の特徴的なキー配列は、意外と違和感を感じない。
「Remap」でキーマップを共有・公開しておりますので、よかったら参考にしてみてください。
ロータリーエンコーダーとか、もっといろいろ ~「QMK Firmware」の環境構築
さて、私は「Center x Enter」にロータリーエンコーダーを付けています。
「Remap」では、「Center x Enter」のロータリーエンコーダーの回転動作を設定することはできません(あくまで記事執筆時点では、ですが)。
また、「Center x Enter」をはじめとする自作キーボードにおいては、キーの2回押しや同時押しなど、たくさんの機能を設定することができます。
「Remap」ではできない設定をするには、「QMK Firmware」を使います。
Windowsでの環境構築は、下記「QMK-MSYSを使ってWindows上に最速でqmk環境を構築する」の「1 QMK MSYSをインストールする」「2 QMKの設定を行う」を実行します。
いろいろなものをたくさんダウンロードしたり、インストールしたりするので時間がかかります。余裕のある時にやっておきましょう。
環境構築ができたら、QMK MSYSで下記のコマンドを入力すると、VIAファームウェア(「ハードウェア編」で書いた、「Remap」のファームウェア書き込み機能と同じもの)を「Center x Enter」に書き込むことができます。
qmk flash -kb takashicompany/center_enter -km via
※cdコマンドでフォルダ移動してから「make takashicompany/center_enter:default:flash」を入力する方法もありますが、私は、フォルダ移動が面倒なので上記のコマンドでやってます。
コマンド入力後しばらくして、下記のような画面が出てきたら、「Center x Enter」裏側のリセットスイッチを押します。
すると画面が進み、「Center x Enter」にファームウェアを書き込むことができます。
「QMK Firmware」での設定変更
「QMK Firmware」でのロータリーエンコーダー動作の変更も、簡単に説明します。
「qmk_firmware」フォルダをCドライブ直下に入れた場合、「C:\qmk_firmware\keyboards\takashicompany\center_enter\keymaps」に「Center x Enter」のファームウェアが入っています。
「default」と「via」はほとんど内容は同じ(のはず)ですが、「default」では「Remap」が使えません。「Remap」での設定を併用したい場合は「via」を使います。
オリジナルの設定をする場合、「via」 フォルダの中身を丸ごとコピーして、同じフォルダに置きます。
今回はフォルダ名を「via_mokesura」にして保存しました。
「via」キーマップをコピーしたことがわかるように頭に「via_」をつけ、私のGitHubアカウント名「mokesura」を付けています。
コピーしたフォルダの中にはファイルが3つ入っています。
キーマップの編集は「keymap.c」で行っていきます。
メモ帳などのテキストエディタで「keymap.c」を開きます。
(多分、 右クリック→プログラムから開く→メモ帳 で開けます)
ロータリーエンコーダーの回転動作の設定は、「keymap.c」の以下の部分で行っていきます。
bool encoder_update_user(uint8_t index, bool clockwise) {
if (clockwise) {
tap_code(KC_MS_WH_UP);
} else {
tap_code(KC_MS_WH_DOWN);
}
return true;
}
「if (clockwise) ~」の中に時計回りのときの動作を、「else ~」の中に反時計回りの時の動作を入力します。
(取り付けるロータリーエンコーダーによっては、回転方向が逆で認識されることもあるようです。その場合は適宜読み替えてください。読み替えなくてもいいようにする設定も後で説明します)
キー単発入力だけでなく、モディファイヤキーとの組み合わせも設定できます。
下記は、時計回りに「Ctrl」+「+」、反時計回りに「Ctrl」+「-」を割り当てています。
bool encoder_update_user(uint8_t index, bool clockwise) {
if (clockwise) {
tap_code16(LCTL(KC_PPLS)); //「Ctrl」+「+」の入力
} else {
tap_code16(LCTL(KC_PMNS)); //「Ctrl」+「-」の入力
}
return true;
}
※モディファイヤキーとの組み合わせなど、特殊なキーを設定するときは、元のkeymap.cで「tap_code」となっているところを「tap_code16」に変更します。変更しないとファームウェア書き込みのときにエラーが出て書き込みできません。
「tap_code16(LALT(LSFT(KC_TAB));」のように書くことで、「Al」+「Shift」+「Tab」のような3キー同時押しも使えます。ただ、ぐるぐる回してもALTキー押しっぱなしにはならないので、Windowsでのウィンドウ切り替えとかには使いづらいです。
(ロータリーエンコーダーをTabとShift+Tabに設定して、ALTはキーボードで押しっぱなしにするとかだとうまく使えそう)
キーのリストはQMK Firmwareのドキュメントに書かれています。
私はBackSpaceキーとDeleteキーに割り当ててみました。
ロータリーエンコーダーを回転させてごりごりーっと文字列削除ができるので、意外と便利です。
bool encoder_update_user(uint8_t index, bool clockwise) {
if (clockwise) {
tap_code(KC_DELETE);
} else {
tap_code(KC_BSPACE);
}
return true;
}
それから、keymap.cと同じフォルダにある「config.h」に下記の文字列を書き加えました。
#define ENCODER_DIRECTION_FLIP
#undef ENCODER_RESOLUTION
#define ENCODER_RESOLUTION 4
「#define ENCODER_DIRECTION_FLIP」は、ロータリーエンコーダーの回転方向の指示を逆にするオプションです。
私が取り付けたロータリーエンコーダーは、keymap.cでの指示と実際のキー入力が逆になっていたので、keymap.cに合わせるために書き込んでいます。
「ENCODER_RESOLUTION」は、そのままだとキーが入力されすぎる(思ったより削除されすぎる)ような気がしたので入れてみました。
「Center x Enter」の元の設定では「#define ENCODER_RESOLUTION 1」になっているのですが、これを打ち消し(#undef ENCODER_RESOLUTION)して「#define ENCODER_RESOLUTION 4」を設定しなおしています。
「ENCODER_RESOLUTION」の意味について、QMK Firmwareのドキュメント「エンコーダ」では「エンコーダが各戻り止め(デテント)間に登録するパルス数」と書かれているのですが、何のことやらさっぱりわからないのでうまく説明できません(電気とか電子工作の知識は皆無です)。
とりあえず、「ENCODER_RESOLUTION」の数字を増やすとロータリーエンコーダー回転時のキー入力がゆるやかになって、減らすと急速になるっぽいです(みんなわかって)。
ロータリーエンコーダーの設定をして、ファイルを保存したら、QMK MSYSで下記のコマンドを入力すると、新しいファームウェアを書き込むことができます。
qmk flash -kb takashicompany/center_enter -km via_mokesura
「via_mokesura」の部分はコピーしたフォルダの名前に置き換えてください。
おわりに
「Center x Enter」のキーキャップを変えたり、LEDの色を変えたり模様替えして、ちょこちょこ使っています。
(写真で見えないところでは、USBケーブルのコネクタの厚みでキーボードが浮かないよう、ゴム脚シールを厚めのものに変えています)
キーボードはの打ち方の癖とかがあるので、もうちょっとキーマップやファームウェアの設定はいろいろいじっていく必要があるかなー、とは思っています。
ロータリーエンコーダーも、もっと背の低いものを使う方が、打鍵の邪魔にはならなさそう。
ただね、このEnterキーのたたずまいが、本当にいいのですわ。真ん中にどんってね。
使っていて楽しいというのは、自作キーボードの醍醐味であり、大事な点じゃないかと思います。
takashicompany さん、このような素敵なキーボードを設計していただきありがとうございました!
自作キーボードキット「Center x Enter」はBoothで頒布されています。
気になった方はぜひぜひ、組み立ててみてください!
この記事が気に入ったらサポートをしてみませんか?