SparrowG21向けに、GP2040-CEでカスタムファームウェアをビルドする

tl;dr

  • SparrowG21はGP2040-CEを使うレバーレスアケコン(スティック付き)だよ
  • GP2040-CE v0.7.7で、なぜかPico用のビルドだと、GPIO24でRGB LEDを光らせることができなかったよ。Raspberry Pi PicoではGPIO24は、USB電源の検知なので、変更できないかもしれないと思ったよ。
  • でもRP2040 Advanced Breakoutのビルドでは動作したので、ファームウェアをカスタムビルドすればなんとかなりそうだよ
  • GP2040-CEは、configsにheaderファイルを記述すればビルドできたよ

SparrowG21をキーケットで頒布したよ

キーケットでは、レバーレスアケコンSparrowG21を頒布しました。以下のような特徴を持つゲームコントローラです。

  • GP2040-CE専用
  • アクションゲームで、左手親指をジャンプとして、上下キーを1つの指で操作できるようなキー配置
  • ジョイスティック2本搭載(3Dプリントで製造したスティックキャップ付属)
  • GH60互換ケース対応
  • MX互換スイッチ対応
  • 薄型スイッチKailh Choc v1、LOFREE x KAILH Full POM Low Profile対応(ただし、Chocの場合にはトッププレート、ホットスワップソケット非対応)。
  • ホットスワップソケット対応(MX互換のみ)
  • OLED、ターボインジケータLED、パワー&モードLED搭載

現在、Boothにて販売中です。

74th.booth.pm

v0.7.7 でPico用ビルドでRGBLEDが光らない

キーケットで販売したバージョンには、Raspberry Pi Picoビルドのファームウェアを書き込み、SparrowG21用のピンマップを書き込んでいました。しかし、これではRGB LEDが光らないことがわかりました。v0.7.5では光ることを確認しており、その後サンプルで組んだもので光らなくなったので、RGB LEDが壊れてしまったと思い込んでいました。今回、組み直したものでも光らないことがわかり、改めて調べ直すことにしました。

購入された方(4名)には、不完全な状態のものを販売してしまっており、大変申し訳ありませんでした。

SparrowG21でRGB LEDに使っているGPIO24は、USB電源があることの確認に使われています。このことから、Raspberry Pi Picoビルドではこの前提で動いているからうまくいかないのかと思い、試しにRP2040 Advanced Breakoutのビルドで動かしてみたところ、期待通りRGB LEDが点灯しました。よって、GP2040-CEをSparrowG21向けにビルドすることができれば、動かすことができそうだと確信しました。

GP2040-CEのPico用ファームウェアをビルドする

GP2040-CEのソースコードを見てみると、次のような構成になっています。

  • src/ : ソースコード
  • headers/ : ヘッダーコード
  • configs/ : 各ボード用の設定ヘッダーファイル
    • configs/{ボード名}/BoardConfig.h : ピンのアサイン、機能の有効を設定する
    • configs/{ボード名}/{ボード名}.h : Flashサイズ等を指定するファイル(変更しなくて良い)

configs/ に各ボードの設定があり、そこでマクロ定数(#define BOARD_LEDS_PIN 24等と定義するやつ)で、機能の有効無効や、ピンアサインを指定します。ここで使うマクロ定数はヘッダーファイル内で見つけることができます。

まず始めに、Pico用のファームウェアをビルドし、その後カスタムファームウェアの制作に取り組むことにしました。環境はUbuntu 22.04、OrangePi5+(ARM64)上で行っています。

まず、通常のPico用ファームウェアをビルドしました。

git clone --recursive https://github.com/OpenStickCommunity/GP2040-CE 
cd GP2040-CE

# PICO_SDK_FETCH_FROM_GIT=1 とすると、pico_sdkをダウンロードする
PICO_SDK_FETCH_FROM_GIT=1 cmake .

# configsのMakefileを作る
cd configs
cmake .

# ルートディレクトリでビルドする
cd ..
make

これで GP2040-CE_0.7.7_Pico.uf2 がビルドされました。

次に、カスタムファームウェアのビルドに進みます。

GP2040-CEのカスタムファームウェアをビルドする

まず、RP2040 Advanced Breakoutの設定ファイルconfigs/RP2040AdvancedBreakoutBoardをコピーして configs/SparrowG21 を作りました。ボード名のヘッダファイル configs/RP2040AdvancedBreakoutBoard/RP2040AdvancedBreakoutBoard.h があるため configs/SparrowG21/SparrowG21.h にリネームしています。

ボードの設定(configs/SparrowG21/BoardConfig.h)にボード名を記述するところがあるので、変更しておきます。

#define BOARD_CONFIG_LABEL "SparrowG21"

configs/CMakeLists.txt に以下のようにビルドするボード名が書かれていました。ここにSparrowG21を追加しました。

add_subdirectory(Pico)
add_subdirectory(SparrowG21)

さらに、ビルドする対象のボードは CMakeLists.txt において ${GP2040_BOARDCONFIG} と書かれているのを見つけました。指定がない場合、Picoが使われるようになっており、先のビルドではこれが使われているようでした。そうであれば、環境変数で指定すれば良さそうです。これでビルドを行いました。

# configsのMakefileを更新
cd configs/
cmake .

# ボードの指定でSparrowG21を指定する
cd ..
GP2040_BOARDCONFIG=SparrowG21 cmake .

# ビルド
make

すると、GP2040-CE_0.7.7_SparrowG21.uf2ができました。

カスタムファームウェアの設定を作り込む

SparrowG21で行うべき設定は以下の通りでした。

  • 各キーのピンアサイ
  • I2CとOLED Displayを有効にして、ピンを設定する
  • RGB LED機能を有効にして、ピンを設定する
  • Board LED(Picoに付いているLED)を有効にする
  • Turbo機能を有効にして、ピンを設定する
  • Analog機能を有効にして、ピンを設定する

これらを、configs/SparrowG21/BoardConfig.h に作り込んできました。

ほとんどの設定は、WebConfigの設定とheades にあるものが一致するようにできており(特にaddons)、あまり迷うことなく設定を見つけることができました。

各キーのピンアサイ

各ピンにキーを設定していきます。他のボードの設定が参考になります。同様に、Function、Turboキーも設定できます。

#define GPIO_PIN_07 GpioAction::BUTTON_PRESS_UP
#define GPIO_PIN_05 GpioAction::BUTTON_PRESS_DOWN
#define GPIO_PIN_06 GpioAction::BUTTON_PRESS_RIGHT
#define GPIO_PIN_02 GpioAction::BUTTON_PRESS_LEFT
#define GPIO_PIN_14 GpioAction::BUTTON_PRESS_B1
#define GPIO_PIN_16 GpioAction::BUTTON_PRESS_B2
#define GPIO_PIN_20 GpioAction::BUTTON_PRESS_R2
#define GPIO_PIN_22 GpioAction::BUTTON_PRESS_L2
#define GPIO_PIN_13 GpioAction::BUTTON_PRESS_B3
#define GPIO_PIN_15 GpioAction::BUTTON_PRESS_B4
#define GPIO_PIN_19 GpioAction::BUTTON_PRESS_R1
#define GPIO_PIN_21 GpioAction::BUTTON_PRESS_L1
#define GPIO_PIN_23 GpioAction::BUTTON_PRESS_S1
#define GPIO_PIN_03 GpioAction::BUTTON_PRESS_S2
#define GPIO_PIN_18 GpioAction::BUTTON_PRESS_L3
#define GPIO_PIN_17 GpioAction::BUTTON_PRESS_R3
#define GPIO_PIN_08 GpioAction::BUTTON_PRESS_A1
#define GPIO_PIN_11 GpioAction::BUTTON_PRESS_A2
#define GPIO_PIN_12 GpioAction::BUTTON_PRESS_FN
#define GPIO_PIN_09 GpioAction::BUTTON_PRESS_TURBO

I2CとOLED Displayを有効にして、ピンを設定する

この設定は他のボードでも行われているので、それらを参考にしながら以下のように記述しました。

#define HAS_I2C_DISPLAY 1
#define I2C_SDA_PIN 0
#define I2C_SCL_PIN 1
#define I2C_BLOCK i2c0

RGB LED機能を有効にして、ピンを設定する

こちらも他のボードでも行われているので、それらを参考にしました。BOARD_LEDS_PINが利用するGPIOの番号です。LEDS_XXXX はデイジーチェーン接続の順番です。

#define BOARD_LEDS_PIN 24
#define LED_BRIGHTNESS_MAXIMUM 128
#define LEDS_DPAD_LEFT 0
#define LEDS_DPAD_DOWN 1
#define LEDS_DPAD_RIGHT 2
#define LEDS_DPAD_UP 3
#define LEDS_BUTTON_B3 4
#define LEDS_BUTTON_B4 5
#define LEDS_BUTTON_R1 6
#define LEDS_BUTTON_L1 7
#define LEDS_BUTTON_B1 8
#define LEDS_BUTTON_B2 9
#define LEDS_BUTTON_R2 10
#define LEDS_BUTTON_L2 11

Board LED(Picoに付いているLED)を有効にする

Board LEDで、現在のモードなどを表現することができます(OLEDがあれば不要とも言えますが)。

ヘッダーファイルは headers/addons/board_led.h にあり、これを見ながら必要な設定を追加しました。有効にした後、モードを表示する設定を行っています。

#define BOARD_LED_ENABLED 1
#define BOARD_LED_TYPE ON_BOARD_LED_MODE_MODE_INDICATOR

Turbo機能を有効にして、ピンを設定する

ヘッダーファイルは headers/addons/turbo.h にあり、これを見ながら必要な設定を追加しました。

#define TURBO_ENABLED 1
#define TURBO_LED_PIN 10

Analog機能を有効にして、ピンを設定する

こちらもヘッダーファイルは headers/addons/analog.h にあり、これを見ながら必要な設定を追加しました。

#define ANALOG_INPUT_ENABLED 1
#define ANALOG_ADC_1_VRX 26
#define ANALOG_ADC_1_VRY 27
#define ANALOG_ADC_2_VRX 28
#define ANALOG_ADC_2_VRY 29

作ったもの

変更したBoardConfig.hはこちらになります。

github.com

できたファームウェアを書き込む

設定変更後に再ビルドし、ファームウェアを書き込みます。

ファームウェアを変更するとき、設定があると残る作りになっているため、一度Flashの中身を削除する以下のファームウェアを書き込んだ後に、新しいファームウェアを書き込みます。

flash_nuke.uf2

https://datasheets.raspberrypi.com/soft/flash_nuke.uf2

すると、書き込むだけでセッティングが完了するカスタムファームウェアが動作しました!

以上

わりと簡単にGP2040-CEのカスタムファームウェアを作ることができました。

もしキーケットでSparrowG21を買われていましたら、ドキュメントを確認の上、こちらのファームウェアをお試しいただければ幸いです。

github.com

キーケットに新作キーボードを展示・販売したリアクションと、感想、反省

2024年3月2日に、過去最大規模の自作キーボードオンリーの即売会「キーボードマーケットトーキョー(通称:キーケット)」が開催され、私自身が作っているキーボードキットをもって参加してきました。

keeb-market.jp

各商品のリアクションの後に「ブースの準備で役立ったこと」「その他の反省点」「さすがキーケットと思ったこと」を記載しています。各商品の反応が長くなってしまったので、そちらを先に見ていただいた方が、出展者や企画者への参考になると思います。

目次

販売したもの

こちらが当日販売していたもののまとめになります。SparrowDial、SparrowG21は初お披露目になります。Sparrow60Cは天キーで展示していましたが、販売は初めてになります。

過去のお品書き記事はこちらになります。

74th.hateblo.jp

ブースの様子

キーケットでは、1卓をまるっと使うことができ、広々としたスペースで展示することができました。

マクロパッド含めて5台のアイテムを展示し、そのうち4台は操作を直接試せる形で展示していました。

各商品へのリアクション

SparrowDial

今回M5StackCore2と、M5Dialをトラックパッドとして使うSparrowDialを展示しました(この記事もSparrowDialを使って執筆しています)。

やはり、M5StackCore2と、M5Dialのタッチパネルの操作性がよく、まずその思い通り入力できることに驚かれる方が多くいらっしゃいました。実際にAnrdoid内のカーソルを操作できることと、デバイス自体に今行っている操作の軌跡を表示する機能があったため、触るだけではなくデバイスからリアクションを得ることができて、操作している感じがより伝わったように思います。

そして、M5Dialのダイアル操作によるスクロールを体験して貰うと、その感触の面白さを実感して貰うことができました。M5Dialを知らない人からするとぐりっと回せること自体に驚かれることも多かったです。

さらにM5StackのCore2ととDialのデバイスがかわいらしく、それぞれの色に合ったキーキャップを付けていたこともあり、ものとして素敵との言葉もいただきました。ケースもデバイスも組み合わせたものでありながら、良いものになったのは、M5Stackの商品が良いのと、自作キーボードによいパーツがあるからだと改めて思いました。

多かった質問は以下のような所でした。

  • このキットには何が含まれていて、何を用意する必要があるのか。
    • M5Stackデバイスは別途用意する必要があること。
    • MCU実装済みのため、スイッチとキーキャップとケースを用意する必要があること。
    • M5Dialを収めるためにケースの加工が必要であり、プラスチックケースが
    • 透明ケースなので、裏からM5Stackデバイスに接続するためのアダプターやケーブルの存在を見せ、それらは付属している旨を見せる。
  • 左側のShiftやTabキーの1列がないが、どうやって操作するのか。
    • 自分はZを、他のキーと同時押しするとShiftとして動作するようにしてあること。
    • 下部のキーの数が豊富なため、そちらに割り当てることもできること。
    • そもそも自作キーボードはキーマッピングを手軽に変えることができる文化のため、すきなようにチューニングできること。
  • これを自作キーボードが初めてでも組み立てることが可能か。
  • M5Stackのデバイス(ESP32)をつかってどうやってQMK Firmwareに対応したの?
  • M5Stackのデバイスを、キーボード側から指示して絵や音をだすなど、もっと活用することはできると思う?
    • できると思う。QMK FirmwareにはI2Cライブラリがあるので、今はI2CのReadしかしていないが、WriteしてM5Stack側に送信することは可能。

私自身のキーマップを展示しておくとより利用するイメージが得られたのかもしれません。

現在、こちらのキーボードは予約販売という形でboothにて取り扱っています。

74th.booth.pm

なお、M5StackCore2、M5Dialに入れたファームウェアはこちらのGitHubリポジトリで公開しています。

github.com

公開しちゃっていいの?という声をいただきましたが、ノウハウを公開、共有するMakerムーブメントが面白く思っており、この公開で他の方が面白い開発を発表されるならば嬉しいと思って、公開、共有しています。キーボードの基板データは公開しません(これはある程度私の意匠が入っていると思っている)が、こういうデバイスファームウェアは公開、共有したいと思っています。一方、他の方がプログラムを公開しないことも自由だと思っています(GPL等の利用するライブラリのライセンスは守りましょう)。

なお、展示品は以下のようなセッティングでした。

  • SparrowDial with M5StackCore2
    • Case: GH60互換 60%キーボード用プラスチックケース(半透明ブラック)
    • Switch: Akko POM Brown (Tactile)
    • Cap: Melgeek MDA Big Bone
  • SparrowDial with M5Dial
    • Case: GH60互換 60%キーボード用プラスチックケース(半透明ブラック)
    • Switch: Durock POM Piano (Linear)
    • Cap: PBT Double-shot Black Yellow CSA Profile

Sparrow60Cと、StickPointV

ジョイスティックモジュールをQMK Firmwareで使えるようにチューニングしたStickPointVモジュールと、それを搭載したキーボードキットSparrow60Cを販売しました。

Sparrow60Cで操作感を体験して貰いつつ、制作者側の人にはトライしてみるためにモジュールを買っていただくことができました。

以下のような質問や意見をいただきました。

  • 過去に同じジョイスティックモジュールをチューニングしたが、このようにはできなかった。
  • ThinkPadTrackPointよりはかなり癖があるが、使える。
  • 底面にGroveソケットが付いているが、組み込み上ない方が嬉しい。
  • HHKB StudioのTrackPointが遅くて困っているので、ダッシュモードは良さそう。
  • (金属ケースの使用例を見て)やはり汎用ケースが使えるのは、品質の高いものが気軽に使えて良いね。
  • QMK Firmwareで使える他のモジュールの互換仕様なのは良いね。このようなデバイス増えて欲しいね。
  • バイスをどうやれば組み込むことができるのか?

SparrowDialと並列に展示したためか、トラックパッドの方が多くの方が惹かれているようでした。それでも、このモジュールとして提供していることに興味を持っていただく方が多くいたのは、キーケットならではでした。

これらは現在もBoothにて販売中です。

74th.booth.pm

74th.booth.pm

なお、展示品は以下のようなセッティングでした。

  • Sparrow60C (1)
    • Case: GH60互換 60%キーボード用プラスチックケース(半透明ブラック)
    • Switch: Durock Black Lotus (Linear)
    • Cap: Drop MT3 Skiidata
  • Sparrow60C (2、実使用版)
    • Case: Wholesales GH60 Anodizing Aluminum CNC Case for 60% Mechanical Gaming Keyboard Compatible GK61x GK64x Pok3r
    • Switch: Kailh Deep Sea Islet (Silent Linear)
    • Cap: PBT Keycap Double-shot XVX Profile Purple Black

SparrowG21

自分がアクションゲームを快適にプレイしたいがために作ったレバーレスアケコンジョイスティック付き)を展示、販売しました。メインの客層ではないだろうと思いつつ、体験できるキーボードの後ろで展示していました。しかし、そちらについても教えてもらえますかと、多くの方に声をかけていただき、触っていただきました。そして、実際に購入していただくことができました。

