// // Typer.cpp // Clock Signal // // Created by Thomas Harte on 09/07/2017. // Copyright © 2017 Thomas Harte. All rights reserved. // #include "Typer.hpp" #include "ZX8081.hpp" //Utility::KeySequence *ZX8081::SequenceForCharacter(char character, bool is_zx81) { //#define KEYS(...) {__VA_ARGS__, Utility::EndSequence} //#define SHIFT(...) {KeyShift, __VA_ARGS__, Utility::EndSequence} //#define X {Utility::NotMapped} // static Utility::KeySequence zx81_key_sequences[] = { // /* NUL */ X, /* SOH */ X, // /* STX */ X, /* ETX */ X, // /* EOT */ X, /* ENQ */ X, // /* ACK */ X, /* BEL */ X, // /* BS */ SHIFT(Key0), /* HT */ X, // /* LF */ KEYS(KeyEnter), /* VT */ X, // /* FF */ X, /* CR */ X, // /* SO */ X, /* SI */ X, // /* DLE */ X, /* DC1 */ X, // /* DC2 */ X, /* DC3 */ X, // /* DC4 */ X, /* NAK */ X, // /* SYN */ X, /* ETB */ X, // /* CAN */ X, /* EM */ X, // /* SUB */ X, /* ESC */ X, // /* FS */ X, /* GS */ X, // /* RS */ X, /* US */ X, // /* space */ KEYS(KeySpace), /* ! */ X, // /* " */ SHIFT(KeyP), /* # */ X, // /* $ */ SHIFT(KeyU), /* % */ X, // /* & */ X, /* ' */ X, // /* ( */ SHIFT(KeyI), /* ) */ SHIFT(KeyO), // /* * */ SHIFT(KeyB), /* + */ SHIFT(KeyK), // /* , */ SHIFT(KeyDot), /* - */ SHIFT(KeyJ), // /* . */ KEYS(KeyDot), /* / */ SHIFT(KeyV), // /* 0 */ KEYS(Key0), /* 1 */ KEYS(Key1), // /* 2 */ KEYS(Key2), /* 3 */ KEYS(Key3), // /* 4 */ KEYS(Key4), /* 5 */ KEYS(Key5), // /* 6 */ KEYS(Key6), /* 7 */ KEYS(Key7), // /* 8 */ KEYS(Key8), /* 9 */ KEYS(Key9), // /* : */ SHIFT(KeyZ), /* ; */ SHIFT(KeyX), // /* < */ SHIFT(KeyN), /* = */ SHIFT(KeyL), // /* > */ SHIFT(KeyM), /* ? */ SHIFT(KeyC), // /* @ */ X, /* A */ KEYS(KeyA), // /* B */ KEYS(KeyB), /* C */ KEYS(KeyC), // /* D */ KEYS(KeyD), /* E */ KEYS(KeyE), // /* F */ KEYS(KeyF), /* G */ KEYS(KeyG), // /* H */ KEYS(KeyH), /* I */ KEYS(KeyI), // /* J */ KEYS(KeyJ), /* K */ KEYS(KeyK), // /* L */ KEYS(KeyL), /* M */ KEYS(KeyM), // /* N */ KEYS(KeyN), /* O */ KEYS(KeyO), // /* P */ KEYS(KeyP), /* Q */ KEYS(KeyQ), // /* R */ KEYS(KeyR), /* S */ KEYS(KeyS), // /* T */ KEYS(KeyT), /* U */ KEYS(KeyU), // /* V */ KEYS(KeyV), /* W */ KEYS(KeyW), // /* X */ KEYS(KeyX), /* Y */ KEYS(KeyY), // /* Z */ KEYS(KeyZ), /* [ */ X, // /* \ */ X, /* ] */ X, // /* ^ */ X, /* _ */ X, // /* ` */ X, /* a */ KEYS(KeyA), // /* b */ KEYS(KeyB), /* c */ KEYS(KeyC), // /* d */ KEYS(KeyD), /* e */ KEYS(KeyE), // /* f */ KEYS(KeyF), /* g */ KEYS(KeyG), // /* h */ KEYS(KeyH), /* i */ KEYS(KeyI), // /* j */ KEYS(KeyJ), /* k */ KEYS(KeyK), // /* l */ KEYS(KeyL), /* m */ KEYS(KeyM), // /* n */ KEYS(KeyN), /* o */ KEYS(KeyO), // /* p */ KEYS(KeyP), /* q */ KEYS(KeyQ), // /* r */ KEYS(KeyR), /* s */ KEYS(KeyS), // /* t */ KEYS(KeyT), /* u */ KEYS(KeyU), // /* v */ KEYS(KeyV), /* w */ KEYS(KeyW), // /* x */ KEYS(KeyX), /* y */ KEYS(KeyY), // /* z */ KEYS(KeyZ), /* { */ X, // /* | */ X, /* } */ X, // }; // // static KeySequence zx80_key_sequences[] = { // /* NUL */ X, /* SOH */ X, // /* STX */ X, /* ETX */ X, // /* EOT */ X, /* ENQ */ X, // /* ACK */ X, /* BEL */ X, // /* BS */ SHIFT(Key0), /* HT */ X, // /* LF */ KEYS(KeyEnter), /* VT */ X, // /* FF */ X, /* CR */ X, // /* SO */ X, /* SI */ X, // /* DLE */ X, /* DC1 */ X, // /* DC2 */ X, /* DC3 */ X, // /* DC4 */ X, /* NAK */ X, // /* SYN */ X, /* ETB */ X, // /* CAN */ X, /* EM */ X, // /* SUB */ X, /* ESC */ X, // /* FS */ X, /* GS */ X, // /* RS */ X, /* US */ X, // /* space */ KEYS(KeySpace), /* ! */ X, // /* " */ SHIFT(KeyY), /* # */ X, // /* $ */ SHIFT(KeyU), /* % */ X, // /* & */ X, /* ' */ X, // /* ( */ SHIFT(KeyI), /* ) */ SHIFT(KeyO), // /* * */ SHIFT(KeyP), /* + */ SHIFT(KeyK), // /* , */ SHIFT(KeyDot), /* - */ SHIFT(KeyJ), // /* . */ KEYS(KeyDot), /* / */ SHIFT(KeyV), // /* 0 */ KEYS(Key0), /* 1 */ KEYS(Key1), // /* 2 */ KEYS(Key2), /* 3 */ KEYS(Key3), // /* 4 */ KEYS(Key4), /* 5 */ KEYS(Key5), // /* 6 */ KEYS(Key6), /* 7 */ KEYS(Key7), // /* 8 */ KEYS(Key8), /* 9 */ KEYS(Key9), // /* : */ SHIFT(KeyZ), /* ; */ SHIFT(KeyX), // /* < */ SHIFT(KeyN), /* = */ SHIFT(KeyL), // /* > */ SHIFT(KeyM), /* ? */ SHIFT(KeyC), // /* @ */ X, /* A */ KEYS(KeyA), // /* B */ KEYS(KeyB), /* C */ KEYS(KeyC), // /* D */ KEYS(KeyD), /* E */ KEYS(KeyE), // /* F */ KEYS(KeyF), /* G */ KEYS(KeyG), // /* H */ KEYS(KeyH), /* I */ KEYS(KeyI), // /* J */ KEYS(KeyJ), /* K */ KEYS(KeyK), // /* L */ KEYS(KeyL), /* M */ KEYS(KeyM), // /* N */ KEYS(KeyN), /* O */ KEYS(KeyO), // /* P */ KEYS(KeyP), /* Q */ KEYS(KeyQ), // /* R */ KEYS(KeyR), /* S */ KEYS(KeyS), // /* T */ KEYS(KeyT), /* U */ KEYS(KeyU), // /* V */ KEYS(KeyV), /* W */ KEYS(KeyW), // /* X */ KEYS(KeyX), /* Y */ KEYS(KeyY), // /* Z */ KEYS(KeyZ), /* [ */ X, // /* \ */ X, /* ] */ X, // /* ^ */ X, /* _ */ X, // /* ` */ X, /* a */ KEYS(KeyA), // /* b */ KEYS(KeyB), /* c */ KEYS(KeyC), // /* d */ KEYS(KeyD), /* e */ KEYS(KeyE), // /* f */ KEYS(KeyF), /* g */ KEYS(KeyG), // /* h */ KEYS(KeyH), /* i */ KEYS(KeyI), // /* j */ KEYS(KeyJ), /* k */ KEYS(KeyK), // /* l */ KEYS(KeyL), /* m */ KEYS(KeyM), // /* n */ KEYS(KeyN), /* o */ KEYS(KeyO), // /* p */ KEYS(KeyP), /* q */ KEYS(KeyQ), // /* r */ KEYS(KeyR), /* s */ KEYS(KeyS), // /* t */ KEYS(KeyT), /* u */ KEYS(KeyU), // /* v */ KEYS(KeyV), /* w */ KEYS(KeyW), // /* x */ KEYS(KeyX), /* y */ KEYS(KeyY), // /* z */ KEYS(KeyZ), /* { */ X, // /* | */ X, /* } */ X, // }; //#undef KEYS //#undef SHIFT //#undef X // // if(is_zx81) // return table_lookup_sequence_for_character(zx81_key_sequences, sizeof(zx81_key_sequences), character); // else // return table_lookup_sequence_for_character(zx80_key_sequences, sizeof(zx80_key_sequences), character); //}