* Add keymaps for Iris, Let's Split, TADA68, XD75, and handwired not_so_minidox * remove handwired not_so_minidox
		
			
				
	
	
		
			308 lines
		
	
	
		
			9.5 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			308 lines
		
	
	
		
			9.5 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| #include "iris.h"
 | |
| #include "action_layer.h"
 | |
| #include "eeconfig.h"
 | |
| #include "action_macro.h"
 | |
| #include <timer.h>
 | |
| #include "pincontrol.h"
 | |
| 
 | |
| extern keymap_config_t keymap_config;
 | |
| 
 | |
| #define _QWERTY 0
 | |
| #define _LOWER 1
 | |
| #define _RAISE 2
 | |
| #define _SUPER 3
 | |
| #define _ADJUST 16
 | |
| #define SOLENOID_DEFAULT_DWELL 12
 | |
| #define SOLENOID_MAX_DWELL 100
 | |
| #define SOLENOID_MIN_DWELL 4
 | |
| #define SOLENOID_PIN C6
 | |
| 
 | |
| 
 | |
| bool solenoid_enabled = false;
 | |
| bool solenoid_on = false;
 | |
| bool solenoid_buzz = false;
 | |
| bool solenoid_buzzing = false;
 | |
| uint16_t solenoid_start = 0;
 | |
| uint8_t solenoid_dwell = SOLENOID_DEFAULT_DWELL;
 | |
| 
 | |
| 
 | |
| void solenoid_buzz_on(void) {
 | |
|   solenoid_buzz = true;
 | |
| }
 | |
| 
 | |
| void solenoid_buzz_off(void) {
 | |
|   solenoid_buzz = false;
 | |
| }
 | |
| 
 | |
| void solenoid_dwell_minus(void) {
 | |
|   if (solenoid_dwell > 0) solenoid_dwell--;
 | |
| }
 | |
| 
 | |
| void solenoid_dwell_plus(void) {
 | |
|   if (solenoid_dwell < SOLENOID_MAX_DWELL) solenoid_dwell++;
 | |
| }
 | |
| 
 | |
| void solenoid_toggle(void) {
 | |
|   solenoid_enabled = !solenoid_enabled;
 | |
| }
 | |
| 
 | |
| void solenoid_stop(void) {
 | |
|   digitalWrite(SOLENOID_PIN, PinLevelLow);
 | |
|   solenoid_on = false;
 | |
|   solenoid_buzzing = false;
 | |
| }
 | |
| 
 | |
| void solenoid_fire(void) {
 | |
|   if (!solenoid_enabled) return;
 | |
| 
 | |
|   if (!solenoid_buzz && solenoid_on) return;
 | |
|   if (solenoid_buzz && solenoid_buzzing) return;
 | |
| 
 | |
|   solenoid_on = true;
 | |
|   solenoid_buzzing = true;
 | |
|   solenoid_start = timer_read();
 | |
|   digitalWrite(SOLENOID_PIN, PinLevelHigh);
 | |
| }
 | |
| 
 | |
| void solenoid_check(void) {
 | |
|   uint16_t elapsed = 0;
 | |
| 
 | |
|   if (!solenoid_on) return;
 | |
| 
 | |
|   elapsed = timer_elapsed(solenoid_start);
 | |
| 
 | |
|   //Check if it's time to finish this solenoid click cycle
 | |
|   if (elapsed > solenoid_dwell) {
 | |
|     solenoid_stop();
 | |
|     return;
 | |
|   }
 | |
| 
 | |
|   //Check whether to buzz the solenoid on and off
 | |
|   if (solenoid_buzz) {
 | |
|     if (elapsed / SOLENOID_MIN_DWELL % 2 == 0){
 | |
|       if (!solenoid_buzzing) {
 | |
|         solenoid_buzzing = true;
 | |
|         digitalWrite(SOLENOID_PIN, PinLevelHigh);
 | |
|       }
 | |
|     }
 | |
|     else {
 | |
|       if (solenoid_buzzing) {
 | |
|         solenoid_buzzing = false;
 | |
|         digitalWrite(SOLENOID_PIN, PinLevelLow);
 | |
|       }
 | |
|     }
 | |
|   }
 | |
| }
 | |
