Команды xdotool, связанные с сочетаниями клавиш, не работают - PullRequest
0 голосов
/ 04 июля 2018

Мне очень нравится VIM, и я хотел использовать его сочетания клавиш везде. Есть много плагинов IDE, которые могут имитировать это, но я хотел больше, может быть, VIM-сочетания клавиш в Minecraft? : D или VIM сочетания клавиш везде без необходимости загружать любой плагин.

Я заметил, что каждый редактор реализует эти клавиши: Home , End , Ctrl + End , Ctrl + Слева , Ctrl + Возврат и т. Д ...

Я использовал эти ключи как строительные блоки и придумал этот конфиг для i3wm:

mode "VIM MODE NORMAL" {
    bindsym --release h exec "xdotool key --clearmodifiers Left"
    bindsym --release j exec "xdotool key --clearmodifiers Down"
    bindsym --release k exec "xdotool key --clearmodifiers Up"
    bindsym --release l exec "xdotool key --clearmodifiers Right"

    bindsym --release Shift H exec "xdotool key --clearmodifiers Home"
    bindsym --release Shift L exec "xdotool key --clearmodifiers End"
    bindsym --release Shift G exec "xdotool key --clearmodifiers ctrl+End"
    bindsym --release g exec "xdotool key --clearmodifiers ctrl+Home"

    bindsym --release u exec "xdotool key --clearmodifiers --repeat 5 Up"
    bindsym --release d exec "xdotool key --clearmodifiers --repeat 5 Down"

    bindsym --release b exec "xdotool key --clearmodifiers ctrl+Left"
    bindsym --release e exec "xdotool key --clearmodifiers ctrl+Right"

    bindsym --release Shift O exec "xdotool key --clearmodifiers Up End Return"; mode "delault"
    bindsym --release o exec "xdotool key --clearmodifiers End Return"; mode "default"
    bindsym --release Shift A exec "xdotool key --clearmodifiers End"; mode "default"
    bindsym --release Shift I exec "xdotool key --clearmodifiers Home"; mode "default"

    bindsym q mode "default"
    bindsym Escape mode "default"
}

bindsym Menu mode "VIM MODE NORMAL"

Этот фрагмент кода работает, но не так, как я хочу. Если я не использую --release, код вообще не работает, потому что эти клавиши не повторяются, поэтому невозможно удерживать нажатой клавишу J и прокрутить вниз.

Кажется, проблема с фокусировкой окна. По какой-то причине, когда я нажимаю комбинацию клавиш, окно теряет фокус на несколько миллисекунд, а затем снова фокусируется. Это наиболее очевидно в Url Bar Firefox. Я нашел этот вопрос, заданный несколько лет назад , который предлагает добавить одну секунду задержки до выполнения xdotool, я мог бы использовать это, но секунда создает огромную задержку ввода.

Я также пробовал другие оконные менеджеры и демон горячих клавиш sxhkb, но все точно так же ...

1 Ответ

0 голосов
/ 29 января 2019

У меня была такая же проблема, и я понял, что вы должны указать xdotool отправлять события keyup для ключей в ваших сочетаниях клавиш. Так, например:

bindsym h exec "xdotool keyup h; xdotool key"

Сделайте это для каждой привязки, и я думаю, что она будет работать.

...