Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Raw HID とOLEDで広げるキーボードの可能性/Expanding Keyboard P...
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
hachi (Hayao Kimura)
December 07, 2024
140
0
Share
Raw HID とOLEDで広げるキーボードの可能性/Expanding Keyboard Possibilities with Raw HID and OLED
hachi (Hayao Kimura)
December 07, 2024
More Decks by hachi (Hayao Kimura)
See All by hachi (Hayao Kimura)
Integration of PRK Firmware and R2P2
hayaokimura
1
160
PicoRuby で拓く電子工作の世界/The World of Electronics Projects Opened by PicoRuby
hayaokimura
2
1k
RISC-V CPU emulator made with Ruby
hayaokimura
2
96
Ruby で作る RISC-V CPU エミュレーター / RISC-V CPU emulator made with Ruby
hayaokimura
5
2.1k
Fiber Scheduler vs. General-Purpose Parallel Client
hayaokimura
1
830
社内でGemを読む会をして捗っている/Progressing Well: A Gem Reading Session at Work
hayaokimura
1
73
freee請求書プロダクトにおけるFiber活用/Utilization of Fiber in the freee Invoice Product
hayaokimura
1
170
いいチームでいるためにやっていること/Things we are doing to remain a good team
hayaokimura
2
740
やりたいことを仕事でやる技術 / The Technique of Turning Your Passion into Your Profession
hayaokimura
0
11k
Featured
See All Featured
Claude Code のすすめ
schroneko
67
220k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
333
22k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
508
140k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
35
3.4k
B2B Lead Gen: Tactics, Traps & Triumph
marketingsoph
0
110
The Cost Of JavaScript in 2023
addyosmani
55
9.9k
Practical Orchestrator
shlominoach
191
11k
We Analyzed 250 Million AI Search Results: Here's What I Found
joshbly
1
1.2k
Ethics towards AI in product and experience design
skipperchong
2
260
Context Engineering - Making Every Token Count
addyosmani
9
840
<Decoding/> the Language of Devs - We Love SEO 2024
nikkihalliwell
1
190
AI Search: Where Are We & What Can We Do About It?
aleyda
0
7.4k
Transcript
Raw HID とOLEDで広げる キーボードの可能性 hachi 2024/12/07
目次 • 大阪府交野市在住 Rubyist • freee のエンジニアです • Corne Cherry
V3 愛用 • Kyobashi.rb Cofounder • Kaigi on Rails Organizer • PicoRuby でたまによく遊びます hachi (@hachiblog)
目次 • 大阪府交野市在住 Rubyist • freee のエンジニアです • Corne Cherry
V3 愛用 • Kyobashi.rb Cofounder • Kaigi on Rails Organizer • PicoRuby でたまによく遊びます hachi (@hachiblog)
目次 • 大阪府交野市在住 Rubyist • freee のエンジニアです • Corne Cherry
V3 愛用 • Kyobashi.rb Cofounder • Kaigi on Rails Organizer • PicoRuby でたまによく遊びます hachi (@hachiblog)
目次 • 大阪府交野市在住 Rubyist • freee のエンジニアです • Corne Cherry
V3 愛用 • Kyobashi.rb Cofounder • Kaigi on Rails Organizer • PicoRuby でたまによく遊びます hachi (@hachiblog)
hasumi san ありがとうございます!
キーボードのOLED活用してますか?
外して使ってないです?
天気でキーボードの 色変えたい人もいましたね
Wifi を待たずとも OLED とか LED で遊びませんか
ある日……
仕事いそがしいなぁ
タスクが山積みだなぁ
完了したタスクが可視化されると モチベーションになっていいのでは?
ついでにミーティング5分前通知に 気づかない問題も解決したいな
せや!キーボードに実装したらいいんや!
でもどうやってキーボードに情報を送ろう 🤔
None
None
VIA の通信に使っている仕組みを利用したら キーボードに書き込みができそう
picoruby-prk-via を読む • どうやら USB.get_last_received_raw_hid_report という API を使って 情報を受け取っているらしい •
通信するときは Vendor ID と Product ID が必要らしい • hid report id というものがあって Raw HID は 5 らしい
Raw HID ってなんじゃ
Raw HID ってなに • HID: USBデバイスクラスの一つ。マウスとか、キーボードとかまさに HID ◦ 他には MSC(マスストレージクラス)とかがある
• Raw って? ◦ 多分初出は QMK firmware ? で、HIDでキーボードとホスト間の自由に使える通信
ということで実装じゃ!
概要 Markdown を用意 HID 送信プロセス 読み取り PRK Firmware 送信
ホスト側 • node-hid を使うと簡単にキーボードと hid で通信ができる ◦ (Ruby 使いたかったんだけど mac
だとうまく行かんかったので要研究) • HID で接続して、メッセージを送信する ◦ 簡単に書くと下記の様な感じ
キーボード側(PRK Firmware) • PRK Firmware にちょっと細工する ◦ Keyboard#start! method 内の
while ループの中で色々できるように after_input_proc メソッドを定 義し、keymap.rb からいじれるようにする ▪ こうしておくと開発が楽 ◦ @via&.task は使わないのでコメントアウト
キーボード側(rgb.rb) • Led もループ内で制御したいのでちょっと変更 ◦ on/off の状態を持つ offed インスタンス変数を外から使いたいので attr_reader
に追加 ◦ send_key method で 分割キーボードの partner に LED の点灯状態を伝えるために、 message_to_partner をローカル変数 → インスタンス変数に
キーボード側(keymap.rb)
完成!
None
まとめ • Raw HID を使うことで PC からキーボードにいろいろ送れる • OLED にいろいろ表示したり、LED
をいい感じにピカピカしたりしよう! ◦ (ちなみに時間のかかるタスクをやらせると動作が安定しなくなるので可能な限り処理を軽くすると いいです。あとメモリを使わないコードを心がけましょう) ▪ Pico の別コアとか使えたらいいのでは?とかちょっと考えたりしている • しばらく PC 繋いで展示するので見てくれると嬉しいです。今日の予定を入れてい るので講演5分前からピカピカします
おわり!