Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Kernel/VM Kansai #9
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
orumin
September 22, 2018
Programming
1k
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Kernel/VM Kansai #9
Kernel/VM 関西 9 回目の発表資料です。
orumin
September 22, 2018
More Decks by orumin
See All by orumin
あのころの iPod を どうにか再生させたい
orumin
2
3k
ヴィンテージマシンと付き合う - kernel/vm online 5
orumin
0
1.3k
むかしの RISC、むかしの Unix
orumin
7
3.9k
Fundamental of architecture to implementing OS on AArch64
orumin
3
5.8k
Kernel/VM #14 発表資料
orumin
1
660
Unikernels report
orumin
2
550
第13回Kernel/VM勉強会発表資料
orumin
1
1.7k
第12回カーネル/VM探検隊
orumin
0
410
第11回 Kernel/VM探検隊 発表資料
orumin
1
620
Other Decks in Programming
See All in Programming
エージェントを使い続けるためのメタワーク / Meta-work for keeping using the agent
rkaga
6
2.1k
複雑なUIコンポーネントとの ⻑い付き合い⽅:波及するバグからテスト戦略を経て、安全な再設計へ
mixplace
0
500
ActionController meets Protocol Buffers
sorah
1
770
Web Framework Benchmark Battle 2026, Any%
a_matsuda
3
3.1k
SODA - FACT BOOK(EN)
sodainc
1
200
React Native経験者が Flutterを30⽇間触って驚いたこと
3saito
0
130
クラウドゲーミングのパフォーマンス最適化に挑む / Cloud Gaming Performance Tuning
vivion
0
320
8年前のNode.jsを動かして分かった、npm installの裏側
keisukeikeda
0
120
社内AIエージェント「Askワンバン」における コストチューニングの取り組み
t0yohei
0
130
Getting Started with Vibe Coding
miccheng
0
170
現場と育てるRailsモデリング 〜Spreadsheetから始めたモデル設計〜
siroemk
2
1.2k
AI-Powered Domain-Driven Design
ziobrando
0
370
Featured
See All Featured
How Fast Is Fast Enough? [PerfNow 2025]
tammyeverts
3
960
How to build an LLM SEO readiness audit: a practical framework
nmsamuel
2
970
Keith and Marios Guide to Fast Websites
keithpitt
413
23k
Bootstrapping a Software Product
garrettdimon
PRO
306
120k
Tell your own story through comics
letsgokoyo
1
1.1k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
16
2.2k
AI: The stuff that nobody shows you
jnunemaker
PRO
10
1.2k
A Tale of Four Properties
chriscoyier
163
24k
StorybookのUI Testing Handbookを読んだ
zakiyama
31
7k
Building Better People: How to give real-time feedback that sticks.
wjessup
371
20k
What does AI have to do with Human Rights?
axbom
PRO
1
2.5k
Applied NLP in the Age of Generative AI
inesmontani
PRO
4
2.6k
Transcript
9/22/2018 Kernel/VM 関⻄ 9 回⽬ file:///home/orumin/Nextcloud/slides/kernelvm/kansai-9/slides.html?print-pdf 1/18 Kernel/VM 関⻄ 9
回⽬ Kernel/VM 関⻄ 9 回⽬ orumin 1
9/22/2018 Kernel/VM 関⻄ 9 回⽬ file:///home/orumin/Nextcloud/slides/kernelvm/kansai-9/slides.html?print-pdf 2/18 ごきげんようみなさん ごきげんようみなさん おはよう
こんにちは こんばんわ みなさんお元気です か? orumin といいます 2
9/22/2018 Kernel/VM 関⻄ 9 回⽬ file:///home/orumin/Nextcloud/slides/kernelvm/kansai-9/slides.html?print-pdf 3/18 突然ですが 突然ですが 私は元気ではないです
突如襲いくる⼩指の痛 み! 若⼲調⼦の悪い喉! とりあえずかかった病 院! 3
9/22/2018 Kernel/VM 関⻄ 9 回⽬ file:///home/orumin/Nextcloud/slides/kernelvm/kansai-9/slides.html?print-pdf 4/18 レントゲンです レントゲンです 4
. 1
9/22/2018 Kernel/VM 関⻄ 9 回⽬ file:///home/orumin/Nextcloud/slides/kernelvm/kansai-9/slides.html?print-pdf 5/18 指が痛い場合は 指が痛い場合は 腱鞘炎
痛⾵ 膠原病(リウマチ) ヘバーデン結節(ブシャール結 節) 4 . 2
9/22/2018 Kernel/VM 関⻄ 9 回⽬ file:///home/orumin/Nextcloud/slides/kernelvm/kansai-9/slides.html?print-pdf 6/18 関節炎でした 関節炎でした 腱鞘炎とかかと思ったら⽯灰沈着性関節炎だそうです
どうすんだこれ…… 普通は中年くらいの⼥性が肩とかでよく起こすそうで す :thinking_face: 4 . 3
9/22/2018 Kernel/VM 関⻄ 9 回⽬ file:///home/orumin/Nextcloud/slides/kernelvm/kansai-9/slides.html?print-pdf 7/18 問題点 問題点 Vim
と tmux と SKK のヘヴィーユーザー 左⼿⼩指が使えなくなった そもそも LT とかこれからネタ作る予定だったんだけ ど…… 5
9/22/2018 Kernel/VM 関⻄ 9 回⽬ file:///home/orumin/Nextcloud/slides/kernelvm/kansai-9/slides.html?print-pdf 8/18 今回の話題 今回の話題 ⼩指がもしもどうにかなったときにするべきカーネルハック
6
9/22/2018 Kernel/VM 関⻄ 9 回⽬ file:///home/orumin/Nextcloud/slides/kernelvm/kansai-9/slides.html?print-pdf 9/18 ⼩指を使わないタイピング ⼩指を使わないタイピング 他の指(薬指とか)を使う
無変換などのスペースまわりのキーを他のキーへアサインす る SandS 7
9/22/2018 Kernel/VM 関⻄ 9 回⽬ file:///home/orumin/Nextcloud/slides/kernelvm/kansai-9/slides.html?print-pdf 10/18 SandS (Space and
Shi ) SandS (Space and Shi ) スペースキーを⻑押し中に他のキーを⼊⼒したとき Shi として振 る舞う SKK ユーザーと親和性が⾼い 8
9/22/2018 Kernel/VM 関⻄ 9 回⽬ file:///home/orumin/Nextcloud/slides/kernelvm/kansai-9/slides.html?print-pdf 11/18 既存実装 既存実装 xf86-input-keyboard
や xf86-input-evdev へのパッ チ Wayland で使えない 9
9/22/2018 Kernel/VM 関⻄ 9 回⽬ file:///home/orumin/Nextcloud/slides/kernelvm/kansai-9/slides.html?print-pdf 12/18 他の解決⽅法 他の解決⽅法 (GNOME
ユーザーなので)これで動くデーモンかなにか作 る あるいは GTK をパッチ ここは Kernel/VM である 10
9/22/2018 Kernel/VM 関⻄ 9 回⽬ file:///home/orumin/Nextcloud/slides/kernelvm/kansai-9/slides.html?print-pdf 13/18 やることはカーネルハック やることはカーネルハック このラップトップのキーボードのモジュールを
lsmod で確 認 USB HID ではなく AT キーボードとして認識されていた drivers/input/keyboard/atkbd.c を⾒ればよさそう 11
9/22/2018 Kernel/VM 関⻄ 9 回⽬ file:///home/orumin/Nextcloud/slides/kernelvm/kansai-9/slides.html?print-pdf 14/18 ということでドライバにパッチしました! ということでドライバにパッチしました! 状態の記録変
数 diff --git a/drivers/input/keyboard/atkbd.c b/drivers/input/keyboard/atkbd.c index 7e75835e220f..9a5f267a03e9 100644 --- a/drivers/input/keyboard/atkbd.c +++ b/drivers/input/keyboard/atkbd.c @@ -378,6 +378,8 @@ static irqreturn_t atkbd_interrupt(struct serio *serio, unsigne int scroll = 0, hscroll = 0, click = -1; int value; unsigned short keycode; + static bool is_space = false; + static bool is_sands = false; 12
9/22/2018 Kernel/VM 関⻄ 9 回⽬ file:///home/orumin/Nextcloud/slides/kernelvm/kansai-9/slides.html?print-pdf 15/18 ということでドライバにパッチしました! ということでドライバにパッチしました! スペースが押されたらフラグ変
更 フラグ次第でキーコードを変更 @@ -508,7 +520,15 @@ static irqreturn_t atkbd_interrupt(struct serio *serio, unsign atkbd->time = jiffies + msecs_to_jiffies(dev->rep[REP_DELAY } - input_event(dev, EV_KEY, keycode, value); + if (keycode==0x20) is_space = true; + + if (is_space && keycode!=0x20) { + is_sands = true; + keycode -= 32; + } + + if (!is_space) + input_event(dev, EV_KEY, keycode, value); input_sync(dev); 13
9/22/2018 Kernel/VM 関⻄ 9 回⽬ file:///home/orumin/Nextcloud/slides/kernelvm/kansai-9/slides.html?print-pdf 16/18 ということでドライバにパッチしました! ということでドライバにパッチしました! キーを離したときキーコードがスペースなら状態フラグを戻
す @@ -497,6 +499,16 @@ static irqreturn_t atkbd_interrupt(struct serio *serio, unsign break; default: if (atkbd->release) { + if (keycode == 0x20) { + if (is_sands) { + is_space = false; + is_sands = false; + } + if (!is_sands && is_space) { + input_event(dev, EV_KEY, 0x20, value); + is_space = false; + } + } value = 0; 14
9/22/2018 Kernel/VM 関⻄ 9 回⽬ file:///home/orumin/Nextcloud/slides/kernelvm/kansai-9/slides.html?print-pdf 17/18 結果 結果 なぜか
d のキーが効かない,また,⼀度スペースを押すと何も⼊ ⼒できなくなる AT キーボードが爆誕 なんで atkbd_interrupt() を書き換えたの コードを眺めたときの野⽣のカン 本当は⼀時間でこれくらいの遊びのカーネルハックはできる!と ⾔いたかったね…… 15
9/22/2018 Kernel/VM 関⻄ 9 回⽬ file:///home/orumin/Nextcloud/slides/kernelvm/kansai-9/slides.html?print-pdf 18/18 まとめ まとめ 結局修飾キーは薬指でやってます(ブチギレ)
なんだかんだスライド作ったらこの⼊⼒で慣れてきたのでもう薬 指使うってことでいい気がしてきた ⼩指の恢復を祈って安静にしつつコードやドキュメント書きます 状態を持つコードは混乱して⼤変なので⽌めたほうがいいですね 良い⼦は libinput のパッチを書こう 16