| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Системное программирование и WinAPI > Отловить нажатие Prin Screen |
| Автор: ecspertiza 21.12.2011, 12:43 |
| Знаю что кроссплатформенного способа нет, поэтому решил писать реализацию под каждую ОС. Но и это оказалось не просто Shift +Ctrl+Print Screen ? и если можно то как ? |
| Автор: boostcoder 21.12.2011, 13:00 |
| это же системное программирование. по вендусной теме нужно было создавать тему в вендусном разделе. по линуксячей - в линуксячем. по маковой - в маковом. |
| Автор: ecspertiza 21.12.2011, 13:06 |
| Так и думал |
| Автор: ecspertiza 21.12.2011, 13:33 |
| Кстати сейчас подумал, может в венде можно переназначить эти комбинации клавишь на вызов моей программы ? |
| Автор: boostcoder 21.12.2011, 13:37 |
| вот для вендус: http://answers.google.com/answers/threadview/id/133059.html Добавлено через 5 минут и 1 секунду для линукс, наверное самым простым способом будет чтение девайса клавиатуры. никаких суперправ для этого не нужно. http://stackoverflow.com/questions/2775461/linux-keyboard-event-capturing-dev-inputx |
| Автор: ecspertiza 21.12.2011, 13:46 |
| Вендовый пример, видел до того как ты ссылку скинул, и попробовал, он не работал, после того как ты ссылку скинул,я решил еще раз проверить, все заработало |
| Автор: boostcoder 21.12.2011, 13:49 |
| bsa, зачем ему для чтения клавы, лезть в дебри X сервера? хоть один плюс аргументируй. (кроме как для расширения кругозора) Добавлено через 41 секунду да. с аурой мы в сговоре. |
| Автор: bsa 21.12.2011, 14:12 |
1. надо искать среди эвентов ту клаву, которую юзает пользователь. 2. были у меня проблемы с клавой, когда я работал с ней через event. Причем, с PS/2 проблем не было, а от USB клавы ничего не получал. При работе с X сервером этих проблем нет. |
| Автор: boostcoder 21.12.2011, 14:18 |
вариант.. |
| Автор: ecspertiza 22.12.2011, 16:46 | ||
| Столкнулся с небольшой проблемой, с кодом который кинул bsa, отлавливает события хорошо, но он ловит всю клаву, и не дает выполнять обычный набор текста к примеру, как бы вернуть выполнение событий системе если это не нужная мне клавиша ? я пробовал так
мол если это не то событие что нам нужно убираем граб, ставим событие в очередь, и возвращаем граб. Но чет не сработало, пробовал тоже с XSendEvent тож не прокатило. Как можно побороть проблему ? |
| Автор: bsa 22.12.2011, 20:38 |
| смотри QApplication::x11EventFilter. |
| Автор: ecspertiza 25.12.2011, 11:22 |
| Спасибо всем за помощь. QApplication::x11EventFilter не помог ибо он клавиатуру не ловит. Но нашелся вариант с XSendEvent описал вот тут https://sites.google.com/site/ecspertiza/stati/qt/perehvat-nazatia-print-screen-v-qt |