summaryrefslogtreecommitdiff
path: root/Kernel/Devices/KeyboardDevice.cpp
AgeCommit message (Collapse)Author
2020-09-13Kernel: Make copy_to/from_user safe and remove unnecessary checksTom
Since the CPU already does almost all necessary validation steps for us, we don't really need to attempt to do this. Doing it ourselves doesn't really work very reliably, because we'd have to account for other processors modifying virtual memory, and we'd have to account for e.g. pages not being able to be allocated due to insufficient resources. So change the copy_to/from_user (and associated helper functions) to use the new safe_memcpy, which will return whether it succeeded or not. The only manual validation step needed (which the CPU can't perform for us) is making sure the pointers provided by user mode aren't pointing to kernel mappings. To make it easier to read/write from/to either kernel or user mode data add the UserOrKernelBuffer helper class, which will internally either use copy_from/to_user or directly memcpy, or pass the data through directly using a temporary buffer on the stack. Last but not least we need to keep syscall params trivial as we need to copy them from/to user mode using copy_from/to_user.
2020-08-25Kernel: Switch singletons to use new Singleton classTom
MemoryManager cannot use the Singleton class because MemoryManager::initialize is called before the global constructors are run. That caused the Singleton to be re-initialized, causing it to create another MemoryManager instance. Fixes #3226
2020-08-22Revert "Kernel: Switch singletons to use new Singleton class"Andreas Kling
This reverts commit f48feae0b2a300992479abf0b2ded85e45ac6045.
2020-08-22Revert "Kernel: Move Singleton class to AK"Andreas Kling
This reverts commit f0906250a181c831508a45434b9f645ff98f33e4.
2020-08-22Revert "AK: Get rid of make_singleton function"Andreas Kling
This reverts commit 5a98e329d157a2db8379e0c97c6bdc1328027843.
2020-08-22AK: Get rid of make_singleton functionTom
Just default the InitFunction template argument.
2020-08-22Kernel: Move Singleton class to AKTom
2020-08-21Kernel: Switch singletons to use new Singleton classTom
Fixes #3226
2020-08-06Kernel+LibKeyboard: Store the keymap name when setting system keymapValtteri Koskivuori
This way we can query the kernel to see which keymap is currently in use.
2020-08-04Kernel: Make File::write() and File::read() return KResultOr<size_t>Andreas Kling
Instead of returning a ssize_t where negative values mean error, we now return KResultOr<size_t> and use the error state to report errors exclusively.
2020-07-17Kernel: Make all 6 VirtualConsoles available via shortcutFlorian Angermeier
Add all 6 shortcuts even if the switch between VirtualConsoles is currently not available in the graphical console. Also make the case statement more compact.
2020-06-25Kernel: Harvest randomness from various driversPeter Elliott
Random now gets entropy from the following drivers: - KeyboardDevice - PATAChannel - PS2MouseDevice - E1000NetworkAdapter - RTL8139NetworkAdapter Of these devices, PS2MouseDevice and PATAChannel provide the vast majority of the entropy.
2020-06-16Kernel: Replace char and u8 data types to u32 for code pointHüseyin ASLITÜRK
Remove character property from event and add code_point property.
2020-06-13Kernel: KeyboardDevice, remove char mapping logicHüseyin ASLITÜRK
Remove char mapping logic and constant character map.
2020-06-03Kernel: Add scancode value to KeyEventHüseyin ASLITÜRK
2020-05-16Kernel: Absorb LibBareMetal back into the kernelAndreas Kling
This was supposed to be the foundation for some kind of pre-kernel environment, but nobody is working on it right now, so let's move everything back into the kernel and remove all the confusion.
2020-04-10Kernel: Add explicit offset parameter to File::read etcConrad Pankoff
2020-03-23AK: Reduce header dependency graph of String.hAndreas Kling
String.h no longer pulls in StringView.h. We do this by moving a bunch of String functions out-of-line.
2020-03-19Kernel: Use a const reference to RegisterState in IRQ handlingLiav A
2020-02-27KeyboardDevice: Use dbg() instead of dbgprintf()Liav A
2020-02-24Kernel: Update system components to use the new IRQHandler classLiav A
2020-02-16Kernel: Add forward declaration headerAndreas Kling
2020-02-16Kernel: Move all code into the Kernel namespaceAndreas Kling
2020-02-09Kernel: Apply changes to use LibBareMetal definitionsLiav A
2020-01-22Revert "Kernel: Replace IRQHandler with the new InterruptHandler class"Andreas Kling
This reverts commit 6c72736b26a81a8f03d8dd47989bfffe26bb1c95. I am unable to boot on my home machine with this change in the tree.
2020-01-22Kernel: Replace IRQHandler with the new InterruptHandler classLiav A
System components that need an IRQ handling are now inheriting the InterruptHandler class. In addition to that, the initialization process of PATAChannel was changed to fit the changes. PATAChannel, E1000NetworkAdapter and RTL8139NetworkAdapter are now inheriting from PCI::Device instead of InterruptHandler directly.
2020-01-22Kernel: Run clang-format on KeyboardDevice.cppLiav A
2020-01-18Meta: Add license header to source filesAndreas Kling
As suggested by Joshua, this commit adds the 2-clause BSD license as a comment block to the top of every source file. For the first pass, I've just added myself for simplicity. I encourage everyone to add themselves as copyright holders of any file they've added or modified in some significant way. If I've added myself in error somewhere, feel free to replace it with the appropriate copyright holder instead. Going forward, all new source files should include a license header.
2020-01-09Kernel: Make some static keyboard data constAndreas Kling
This moves it to the kernel's .rodata section which we write protect in MemoryManager initialization.
2019-12-31Kernel: Implement AltGr key supportTibor Nagy
2019-11-25Kernel: Implement the setkeymap() syscall.Hüseyin ASLITÜRK
2019-11-04Kernel: Make File's can_read/can_write take a const FileDescription&Andreas Kling
Asking a File if we could possibly read or write it will never mutate the asking FileDescription&, so it should be const.
2019-10-17KeyboardDevice: Rename 0xe0 flag for clarity.Nufflee
2019-10-17KeyboardDevice: Support whole numpad and Num Lock.Nufflee
We now support all numpad keys and the Num Lock key.
2019-10-17KeyboardDevice: Implement Caps Lock handling.Nufflee
2019-08-12Kernel: Don't forward hijacked keypresses in keyboard driverConrad Pankoff
2019-08-10Kernel: Hack the default keymap to support UK pipe/backslashAndreas Kling
Since this key number doesn't appear to collide with anything on the US keymap, I was thinking we could get away with supporting a hybrid US/UK keymap. :^)
2019-07-09Kernel: Move PIC.cpp into Arch/i386/Andreas Kling
2019-07-03AK: Rename the common integer typedefs to make it obvious what they are.Andreas Kling
These types can be picked up by including <AK/Types.h>: * u8, u16, u32, u64 (unsigned) * i8, i16, i32, i64 (signed)
2019-06-07Kernel: Move i386.{cpp,h} => Arch/i386/CPU.{cpp,h}Andreas Kling
There's a ton of work that would need to be done before we could spin up on another architecture, but let's at least try to separate things out a bit.
2019-06-07Kernel: Run clang-format on everything.Andreas Kling
2019-06-07Kernel: Rename FileDescriptor to FileDescription.Andreas Kling
After reading a bunch of POSIX specs, I've learned that a file descriptor is the number that refers to a file description, not the description itself. So this patch renames FileDescriptor to FileDescription, and Process now has FileDescription* file_description(int fd).
2019-04-29Kernel: Have File virtuals take a FileDescriptor& rather than a Process&.Andreas Kling
This will allow us to implement different behaviors depending on the role of the descriptor a File is being accessed through.
2019-04-23Kernel: Make the right shift key work.Andreas Kling
I never realized the right shift key wasn't hooked up since my left pinky always hovers over the left shift key, ready to rock.
2019-04-06Kernel: Get rid of Kernel/types.h, separate LinearAddress/PhysicalAddress.Andreas Kling
2019-04-03Kernel: Move devices into Kernel/Devices/.Andreas Kling