xdotool - эмулятор действий мыши и клавиатуры
Утилита предоставляет широкие возможности по управлению клавиатурой и
мышью. Позволяет эмулировать нажатие клавиш и двигать курсор мыши. Некоторые примеры пригодятся при написании bash
скриптов или для динамической подвязки горячих клавиш. Также вы можете заранее определить текст, который нужно ввести в определенное поле при определенных условиях.
* Xdotool умеет переключать клавиши с индикаторами *lock однако сами световые индикаторы не изменяют свое состояние.
Есть другие утилиты для эмуляции нажатия клавиш xvkbd, xte (менее функциональная) и для работы с буфером обмена - xsel, xclip.
Примечание
Определить keycode и keysym клавиши, а также дополнительную информацию о клавише, можно утилитами xev или xkeycaps.
Также можно получить комбинацию клавиш утилитой xbindkeys:
xbindkeys -k
Примеры использования
Эмулировать нажатие клавиш по названию:
xdotool key Shift+Left
xdotool key Control+c
xdotool key Alt+Tab
xdotool key Shift+Caps_Lock
xdotool key XF86AudioRaiseVolume
xdotool key XF86AudioLowerVolume
xdotool keyup Mod2+Mod4+m ## Отпустить клавиши
xdotool key Ctrl+Alt+Shift+m
Триггер нажатия клавиши по keycode
или keysym
:
xdotool key 0xfe08 # keysym клавиши Meta Right
xdotool key 134 # keycode клавиши Meta Right
xdotool key 105+62 # keycode клавиш Control_R и Shift_R
Эмулируем отпускание клавиши KP_End и нажатие комбинации Shift+Home:
xdotool keyup KP_End key Shift+Home
Эмулируем вставку из буфера (можно поиграться со значением delay):
xdotool key --clearmodifiers --delay 20 ctrl+shift+v
Определить позицию курсора:
xdotool getmouselocation
xdotool getmouselocation -shell
Данные о позиции курсора
X=224
Y=45
SCREEN=0
WINDOW=56623111
Выделить мышью область текста (примеры перемещения мыши):
xdotool click --repeat 3 1 ## Triple Click (Select line)
xdotool click 2 ## Middle click
xdotool click 3 ## Right Click (Menu)
xdotool click 4 ## Scroll wheel up
xdotool click 5 ## Scroll wheel down
xdotool mousedown 1
xdotool mousemove 100 100 click 3
xdotool mousedown 1 sleep 0.1 mouseup 1
Эмуляция набора текста:
xdotool type --delay 0 --clearmodifiers "$(xsel -b -o)" ## Вывести/напечатать текст из clipboard
Примечание
Есть более простой способ эмуляции ввода текста (требует рута):
echo "Y" > /dev/keyboard
#keys #keyboard #keycode #xdotool #emulation #hotkeys #bind keys