見出し画像

自作キーボードキット「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キーの真下のキーに割り当てられています。以下のレイヤーでも同様)

画像2

レイヤー1は、(レイヤー0の)「V」キーか「M」キーを押しながら押すと入力されるキーです。
Enterキーをはさんで左側の文字を入力したいときは「M」を押しながら、右側の文字を入力したいときは「V」を押しながら該当のキーを押します。
1段目が数字、2段目が記号、3段目がモディファイアキーに割り当てられています。
個人的には、各種括弧が同じ列(同じ指)で打てるようになっているのがポイント高い。

画像3

レイヤー2は、(レイヤー0の)「Q」キーか「K」キーを押しながら押すと入力されるキーです。
右側にカーソルキーが割り当てられています。
左側では「?」や「!」が入力できるようになっています。「?」「!」はセットで使うことも多いのに、普通のキーボードでは左上と右下に分かれているので、この配置は何気に便利そう。

画像5

レイヤー3は、(レイヤー0の)「Q」キーか「K」キーを押しながら「.」キーを押し、そのままの状態で押すと入力されるキーです。
(例えば、「Q」を押しっぱなし→「.」キーを押しっぱなし→右上のキーを押すと「F5」キーを押したことになる)
左側はLEDの色や光り方を調整できるキーに割り当てられています。
右側はファンクションキーに割り当てられています。

画像4

レイヤー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」ボタンをクリックします。

画像1

接続がまだであれば、「Center x Enter」をUSBケーブルでパソコンに接続し、「+ KEYBOARD」の部分をクリックします。
(「Center x Enter」がリストに表示されていたら、そちらをクリックします)

画像10

「HIDデバイスへの接続を要求しています」のウィンドウが出てきたら、「Center x Enter」→「接続」と順にクリックします。

画像11

もし「Center x Enter」が表示されていない場合は、VIA用のファームウェアが書き込まれていない可能性があります。

ファームウェアが書き込まれていない場合は、ビルドログ・ハードウェア編の「ファームウェアの書き込み」を参照してファームウェアの書き込みを行ったあと、もう一度試してみてください。

接続がうまくいくと、「Center x Enter」のキーマップ編集画面が表示されます。

画像12

画面下には「Remap」で設定できるキーのリストが表示されています。
「BASIC」「SYMBOL」などにカテゴリ分けされており、カテゴリ名をクリックすると、表示されるリストも変わります。

※「FUNCTIONS」カテゴリの下には、マクロ(複数のキーを押していく手順を再現)を設定できるキーもあります。詳しくはYoichiroさんのブログ記事「Remapのマクロ機能を活用しましょう」をお読みください。

「Remap」でのキーマップ変更

キーマップ変更の前に、キーマップ表示をパソコンの設定に合わせます。
OSのキーボード設定が日本語になっている場合(普段日本語キーボードをっ使用している場合)は、画面右上の言語が書いてあるプルダウンで「Japanese」を選びます。

画像13

左側のリストから、キーマップを変更するレイヤーを選びます。

画像14

キーマップ変更の方法は2種類。

・下に表示されているキーのリストからドラッグ&ドロップする
・変更したいキーをクリックして設定する

ドラッグ&ドロップするときはこんな感じで、下のリストから、変更したいキーの場所に直接ドラッグ&ドロップします。
(ブラウザのウィンドウの大きさによっては、ドラッグさせづらいものもあるかも)

画像15

変更したいキーをクリックすると、ウィンドウが出てきて、直接設定できるようになっています。

画像16

「Keycode」のボックスに文字を入れると、該当するキーが候補として挙がってきます。入力したいキーが見つかったら、そこをクリックします。

画像17

下の「Modifiers」にチェックを入れると、Ctrl、Shift、Alt、Win/Cmdキーとの同時押しが設定できます。
下記は「Winキー+Shiftキー+Sキー」の同時押し。Windows10でスクリーンショットが取れます(スクリーンショットを取る範囲をマウス操作で選べるので、PrintScreenキーより直感的に扱えます)。
通常であれば3キー同時押しになる便利ショートカットも1キーで入力できていい感じ。

画像19

「HOLD/TAP」タブは「長押し(Hold)でShiftキー、短押し(Tap)でAキー」みたいな設定ができます。
長押し(Hold)に設定できるキーはモディファイヤや、レイヤー切り替えに限られているので注意。あと、「Hold」欄を入れてからでないと「Tap」欄を設定できないので注意。

画像18

「CUSTOM」タブ、使ったことないのですが、好きなキーコードを入れられるようです。キーコードの一覧はこちらのようです(リンク先はPDFファイル、英語)

画像23

各キーのキーマップを編集して、好きなキーマップに変更できたら「flash」ボタンをクリックします。

画像21

キーマップの書き込みが終わると、「success」表示が出てきます。

画像22

これで、編集したキーマップが「Center x Enter」に書き込まれました。
これ以後、USBケーブルを抜き差ししても、違うパソコンに「Center x Enter」を接続しても、同じキーマップを使うことができます。

