web-dev-qa-db-ja.com

Waylandでのキーボードエミュレーション

xdotoolまたはxteまたはその他の代替物をFedora 26で機能させる方法はありますか? (xbindkeysを使用して)キープレスをエミュレートしようとしています。 Alt+Bを押すと、Ctrl+Shift+Bを押すことをエミュレートします。しかし、明らかにxdotoolxteもWaylandでは機能しません(セキュリティ上の理由から[?])

回避策はありますか?それ以外の場合、キーを他のキーに再バインドするにはどうすればよいですか?

8
iLemming

私はこの小さなスクリプトを使用しています。パッケージevemuがインストールされ、パスワード通知なしのevemu-eventにSudo設定が必要です。 EVDEVICEは、入力をエミュレートするために使用されるデバイスです。 /dev/input/event8は私のキーボードです(Sudo evemu-recordを使用して検索してください)

#!/bin/bash
# keycomb.sh

EVDEVICE=/dev/input/event8

for key in $@; do
    Sudo evemu-event $EVDEVICE --type EV_KEY --code KEY_$key --value 1 --sync
done


# reverse order
for (( idx=${#@}; idx>0; idx-- )); do
    Sudo evemu-event $EVDEVICE --type EV_KEY --code KEY_${!idx} --value 0 --sync
done

たとえば、 ./keycomb.sh RIGHTCTL PAGEDOWNでタブを変更します。

注意:このスクリプトはパラメーターの検証を行わないため、注意して使用してください;)

7
blaimi

これはコメントには長すぎますが、実際には答えではありません...私は最近いくつかの python コードを見つけました

Evdevを使用してキーストロークを入力するためにGnome/Waylandを使用するときにxdotoolを置き換える単純なスクリプト。

これが出発点になる可能性があります。私はそれを試していません。 python package evdev が必要であり、ユーザーrootとして実行する必要があります。

evem パッケージもあり、

evemuは、デバイスの説明とイベントを記録および再生し、カーネルの入力システムを介して入力デバイスをエミュレートできるようにします。エミュレートされたデバイスは、実際のデバイスと実際のデバイスを区別できません。

4
meuh