Assembler
От: Legion_Roka  
Дата: 21.12.03 09:58
Оценка:
Как можно сделать на assemblere так что-бы при нажатии клавиши на клавиатуры выполнялось одно, а когды я отпускаю клавишу выполнялось другое? Может есть функция которая провиряет если клавиша нажата или нет?
Спасибо.
Mой email:dsllsd2000@yahoo.co.in
Re: Assembler
От: Jenyay http://jenyay.net
Дата: 21.12.03 10:34
Оценка:
Здравствуйте, Legion_Roka, Вы писали:

L_R>Как можно сделать на assemblere так что-бы при нажатии клавиши на клавиатуры выполнялось одно, а когды я отпускаю клавишу выполнялось другое? Может есть функция которая провиряет если клавиша нажата или нет?

L_R>Спасибо.

По до что пишешь? Дос, Вин, а, может, *них?
... << RSDN@Home 1.1.0 stable >>
Софт, исходники и фото
Re: Assembler
От: Аноним  
Дата: 21.12.03 13:50
Оценка:
Здравствуйте, Legion_Roka, Вы писали:

L_R>Как можно сделать на assemblere так что-бы при нажатии клавиши на клавиатуры выполнялось одно, а когды я отпускаю клавишу выполнялось другое? Может есть функция которая провиряет если клавиша нажата или нет?

L_R>Спасибо.
L_R>Mой email:dsllsd2000@yahoo.co.in
Читаешь из порта клавиатуры 0x60. При чтении из него можно получить скан-код последней нажатой клавиши. По этому коду можно определять моменты нажатия и отпускения любой нажатой клавиши, включая такие клавиши, как SHIFT, CTRL, ALT. Скан-код отпускания клавиши равен скан-коду нажатия плюс 0x80.
Re[2]: Assembler
От: Аноним  
Дата: 21.12.03 14:09
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Здравствуйте, Legion_Roka, Вы писали:


L_R>>Как можно сделать на assemblere так что-бы при нажатии клавиши на клавиатуры выполнялось одно, а когды я отпускаю клавишу выполнялось другое? Может есть функция которая провиряет если клавиша нажата или нет?

L_R>>Спасибо.
L_R>>Mой email:dsllsd2000@yahoo.co.in
А>Читаешь из порта клавиатуры 0x60. При чтении из него можно получить скан-код последней нажатой клавиши. По этому коду можно определять моменты нажатия и отпускения любой нажатой клавиши, включая такие клавиши, как SHIFT, CTRL, ALT. Скан-код отпускания клавиши равен скан-коду нажатия плюс 0x80.

И ещё :


//Таблица скан-кодов клавиатуры

char scancodes[] = {
  0,
  0, //ESC
  '1','2', '3', '4', '5', '6', '7', '8', '9', '0',
  '-', '=', 
  8, //BACKSPACE
  '\t',//TAB
  'q', 'w', 'e', 'r', 't', 'y', 'u', 'i', 'o', 'p', '[', ']',
  '\n', //ENTER
  0, //CTRL
  'a', 's', 'd', 'f', 'g', 'h', 'j', 'k', 'l', ';', '\'', '`',
  0, //LEFT SHIFT,
  '\\', 'z', 'x', 'c', 'v', 'b', 'n', 'm', ',', '.', '/',
  0, //RIGHT SHIFT,
  '*', //NUMPAD
  0, //ALT
  ' ', //SPACE
  0, //CAPSLOCK
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, //F1 - F10
  0, //NUMLOCK
  0, //SCROLLOCK
  0, //HOME
  0, 
  0, //PAGE UP
  '-', //NUMPAD
  0, 0,
  0, //(r)
  '+', //NUMPAD
  0, //END
  0, 
  0, //PAGE DOWN
  0, //INS
  0, //DEL
  0, //SYS RQ
  0, 
  0, 0, //F11-F12
  0,
  0, 0, 0, //F13-F15
  0, 0, 0, 0, 0, 0, 0, 0, 0, //F16-F24
  0, 0, 0, 0, 0, 0, 0, 0
};

char scancodes_shifted[] = {
  0,
  0, //ESC
  '!', '@', '#', '$', '%', '^', '&', '*', '(', ')',
  '_', '+', 
  8, //BACKSPACE
  '\t',//TAB
  'Q', 'W', 'E', 'R', 'T', 'Y', 'U', 'I', 'O', 'P', '{', '}',
  '\n', //ENTER
  0, //CTRL
  'A', 'S', 'D', 'F', 'G', 'H', 'J', 'K', 'L', ':', '"', '~',
  0, //LEFT SHIFT,
  '|', 'Z', 'X', 'C', 'V', 'B', 'N', 'M', '<', '>', '?',
  0, //RIGHT SHIFT,
  '*', //NUMPAD
  0, //ALT
  ' ', //SPACE
  0, //CAPSLOCK
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, //F1 - F10
  0, //NUMLOCK
  0, //SCROLLOCK
  0, //HOME
  0, 
  0, //PAGE UP
  '-', //NUMPAD
  0, 0,
  0, //(r)
  '+', //NUMPAD
  0, //END
  0, 
  0, //PAGE DOWN
  0, //INS
  0, //DEL
  0, //SYS RQ
  0, 
  0, 0, //F11-F12
  0,
  0, 0, 0, //F13-F15
  0, 0, 0, 0, 0, 0, 0, 0, 0, //F16-F24
  0, 0, 0, 0, 0, 0, 0, 0
};
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.