forked from forks/qmk_firmware
234 lines
7.9 KiB
C
234 lines
7.9 KiB
C
|
/*
|
||
|
Copyright 2018 listofoptions <listofoptions@gmail.com>
|
||
|
|
||
|
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 <http://www.gnu.org/licenses/>.
|
||
|
*/
|
||
|
|
||
|
#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
|
||
|
)
|
||
|
} ;
|
||
|
|