Параметр окна --не может работать с кликом xdotool

kdumpвыгружает память ядра в случае сбоя ядра. Так

  1. Если ваше ядро ​​никогда не дает сбоев, безопасно отключить kdump

  2. Если вас не волнует сбой ядра, безопасно отключить kdump

  3. Если у вас нет контракта на поддержку и вы не обладаете необходимыми знаниями для самостоятельной отладки сбоя ядра и не желаете платить кому-то разово за диагностику сбоя ядра, безопасно отключить kdump.

В противном случае оставьте его включенным.

Для большинства людей верно (1 ). В остальном либо (2 ), либо (3 ), вероятно, верно. Если вы делаете дорогостоящее устройство со встроенным Linux, kdump может быть чрезвычайно ценным.

0
16.03.2021, 17:27
1 ответ

Действительно ли проблема связана с xdotool?

В введенной вами команде нет ничего неправильного:
Опция --windowсуществует для xdotool click.
Возможно, проблема частично связана с Minecraft. Вы пробовали с другими программами?

Вот что я сделал. Мне помогло:

  • Открыть 2 клеммы. Назовем их клемма _1 и клемма _2 .
    (Я делал это с St и Guake, но вы можете попробовать и с другими эмуляторами терминала ).

  • На клемме _1 запустите xev | grep button.
    Он откроет пустое окно и проверит, распознаются ли в нем события.

  • На клемме _2 , запустите sleep 5 && xdotool getwindowfocus,
    и быстро (менее чем за 5 секунд )нажмите на окно, созданное xev.
    Вы получите номер, назовем его WINDOW _ID .

  • Снова сфокусируйтесь на клемме _2 и убедитесь, что курсор мыши находится за пределами окна xev.
    После этого выполните команду xdotool click --window WINDOW_ID 1.

  • См. вывод на клемме _1 . Вы должны получить что-то вроде:

      state 0x0, button 1, same_screen YES
      state 0x100, button 1, same_screen YES
    

И это означает, что окно xevполучило событие щелчка, отправленное с помощью xdotool, даже если оно не было сфокусировано.

Я также заметил, что если я посылаю щелчок со St (или, возможно, с любого терминала )на расфокусированный Guake, когда курсор мыши находится вне окна Guake, ничего не происходит, кроме того, что Guake теперь сфокусирован.
Но это не работает в другом направлении (от Гуаке до Сент, Гуаке оставайся сосредоточенным ).

Что ты еще можешь сделать

Например, клавиатурные события не зависят от положения мыши. но некоторые события мыши, в том числе клики, делают  :что вы должны щелкнуть "где-то".

В мануале Xdotool для xdotool click --windowнаписано
Uses the current mouse position when generating the event.,
поэтому, возможно, если ваш курсор мыши находится за пределами окна (, скажем, это «Minecraft» ), в котором вы хотите щелкнуть, окно Minecraft проигнорирует это событие.

Самое простое решение, которое я вижу, это:

  • сохранить текущую позицию мыши:
    prev_pos=$(xdotool getmouselocation | awk -F "[: ]" '{print $2 " " $4}'
  • перейдите в окно, в котором вы хотите нажать (, например, перейдите в левый верхний угол ) :
    xdotool mousemove $(xdotool getwindowgeometry $(xdotool search --name --onlyvisible Minecraft | tail -1) | awk -F "[, ]" 'NR==2{print $4 " " $5}'))
  • щелчок (будет работать, потому что мышь находится в нужном месте ) :
    xdotool click 1
  • вернуться к предыдущей позиции мыши:
    xdotool mousemove $(echo $prev_pos)

Между прочим, если вы хотите многократно повторять нажатие, вам следует либо:

  • остаться в окне "Minecraft".
  • переключение окна каждую секунду, тогда вам нужно использовать цикл for вместо опции
    --repeat 100000000 --delay 1000.
0
18.03.2021, 22:25

Теги

Похожие вопросы