Como você faz uma chave de alternância usando o Autokey?

2

Eu quero usar o Autokey para ativar e desativar a tecla e em um programa chamado "xyz". Então, se eu pressionar e , o programa acha que estou mantendo e . Eu pressiono e novamente, acho que eu o liberei. Como você faz isso, por favor?

Ou há algum outro programa que possa fazer isso?

pergunta de bônus: como você faz isso com qualquer programa do Ubuntu, como fvwm2, xorg, xmodmap, xkb, xrdb, de alguma forma?

    
por user111973 26.04.2015 / 03:27

1 resposta

0

Eu não estou familiarizado com o autokey, mas isso parece factível. Use Keyboard.press_key para enviar um evento de imprensa importante e Keyboard.release_key para enviar um evento de lançamento de chave . Para lembrar qual deles enviar, use Store.set_value e Store.get_value .

Alternativamente, você pode usar xdotool para injetar eventos de entrada em uma janela e xprop para anexar dados a uma janela. Execute o seguinte comando shell (não testado) para enviar eventos alternativos de imprensa / release para a janela ativa.

#!/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"

Se você quiser vincular essa ação a uma chave, mas ativar a chave apenas em uma janela, não tenho certeza se o Autokey pode ajudá-lo. A maneira mais fácil de fazer isso é a partir do gerenciador de janelas, mas a maioria dos gerenciadores de janelas não pode fazê-lo. Eu uso o sawfish como meu gerenciador de janelas, que pode fazer isso sem qualquer ferramenta externa.

(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)))
    
por 26.04.2015 / 22:41