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
orumin
September 22, 2018
Programming
0
920
Kernel/VM Kansai #9
Kernel/VM 関西 9 回目の発表資料です。
orumin
September 22, 2018
Tweet
Share
More Decks by orumin
See All by orumin
ヴィンテージマシンと付き合う - kernel/vm online 5
orumin
0
1.1k
むかしの RISC、むかしの Unix
orumin
7
3.5k
Fundamental of architecture to implementing OS on AArch64
orumin
3
4.8k
Kernel/VM #14 発表資料
orumin
1
560
Unikernels report
orumin
2
450
第13回Kernel/VM勉強会発表資料
orumin
1
1.6k
第12回カーネル/VM探検隊
orumin
0
360
第11回 Kernel/VM探検隊 発表資料
orumin
1
550
KernelVM night! LT
orumin
0
450
Other Decks in Programming
See All in Programming
TSConfig Solution Style & subpath imports to switch types on a per-file basis
maminami373
1
180
バランスを見極めよう!実装の意味を明示するための型定義 TSKaigi 2025 Day2 (5/24)
whatasoda
2
770
❄️ tmux-nixの実装を通して学ぶNixOSモジュール
momeemt
1
120
事業KPIを基に価値の解像度を上げる
nealle
0
200
Building an Application with TDD, DDD and Hexagonal Architecture - Isn't it a bit too much?
mufrid
0
370
がんばりすぎないコーディングルール運用術
tsukakei
1
180
當開發遇上包裝:AI 如何讓產品從想法變成商品
clonn
0
2.5k
Devinで実践する!AIエージェントと協働する開発組織の作り方
masahiro_nishimi
6
2.5k
Efficiency and Rock 'n’ Roll (Really!)
hollycummins
0
590
Cloudflare Realtime と Workers でつくるサーバーレス WebRTC
nekoya3
0
230
Feature Flag 自動お掃除のための TypeScript プログラム変換
azrsh
PRO
4
620
〜可視化からアクセス制御まで〜 BigQuery×Looker Studioで コスト管理とデータソース認証制御する方法
cuebic9bic
1
240
Featured
See All Featured
The Power of CSS Pseudo Elements
geoffreycrofte
76
5.8k
The Cost Of JavaScript in 2023
addyosmani
49
8k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
248
1.3M
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
280
13k
Building a Scalable Design System with Sketch
lauravandoore
462
33k
Speed Design
sergeychernyshev
30
970
GitHub's CSS Performance
jonrohan
1031
460k
Making Projects Easy
brettharned
116
6.2k
The Illustrated Children's Guide to Kubernetes
chrisshort
48
50k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
160
15k
Stop Working from a Prison Cell
hatefulcrawdad
269
20k
Building Better People: How to give real-time feedback that sticks.
wjessup
368
19k
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