* copied mjt keymaps from archive * All mjt boards now compile * fixed jd45-mjt breathing * Updates to fix SpaceFN but not tested yet. * Still missing either spacebar or an adjacent keypress. * Debugging rigged up for use with hid_listen. * Reverted the default keymap to use tap_layer_key rather than custom. Moved custom approach to keymap_debug.c * Fixed the lower-left side of the keymap, which needed more spacers due to the matrix being directly put into the array rather than using the keymap function. * Cleaned up JD45 keymap that uses tapkey. * Redid minivan keymap with numsym rather than raise/lower. Untested. * Created my MJT keymap for HHKB Enabled dynamic macros and moved somoe of the shortcuts around. * Minor keymap fixes to make them compile without errors. * Added home/end to right arrow cluster on DYN layer. * Added more keys to fn and dyn layers. * It wasn't using my custom layer last time somehow...? Now it will. * Compiled and installed at end of day on 8/23 * Moved macros to FKEY layer because Adjust was too hard to get into and out of without some sort of feedback. * Fixed volume controls... were reversed and disabled. * Added F13-F15 back to fkeys layer in Minivan * Created new Planck Keymap that uses the NumSym and FKeys layer approach like the Minivan. * Removed DYN layer. * Fixed diagram in planck numsym. * Cleanup for pull request. * Roadkit flip phone warning. * Replaced PLAY_NOTES_ARRAY to PLAY_SONG * reset the submodules * checked out specific commits for submodules * Removed debugging from JD45 shared config.h * Moved custom rules.mk to apropriate keymap Reset the shared rules.mk file. * Trailing return issue in rules.mk Gotta make for a smooth pull request :-)
		
			
				
	
	
		
			200 lines
		
	
	
		
			6.2 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			200 lines
		
	
	
		
			6.2 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
//Author: mike terhar
 | 
						|
 | 
						|
#include "tv44.h"
 | 
						|
#include "action_layer.h"
 | 
						|
#include "eeconfig.h"
 | 
						|
#ifdef BACKLIGHT_ENABLE
 | 
						|
  #include "backlight.h"
 | 
						|
#endif
 | 
						|
 | 
						|
enum minivan_layers {
 | 
						|
  _QWERTY,
 | 
						|
  _NUMSYM,
 | 
						|
  _FKEYS,
 | 
						|
  _FKEYGRV,
 | 
						|
  _PLOVER,
 | 
						|
  _ADJUST
 | 
						|
};
 | 
						|
 | 
						|
enum planck_keycodes {
 | 
						|
  QWERTY = SAFE_RANGE,
 | 
						|
  DYNKEY,
 | 
						|
  DYNAMIC_MACRO_RANGE,
 | 
						|
};
 | 
						|
 | 
						|
// Fillers to make layering more clear
 | 
						|
#define _______ KC_TRNS
 | 
						|
#define FKEYS F(_FKEYS)
 | 
						|
#define NUMSYM F(_NUMSYM)
 | 
						|
#define FKEYGRV F(_FKEYGRV)
 | 
						|
#define MACSLEEP M(5)
 | 
						|
#define PLOVER M(6)
 | 
						|
#define LAYERRESET M(7)
 | 
						|
#define BACKLIT M(8)
 | 
						|
#define ADJUST M(9)
 | 
						|
#define XXXXXXX KC_NO
 | 
						|
 | 
						|
#include "dynamic_macro.h"
 | 
						|
 | 
						|
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 | 
						|
[_QWERTY] = {
 | 
						|
  {FKEYS, KC_Q,   KC_W,   KC_E, KC_R,   KC_T,   KC_Y,   KC_U, KC_I,   KC_O,  KC_P,   KC_BSPC},
 | 
						|
  {KC_ESC, KC_A,   KC_S,   KC_D, KC_F,   KC_G,   KC_H,   KC_J, KC_K,   KC_L,  KC_SCLN,KC_QUOT},
 | 
						|
  {KC_LSFT,KC_Z,   KC_X,   KC_C, KC_V,   KC_B,   KC_N,   KC_M, KC_COMM,KC_DOT,KC_SLSH,SFT_T(KC_ENT) },
 | 
						|
  {KC_LCTL,KC_LALT,KC_LGUI, KC_SPC,XXXXXXX,XXXXXXX,XXXXXXX,NUMSYM,KC_LEFT,KC_DOWN,KC_UP ,KC_RIGHT}
 | 
						|
},
 | 
						|
