dvorak support for freaks
This commit is contained in:
parent
0ee0cd2ddd
commit
c64f8d4de2
4 changed files with 62 additions and 5 deletions
|
|
@ -32,11 +32,13 @@ codegen-units = 1
|
|||
cc = "1.0"
|
||||
|
||||
[features]
|
||||
default = []
|
||||
default = ["keyboard_en_us"]
|
||||
debug_messages = []
|
||||
arch_virt = ["dev_virtio", "dev_framebuffer", "fs_fat32", "liblbos/arch_riscv32", "ddi/arch_riscv32"]
|
||||
arch_ofw = []
|
||||
arch_ppc32 = ["compiler_builtins", "arch_ofw", "fs_fat32"]
|
||||
dev_virtio = []
|
||||
dev_framebuffer = []
|
||||
keyboard_en_us = []
|
||||
keyboard_dvorak = []
|
||||
fs_fat32 = []
|
||||
|
|
@ -4,9 +4,6 @@ use crate::trafficcontrol::TrafficControl;
|
|||
pub const FRAMEBUFFER_WIDTH: usize = 320;
|
||||
pub const FRAMEBUFFER_HEIGHT: usize = 240;
|
||||
|
||||
pub const LINEBUFFER_BLOCKS: usize = 3;
|
||||
pub const LINEBUFFER_HEIGHT: usize = 1;
|
||||
|
||||
// NOTE:
|
||||
// FRAMEBUFFER_ADDR should always be 0 if no framebuffer exists
|
||||
// if FRAMEBUFFER_ADDR is NOT 0, then FRAMEBUFFER_BPP should also be NOT 0
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
use crate::arch::serial_port;
|
||||
use crate::dev::{FRAMEBUFFER_HEIGHT, FRAMEBUFFER_WIDTH, LINEBUFFER_BLOCKS};
|
||||
use crate::dev::{FRAMEBUFFER_HEIGHT, FRAMEBUFFER_WIDTH};
|
||||
use crate::dev::virtio::{heap_allocate_type, Descriptor, VirtQueue, VIRTIO_DESC_F_NEXT, VIRTIO_DESC_F_WRITE, VIRTIO_MMIO_GUEST_FEATURES, VIRTIO_MMIO_GUEST_PAGE_SIZE, VIRTIO_MMIO_HOST_FEATURES, VIRTIO_MMIO_QUEUE_NOTIFY, VIRTIO_MMIO_QUEUE_NUM, VIRTIO_MMIO_QUEUE_NUM_MAX, VIRTIO_MMIO_QUEUE_PFN, VIRTIO_MMIO_QUEUE_SEL, VIRTIO_MMIO_STATUS, VIRTIO_MMIO_STATUS_ACKNOWLEDGE, VIRTIO_MMIO_STATUS_DRIVER, VIRTIO_MMIO_STATUS_DRIVER_OK, VIRTIO_MMIO_STATUS_FAILED, VIRTIO_MMIO_STATUS_FEATURES_OK, VIRTIO_QUEUE_SIZE};
|
||||
use crate::strprint::u32_hex;
|
||||
use crate::trafficcontrol::TrafficControl;
|
||||
|
|
|
|||
|
|
@ -322,6 +322,7 @@ pub enum LinuxKeycode {
|
|||
}
|
||||
|
||||
// keys that do not map directly are handled outside of this
|
||||
#[cfg(feature = "keyboard_en_us")]
|
||||
const KEYMAP_ASCII: &[(LinuxKeycode, u8)] = &[
|
||||
(LinuxKeycode::ESC, 0x1B),
|
||||
(LinuxKeycode::Key1, b'1'),
|
||||
|
|
@ -377,3 +378,60 @@ const KEYMAP_ASCII: &[(LinuxKeycode, u8)] = &[
|
|||
(LinuxKeycode::KPAsterisk, b'*'),
|
||||
(LinuxKeycode::Space, b' '),
|
||||
];
|
||||
|
||||
#[cfg(feature = "keyboard_dvorak")]
|
||||
const KEYMAP_ASCII: &[(LinuxKeycode, u8)] = &[
|
||||
(LinuxKeycode::ESC, 0x1B),
|
||||
(LinuxKeycode::Key1, b'1'),
|
||||
(LinuxKeycode::Key2, b'2'),
|
||||
(LinuxKeycode::Key3, b'3'),
|
||||
(LinuxKeycode::Key4, b'4'),
|
||||
(LinuxKeycode::Key5, b'5'),
|
||||
(LinuxKeycode::Key6, b'6'),
|
||||
(LinuxKeycode::Key7, b'7'),
|
||||
(LinuxKeycode::Key8, b'8'),
|
||||
(LinuxKeycode::Key9, b'9'),
|
||||
(LinuxKeycode::Key0, b'0'),
|
||||
(LinuxKeycode::Minus, b'-'),
|
||||
(LinuxKeycode::Equal, b'='),
|
||||
(LinuxKeycode::Backspace, 0x7F),
|
||||
(LinuxKeycode::Tab, 0x9),
|
||||
(LinuxKeycode::Q, b'\''),
|
||||
(LinuxKeycode::W, b','),
|
||||
(LinuxKeycode::E, b'.'),
|
||||
(LinuxKeycode::R, b'p'),
|
||||
(LinuxKeycode::T, b'y'),
|
||||
(LinuxKeycode::Y, b'f'),
|
||||
(LinuxKeycode::U, b'g'),
|
||||
(LinuxKeycode::I, b'c'),
|
||||
(LinuxKeycode::O, b'r'),
|
||||
(LinuxKeycode::P, b'l'),
|
||||
(LinuxKeycode::LeftBracket, b'/'),
|
||||
(LinuxKeycode::RightBracket, b'='),
|
||||
(LinuxKeycode::Enter, b'\r'),
|
||||
(LinuxKeycode::A, b'a'),
|
||||
(LinuxKeycode::S, b'o'),
|
||||
(LinuxKeycode::D, b'e'),
|
||||
(LinuxKeycode::F, b'u'),
|
||||
(LinuxKeycode::G, b'i'),
|
||||
(LinuxKeycode::H, b'd'),
|
||||
(LinuxKeycode::J, b'h'),
|
||||
(LinuxKeycode::K, b't'),
|
||||
(LinuxKeycode::L, b'n'),
|
||||
(LinuxKeycode::Semicolon, b's'),
|
||||
(LinuxKeycode::Apostrophe, b'-'),
|
||||
(LinuxKeycode::Grave, b'`'),
|
||||
(LinuxKeycode::Backslash, b'\\'),
|
||||
(LinuxKeycode::Z, b';'),
|
||||
(LinuxKeycode::X, b'q'),
|
||||
(LinuxKeycode::C, b'j'),
|
||||
(LinuxKeycode::V, b'k'),
|
||||
(LinuxKeycode::B, b'x'),
|
||||
(LinuxKeycode::N, b'b'),
|
||||
(LinuxKeycode::M, b'm'),
|
||||
(LinuxKeycode::Comma, b'w'),
|
||||
(LinuxKeycode::Dot, b'v'),
|
||||
(LinuxKeycode::Slash, b'z'),
|
||||
(LinuxKeycode::KPAsterisk, b'*'),
|
||||
(LinuxKeycode::Space, b' '),
|
||||
];
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue