You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					115 lines
				
				5.8 KiB
			
		
		
			
		
	
	
					115 lines
				
				5.8 KiB
			| 
								 
											8 years ago
										 
									 | 
							
								/*  -*-  eval: (turn-on-orgtbl); -*-
							 | 
						||
| 
								 | 
							
								 * default HHKB Layout
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								#include "hhkb.h"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#define BASE 0
							 | 
						||
| 
								 | 
							
								#define HHKB 1
							 | 
						||
| 
								 | 
							
								#define FUNK 2
							 | 
						||
| 
								 | 
							
								#define DYN 3
							 | 
						||
| 
								 | 
							
								#define CTL_ESC CTL_T(KC_ESC)
							 | 
						||
| 
								 | 
							
								#define MACSLEEP LCTL(LSFT(KC_POWER))
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								enum hhkb_keycodes {
							 | 
						||
| 
								 | 
							
								  QWERTY = SAFE_RANGE,
							 | 
						||
| 
								 | 
							
								  DYNKEY,
							 | 
						||
| 
								 | 
							
								  DYNAMIC_MACRO_RANGE,
							 | 
						||
| 
								 | 
							
								};
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#include "dynamic_macro.h"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    /* BASE Level: Default Layer
							 | 
						||
| 
								 | 
							
								     |-------+---+---+---+---+---+---+---+---+---+---+-------+-----+-------+---|
							 | 
						||
| 
								 | 
							
								     | Esc   | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | -     | =   | \     | ` |
							 | 
						||
| 
								 | 
							
								     |-------+---+---+---+---+---+---+---+---+---+---+-------+-----+-------+---|
							 | 
						||
| 
								 | 
							
								     | Tab   | Q | W | E | R | T | Y | U | I | O | P | [     | ]   | Backs |   |
							 | 
						||
| 
								 | 
							
								     |-------+---+---+---+---+---+---+---+---+---+---+-------+-----+-------+---|
							 | 
						||
| 
								 | 
							
								     | Cont  | A | S | D | F | G | H | J | K | L | ; | '     | Ent |       |   |
							 | 
						||
| 
								 | 
							
								     |-------+---+---+---+---+---+---+---+---+---+---+-------+-----+-------+---|
							 | 
						||
| 
								 | 
							
								     | Shift | Z | X | C | V | B | N | M | , | . | / | Shift | Fn0 |       |   |
							 | 
						||
| 
								 | 
							
								     |-------+---+---+---+---+---+---+---+---+---+---+-------+-----+-------+---|
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								            |------+------+-----------------------+------+------|
							 | 
						||
| 
								 | 
							
								            | LAlt | LGUI | ******* Space ******* | RGUI | RAlt |
							 | 
						||
| 
								 | 
							
								            |------+------+-----------------------+------+------|
							 | 
						||
| 
								 | 
							
								    */
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  [BASE] = KEYMAP(  //  default layer
							 | 
						||
| 
								 | 
							
								  KC_GRV,   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_BSLS,  KC_DEL, \
							 | 
						||
| 
								 | 
							
								  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_BSPC,          \
							 | 
						||
| 
								 | 
							
								  CTL_ESC,  KC_A,  KC_S,  KC_D,  KC_F,  KC_G,  KC_H,  KC_J,  KC_K,     KC_L,    KC_SCLN,  KC_QUOT,  KC_ENT,                      \
							 | 
						||
| 
								 | 
							
								  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),  TT(FUNK),                    \
							 | 
						||
| 
								 | 
							
								                    KC_LALT,  KC_LGUI,  /*        */ KC_SPC,      MO(DYN),  KC_RALT),
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    /* Layer HHKB: HHKB mode (HHKB Fn)
							 | 
						||
| 
								 | 
							
								      |------+-----+-----+-----+----+----+----+----+-----+-----+-----+-----+-------+-------+-----|
							 | 
						||
| 
								 | 
							
								      | Pwr  | F1  | F2  | F3  | F4 | F5 | F6 | F7 | F8  | F9  | F10 | F11 | F12   | Ins   | Del |
							 | 
						||
| 
								 | 
							
								      |------+-----+-----+-----+----+----+----+----+-----+-----+-----+-----+-------+-------+-----|
							 | 
						||
| 
								 | 
							
								      | Caps |     |     |     |    |    |    |    | Psc | Slk | Pus | Up  |       | Backs |     |
							 | 
						||
| 
								 | 
							
								      |------+-----+-----+-----+----+----+----+----+-----+-----+-----+-----+-------+-------+-----|
							 | 
						||
| 
								 | 
							
								      |      | VoD | VoU | Mut |    |    | *  | /  | Hom | PgU | Lef | Rig | Enter |       |     |
							 | 
						||
| 
								 | 
							
								      |------+-----+-----+-----+----+----+----+----+-----+-----+-----+-----+-------+-------+-----|
							 | 
						||
| 
								 | 
							
								      |      |     |     |     |    |    | +  | -  | End | PgD | Dow |     |       |       |     |
							 | 
						||
| 
								 | 
							
								      |------+-----+-----+-----+----+----+----+----+-----+-----+-----+-----+-------+-------+-----|
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								                 |------+------+----------------------+------+------+
							 | 
						||
| 
								 | 
							
								                 | **** | **** | ******************** | **** | **** |
							 | 
						||
| 
								 | 
							
								                 |------+------+----------------------+------+------+
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  [HHKB] = KEYMAP(
							 | 
						||
| 
								 | 
							
								  KC_PWR,   KC_F1,    KC_F2,    KC_F3,    KC_F4,    KC_F5,    KC_F6,    KC_F7,    KC_F8,    KC_F9,    KC_F10,   KC_F11,   KC_F12,   KC_INS,   KC_DEL, \
							 | 
						||
| 
								 | 
							
								  KC_CAPS,  KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_PSCR,  KC_SLCK,  KC_PAUS,  KC_UP,    KC_TRNS,  KC_BSPC,          \
							 | 
						||
| 
								 | 
							
								  KC_TRNS,  KC_VOLD,  KC_VOLU,  KC_MUTE,  KC_TRNS,  KC_TRNS,  KC_PAST,  KC_PSLS,  KC_HOME,  KC_PGUP,  KC_LEFT,  KC_RGHT,  KC_PENT,                    \
							 | 
						||
| 
								 | 
							
								  KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_PPLS,  KC_PMNS,  KC_END,   KC_PGDN,  KC_DOWN,  KC_TRNS,  KC_TRNS,                    \
							 | 
						||
| 
								 | 
							
								                     KC_TRNS, KC_TRNS,           KC_TRNS,                KC_TRNS, KC_TRNS),
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  */
							 | 
						||
