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
hachi (Hayao Kimura)
December 07, 2024
0
100
Raw HID とOLEDで広げるキーボードの可能性/Expanding Keyboard Possibilities with Raw HID and OLED
hachi (Hayao Kimura)
December 07, 2024
Tweet
Share
More Decks by hachi (Hayao Kimura)
See All by hachi (Hayao Kimura)
PicoRuby で拓く電子工作の世界/The World of Electronics Projects Opened by PicoRuby
hayaokimura
2
160
RISC-V CPU emulator made with Ruby
hayaokimura
2
64
Ruby で作る RISC-V CPU エミュレーター / RISC-V CPU emulator made with Ruby
hayaokimura
5
1.8k
Fiber Scheduler vs. General-Purpose Parallel Client
hayaokimura
1
500
社内でGemを読む会をして捗っている/Progressing Well: A Gem Reading Session at Work
hayaokimura
1
51
freee請求書プロダクトにおけるFiber活用/Utilization of Fiber in the freee Invoice Product
hayaokimura
1
140
いいチームでいるためにやっていること/Things we are doing to remain a good team
hayaokimura
2
710
やりたいことを仕事でやる技術 / The Technique of Turning Your Passion into Your Profession
hayaokimura
0
8.7k
Drive Your Code ~ Building an RC Car by Writing Only Ruby~
hayaokimura
2
2.6k
Featured
See All Featured
[RailsConf 2023] Rails as a piece of cake
palkan
57
6k
GraphQLとの向き合い方2022年版
quramy
49
14k
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.5k
It's Worth the Effort
3n
187
28k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
140
34k
Testing 201, or: Great Expectations
jmmastey
46
7.8k
A designer walks into a library…
pauljervisheath
210
24k
Build your cross-platform service in a week with App Engine
jlugia
234
18k
Gamification - CAS2011
davidbonilla
81
5.5k
Java REST API Framework Comparison - PWX 2021
mraible
34
9k
Unsuck your backbone
ammeep
671
58k
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分前からピカピカします
おわり!