いただいたコメントや質問は以下のようなものでした。

  • これは何に使えるのか?
  • パームレストが必要だけど、使いやすそう。
  • スイッチの感触が良い。
  • ケースがあるのでものとしての一体感があり、良さそう。

同行者と来ていた人(おそらくもう一人はキーボードへの興味は薄いかも)に、こんなものがあるよ気にならない?と声をかけていたことが複数回ありました。

74th.booth.pm

なお、展示機のセッティングは以下の通りでした。

  • SparrowG21
    • Case: GH60互換 60%キーボード用プラスチックケース(半透明ブラック)
    • Switch: Durock Ice King T1 (Tactile)
    • Cap: アケコンキーキャップ、TALP KEYBOARD XDAブランクキーキャップ

SparrowTV

自分の家のTV横PCに最適化したマクロパッドが作りたいと思って作ったSparrowTVを展示しました。iPhoneケースに収めたマクロパッドを実際に手に取ってもらい、手にフィットするマクロパットであると体験してもらえました。一見してわからない「このボタンを押すと、私の家のTVの電源が付く」と伝えると、何ソレ!?と驚いてもらえたのも良かったです。

以下のようなコメントや質問をいただきました。

  • Twitterで見たことある!
  • すべてのTVに対応している?
    • プログラムで、リモコン信号を読み込むモードを使って、CircuitPythonのintの配列がコンソールに出力されるので、それをキーマップのプログラム内に記述することで対応できるよ
  • iPhoneケースはやはり持ちやすいし、かっこよい。
  • こういうおもしろデバイスは好き。光るところも良い。

Boothでの販売も開始しました。今更ながら未使用の実装済み完成品がみつかったので、そちらも購入できるようにしてあります。

74th.booth.pm

なお、展示機のセッティングは以下の通りでした。

  • SparrowTV
    • Case: 100円ショップ Seriaで買った裏面が透明のiPhone SE第2世代用ハードケース
    • Switch: Kailh Choc Crystal Red(薄型Linuear)
    • Cap: Kailhロープロ無刻印キーキャップクリア

RP2040手はんだ実装挑戦ProMicro型開発ボードキットと、RP2040手はんだ実装指南ガイド(無料配布)

ひとつだけ電子工作イベントで出していた開発ボードを出展しました。RP2040が使いこなせるか躊躇している方を後押しするつもりで持っていきました。難しそうと思いつつも挑戦してみたいという方が現れたのが嬉しかったです。

無料配布で「RP2040手はんだ実装指南ガイド」を作っていましたが、無料配布の旨を効果的に展示できていませんでした。RP2040のマイコンが気になる方にお渡しして、受け取って貰っていました。

Boothでの販売は継続しております。

74th.booth.pm

ガイド自体はこちらで公開しております。

docs.google.com

ブースの準備で役立ったこと

体験可能な形での展示

今回のメインの展示はポインターバイス付きキーボードであったため、実際に入力を試せる形で展示することをめざしていました。しかも、デバイス自体も4つあります。

