Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Нажатия нескольких клавиш одновременно, Как обработать? 
:(
    Опции темы
Валерия
Дата 13.4.2007, 19:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 598
Регистрация: 10.3.2007

Репутация: нет
Всего: 8



Вобщем, нужно что бы при нажатии какойто клавиши, она добавлялась в массив, а убиралась от туда при отпускании.
Тоесть что бы можно было одновременно обрабатывать нажатие нескольких клавиш.
Как я себе это представляю: следим за прерыванием клавиатуры через asm вставку, а там, я так думаю, можно отслеживать нажатие и отпускание кнопки, и потом добавляем с сишный массив.
Вот как сделать не знаю, т.к ассемблером вообще не владею.
Где то есть готовое решение или мог бы кто то написать хотя б ассемблеров-скую часть smile?

Добавлено через 1 минуту и 28 секунд
Ах да, компилятор Турбо С++ 3.2 smile
PM MAIL   Вверх
betal
Дата 13.4.2007, 19:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 208
Регистрация: 26.12.2006

Репутация: нет
Всего: 1



Модуль обработки одновременного нажатия нескольких кнопок. Keyboard input handling without BIOS. 

Подойдет ?


Присоединённый файл ( Кол-во скачиваний: 6 )
Присоединённый файл  tpkey.zip 1,84 Kb
--------------------
101100010100001101100001110100101111011легкие деньги
PM WWW ICQ   Вверх
MAKCim
Дата 13.4.2007, 19:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: 52
Всего: 207





--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
profispb
Дата 17.5.2007, 12:30 (ссылка) |  (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 220
Регистрация: 27.12.2005
Где: Санкт - Петербург

Репутация: 1
Всего: 1



Вообще-то сервисные нажатия комбинации клавиш типа Alt+X обрабатывается через getch(). Есть ANSI код для многих комбинаций. И никакого АСМА не надо. Хотя если все ручками написать будет интересно и прикольно что выйдет в конце конфетка.
--------------------
В жизни, я люблю делать, то что я люблю. А не то что модно, престижно и выгодноЛюблю когда начинает работать, то что без меня не работало!
PM MAIL ICQ   Вверх
bel_nikita
Дата 17.5.2007, 14:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Эксперт
Сообщений: 2304
Регистрация: 12.10.2003
Где: Поезд №21/22 ( ст . Прага )

Репутация: 21
Всего: 47



Можно обойтись стандартными Сишными средствами.
Смотрим скан-коды и пишем:
Код

    int key;
    if( kbhit() )
    {
      key = getch();
      switch (key)
     {
      case VK_TAB:
        break;
      case VK_BACK:
        break;
      case VK_ESCAPE:  // exit
        MainLoop = false;
        break;
      case VK_UP:
        break;
      case VK_RETURN:  // enter
        break;
      default:
        break;
      case 0x00:   //  Scan Codes Handler
        key = getch();
        switch( key )
        {
        case UPARROW:
         break;
        case DOWNARROW:
          break;
        default:
          break;
        }
        break;  //  Scan Codes Handler
      }
    }


З.Ы.: если хочется своего велосипеда, то копайте в сторону чтения/записи портов 0х60 и 0х64


--------------------
user posted image — регистрация доменов от 150 руб.
PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0457 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.