2016-09-05 2 views
1

Я используюОбнаружение CapsLock нажатия клавиши

QShortcut* capsKey = new QShortcut (Qt::Key_CapsLock,  this, SLOT(keyCaps())); 

Однако сигнал обнаруживается только через раз, когда CapsLock занимается (светодиодным индикатором Caps Lock включен) - не тогда, когда она выключена (Caps Lock привел точеным off)

Как определить и другой ключ? Благодаря

[Я использую Qt5.4 на 2014 Macbook Pro]

ответ

1

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

На некоторых ранних клавиатурах Mac клавиша блокировки колпачков физически заблокирована при нажатии, поэтому код освобождения не будет генерироваться до тех пор, пока ключ не будет удален во второй раз. Более поздние манипуляторы клавиш для клавиатур, которые не имеют физической блокировки, могут эмулировать такое же поведение (чтобы старые приложения, ожидающие этого, все равно работали). То, что ваша программа получит, будет прессой, а затем выходом, когда ключ блокировки будет удален во второй раз. Если это так, есть только одно нажатие клавиши для обнаружения, а не два.

Некоторые платформы позволяют пользователю отключать блокировку колпачка без нажатия клавиши блокировки колпачка (обычно путем нажатия клавиши переключения). В этих системах может не быть второго удара.

Смежные вопросы