Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save emorima/84f926fb5853e33c2098514f43a94dc4 to your computer and use it in GitHub Desktop.
Save emorima/84f926fb5853e33c2098514f43a94dc4 to your computer and use it in GitHub Desktop.
PRK Firmware AdventCalendar

当初は、この記事は実質Rubyのキーボード(PRK Firmware)で書いて、 「実質Rubyのキーボードは最高だよ。みんなも作ろうぜ!」的なことを書く予定だった... そして、ブログ に掲載する予定だったけど、当日push したらbuild failureで移動までに解決できなかった...

この記事は、PRK Firmware Advent Calendar 2021 18日目の記事です。

昨日は、 @e3w2q さんの「PRK Firmwareのドキュメントを充実させる方法」でし た。ドキュメントが充実されると嬉しいです!!!

RubyKaigi Takeout 2021 で、日本酒をRubyで醸せるようにした @hasumikin さんが、今度はRubyでキーボードも動かせるようにしたという発表があったの で、さっそくmeishi2 を組み立てたところ、動かすことができました。 (自分でコンパイルしようとして詰まったけど、バイナリそのままおいたら簡単にできました)

meishiの次は普段使うキーボードをRubyにしてみようということで、Zinc(家用)とNomu30(旅行用)を作ってみるこ>とにしました。

Zinc

準備したもの

組み立て1

ビルドガイドを見ながら、組み立てます。 初めて組み立てる時は、他の人が組み立てた時のブログも参考になると思います。(記録大事!)

  • ダイオードをはんだで取り付ける
  • LEDチップをはんだで取り付ける
  • Pro Micro RP2040をコンスルーで取り付ける

ここまでできれば、keymap.rb の作成して、LEDがつくかの確認をしていきます。

keymap.rbを作成・LEDの確認

@takkanm さんがZinc rev1のkeymap.rbを公開してくれています。
でも、今回は参考程度にして、自分で keymap.rb を書いてみたいっ!!!

他のキーボードのkeymap.rbや、@takkanm さんの prk_keymap_generator 、3日目の @e3w2q さんのPRK Firmwareでの設計メモを参考にゴ>ニョゴニョしたものがこちらです。

keymap.rb でLEDが設定できて光った時は嬉しかった!!!
のですが、最初の1個しかつかなかった...
2個めのLEDのはんだが、きちんとついてなかったのが原因でした。

LEDが全て光ったら、LEDの確認は完了です。

組み立て2

  • TRRSジャックとリセットスイッチをはんだで取り付ける
  • キースイッチもはんだで取り付ける

ケーブル繋いで動作確認して、ケースを組み立てれば!!!! というところで、スペーサーを入れ忘れていることに気 づいたので、キースイッチを一度全部外さねばならない...

後編に続く!!!

Nomu30

準備したもの

  • Nomu30
  • Pro Micro RP2040
  • キースイッチ(家にあった潤滑済みのクリア軸)
  • キーキャップ (家にあったもの)

組み立て1

Nomu30もビルドガイドを見ながら、組み立てます。

  • ダイオードをはんだで取り付ける
  • Pro Micro RP2040をコンスルーで取り付ける
  • リセットスイッチをはんだで取り付ける
  • スタビライザーを取り付ける
  • スペーサーを取り付ける

keymap.rbを作成

QMK Firmware の設定をもとに、まずはdefalt layerだけでも...と作り始めたところ、 MATRIX_ROW_PINS の値の B0 の変換値がわからない… 自分なりに色々調べたり、試したりしてみたけど、動く気配がありません。

ひとまず、QMK Firmwareで作っておいて、島根に来て @hasumikin さんに相談してみたところ、 設定をみている keymap.cが違っていた...(と @takkanm さんが教えてくれた。ありがとうございます)

「正しい keymap.rb できたぞ〜」と思っても、やっぱり動かない... @hasumikin さんが見てくれたら、「これ、Pro Microの向き逆じゃ...」

!!!!

後編に続く!!!

前編の中で詰まったところ

  • Zincの keymap.rb を書いている時に、QMK Firmware keymap.c のように、 キー配列をコメントで記載していたのですが、何度やっても書き込みでエラーになってしまいました。 ファイルサイズが大きくなってしまったのが原因のようでした。
  • 回路もよくわかっていないし、まだ雰囲気でkeymap.rbを書いているので、「これか?これで動くのか?」という 状態です。

