Libinput

Fri, Feb 22, 2019

Fusumaのインストールと設定

Linux上でタッチパッド上のジェスチャーをカスタマイズ出来るFusumaというライブラリをRubyGems公開している。 日本語の記事もあまりないので、使い方やカスタマイズの記事を書いてみることにした。 RubyGemsにライブラリを公開した時の記事⇓ Fusumaのインストール Debian系を利用しているOS(パッケージ管理にaptを利用している)なら下記のapt install等のコマンドはそのまま利用できるはず。 自分はUbuntu16.04ベースのelementary OS lokiをインストールしたDell XPS 13(9360)で利用している。 Archの人はArchWikiに色々書いてもらっているようなのでそちらを参照。 https://wiki.archlinux.org/index.php/Libinput#fusuma Ubuntu 15.04以降ではFusumaに依存するlibinputを使用することができるが、Ubuntu 14以下の古いバージョンではsynapticsドライバを使用するxswipexSwipeを試してみて欲しい。 インストールされているRubyのバージョンを確認 まず最初にRubyをインストールしてあるか確認。 システムにインストールされているRubyでも問題ない。 (もちろんrbenvやrvm使ってても問題ない) $ ruby -v ruby 2.4.1p111 (2017-03-22 revision 58053) [x86_64-linux] # ↑Rubyの2.4がインストールされていることを確認 依存パッケージのインストール タッチパッドの入力を読ませる必要があるためlibinput-toolsをインストールする。 (Fusuma内部でlibinput debug-eventsによるデバッグログの出力を利用している) $ sudo apt install libinput-tools また、Alt+Left, Alt+Rightなどショートカットを発行できるようにするためxdotoolをインストールする。 $ sudo apt install xdotool FusumaをRubyGemsからインストール $ sudo gem i fusuma iはinstallの省略。システムのRubyでインストールする場合はsudoが必要。 (rbenvやrvmでインストールしているRubyを使う場合、$ gem i fusuma でインストール出来る) Fusumaの設定ファイルを作成する ~/.config/fusuma/config.ymlに設定ファイルを作成する。 $ mkdir -p ~/.
Sun, May 14, 2017

Linuxでマルチタッチのジェスチャにショートカットを割り当てるFusumaというGemを作った

linuxのマルチタッチのジェスチャを認識して任意のスクリプトを実行するプログラムを作った。 https://github.com/iberianpig/fusuma Fusumaという名前でRubyGemsに公開した。 Linux上のタッチパッドでのジェスチャをキーイベントにマッピングし、スワイプを検知したらワークスペースを移動させるなどの処理を可能にする。 ちなみにsyncapticsドライバ向けのPerlでの先行実装のxSwipe を過去に作っていて、こちらを元にRubyでlibinputドライバ向けに書き直している。 ワークスペースの切り替えする横スワイプが襖を開ける動作と似てるところが由来。 TouchEggやGinsなどUbuntuのWikiに紹介されるようなライブラリは利用するのに一癖ある。そして設定で上手くいかないケースが多い。 Perl製のxSwipe/今回公開したRuby製のFusumaはデバッグログを利用してタッチパッドの出力を読み取り、任意のスクリプトを発行出来る。そのため、タッチパッドのデバッグログ出力さえ出来ればジェスチャ解釈はできるためマルチタッチジェスチャの敷居がかなり低くなった。 Fusumaの使い方 インストールについては、Fusumaのインストール方法(https://github.com/iberianpig/fusuma#installation) を読んで欲しい。 Input Groupにログインユーザ追加後、ログイン・ログアウトしないとFusuma実行ユーザーからタッチパッドが読み取れず、Fusumaが失敗してしまうので注意。 fusumaコマンドで起動。 ~/.config/fusuma/config.ymlに設定ファイルを配置するとFusuma起動時に読み込んでくれる。 ジェスチャとそれに対応するスクリプトを自由にカスタマイズできる。 下記は一例。 swipe: 3: left: command: 'xdotool key alt+Right' right: command: 'xdotool key alt+Left' up: command: 'xdotool key alt+t' down: command: 'xdotool key alt+w' 4: left: command: 'xdotool key super' right: command: 'xdotool key super+a' up: command: 'sh ~/tool/linux/script/desktop_switcher.sh 1' down: command: 'sh ~/tool/linux/script/desktop_switcher.sh -1' pinch: 2: in: command: 'xdotool key ctrl+equal' out: command: 'xdotool key ctrl+minus' 4: in: command: 'xdotool key super+a' out: command: 'xdotool key super+s' threshold: swipe: 0.