summaryrefslogtreecommitdiffstats
path: root/keyboards/montsinger/rebound/rev4/keymaps/ericgebhart/keymap.c
blob: 59f2a23733e2ee5201cb376f30c3ef1ac521741d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
/*
  Copyright 2018 Eric Gebhart <e.a.gebhart@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 "ericgebhart.h"
#include "layouts.h"


const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
  // Qwerty based Base layers
  [_DVORAK]  = Rebound_base(___DVORAK___),
  [_BEAKL]   = Rebound_base(___BEAKL15___),
  [_COLEMAK] = Rebound_base(___COLEMAK_DH___),
  [_QWERTY]  = Rebound_base(___QWERTY___),

  // Bepo base layers
  [_BEAKL_BP]  = Rebound_base_bepo(___BEAKL15_FR___),
  [_DVORAK_BP] = Rebound_base_bepo(___DVORAK_FR___),
  [_BEPO]      = Rebound_base_bepo6(___BEPO6___),

  // Transient layers.
  [_SYMB]    = Rebound_transient(___SYMB_BEAKLA_3x12___),
  [_SYMB_BP] = Rebound_transient(___SYMB_BEAKLA_BP_3x12___),

  [_KEYPAD]    = Rebound_transient(___KP_C_3x12___),
  [_KEYPAD_BP] = Rebound_transient(___KP_C_BP_3x12___),

  [_TOPROWS]    = Rebound_transient(___TOPROWS_3x12___),
  [_TOPROWS_BP] = Rebound_transient(___TOPROWS_BP_3x12___),
  [_NAV]    = Rebound_transient(___NAV_3x12___),
  [_LAYERS] = Rebound_transient(___LAYERS_3x12___),
};


bool encoder_update_user(uint8_t index, bool clockwise) {
  switch(get_highest_layer(layer_state)){
  case _DVORAK:
    if (clockwise) {
      tap_code16(KC_VOLD);
    } else {
      tap_code16(KC_VOLU);
    }
    break;

  case _NAV:
    if (clockwise) {
      tap_code16(S(KC_TAB));
    } else {
      tap_code16(KC_TAB);
    }
    break;
  }
  return true;
}

#ifdef OLED_ENABLE
void oled_task_user(void) {
  // Host Keyboard Layer Status
  oled_write_P(PSTR(""), false);

  switch (get_highest_layer(layer_state)) {
  case _BASE:
    oled_write_P(PSTR("Rebound\n"), false);
    oled_write_P(PSTR("Rev4\n"), false);
    break;
  case _NAV:
    oled_write_P(PSTR("Nav\n"), false);
    break;
  case _SYMB_BEAKL:
  case _SYMB:
    oled_write_P(PSTR("Symbols\n"), false);
    break;
  case _KEYPAD:
    oled_write_P(PSTR("Top Rows\n"), false);
    break;
  default:
    // Or use the write_ln shortcut over adding '\n' to the end of your string
    oled_write_ln_P(PSTR("Undefined"), false);
  }

  // Host Keyboard LED Status
  led_t led_state = host_keyboard_led_state();
  oled_write_P(led_state.num_lock ? PSTR("NUM ") : PSTR("    "), false);
  oled_write_P(led_state.caps_lock ? PSTR("CAPS") : PSTR("    "), false);
  oled_write_P(led_state.scroll_lock ? PSTR("SCR ") : PSTR("    "), false);

}

#endif