From e2b78d20b80d89321d8d9df3ab8ade8407642dfc Mon Sep 17 00:00:00 2001 From: Aleksa Vučković Date: Sun, 2 Jan 2022 22:56:02 +0100 Subject: Adding code --- include/06.keyboard/keyboard12.c | 48 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 include/06.keyboard/keyboard12.c (limited to 'include/06.keyboard/keyboard12.c') diff --git a/include/06.keyboard/keyboard12.c b/include/06.keyboard/keyboard12.c new file mode 100644 index 0000000..a0a8a0f --- /dev/null +++ b/include/06.keyboard/keyboard12.c @@ -0,0 +1,48 @@ +void keyboard_handler() +{ + ioport_out(PIC1_COMMAND_PORT, 0x20); + uint8_t status = ioport_in(KEYBOARD_STATUS_PORT); + + if (status & 0x1) + { + uint8_t keycode = ioport_in(KEYBOARD_DATA_PORT); + if(keycode<0x80) + { + ispressed[keycode]=1; + if(keycode==0x0E) backspace(); + else if(keycode==0x1C) enter(); + else if(keycode==0x39) space(); + else if(keycode==72) keyup(); + else if(keycode==80) keydown(); + else if(keycode==75) keyleft(); + else if(keycode==77) keyright(); + else + { + char c=charcode[keycode]; + if(c!=' ') + { + if(lctrl) + { + if(c=='l') + { + clear(); + prompt(); + printf("%s",buffer[buffer_current]); + return; + } + } + if(lshift||rshift) + { + c=shift_charcode[keycode]; + } + buffer[buffer_current][buffer_index++]=c; + printf("%c",c); + } + } + } + else + { + ispressed[keycode-0x80]=0; + } + } +} -- cgit v1.2.3