Исключение некоторых клавиш из XGrabKeyboard

Рассмотрим приложение, в котором желательно захватить клавиатуру при фокусировке, чтобы захватить все команды оконного менеджера (Alt + F4 и еще много чего) для обработки. Теперь у этого есть обратная сторона: у пользователя нет возможности переключиться на другое приложение или виртуальный рабочий стол с помощью клавиатуры, когда она берется за клавиатуру. Я хотел бы иметь определяемый пользователем белый список комбинаций клавиш (скажем, комбинаций клавиш для переключения виртуальных рабочих столов), которые исключены из захвата.

Я могу придумать два возможных подхода. Когда прибывает ключевое событие из белого списка, либо

  1. Каким-то образом приказывают X продолжить его обработку как обычно. Это звучит как более естественный способ сделать это, но я не могу найти способ сделать это или
  2. Отключить клавиатуру и повторно отправить событие вручную в диспетчер окон для обработки, однако я не Не знаю, куда его отправить (корневое окно?), и сработает ли это вообще.

Может ли кто-нибудь заполнить пробелы? Есть ли другие предложения?

Если нет возможности исключить клавиши из захвата, думаю, мне придется согласиться на наличие «клавиши выхода», которая отключает клавиатуру при нажатии. Однако пользователю придется нажать и это, и затем команду оконного менеджера, что не так хорошо.

5
задан Matti Virkkunen 25 September 2010 в 21:29
поделиться