Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Kernel/VM Kansai #9

orumin
September 22, 2018

Kernel/VM Kansai #9

Kernel/VM 関西 9 回目の発表資料です。

orumin

September 22, 2018
Tweet

More Decks by orumin

Other Decks in Programming

Transcript

  1. 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

    View Slide

  2. 9/22/2018 Kernel/VM
    関⻄ 9
    回⽬
    file:///home/orumin/Nextcloud/slides/kernelvm/kansai-9/slides.html?print-pdf 2/18
    ごきげんようみなさん
    ごきげんようみなさん
    おはよう
    こんにちは
    こんばんわ
    みなさんお元気です
    か?
    orumin
    といいます
    2

    View Slide

  3. 9/22/2018 Kernel/VM
    関⻄ 9
    回⽬
    file:///home/orumin/Nextcloud/slides/kernelvm/kansai-9/slides.html?print-pdf 3/18
    突然ですが
    突然ですが
    私は元気ではないです
    突如襲いくる⼩指の痛
    み!
    若⼲調⼦の悪い喉!
    とりあえずかかった病
    院!
    3

    View Slide

  4. 9/22/2018 Kernel/VM
    関⻄ 9
    回⽬
    file:///home/orumin/Nextcloud/slides/kernelvm/kansai-9/slides.html?print-pdf 4/18
    レントゲンです
    レントゲンです
    4 . 1

    View Slide

  5. 9/22/2018 Kernel/VM
    関⻄ 9
    回⽬
    file:///home/orumin/Nextcloud/slides/kernelvm/kansai-9/slides.html?print-pdf 5/18
    指が痛い場合は
    指が痛い場合は
    腱鞘炎
    痛⾵
    膠原病(リウマチ)
    ヘバーデン結節(ブシャール結
    節)
    4 . 2

    View Slide

  6. 9/22/2018 Kernel/VM
    関⻄ 9
    回⽬
    file:///home/orumin/Nextcloud/slides/kernelvm/kansai-9/slides.html?print-pdf 6/18
    関節炎でした
    関節炎でした
    腱鞘炎とかかと思ったら⽯灰沈着性関節炎だそうです
    どうすんだこれ……
    普通は中年くらいの⼥性が肩とかでよく起こすそうで

    :thinking_face:
    4 . 3

    View Slide

  7. 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

    View Slide

  8. 9/22/2018 Kernel/VM
    関⻄ 9
    回⽬
    file:///home/orumin/Nextcloud/slides/kernelvm/kansai-9/slides.html?print-pdf 8/18
    今回の話題
    今回の話題
    ⼩指がもしもどうにかなったときにするべきカーネルハック
    6

    View Slide

  9. 9/22/2018 Kernel/VM
    関⻄ 9
    回⽬
    file:///home/orumin/Nextcloud/slides/kernelvm/kansai-9/slides.html?print-pdf 9/18
    ⼩指を使わないタイピング
    ⼩指を使わないタイピング
    他の指(薬指とか)を使う
    無変換などのスペースまわりのキーを他のキーへアサインす

    SandS
    7

    View Slide

  10. 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

    View Slide

  11. 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

    View Slide

  12. 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

    View Slide

  13. 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

    View Slide

  14. 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

    View Slide

  15. 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

    View Slide

  16. 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

    View Slide

  17. 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

    View Slide

  18. 9/22/2018 Kernel/VM
    関⻄ 9
    回⽬
    file:///home/orumin/Nextcloud/slides/kernelvm/kansai-9/slides.html?print-pdf 18/18
    まとめ
    まとめ
    結局修飾キーは薬指でやってます(ブチギレ)
    なんだかんだスライド作ったらこの⼊⼒で慣れてきたのでもう薬
    指使うってことでいい気がしてきた
    ⼩指の恢復を祈って安静にしつつコードやドキュメント書きます
    状態を持つコードは混乱して⼤変なので⽌めたほうがいいですね
    良い⼦は libinput
    のパッチを書こう
    16

    View Slide