Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

клавиатура


Adios ©   (2007-02-12 18:24:00) 

как получить при нажатии число:
стрелка вверх-200
стрелка вниз-208
стрелка влево-203
стрелка вправо-205
W-17
S-31
A-30
D-32


brother   (2007-02-15 07:16:00) [1]

Удалено модератором
Примечание: МАТ


Adios   (2007-02-13 23:43:00) [2]

?


Adios   (2007-02-12 22:06:00) [3]

короче объясняю зачем и где я это увидел:
эмулятор sega "Fusion"
эмулятор PS "eSPXe"
в них нужно програмно осуществить настройку клавишь, эмуляторы от разных производителей, но после того как в них определяешь клавиши они одинаковые, в смысле и там и там
стрелка вверх-200
стрелка вниз-208
стрелка влево-203
стрелка вправо-205
W-17
S-31
A-30
D-32
а значит используется какаято одинаковая кодировка, возможно какойто определённый стандарт, мнебы как нибудь его надо узнать


RASkov   (2007-02-12 21:52:00) [4]

> приведи пожалуйста пример констант.


Если чесно, я что-то не въехал, какая там у тебя кодировка, но вот можешь свою построить:
const
   MyCode: Array[0..255] of Byte=
   (0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 203, 200, 205, 208, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 30, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 31, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);

implementation

procedure TForm1.FormCreate(Sender: TObject);
begin
 Form1.KeyPreview:=True;
end;

procedure TForm1.FormKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState);
var Chislo: Integer;
begin
case Key of
 VK_DOWN: Chislo:=208;  //как вариант
 VK_UP: Chislo:=200;    //с числом
 VK_LEFT: Chislo:=203;  //оставил
 VK_RIGHT: Chislo:=205; //тоже
 ORD('W'): Chislo:=17;
 ORD('A'): Chislo:=30;
 ORD('S'): Chislo:=31;  //можно дальше
 ORD('D'): Chislo:=32;  //продолжить список
 .....................................
end;
Caption:=Format('Код: %d,  Мой код: %d, Chislo: %d', [Key, MyCode[Key], Chislo]);
end;


Adios   (2007-02-12 20:47:00) [5]

эти значения наверное должны быть обозначены где-то в системе я думаю, а то переменные на всю клавиатуру вводить неохота


Adios   (2007-02-12 20:41:00) [6]

koha приведи пожалуйста пример констант.


koha   (2007-02-12 19:41:00) [7]

procedure TForm1.FormCreate(Sender: TObject);
begin
 Form1.KeyPreview:=true;
end;

procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
begin
  ShowMessage(IntToStr(Ord(Key)));
end;


а так то необходимо знать текущую  кодировку и разницу между кодами = "константа" , например,
Ord(Key)+константа = нужная кодировка.


Efir   (2007-02-12 19:39:00) [8]

Можно примерно так:

if GetAsyncKeyState(VK_UP)<>0 then ...
if GetAsyncKeyState(VK_DOWN)<>0 then ...
if GetAsyncKeyState(VK_LEFT)<>0 then ...
if GetAsyncKeyState(VK_RIGHT)<>0 then ...

и т.д.


RASkov   (2007-02-12 19:39:00) [9]

Или так:
KeyPreview = True;
На OnFormKeyUp формы
 case Key of
  VK_DOWN: ShowMessage('Down Chislo:=208');
  VK_UP: ShowMessage('UP Chislo:=200');
  VK_LEFT: ShowMessage('Left Chislo:=203');
  VK_RIGHT: ShowMessage('Right Chislo:=205');
  ORD('W'): ShowMessage('W Chislo:=17');
  ORD('A'): ShowMessage('A Chislo:=30');
  ORD('S'): ShowMessage('S Chislo:=31');
  ORD('D'): ShowMessage('D Chislo:=32');
 end;


Adios   (2007-02-12 19:01:00) [10]

в своей


koha   (2007-02-12 18:32:00) [11]

- где получить, в своей форме или за прделами формы?


Наверх

Титульная страница Поиск, карта сайта Написать письмо