前編の感想と後編の予定

  • とりあえずはんだ外して、Rubyで動くようにします。
    • はんだシュッ太郎にはお世話になりっぱなし。シュッ太郎、ありがとう。
  • 動作確認できたら、keymap.rb のリポジトリをpushする予定です。
  • そして後半編はちゃんとブログに書く予定です。
  • 久しぶりにQMK Firmwareでの環境で書き込みしたけど、前に作っていた頃と環境構築の方法が変わっていて、ち>ょっと戸惑いました。(qmk コマンドができていた...)
  • QMK Firmware は、キー配列を少し修正して使う使い方しかしていないので、keymap.rb を自分で書くことで、 「何の設定が必要なのか」が見えやすいなぁ...と感じています。 このあたり、後編にもう少し詳しく書けたらいいなぁ...
  • 詰まったところで、すぐ @hasumikin さんや @takkanm さんに相談すれば、 「もっと早く解決することはできた」と思うけれど、性格的に 自分で色々試して納得しながら進めていきたいので(それが例え、 🐢 の歩みであっても)、 これからもマイペースにやっていこうと思います。

明日は、 @takkanm さんです。

キーボード、いくつ持ってるんだろう。

この記事は、PRK Firmware Advent Calendar 2021 21日目の記事です。

昨日は、@takkanm さんのタイトルが適当な 「この年末年始はPRK firmware の動くキーボードを作って、新年のスタートでライバルと差をつけよう」でした。
まだまだ keymap.rb と格闘している私は、差がつけられるのか!?

さてさて、前編に残した課題です。

先に謝っておくと、今回もgistです!!! キーボード動かすようにしてたら、そっちまで手が回らなかった〜! 年末年始にやります。

Nomu30 の続き

さてさて、前編、Pro Micro逆じゃん... で終わってしまったNomu30の続きをやります!

追加購入したもの

  • コンスルー 3.5mm
    • Pro Mircoを逆向きにすると、、、コンスルー2.5mm だと高さがたりないため、 Daily Craft Keyboardさんのここから買いました。
  • 黄銅スペーサー(六角)M2
    • コンスルー 3.5mm にすると、5mm のスペーサーだと引っかかってしまうため、遊舎工房さんのここから買いました。
      実は今日「スペーサー高さ足りないじゃん…」となったので、まだ届いていません...

再び組み立てて、keymap.rbを確認

はんだを外して、正しい向きに直して、作っておいたdefault layerのみで確認したところ、 あっさり、何か入力できるようになりました。

が、、、どうもキーと出力されるのがあっていないので、keymap.rb をゴニョゴニョして、 合わせてレイヤーの切り替えも行い、Ruby で Nomu30 が動くようになりました。

作った keymap.rbここ においてあります!

いぇぇぇーい。なんとかできた!

Zinc の続き

ちょっとキー全てのはんだ外す時間がなかったので、再組み立ては年末年始に持ち越しします。

ひとまず動かす両方繋いで動きを確認してみたところ、自作 keymap.rb では右側のキーが逆になっていました。

これは、ptwrk_firmware 入門 で @takkanmさんが既に書いてあるように、 右側のキーマップはreverseかけないといけないです。

keymap は、 @takkanm さんのを参考にした方がよいです。 追記:以下の設定でreverseしなくてもできるようになっていました!

kbd.split_style = :right_side_flipped_split

以下を設定を追加すると、LEDが光ります!

rgb = RGB.new(
  0,    # pin number
  0,    # size of underglow pixel
  32,   # size of backlight pixel
  false # 32bit data will be sent to a pixel if true while 24bit if false
)
sleep 1
rgb.effect = :swirl
kbd.append rgb                                                                                                                                                  

まとめ

年末年始の持ち越し課題も残ってしまいましたが、ひとまず、Rubyで動くキーボードが2つできました! やった!嬉しい!しかも光るぞ!

年末年始はRubyで醸したお酒でも飲みつつ、更にRubyキーボードについて、色々触っていきたいと思います!

明日は、@eswai さんの「PRK firmwareをbuildする」 です!楽しみ!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment