Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 21, средняя оценка - 4.95
firewave
1 / 1 / 0
Регистрация: 04.05.2009
Сообщений: 49
#1

Обясните про функцию bioskey() - C++

28.05.2009, 22:21. Просмотров 2629. Ответов 3
Метки нет (Все метки)

Обясните как работать з bioskey на С. Бо надо сделать задания(создать меню с использованиям bioskey с помощью стрелок і Ентер).А я не могу до конца понять, HELP не помагает......
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.05.2009, 22:21     Обясните про функцию bioskey()
Посмотрите здесь:

C++ Про указатель на функцию
Обясните пожалуйста все про классы в С++ C++
Вопрос про функцию square в классе Rect C++
C++ Дайте источник или обясните\решыте)
C++ Обясните код программы
1.про функция exit(); 2.про this C++
C++ Пожалуйтса обясните что обозначает оператор "~" в C++?
Про линковку и про исключения C++
C++ Структуры.Обясните что это
C++ Для чего именно и как исползуется dynamic_cast(обясните "ЯЗИКОМ ЧЕЛОВЕКА")
Про линковку библиотек и про архитектуру иерархии классов C++
C++ Написать функцию, которая, в зависимости от выбора пользователя вызывает соответствующую функцию

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Даемоник
41 / 41 / 3
Регистрация: 22.05.2009
Сообщений: 97
28.05.2009, 22:42     Обясните про функцию bioskey() #2
Функция Интерфейс с клавиатурой при помощи функций BIOS.

Синтаксис #include<bios.h>
int bioskey(int cmd);

Файл, содержащий bios.h
прототип

Описание bioskey посредством прерывания BIOS 0x16 выполняет
различные операции c клавиатурой. Параметр cmd
определяет операцию.

Возвращаемое Значение, возвращаемое функцией bioskey, зависит от
значение выполняемой операции, которая определяется
аргументом cmd:

---------------------------------------------------
cmd Операция
---------------------------------------------------
0 Если младшие 8 бит не нулевые, bioskey
возвращает код ASCII следующей нажатой
клавиши, ожидающей в очереди. Если младшие 8
битов равны 0, то старшие 8 битов содержат
расширенные коды клавиатуры, описание
которых вы можете найти в документе
"Техническое справочное руководство по IBM
PC".

1 Производится проверка, имело ли место
нажатие клавиши. Если при проверке
возвращается значение 0, это означает, что
клавиша не была нажата. В противном случае
возвращается значение очередной нажатой
клавиши. Сам же код очередной нажатой
клавиши сохраняется и будет возвращен при
следующем вызове функции bioskey при
значении параметра cmd, равном нулю.

2 Запрашивает текущий статус клавиш типа
SHIFT. Значение получается при логическом
сложении следующих кодов (операции "ИЛИ")

Бит 7 0x80 INSERT нажат
Бит 6 0x40 CAPS нажат
Бит 5 0x20 NUM LOCK нажат
Бит 4 0x10 SCROLL LOCK нажат
Бит 3 0x08 ALT нажат
Бит 2 0x04 CTRL нажат
Бит 1 0x02 LEFT SHIFT нажат
Бит 0 0x01 RIGHT SHIFT нажат

Переносимость bioskey поддерживается только на компьютерах IBM PC
или совместимых с ними.

Пример:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
#include <stdio.h>
#include <bios.h>
#include <ctype.h>
 
#define RIGHT 0x0001
#define LEFT  0x0002
#define CTRL  0x0004
#define ALT   0x0008
 
int main(void)
{
  int key, modifiers;
 
  /* Функция 1 возвращает 0, пока не будет
  нажата клавиша. Ожидание  ввода. */;                                                                        
  while (bioskey(1) == 0);
 
  /* Теперь используем функцию 0, чтобы получить
  значение клавиши  */
  key = bioskey(0);
 
  /* Используем функцию 2, чтобы определить,
  используются ли клавиши типа SHIFT */.
  modifiers = bioskey(2);
  if (modifiers) {
     printf("[");
     if (modifiers & RIGHT) printf("RIGHT ");
     if (modifiers & LEFT ) printf("LEFT ");
     if (modifiers & CTRL ) printf("CTRL ");
     if (modifiers & ALT  ) printf("ALT ");
     printf("] ");
}
/* вывести символ нажатой клавишу */
if (isalnum(key & 0xFF))
   printf("'%c'\n",key);
else
   printf("%#02x\n",key);
}
firewave
1 / 1 / 0
Регистрация: 04.05.2009
Сообщений: 49
28.05.2009, 23:24  [ТС]     Обясните про функцию bioskey() #3
ето стандартна HELP-овська прога...я ее юзал, но проблема в том что коди для Right i Left есть, а как найти для UP и DOWN, подскажите
Yurii_74
paladin
279 / 179 / 3
Регистрация: 25.02.2009
Сообщений: 592
29.05.2009, 07:18     Обясните про функцию bioskey() #4
Цитата Сообщение от firewave Посмотреть сообщение
ето стандартна HELP-овська прога...я ее юзал, но проблема в том что коди для Right i Left есть, а как найти для UP и DOWN, подскажите
Выводи результат на экран, увидишь (printf("%d", modifiers)
Yandex
Объявления
29.05.2009, 07:18     Обясните про функцию bioskey()
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru