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
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
2.9k
ヴィンテージマシンと付き合う - kernel/vm online 5
orumin
0
1.2k
むかしの RISC、むかしの Unix
orumin
7
3.8k
Fundamental of architecture to implementing OS on AArch64
orumin
3
5.5k
Kernel/VM #14 発表資料
orumin
1
640
Unikernels report
orumin
2
530
第13回Kernel/VM勉強会発表資料
orumin
1
1.7k
第12回カーネル/VM探検隊
orumin
0
400
第11回 Kernel/VM探検隊 発表資料
orumin
1
610
Other Decks in Programming
See All in Programming
ローカルLLMでどこまでコードが書けるか -拡張版 / How much code can be written on a local LLM Extended
kishida
11
4.3k
ふつうのFeature Flag実践入門
irof
8
4.1k
[2026年度第1回ORセミナー] 計画最適化ベンチャーと競技プログラミング人材
terryu16
0
270
AIだと陥りがちなJakarta EE最新技術への移行時の落とし穴と解決策
tnagao7
0
110
技術的負債解消で開発者の未来を開く- AIの力でコード刷新
kmd2kmd
0
110
AIを活用したE2Eテスト実装効率化のあゆみ / ebisu-mobile-14-kotetu
kotetuco
0
110
CSC307 Lecture 17
javiergs
PRO
0
320
AIで効率化できた業務・日常
ochtum
0
140
Snowflake Summitでの新機能 CoCo / CoWork / snowflake-summit-2026-overall-what-new-coco
tatsuhiro
1
160
セキュリティの専門家じゃなくてもできる。「セキュリティ意識」をアップデートして サプライチェーン攻撃への耐性を高めよう。
tk3fftk
5
890
New "Type" system on PicoRuby
pocke
1
980
依存関係から依存物へ―Dependencyという言葉の歴史をひも解く
j_lee
0
120
Featured
See All Featured
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
55
3.4k
Leadership Guide Workshop - DevTernity 2021
reverentgeek
1
310
How to Get Subject Matter Experts Bought In and Actively Contributing to SEO & PR Initiatives.
livdayseo
0
140
Product Roadmaps are Hard
iamctodd
PRO
55
12k
Believing is Seeing
oripsolob
1
150
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
55k
Breaking role norms: Why Content Design is so much more than writing copy - Taylor Woolridge
uxyall
0
320
Ethics towards AI in product and experience design
skipperchong
2
310
How to Think Like a Performance Engineer
csswizardry
28
2.7k
Hiding What from Whom? A Critical Review of the History of Programming languages for Music
tomoyanonymous
2
860
Fireside Chat
paigeccino
42
4k
The Cost Of JavaScript in 2023
addyosmani
55
10k
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