24
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

RubyKaigi 2023 ノベルティキーボードをつくってみた

Last updated at Posted at 2023-05-15

この記事は 【RubyKaigi 2023連動イベント】みんなでRubyの知見を共有しよう - Qiita の参加記事です。

はじめに

先日のRubyKaigi 2023でノベルティグッズとして、マイクロパッドキットが配布されました!

image.png
(キースイッチは別で用意したものです)

最近 ここからはじめる自作キーボード をやり、またキーボードつくりたいなと思っており、ちょうどRubyKaigiでいただいたのでつくってみました。

ビルドガイド通りに進める

いただいたPCBにビルドガイドへのリンクが記載されていました。

image.png

詳細な組み立て手順はビルドガイドにあるので省略します。

なお、KeebKaigi 2023でノベルティキーボード製作者の魔王さんがノベルティキーボードについてお話されていましたので、先に見ておくと組み立てが楽しくなる!かもしれません。
(「ミスしないようにビルドガイドをしっかり読みましょう」って話はここだったのかなと考察できて楽しかった)

で、組み立ててできたものがこちらです!

カラフルに光ってかっこいい!
また、各キーはbundle execrails sなどRubyist向けのマクロになっていました!(詳細はkeymap.rbを参照)

(Twitterで魔王さんからコメントいただきました!嬉しい!)

キーマップをカスタマイズしてみる

せっかくなので、キーマップをカスタムして、rubyと入力できるようにしてみます。

ビルドガイド通りに進めると、このノベルティキーボードのファームウェアは、Rubyでキーマップを書ける「PRK Firmware」が使われています!
(RubyKaigi 2023の@hasumikinさんのセッションでも紹介されていました)

なので、すでにあるkeymap.rb(ビルドガイドでダウンロードしたもの)をもとにカスタムしてみます。

まず、keymap.rbを読んでみます。
なお、以下のリポジトリでkeymap.rbは公開されていました。

keymap.rb
require "consumer_key"

kbd = Keyboard.new

kbd.init_direct_pins([
  3,  4,  6, 29,
  2,  1,  7,  0
])

kbd.add_layer :default, %i[
  COPY           RAILS    CONSOLE    PASTE
  BKSP_LEFT      BUNDLE   RAKE       DEL_RIGHT
]

# (snip)

init_direct_pinsadd_layerの部分に注目します。

init_direct_pinsはPRK FirmwareのWikiによると、

Direct-scan
Direct-scan circuit has no diode and one-to-one correspondence between pins and switches.

とのことです。
以下のリポジトリでPCBのデータが公開されていたので、回路図を見てみましょう。

image.png

スクリーンショット 2023-05-15 22.28.20.png

また、Seeed Studio XIAO RP2040の各ピンは以下のとおりです。

image.png

Overview | Seeed Studio Wiki より引用)

これらから、各ピンとキースイッチは1対1でつながっており、実際のキーとピンの対応は以下の図のようになることがわかります。

key.jpg

次に、add_layerはその名の通り、レイヤーを設定できる様です。

修飾キーが押されていない状態でのレイヤーにはdefaultが使われるため、ここにキーコードを設定すると良さそうだということがわかります。

ということで、「rubypicorubyが入力できるキーマップ」を考えてみました!
(複数のレイヤーをやりたいと思ったんですが、人生初のLEDのはんだ付けで力尽きそうなのでお許しください)

key.jpg

そして、書いたkeymap.rbはこちらです!
(RGBの設定も少し触ってみました)

いざ、入力...!

image.png

できました!ばんざーい :raised_hands:

さいごに

人生初のLEDのはんだ付けで力尽きそうになりましたが、無事LEDを壊すことなく完成できてよかったです。
また、PRK FirmwareをRubyKaigiで知って使ってみたのですが、すっとRubyで書けるのがとてもよかったです。

RubyKaigi 2023 ノベルティキーボード最高に楽しめました!ありがとうございました!

追記

自分用のキーマップをRubyist仕様を残しつつ、つくってみたので載せておきます。

24
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
24
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?