Project

rkremap

0.0
The project is in a healthy, maintained state
key remapper
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
 Dependencies
 Project Readme

Rkremap

Linux でキー割り当てを変更するプログラムを作るためのライブラリ。

Installation

% gem install rkremap

Usage

ライブラリなのでプログラムを自分で作る必要がある。具体的な使い方は example/*.rb を見ればよい。

/dev/input/event*/dev/uinput に対する権限が必要。sudo 等で root 権限で動かすのが良いかも。

ユーザーを input グループに所属させると /dev/input/event* を読み取る権限をつけられるけど、そのユーザーはすべての入力デバイスの入力を読み取ることができるようになってしまうので、セキュリティ的にはビミョーなところ。

input グループでも /dev/uinput に権限はないけど、/etc/udev/rules.d/input.rules ファイルを

KERNEL=="uinput", GROUP="input"

という内容で作れば /dev/uinput のグループを input にできるっぽい。

Rkremap.new

引数に /dev/input/event* を指定する。キーボードデバイス以外を指定してもたぶん無意味。 キーボードのデバイスファイル名を調べるには

cat /proc/bus/input/devices

とかすればわかるかもしれない。または

sudo evtest /dev/input/eventX

とかして何かキーを押して出力があればそれ。

ThinkPad 本体のキーボードは /dev/input/event3 だった。

Rkremap#grab

true に設定するとキーイベントを奪う。キーイベントを見るだけでいいなら false を設定する。

Rkremap#x11

true に設定すると X のアプリ名等を取得できる。X 環境下でないなら false を設定する。

Rkremap#start

なにかキーを押されたらブロックを実行する。修飾キー単体ではブロックは実行されない。 ブロックの引数はキーコード(Integer)と修飾キー(Hash)と Rkremap::AppRkremap::App#class_name でアプリのクラス名、Rkremap::App#title でアプリのタイトルを取得できる。

Rkremap#match

キーイベントが引数に適合するとブロックを実行する。ブロック引数は Event オブジェクト。 Event#skip するとこのイベントはスキップされる。

Rkremap#key

キーを押したことにする。引数はキーコード(Integer)と修飾キー(Hash)。

Rkremap#event

キーイベントを発生させる。code 引数はキーコード(Integer)。type 引数はイベントタイプ(Symbol)で :press, :release

Rkremap#synchronize

startmatch のブロックは同時に実行されないようにするため Mutex を使用している。このメソッドで同じ Mutex を用いた排他制御を行う。

Rkremap::CODE_KEY

コードからキー名のシンボルに変換するための Hash。

参考

License

MIT license