autokeyを使ってトグルキーを作成するには?

autokeyを使ってトグルキーを作成するには?

eAutokeyを使用して、「xyz」というプログラムでキーの押下をオンまたはオフにしたいと思います。だから私が押すと、eプログラムは私が握っていると思いますe。私はそれを再び押し、私がe置いたと思った。どうすればいいですか?

それともこれを行うことができる他のプログラムがありますか?

ボーナスの質問:Ubuntuプログラム(例:fvwm2、xorg、xmodmap、xkb、xrdb)を使用してこれをどのように実行しますか?

ベストアンサー1

私は自動キーイングに慣れていませんが、可能に見えます。使用Keyboard.press_key主なイベント転送とKeyboard.release_keyキーリリースイベントを送信します。どのようなものを送信するかを覚えておくには、次のようにします。Store.set_valueそしてStore.get_value


または、次のものを使用できます。xdoツールウィンドウに入力イベントを挿入し、xpropウィンドウにデータを追加します。次のシェルコマンド(テストされていない)を実行して、アクティブウィンドウに代替のプレス/ハンドリリースイベントを送信します。

#!/bin/sh
window_id=$(xdotool getactivewindow)
case $(xprop -id "$window_id" -f key_e_is_down 32c -notype key_e_is_down) in
  *1) key_command=keydown; new_state=0;;
  *) key_command=keyup; new_state=1;;
esac
xdotool "$key_command" "e"
xprop -id "$window_id" -f key_e_is_down 32c -set key_e_is_down "$new_state"

この操作をキーにバインドし、そのキーを1つのウィンドウでのみ有効にしたい場合は、自動キーが役に立つかどうかはわかりません。最も簡単な方法はウィンドウマネージャを使用することですが、ほとんどのウィンドウマネージャはこれを行いません。私は使うトップサメ私のウィンドウマネージャは、外部ツールなしでこれを行うことができます。

(define (toggle-e w)
  (interactive "%W")
  (let ((down (window-get w 'key-e-is-down)))
    (synthesize-event (if down "Release+e" "e") w)
    (window-put w 'key-e-is-down (not down))))
(define xyz-window-map (make-keymap))
(bind-keys xyz-window-map "e" toggle-e)
(add-window-matcher 'WM_CLASS "^Xyz/" `((keymap . ,xyz-window-map)))

おすすめ記事