Debian Linux 9 Stable, Qt 5.11.2, OpenBox+LXDE, клавиатура Genius KB-110 (классика, 101 клавиша).
В Qt есть готовый виджет QKeySequenceEdit, который умеет захватывать нажатые клавиатурные комбинации. Проблема в том, что в нем не работает захват комбинаций вида Ctrl+Shift+A. И в то же время нормально работает захват Ctrl+A, Alt+A, Alt+Shift+A. То есть, не работает именно Ctrl+Shift+Буква.
Если нажать Ctrl+Shift+A, то QKeySequenceEdit сгенерирует вот такую странную вещь:
Ctrl+, Ctrl+A
А комбинация Alt+Shift+A выглядит вполне пристойно:
Alt+Shift+A
Тогда я решил написать свой маленький виджет, который бы тупо ловил keyPressEvent и дальше их обрабатывал:
HotKeyGrabber.h
https://github.com/xintrea/mytetra_dev/blob/6431b73b51fb1807c2d55a4b6f8a5c8ac...
HotKeyGrabber.cpp
https://github.com/xintrea/mytetra_dev/blob/6431b73b51fb1807c2d55a4b6f8a5c8ac...
И сделал в нем дебаговый вывод, какие коды приходят в event->key(). И вот что получилось:
Ctrl+A
13:10:47 [DBG] Key code: 16777249
13:10:48 [DBG] Key code: 65
Shift+A
13:10:55 [DBG] Key code: 16777248
13:10:56 [DBG] Key code: 65
Alt+A
13:11:15 [DBG] Key code: 16777251
13:11:16 [DBG] Key code: 65
Ctrl+Shift+A
13:11:36 [DBG] Key code: 16777249
13:11:36 [DBG] Key code: 0
13:11:37 [DBG] Key code: 65
Alt+Shift+A
13:11:48 [DBG] Key code: 16777251
13:11:49 [DBG] Key code: 16777248
13:11:49 [DBG] Key code: 65
Видно, что на комбинации Ctrl+Shift+A приходит ноль вместо кода 16777248.
Вот. И что теперь делать? Тут, похоже, то ли Qt тупит, то ли DE, то ли менеджер окон. То есть, нет никакой возможности корректно захватить Ctrl+Shift+Буква?
UPD: И что самое странное, клавиатурные комбинации в самой Qt-программе вида QKeySequence(«Ctrl+Shift+A») работают нормально. Не работает именно захват при определении комбинаций (я пишу виджет настройки горячих клавиш).