Skip to content

Instantly share code, notes, and snippets.

@kokoye2007
Last active August 13, 2025 13:50
Show Gist options
  • Select an option

  • Save kokoye2007/4274af0679c03f98c628e39f5df26e7e to your computer and use it in GitHub Desktop.

Select an option

Save kokoye2007/4274af0679c03f98c628e39f5df26e7e to your computer and use it in GitHub Desktop.
abcd-ukelele.keylayout

ABCD Alphabetical Keyboard - Installation Guide

A fun demonstration keyboard layout that arranges letters alphabetically instead of QWERTY!

📋 Overview

The ABCD keyboard layout replaces the traditional QWERTY arrangement with a simple alphabetical order:

  • Top Row: A B C D E F G H I J
  • Middle Row: K L M N O P Q R S
  • Bottom Row: T U V W X Y Z

Physical key positions remain the same, but the output is alphabetical.

🖥️ Platform-Specific Installation

Linux (XKB)

Requirements: X11 system with XKB support

Installation Steps:

  1. Copy the layout file:
sudo cp abcd-xkb-layout /usr/share/X11/xkb/symbols/abcd
  1. Add to XKB rules (optional for GUI selection):
sudo nano /usr/share/X11/xkb/rules/evdev.xml

Add this entry in the <layoutList> section:

<layout>
  <configItem>
    <name>abcd</name>
    <shortDescription>abcd</shortDescription>
    <description>English (ABCD Alphabetical)</description>
    <languageList>
      <iso639Id>eng</iso639Id>
    </languageList>
  </configItem>
</layout>
  1. Activate the layout:
# Temporary activation
setxkbmap -layout abcd

# Or add as secondary layout
setxkbmap -layout us,abcd -option grp:alt_shift_toggle

Removal:

# Return to US layout
setxkbmap -layout us

Windows (MSKLC)

Requirements: Microsoft Keyboard Layout Creator (MSKLC)

Installation Steps:

  1. Download MSKLC from Microsoft (if not already installed)

  2. Open the .klc file:

    • Launch MSKLC
    • File → Load Source File
    • Select abcd-msklc.klc
  3. Build and Install:

    • Project → Build DLL and Setup Package
    • Run the generated installer as Administrator
    • Restart your computer
  4. Activate the layout:

    • Windows Settings → Time & Language → Language & Region
    • Click your language → Language Options
    • Add keyboard → ABCD Alphabetical Keyboard

Removal:

  • Same path as activation, but remove the keyboard instead

macOS (Ukelele)

Requirements: macOS with Ukelele app

Installation Steps:

  1. Install the layout file:
# For current user only
cp abcd-ukelele.keylayout ~/Library/Keyboard\ Layouts/

# For all users (requires admin)
sudo cp abcd-ukelele.keylayout /Library/Keyboard\ Layouts/
  1. Restart and Activate:

    • Restart your Mac
    • System Preferences → Keyboard → Input Sources
    • Click "+" → English → ABCD Alphabetical
    • Add it to your input sources
  2. Using the layout:

    • Use Cmd+Space or the input menu to switch
    • Or enable "Show Input menu in menu bar"

Removal:

rm ~/Library/Keyboard\ Layouts/abcd-ukelele.keylayout
# or
sudo rm /Library/Keyboard\ Layouts/abcd-ukelele.keylayout

KeyMagic (Cross-Platform)

Requirements: KeyMagic software installed

Installation Steps:

  1. Copy the rule file:

    • Place abcd-keymagic.km2 in KeyMagic rules directory
    • Windows: C:\Program Files\KeyMagic\Rules\
    • Linux: ~/.keymagic/ or /usr/share/keymagic/
  2. Activate in KeyMagic:

    • Open KeyMagic
    • Right-click system tray icon
    • Select "ABCD Alphabetical Layout"

Benefits of KeyMagic version:

  • Works across all platforms
  • Easy switching between layouts
  • No system-level installation required

🎯 Usage Tips

Learning the Layout

Physical Key → Output Mapping:

QWERTY row: Q W E R T Y U I O P
ABCD row:   A B C D E F G H I J

QWERTY row: A S D F G H J K L
ABCD row:   K L M N O P Q R S