| 
 | |
| void solenoid_setup(void) {
 | |
|   pinMode(SOLENOID_PIN, PinDirectionOutput);
 | |
| }
 | |
| 
 | |
| void matrix_init_user(void) {
 | |
|   solenoid_setup();
 | |
| }
 | |
| 
 | |
| void matrix_scan_user(void) {
 | |
|   solenoid_check();
 | |
| }
 | |
| 
 | |
| 
 | |
| enum custom_keycodes {
 | |
|   QWERTY = SAFE_RANGE,
 | |
|   LOWER,
 | |
|   RAISE,
 | |
|   SUPER,
 | |
|   ADJUST,
 | |
|   SOL_TOG,
 | |
|   SOLENOID_DWELL_MINUS,
 | |
|   SOLENOID_DWELL_PLUS,
 | |
|   SOLENOID_BUZZ_ON,
 | |
|   SOLENOID_BUZZ_OFF,
 | |
|   TD_ESC = 0,
 | |
| };
 | |
| 
 | |
| #define KC_ KC_TRNS
 | |
| #define _______ KC_TRNS
 | |
| 
 | |
| #define KC_LOWR LOWER
 | |
| #define KC_RASE RAISE
 | |
| #define KC_SUPR SUPER
 | |
| #define KC_RST RESET
 | |
| #define KC_BL_S BL_STEP
 | |
| #define KC_EXC TD(TD_ESC)
 | |
| #define SOLTOG SOLENOID_TOG
 | |
| 
 | |
| // Macro Declarations
 | |
| #define UM_ROOT M(0)
 | |
| #define UM_PPLY M(1)
 | |
| #define UM_PSEF M(2)
 | |
| #define KC_XCPY M(3)
 | |
| #define KC_XINS M(4)
 | |
| #define UM_CAD  M(5)
 | |
| 
 | |
| const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 | |
| 
 | |
|   [_QWERTY] = LAYOUT_kc(
 | |
|   //,----+----+----+----+----+----.              ,----+----+----+----+----+----.
 | |
|      EXC , 1  , 2  , 3  , 4  , 5  ,                6  , 7  , 8  , 9  , 0  ,BSPC,
 | |
|   //|----+----+----+----+----+----|              |----+----+----+----+----+----|
 | |
|      TAB , Q  , W  , E  , R  , T  ,                Y  , U  , I  , O  , P  ,QUOT,
 | |
|   //|----+----+----+----+----+----|              |----+----+----+----+----+----|
 | |
|      LSFT, A  , S  , D  , F  , G  ,                H  , J  , K  , L  ,SCLN,ENT ,
 | |
|   //|----+----+----+----+----+----+----.    ,----|----+----+----+----+----+----|
 | |
|       EQL, Z  , X  , C  , V  , B  ,LGUI,     LALT, N  , M  ,COMM,DOT ,SLSH,MINS,
 | |
|   //`----+----+----+--+-+----+----+----/    \----+----+----+----+----+----+----'
 | |
|                        LCTL,RASE,SPC ,         SPC ,LOWR,SUPR
 | |
|   //                  `----+----+----'        `----+----+----'
 | |
|   ),
 | |
| 
 | |
