From e71361dccabadd9da70f6cd0637a5d953128546e Mon Sep 17 00:00:00 2001 From: kamkow1 Date: Sun, 7 Sep 2025 22:24:34 +0200 Subject: [PATCH] Nice userspace wrappers for ps2kb driver --- ulib/Makefile | 1 + ulib/devices/ps2kb.c | 8 ++++++++ ulib/devices/ps2kb.h | 10 ++++++++++ user/init/main.c | 7 ++++--- 4 files changed, 23 insertions(+), 3 deletions(-) create mode 100644 ulib/devices/ps2kb.c create mode 100644 ulib/devices/ps2kb.h diff --git a/ulib/Makefile b/ulib/Makefile index bc27d06..0171b2b 100644 --- a/ulib/Makefile +++ b/ulib/Makefile @@ -10,6 +10,7 @@ SRCFILES := $(call GRABSRC, \ string \ system \ printf \ + devices \ ) CFLAGS += -isystem $(ROOT)/share -isystem $(ROOT)/ulib -isystem $(ROOT)/std/include \ diff --git a/ulib/devices/ps2kb.c b/ulib/devices/ps2kb.c new file mode 100644 index 0000000..34d61b8 --- /dev/null +++ b/ulib/devices/ps2kb.c @@ -0,0 +1,8 @@ +#include + +#include +#include + +int32_t dev_ps2kb_read(int32_t *ch) { + return ipcpipe(1, 0, IPCPIPE_READ, (uint8_t *)ch, sizeof(*ch)); +} diff --git a/ulib/devices/ps2kb.h b/ulib/devices/ps2kb.h new file mode 100644 index 0000000..e906dbc --- /dev/null +++ b/ulib/devices/ps2kb.h @@ -0,0 +1,10 @@ +#ifndef ULIB_DEVICES_PS2KB_H_ +#define ULIB_DEVICES_PS2KB_H_ + +#include + +#define PS2KB_C(x) ((x) - '@') + +int32_t dev_ps2kb_read(int32_t *ch); + +#endif // ULIB_DEVICES_PS2KB_H_ diff --git a/user/init/main.c b/user/init/main.c index e46fd3e..dd50d1c 100644 --- a/user/init/main.c +++ b/user/init/main.c @@ -7,6 +7,7 @@ #include #include #include +#include void main(void) { debugprint(ANSIQ_SCR_CLR_ALL); @@ -28,10 +29,10 @@ void main(void) { while(1) { int32_t kbchar; - int32_t read = ipcpipe(1, 0, IPCPIPE_READ, (uint8_t *)&kbchar, sizeof(kbchar)); + int32_t read = dev_ps2kb_read(&kbchar); - if (read > 0 && (kbchar >= 0x20 && kbchar <= 0x7F)) { - uprintf("%c", (char)kbchar); + if (read > 0 && (kbchar >= 0x20 && kbchar <= 0x7F || kbchar == 0xA)) { + uprintf("%c", kbchar & 0xFF); ipcpipe(3, 1, IPCPIPE_WRITE, (uint8_t *)&kbchar, 1); } }