QWERTY row: Z X C V B N M
ABCD row:   T U V W X Y Z

Practice Words

Start with simple alphabetical words:

  • abc (type qwe)
  • def (type rty)
  • hello (type iruuy)
  • world (type vyeur)

Switching Back

Keep your regular layout easily accessible:

  • Linux: Alt+Shift (if configured) or setxkbmap -layout us
  • Windows: Win+Space or language bar
  • macOS: Cmd+Space or input menu
  • KeyMagic: Right-click tray icon

🧪 Testing Your Installation

Quick Test

Type these on your QWERTY physical keys:

  • qwertyuiop → should output: abcdefghij
  • asdfghjkl → should output: klmnopqrs
  • zxcvbnm → should output: tuvwxyz

Full Alphabet Test

Physical keys: qwertyuiopasdfghjklzxcvbnm
Expected output: abcdefghijklmnopqrstuvwxyz


🔧 Troubleshooting

Common Issues

Layout not appearing in settings:

  • Restart after installation
  • Check file permissions
  • Verify correct file paths

Keys not working correctly:

  • Test in a text editor
  • Check if other keyboard software is interfering
  • Restart the application

Cannot switch back to normal layout:

  • Keep Task Manager handy (Windows)
  • Remember terminal commands (Linux)
  • Use System Preferences (macOS)

Reset to Normal

If you get stuck in ABCD layout:

Linux:

setxkbmap -layout us

Windows:

  • Win+R → osk → use on-screen keyboard
  • Or Alt+Tab to language settings

macOS:

  • System Preferences → Keyboard → Input Sources
  • Remove ABCD layout

🎮 Fun Challenges

Speed Tests

  • Try typing the alphabet: abcdefghijklmnopqrstuvwxyz
  • Common words in ABCD layout
  • Compare your QWERTY vs ABCD speed

Educational Use

  • Teaching alphabet order
  • Keyboard familiarization
  • Demonstrating layout concepts

Programming Practice

  • Variable names are easier: apple, beta, code
  • But harder for common code: def, for, while

📚 Technical Notes

Character Mapping

  • Only letter positions change
  • Numbers (0-9) unchanged
  • Punctuation unchanged
  • Special characters unchanged
  • Shift behavior preserved

Compatibility

  • Works with all applications
  • No Unicode issues
  • Same as any other keyboard layout
  • Can coexist with other layouts

Performance

  • No performance impact
  • Same speed as regular keyboards
  • May feel slower due to unfamiliarity

🤝 Contributing

This is a demonstration project! Feel free to:

  • Modify the layouts
  • Add more languages
  • Create variations (numeric, symbols, etc.)
  • Share with educational projects

📄 License

Free to use, modify, and distribute for educational and demonstration purposes.


Have fun exploring this alphabetical alternative to QWERTY! 🎉

