/* Copyright 2018 listofoptions This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . */ #include QMK_KEYBOARD_H /* enum xt_keycodes { XT_PAST = SAFE_RANGE // XT pad asterisk / print screen , XT_SLCK // XT scroll lock / break , XT_F6 // F6 / app key , XT_F5 // F5 / gui , XT_F9 // F9 / F11 , XT_F10 // F10 / F12 } ; static bool shift_pressed = false , alt_pressed = false , ctrl_pressed = false , xt_pscr_pressed = false , xt_brk_pressed = false , xt_app_pressed = false , xt_gui_pressed = false , xt_lout_pressed = false , xt_f11_pressed = false , xt_f12_pressed = false ; bool process_record_user(uint16_t keycode, keyrecord_t *record) { switch (keycode) { case KC_LSFT: case KC_RSFT: if (record->event.pressed) { shift_pressed = true ; } else { shift_pressed = false ; } return true; break; case KC_LALT: if (record->event.pressed) { alt_pressed = true ; } else { alt_pressed = false ; } return true; break; case KC_LCTL: if (record->event.pressed) { ctrl_pressed = true ; } else { ctrl_pressed = false ; } return true; break; case XT_PAST: if (record->event.pressed) { if (shift_pressed) { xt_pscr_pressed = true ; register_code(KC_PSCR); } else { register_code(KC_PAST); } } else { if (xt_pscr_pressed) { xt_pscr_pressed = false ; unregister_code(KC_PSCR); } else { unregister_code(KC_PAST); } } return false; break; case XT_SLCK: if (record->event.pressed) { if (ctrl_pressed) { xt_brk_pressed = true ; register_code(KC_BRK); } else { register_code(KC_SLCK); } } else { if (xt_brk_pressed) { xt_brk_pressed = false ; unregister_code(KC_BRK); } else { unregister_code(KC_SLCK); } } return false; break; case XT_F6: if (record->event.pressed) { if (shift_pressed) { xt_app_pressed = true ; register_code(KC_APP); } else { register_code(KC_F6); } } else { if (xt_app_pressed) { xt_app_pressed = false ; unregister_code(KC_APP); } else { unregister_code(KC_F6); } } return false; break; case XT_F5: if (record->event.pressed) { if (shift_pressed) { xt_gui_pressed = true ; register_code(KC_LGUI); } else if (ctrl_pressed) { xt_lout_pressed = true ; register_code (KC_LGUI) ; register_code (KC_L) ; } else { register_code(KC_F5); } } else { if (xt_gui_pressed) { xt_gui_pressed = false ; unregister_code(KC_LGUI); } else if (xt_lout_pressed) { xt_lout_pressed = false ; unregister_code (KC_LGUI) ; unregister_code (KC_L) ; } else { unregister_code(KC_F5); } } return false; break; case XT_F9: if (record->event.pressed) { if (shift_pressed) { xt_f11_pressed = true ; register_code(KC_F11); } else { register_code(KC_F9); } } else { if (xt_f11_pressed) { xt_f11_pressed = false ; unregister_code(KC_F11); } else { unregister_code(KC_F9); } } return false; break; case XT_F10: if (record->event.pressed) { if (shift_pressed) { xt_f12_pressed = true ; register_code(KC_F12); } else { register_code(KC_F10); } } else { if (xt_f12_pressed) { xt_f12_pressed = false ; unregister_code(KC_F12); } else { unregister_code(KC_F10); } } return false; break; default: return true; break; } return true; } */ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { // default layout is the standard XT layout /* * ,-------. ,--------------------------------------------------------------------------. * | F1| F2| |Esc| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =| BS |NumLck |ScrLck | * |-------| |--------------------------------------------------------------------------| * | F3| F4| | Tab | Q| W| E| R| T| Y| U| I| O| P| [| ] | | 7| 8| 9| -| * |-------| |------------------------------------------------------|Ent|---------------| * | F5| F6| | Ctrl | A| S| D| F| G| H| J| K| L| ;| '| `| | 4| 5| 6| | * |-------| |----------------------------------------------------------------------| | * | F7| F8| |Shif| \| Z| X| C| V| B| N| M| ,| .| /|Shift| *| 1| 2| 3| +| * |-------| |----------------------------------------------------------------------| | * | F9|F10| | Alt | Space |CapsLck| 0 | . | | * `-------' `--------------------------------------------------------------------------' */ /* [0] = LAYOUT ( KC_F1,KC_F2, KC_ESC, KC_1, KC_2,KC_3,KC_4,KC_5,KC_6,KC_7,KC_8,KC_9, KC_0, KC_MINS,KC_EQL, KC_BSPC, KC_NLCK, XT_SLCK, KC_F3,KC_F4, KC_TAB, KC_Q, KC_W,KC_E,KC_R,KC_T,KC_Y,KC_U,KC_I,KC_O, KC_P, KC_LBRC,KC_RBRC, KC_P7,KC_P8, KC_P9, KC_PMNS, XT_F5,XT_F6, KC_LCTL,KC_A, KC_S,KC_D,KC_F,KC_G,KC_H,KC_J,KC_K,KC_L, KC_SCLN,KC_QUOT,KC_GRV, KC_ENT, KC_P4,KC_P5, KC_P6, KC_F7,KC_F8, KC_LSFT,KC_BSLS,KC_Z,KC_X,KC_C,KC_V,KC_B,KC_N,KC_M,KC_COMM,KC_DOT, KC_SLSH,KC_RSFT,XT_PAST,KC_P1,KC_P2, KC_P3, KC_PPLS, XT_F9,XT_F10,KC_LALT, KC_SPACE, KC_CAPS, KC_P0, KC_PDOT ) */ [0] = LAYOUT ( KC_F1,KC_F2, KC_ESC, KC_1, KC_2,KC_3,KC_4,KC_5,KC_6,KC_7,KC_8,KC_9, KC_0, KC_MINS,KC_EQL, KC_BSPC, KC_NLCK, KC_SLCK, KC_F3,KC_F4, KC_TAB, KC_Q, KC_W,KC_E,KC_R,KC_T,KC_Y,KC_U,KC_I,KC_O, KC_P, KC_LBRC,KC_RBRC, KC_P7,KC_P8, KC_P9, KC_PMNS, KC_F5,KC_F6, KC_LCTL,KC_A, KC_S,KC_D,KC_F,KC_G,KC_H,KC_J,KC_K,KC_L, KC_SCLN,KC_QUOT,KC_GRV, KC_ENT, KC_P4,KC_P5, KC_P6, KC_F7,KC_F8, KC_LSFT,KC_BSLS,KC_Z,KC_X,KC_C,KC_V,KC_B,KC_N,KC_M,KC_COMM,KC_DOT, KC_SLSH,KC_RSFT,KC_PAST,KC_P1,KC_P2, KC_P3, KC_PPLS, KC_F9,KC_F10,KC_LALT, KC_SPACE, KC_CAPS, KC_P0, KC_PDOT ) } ;