自作キーボード”Ambi-GL”について

はじめに

今回はサリチル酸(@Salicylic_acid3)さんが設計された”GL516ケース"に対応する基板を設計したことついて書いていきます。名前は”Ambi-GL”といいます。

f:id:Cerbekos00:20220320102837j:plain

Ambi-GL

1.GL516ケースとは?

このブログをご覧になられる方はすでにご存知かと思いますので詳細な説明は割愛させていただきますが、5行×16列サイズのアルミ製キーボードケースです。しかし、単なるケースというわけではなく、スイッチプレートを両端でマウントすることで自由なキーレイアウトを実現し、その自由なレイアウトを公開されている設計手順およびKicadテンプレートを使って簡単に自作できるという特徴を持っています。それによって現在様々なレイアウトが考案されています。

GL516についてもっと知りたいという方はこちらからどうぞ。

salicylic-acid3.hatenablog.com

2.Ambi-GLとは?

f:id:Cerbekos00:20220319190504j:plain

”Ambi-GL”は、Alice配列、中央に45度角に配置された6つのキー、バックライトLED、そしてロータリーエンコーダが2基搭載された”ambidextrous”(アンビデクストラス。両手利きという意味)シリーズのキーボードです。”ambidextrous"からAmbi、GL516ケースからGLを取って”Ambi-GL”と名付けました。

”ambidextrousシリーズ”?という方向けにリンクはこちら。

cerbekos00.hatenablog.com

cerbekos00.hatenablog.com

3.設計の経緯

たしか当時はGL516のケースのGBが開催中で、Twitterでも度々目撃してたこともあり、こんなツイートにより参加表明していました。

背景話として、GL516の存在自体は以前よりよく知っていました。知っていたというよりも、私が設計した自作キーボードは、Discordに書き込まれていた初期のGL516の開発手順やテンプレート、ファームウェア作成方法を参考にさせていただいて開発していましたので、とてもお世話になっていたという表現が適当かもしれません。ですので、当時の心境として「私がGL516のPCBを作成することで、微力ながらGL516の発展に貢献し、恩返しできればいいな」という想いで参加を考え始めたことを覚えています。

ちなみに初期のレイアウト案ではロータリーエンコーダはありませんでした。これは設計を進めるうちに後から追加したものなのですが、Alice配列×長方形ケース場合上下に空間ができますので、そこにちょうど収まるサイズのエンコーダを搭載しようと考えたためです。また他にも、公開されているデザインガイドにロータリーエンコーダの実装方法が記載されていた、というのも大きかったと思います。(私はロータリーエンコーダの実装をしたことがありませんでした)

そういえば、サリチル酸さんのDiscode上で開かれていた”もくもく会”(ボイスチャット)に参加したことも思い出深いです。私は基本的にネット上での会話や通話といったことに慣れておらず、もくもく会に大きな興味を抱きつつも、いざ参加するというのはハードルが高いと感じていました。ところが何を思ったかその日は迷うことなくもくもく会ルームへ侵入。せっかくの機会なので覚悟を決め、恐る恐る設計に関する疑問をいろいろチャットさせていただきました。サリチル酸さんはじめ他のみなさんが質問を秒殺していく様は今でも目に浮かびます。貴重な体験ができ、参加できて本当に良かったです。

4.特徴

前置きが長くなってしまいました。Ambi-GLの特徴について記載していきます。

4-1.キーレイアウト

Ambi-GLは、30%キーボードのAmbi-MINIに、モディファイアキーを追加したようなレイアウトになっておりキーの数はロータリーエンコーダ含め50個になります。

f:id:Cerbekos00:20220305210715p:plain

Ambi-MINI

f:id:Cerbekos00:20220305202230p:plain

Ambi-GL

キーの配列がハの字に斜めになっているAlice配列をベースに、中央に6つ45度に傾けたキーを配置しています。45度に傾けることで、左右どちらの指からもアクセスしやすいこと、これがambidextrous(両手利き)の由来となっています。

f:id:Cerbekos00:20220305211656j:plain

中央6キー

4-2.ロータリーエンコーダ

直径3cmのロータリーエンコーダを左右にひとつずつ配置しています。ロータリーエンコーダはつまんで回すイメージが強いですが、Ambi-GLでは直径が大きいロータリーエンコーダを用いており、親指で簡単に回すことができます。

f:id:Cerbekos00:20220319185713j:plain

