git-svn-id: https://spexeah.com:8443/svn/Asuro@91 6dbc8c32-bb84-406f-8558-d1cf31a0ab0c
This commit is contained in:
parent
2b8500ddff
commit
3a394ff74c
126
src/drivers/keyboard.pas
Normal file
126
src/drivers/keyboard.pas
Normal file
@ -0,0 +1,126 @@
|
||||
{ ************************************************
|
||||
* Asuro
|
||||
* Unit: Drivers/keyboard
|
||||
* Description: Keyboard driver
|
||||
************************************************
|
||||
* Author: Aaron Hance
|
||||
* Contributors:
|
||||
************************************************ }
|
||||
|
||||
unit keyboard;
|
||||
|
||||
interface
|
||||
|
||||
uses
|
||||
console,
|
||||
util,
|
||||
isr33;
|
||||
|
||||
|
||||
type
|
||||
TKeyInfo = bitpacked record
|
||||
key_code : byte;
|
||||
pressed : boolean;
|
||||
end;
|
||||
|
||||
PKeyInfo = ^TKeyInfo;
|
||||
|
||||
var
|
||||
key_matrix : array [0..256] of TKeyInfo;
|
||||
key_buffer : TkeyInfo;
|
||||
|
||||
|
||||
procedure init();
|
||||
procedure callback(scan_code : void);
|
||||
|
||||
implementation
|
||||
|
||||
procedure init();
|
||||
begin
|
||||
console.writestring('b4');
|
||||
memset(uint32(@key_matrix[0]), 0, sizeof(TKeyInfo)*256);
|
||||
console.writestring('aft');
|
||||
key_matrix[1].key_code := $1B;
|
||||
key_matrix[2].key_code := $31;
|
||||
key_matrix[3].key_code := $32;
|
||||
key_matrix[4].key_code := $33;
|
||||
key_matrix[5].key_code := $34;
|
||||
key_matrix[6].key_code := $35;
|
||||
key_matrix[7].key_code := $36;
|
||||
key_matrix[8].key_code := $37;
|
||||
key_matrix[9].key_code := $38;
|
||||
key_matrix[10].key_code := $39;
|
||||
key_matrix[11].key_code := $30;
|
||||
key_matrix[12].key_code := $2D;
|
||||
key_matrix[13].key_code := $3D;
|
||||
key_matrix[14].key_code := $08;
|
||||
key_matrix[15].key_code := $09;
|
||||
key_matrix[16].key_code := $71;
|
||||
key_matrix[17].key_code := $77;
|
||||
key_matrix[18].key_code := $65;
|
||||
key_matrix[19].key_code := $72;
|
||||
key_matrix[20].key_code := $74;
|
||||
key_matrix[21].key_code := $79;
|
||||
key_matrix[22].key_code := $75;
|
||||
key_matrix[23].key_code := $69;
|
||||
key_matrix[24].key_code := $6F;
|
||||
key_matrix[25].key_code := $70;
|
||||
key_matrix[26].key_code := $5B;
|
||||
key_matrix[27].key_code := $5D;
|
||||
key_matrix[28].key_code := $0D;
|
||||
key_matrix[29].key_code := $00; //no ascii
|
||||
key_matrix[30].key_code := $61;
|
||||
key_matrix[31].key_code := $73;
|
||||
key_matrix[32].key_code := $64;
|
||||
key_matrix[33].key_code := $66;
|
||||
key_matrix[34].key_code := $67;
|
||||
key_matrix[35].key_code := $68;
|
||||
key_matrix[36].key_code := $6A;
|
||||
key_matrix[37].key_code := $6B;
|
||||
key_matrix[38].key_code := $6C;
|
||||
key_matrix[39].key_code := $3B;
|
||||
key_matrix[40].key_code := $27;
|
||||
key_matrix[41].key_code := $60;
|
||||
key_matrix[42].key_code := $00; //no ascii
|
||||
key_matrix[43].key_code := $5C;
|
||||
key_matrix[44].key_code := $7A;
|
||||
key_matrix[45].key_code := $78;
|
||||
key_matrix[46].key_code := $63;
|
||||
key_matrix[47].key_code := $76;
|
||||
key_matrix[48].key_code := $62;
|
||||
key_matrix[49].key_code := $6E;
|
||||
key_matrix[50].key_code := $6D;
|
||||
key_matrix[51].key_code := $2C;
|
||||
key_matrix[52].key_code := $2E;
|
||||
key_matrix[53].key_code := $2F;
|
||||
key_matrix[54].key_code := $00; //no ascii
|
||||
key_matrix[55].key_code := $2A;
|
||||
key_matrix[56].key_code := $00; //no ascii
|
||||
key_matrix[57].key_code := $20;
|
||||
key_matrix[58].key_code := $00; //no ascii
|
||||
key_matrix[59].key_code := $3B;
|
||||
key_matrix[60].key_code := $3C;
|
||||
key_matrix[61].key_code := $3D;
|
||||
key_matrix[62].key_code := $3E;
|
||||
key_matrix[63].key_code := $3F;
|
||||
key_matrix[64].key_code := $40;
|
||||
key_matrix[65].key_code := $41;
|
||||
key_matrix[66].key_code := $42;
|
||||
key_matrix[67].key_code := $43;
|
||||
key_matrix[68].key_code := $44;
|
||||
|
||||
key_matrix[87].key_code := $85;
|
||||
key_matrix[88].key_code := $86;
|
||||
|
||||
|
||||
isr33.hook(uint32(@callback));
|
||||
|
||||
end;
|
||||
|
||||
procedure callback(scan_code : void);
|
||||
|
||||
begin
|
||||
key_buffer := key_matrix[scan_code^];
|
||||
end;
|
||||
|
||||
end.
|
Loading…
x
Reference in New Issue
Block a user