
У меня возникла очень специфическая проблема, однако любая помощь поможет мне понять связь X с клавиатурой.
Я хотел бы иметь возможность запускать программу ElectricSheep поверх музыки, воспроизводимой из XBMC. Я уже настроил скрипт запуска и могу запустить ElectricSheep без проблем.
Проблема возникает, когда я пытаюсь закрыть его. Если я запускаю ElectricSheep без запущенного XBMC, нажатие escape закрывает его. Если XBMC запущен (или даже если я включаю строку в скрипт для завершения xbmc перед запуском), он захватывает весь ввод с клавиатуры, делая мой единственный путь из ElectricSheep либо завершить его из сеанса ssh, либо завершить сам X.
Если я запускаю xev во время работы XBMC, он не получает никаких входных данных.
Есть ли способ запустить приложение и явно назначить ему клавиатуру X? Спасибо за любую помощь!
решение1
Зависит от того, какое приложение имеет «фокус». Я предпочитаю «фокус следует за мышью», так что любое окно, над которым находится моя мышь, будет регистрироваться при нажатии на клавиатуре. Другие режимы — «щелчок для фокусировки» и некоторые вариации «фокуса под мышью». Microsoft Windows — это «щелчок для фокусировки» (например), хотя если вы поиграетесь с некоторыми инструментами tweakui, то при желании сможете получить «фокус следует за мышью».
Я не уверен, в каком режиме изначально находится ваш рабочий стол X-windows, Я ДУМАЮ, что по умолчанию это обычно «щелчок для фокусировки», вам следует проверить свой режим, мои настройки фокуса мыши находятся в разделе «поведение окна» в системных настройках, KDE 4.7.4)
Признаюсь, у меня не так много опыта с Electric Sheep (заставка для сна, верно?) и XMBC (медиацентр, IIRC). Оба они, похоже, хотят быть полноэкранными приложениями, что может представлять проблемы из-за потери фокуса. Почти похоже на проблему с ES, поскольку если он находится на переднем плане (перейдя в режим заставки...), он ДОЛЖЕН захватывать любые нажатия клавиш и использовать их как сигнал отмены для выхода, возвращая ваш экран к чему-либо еще работающему.
Вы можете попробовать сочетание клавиш ALT-TAB для переключения между различными запущенными приложениями, что должно переключать фокус между ними. Это зависит от того, как используются XMBC и ES, в оконном или полноэкранном режиме.
Вы МОЖЕТЕ управлять фокусом через командную строку, используя несколько программ, конечно, я потерялся... просматривая свои каталоги /bin и свои заметки, чтобы найти их. Я написал свои собственные программы управления несколько месяцев назад для проекта, пытаясь понять, что я могу сделать программно для управления окнами и фокусом...
ах, вот один:
wmctrl, на странице руководства говорится, что можно поднять окно, используя опцию '-R'...
Есть еще один, который я нашел более полезным, хотя я совершенно не знаю, как его назвать сегодня, может быть, кто-то поймет, на что я намекаю, и опубликует его. Я продолжу искать, очевидно, моя блондинка сегодня вовсю пинается.
решение2
В качестве хака, возможно, можно запустить «жадное» приложение вКсефирилиXvncили что-то в этом роде и как бы отделить его от вашего фактического сервера X. Используйте его удаленно.
Более правильным ответом может быть перенастройка или исправление кода, чтобы «жадное» приложение не было таким.
Или, если приложение действительно должно полностью захватить экран, найдите способ запустить ES как какой-то плагин.