ファームウェアの実装は初めてだったので、QMKのドキュメントを調べつつ行っていきました。といっても、動かすだけであればサンプルコードもありますので苦労せずに実装できてしまいます。

docs.qmk.fm

少し工夫が必要となるのは、レイヤごとに動きを変えたり、RemapなどのGUIによる動的なキー割当です。これに関する答えは、”monksoffunk”さんの ”#1 Advent Calendar 202115日目の記事「【自キ】ロータリーエンコーダ研究」”から得ることができました

25keys.com

この詳細は上記「VIA/Remapコンパチブルなファームへ」の章をご参照いただくとして、ここではAmbi-GLでの仕組みを簡単に記載していきます。
実装方法を一言で表すと、”エンコーダに架空のスイッチ(rowとcol)を割り当てる"イメージでしょうか。通常はロータリーエンコーダ用にRowを増やして割り当てることが多いのではないかを考えますが、Ambi-GLの場合ちょうど空きがあったため、ここを使っています。

f:id:Cerbekos00:20220311235233p:plain

ちょうどRow3に4か所の空き(赤丸)

ロータリーエンコーダの処理に、上記の赤丸がキープレスされるように実装します。

// endoder setting
bool encoder_update_user(uint8_t index, bool clockwise) {
    keypos_t key;

    if (index == 0) { /* First encoder */
        if (clockwise) {
            key.row = 3;
            key.col = 1;
        } else {
            key.row = 3;
            key.col = 4;
        }
    } else if (index == 1) { /* Second encoder */
            if (clockwise) {
              key.row = 7;
              key.col = 3;
            } else {
              key.row = 7;
              key.col = 5;
            }
        }
    action_exec((keyevent_t){.key = key, .pressed = true, .time = (timer_read() | 1)});
    action_exec((keyevent_t){.key = key, .pressed = false, .time = (timer_read() | 1)});
    return true;

キーマップに動作させるキーコードを設定します。

f:id:Cerbekos00:20220312002535p:plain

Remap用のjsonファイルでもスイッチがあるかのように、また見た目にもロータリーエンコーダだとわかるようなレイアウトにしておきます。

f:id:Cerbekos00:20220312003532p:plain

これでRemapからロータリーエンコーダの設定変更や、レイヤーごとに異なるキーマップを設定することができるようになります。

4-3.LED

LEDバックライトを16個搭載しています。そのうち6個が中央キースイッチ下に配置されているのですが、残り10個はスイッチのない場所に配置されています。これは、サリチル酸さんの”N51GL"で施されているバックライトを使用した装飾に一目惚れし、これを真似させていただいたためです。これはスイッチプレートに、キープアウト(禁止)エリアで透過させたい模様を描くことで実装します。

f:id:Cerbekos00:20220319132733p:plain

N51GLのバックライトを使用した装飾(引用)

Ambi-GLでは、スイッチプレートにAmbiシリーズを象徴するダイヤモンドをモチーフにした模様を入れてみました。光を透過してきれいです。

f:id:Cerbekos00:20220319133041j:plainf:id:Cerbekos00:20220305213836j:plain

また、今回はLEDの場所に若干ですがランダム性を持たせてみました。光が散っているのもキレイではないかとの考えからです。

f:id:Cerbekos00:20220319134300p:plain

実物ではこのような感じになります。

f:id:Cerbekos00:20220320103022j:plain

4-4.LEDインジケータ

Tenalice-ambidextrous ver2.0で長々と説明したLEDインジケータを引き続き搭載。レイヤーの配色は同じにしました。(ファームウェアの記述は同じため省略)

f:id:Cerbekos00:20220318225111p:plain

赤:L1 青:L2 緑:L3 黄:CapsLock

5.使用感

ここからは組み立てたキーボードの使用感です。

5-1.ロータリーエンコーダ

かなりのお気に入りです。Ambi-GLは基本的には40%のキーボードであり数字や一部の記号などがなく、キーが少ないレイアウトとなっています。このため数字や一部の記号はレイヤーを切り替えて入力することとなります。通常であれば親指または小指でレイヤを変えるキーを押さえることでレイヤを切り替えることになるのですが、エンコーダにレイヤキー設定することで、押さえ続ける必要がなくなります。

この場合、エンコーダはレイヤ切替専用キーとなってしまうわけですが、Ambi-GLではエンコーダを2基搭載しているため、もう片方でくるくる回して変えたいキーを設定可能です。

カーソル移動やTab操作、かな・無変換などいろいろ試しましたが、今はウインドウ切り替え(Alt+Tab、Win+Tab)、数字キーを入力するレイヤでの数字の半角/全角の変更、LEDをコントールするレイヤでのLEDの色相の変更、ボリュームUP/DOWN、に落ち着きました。便利なのは今回採用したエンコーダの高さがスイッチよりほんの少し高いため、ホームポジションを崩さずに親指で回転させることができる点です。

また打鍵の邪魔にならないかが気になっていましたが、全く問題ありませんでした。強いて言えば中央キー打鍵時に触れることがあるのですが、それによる誤操作はまず発生しません。

5-2.キーレイアウトとマッピング

中央キーは全部で6つありますが、その配置からもまず思いつくのは移動関係のキー(上下左右、Home/End/PageUp/PageDown、マウス)ではないでしょうか。60%以下のキーボードで削られることが多いこれらのキーが独立したキーとしてあるのはやはり便利です。あるいは、小型キーボードに慣れ親しんでいる方は別のレイヤのホームポジションから手を動かさない場所に上記移動関係のキーをお持ちでしょうから、複数キーを同時に押さなければならいキーをアサインしたり、アプリのショートカットを配備するという使い方もあると思います。

そしてもっとも重要なのは、中央のキーを便利に使いこなすかではなく、キーがびかびかに光るということです。

f:id:Cerbekos00:20220319211258j:plain

中央にキーがあることによる副次的な効果として、左右に広がる形でアルファベットキーが配置されているため、ホームポジションに手を置いているときから腕全体が開いた格好となり、肩への負担が軽減されます。

f:id:Cerbekos00:20220312003436p:plain

f:id:Cerbekos00:20220319212119p:plain

上:Ambi-GL :Tenalice-ambidextrous

Ambi-GLはほぼ左右対称と言ってもよい美しいレイアウトとなっています。通常Alice配列は運指によるキー分離を行う関係上、右にキーが多くなりますが、そうではありません。つまりAmbi-GLでは一部のキーが削られているということになります。この削除された記号キーも入力する必要はあるため、他のレイヤに移動することになります。ここは人によっては使いにくいと感じる部分かもしれません。

5-3.打鍵感と打鍵音について

f:id:Cerbekos00:20220320102916j:plain

これはレイアウト依存する部分が少なく、主には使用するスイッチやプレート、そしてケースに依存するものですが、今回はambiシリーズ待望のアルミケースだということで簡単ですが触れていきたいと思います。なお、私は現在、厚さ3mmのフォームを挟みつつゆるくねじ止めしたマウントにしています。

打鍵感に関して、左右のみで固定しているため中央付近はしなる特性がそもそもありますが、フォームにより左右も沈み込むようになり、柔らかい打鍵体験であることを確かに感じることができます。

打鍵音に関して、GL516ケースは単なるケースではなく、様々なパーツを組み合わせることで無線化に使う電池を格納できたり、キーボードキットと調和のとれたデザインのバックプレートにできたりするわけですが、その分開口分が多く密閉性が低いという特徴があります。一般的なアルミケースの代表格であるTofuケースと比較すると金属ケース特有の高音がそれほど大きくないようなに感じです。(ちなみに私はフォームなしでカンカン鳴らせるほうが好みです)

6.頒布について

下記のBOOTHページにて頒布いたします。本ページでご紹介したロータリエンコーダとノブのセットもあります。

cerbekoskeyboard.booth.pm

デコレーションプレートについては設計済みではありますが、試作をしていないという状況です。今進めている別の自作キーボードと一緒にレーザーカットに行く画策をしております。BOOTHへは試作が済んでいないデータでありますが公開したいと思います。

おわりに

ケースが一つあれば、いろいろなレイアウトを選び使うことができ、その気になれば、自分好みの自分のためだけのレイアウトを一から作成し、アルミニウムケースに入れて楽しめる。そこがGL516ケースの魅力だと思います。さらにそれだけに留まらず、GL516レイアウト創作のコンテストが開催されたり、キーボード設計者がオンラインコミュニティ上で活発に設計について議論を交わしたりと、様々な楽しみが広がるこのGL516というシステムは本当に素晴らしいものだと感じています。

私はこのAmbi-GLの開発を通じてロータリーエンコーダの実装方法をはじめとした知識と操作体験に関する気づきを得ることができました。この場を借りてGL516ケースの生みの親であるサリチル酸さんへお礼を申し上げ、終わりにしたいと思います。

それでは、良いキーボードライフを。

f:id:Cerbekos00:20220319230842j:plain