Остановить или отключить захват клавиатуры / мыши / ввода из оболочки

Я пытаюсь отладить полноэкранное приложение, которое использует OIS для ввода. Программа захватывает управление мышью и клавиатурой.

Когда я достигаю точки останова (я использую gdb), я не могу продолжать, шагать или делать что-либо, потому что не могу добраться до консоли. CTRL+ALT+F1 возвращает меня в оболочку, где я могу убить GDB, но это не помогает (так как я все еще хочу шагать / возвращаться и т.д.).

Вместо этого я хотел бы нажать CTRL + ALT + F1, а затем "отключить" захват, который есть у приостановленного полноэкранного приложения, возможно, с использованием некоторого инструмента командной строки. Есть ли такая программа?

Я знаю, что есть хаки, которые я могу добавить в OIS/ мою Программу, но мне нужен внешний метод.

Я попытался добавить "AllowDeactivateGrabs" в xorg.conf (как предлагается здесь), но это больше не работает (?).

Использование: Ubuntu 14.04 Gnome

0 ответов

На StackOverflow можно найти ответ: https://stackoverflow.com/questions/23795010

Для полноэкранного приложения barteks2x может оказаться полезным запустить отдельный x-сервер и подключиться к нему через Ctrl-Alt-Fn.

Он делает 5 предложений. Раздел, который я нашел полезным и сделан из оболочки, скопирован здесь.Это напрямую скопировано из ответа barteks2x:

Вы можете добавить второй указатель мыши, используя xinput:

  • Запустите xinput create-master указатель-имя. Второй указатель мыши должен появиться на экране. Это создает пару клавиатура / указатель, вам не нужно ничего делать со второй добавленной клавиатурой. Он не будет привязан ни к какому физическому устройству.

  • Запустите xinput list, чтобы вывести список всех ваших устройств

    На моем ноутбуке это выглядит так:

,

 ⎡ Virtual core pointer                      id=2    [master pointer  (3)]
 ⎜   ↳ Virtual core XTEST pointer                id=4    [slave  pointer  (2)]

 ⎜   ↳ ETPS/2 Elantech Touchpad                  id=14   [slave  pointer  (2)]
 ⎜   ↳ A4Tech USB Mouse                          id=11   [slave  pointer  (2)]
 ⎣ Virtual core keyboard                     id=3    [master keyboard (2)]
    ↳ Virtual core XTEST keyboard               id=5    [slave  keyboard (3)]
    ↳ Power Button                              id=6    [slave  keyboard (3)]
    ↳ Video Bus                                 id=7    [slave  keyboard (3)]
    ↳ Video Bus                                 id=8    [slave  keyboard (3)]
    ↳ Power Button                              id=9    [slave  keyboard (3)]
    ↳ Lenovo EasyCamera                         id=10   [slave  keyboard (3)]
    ↳ Ideapad extra buttons                     id=12   [slave  keyboard (3)]
    ↳ AT Translated Set 2 keyboard              id=13   [slave  keyboard (3)]
⎡ new-mouse pointer                         id=15   [master pointer  (16)]
⎜   ↳ new-mouse XTEST pointer                   id=17   [slave  pointer  (15)]
⎣ new-mouse keyboard                        id=16   [master keyboard (15)]
    ↳ new-mouse XTEST keyboard                  id=18   [slave  keyboard (16)]
  • Недавно добавленный указатель мыши (главное устройство) имеет id=15. У меня есть тачпад и внешняя мышь, поэтому я могу прикрепить одну из них к новому курсору, а другую оставить прикрепленной к старому курсору. Если у вас нет 2 физических устройств - вы можете оставить старый указатель без физического устройства.

  • Теперь запустите xinput reattach slave-device-id master-device-id. Например, если я хочу прикрепить сенсорную панель к новому указателю: xinput reattach 14 15

    После этого вы сможете управлять вновь добавленным указателем.

  • Если вам больше не нужен второй указатель мыши, используйте xinput remove-master master-device-id, в моем случае это будет xinput remove-master 15

  • иногда вам может потребоваться повторно подключить устройство к предыдущему главному устройству.

    Примечание. Лучше добавить новый указатель перед началом отладки. Я также заметил, что у некоторых оконных менеджеров есть проблемы с несколькими курсорами, которые вызывают всевозможные неожиданные ошибки - например, "печать перестает работать" или работает, но в неправильном окне. Таким образом, оставить несколько включенных курсоров обычно не может быть хорошим вариантом.

Другие вопросы по тегам