| 
								 | 
							
								 [FUNK] = KEYMAP(
							 | 
						||
| 
								 | 
							
								 KC_PWR,   KC_F1,    KC_F2,    KC_F3,    KC_F4,    KC_F5,    KC_F6,    KC_F7,    KC_F8,    KC_F9,    KC_F10,   KC_F11,   KC_F12,   KC_INS,   KC_DEL, \
							 | 
						||
| 
								 | 
							
								 KC_CAPS,  KC_TRNS,  KC_UP,  KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_PSCR,  KC_SLCK,  KC_PAUS,  KC_UP,    KC_TRNS,  KC_BSPC,          \
							 | 
						||
| 
								 | 
							
								 KC_TRNS,  KC_LEFT,  KC_DOWN,  KC_RGHT,  KC_TRNS,  KC_TRNS,  KC_PAST,  KC_PSLS,  KC_HOME,  KC_PGUP,  KC_LEFT,  KC_RGHT,  KC_PENT,                    \
							 | 
						||
| 
								 | 
							
								 KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_PPLS,  KC_PMNS,  KC_END,   KC_PGDN,  KC_DOWN,  KC_TRNS,  KC_TRNS,                    \
							 | 
						||
| 
								 | 
							
								                    KC_TRNS, KC_TRNS,           KC_TRNS,                KC_TRNS, KC_TRNS),
							 | 
						||
| 
								 | 
							
								[DYN] = KEYMAP(
							 | 
						||
| 
								 | 
							
								KC_TRNS,  DYN_REC_START1,  DYN_REC_START2,  KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,  DYN_MACRO_PLAY1,   DYN_MACRO_PLAY2, \
							 | 
						||
| 
								 | 
							
								KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_PGUP,  KC_TRNS,  KC_TRNS,          \
							 | 
						||
| 
								 | 
							
								KC_TRNS,  KC_VOLD,  KC_VOLU,  KC_MUTE,  KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,  MACSLEEP,  KC_HOME,  KC_END ,  KC_TRNS,                    \
							 | 
						||
| 
								 | 
							
								KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_PGDN,  KC_TRNS,  KC_TRNS,                    \
							 | 
						||
| 
								 | 
							
								                   KC_TRNS, KC_TRNS,           DYN_REC_STOP,                KC_TRNS, KC_TRNS)
							 | 
						||
| 
								 | 
							
								  };
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								const uint16_t PROGMEM fn_actions[] = {
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								};
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
								  // MACRODOWN only works in this function
							 | 
						||
| 
								 | 
							
								      switch(id) {
							 | 
						||
| 
								 | 
							
								        case 0:
							 | 
						||
| 
								 | 
							
								          if (record->event.pressed) {
							 | 
						||
| 
								 | 
							
								            register_code(KC_RSFT);
							 | 
						||
| 
								 | 
							
								          } else {
							 | 
						||
| 
								 | 
							
								            unregister_code(KC_RSFT);
							 | 
						||
| 
								 | 
							
								          }
							 | 
						||
| 
								 | 
							
								        break;
							 | 
						||
| 
								 | 
							
								      }
							 | 
						||
| 
								 | 
							
								    return MACRO_NONE;
							 | 
						||
| 
								 | 
							
								};
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								bool process_record_user(uint16_t keycode, keyrecord_t *record) {
							 | 
						||
| 
								 | 
							
								  uint16_t macro_kc = (keycode == MO(DYN) ? DYN_REC_STOP : keycode);
							 | 
						||
| 
								 | 
							
								  if (!process_record_dynamic_macro(macro_kc, record)) {
							 | 
						||
| 
								 | 
							
								    return false;
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  return true;
							 | 
						||
| 
								 | 
							
								}
							 |