summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJack Humbert <jack.humb@gmail.com>2016-01-25 00:29:26 -0500
committerJack Humbert <jack.humb@gmail.com>2016-01-25 00:29:26 -0500
commit51a5331136ae2795a9dbe842556ac2c724fdf290 (patch)
tree218b5903ba2aa53e92cf01353838e6ff4a5e11e2
parent216bbe99ce7146ad42c7cd1c2be1128dbe0c57f3 (diff)
working well on osxuser_functions
-rw-r--r--keyboard/planck/keymaps/lock/keymap.c51
-rw-r--r--quantum/keymap_unicode.c40
2 files changed, 71 insertions, 20 deletions
diff --git a/keyboard/planck/keymaps/lock/keymap.c b/keyboard/planck/keymaps/lock/keymap.c
index 93cfe7ad48..e5f09b42d0 100644
--- a/keyboard/planck/keymaps/lock/keymap.c
+++ b/keyboard/planck/keymaps/lock/keymap.c
@@ -18,32 +18,36 @@ const uint32_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
{KC_TAB, 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, KC_ENT},
- {M(0), KC_LCTL, KC_LALT, KC_LGUI, FUNC(2), KC_SPC, KC_SPC, FUNC(1), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT}
+ {M(0), KC_LCTL, KC_LALT, KC_LGUI, M(3), KC_SPC, KC_SPC, M(2), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT}
// Space is repeated to accommadate for both spacebar wiring positions
},
[1] = { /* Colemak */
{KC_TAB, UC_q, UC_w, UC_f, UC_p, UC_g, UC_j, UC_l, UC_u, UC_y, UC_SCLN, UC_BSPC},
{KC_ESC, UC_a, UC_r, UC_s, UC_t, UC_d, UC_h, UC_n, UC_e, UC_i, UC_o, UC_QUOT},
{KC_LSFT, UC_z, UC_x, UC_c, UC_v, UC_b, UC_k, UC_m, UC_COMM, UC_DOT, UC_SLSH, KC_ENT},
- {KC_TRNS, KC_LCTL, KC_LALT, KC_LGUI, FUNC(2), KC_SPC, KC_SPC, FUNC(1), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT}
+ {KC_TRNS, KC_LCTL, KC_LALT, KC_LGUI, M(3), KC_SPC, KC_SPC, M(2), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT}
},
[2] = { /* RAISE */
{KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC},
- {KC_TRNS, FUNC(3), FUNC(4), RESET, UC(0xD83C), UC(0xDF83), KC_TRNS, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS},
+ {KC_TRNS, FUNC(3), FUNC(4), RESET, UC(0x1F601), UC(0x1F618), KC_TRNS, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS},
{KC_TRNS, KC_F11, KC_F12, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS},
- {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, FUNC(1), KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY}
+ {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY}
},
[3] = { /* LOWER */
{S(KC_GRV), S(KC_1), S(KC_2), S(KC_3), S(KC_4), S(KC_5), S(KC_6), S(KC_7), S(KC_8), S(KC_9), S(KC_0), KC_BSPC},
- {KC_TRNS, FUNC(3), FUNC(4), RESET, UC(0xD83C), UC(0xDF83), KC_TRNS, S(KC_MINS), S(KC_EQL), S(KC_LBRC), S(KC_RBRC), S(KC_BSLS)},
+ {KC_TRNS, FUNC(3), FUNC(4), RESET, UC(0x1F601), UC(0x1F618), KC_TRNS, S(KC_MINS), S(KC_EQL), S(KC_LBRC), S(KC_RBRC), S(KC_BSLS)},
{KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_TRNS},
- {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, FUNC(2), KC_TRNS, KC_TRNS, KC_TRNS, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY}
+ {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY}
+},
+[4] = { /* Colemak */
+ {KC_TAB, UC_q, UC_w, UC_f, UC_p, UC_g, UC_j, UC_l, UC_u, UC_y, UC_SCLN, UC_BSPC},
+ {KC_ESC, UC_a, UC_r, UC_s, UC_t, UC_d, UC_h, UC_n, UC_e, UC_i, UC_o, UC_QUOT},
+ {KC_LSFT, UC_z, UC_x, UC_c, UC_v, UC_b, UC_k, UC_m, UC_COMM, UC_DOT, UC_SLSH, KC_ENT},
+ {KC_TRNS, KC_LCTL, KC_LALT, KC_LGUI, M(3), KC_SPC, KC_SPC, M(2), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT}
}
};
const uint16_t PROGMEM fn_actions[] = {
- [1] = ACTION_LAYER_MOMENTARY(2), // to RAISE
- [2] = ACTION_LAYER_MOMENTARY(3), // to LOWER
[3] = ACTION_DEFAULT_LAYER_SET(0),
[4] = ACTION_DEFAULT_LAYER_SET(1),
@@ -72,10 +76,41 @@ float walk_dn[][2] = {
{440.0*pow(2.0,(60)/12.0), 600},
};
+int tri_layer = 0;
+void update_tri_layer(int layer) {
+ if (tri_layer > 1) {
+ layer_on(layer);
+ } else {
+ layer_off(layer);
+ }
+}
+
const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
{
// MACRODOWN only works in this function
switch(id) {
+ case 2:
+ if (record->event.pressed) {
+ layer_on(2);
+ tri_layer++;
+ update_tri_layer(4);
+ } else {
+ layer_off(2);
+ tri_layer--;
+ update_tri_layer(4);
+ }
+ break;
+ case 3:
+ if (record->event.pressed) {
+ layer_on(3);
+ tri_layer++;
+ update_tri_layer(4);
+ } else {
+ layer_off(3);
+ tri_layer--;
+ update_tri_layer(4);
+ }
+ break;
case 0:
if (record->event.pressed) {
diff --git a/quantum/keymap_unicode.c b/quantum/keymap_unicode.c
index cda167d2c1..0511ffc178 100644
--- a/quantum/keymap_unicode.c
+++ b/quantum/keymap_unicode.c
@@ -39,20 +39,36 @@ void action_custom(keyrecord_t *record, uint32_t code)
register_code(KC_LALT);
#endif
- uint32_t unicode = code;
- bool leading_zero = false;
- for(int i = 6; i >= 0; i--) {
- uint8_t digit = ((unicode >> (int)(i*4)) & 0xF);
- if (digit > 0 || leading_zero || (i < 4)) {
- leading_zero = true;
+ if (code <= 0xFFFF) {
+ uint16_t unicode = (code & 0xFFFF);
+ for(int i = 3; i >= 0; i--) {
+ uint8_t digit = ((unicode >> (i*4)) & 0xF);
+ register_code(hextokeycode(digit));
+ unregister_code(hextokeycode(digit));
+ }
+ } else {
+ code = (code - 0x10000);
+ uint16_t high_uc = (0xD800 | (code >> 10));
+ uint16_t low_uc = (0xDC00 | (code & 0x3FF));
+ for(int i = 3; i >= 0; i--) {
+ uint8_t digit = ((high_uc >> (i*4)) & 0xF);
+ register_code(hextokeycode(digit));
+ unregister_code(hextokeycode(digit));
+ }
+
+ // #ifdef UNICODE_OSX
+ // unregister_code(KC_LALT);
+ // register_code(KC_LALT);
+ // #endif
+
+ register_code(KC_LSFT);
+ register_code(KC_EQL);
+ unregister_code(KC_EQL);
+ unregister_code(KC_LSFT);
+ for(int i = 3; i >= 0; i--) {
+ uint8_t digit = ((low_uc >> (i*4)) & 0xF);
register_code(hextokeycode(digit));
unregister_code(hextokeycode(digit));
- if (i == 4) {
- register_code(KC_LSFT);
- register_code(KC_EQL);
- unregister_code(KC_EQL);
- unregister_code(KC_LSFT);
- }
}
}