|   [_LOWER] = LAYOUT_kc(
 | |
|   //,----+----+----+----+----+----.              ,----+----+----+----+----+----.
 | |
|          ,    ,    ,    ,    ,    ,                   ,    ,    ,LCBR,RCBR,DEL ,
 | |
|   //|----+----+----+----+----+----|              |----+----+----+----+----+----|
 | |
|          ,    ,    ,    ,    ,    ,                   ,    , UP ,    ,    ,PIPE,
 | |
|   //|----+----+----+----+----+----|              |----+----+----+----+----+----|
 | |
|          ,    ,    ,    ,    ,    ,                   ,LEFT,DOWN,RGHT,    ,    ,
 | |
|   //|----+----+----+----+----+----+----.    ,----|----+----+----+----+----+----|
 | |
|          ,    ,    ,    ,    ,    ,    ,         ,    ,HOME,    ,END ,    ,EQL ,
 | |
|   //`----+----+----+--+-+----+----+----/    \----+----+----+----+----+----+----'
 | |
|                            ,    ,    ,             ,    ,
 | |
|   //                  `----+----+----'        `----+----+----'
 | |
|   ),
 | |
| 
 | |
|   [_RAISE] = LAYOUT_kc(
 | |
|   //,----+----+----+----+----+----.              ,----+----+----+----+----+----.
 | |
|          , F1 , F2 , F3 , F4 ,    ,                   ,    ,    ,LBRC,RBRC,DEL ,
 | |
|   //|----+----+----+----+----+----|              |----+----+----+----+----+----|
 | |
|          , F5 , F6 , F7 , F8 ,    ,                   ,    ,    ,    ,    ,BSLS,
 | |
|   //|----+----+----+----+----+----|              |----+----+----+----+----+----|
 | |
|          , F9 ,F10 ,F11 ,F12 ,    ,                   ,    ,    ,    ,    ,    ,
 | |
|   //|----+----+----+----+----+----+----.    ,----|----+----+----+----+----+----|
 | |
|          ,    ,    ,XCPY,XINS,    ,    ,         ,    ,    ,    ,    ,    ,PLUS,
 | |
|   //`----+----+----+--+-+----+----+----/    \----+----+----+----+----+----+----'
 | |
|                            ,    ,    ,             ,    ,
 | |
|   //                  `----+----+----'        `----+----+----'
 | |
|   ),
 | |
| 
 | |
|   [_SUPER] = LAYOUT(
 | |
|   //,--------+--------+--------+--------+--------+--------.                          ,--------+--------+--------+--------+--------+--------.
 | |
|       SOL_TOG, UM_ROOT, UM_PPLY, UM_PSEF, _______, _______,                            _______, _______, _______, _______, _______, _______,
 | |
|   //|--------+--------+--------+--------+--------+--------|                          |--------+--------+--------+--------+--------+--------|
 | |
|       _______, _______, _______, _______, _______, _______,                            _______, KC_LBRC, _______, _______, _______, _______,
 | |
|   //|--------+--------+--------+--------+--------+--------|                          |--------+--------+--------+--------+--------+--------|
 | |
|       _______, _______, _______, _______, _______, _______,                            _______, _______, _______, _______, _______, UM_CAD ,
 | |
|   //|--------+--------+--------+--------+--------+--------+--------.        ,--------|--------+--------+--------+--------+--------+--------|
 | |
|       _______, _______, _______, _______, _______, _______, _______,          _______, _______, KC_MUTE, KC_VOLD, KC_VOLU, KC_MNXT, KC_MPLY,
 | |
|   //`--------+--------+--------+----+---+--------+--------+--------/        \--------+--------+--------+---+----+--------+--------+--------'
 | |
|                                       _______, _______, _______,                  _______, _______, _______
 | |
|   //                                `--------+--------+--------'                `--------+--------+--------'
 | |
| )
 | |
| 
 | |
| };
 | |
| 
 | |
| void persistent_default_layer_set(uint16_t default_layer) {
 | |
|   eeconfig_update_default_layer(default_layer);
 | |
|   default_layer_set(default_layer);
 | |
| }
 | |
| 
 | |
| qk_tap_dance_action_t tap_dance_actions[] = {
 | |
|   //Tap once for grave accent, twice for ESC
 | |
|   [TD_ESC] = ACTION_TAP_DANCE_DOUBLE(KC_GRV, KC_ESC)
 | |
| };
 | |
