Остановить или отключить захват клавиатуры / мыши / ввода из оболочки
Я пытаюсь отладить полноэкранное приложение, которое использует 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
иногда вам может потребоваться повторно подключить устройство к предыдущему главному устройству.
Примечание. Лучше добавить новый указатель перед началом отладки. Я также заметил, что у некоторых оконных менеджеров есть проблемы с несколькими курсорами, которые вызывают всевозможные неожиданные ошибки - например, "печать перестает работать" или работает, но в неправильном окне. Таким образом, оставить несколько включенных курсоров обычно не может быть хорошим вариантом.