これには、AndroidタブレットKindle Fire HD)と、セルフパワー対応のUSBハブ(Relay Switch Hub)と、モバイルバッテリーを組み合わせることで実現しました。

ただし、USBハブが自作のもののためか、時々動かなくなることがあり、最後の方ではAndroidタブレットに直接USBを繋ぎ替える形で対応しました。今後は市販のUSBハブを利用しようと思います。

よく使われる市販品をオプションとして販売

SparrowDialは、M5Dialを収める都合上、TALP KEYBOARDさんや遊舎工房さんで扱われているPoker/GH60互換プラスチックケース専用品でした。そのため、このプラスチックケースを仕入れておき、こちらをオプション品として販売していました。多くの方がこのケースも一緒に買われていきました。すぐに使えるケースということで、需要があったようです。

Booth販売誘導カード

もともとは「もし売り切れるものがあったらBooth販売に誘導したい」という下心があり、Booth販売ページのQRコードを書いたカードを用意していました。

確かにSparrowDialは13時半には売り切れてしまって活用できたのですが、それ以外にも高額な商品なこともあり、まだ悩んでいると言う方にカードとい持ち帰って検討して貰うために渡すことができたのは良かったと思っていました。実際にまだ購入に繋がってはいませんが、そのようなつながりが持てたのは良かったように思います。

Squareによるクレジットカード決済

Squareによるクレジットカード決済を導入していました。商品が高額なこともあり、現金よりもクレジットカードで扱われると嬉しいだろうと用意していました。実際に7割くらいはクレジットカード、iD、QuickPay、交通系ICでの決済を選択されていました。ただ、キーケットの参加者だけあって、現金も用意してくれているようでした。ただ、1万円札で1,800円の商品を買われる方もやはりいらっしゃったので、おつりの準備は必要でした。

その他の反省点

自作キーボードに関するイベントということで、今まで作って面倒くさがって販売までこぎ着けていなかったものを、改めて販売にもっていったため、かなり商品の種類が多くなっていました。その結果、目移りすることになったり、性格の違う商品を説明したりと、かなり忙しくなってしまいました。

他のブースを訪問することがほとんどできませんでした。ブースには家族(妻)に協力してもらっているとはいえ、商品の種類が多く、常に複数の説明をしている状態が続いていました。しかし、多くのアウトプットの成果を展示いただいた場だったため、中座させてもらってでも、回る時間を取った方が良かったなと思いました。最後15分間まわりのブースをみていましたが、予定していたブースを回りきることができませんでした。

準備不足もありました。展示した商品をそれぞれ説明するカードをその場で作っていました。また、Squareへの商品の登録を直前まで行っており、開場前に出展者同士で交流することができませんでした。他のブースは、出展者入場から開場まで1時間以上の十分な時間が合ったためか、挨拶されている光景を目にしました。

スペースが、一般的な同人誌即売会の半卓ではなく、1卓あることは認識していたのですが、1卓用のサークル布を用意していませんでした。なので、その分不格好になっていたように思います。やはり素敵なサークル布を用意して参加されている方もおり、私もそろそろイベント参加回数10回超えているのだから用意しないとと思いました。

