Блокировка ввода с клавиатуры в приложении Linux (с использованием Qt или Mono) - PullRequest
2 голосов
/ 10 марта 2010

Я работаю над онлайн-клиентом для викторин, где мы используем специализированный дистрибутив linux, который содержит только клиентское программное обеспечение для викторин, а также текстовые редакторы и другое служебное программное обеспечение. Когда пользователь запустил тест, я хочу запретить ему / ей свернуть окно / закрыть его / переключиться на рабочий стол или другие окна. Тесты могут быть выполнены с помощью только мыши, поэтому мне нужно, чтобы клавиатура была отключена на время теста. Как я мог сделать это, используя Qt или Mono? Я готов использовать любые библиотеки / драйверы низкого уровня, если потребуется.

Ответы [ 3 ]

3 голосов
/ 10 марта 2010

Вы можете использовать QWidget :: grabKeyboard и QWidget :: grabMouse, и, пожалуйста, отметьте предупреждение в комментариях:

Предупреждение: ошибки при захвате мыши приложения очень часто блокируют Терминал. Используйте эту функцию с крайняя осторожность, и рассмотрите возможность использования опция командной строки -nograb отладки.

1 голос
/ 11 марта 2010

Вы смотрели на XGrabKeyboard ? Это должно сделать глобальный захват клавиатуры.

1 голос
/ 10 марта 2010

Вы пытались использовать EventFilter? У вас есть возможность заблокировать все события, связанные, например, с нажатием клавиши ...

Больше информации здесь: http://qt.nokia.com/doc/4.6/eventsandfilters.html

Надеюсь, это поможет!

Что-то вроде:

bool MyWidget::event(QEvent *event)
{
    if (event->type() == QEvent::KeyPress) 
    {
        return true;
    }
    return QWidget::event(event);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...