|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
12.04.2017, 09:15 | #1 |
Пользователь
Регистрация: 02.10.2011
Сообщений: 45
|
Действие по комбинации нажатия клавиш
Доброго времени суток.
что то никак не могу понять как лучше реализовать. Требуется что бы совершалось действие по вводу "кода" т.е нажимаешь подряд 5,4,6 и хоп что то происходит. Сейчас общение с клавиатурой настроено следующий образом Код:
|
12.04.2017, 09:36 | #2 |
Старожил
Регистрация: 13.07.2012
Сообщений: 6,330
|
Возможный подход - копим все события в круговой буфер нужной длинны и проверяем на содержание в буфере нужной комбинации.
А правильный подход - читаем https://en.wikipedia.org/wiki/Finite-state_machine |
12.04.2017, 10:16 | #3 | |
Пользователь
Регистрация: 02.10.2011
Сообщений: 45
|
Цитата:
|
|
12.04.2017, 10:36 | #4 |
Старожил
Регистрация: 15.02.2010
Сообщений: 15,708
|
Ничего сложного. В лоб: состояния - ждем, получили 1 нужный символ, получили 2 нужный символ, получили все. Переходы простейшие...
|
12.04.2017, 10:46 | #5 |
Пользователь
Регистрация: 02.10.2011
Сообщений: 45
|
я пытался условиями
что то вроде Код:
|
12.04.2017, 11:36 | #6 |
Старожил
Регистрация: 13.07.2012
Сообщений: 6,330
|
Зачем спрашивать, если потом делать по своему?
У вашего подхода две проблемы: а) Если комбинаций много, замудохаетесь писать вложенные switch/case. 10х10х10 - уже тысяча комбинаций. Дополнительно, если надо будет поменять комбинацию надо будет перетаскивать код. б) Что будет если нажат 5546? Первый обработчик уйдет во второй, который ожидает 4 но там 5, комбинация не распознана, дальше 4 и 6 уже либо пробали, либо ввели нас неизвесно куда. В дополнение, вашим способом, попробуйте реализовать возврат, ну типа back space... |
12.04.2017, 12:47 | #7 |
Пользователь
Регистрация: 02.10.2011
Сообщений: 45
|
|
12.04.2017, 16:43 | #8 |
Форумчанин
Регистрация: 12.04.2017
Сообщений: 889
|
На коленке набросал, не компилил (для будущих поколений - это стандарт С++11, при более старом будут ошибки - как чинить - дальше по теме):
Код:
Последний раз редактировалось alexzk; 13.04.2017 в 15:35. |
13.04.2017, 11:22 | #9 |
Пользователь
Регистрация: 02.10.2011
Сообщений: 45
|
Ругается
error: expected nested-name-specifier before 'key_t' |
13.04.2017, 11:22 | #10 |
Пользователь
Регистрация: 02.10.2011
Сообщений: 45
|
как я понял это связано с компилятором, но я не могу его поменять.
Последний раз редактировалось GoldSieg; 13.04.2017 в 11:27. |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Программная генерация нажатия комбинации клавиш в jQuery | Abimeleh | JavaScript, Ajax | 5 | 07.09.2015 16:49 |
Имитация нажатия комбинации клавиш! | stalsoft | C# (си шарп) | 2 | 24.06.2011 00:13 |
Назначить действие комбинации кнопок обычной 3-кноп. мыши | SVGuss | Софт | 0 | 11.03.2011 19:00 |
Комбинации клавиш | Alessandro Rossi | Свободное общение | 8 | 28.11.2010 23:30 |
Имитация нажатия комбинации клавиш | Zeraim | Win Api | 15 | 05.05.2008 20:35 |