「Remap」の機能あれこれ

「Remap」では、簡単にキーマップを書き換えることができるのですが、それ以外にもたくさん機能があります。

右上の人アイコン(ログインボタン)
クリックすると「Login」の文字が出てきて、さらに文字をクリックするとGoogleアカウントもしくはGitHubアカウントでログインできます。
ログインすると、キーマップを「Remap」内に保存したり公開したり、逆に他の人が公開したキーマップを自分の「Center x Enter」に取り入れたり…といったことができるようになります。

画像24

Clear all changes」ボタン。
「flash」する前のキーマップ変更を取り消しできます。

画像25

Lightning」ボタン。
LEDの色や、光り方のパターンを設定することができます。リアルタイムで色やパターンが設定されるので面白いです。

画像26

こういう遊びもできます。

Save/Restore a keymap」ボタンは、キーマップを「Remap」内に保存したり、キーマップを公開・共有したりできます。

画像27

ログインしていると、Keymapsウィンドウが出てきます。
「SAVE CURRENT KEYMAP」で現在のキーマップを「Remap」内に保存できます。

画像28

「MINE」タブでは自分が保存したキーマップ、「SHARED」は他の人が共有・公開したキーマップが表示されます。「HISTORY」はちょっとよくわかってないです。
いずれも、キーマップのタイトルや説明文が書いてあるところをクリックすると、キーマップ編集画面に反映されます。キーマップの書き込みは「flash」を別途行う必要があります。

Get keymap cheat sheet(PDF)」ボタンをクリックすると、現在のキーマップをPDF出力することができます。
入力に慣れるまでは、机の前とかモニタの下とかに貼っておくといいかも。

画像29

下の「…」ボタンの下にはさらに機能があります。よく使うのは下の2つ。

画像30

Test Matrix mode」ではキー入力テストができます。
押したキーの色が変わります。どのようなキーマップが設定されているかは関係なく、「物理的にキーが反応するか」を確認することができるので便利。
(ちょっと反応が鈍いときがあるように感じます)

画像31

Reset Keymap」ではキーマップを初期状態(Pro MicroにVIAファームウェアを書き込んだときの状態)に戻すことができます。
キーマップをいじりすぎてわかんなくなって、元に戻したい! ってなったときに使います。

(「Import keyboard definition file」はどちらかというと開発者向けの機能だと思うので、この記事では割愛します)

キーマップを設定するよ!

「Remap」のキーマップ変更機能をひと通り説明したところで、ごりごりとキーマップの設定をしていきます。

私はこんなかんじのことを意識して変更していきました。

・ISO Enterは「Enter」キーの入力
・Lキーの横は「-」
・カーソルキーの入力は「レイヤー切り替えキー+HJKL」
・一番左下のキーは「Ctrl」、その上が「Shift」

こんなかんじのキーマップになりました。

画像35

レイヤー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」裏側のリセットスイッチを押します。

画像33

すると画面が進み、「Center x Enter」にファームウェアを書き込むことができます。

画像34

「QMK Firmware」での設定変更

「QMK Firmware」でのロータリーエンコーダー動作の変更も、簡単に説明します。

「qmk_firmware」フォルダをCドライブ直下に入れた場合、「C:\qmk_firmware\keyboards\takashicompany\center_enter\keymaps」に「Center x Enter」のファームウェアが入っています。

画像39

「default」と「via」はほとんど内容は同じ(のはず)ですが、「default」では「Remap」が使えません。「Remap」での設定を併用したい場合は「via」を使います。

オリジナルの設定をする場合、「via」 フォルダの中身を丸ごとコピーして、同じフォルダに置きます。

画像35

今回はフォルダ名を「via_mokesura」にして保存しました。
「via」キーマップをコピーしたことがわかるように頭に「via_」をつけ、私のGitHubアカウント名「mokesura」を付けています。

コピーしたフォルダの中にはファイルが3つ入っています。
キーマップの編集は「keymap.c」で行っていきます。

画像36

メモ帳などのテキストエディタで「keymap.c」を開きます。
(多分、 右クリック→プログラムから開く→メモ帳 で開けます)

画像37

画像38

ロータリーエンコーダーの回転動作の設定は、「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ケーブルのコネクタの厚みでキーボードが浮かないよう、ゴム脚シールを厚めのものに変えています)

画像35

キーボードはの打ち方の癖とかがあるので、もうちょっとキーマップやファームウェアの設定はいろいろいじっていく必要があるかなー、とは思っています。

ロータリーエンコーダーも、もっと背の低いものを使う方が、打鍵の邪魔にはならなさそう。

ただね、このEnterキーのたたずまいが、本当にいいのですわ。真ん中にどんってね。
使っていて楽しいというのは、自作キーボードの醍醐味であり、大事な点じゃないかと思います。

takashicompany さん、このような素敵なキーボードを設計していただきありがとうございました!

自作キーボードキット「Center x Enter」はBoothで頒布されています。
気になった方はぜひぜひ、組み立ててみてください!

この記事が気に入ったらサポートをしてみませんか?