Проектирование: Обработка нажатия клавиш на С/С++ или Asm #433842


#0 by Ksandr
Подскажите, кто знает, какое количество одновременно нажатых клавиш можно обрабатывать программой на языках в сабже?
#1 by Mikeware
бедняга...
#2 by Mikeware
Хотя, пардон - год рождения посмотрел...
#3 by ДенисЧ
Одну плюс контрол альт шифт
#4 by Ksandr
Навеяно пятницей: Когда-то, еще во времена DOSа ходила издевательская игрушка по сетям. Там поначалу мелькали девочки в завлекательных позах (усыпляли внимание). Потом, маленько поблуждав, наконец-то игрок натыкался на готовую разоблачиться девочку. Для снятия предмета одежды нужно нажать кнопочку. Для следующего - еще одну, не отпуская первую. И т.д. Где-то между правым чулком и юбочкой игроку не хватает пальцев, он отпускает кнопки, продумывает рациональный расклад пальцев и начинает снова.... В конце концов, когда торжественно нажимается десятая кнопка и все пальцы намертво прикованы к клавиатуре, вместо долгожданной обнаженной натуры появляется надпись: "Если хоть одна клавиша будет отпущена, начнется форматирование диска С". Так это или нет - никому проверять не хотелось, поэтому коллизии возникали весьма забавные: от простого нажимания Reset носом до воплей благим матом в опустевшем ночном здании пока заспанный вахтер не приходил и не спасал несчастного, выдернув указанную вилку из розетки. Если это реально - хочу подобное написать
#5 by Мутабор
События KeyDown KeyUp
#6 by Fragster
зависит от клавиатуры... у меня на разных было от 4-х всего до 20 но в разных частях клавиатуры
#7 by skunk
судя по постоновке вопроса данное тебе не реализовать... вообщето у клавиатуры для кнопок два события ... нажатие и отпускание
#8 by Evg-lylyk
DirectX (DirectImput)
#9 by skunk
фигню порите сударь
#10 by Ksandr
Жаль. Я не хотел писать вредоносную программу - исключительно в развлекательных целях))
#11 by Fragster
сам ты фигню. реально от железяки зависит... не раз проверено в глубоком еще детстве, когда всякие танчико-змейки писались
#12 by Мутабор
Ну как бы из винды ты отформатировать ц не сможешь - поробуй хоть прям щас Прошли те времена когда по портам ввода вывода работали, щас виндовые события....
#13 by Fragster
+ начинаешь нажимать и удерживать кнопки на клаве, q, w ,e , а нажатие r уже не на всех клавах обрабатывалась
#14 by Fragster
на дельфях тоже самое. правда тогда USB клав не было, так что хз, что там с ними
#15 by skunk
ну может из-за того что в детстве проверял и тебе просто из-за возраста не хватило понять причину ... пофих сколько кнопок нажато ... каждый раз при нажатие, отпускании на порт 60h валиться скан кнопки... и пофих сколько их нажато... не надо открывать америку заново
#16 by Evg-lylyk
можно сделать через DirectImput можно сделать , господи что вы зациклились на событиях я же говорю остались стредства для людей в DirectImput можно сделать правдо о количестве клавиш не знаю
#17 by Fragster
ну пля, в обед наваяю на сях чО-нить проверяющее...
#18 by Fragster
директ-инпут для неудачников ;)
#19 by Ksandr
Я С и асм хотел использовать
#20 by Evg-lylyk
DirectImput не язык, а программный интерфейс (библиотека функций). Используйте хоть Си хоть асм
#21 by Ksandr
Я ж писал - не хочу вредоносную программу
#22 by Fragster
все равно для неудачников
#23 by Evg-lylyk
для сабжа только он подойдет как раз используя другие средства (ну еще порты можно, но зачем в DX удобнее) ждет неудача ;)
#24 by Fragster
директикс удобнее??? с портами - прога на один экран кода и под любую ОС, а с директинпутом - на три и тока под винду... зачем это? если б там обработка джойстиков и рулей различных была б - я бы понял, зачем тебе там «прямой ввод» от мелкософта, но нажатие кнопок - это как забивать гвозди 15тонным прессом
#25 by Said_We
Обрабатывать можно аппаратное прерывание клавиатуры.
#26 by Ksandr
Это то как раз понятно. А какое допустимо количество одновременно нажатых?
#27 by Evg-lylyk
Удобнее в использовании... DI очень примитивен это как бы то что ты напишешь через 30 минут работы с портами для своего же удобства... про мультиплатформенность не смешите... В DI будет удобнее отслеживать множественное нажатие клавиш. "это как забивать гвозди 15тонным прессом" не согласен, что знаешь то и используешь... по мне через порты большее извращение (т.к. плохой тон) DI, порты какая разница сделать можно и от клавы не зависит... вообщем есть средства, а для баловства любое сойдет судя по наверно любое
#28 by Boroda
На мышку есть события нажат - отжат. Если есть такое же на клавиатуру, то можно определить количество нажатых = кол.нажат - кол.отжат
#29 by Salvador Limones
Дык сколько угодно! И DirectInput тут не нужен. Получаем в массив с помощью GetKeyboardState, потом бежим по массиву и смотрим, какие клавиши включены.
#30 by Said_We
Размером буфера определяется. Все Скан коды нажатых и отжатых клавиш попадают туда. У некоторых клавиш скен код состоит из нескольких байтов. Какова размерность этого буфера уже не скажу и как с ним работать уже не помню, а приходилось - давно правда это было. Все динамические игры как правило перепрограммируют клаву, что бы быстрее реагировать на действия геймера.
#31 by skunk
тебе будет достаточно просто самому ловить моменты нажатия и отпускания клавиш... и буферезировать самому...
#32 by Said_We
Это надо , а не мне. :-) Если перехватить прерывание и свой буфер организовать, то да.
#33 by Said_We
Когда я еще был студентом, то у нас в компьютерных кабинетах были инженеры злые и не давали кислороду. Каждому студенту было выделено всего 5 метров на всё про всё. Хотя по тем временам не так уж и мало. Но в определенный момент на диске не стало хватать место, хотя у каждого было далеко до 5-ти метров. Просто эти же инженеры залили игрушек и всякой мути на винт и место кончилось. Пришлось заняться шпионажем. посидели подумали и придумали. Нарисовали шпиона который всё нажимаемое на клаве после загрузки в файлик записывает тихонько. Навесили шпиона на несколько машин и стали ждать пока инженер будет под своими админскими правами заходить. И вот в один прекрасный момент (очень скоро) это случилось. После этого зашли и грохнули ко всем чертям игрушки и всякую муть, почистили лог кто куда и когда заходил. :-) На следующий день у инженеров был траур. :-) А у нас счастье. Инженеры на какой-то сбой стали грешить, так как вроде как никто ни чего не удалял и в логах нету. Типа новел глюкнул. Ага ага... И выборочно грохнул только развликуху, какая класная операционка! :-) На 1 апреля хотели повесить на входе список админов и преподавателей и пароли :-) Но не стали. Мало ли зачем ещё пригодится. :-)
#34 by Serginio1
#35 by Ksandr
Спасибо! Приду домой попробую!
#36 by Said_We
"bScan (Byte) - аппаратный скан-код" - если только один байт, то не все клавиши можно определить. Скан код клавиши может содержать несколько байт. На стандарной клавиатуре от одного до пяти по моему. Правый и левый Shift Ctrl ит.д. отличаются как раз тем что у одно из них есть еще код по моему Е0h. Да и вообще это частый префикс.
#37 by Feanor
Времена ДОСа безвозвратно ушли. Если вин апи будешь использовать, то нахрена на асме извращаться? понт?
#38 by Ksandr
Нет, желание познать его лучше)
#39 by H A D G E H O G s
А дятлы долбят и долбят. А в 29 - ответ.
#40 by H A D G E H O G s
Счаст будет вопрос: Что такое буфер и как получить на него указатель...
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С