C key combinations

3 отговора 162 прегледа
#1

C key combinations

Kak da nakaram C (DOS) programata mi da reagira na opredeleni ot men klavishni kombinacii kato naprimer CTRL+S ALT+Q SHIFT+Z i tn.


Thanks predvaritelno.

Отговор
в отговор на key needer #2

Re: C key combinations

s pot na cheloto :)

potursi w google - Ralph Brown interruptite,

ima nachin da proverjawash direktno za natisnat klavish (mislja che beshe port[$60] ili $80 - weche sum zabravil) - kato tova go pravish na wsjako 18-to prekuswane - ili neshto ot tozi rod.

na port[$60] ti idwat direktno klavisihite

tirulirutatuutuu
Отговор
в отговор на malkia #3

Re: C key combinations

така е наистина, прехващаш прекъсването и проверяваш какво ти е сервирало на порт 60. имай впредвид че на порта клавишите излизат в позиционен код - така например ескейп е 1 а не 27. няма нищо общо с аски. при натискане получаваш кода, при отпускане получаваш кода +128, т.е. най-старшия бит ти показва дали клавиша е натиснат или отпуснат. правиш си масив от 128 елемента и ги сетваш/ресетваш с индекс кода и стойност най-старшия бит.
номера с порта върви и под windows до 98. става за авариен изход от time critical section дето прекъсването се забранява и съобщенията спират да бачкат. ех, мамка им на новите виндовси...

Отговор
в отговор на key needer #4

Re: C key combinations

Ако не си намерил начин за твоя проблем ти предлагам друг, слабо ефектвен, но работещ начин.Аз използвам един друг метод (по-прост). Дкларирам две променливи от тип char. Само, че трябва да програмираш за ДОС и компилатора да ти поддържа функциите getch() и getche()!

char a,b;
a = getch();
if(a == '\0')
b = getch();

Когато се натисне напр. CTRL + S (за сейф например), ДОС връща 0, и ако е така на b се присвоява стойност (връщана от ДОС), т.е. първия път ДОС не връща нищо, но втория - връща АСКИ символ.
АСКИ символите може да ги видиш в HELP-a на FREE PASCAL за Keyboard под формата на таблица и пише "KEY SCAN CODES"; мога да ти протя и по и-мейла
ако те интересува.

Who Wants To Live Forever?
Отговор