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
520
[LT] Emacs 小指に足で対抗した話
社内 LT で自作フットペダルの話をしました。一部ネタはカットしています
zk-phi
July 06, 2018
Tweet
Share
More Decks by zk-phi
See All by zk-phi
[LT] 最近遊んだインディーゲーム
zk_phi
0
150
[LT] ちょっと賢く酒を飲む
zk_phi
0
220
[LT] 渋谷発おすすめ散歩ルート
zk_phi
0
190
[LT] ビールじゃない話
zk_phi
0
270
今週末できるお手軽ビアテイスティング
zk_phi
1
120
[LT] ビールが面白い話・2
zk_phi
1
340
[LT] 早押しクイズが楽しい話
zk_phi
0
200
[LT] ビールがおもしろい話
zk_phi
2
180
[LT] OpenSCAD でキーボード設計
zk_phi
0
670
Other Decks in Programming
See All in Programming
カンファレンス動画鑑賞会のススメ / Osaka.swift #1
hironytic
0
190
『改訂新版 良いコード/悪いコードで学ぶ設計入門』活用方法−爆速でスキルアップする!効果的な学習アプローチ / effective-learning-of-good-code
minodriven
29
4.6k
PHPで作るWebSocketサーバー ~リアクティブなアプリケーションを知るために~ / WebSocket Server in PHP - To know reactive applications
seike460
PRO
2
800
Vue.jsでiOSアプリを作る方法
hal_spidernight
0
110
各クラウドサービスにおける.NETの対応と見解
ymd65536
0
250
shadcn/uiを使ってReactでの開発を加速させよう!
lef237
0
340
Rubyでつくるパケットキャプチャツール
ydah
0
260
asdf-ecspresso作って 友達が増えた話 / Fujiwara Tech Conference 2025
koluku
0
1.5k
知られざるDMMデータエンジニアの生態 〜かつてツチノコと呼ばれし者〜
takaha4k
3
920
Immutable ActiveRecord
megane42
0
100
watsonx.ai Dojo #6 継続的なAIアプリ開発と展開
oniak3ibm
PRO
0
240
Azure AI Foundryのご紹介
qt_luigi
1
240
Featured
See All Featured
Build The Right Thing And Hit Your Dates
maggiecrowley
33
2.5k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
160
15k
Product Roadmaps are Hard
iamctodd
PRO
50
11k
The Illustrated Children's Guide to Kubernetes
chrisshort
48
49k
Optimising Largest Contentful Paint
csswizardry
33
3k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
5
200
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
29
2.4k
How to train your dragon (web standard)
notwaldorf
89
5.8k
Producing Creativity
orderedlist
PRO
343
39k
Visualization
eitanlees
146
15k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
44
9.4k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
28
4.5k
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