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
[LT] Emacs 小指に足で対抗した話
Search
zk-phi
July 06, 2018
Programming
0
590
[LT] Emacs 小指に足で対抗した話
社内 LT で自作フットペダルの話をしました。一部ネタはカットしています
zk-phi
July 06, 2018
Tweet
Share
More Decks by zk-phi
See All by zk-phi
[LT] 最近遊んだインディーゲーム
zk_phi
0
170
[LT] ちょっと賢く酒を飲む
zk_phi
0
250
[LT] 渋谷発おすすめ散歩ルート
zk_phi
0
220
[LT] ビールじゃない話
zk_phi
0
290
今週末できるお手軽ビアテイスティング
zk_phi
1
150
[LT] ビールが面白い話・2
zk_phi
1
370
[LT] 早押しクイズが楽しい話
zk_phi
0
230
[LT] ビールがおもしろい話
zk_phi
2
200
[LT] OpenSCAD でキーボード設計
zk_phi
0
730
Other Decks in Programming
See All in Programming
Enterprise Web App. Development (2): Version Control Tool Training Ver. 5.1
knakagawa
1
120
Java on Azure で LangGraph!
kohei3110
0
170
[初登壇@jAZUG]アプリ開発者が気になるGoogleCloud/Azure+wasm/wasi
asaringo
0
130
Benchmark
sysong
0
270
生成AIコーディングとの向き合い方、AIと共創するという考え方 / How to deal with generative AI coding and the concept of co-creating with AI
seike460
PRO
1
330
型付きアクターモデルがもたらす分散シミュレーションの未来
piyo7
0
810
XP, Testing and ninja testing
m_seki
3
190
AIエージェントはこう育てる - GitHub Copilot Agentとチームの共進化サイクル
koboriakira
0
380
イベントストーミング図からコードへの変換手順 / Procedure for Converting Event Storming Diagrams to Code
nrslib
1
400
設計やレビューに悩んでいるPHPerに贈る、クリーンなオブジェクト設計の指針たち
panda_program
6
1.4k
AIプログラマーDevinは PHPerの夢を見るか?
shinyasaita
1
120
データの民主化を支える、透明性のあるデータ利活用への挑戦 2025-06-25 Database Engineering Meetup#7
y_ken
0
320
Featured
See All Featured
Unsuck your backbone
ammeep
671
58k
Fashionably flexible responsive web design (full day workshop)
malarkey
407
66k
Music & Morning Musume
bryan
46
6.6k
Java REST API Framework Comparison - PWX 2021
mraible
31
8.6k
Why Our Code Smells
bkeepers
PRO
337
57k
The Power of CSS Pseudo Elements
geoffreycrofte
77
5.8k
Why You Should Never Use an ORM
jnunemaker
PRO
57
9.4k
Building Flexible Design Systems
yeseniaperezcruz
328
39k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
53k
How To Stay Up To Date on Web Technology
chriscoyier
790
250k
BBQ
matthewcrist
89
9.7k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
48
2.8k
Transcript
&NBDT খࢦʹͰର߅ͨ͠ ![LQIJ
&NBDT খࢦʹͰର߅ͨ͠ IUUQXXXHBSJOJPSTJUPCFUUFSEFW
খࢦ͕௧͍ͳΒɺ Ͱ౿Ί͍͍͡ΌΜ ఱ ࠽ ͔
Ϩγϐ ࡐྉ ΤϑΣΫλʔͱ͔ͷϑοτϖμϧ ϞϊϥϧδϟοΫ "SEVJOP6/0 ߅ -&% ݸ ݸ ݸ
ຊ దྔ
ճ࿏Λ࡞Δ
ϓϧμϯ߅
㱨 ճ࿏ͷσβύλ
7 7 3 ϓϧμϯ߅
7 7 0VUQVU 3 ϓϧμϯ߅
4XJUDI0GG 3 7 7 0VUQVU7
4XJUDI0O 7 7 0VUQVU 7
ϓϧμϯ߅͕ͳ͍ͱʜ
4XJUDI0O 7 7 0VUQVU 7
4XJUDI0GG 7 7 0VUQVUʁʁ
4XJUDI0GG 3 7 7 0VUQVU7
ϑοτϖμϧΛͭͳ͙
ϑοτϖμϧͷΠϯλʔϑΣʔε
None
(/% 0VUQVU
0VUQVU (/%
7 7 0VUQVU 3
7 7 0VUQVU7 3
7 7 0VUQVU 7
7 7 0VUQVU 7
None
ϖμϧͷ 0/0''͕औಘͰ͖ͨ
1$ʹͭͳ͍͗ͨ
ˣ 6 4#
Ոͷๅ "SEVJOP
$ ͬΆ͍ ϓϩάϥϜͰ ϚΠίϯΛ 64#੍ޚͰ͖Δͭ ˡ ϚΠίϯ "73
ίʔυΛॻ͘
#define THRESHOLD 700 uint8_t key_ctrl[8] = { 0, 0, 0xe0,
0, 0, 0, 0, 0 }; uint8_t key_none[8] = { 0, 0, 0, 0, 0, 0, 0, 0 }; void setup () { Serial.begin(9600); } void loop () { static int pressed = 1; int input = analogRead(5); if (pressed && input < THRESHOLD) { Serial.write(key_none, 8); pressed = 0; } else if (!pressed && input1 > THRESHOLD) { Serial.write(key_ctrl, 8); pressed = 1; } }
#define THRESHOLD 700 uint8_t key_ctrl[8] = { 0, 0, 0xe0,
0, 0, 0, 0, 0 }; uint8_t key_none[8] = { 0, 0, 0, 0, 0, 0, 0, 0 }; void setup () { Serial.begin(9600); } void loop () { static int pressed = 1; int input = analogRead(5); if (pressed && input < THRESHOLD) { Serial.write(key_none, 8); pressed = 0; } else if (!pressed && input1 > THRESHOLD) { Serial.write(key_ctrl, 8); pressed = 1; } }
#define THRESHOLD 700 uint8_t key_ctrl[8] = { 0, 0, 0xe0,
0, 0, 0, 0, 0 }; uint8_t key_none[8] = { 0, 0, 0, 0, 0, 0, 0, 0 }; void setup () { Serial.begin(9600); } void loop () { static int pressed = 1; int input = analogRead(5); if (pressed && input < THRESHOLD) { Serial.write(key_none, 8); pressed = 0; } else if (!pressed && input1 > THRESHOLD) { Serial.write(key_ctrl, 8); pressed = 1; } }
#define THRESHOLD 700 uint8_t key_ctrl[8] = { 0, 0, 0xe0,
0, 0, 0, 0, 0 }; uint8_t key_none[8] = { 0, 0, 0, 0, 0, 0, 0, 0 }; void setup () { Serial.begin(9600); } void loop () { static int pressed = 1; int input = analogRead(5); if (pressed && input < THRESHOLD) { Serial.write(key_none, 8); pressed = 0; } else if (!pressed && input1 > THRESHOLD) { Serial.write(key_ctrl, 8); pressed = 1; } }
"SEVJOP*%&Ͱ ΫϩείϯύΠϧˍసૹ
None
ͱࢥ͍͖
"SEVJOPΩʔϘʔυͱͯ͠ ೝࣝ͞Εͳ͍ ΦοεɺΦϥ EFWUUZ64#
γϦΞϧϙʔτΛࢹ ͢Δπʔϧॻ͘ʜʁ ͳΜ͔μα͍
"SEVJOPͷϑΝʔϜ ॻ͖͑Ε͍͍͡ΌΜ ఱ ࠽ ͔
"SEVJOPʹ 64#)*%ΒͤΔ
λʔήοτ "SEVJOPୈೋͷϚΠίϯ 64#⁵γϦΞϧมˠ
ઌਓ͕͍ͨͷͰഈआ
Arduino を DFU モードに ここをショート
EGVQSPHSBNNFSͰম͘ $ brew install dfu-programmer $ dfu-programmer atmega16u2 erase $
dfu-programmer atmega16u2 flash Arduino-keyboard-0.3.hex $ dfu-programmer atmega16u2 rest
None
Ͱ
2&NBDT খࢦ ྑ͘ͳͬͨͷʁ
"ࠨ͕௧͍
·ͱΊ
·ͱΊ FNVMBUJPOϓϥάΠϯΛೖΕΔͱศར ɾWJNPEFʜϏϧτΠϯ EFQSFDBUFE ɾWJNNPEFʜϏϧτΠϯ ɾWJQFSNPEFʜϏϧτΠϯ ɾFWJMNPEFʜIUUQTHJUIVCDPNFNBDTFWJMFWJM ɾTQBDFNBDT ʜIUUQTHJUIVCDPNTZMCOSTQBDFNBDT ɾHPENPEFʜIUUQTHJUIVCDPNDISJTEPOFHPENPEF
ͪͳΈʹ
౿Ή $USM[ͱͯ͠ σβΠφʔͷ੮Ͱ͕Μ͍ͬͯ·͢
5IBOLZPV Πϥετ͍Β͢ͱ QJYBCBZ GSJU[JOH