![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Пользователь
Регистрация: 02.10.2011
Сообщений: 45
|
![]()
Доброго времени суток.
что то никак не могу понять как лучше реализовать. Требуется что бы совершалось действие по вводу "кода" т.е нажимаешь подряд 5,4,6 и хоп что то происходит. Сейчас общение с клавиатурой настроено следующий образом Код:
|
![]() |
![]() |
![]() |
#2 |
Старожил
Регистрация: 13.07.2012
Сообщений: 6,372
|
![]()
Возможный подход - копим все события в круговой буфер нужной длинны и проверяем на содержание в буфере нужной комбинации.
А правильный подход - читаем https://en.wikipedia.org/wiki/Finite-state_machine |
![]() |
![]() |
![]() |
#3 | |
Пользователь
Регистрация: 02.10.2011
Сообщений: 45
|
![]() Цитата:
|
|
![]() |
![]() |
![]() |
#4 |
Старожил
Регистрация: 15.02.2010
Сообщений: 15,830
|
![]()
Ничего сложного. В лоб: состояния - ждем, получили 1 нужный символ, получили 2 нужный символ, получили все. Переходы простейшие...
|
![]() |
![]() |
![]() |
#5 |
Пользователь
Регистрация: 02.10.2011
Сообщений: 45
|
![]()
я пытался условиями
что то вроде Код:
|
![]() |
![]() |
![]() |
#6 |
Старожил
Регистрация: 13.07.2012
Сообщений: 6,372
|
![]()
Зачем спрашивать, если потом делать по своему?
У вашего подхода две проблемы: а) Если комбинаций много, замудохаетесь писать вложенные switch/case. 10х10х10 - уже тысяча комбинаций. Дополнительно, если надо будет поменять комбинацию надо будет перетаскивать код. б) Что будет если нажат 5546? Первый обработчик уйдет во второй, который ожидает 4 но там 5, комбинация не распознана, дальше 4 и 6 уже либо пробали, либо ввели нас неизвесно куда. В дополнение, вашим способом, попробуйте реализовать возврат, ну типа back space... |
![]() |
![]() |
![]() |
#7 |
Пользователь
Регистрация: 02.10.2011
Сообщений: 45
|
![]() |
![]() |
![]() |
![]() |
#8 |
Форумчанин
Регистрация: 12.04.2017
Сообщений: 889
|
![]()
На коленке набросал, не компилил (для будущих поколений - это стандарт С++11, при более старом будут ошибки - как чинить - дальше по теме):
Код:
Последний раз редактировалось alexzk; 13.04.2017 в 15:35. |
![]() |
![]() |
![]() |
#9 |
Пользователь
Регистрация: 02.10.2011
Сообщений: 45
|
![]()
Ругается
error: expected nested-name-specifier before 'key_t' |
![]() |
![]() |
![]() |
#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 |