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

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

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

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

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

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

Обясните пожалуйста все про классы в С++ - C++
Потолковее и доходчиво,а то читаю С++ сам изучаю вапще тема не понятна

Про указатель на функцию - C++
Народ, у меня есть стандартная функция (создание потоков), она требует чтобы ей 3-м параметром передали указатель на функцию (void*...

Вопрос про функцию square в классе Rect - C++
Скажите пожалуйста, что данная функция делает? очень надо, подскажите кто знает

Обясните код программы - C++
Объясните пожалуйста код. Вычислить количество положительных элементов квадратной матрицы, расположенных по ее периметру и на диагоналях....

Структуры.Обясните что это - C++
Здрасте :) !Я ни как не могу понять что означает "структуры".Помогите пожалуста ответте на вопросы: 1.Что такое структуры? 2.Зачем они...

Дайте источник или обясните\решыте) - C++
1.Описать структуру з именем SKLAD, яка содержит следующие поля: NAME - название товару; TYPE - единица измерения товару; QUANTITY -...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Даемоник
42 / 42 / 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, подскажите
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.05.2009, 07:18     Обясните про функцию bioskey()
Еще ссылки по теме:

Для чего именно и как исползуется dynamic_cast(обясните "ЯЗИКОМ ЧЕЛОВЕКА") - C++
привет ребята ктото может привести хороший пример о dynamic_cast ?(об осталних я выучил).. Именно для чего он...

Пожалуйтса обясните что обозначает оператор "~" в C++? - C++
Привет всем... Пожалуйтса обясните что обозначает оператор &quot;~&quot; в C++?

Напишите функцию, которая вычисляет сигнум-функцию числа - C++
Напишите функцию, которая вычисляет сигнум-функцию числа. Сигнум-функция возвращает: 1 если число положительное, -1 если число...

Шаблоны функции и указатель на функцию передаваемый в функцию - C++
Привет! Вопрос такой: Если я пишу сортировку, например, bubbleSort и хочу помимо массива и его размера передать ещё и указатель на функцию,...


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

Или воспользуйтесь поиском по форуму:
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