From 2d57e08d8a29df4b5ae5c7bec5781fefcf3eaae4 Mon Sep 17 00:00:00 2001 From: aaron Date: Thu, 18 May 2017 13:16:51 +0000 Subject: [PATCH] git-svn-id: https://spexeah.com:8443/svn/Asuro@94 6dbc8c32-bb84-406f-8558-d1cf31a0ab0c --- src/drivers/keyboard.pas | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/src/drivers/keyboard.pas b/src/drivers/keyboard.pas index c895b885..b2c1faee 100644 --- a/src/drivers/keyboard.pas +++ b/src/drivers/keyboard.pas @@ -32,6 +32,7 @@ var procedure init(); procedure callback(scan_code : void); +procedure buffer_push_sc(scan_code : uInt8); implementation @@ -118,16 +119,23 @@ begin end; procedure callback(scan_code : void); - begin - if key_matrix[uint8(scan_code)] then begin - key_buffer := key_matrix[uint8(scan_code)]; + if key_matrix[uint8(scan_code)].key_code <> 0 then begin + buffer_push_sc(uint8(scan_code)); end; - console.writechar(char(key_buffer.key_code)); + console.writechar(char(key_buffer[0].key_code)); end; -procedure buffer_push(); +procedure buffer_push_sc(scan_code : uInt8); +var + i : uInt32; begin + for i:=127 downto 2 do begin + key_buffer[i] = key_buffer[i - 1]; + end; + + key_buffer[0] = key_matrix[scan_code]; + end; end. \ No newline at end of file