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
Kernel/VM Kansai #9
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
orumin
September 22, 2018
Programming
0
980
Kernel/VM Kansai #9
Kernel/VM 関西 9 回目の発表資料です。
orumin
September 22, 2018
Tweet
Share
More Decks by orumin
See All by orumin
あのころの iPod を どうにか再生させたい
orumin
2
2.8k
ヴィンテージマシンと付き合う - kernel/vm online 5
orumin
0
1.2k
むかしの RISC、むかしの Unix
orumin
7
3.7k
Fundamental of architecture to implementing OS on AArch64
orumin
3
5.2k
Kernel/VM #14 発表資料
orumin
1
620
Unikernels report
orumin
2
510
第13回Kernel/VM勉強会発表資料
orumin
1
1.7k
第12回カーネル/VM探検隊
orumin
0
390
第11回 Kernel/VM探検隊 発表資料
orumin
1
590
Other Decks in Programming
See All in Programming
ロボットのための工場に灯りは要らない
watany
11
3k
ふつうのRubyist、ちいさなデバイス、大きな一年 / Ordinary Rubyists, Tiny Devices, Big Year
chobishiba
1
480
車輪の再発明をしよう!PHP で実装して学ぶ、Web サーバーの仕組みと HTTP の正体
h1r0
0
130
S3ストレージクラスの「見える」「ある」「使える」は全部違う ─ 体験から見た、仕様の深淵を覗く
ya_ma23
0
760
モダンOBSプラグイン開発
umireon
0
160
AI Assistants for Your Angular Solutions
manfredsteyer
PRO
0
150
maplibre-gl-layers - 地図に移動体たくさん表示したい
kekyo
PRO
0
290
AHC061解説
shun_pi
0
400
どんと来い、データベース信頼性エンジニアリング / Introduction to DBRE
nnaka2992
1
310
Angular-Apps smarter machen mit Gen AI: Lokal und offlinefähig - Hands-on Workshop!
christianliebel
PRO
0
120
AWS×クラウドネイティブソフトウェア設計 / AWS x Cloud-Native Software Design
nrslib
16
3.3k
LangChain4jとは一味違うLangChain4j-CDI
kazumura
1
200
Featured
See All Featured
The Director’s Chair: Orchestrating AI for Truly Effective Learning
tmiket
1
130
Designing for Performance
lara
611
70k
GraphQLとの向き合い方2022年版
quramy
50
14k
Why You Should Never Use an ORM
jnunemaker
PRO
61
9.8k
How to train your dragon (web standard)
notwaldorf
97
6.6k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
47
8k
How To Speak Unicorn (iThemes Webinar)
marktimemedia
1
410
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
34
2.7k
Paper Plane
katiecoart
PRO
0
48k
The Illustrated Guide to Node.js - THAT Conference 2024
reverentgeek
1
310
Context Engineering - Making Every Token Count
addyosmani
9
760
エンジニアに許された特別な時間の終わり
watany
106
240k
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