# keyboard_US.toml # Keyboard translation file for UK keyboard layouts for the MartyPC emulator # Why a translation file? # ---------------------------------------------------------------------------- # Certain scancodes have changed since the 1980's, as the meaning of certain # keys was changed, keys were split out to new keys, or moved around on the # keyboard. This translation file will attempt to remap the modern scancodes # to compatible ones for the given emulated keyboard type. In some cases, # equivalents to modern keys may not exist, but you can map them by scancode # to a key of your choice. # Keycodes are logical names for keys on the keyboard. # Keycodes use the W3C naming convention. # # See https://w3c.github.io/uievents-code/#code-value-tables for descriptions # of these keys. # Backquote, # Backslash, # BracketLeft, # BracketRight, # Comma, # Digit0, # Digit1, # Digit2, # Digit3, # Digit4, # Digit5, # Digit6, # Digit7, # Digit8, # Digit9, # Equal, # IntlBackslash, # IntlRo, # IntlYen, # KeyA, # KeyB, # KeyC, # KeyD, # KeyE, # KeyF, # KeyG, # KeyH, # KeyI, # KeyJ, # KeyK, # KeyL, # KeyM, # KeyN, # KeyO, # KeyP, # KeyQ, # KeyR, # KeyS, # KeyT, # KeyU, # KeyV, # KeyW, # KeyX, # KeyY, # KeyZ, # Minus, # Period, # Quote, # Semicolon, # Slash, # AltLeft, # AltRight, # Backspace, # CapsLock, # ContextMenu, # ControlLeft, # ControlRight, # Enter, # MetaLeft, # MetaRight, # ShiftLeft, # ShiftRight, # Space, # Tab, # Convert, # KanaMode, # Lang1, # Lang2, # Lang3, # Lang4, # Lang5, # NonConvert, # Delete, # End, # Help, # Home, # Insert, # PageDown, # PageUp, # ArrowDown, # ArrowLeft, # ArrowRight, # ArrowUp, # NumLock, # Numpad0, # Numpad1, # Numpad2, # Numpad3, # Numpad4, # Numpad5, # Numpad6, # Numpad7, # Numpad8, # Numpad9, # NumpadAdd, # NumpadBackspace, # NumpadClear, # NumpadClearEntry, # NumpadComma, # NumpadDecimal, # NumpadDivide, # NumpadEnter, # NumpadEqual, # NumpadHash, # NumpadMemoryAdd, # NumpadMemoryClear, # NumpadMemoryRecall, # NumpadMemoryStore, # NumpadMemorySubtract, # NumpadMultiply, # NumpadParenLeft, # NumpadParenRight, # NumpadStar, # NumpadSubtract, # Escape, # Fn, # FnLock, # PrintScreen, # ScrollLock, # Pause, # BrowserBack, # BrowserFavorites, # BrowserForward, # BrowserHome, # BrowserRefresh, # BrowserSearch, # BrowserStop, # Eject, # LaunchApp1, # LaunchApp2, # LaunchMail, # MediaPlayPause, # MediaSelect, # MediaStop, # MediaTrackNext, # MediaTrackPrevious, # Power, # Sleep, # AudioVolumeDown, # AudioVolumeMute, # AudioVolumeUp, # WakeUp, # Meta, # Hyper, # Turbo, # Abort, # Resume, # Suspend, # Again, # Copy, # Cut, # Find, # Open, # Paste, # Props, # Select, # Undo, # Hiragana, # Katakana, # F1, # F2, # F3, # F4, # F5, # F6, # F7, # F8, # F9, # F10, # F11, # F12, # F13, # F14, # F15, # F16, # F17, # F18, # F19, # F20, # F21, # F22, # F23, # F24, # F25, # F26, # F27, # F28, # F29, # F30, # F31, # F32, # F33, # F34, # F35 # You can override the mapping of KeyCodes to scancodes with 'keycode_mappings' # The format of keyboard_mappings is an array of mapping entries. # # Each mapping entry is an a dictionary with the following properties: # # keycode = The keycode name from the list given above. # # modifiers = A list of modifier keys to match. Valid values for modifiers # include "control", "alt", "shift" and "super" # On Mac, the command key is equivalent to "control." # # If a key is to be always translated, this value should be # "any". # # If a key is to be translated when no modifiers are pressed, # this value should be "none" # # Alternately, provide a list of modifiers. All modifiers in # the list must be present for translation. # # key_macro = Convert this keycode into a sequence of multiple keycodes. # Each keycode will be delivered after a specific delay # (typically one frame) # # scancodes = The resulting scancodes to translate the specified key + # matching modifiers into. A single keycode can map to # multiple scancodes, which will be sent in order. # # 'key_macro' and 'scancodes' are mutually exclusive. Use one and leave the # other empty. # # Different keyboard models can produce multi-byte scancodes, therefore, each # keycode should be mapped to an array. # ----------------------------------------------------------------------------- # Model F - the Original 83-key keyboard shipped with the IBM PC and XT. # ----------------------------------------------------------------------------- # The Model F keyboard has single-byte scancodes, so scancodes defined here # should only have one element. [keyboard.modelf] keycode_mappings = [ { keycode = "IntlBackslash", modifiers = ["any"], key_macro = [], macro_translate = false, scancodes = [0x2B] }, { keycode = "Quote", modifiers = ["any"], key_macro = [], macro_translate = false, scancodes = [0x28] }, { keycode = "Backslash", modifiers = ["any"], key_macro = [], macro_translate = false, scancodes = [0x29] }, # Backquote ` didn't exist on the UK Model F keyboard, so we'll use an alt-code. { keycode = "Backquote", modifiers = ["none"], key_macro = ["+AltLeft", "+Numpad9", "+Numpad6", "-AltLeft", "-Numpad9", "-Numpad6"], macro_translate = false, scancodes = [] }, # Shift-backquote: ¬ (NOT symbol) { keycode = "Backquote", modifiers = ["shift"], key_macro = ["+AltLeft", "+Numpad1", "+Numpad7", "+Numpad0", "-AltLeft", "-Numpad1", "-Numpad7", "-Numpad0"], macro_translate = false, scancodes = [] }, # Alt-Gr keys did not exist on Model F. If we want them, we need to implement them with alt-codes. # There appears to be a bug with AltGr-A. the KeyA keydown event does not fire :( #{ keycode = "KeyA", modifiers = ["control", "alt"], key_macro = ["+AltLeft", "+Numpad1", "+Numpad6", "+Numpad0", "-AltLeft", "-Numpad1", "-Numpad6", "-Numpad0"], macro_translate = false, scancodes = [] }, ] # ----------------------------------------------------------------------------- # Tandy 1000 - the Original 95-key keyboard shipped with the Tandy 1000 # ----------------------------------------------------------------------------- # The Tandy 1000 keyboard has single-byte scancodes, so scancodes defined here # should only have one element. [keyboard.tandy1000] keycode_mappings = [ { keycode = "IntlBackslash", modifiers = ["any"], key_macro = [], macro_translate = false, scancodes = [0x2B] }, { keycode = "Quote", modifiers = ["any"], key_macro = [], macro_translate = false, scancodes = [0x28] }, { keycode = "Backslash", modifiers = ["any"], key_macro = [], macro_translate = false, scancodes = [0x29] }, # Backquote ` didn't exist on the UK Model F keyboard, so we'll use an alt-code. { keycode = "Backquote", modifiers = ["none"], key_macro = ["+AltLeft", "+Numpad9", "+Numpad6", "-AltLeft", "-Numpad9", "-Numpad6"], macro_translate = false, scancodes = [] }, # Shift-backquote: ¬ (NOT symbol) { keycode = "Backquote", modifiers = ["shift"], key_macro = ["+AltLeft", "+Numpad1", "+Numpad7", "+Numpad0", "-AltLeft", "-Numpad1", "-Numpad7", "-Numpad0"], macro_translate = false, scancodes = [] }, # Alt-Gr keys did not exist on Model F. If we want them, we need to implement them with alt-codes. # There appears to be a bug with AltGr-A. the KeyA keydown event does not fire :( #{ keycode = "KeyA", modifiers = ["control", "alt"], key_macro = ["+AltLeft", "+Numpad1", "+Numpad6", "+Numpad0", "-AltLeft", "-Numpad1", "-Numpad6", "-Numpad0"], macro_translate = false, scancodes = [] }, ]