さすがキーケットと思ったところ

キーケットでは、本当に多くの「コミュニケーション」をすることができました。展示されているのを眺めて通過するのではなく、高い商材なのもあって、話を聴いて下さる方が多くいました。特に自分のブースが操作体験をしてもらう作りにしてあったのもありますが、実際に多くの対話がうまれていて、参加者にも体験しに来よう、話を聴いて面白がろうというマインドで参加されているのを感じました。これは流石キーケット、自作キーボードのコミュニティという感じです。

また、商材がそこそこ高額なのもあって、手軽に購入できるものではありません。おそらく、2、3台くらいしか売れない、上手くいったら複数台売れるかもくらいのマインドでいましたが、SparrowDial、StickPointVは準備した数(それぞれ6)が完売し、その他の商品もそれぞれ2つ以上購入いただきました。来場者もある程度高額であることは承知で、何か良いものを見つけて購入しようというマインドで参加しているように感じました。

自作キーボードを作っている方の参加もあり、StickPointVや、M5Stackのデバイスの組み込みについての会話も多く発生しました。人の作ったものを批評的に見るのではなく、よりよいものを作った人の話を聴きたいと言うマインドで参加されている方が多くいるようでした。

事前のお品書きの共有ツイートにも、多くの出展者がリツイートしてくれて、嬉しくなりました。そのお品書きツイートで、参加者の熱が高まっているのを感じました。

お品書きのまとめ記事も作成されていて、どういった展示をされるのかわかりやすい状況になっていました。

green-keys.info

DaihukuさんにYouTubeで操作缶とか丁寧に紹介していただいたのも、凄く嬉しかったです。それで来訪いただいた方もいらっしゃったように感じます。当日も、わざわざ触りに、写真を撮りに来ていただきました。

youtu.be

おそらく、私の回りきれなかった当日の様子が動画で配信されると思うので、それを凄く楽しみにしています。

まとめ

私個人としては、非常に自分が面白いと思って作ったものを共有できて、さらに所有してもらえる良い場だったなと思っています。出展者の熱の高さもありましたが、来場者の質が非常に高かったように感じています。実際に購入のアクションまで繋げてくれた方が多くいたことも嬉しく、この活動のやりがいに繋がりました。

今後も面白く実用性のあるデバイスを作って、キーケットの場で共有することができたら嬉しいです。

キーケット、サークル"74th"のお品書き

キーケットとは

キーケットとは、正式名称「キーボードマーケットトキョー」という、自作キーボードオンリーの同人即売会です。

keeb-market.jp

自作キーボードキット自体5千〜2万円ほどする若干高価なものであり、触れずにネットショップだけで購入を決断するのは、期待にそぐわないことや、キットのため返品が不可能なこともあり、難しいと考えていました。このイベントでは、実際に体験して、さらにこだわっている点を制作者に直接話を聞いて、手に入れられます。ぜひ、私の制作したキーボードに関しても、会場で触れて、話を聴いて体験していただければと思います。

そもそも「自作キーボード」とは何かについては、以下の記事を執筆していますので、良ければご覧ください。

zenn.dev

74thのキーケットの出展

今回、Sparrow62キーボードを作ってきた私も、キーケットの機会に新しいキーボードを制作し、展示します。

以下が頒布物のリストですが、この記事内でそれぞれの商品を紹介します!

  • Sparrow60C : ジョイスティックポインター搭載、GH60互換ケース対応自作キーボードキット
  • StickPointV : Sparrow60C搭載のジョイスティックポインター
  • SparrowDial : M5StackCore2、M5Dialをトラックパッドとして搭載可能なGH60互換ケース対応自作キーボードキット
  • SparrowG24 : GH60互換ケースで作るレバーレスアケコンキット。ジョイスティック付き
  • SparrowTV : TV横PC用に赤外線リモコン機能も可能なジョイスティックポインター付きマクロパッド
  • RP2040手はんだ実装挑戦ProMicro型マイコンボードキット : RP2040 ProMicro Like
  • (無料)RP2040手はんだ実装指南ガイド

会場では多くのものを動く形で展示しようと思いますので、それぞれのポインターの操作を是非触ってみてください。

キーケットに行きたい方は

キーケットの入場には「入場券」が必要です。

t.livepocket.jp

Sparrow60C : ジョイスティックポインター搭載、GH60互換ケース対応自作キーボードキット

PSPのようなスライドタイプのジョイスティックを搭載した格子配列に近い配列のキーボードです。ジョイスティックにはTrackPointのキャップをはめて、操作感を高めています。

  • ジョイスティック搭載。専用MCUを搭載し、操作感をチューニング済み。キー押下中に操作で、スクロールすることも可能。PIMORONI Trackball互換インターフェイスのため、設定が容易。
  • 左右分割ではないが、既存のキーボードより左右が離れているため、少し肩が開く。
  • 格子配列に近いが、数字の6を左に寄せた際に少し下げるなど、無理のない指の可動域を実現。
  • GH60互換ケース対応のため、安定性の高い既存のケースが使えて、これが打鍵感や、とStickPointVの操作感に、寄与します。(すべてのGH60互換ケースに対応することは確認できていません)
  • 2UタイプのShift、CapsLockがあるキーキャップをそのまま利用可能。
  • MX互換スイッチ専用。ホットスワップソケット対応。

操作デモは動画をご覧下さい。

youtu.be

動画ファイル: https://drive.google.com/file/d/1OuuH25OPAxuMEmVZZsMZjIpoPfK0DVI1/view?usp=drive_link

  • キット 8,500 円
  • (オプション)GH60互換プラスチックケース 1,500 円

付属品は、PCB、トッププレート、ジョイスティックモジュール(StickPointV)、HY2.0ケーブル(StickPointV用)などです。追加で、MX互換スイッチソケット、GH60互換ケース、MX互換スイッチ、対応キーキャップをご用意下さい。マイコン RP2040 は実装済みです(74thが実装しました)。

会場では動く形で展示しようと思いますので、是非触ってみてください。

ビルドガイドはこちらです。

github.com

Boothでも今後販売します。

74th.booth.pm

SparrowDial : M5StackCore2、M5Dialをトラックパッドとして搭載可能なGH60互換ケース対応自作キーボードキット

M5StackCore2、M5Dialをトラックパッドとして使うための、GH60互換ケース対応キーボードキットです。M5StackCore2とM5DialをI2Cトラックパッドモジュールとして使うファームウェアを74thが開発しており、それを接続して利用します。

  • M5StackCore2もしくはM5Dialをトラックパッドとして搭載し、操作感をチューニング済み。QMK Firmwareが使用可能。
  • M5StackCore2/M5Dialを使うためのケーブルやアダプタはすべて付属。
  • 左右分割ではないが、既存のキーボードより左右が離れているため、少し肩が開く。
  • 格子配列に近いが、数字の6を左に寄せた際に少し下げるなど、無理のない指の可動域を実現。
  • GH60互換ケース対応のため、安定性の高い既存のケースが使えます。(すべてのGH60互換ケースに対応することは確認できていません。プラスチックケースでもM5Dialを使う場合も、ケースへの加工が必要です(手順をまとめています)。)
  • MX互換スイッチ専用。ホットスワップソケット対応。

操作デモは動画を確認ください。

■ M5StackCore2を利用した場合

youtu.be

  • スライド:ポインタ移動
  • タップ:左クリック
  • 2本指タップ:右クリック
  • 2本指スライド:ホイール
  • 左下タッチ:左クリック
  • 左下タッチ+スライド:ドラッグ
  • マウスボタン+スライド:ドラッグ

動画ファイル https://drive.google.com/file/d/1OuuH25OPAxuMEmVZZsMZjIpoPfK0DVI1/view?usp=drive_link

■ M5Dial を利用した場合

youtu.be

  • スライド:ポインタ移動
  • タップ:左クリック
  • 2本指タップ:右クリック
  • 2本指スライド:ホイール
  • 左下タッチ:左クリック
  • 左下タッチ+スライド:ドラッグ
  • マウスボタン+スライド:ドラッグ

動画ファイル https://drive.google.com/file/d/1mz9DKoSng1PGJxP6Wr-9Cc16pZnAGObF/view?usp=drive_link

付属品は、PCB、トッププレート、HY2.0ケーブル(M5StackCore2、M5Dial接続用)、USB-HY2.0ケーブル(M5Dial接続用)、M5StackCore2底部PortA取り出しアダプタなどです。追加で、MX互換スイッチソケット、GH60互換ケース、MX互換スイッチ、対応キーキャップをご用意下さい。マイコン RP2040 は実装済みです(74thが実装しました)。なお、GH60互換プラスチックケースは多少の加工が必要です。

  • キット 8,000 円
  • (オプション)GH60互換プラスチックケース 1,500 円

ビルドガイドはこちらです。

github.com

今後boothにて販売します。

74th.booth.pm

SparrowG21 : GH60互換ケースで作るレバーレスアケコンキット。ジョイスティック付き

GH60互換ケースを使った、RP2040マイコンのためのアケコンファームウェアGP2040のためのアーケードゲームコントローラーキットです。GP2040では、PC、Switchで利用できます。

  • GP2040専用
  • アクションゲームで、左手親指をジャンプとして、上下キーを1つの指で操作できるようなキー配置
  • ジョイスティック2本搭載(3Dプリントで製造したスティックキャップ付属)
  • GH60互換ケース対応
  • MX互換スイッチ対応
  • 薄型スイッチKailh Choc v1、LOFREE x KAILH Full POM Low Profile対応(ただし、Chocの場合にはトッププレート、ホットスワップソケット非対応)。
  • ホットスワップソケット対応(MX互換のみ)
  • OLED、ターボインジケータLED、パワー&モードLED搭載

格闘ゲームのみを指向した物ではありません。ジョイスティック(ローグライト2次元ジャンプアクションをプレイする時に、弓系アイテムを拾った途端必要になる)も搭載しています。左手親指にジャンプを割り当てた際に、左手中指で下を押せるように、キーが用意されています(Additional Keyに割当を想定)。

付属品は、PCB、トッププレート、ジョイスティック、Qwiicソケット、Qwiicケーブルなどです。追加で、MX互換スイッチソケット(MX互換スイッチの場合)、GH60互換ケース、対応スイッチ、対応キーキャップをご用意下さい。マイコン RP2040 は実装済みです(74thが実装しました)。

  • キット 8,000 円
  • (オプション)GH60互換プラスチックケース 1,500 円
  • (オプション)アケコンキーキャップ黒(小11、大1) 1,500 円

ビルドガイドはこちらです。

github.com

Boothでも今後販売します。

74th.booth.pm

StickPointV : Sparrow60C搭載のジョイスティックポインター

Sparrow60Cに搭載したジョイスティックモジュールです。底面にGroveソケットがあり、自作キーボードにアドオンする形で利用することを想定しています。I2Cで通信し、Pimoroni Trackballと互換インターフェイスを持ちます。見た目はトラックポイントのようですが、これはトラックポイントを再現した物ではありません。

最大入力した状態でも比較的遅い速度で設定されていますが、コツコツっと2回動かすと2倍の速度で動くダッシュモードがあります。

QMK FirmwareとKMK Firmwareで動作を確認しています。利用方法については下記リンクを確認ください。

付属品は、モジュール本体、HY2.0ケーブル、ボトムプレート、ボトムプレート用スペーサーとネジです。

  • モジュール 1,800 円

既にboothにて販売中です。

74th.booth.pm

SparrowTV : TV横PC用に赤外線リモコン機能も可能なジョイスティックポインター付きiPhoneケースマクロパッド

TV横PCのために、赤外線TVリモコン、キーボード、マウスの3役を担うマクロパッドです。ケースにはiPhoneSE 2、3 のケースを使います。

TV電源や入力切り替えをキーに割り当てたり、マウスを操作をしたり、ESCで全画面モードを終了したり、Ctrl-Wでウィンドウを閉じたりして利用します。

  • キーボードと、ジョイスティックによるマウス機能(ESP32-C3から、CH9329を操作)
  • Groveポート搭載。M5 IRモジュールを接続して、赤外線リモコンとして使う想定
  • ジョイスティックファームウェアはStickPointVと同等に、ダッシュモードなどチューニングずみ
  • iPhone SE2/3ケースを使用可能。手に収まる感じになります
  • ESP32-C3でCircuitPythonを用いて開発します。ESP32-C3なので、WiFi経由のアプリケーションなども構築可能。

付属品は、PCB、マイコンモジュールESP32-C3、マイコンCH32V003などです。追加で、Kailh Chocスイッチ、対応キーキャップ、iPhone SE 2/3ケースが必要です。書き換えにはUSBシリアル変換モジュールが必要です。CH32V003のファームウェアは書き込み済みです。

  • キット 4,000 円
  • (オプション)USBシリアル変換キット 700円

ビルドガイドは準備中です。

Boothでも今後販売します。

74th.booth.pm

RP2040手はんだ実装挑戦ProMicro型マイコンボードキット : RP2040 ProMicro Like

0.4mmピッチのRP2040は手はんだで実装は難しいです。しかし、できるようになるととても安価な高性能MCUとしてキーボードに組み込むことができます。この実装に挑戦するためのマイコンボードキットです。これまでに、多くの方に挑戦いただいています。

  • キット 1,000 円

こちらは既にboothで販売しているものです。

74th.booth.pm

この実装にトライされている方の動画が非常に参考になります。

www.youtube.com

(無料)RP2040手はんだ実装指南ガイド

74thで「RP2040手はんだ実装指南ガイド」を制作しています。前の商品に付属したり、Webで無料公開しているものですが、こちらの印刷物を無料で配布します。こちらで公開しているものです。

docs.google.com

こちらを印刷したものを無料で配布します。

キーケットでお待ちしております

キーケットでは、私の所以外にも多くの自作キーボードキットが展示、販売されます。ぜひ当日様々な現物に触れていただいて、気に入ったものを見定めてもらえればと思います。

私の所では、それぞれのキーボードを体験できるように準備する予定です。ぜひ、B-11のブースへご来場下さい。

なお、決済手段は、現金、クレジットカード VISA/Master/JCB交通系ICに対応します!