| 
 | |
| bool process_record_user(uint16_t keycode, keyrecord_t *record) {
 | |
|   if (record->event.pressed) {
 | |
|     solenoid_fire();
 | |
|   }
 | |
|   switch (keycode) {
 | |
|     case QWERTY:
 | |
|       if (record->event.pressed) {
 | |
|         persistent_default_layer_set(1UL<<_QWERTY);
 | |
|       }
 | |
|       return false;
 | |
|       break;
 | |
|     case LOWER:
 | |
|       if (record->event.pressed) {
 | |
|         layer_on(_LOWER);
 | |
|         update_tri_layer(_LOWER, _RAISE, _ADJUST);
 | |
|       } else {
 | |
|         layer_off(_LOWER);
 | |
|         update_tri_layer(_LOWER, _RAISE, _ADJUST);
 | |
|       }
 | |
|       return false;
 | |
|       break;
 | |
|     case RAISE:
 | |
|       if (record->event.pressed) {
 | |
|         layer_on(_RAISE);
 | |
|         update_tri_layer(_LOWER, _RAISE, _ADJUST);
 | |
|       } else {
 | |
|         layer_off(_RAISE);
 | |
|         update_tri_layer(_LOWER, _RAISE, _ADJUST);
 | |
|       }
 | |
|       return false;
 | |
|       break;
 | |
|     case SUPER:
 | |
|       if (record->event.pressed) {
 | |
|         layer_on(_SUPER);
 | |
|         update_tri_layer(_LOWER, _RAISE, _ADJUST);
 | |
|       } else {
 | |
|         layer_off(_SUPER);
 | |
|         update_tri_layer(_LOWER, _RAISE, _ADJUST);
 | |
|       }
 | |
|       return false;
 | |
|       break;
 | |
|     case SOLTOG:
 | |
|       if (record->event.pressed) {
 | |
|         solenoid_toggle();
 | |
|       }
 | |
|       break;
 | |
|     case SOLENOID_DWELL_MINUS:
 | |
|       if (record->event.pressed) {
 | |
|         solenoid_dwell_minus();
 | |
|       }
 | |
|       break;
 | |
|     case SOLENOID_DWELL_PLUS:
 | |
|       if (record->event.pressed) {
 | |
|         solenoid_dwell_plus();
 | |
|       }
 | |
|       break;
 | |
|     case SOLENOID_BUZZ_ON:
 | |
|       if (record->event.pressed) {
 | |
|         solenoid_buzz_on();
 | |
|       }
 | |
|       break;
 | |
|     case SOLENOID_BUZZ_OFF:
 | |
|       if (record->event.pressed) {
 | |
|         solenoid_buzz_off();
 | |
|       }
 | |
|       break;
 | |
|   }
 | |
|   return true;
 | |
| };
 | |
| 
 | |
| const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) {
 | |
|   if (record->event.pressed) {
 | |
|       switch(id) {
 | |
|           case 0:
 | |
|               SEND_STRING("sudo su -\n");
 | |
|               return false; break;
 | |
|           case 1:
 | |
|               SEND_STRING("puppet apply /etc/puppetlabs/code/environments/production/manifests/site.pp\n");
 | |
|               return false; break;
 | |
|           case 2:
 | |
|               SEND_STRING("ps -ef | grep ");
 | |
|               return false; break;
 | |
|           case 3:
 | |
|               return MACRO(D(LCTL), T(INS), U(LCTL), END);
 | |
|               break;
 | |
|           case 4:
 | |
|               return MACRO(D(LSFT), T(INS), U(LSFT), END);
 | |
|               break;
 | |
|           case 5:
 | |
|               return MACRO(D(LCTL), D(RALT), T(DEL), END);
 | |
|               break;
 | |
|       }
 | |
|   }
 | |
|   return MACRO_NONE;
 | |
| };
 |