KBD abcd "ABCD Alphabetical Keyboard"
COPYRIGHT "(c) 2025 ABCD Demo"
COMPANY "Demo Keyboard Project"
LOCALENAME "en-US"
LOCALEID "00000409"
VERSION 1.0
SHIFTSTATE
0 //Column 4
1 //Column 5 : Shft
2 //Column 6 : Ctrl
6 //Column 7 : Ctrl Alt
7 //Column 8 : Shft Ctrl Alt
LAYOUT ;an extra '@' at the end is a dead key
//SC VK_ Cap 0 1 2 6 7
//-- ---- ---- ---- ---- ---- ---- ----
02 1 0 1 ! -1 -1 -1 // DIGIT ONE, EXCLAMATION MARK, <none>, <none>, <none>
03 2 0 2 @ -1 -1 -1 // DIGIT TWO, COMMERCIAL AT, <none>, <none>, <none>
04 3 0 3 # -1 -1 -1 // DIGIT THREE, NUMBER SIGN, <none>, <none>, <none>
05 4 0 4 $ -1 -1 -1 // DIGIT FOUR, DOLLAR SIGN, <none>, <none>, <none>
06 5 0 5 % -1 -1 -1 // DIGIT FIVE, PERCENT SIGN, <none>, <none>, <none>
07 6 0 6 ^ -1 -1 -1 // DIGIT SIX, CIRCUMFLEX ACCENT, <none>, <none>, <none>
08 7 0 7 & -1 -1 -1 // DIGIT SEVEN, AMPERSAND, <none>, <none>, <none>
09 8 0 8 * -1 -1 -1 // DIGIT EIGHT, ASTERISK, <none>, <none>, <none>
0a 9 0 9 ( -1 -1 -1 // DIGIT NINE, LEFT PARENTHESIS, <none>, <none>, <none>
0b 0 0 0 ) -1 -1 -1 // DIGIT ZERO, RIGHT PARENTHESIS, <none>, <none>, <none>
0c OEM_MINUS 0 - _ -1 -1 -1 // HYPHEN-MINUS, LOW LINE, <none>, <none>, <none>
0d OEM_PLUS 0 = + -1 -1 -1 // EQUALS SIGN, PLUS SIGN, <none>, <none>, <none>
10 A 1 a A -1 -1 -1 // LATIN SMALL LETTER A, LATIN CAPITAL LETTER A, <none>, <none>, <none>
11 B 1 b B -1 -1 -1 // LATIN SMALL LETTER B, LATIN CAPITAL LETTER B, <none>, <none>, <none>
12 C 1 c C -1 -1 -1 // LATIN SMALL LETTER C, LATIN CAPITAL LETTER C, <none>, <none>, <none>
13 D 1 d D -1 -1 -1 // LATIN SMALL LETTER D, LATIN CAPITAL LETTER D, <none>, <none>, <none>
14 E 1 e E -1 -1 -1 // LATIN SMALL LETTER E, LATIN CAPITAL LETTER E, <none>, <none>, <none>
15 F 1 f F -1 -1 -1 // LATIN SMALL LETTER F, LATIN CAPITAL LETTER F, <none>, <none>, <none>
16 G 1 g G -1 -1 -1 // LATIN SMALL LETTER G, LATIN CAPITAL LETTER G, <none>, <none>, <none>
17 H 1 h H -1 -1 -1 // LATIN SMALL LETTER H, LATIN CAPITAL LETTER H, <none>, <none>, <none>
18 I 1 i I -1 -1 -1 // LATIN SMALL LETTER I, LATIN CAPITAL LETTER I, <none>, <none>, <none>
19 J 1 j J -1 -1 -1 // LATIN SMALL LETTER J, LATIN CAPITAL LETTER J, <none>, <none>, <none>
1a OEM_4 0 [ { -1 -1 -1 // LEFT SQUARE BRACKET, LEFT CURLY BRACKET, <none>, <none>, <none>
1b OEM_6 0 ] } -1 -1 -1 // RIGHT SQUARE BRACKET, RIGHT CURLY BRACKET, <none>, <none>, <none>
1e K 1 k K -1 -1 -1 // LATIN SMALL LETTER K, LATIN CAPITAL LETTER K, <none>, <none>, <none>
1f L 1 l L -1 -1 -1 // LATIN SMALL LETTER L, LATIN CAPITAL LETTER L, <none>, <none>, <none>
20 M 1 m M -1 -1 -1 // LATIN SMALL LETTER M, LATIN CAPITAL LETTER M, <none>, <none>, <none>
21 N 1 n N -1 -1 -1 // LATIN SMALL LETTER N, LATIN CAPITAL LETTER N, <none>, <none>, <none>
22 O 1 o O -1 -1 -1 // LATIN SMALL LETTER O, LATIN CAPITAL LETTER O, <none>, <none>, <none>
23 P 1 p P -1 -1 -1 // LATIN SMALL LETTER P, LATIN CAPITAL LETTER P, <none>, <none>, <none>
24 Q 1 q Q -1 -1 -1 // LATIN SMALL LETTER Q, LATIN CAPITAL LETTER Q, <none>, <none>, <none>
25 R 1 r R -1 -1 -1 // LATIN SMALL LETTER R, LATIN CAPITAL LETTER R, <none>, <none>, <none>
26 S 1 s S -1 -1 -1 // LATIN SMALL LETTER S, LATIN CAPITAL LETTER S, <none>, <none>, <none>
27 OEM_1 0 ; : -1 -1 -1 // SEMICOLON, COLON, <none>, <none>, <none>
28 OEM_7 0 ' " -1 -1 -1 // APOSTROPHE, QUOTATION MARK, <none>, <none>, <none>
29 OEM_3 0 ` ~ -1 -1 -1 // GRAVE ACCENT, TILDE, <none>, <none>, <none>
2b OEM_5 0 \ | -1 -1 -1 // REVERSE SOLIDUS, VERTICAL LINE, <none>, <none>, <none>
2c T 1 t T -1 -1 -1 // LATIN SMALL LETTER T, LATIN CAPITAL LETTER T, <none>, <none>, <none>
2d U 1 u U -1 -1 -1 // LATIN SMALL LETTER U, LATIN CAPITAL LETTER U, <none>, <none>, <none>
2e V 1 v V -1 -1 -1 // LATIN SMALL LETTER V, LATIN CAPITAL LETTER V, <none>, <none>, <none>
2f W 1 w W -1 -1 -1 // LATIN SMALL LETTER W, LATIN CAPITAL LETTER W, <none>, <none>, <none>
30 X 1 x X -1 -1 -1 // LATIN SMALL LETTER X, LATIN CAPITAL LETTER X, <none>, <none>, <none>
31 Y 1 y Y -1 -1 -1 // LATIN SMALL LETTER Y, LATIN CAPITAL LETTER Y, <none>, <none>, <none>
32 Z 1 z Z -1 -1 -1 // LATIN SMALL LETTER Z, LATIN CAPITAL LETTER Z, <none>, <none>, <none>
33 OEM_COMMA 0 , < -1 -1 -1 // COMMA, LESS-THAN SIGN, <none>, <none>, <none>
34 OEM_PERIOD 0 . > -1 -1 -1 // FULL STOP, GREATER-THAN SIGN, <none>, <none>, <none>
35 OEM_2 0 / ? -1 -1 -1 // SOLIDUS, QUESTION MARK, <none>, <none>, <none>
39 SPACE 0 0020 0020 0020 -1 -1 // SPACE, SPACE, SPACE, <none>, <none>
53 DECIMAL 0 . . -1 -1 -1 // FULL STOP, FULL STOP, , <none>, <none>
KEYNAME
01 Esc
0e Backspace
0f Tab
1c Enter
1d Ctrl
2a Shift
36 "Right Shift"
37 "Num *"
38 Alt
39 Space
3a "Caps Lock"
3b F1
3c F2
3d F3
3e F4
3f F5
40 F6
41 F7
42 F8
43 F9
44 F10
45 Pause
46 "Scroll Lock"
47 "Num 7"
48 "Num 8"
49 "Num 9"
4a "Num -"
4b "Num 4"
4c "Num 5"
4d "Num 6"
4e "Num +"
4f "Num 1"
50 "Num 2"
51 "Num 3"
52 "Num 0"
53 "Num Del"
54 "Sys Req"
57 F11
58 F12
7c F13
7d F14
7e F15
7f F16
80 F17
81 F18
82 F19
83 F20
84 F21
85 F22
86 F23
87 F24
KEYNAME_EXT
1c "Num Enter"
1d "Right Ctrl"
35 "Num /"
37 "Prnt Scrn"
38 "Right Alt"
45 "Num Lock"
46 Break
47 Home
48 Up
49 "Page Up"
4b Left
4d Right
4f End
50 Down
51 "Page Down"
52 Insert
53 Delete
54 <00>
56 Help
5b "Left Windows"
5c "Right Windows"
5d Application
DESCRIPTIONS
0409 ABCD Alphabetical Keyboard - English (United States)
LANGUAGENAMES
0409 English (United States)
ENDKBD
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE keyboard SYSTEM "file://localhost/System/Library/DTDs/KeyboardLayout.dtd">
<!--Created by Ukelele version 3.5.2 on 2025-08-13 at 16:30-->
<!--Last edited by Ukelele version 3.5.2 on 2025-08-13 at 16:30-->
<keyboard group="126" id="15000" name="ABCD Alphabetical" maxout="1">
<layouts>
<layout first="0" last="17" mapSet="ANSI" modifiers="Modifiers"/>
<layout first="18" last="18" mapSet="JIS" modifiers="Modifiers"/>
<layout first="21" last="23" mapSet="JIS" modifiers="Modifiers"/>
<layout first="30" last="30" mapSet="JIS" modifiers="Modifiers"/>
<layout first="33" last="33" mapSet="JIS" modifiers="Modifiers"/>
<layout first="36" last="36" mapSet="JIS" modifiers="Modifiers"/>
<layout first="194" last="194" mapSet="JIS" modifiers="Modifiers"/>
<layout first="197" last="197" mapSet="JIS" modifiers="Modifiers"/>
<layout first="200" last="201" mapSet="JIS" modifiers="Modifiers"/>
<layout first="206" last="207" mapSet="JIS" modifiers="Modifiers"/>
</layouts>
<modifierMap id="Modifiers" defaultIndex="0">
<keyMapSelect mapIndex="0">
<modifier keys=""/>
</keyMapSelect>
<keyMapSelect mapIndex="1">
<modifier keys="shift"/>
</keyMapSelect>
<keyMapSelect mapIndex="2">
<modifier keys="caps"/>
</keyMapSelect>
<keyMapSelect mapIndex="3">
<modifier keys="caps shift"/>
</keyMapSelect>
<keyMapSelect mapIndex="4">
<modifier keys="option"/>
</keyMapSelect>
<keyMapSelect mapIndex="5">
<modifier keys="option shift"/>
</keyMapSelect>
<keyMapSelect mapIndex="6">
<modifier keys="option caps"/>
</keyMapSelect>
<keyMapSelect mapIndex="7">
<modifier keys="option caps shift"/>
</keyMapSelect>
</modifierMap>
<keyMapSet id="ANSI">
<keyMap index="0">
<key code="0" output="a"/>
<key code="1" output="s"/>
<key code="2" output="d"/>
<key code="3" output="f"/>
<key code="4" output="h"/>
<key code="5" output="g"/>
<key code="6" output="z"/>
<key code="7" output="x"/>
<key code="8" output="c"/>
<key code="9" output="v"/>
<key code="10" output="`"/>
<key code="11" output="b"/>
<key code="12" output="q"/>
<key code="13" output="w"/>
<key code="14" output="e"/>
<key code="15" output="r"/>
<key code="16" output="y"/>
<key code="17" output="t"/>
<key code="18" output="1"/>
<key code="19" output="2"/>
<key code="20" output="3"/>
<key code="21" output="4"/>
<key code="22" output="6"/>
<key code="23" output="5"/>
<key code="24" output="="/>
<key code="25" output="9"/>
<key code="26" output="7"/>
<key code="27" output="-"/>
<key code="28" output="8"/>
<key code="29" output="0"/>
<key code="30" output="]"/>
<key code="31" output="o"/>
<key code="32" output="u"/>
<key code="33" output="["/>
<key code="34" output="i"/>
<key code="35" output="p"/>
<key code="36" output="&#x000D;"/>
<key code="37" output="l"/>
<key code="38" output="j"/>
<key code="39" output="'"/>
<key code="40" output="k"/>
<key code="41" output=";"/>
<key code="42" output="\"/>
<key code="43" output=","/>
<key code="44" output="/"/>
<key code="45" output="n"/>
<key code="46" output="m"/>
<key code="47" output="."/>
<key code="48" output="&#x0009;"/>
<key code="49" output=" "/>
<key code="50" output="`"/>
<key code="51" output="&#x0008;"/>
<key code="53" output="&#x001B;"/>
<key code="65" output="."/>
<key code="67" output="*"/>
<key code="69" output="+"/>
<key code="71" output="&#x001B;"/>
<key code="75" output="/"/>
<key code="76" output="&#x0003;"/>
<key code="78" output="-"/>
<key code="81" output="="/>
<key code="82" output="0"/>
<key code="83" output="1"/>
<key code="84" output="2"/>
<key code="85" output="3"/>
<key code="86" output="4"/>
<key code="87" output="5"/>
<key code="88" output="6"/>
<key code="89" output="7"/>
<key code="91" output="8"/>
<key code="92" output="9"/>
<key code="96" output="&#x0010;"/>
<key code="97" output="&#x0010;"/>
<key code="98" output="&#x0010;"/>
<key code="99" output="&#x0010;"/>
<key code="100" output="&#x0010;"/>
<key code="101" output="&#x0010;"/>
<key code="103" output="&#x0010;"/>
<key code="105" output="&#x0010;"/>
<key code="106" output="&#x0010;"/>
<key code="107" output="&#x0010;"/>
<key code="109" output="&#x0010;"/>
<key code="111" output="&#x0010;"/>
<key code="113" output="&#x0010;"/>
<key code="114" output="&#x0005;"/>
<key code="115" output="&#x0001;"/>
<key code="116" output="&#x000B;"/>
<key code="117" output="&#x007F;"/>
<key code="118" output="&#x0010;"/>
<key code="119" output="&#x0004;"/>
<key code="120" output="&#x0010;"/>
<key code="121" output="&#x000C;"/>
<key code="122" output="&#x0010;"/>
<key code="123" output="&#x001C;"/>
<key code="124" output="&#x001D;"/>
<key code="125" output="&#x001F;"/>
<key code="126" output="&#x001E;"/>
</keyMap>
<keyMap index="1">
<!-- ABCD Layout with Shift -->
<key code="0" output="A"/> <!-- a -> A -->
<key code="1" output="S"/> <!-- s -> S -->
<key code="2" output="D"/> <!-- d -> D -->
<key code="3" output="F"/> <!-- f -> F -->
<key code="4" output="H"/> <!-- h -> H -->
<key code="5" output="G"/> <!-- g -> G -->
<key code="6" output="Z"/> <!-- z -> Z -->
<key code="7" output="X"/> <!-- x -> X -->
<key code="8" output="C"/> <!-- c -> C -->
<key code="9" output="V"/> <!-- v -> V -->
<key code="10" output="~"/> <!-- ` -> ~ -->
<key code="11" output="B"/> <!-- b -> B -->
<key code="12" output="Q"/> <!-- q -> Q -->
<key code="13" output="W"/> <!-- w -> W -->
<key code="14" output="E"/> <!-- e -> E -->
<key code="15" output="R"/> <!-- r -> R -->
<key code="16" output="Y"/> <!-- y -> Y -->
<key code="17" output="T"/> <!-- t -> T -->
<key code="18" output="!"/> <!-- 1 -> ! -->
<key code="19" output="@"/> <!-- 2 -> @ -->
<key code="20" output="#"/> <!-- 3 -> # -->
<key code="21" output="$"/> <!-- 4 -> $ -->
<key code="22" output="^"/> <!-- 6 -> ^ -->
<key code="23" output="%"/> <!-- 5 -> % -->
<key code="24" output="+"/> <!-- = -> + -->
<key code="25" output="("/> <!-- 9 -> ( -->
<key code="26" output="&#x0026;"/> <!-- 7 -> & -->
<key code="27" output="_"/> <!-- - -> _ -->
<key code="28" output="*"/> <!-- 8 -> * -->
<key code="29" output=")"/> <!-- 0 -> ) -->
<key code="30" output="}"/> <!-- ] -> } -->
<key code="31" output="O"/> <!-- o -> O -->
<key code="32" output="U"/> <!-- u -> U -->
<key code="33" output="{"/> <!-- [ -> { -->
<key code="34" output="I"/> <!-- i -> I -->
<key code="35" output="P"/> <!-- p -> P -->
<key code="36" output="&#x000D;"/>
<key code="37" output="L"/> <!-- l -> L -->
<key code="38" output="J"/> <!-- j -> J -->
<key code="39" output="&#x0022;"/> <!-- ' -> " -->
<key code="40" output="K"/> <!-- k -> K -->
<key code="41" output=":"/> <!-- ; -> : -->
<key code="42" output="|"/> <!-- \ -> | -->
<key code="43" output="&#x003C;"/> <!-- , -> < -->
<key code="44" output="?"/> <!-- / -> ? -->
<key code="45" output="N"/> <!-- n -> N -->
<key code="46" output="M"/> <!-- m -> M -->
<key code="47" output="&#x003E;"/> <!-- . -> > -->
<key code="48" output="&#x0009;"/>
<key code="49" output=" "/>
<key code="50" output="~"/>
<key code="51" output="&#x0008;"/>
<key code="53" output="&#x001B;"/>
<key code="65" output="."/>
<key code="67" output="*"/>
<key code="69" output="+"/>
<key code="71" output="&#x001B;"/>
<key code="75" output="/"/>
<key code="76" output="&#x0003;"/>
<key code="78" output="-"/>
<key code="81" output="="/>
<key code="82" output="0"/>
<key code="83" output="1"/>
<key code="84" output="2"/>
<key code="85" output="3"/>
<key code="86" output="4"/>
<key code="87" output="5"/>
<key code="88" output="6"/>
<key code="89" output="7"/>
<key code="91" output="8"/>
<key code="92" output="9"/>
<key code="96" output="&#x0010;"/>
<key code="97" output="&#x0010;"/>
<key code="98" output="&#x0010;"/>
<key code="99" output="&#x0010;"/>
<key code="100" output="&#x0010;"/>
<key code="101" output="&#x0010;"/>
<key code="103" output="&#x0010;"/>
<key code="105" output="&#x0010;"/>
<key code="106" output="&#x0010;"/>
<key code="107" output="&#x0010;"/>
<key code="109" output="&#x0010;"/>
<key code="111" output="&#x0010;"/>
<key code="113" output="&#x0010;"/>
<key code="114" output="&#x0005;"/>
<key code="115" output="&#x0001;"/>
<key code="116" output="&#x000B;"/>
<key code="117" output="&#x007F;"/>
<key code="118" output="&#x0010;"/>
<key code="119" output="&#x0004;"/>
<key code="120" output="&#x0010;"/>
<key code="121" output="&#x000C;"/>
<key code="122" output="&#x0010;"/>
<key code="123" output="&#x001C;"/>
<key code="124" output="&#x001D;"/>
<key code="125" output="&#x001F;"/>
<key code="126" output="&#x001E;"/>
</keyMap>
<!-- Additional keyMaps for caps lock and other modifiers would go here -->
<keyMap index="2">
<!-- Caps Lock state - same as keyMap index="1" but for alphabetic keys only -->
<key code="0" output="A"/>
<key code="1" output="S"/>
<key code="2" output="D"/>
<key code="3" output="F"/>
<key code="4" output="H"/>
<key code="5" output="G"/>
<key code="6" output="Z"/>
<key code="7" output="X"/>
<key code="8" output="C"/>
<key code="9" output="V"/>
<key code="11" output="B"/>
<key code="12" output="Q"/>
<key code="13" output="W"/>
<key code="14" output="E"/>
<key code="15" output="R"/>
<key code="16" output="Y"/>
<key code="17" output="T"/>
<key code="31" output="O"/>
<key code="32" output="U"/>
<key code="34" output="I"/>
<key code="35" output="P"/>
<key code="37" output="L"/>
<key code="38" output="J"/>
<key code="40" output="K"/>
<key code="45" output="N"/>
<key code="46" output="M"/>
<!-- Non-alphabetic keys remain the same as normal state -->
<key code="10" output="`"/>
<key code="18" output="1"/>
<key code="19" output="2"/>
<key code="20" output="3"/>
<key code="21" output="4"/>
<key code="22" output="6"/>
<key code="23" output="5"/>
<key code="24" output="="/>
<key code="25" output="9"/>
<key code="26" output="7"/>
<key code="27" output="-"/>
<key code="28" output="8"/>
<key code="29" output="0"/>
<key code="30" output="]"/>
<key code="33" output="["/>
<key code="36" output="&#x000D;"/>
<key code="39" output="'"/>
<key code="41" output=";"/>
<key code="42" output="\"/>
<key code="43" output=","/>
<key code="44" output="/"/>
<key code="47" output="."/>
<key code="48" output="&#x0009;"/>
<key code="49" output=" "/>
<key code="50" output="`"/>
<key code="51" output="&#x0008;"/>
<key code="53" output="&#x001B;"/>
</keyMap>
<!-- Additional keyMaps would be defined here for other modifier combinations -->
</keyMapSet>
</keyboard>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment