forked from koniifer/ableos
Detecting keypresses
This commit is contained in:
parent
0d3641e199
commit
1615297536
|
@ -4,9 +4,7 @@ receive_message := fn(buffer_id: int, memory_map_location: ^u8, length: int): ^u
|
||||||
return @eca(^u8, 4, buffer_id, memory_map_location, length)
|
return @eca(^u8, 4, buffer_id, memory_map_location, length)
|
||||||
}
|
}
|
||||||
|
|
||||||
send_message := fn(buffer_id: int): void {
|
send_message := fn(buffer_id: int, message: ^u8, message_length: int): void {
|
||||||
message := "Hello there\0"
|
|
||||||
message_length := string.length(message)
|
|
||||||
@eca(i32, 3, buffer_id, message, message_length)
|
@eca(i32, 3, buffer_id, message, message_length)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
11
sysdata/programs/ps2_driver/meta.toml
Normal file
11
sysdata/programs/ps2_driver/meta.toml
Normal file
|
@ -0,0 +1,11 @@
|
||||||
|
[package]
|
||||||
|
name = "ps2_driver"
|
||||||
|
authors = ["Talha Qamar"]
|
||||||
|
|
||||||
|
[dependants.libraries]
|
||||||
|
|
||||||
|
[dependants.binaries]
|
||||||
|
hblang.version = "1.0.0"
|
||||||
|
|
||||||
|
[build]
|
||||||
|
command = "hblang src/main.hb"
|
|
@ -1,2 +1,31 @@
|
||||||
main:= fn(): int {
|
.{memory, log, string, buffer} := @use("../../../libraries/stn/src/lib.hb")
|
||||||
|
|
||||||
|
send_byte := fn(byte: u8): u8 {
|
||||||
|
memory.outb(0, 96, byte)
|
||||||
|
input := memory.inb(0, 96)
|
||||||
|
return input
|
||||||
}
|
}
|
||||||
|
|
||||||
|
main := fn(): int {
|
||||||
|
log.info("PS/2 Driver Loaded\0")
|
||||||
|
if send_byte(238) == 238 {
|
||||||
|
log.info("PS/2 Keyboard Echoed\0")
|
||||||
|
}
|
||||||
|
if send_byte(244) == 250 {
|
||||||
|
log.info("Enabled scanning\0")
|
||||||
|
}
|
||||||
|
buf := buffer.create()
|
||||||
|
ptr := memory.request_page(1)
|
||||||
|
prev_input := 250
|
||||||
|
loop {
|
||||||
|
input := memory.inb(0, 96)
|
||||||
|
if input == prev_input {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
prev_input = input
|
||||||
|
keycode_str := string.display_int(input, ptr)
|
||||||
|
log.info(string.display_int(buf))
|
||||||
|
buffer.send_message(buf, keycode_str, string.length(keycode_str))
|
||||||
|
}
|
||||||
|
return 0
|
||||||
|
}
|
|
@ -22,6 +22,8 @@ resolution = "1024x768x24"
|
||||||
[boot.limine.ableos.modules.a_serial_driver]
|
[boot.limine.ableos.modules.a_serial_driver]
|
||||||
path = "boot:///a_serial_driver.hbf"
|
path = "boot:///a_serial_driver.hbf"
|
||||||
|
|
||||||
|
[boot.limine.ableos.modules.ps2_driver]
|
||||||
|
path = "boot:///ps2_driver.hbf"
|
||||||
|
|
||||||
[boot.limine.ableos.modules.diskio_driver]
|
[boot.limine.ableos.modules.diskio_driver]
|
||||||
path = "boot:///diskio_driver.hbf"
|
path = "boot:///diskio_driver.hbf"
|
||||||
|
|
Loading…
Reference in a new issue