[_NUMSYM] = {
 | 
						|
  {FKEYGRV,  KC_1,  KC_2,    KC_3,   KC_4,   KC_5,   KC_6,   KC_7,   KC_8,   KC_9,   KC_0,  _______},
 | 
						|
  {KC_DEL,KC_EXLM, KC_AT,  KC_HASH,KC_DLR, KC_PERC,KC_CIRC,KC_AMPR,KC_ASTR,KC_LPRN,KC_RPRN, ADJUST },
 | 
						|
  { _______,  KC_UNDS,KC_PLUS, KC_LCBR,KC_RCBR,KC_PIPE , KC_MINS,KC_EQL,KC_LBRC, KC_RBRC, KC_BSLS, _______},
 | 
						|
  {_______,_______,_______,_______,XXXXXXX,XXXXXXX,XXXXXXX,_______,    KC_HOME, KC_PGDN, KC_PGUP, KC_END}
 | 
						|
},
 | 
						|
[_FKEYS] ={
 | 
						|
  {_______, KC_F1,  KC_F2,  KC_F3,  KC_F4,  KC_F5, KC_F6, KC_F7,  KC_F8,  KC_F9,  KC_F10, _______},
 | 
						|
  {KC_DEL, KC_F11, KC_F12,  KC_F13,  KC_F14,  KC_F15, _______, _______,  _______,  MACSLEEP, DYN_REC_START1, DYN_REC_START2 },
 | 
						|
  {KC_CAPS,  _______, _______,  _______,  _______, _______, _______, _______, DYN_MACRO_PLAY1, DYN_MACRO_PLAY2,_______,DYN_REC_STOP},
 | 
						|
  {_______,_______,_______,LAYERRESET,XXXXXXX,XXXXXXX,XXXXXXX,LAYERRESET,    KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY}
 | 
						|
},
 | 
						|
[_PLOVER] = {
 | 
						|
  {KC_1,    KC_1,    KC_1,    KC_1,    KC_1,    KC_1,    KC_1,    KC_1,    KC_1,    KC_1,    KC_1,    KC_1   },
 | 
						|
  {XXXXXXX, KC_Q,    KC_W,    KC_E,    KC_R,    KC_T,    KC_Y,    KC_U,    KC_I,    KC_O,    KC_P,    KC_LBRC},
 | 
						|
  {XXXXXXX, KC_A,    KC_S,    KC_D,    KC_F,    KC_G,    KC_H,    KC_J,    KC_K,    KC_L,    KC_SCLN, KC_QUOT},
 | 
						|
  {LAYERRESET, XXXXXXX, KC_C,    KC_V,   XXXXXXX ,  XXXXXXX, XXXXXXX, KC_N,    KC_M,    XXXXXXX, XXXXXXX, XXXXXXX}
 | 
						|
},
 | 
						|
[_ADJUST] = {
 | 
						|
 {_______ , RESET,   _______, _______, _______, _______, _______, _______, KC_SLCK, KC_PAUS, KC_PSCR, KC_DEL },
 | 
						|
 {_______ , _______, _______, _______, _______,  AG_NORM, AG_SWAP, QWERTY,  _______, MACSLEEP,  PLOVER, _______},
 | 
						|
 {_______ , _______,  _______,  _______,   _______,  _______,   _______,  _______, _______, _______, _______, _______},
 | 
						|
 {BACKLIT, _______, _______, LAYERRESET, XXXXXXX, XXXXXXX, XXXXXXX, _______, _______, _______, _______, _______}
 | 
						|
}
 | 
						|
};
 | 
						|
 | 
						|
#ifdef AUDIO_ENABLE
 | 
						|
 | 
						|
float tone_startup[][2]           = SONG(STARTUP_SOUND);
 | 
						|
float tone_qwerty[][2]            = SONG(QWERTY_SOUND);
 | 
						|
float tone_dyn_macro_rec[][2]     = SONG(DVORAK_SOUND);
 | 
						|
float tone_dyn_macro_play[][2]    = SONG(COLEMAK_SOUND);
 | 
						|
float tone_plover[][2]            = SONG(PLOVER_SOUND);
 | 
						|
float tone_adjust[][2]            = SONG(PLOVER_GOODBYE_SOUND);
 | 
						|
float music_scale[][2]            = SONG(MUSIC_SCALE_SOUND);
 | 
						|
 | 
						|
float tone_goodbye[][2] = SONG(GOODBYE_SOUND);
 | 
						|
#endif
 | 
						|
 | 
						|
void persistant_default_layer_set(uint16_t default_layer) {
 | 
						|
  eeconfig_update_default_layer(default_layer);
 | 
						|
  default_layer_set(default_layer);
 | 
						|
}
 | 
						|
 | 
						|
const uint16_t PROGMEM fn_actions[] = {
 | 
						|
 [_FKEYS] = ACTION_LAYER_TAP_KEY(_FKEYS, KC_TAB),
 | 
						|
 [_FKEYGRV] = ACTION_LAYER_TAP_KEY(_FKEYS, KC_GRV),
 | 
						|
 [_NUMSYM] = ACTION_LAYER_TAP_TOGGLE(_NUMSYM),
 | 
						|
};
 | 
						|
 | 
						|
const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
 | 
						|
{
 | 
						|
      switch(id) {
 | 
						|
        case 5: // MACSLEEP
 | 
						|
            if (record->event.pressed) {
 | 
						|
              register_code(KC_RSFT);
 | 
						|
              register_code(KC_RCTL);
 | 
						|
              register_code(KC_POWER);
 | 
						|
              unregister_code(KC_POWER);
 | 
						|
              unregister_code(KC_RCTL);
 | 
						|
              unregister_code(KC_RSFT);
 | 
						|
            }
 | 
						|
        break;
 | 
						|
        case 6: // PLOVER
 | 
						|
              if (record->event.pressed) {
 | 
						|
              #ifdef AUDIO_ENABLE
 | 
						|
                stop_all_notes();
 | 
						|
                PLAY_NOTE_ARRAY(tone_plover, false, 0);
 | 
						|
              #endif
 | 
						|
              layer_off(_NUMSYM);
 | 
						|
              layer_off(_FKEYS);
 | 
						|
              layer_off(_ADJUST);
 | 
						|
              layer_on(_PLOVER);
 | 
						|
            }
 | 
						|
        break;
 | 
						|
        case 7: // LAYERRESET
 | 
						|
              if (record->event.pressed) {
 | 
						|
              #ifdef AUDIO_ENABLE
 | 
						|
                PLAY_NOTE_ARRAY(tone_qwerty, false, 0);
 | 
						|
              #endif
 | 
						|
              layer_off(_NUMSYM);
 | 
						|
              layer_off(_FKEYS);
 | 
						|
              layer_off(_PLOVER);
 | 
						|
              layer_off(_ADJUST);
 | 
						|
            }
 | 
						|
        break;
 | 
						|
        case 8: // BACKLIT
 | 
						|
          if (record->event.pressed) {
 | 
						|
            register_code(KC_RSFT);
 | 
						|
            #ifdef BACKLIGHT_ENABLE
 | 
						|
              backlight_step();
 | 
						|
            #endif
 | 
						|
          } else {
 | 
						|
            unregister_code(KC_RSFT);
 | 
						|
          }
 | 
						|
        break;
 | 
						|
        case 9: // ADJUST
 | 
						|
          if(record->event.pressed) {
 | 
						|
            #ifdef AUDIO_ENABLE
 | 
						|
              stop_all_notes();
 | 
						|
              PLAY_NOTE_ARRAY(tone_adjust, false, 0);
 | 
						|
            #endif
 | 
						|
            layer_off(_NUMSYM);
 | 
						|
            layer_off(_FKEYS);
 | 
						|
            layer_off(_PLOVER);
 | 
						|
            layer_on(_ADJUST);
 | 
						|
          }
 | 
						|
      }
 | 
						|
    return MACRO_NONE;
 | 
						|
};
 | 
						|
 | 
						|
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
 | 
						|
  uint16_t macro_kc = keycode;
 | 
						|
  if (keycode == FKEYS || keycode == ADJUST || keycode == FKEYGRV ){
 | 
						|
    macro_kc = DYN_REC_STOP;
 | 
						|
  }
 | 
						|
  if (!process_record_dynamic_macro(macro_kc, record)) {
 | 
						|
    return false;
 | 
						|
  }
 | 
						|
 | 
						|
  return true;
 | 
						|
}
 | 
						|
 | 
						|
void matrix_init_user(void) {
 | 
						|
    #ifdef AUDIO_ENABLE
 | 
						|
        startup_user();
 | 
						|
    #endif
 | 
						|
}
 | 
						|
 | 
						|
#ifdef AUDIO_ENABLE
 | 
						|
 | 
						|
void startup_user()
 | 
						|
{
 | 
						|
    _delay_ms(20); // gets rid of tick
 | 
						|
    PLAY_NOTE_ARRAY(tone_startup, false, 0);
 | 
						|
}
 | 
						|
 | 
						|
void shutdown_user()
 | 
						|
{
 | 
						|
    PLAY_NOTE_ARRAY(tone_goodbye, false, 0);
 | 
						|
    _delay_ms(150);
 | 
						|
    stop_all_notes();
 | 
						|
}
 | 
						|
 | 
						|
void music_on_user(void)
 | 
						|
{
 | 
						|
    music_scale_user();
 | 
						|
}
 | 
						|
 | 
						|
void music_scale_user(void)
 | 
						|
{
 | 
						|
    PLAY_NOTE_ARRAY(music_scale, false, 0);
 | 
						|
}
 | 
						|
#endif
 |