From 7ab949b549a58647fee62643d6341b06fa7725f2 Mon Sep 17 00:00:00 2001 From: rain1 Date: Wed, 12 Sep 2018 19:32:38 +0100 Subject: [PATCH] add a dvorak keyboard layout and the ability to switch between layouts as in https://github.com/davazp/eulex/issues/2#issuecomment-403906567 --- corestage2.fs | 1 + kernel/keyboard.fs | 43 +++++++++++++++++++++++++++++++++++++++---- 2 files changed, 40 insertions(+), 4 deletions(-) diff --git a/corestage2.fs b/corestage2.fs index 9455887..42725c8 100644 --- a/corestage2.fs +++ b/corestage2.fs @@ -125,6 +125,7 @@ variable bcd? enable-interrupts initialize-floppy +QWERTY setxkmap require @user.fs diff --git a/kernel/keyboard.fs b/kernel/keyboard.fs index e4d0f68..f1be687 100644 --- a/kernel/keyboard.fs +++ b/kernel/keyboard.fs @@ -132,7 +132,7 @@ end-enum : end. tblsize 256 swap - zallot ; -CREATE TBLSC +CREATE TBLSC-QWERTY ( ) ( ) 0 c, ESC c, ( ) | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = BACK c, @@ -143,9 +143,9 @@ CREATE TBLSC ( ) ( ) TBLSC-SPECIAL ( ) -TBLSC END. +TBLSC-QWERTY END. -CREATE TBLSC-SHIFT +CREATE TBLSC-QWERTY-SHIFT ( ) ( ) 0 c, ESC c, ( ) | ! | @ | # | $ | % | ^ | & | * | ( | ) | _ | + BACK c, @@ -156,8 +156,43 @@ CREATE TBLSC-SHIFT ( ) ( ) TBLSC-SPECIAL ( ) -TBLSC-SHIFT END. +TBLSC-QWERTY-SHIFT END. +CREATE TBLSC-DVORAK +( ) +( ) 0 c, ESC c, +( ) | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | [ | ] BACK c, +( ) TAB c, | ' | , | . | p | y | f | g | c | r | l | / | = RET c, +( ) CTRL c, | a | o | e | u | i | d | h | t | n | s | - | \ +( ) SHIFT c, | ; | ; | q | j | k | x | b | m | w | v | z SHIFT c, +( ) PRSCR c, ALT c, ______SPACE______ c, CAPSLOCK c, +( ) +( ) TBLSC-SPECIAL +( ) +TBLSC-DVORAK END. + +CREATE TBLSC-DVORAK-SHIFT +( ) +( ) 0 c, ESC c, +( ) | ! | @ | # | $ | % | ^ | & | * | ( | ) | _ | + BACK c, +( ) TAB c, | " | < | > | P | Y | F | G | C | R | L | ? | + RET c, +( ) CTRL c, | A | O | E | U | I | D | H | T | N | S | _ | | +( ) SHIFT c, | : | : | Q | J | K | X | B | M | W | V | Z SHIFT c, +( ) PRSCR c, ALT c, ______SPACE______ c, CAPSLOCK c, +( ) +( ) TBLSC-SPECIAL +( ) +TBLSC-DVORAK-SHIFT END. + +: QWERTY ['] TBLSC-QWERTY ['] TBLSC-QWERTY-SHIFT ; +: DVORAK ['] TBLSC-DVORAK ['] TBLSC-DVORAK-SHIFT ; + +DEFER TBLSC +DEFER TBLSC-SHIFT + +: setxkmap ( tblsc-addr tblsc-shift-addr ) + IS TBLSC-SHIFT + IS TBLSC ; variable alt-level variable ctrl-level