Kernel/VM 関西 9 回目の発表資料です。
9/22/2018 Kernel/VM関⻄ 9回⽬file:///home/orumin/Nextcloud/slides/kernelvm/kansai-9/slides.html?print-pdf 1/18Kernel/VM関⻄ 9回⽬Kernel/VM関⻄ 9回⽬orumin1
View Slide
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⼩指を使わないタイピング⼩指を使わないタイピング他の指(薬指とか)を使う無変換などのスペースまわりのキーを他のキーへアサインするSandS7
9/22/2018 Kernel/VM関⻄ 9回⽬file:///home/orumin/Nextcloud/slides/kernelvm/kansai-9/slides.html?print-pdf 10/18SandS (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.cindex 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, unsigneint 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, unsignatkbd->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, unsignbreak;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