zap8600 wrote:Does something need to be done before the driver can be run?
Ideally, you should initialize the USB controllers and use ACPI to make sure a PS/2 controller exists. You can still run your PS/2 controller driver without doing those things, and it will work perfectly fine in virtual machines, but it might behave strangely on some hardware.
zap8600 wrote:Should my GDT be loaded from the boot.S file instead?
You can if you want, but you don't need to.
zap8600 wrote:If so, then how do I do that (how do I setting up the GDTR and segments as well)?
Insert some assembly code to load the GDTR and load all of the segment registers before calling your kernel's main function. There's code earlier in this thread you could easily adapt.
zap8600 wrote:How do I enable paging as well?
Create page tables, load CR3, and set CR0.PG.
zap8600 wrote:Should I make my kernel a higher half kernel?
It's a good idea, but it's not required.
zap8600 wrote:If so, then how would I do so?
The easiest choice is to switch to a bootloader that will set up initial page tables and jump to the higher half for you. Or, if you want to stick with GRUB, you can load your actual kernel as a module and then load a small program to set up higher half paging as the "kernel".
zap8600 wrote:Once I start working on the keyboard interrupt, how do I export what the user entered (e.g. for making a scanf function in libk, so that the system calls for libc can get keyboard input)?
You'll need to buffer the data somewhere and come up with a way for applications to get the data from that buffer. I'm not very familiar with how this usually works, so I suggest searching the forums for threads about input handling.