別のマシンで Ubuntu に切り替えた後、AHK スクリプトで使用するのと同じように、チルダを修飾キーとして使用したいと考えました。
exのさまざまなツールについてかなりの調査を行いました。xdotool、xev、autotools、xbindkeys などを試し、最終的に解決策を見つけました。手順は次のとおりです。
- Autokey、python、python evded モジュール、xte (sudo apt-get install xautomation) をインストールします。
- Autokey と、Autokey が Python スクリプトを起動する方法やホットストリングを作成する方法について少し読んでください。Autokey では、Python スクリプトを呼び出すホットキーを設定できます。したがって、以下の python スクリプトをチルダ キーに割り当てるか、さらに言えば、作成する予定のカスタム ホットキーに割り当てることができます。
- 必要なカスタム機能は次のとおりです (まだ完全には Linux に移植されていないと思いますが、autohotkey でスクリプトを作成し、気に入っています。手をキーボードにくっつけたままにします ;))
- チルダ + 上矢印: マウス ポインターを 100 ポジション上に移動します。
- チルダ + 下矢印: マウス ポインタを 100 ポジション下に移動
- チルダ + 右矢印: マウス ポインターを右に 100 ポジション移動します。
- チルダ + 左矢印: マウス ポインターを左に 100 ポジション移動します。
- チルダ + Enter: マウスの左クリック (Python スクリプトには存在しません)
- チルダ + Alt + Enter: マウスの右クリック
- 修飾キーとしてチルダ (KEY_GRAVE) を使用します。このキーが押されると、Autokey は Python スクリプトを起動します。スクリプトは、チルダ キーが離されるまでループを実行します。ループ内で、スクリプトはキーボード入力を検出し続けます。上矢印キー (KEY_UP) を押すと、スクリプトは「xte」などを利用して相対位置 (0、-100) でマウスを移動するコマンドを送信します。
from evdev import InputDevice, categorize, ecodes
from select import select
dev = InputDevice('/dev/input/event4')
releasekey = False
while releasekey==False:
r,w,x = select([dev], [], [])
for event in dev.read():
if event.type == ecodes.EV_KEY:
#system.exec_command("xte 'mousermove 0 3'", False)
#break
if event.code == ecodes.KEY_UP:
if event.value == 1:
system.exec_command("xte 'mousermove 0 -100'", False)
if event.code == ecodes.KEY_DOWN:
if event.value == 1:
system.exec_command("xte 'mousermove 0 100'", False)
if event.code == ecodes.KEY_RIGHT:
if event.value == 1:
system.exec_command("xte 'mousermove 100 0'", False)
if event.code == ecodes.KEY_LEFT:
if event.value == 1:
system.exec_command("xte 'mousermove -100 0'", False)
if event.code == ecodes.KEY_GRAVE:
if event.value == 0:
releasekey = True
break
- dev = InputDevice(' /dev/input/event4 ') 行を調整して、キーボードの正しい名前を割り当てる必要があります。私の場合、event4 は私のキーボードです。あなたのものは違うかもしれません。python-evdev の便利なチュートリアル「Reading Events」を確認できます。このコードは、/dev/input の下にリストされているキーボードの名前を実際に出力します。実際、私のスクリプトはそのチュートリアル スクリプトを拡張したものです。
- 唯一の問題は、Python スクリプトを root ユーザーとして開始する必要があることです。そうしないと、キーボード入力デバイスにアクセスできません。これを克服するには、デバイスのパーミッションを変更して読み書きできるようにする udev ルール ファイルを作成します。ルール ファイルを作成し、この行
KERNEL=='event4', MODE="0660"を追加して、ルールをロードします。最後に、デバイスの読み取り/書き込み権限を持つ GROUP に自分自身を追加する必要があります。ファイル許可に関する情報は、/dev/input フォルダーで ls -la を使用して見つけることができます。
うまくいくことを願っています。最初はうまくいかないので、コーヒーを飲んでうまくいくまで戦いましょう ;)