aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--keyboards/atreus62/atreus62.h38
-rw-r--r--keyboards/clueboard/keymaps/caps_fn/keymap.c5
-rw-r--r--keyboards/clueboard/keymaps/colemak/keymap.c5
-rw-r--r--keyboards/clueboard/keymaps/default/keymap.c5
-rw-r--r--keyboards/clueboard/keymaps/mac_optimized/keymap.c5
-rw-r--r--keyboards/clueboard/keymaps/mouse_keys/keymap.c5
-rw-r--r--keyboards/clueboard/keymaps/shift_fn/keymap.c5
-rw-r--r--keyboards/clueboard/keymaps/skully/keymap.c5
-rw-r--r--keyboards/clueboard/keymaps/unix_optimized/keymap.c5
-rw-r--r--keyboards/clueboard/keymaps/win_optimized/keymap.c5
-rw-r--r--keyboards/xd60/keymaps/cheese/README.md13
-rw-r--r--keyboards/xd60/keymaps/cheese/base_layout.pngbin0 -> 23729 bytes
-rw-r--r--keyboards/xd60/keymaps/cheese/fn_layout.pngbin0 -> 20690 bytes
-rw-r--r--keyboards/xd60/keymaps/cheese/keymap.c67
-rw-r--r--quantum/quantum.c8
-rw-r--r--quantum/quantum_keycodes.h3
-rw-r--r--tmk_core/common.mk14
-rw-r--r--tmk_core/protocol/lufa.mk12
-rw-r--r--tmk_core/protocol/lufa/adafruit_ble.h4
-rw-r--r--tmk_core/protocol/lufa/lufa.c73
-rw-r--r--tmk_core/protocol/lufa/outputselect.c6
-rw-r--r--tmk_core/protocol/lufa/outputselect.h1
22 files changed, 201 insertions, 83 deletions
diff --git a/keyboards/atreus62/atreus62.h b/keyboards/atreus62/atreus62.h
index eacf5b451..ca5cda8a8 100644
--- a/keyboards/atreus62/atreus62.h
+++ b/keyboards/atreus62/atreus62.h
@@ -9,18 +9,34 @@ void promicro_bootloader_jmp(bool program);
9// The first section contains all of the arguements 9// The first section contains all of the arguements
10// The second converts the arguments into a two-dimensional array 10// The second converts the arguments into a two-dimensional array
11#define KEYMAP( \ 11#define KEYMAP( \
12 k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, \ 12 k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, \
13 k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, \ 13 k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, \
14 k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, \ 14 k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, \
15 k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, \ 15 k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, \
16 k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4a, k4b, k4c, k4d \ 16 k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4a, k4b, k4c, k4d \
17) \ 17) \
18{ \ 18{ \
19 { k00, k01, k02, k03, k04, k05, KC_NO, k06, k07, k08, k09, k0a, k0b }, \ 19 { k00, k01, k02, k03, k04, k05, KC_NO, k06, k07, k08, k09, k0a, k0b }, \
20 { k10, k11, k12, k13, k14, k15, KC_NO, k16, k17, k18, k19, k1a, k1b }, \ 20 { k10, k11, k12, k13, k14, k15, KC_NO, k16, k17, k18, k19, k1a, k1b }, \
21 { k20, k21, k22, k23, k24, k25, KC_NO, k26, k27, k28, k29, k2a, k2b }, \ 21 { k20, k21, k22, k23, k24, k25, KC_NO, k26, k27, k28, k29, k2a, k2b }, \
22 { k30, k31, k32, k33, k34, k35, k46, k36, k37, k38, k39, k3a, k3b }, \ 22 { k30, k31, k32, k33, k34, k35, k46, k36, k37, k38, k39, k3a, k3b }, \
23 { k40, k41, k42, k43, k44, k45, k47, k48, k49, k4a, k4b, k4c, k4d } \ 23 { k40, k41, k42, k43, k44, k45, k47, k48, k49, k4a, k4b, k4c, k4d } \
24} 24}
25 25
26#endif \ No newline at end of file 26// Used to create a keymap using only KC_ prefixed keys.
27#define KC_KEYMAP( \
28 k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, \
29 k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, \
30 k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, \
31 k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, \
32 k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4a, k4b, k4c, k4d \
33) \
34{ \
35 { KC_##k00, KC_##k01, KC_##k02, KC_##k03, KC_##k04, KC_##k05, KC_NO, KC_##k06, KC_##k07, KC_##k08, KC_##k09, KC_##k0a, KC_##k0b }, \
36 { KC_##k10, KC_##k11, KC_##k12, KC_##k13, KC_##k14, KC_##k15, KC_NO, KC_##k16, KC_##k17, KC_##k18, KC_##k19, KC_##k1a, KC_##k1b }, \
37 { KC_##k20, KC_##k21, KC_##k22, KC_##k23, KC_##k24, KC_##k25, KC_NO, KC_##k26, KC_##k27, KC_##k28, KC_##k29, KC_##k2a, KC_##k2b }, \
38 { KC_##k30, KC_##k31, KC_##k32, KC_##k33, KC_##k34, KC_##k35, KC_##k46, KC_##k36, KC_##k37, KC_##k38, KC_##k39, KC_##k3a, KC_##k3b }, \
39 { KC_##k40, KC_##k41, KC_##k42, KC_##k43, KC_##k44, KC_##k45, KC_##k47, KC_##k48, KC_##k49, KC_##k4a, KC_##k4b, KC_##k4c, KC_##k4d } \
40}
41
42#endif
diff --git a/keyboards/clueboard/keymaps/caps_fn/keymap.c b/keyboards/clueboard/keymaps/caps_fn/keymap.c
index 37f00e8d8..7fad9c1b2 100644
--- a/keyboards/clueboard/keymaps/caps_fn/keymap.c
+++ b/keyboards/clueboard/keymaps/caps_fn/keymap.c
@@ -50,6 +50,7 @@ const uint16_t PROGMEM fn_actions[] = {
50 50
51void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) { 51void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) {
52 static uint8_t mods_pressed; 52 static uint8_t mods_pressed;
53 static bool mod_flag;
53 54
54 switch (id) { 55 switch (id) {
55 case 0: 56 case 0:
@@ -61,6 +62,7 @@ void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) {
61 /* The key is being pressed. 62 /* The key is being pressed.
62 */ 63 */
63 if (mods_pressed) { 64 if (mods_pressed) {
65 mod_flag = true;
64 add_key(KC_GRV); 66 add_key(KC_GRV);
65 send_keyboard_report(); 67 send_keyboard_report();
66 } else { 68 } else {
@@ -70,7 +72,8 @@ void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) {
70 } else { 72 } else {
71 /* The key is being released. 73 /* The key is being released.
72 */ 74 */
73 if (mods_pressed) { 75 if (mod_flag) {
76 mod_flag = false;
74 del_key(KC_GRV); 77 del_key(KC_GRV);
75 send_keyboard_report(); 78 send_keyboard_report();
76 } else { 79 } else {
diff --git a/keyboards/clueboard/keymaps/colemak/keymap.c b/keyboards/clueboard/keymaps/colemak/keymap.c
index 6b1fc7c9c..42c85ff9d 100644
--- a/keyboards/clueboard/keymaps/colemak/keymap.c
+++ b/keyboards/clueboard/keymaps/colemak/keymap.c
@@ -50,6 +50,7 @@ const uint16_t PROGMEM fn_actions[] = {
50 50
51void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) { 51void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) {
52 static uint8_t mods_pressed; 52 static uint8_t mods_pressed;
53 static bool mod_flag;
53 54
54 switch (id) { 55 switch (id) {
55 case 0: 56 case 0:
@@ -61,6 +62,7 @@ void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) {
61 /* The key is being pressed. 62 /* The key is being pressed.
62 */ 63 */
63 if (mods_pressed) { 64 if (mods_pressed) {
65 mod_flag = true;
64 add_key(KC_GRV); 66 add_key(KC_GRV);
65 send_keyboard_report(); 67 send_keyboard_report();
66 } else { 68 } else {
@@ -70,7 +72,8 @@ void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) {
70 } else { 72 } else {
71 /* The key is being released. 73 /* The key is being released.
72 */ 74 */
73 if (mods_pressed) { 75 if (mod_flag) {
76 mod_flag = false;
74 del_key(KC_GRV); 77 del_key(KC_GRV);
75 send_keyboard_report(); 78 send_keyboard_report();
76 } else { 79 } else {
diff --git a/keyboards/clueboard/keymaps/default/keymap.c b/keyboards/clueboard/keymaps/default/keymap.c
index 37f00e8d8..7fad9c1b2 100644
--- a/keyboards/clueboard/keymaps/default/keymap.c
+++ b/keyboards/clueboard/keymaps/default/keymap.c
@@ -50,6 +50,7 @@ const uint16_t PROGMEM fn_actions[] = {
50 50
51void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) { 51void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) {
52 static uint8_t mods_pressed; 52 static uint8_t mods_pressed;
53 static bool mod_flag;
53 54
54 switch (id) { 55 switch (id) {
55 case 0: 56 case 0:
@@ -61,6 +62,7 @@ void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) {
61 /* The key is being pressed. 62 /* The key is being pressed.
62 */ 63 */
63 if (mods_pressed) { 64 if (mods_pressed) {
65 mod_flag = true;
64 add_key(KC_GRV); 66 add_key(KC_GRV);
65 send_keyboard_report(); 67 send_keyboard_report();
66 } else { 68 } else {
@@ -70,7 +72,8 @@ void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) {
70 } else { 72 } else {
71 /* The key is being released. 73 /* The key is being released.
72 */ 74 */
73 if (mods_pressed) { 75 if (mod_flag) {
76 mod_flag = false;
74 del_key(KC_GRV); 77 del_key(KC_GRV);
75 send_keyboard_report(); 78 send_keyboard_report();
76 } else { 79 } else {
diff --git a/keyboards/clueboard/keymaps/mac_optimized/keymap.c b/keyboards/clueboard/keymaps/mac_optimized/keymap.c
index 59f7ff243..7ea02d27e 100644
--- a/keyboards/clueboard/keymaps/mac_optimized/keymap.c
+++ b/keyboards/clueboard/keymaps/mac_optimized/keymap.c
@@ -50,6 +50,7 @@ const uint16_t PROGMEM fn_actions[] = {
50 50
51void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) { 51void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) {
52 static uint8_t mods_pressed; 52 static uint8_t mods_pressed;
53 static bool mod_flag;
53 54
54 switch (id) { 55 switch (id) {
55 case 0: 56 case 0:
@@ -61,6 +62,7 @@ void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) {
61 /* The key is being pressed. 62 /* The key is being pressed.
62 */ 63 */
63 if (mods_pressed) { 64 if (mods_pressed) {
65 mod_flag = true;
64 add_key(KC_GRV); 66 add_key(KC_GRV);
65 send_keyboard_report(); 67 send_keyboard_report();
66 } else { 68 } else {
@@ -70,7 +72,8 @@ void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) {
70 } else { 72 } else {
71 /* The key is being released. 73 /* The key is being released.
72 */ 74 */
73 if (mods_pressed) { 75 if (mod_flag) {
76 mod_flag = false;
74 del_key(KC_GRV); 77 del_key(KC_GRV);
75 send_keyboard_report(); 78 send_keyboard_report();
76 } else { 79 } else {
diff --git a/keyboards/clueboard/keymaps/mouse_keys/keymap.c b/keyboards/clueboard/keymaps/mouse_keys/keymap.c
index a9c5cebd0..d3108d1e2 100644
--- a/keyboards/clueboard/keymaps/mouse_keys/keymap.c
+++ b/keyboards/clueboard/keymaps/mouse_keys/keymap.c
@@ -60,6 +60,7 @@ const uint16_t PROGMEM fn_actions[] = {
60 60
61void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) { 61void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) {
62 static uint8_t mods_pressed; 62 static uint8_t mods_pressed;
63 static bool mod_flag;
63 64
64 switch (id) { 65 switch (id) {
65 case 0: 66 case 0:
@@ -71,6 +72,7 @@ void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) {
71 /* The key is being pressed. 72 /* The key is being pressed.
72 */ 73 */
73 if (mods_pressed) { 74 if (mods_pressed) {
75 mod_flag = true;
74 add_key(KC_GRV); 76 add_key(KC_GRV);
75 send_keyboard_report(); 77 send_keyboard_report();
76 } else { 78 } else {
@@ -80,7 +82,8 @@ void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) {
80 } else { 82 } else {
81 /* The key is being released. 83 /* The key is being released.
82 */ 84 */
83 if (mods_pressed) { 85 if (mod_flag) {
86 mod_flag = false;
84 del_key(KC_GRV); 87 del_key(KC_GRV);
85 send_keyboard_report(); 88 send_keyboard_report();
86 } else { 89 } else {
diff --git a/keyboards/clueboard/keymaps/shift_fn/keymap.c b/keyboards/clueboard/keymaps/shift_fn/keymap.c
index f21b9b589..c4fae0369 100644
--- a/keyboards/clueboard/keymaps/shift_fn/keymap.c
+++ b/keyboards/clueboard/keymaps/shift_fn/keymap.c
@@ -50,6 +50,7 @@ const uint16_t PROGMEM fn_actions[] = {
50 50
51void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) { 51void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) {
52 static uint8_t mods_pressed; 52 static uint8_t mods_pressed;
53 static bool mod_flag;
53 54
54 switch (id) { 55 switch (id) {
55 case 0: 56 case 0:
@@ -61,6 +62,7 @@ void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) {
61 /* The key is being pressed. 62 /* The key is being pressed.
62 */ 63 */
63 if (mods_pressed) { 64 if (mods_pressed) {
65 mod_flag = true;
64 add_key(KC_GRV); 66 add_key(KC_GRV);
65 send_keyboard_report(); 67 send_keyboard_report();
66 } else { 68 } else {
@@ -70,7 +72,8 @@ void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) {
70 } else { 72 } else {
71 /* The key is being released. 73 /* The key is being released.
72 */ 74 */
73 if (mods_pressed) { 75 if (mod_flag) {
76 mod_flag = false;
74 del_key(KC_GRV); 77 del_key(KC_GRV);
75 send_keyboard_report(); 78 send_keyboard_report();
76 } else { 79 } else {
diff --git a/keyboards/clueboard/keymaps/skully/keymap.c b/keyboards/clueboard/keymaps/skully/keymap.c
index 295090352..077d214fa 100644
--- a/keyboards/clueboard/keymaps/skully/keymap.c
+++ b/keyboards/clueboard/keymaps/skully/keymap.c
@@ -47,6 +47,7 @@ const uint16_t PROGMEM fn_actions[] = {
47 47
48void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) { 48void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) {
49 static uint8_t mods_pressed; 49 static uint8_t mods_pressed;
50 static bool mod_flag;
50 51
51 switch (id) { 52 switch (id) {
52 case 0: 53 case 0:
@@ -58,6 +59,7 @@ void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) {
58 /* The key is being pressed. 59 /* The key is being pressed.
59 */ 60 */
60 if (mods_pressed) { 61 if (mods_pressed) {
62 mod_flag = true;
61 add_key(KC_GRV); 63 add_key(KC_GRV);
62 send_keyboard_report(); 64 send_keyboard_report();
63 } else { 65 } else {
@@ -67,7 +69,8 @@ void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) {
67 } else { 69 } else {
68 /* The key is being released. 70 /* The key is being released.
69 */ 71 */
70 if (mods_pressed) { 72 if (mod_flag) {
73 mod_flag = false;
71 del_key(KC_GRV); 74 del_key(KC_GRV);
72 send_keyboard_report(); 75 send_keyboard_report();
73 } else { 76 } else {
diff --git a/keyboards/clueboard/keymaps/unix_optimized/keymap.c b/keyboards/clueboard/keymaps/unix_optimized/keymap.c
index 9fbd77240..7c1359954 100644
--- a/keyboards/clueboard/keymaps/unix_optimized/keymap.c
+++ b/keyboards/clueboard/keymaps/unix_optimized/keymap.c
@@ -50,6 +50,7 @@ const uint16_t PROGMEM fn_actions[] = {
50 50
51void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) { 51void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) {
52 static uint8_t mods_pressed; 52 static uint8_t mods_pressed;
53 static bool mod_flag;
53 54
54 switch (id) { 55 switch (id) {
55 case 0: 56 case 0:
@@ -61,6 +62,7 @@ void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) {
61 /* The key is being pressed. 62 /* The key is being pressed.
62 */ 63 */
63 if (mods_pressed) { 64 if (mods_pressed) {
65 mod_flag = true;
64 add_key(KC_GRV); 66 add_key(KC_GRV);
65 send_keyboard_report(); 67 send_keyboard_report();
66 } else { 68 } else {
@@ -70,7 +72,8 @@ void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) {
70 } else { 72 } else {
71 /* The key is being released. 73 /* The key is being released.
72 */ 74 */
73 if (mods_pressed) { 75 if (mod_flag) {
76 mod_flag = false;
74 del_key(KC_GRV); 77 del_key(KC_GRV);
75 send_keyboard_report(); 78 send_keyboard_report();
76 } else { 79 } else {
diff --git a/keyboards/clueboard/keymaps/win_optimized/keymap.c b/keyboards/clueboard/keymaps/win_optimized/keymap.c
index a85f0824f..c5553ff1f 100644
--- a/keyboards/clueboard/keymaps/win_optimized/keymap.c
+++ b/keyboards/clueboard/keymaps/win_optimized/keymap.c
@@ -50,6 +50,7 @@ const uint16_t PROGMEM fn_actions[] = {
50 50
51void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) { 51void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) {
52 static uint8_t mods_pressed; 52 static uint8_t mods_pressed;
53 static bool mod_flag;
53 54
54 switch (id) { 55 switch (id) {
55 case 0: 56 case 0:
@@ -61,6 +62,7 @@ void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) {
61 /* The key is being pressed. 62 /* The key is being pressed.
62 */ 63 */
63 if (mods_pressed) { 64 if (mods_pressed) {
65 mod_flag = true;
64 add_key(KC_GRV); 66 add_key(KC_GRV);
65 send_keyboard_report(); 67 send_keyboard_report();
66 } else { 68 } else {
@@ -70,7 +72,8 @@ void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) {
70 } else { 72 } else {
71 /* The key is being released. 73 /* The key is being released.
72 */ 74 */
73 if (mods_pressed) { 75 if (mod_flag) {
76 mod_flag = false;
74 del_key(KC_GRV); 77 del_key(KC_GRV);
75 send_keyboard_report(); 78 send_keyboard_report();
76 } else { 79 } else {
diff --git a/keyboards/xd60/keymaps/cheese/README.md b/keyboards/xd60/keymaps/cheese/README.md
new file mode 100644
index 000000000..8a5b97c03
--- /dev/null
+++ b/keyboards/xd60/keymaps/cheese/README.md
@@ -0,0 +1,13 @@
1# cheese's Layout
2Customized xd60 keymap
3
4![Base Layout](base_layout.png "Base Layout")
5![Fn Layout](fn_layout.png "Fn Layout")
6
7## Programming Instructions:
8`cd` into keymap directory, `make dfu`
9
10## Features
11- Media keys and movement keys setup like on the pok3r
12- Lower right movement keys setup like on the fc660m (fn+direction for home/end/page up and down)
13- Caps lock can be triggered by pressing both shift keys at the same time (and deactivated the same way)
diff --git a/keyboards/xd60/keymaps/cheese/base_layout.png b/keyboards/xd60/keymaps/cheese/base_layout.png
new file mode 100644
index 000000000..211c4c731
--- /dev/null
+++ b/keyboards/xd60/keymaps/cheese/base_layout.png
Binary files differ
diff --git a/keyboards/xd60/keymaps/cheese/fn_layout.png b/keyboards/xd60/keymaps/cheese/fn_layout.png
new file mode 100644
index 000000000..fe5ae99e0
--- /dev/null
+++ b/keyboards/xd60/keymaps/cheese/fn_layout.png
Binary files differ
diff --git a/keyboards/xd60/keymaps/cheese/keymap.c b/keyboards/xd60/keymaps/cheese/keymap.c
new file mode 100644
index 000000000..25919a41f
--- /dev/null
+++ b/keyboards/xd60/keymaps/cheese/keymap.c
@@ -0,0 +1,67 @@
1#include "xd60.h"
2#include "action_layer.h"
3
4// Each layer gets a name for readability.
5// The underscores don't mean anything - you can
6// have a layer called STUFF or any other name.
7// Layer names don't all need to be of the same
8// length, and you can also skip them entirely
9// and just use numbers.
10#define _BL 0
11#define _FL 1
12#define _LS 2
13#define _RS 3
14
15const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
16
17 /* (Base Layer) Default Layer
18 * ,-----------------------------------------------------------.
19 * |Esc~| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =|Backsp |
20 * |-----------------------------------------------------------|
21 * |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]| \ |
22 * |-----------------------------------------------------------|
23 * |FUNCTION| A| S| D| F| G| H| J| K| L| ;| '|Return|
24 * |-----------------------------------------------------------|
25 * |Shift | Z| X| C| V| B| N| M| ,| .| /|Shift |
26 * |-----------------------------------------------------------|
27 * |Ctrl|Gui |Alt | Space |FN|Left|Up|Down|Right|
28 * `-----------------------------------------------------------'
29 */
30 [_BL] = KEYMAP(
31 KC_ESC, 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_BSPC, KC_BSPC, \
32 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_BSLS, \
33 MO(_FL), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NO, KC_ENT, \
34 F(0), KC_NO, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, F(1), F(1), F(1), \
35 KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, MO(_FL), KC_LEFT, KC_UP, KC_DOWN, KC_RIGHT),
36
37// Function Layer
38 [_FL] = KEYMAP(
39 KC_GRV, 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_DEL, KC_DEL, \
40 KC_TRNS, KC_MPRV, KC_MPLY, KC_MNXT, KC_TRNS, KC_CALC, KC_INS, KC_PGUP, KC_UP, KC_PGDN, KC_PSCR, KC_SLCK, KC_PAUS, KC_TRNS, \
41 KC_TRNS, KC_VOLD, KC_MUTE, KC_VOLU, KC_TRNS, KC_TRNS, KC_HOME, KC_LEFT, KC_DOWN, KC_RGHT, KC_END, KC_TRNS, KC_TRNS, KC_TRNS, \
42 KC_TRNS, KC_TRNS, KC_APP, KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_TRNS, KC_TRNS, \
43 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_HOME, KC_PGUP, KC_PGDN, KC_END),
44
45// Left Shift Layer
46 [_LS] = KEYMAP(
47 KC_GRV, 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, \
48 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, \
49 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, \
50 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_CAPS, KC_CAPS, KC_CAPS, \
51 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
52
53// Right Shift Layer
54 [_RS] = KEYMAP(
55 KC_GRV, 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, \
56 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, \
57 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, \
58 KC_CAPS, 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, \
59 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
60
61};
62
63// Custom Actions
64const uint16_t PROGMEM fn_actions[] = {
65 [0] = ACTION_LAYER_MODS(_LS, MOD_LSFT),
66 [1] = ACTION_LAYER_MODS(_RS, MOD_RSFT),
67};
diff --git a/quantum/quantum.c b/quantum/quantum.c
index 582f8920b..807a7084a 100644
--- a/quantum/quantum.c
+++ b/quantum/quantum.c
@@ -294,14 +294,6 @@ bool process_record_quantum(keyrecord_t *record) {
294 return false; 294 return false;
295 break; 295 break;
296 #endif 296 #endif
297 #ifdef ADAFRUIT_BLE_ENABLE
298 case OUT_BLE:
299 if (record->event.pressed) {
300 set_output(OUTPUT_ADAFRUIT_BLE);
301 }
302 return false;
303 break;
304 #endif
305 #endif 297 #endif
306 case MAGIC_SWAP_CONTROL_CAPSLOCK ... MAGIC_TOGGLE_NKRO: 298 case MAGIC_SWAP_CONTROL_CAPSLOCK ... MAGIC_TOGGLE_NKRO:
307 if (record->event.pressed) { 299 if (record->event.pressed) {
diff --git a/quantum/quantum_keycodes.h b/quantum/quantum_keycodes.h
index 903d57f1e..78b02a0de 100644
--- a/quantum/quantum_keycodes.h
+++ b/quantum/quantum_keycodes.h
@@ -159,9 +159,6 @@ enum quantum_keycodes {
159#ifdef BLUETOOTH_ENABLE 159#ifdef BLUETOOTH_ENABLE
160 OUT_BT, 160 OUT_BT,
161#endif 161#endif
162#ifdef ADAFRUIT_BLE_ENABLE
163 OUT_BLE,
164#endif
165 162
166 // always leave at the end 163 // always leave at the end
167 SAFE_RANGE 164 SAFE_RANGE
diff --git a/tmk_core/common.mk b/tmk_core/common.mk
index a86dccc61..47f6fc571 100644
--- a/tmk_core/common.mk
+++ b/tmk_core/common.mk
@@ -93,14 +93,20 @@ ifeq ($(strip $(BACKLIGHT_ENABLE)), yes)
93 TMK_COMMON_DEFS += -DBACKLIGHT_ENABLE 93 TMK_COMMON_DEFS += -DBACKLIGHT_ENABLE
94endif 94endif
95 95
96ifeq ($(strip $(ADAFRUIT_BLE_ENABLE)), yes)
97 TMK_COMMON_DEFS += -DADAFRUIT_BLE_ENABLE
98endif
99
100ifeq ($(strip $(BLUETOOTH_ENABLE)), yes) 96ifeq ($(strip $(BLUETOOTH_ENABLE)), yes)
101 TMK_COMMON_DEFS += -DBLUETOOTH_ENABLE 97 TMK_COMMON_DEFS += -DBLUETOOTH_ENABLE
102endif 98endif
103 99
100ifeq ($(strip $(BLUETOOTH)), AdafruitBLE)
101 TMK_COMMON_DEFS += -DBLUETOOTH_ENABLE
102 TMK_COMMON_DEFS += -DMODULE_ADAFRUIT_BLE
103endif
104
105ifeq ($(strip $(BLUETOOTH)), AdafruitEZKey)
106 TMK_COMMON_DEFS += -DBLUETOOTH_ENABLE
107 TMK_COMMON_DEFS += -DMODULE_ADAFRUIT_EZKEY
108endif
109
104ifeq ($(strip $(ONEHAND_ENABLE)), yes) 110ifeq ($(strip $(ONEHAND_ENABLE)), yes)
105 TMK_COMMON_DEFS += -DONEHAND_ENABLE 111 TMK_COMMON_DEFS += -DONEHAND_ENABLE
106endif 112endif
diff --git a/tmk_core/protocol/lufa.mk b/tmk_core/protocol/lufa.mk
index de0cc795f..5b1577972 100644
--- a/tmk_core/protocol/lufa.mk
+++ b/tmk_core/protocol/lufa.mk
@@ -22,11 +22,16 @@ ifeq ($(strip $(MIDI_ENABLE)), yes)
22 include $(TMK_PATH)/protocol/midi.mk 22 include $(TMK_PATH)/protocol/midi.mk
23endif 23endif
24 24
25ifeq ($(strip $(ADAFRUIT_BLE_ENABLE)), yes) 25ifeq ($(strip $(BLUETOOTH_ENABLE)), yes)
26 LUFA_SRC += $(LUFA_DIR)/adafruit_ble.cpp 26 LUFA_SRC += $(LUFA_DIR)/bluetooth.c \
27 $(TMK_DIR)/protocol/serial_uart.c
27endif 28endif
28 29
29ifeq ($(strip $(BLUETOOTH_ENABLE)), yes) 30ifeq ($(strip $(BLUETOOTH)), AdafruitBLE)
31 LUFA_SRC += $(LUFA_DIR)/adafruit_ble.cpp
32endif
33
34ifeq ($(strip $(BLUETOOTH)), AdafruitEZKey)
30 LUFA_SRC += $(LUFA_DIR)/bluetooth.c \ 35 LUFA_SRC += $(LUFA_DIR)/bluetooth.c \
31 $(TMK_DIR)/protocol/serial_uart.c 36 $(TMK_DIR)/protocol/serial_uart.c
32endif 37endif
@@ -54,6 +59,7 @@ LUFA_OPTS += -DUSE_FLASH_DESCRIPTORS
54LUFA_OPTS += -DUSE_STATIC_OPTIONS="(USB_DEVICE_OPT_FULLSPEED | USB_OPT_REG_ENABLED | USB_OPT_AUTO_PLL)" 59LUFA_OPTS += -DUSE_STATIC_OPTIONS="(USB_DEVICE_OPT_FULLSPEED | USB_OPT_REG_ENABLED | USB_OPT_AUTO_PLL)"
55#LUFA_OPTS += -DINTERRUPT_CONTROL_ENDPOINT 60#LUFA_OPTS += -DINTERRUPT_CONTROL_ENDPOINT
56LUFA_OPTS += -DFIXED_CONTROL_ENDPOINT_SIZE=8 61LUFA_OPTS += -DFIXED_CONTROL_ENDPOINT_SIZE=8
62LUFA_OPTS += -DFIXED_CONTROL_ENDPOINT_SIZE=8
57LUFA_OPTS += -DFIXED_NUM_CONFIGURATIONS=1 63LUFA_OPTS += -DFIXED_NUM_CONFIGURATIONS=1
58 64
59# Remote wakeup fix for ATmega32U2 https://github.com/tmk/tmk_keyboard/issues/361 65# Remote wakeup fix for ATmega32U2 https://github.com/tmk/tmk_keyboard/issues/361
diff --git a/tmk_core/protocol/lufa/adafruit_ble.h b/tmk_core/protocol/lufa/adafruit_ble.h
index 351fd55ae..b3bab3ca0 100644
--- a/tmk_core/protocol/lufa/adafruit_ble.h
+++ b/tmk_core/protocol/lufa/adafruit_ble.h
@@ -3,7 +3,7 @@
3 * Supports the Adafruit BLE board built around the nRF51822 chip. 3 * Supports the Adafruit BLE board built around the nRF51822 chip.
4 */ 4 */
5#pragma once 5#pragma once
6#ifdef ADAFRUIT_BLE_ENABLE 6#ifdef MODULE_ADAFRUIT_BLE
7#include <stdbool.h> 7#include <stdbool.h>
8#include <stdint.h> 8#include <stdint.h>
9#include <string.h> 9#include <string.h>
@@ -57,4 +57,4 @@ extern bool adafruit_ble_set_power_level(int8_t level);
57} 57}
58#endif 58#endif
59 59
60#endif // ADAFRUIT_BLE_ENABLE 60#endif // MODULE_ADAFRUIT_BLE
diff --git a/tmk_core/protocol/lufa/lufa.c b/tmk_core/protocol/lufa/lufa.c
index ba49284c9..4cb23ebc8 100644
--- a/tmk_core/protocol/lufa/lufa.c
+++ b/tmk_core/protocol/lufa/lufa.c
@@ -67,10 +67,11 @@
67#endif 67#endif
68 68
69#ifdef BLUETOOTH_ENABLE 69#ifdef BLUETOOTH_ENABLE
70 #include "bluetooth.h" 70 #ifdef MODULE_ADAFRUIT_BLE
71#endif
72#ifdef ADAFRUIT_BLE_ENABLE
73 #include "adafruit_ble.h" 71 #include "adafruit_ble.h"
72 #else
73 #include "bluetooth.h"
74 #endif
74#endif 75#endif
75 76
76#ifdef VIRTSER_ENABLE 77#ifdef VIRTSER_ENABLE
@@ -602,18 +603,16 @@ static void send_keyboard(report_keyboard_t *report)
602 uint8_t where = where_to_send(); 603 uint8_t where = where_to_send();
603 604
604#ifdef BLUETOOTH_ENABLE 605#ifdef BLUETOOTH_ENABLE
605 if (where == OUTPUT_BLUETOOTH || where == OUTPUT_USB_AND_BT) { 606 if (where == OUTPUT_BLUETOOTH || where == OUTPUT_USB_AND_BT) {
606 bluefruit_serial_send(0xFD); 607 #ifdef MODULE_ADAFRUIT_BLE
607 for (uint8_t i = 0; i < KEYBOARD_EPSIZE; i++) {
608 bluefruit_serial_send(report->raw[i]);
609 }
610 }
611#endif
612
613#ifdef ADAFRUIT_BLE_ENABLE
614 if (where == OUTPUT_ADAFRUIT_BLE) {
615 adafruit_ble_send_keys(report->mods, report->keys, sizeof(report->keys)); 608 adafruit_ble_send_keys(report->mods, report->keys, sizeof(report->keys));
616 } 609 #else
610 bluefruit_serial_send(0xFD);
611 for (uint8_t i = 0; i < KEYBOARD_EPSIZE; i++) {
612 bluefruit_serial_send(report->raw[i]);
613 }
614 #endif
615 }
617#endif 616#endif
618 617
619 if (where != OUTPUT_USB && where != OUTPUT_USB_AND_BT) { 618 if (where != OUTPUT_USB && where != OUTPUT_USB_AND_BT) {
@@ -660,24 +659,22 @@ static void send_mouse(report_mouse_t *report)
660 uint8_t where = where_to_send(); 659 uint8_t where = where_to_send();
661 660
662#ifdef BLUETOOTH_ENABLE 661#ifdef BLUETOOTH_ENABLE
663 if (where == OUTPUT_BLUETOOTH || where == OUTPUT_USB_AND_BT) { 662 if (where == OUTPUT_BLUETOOTH || where == OUTPUT_USB_AND_BT) {
664 bluefruit_serial_send(0xFD); 663 #ifdef MODULE_ADAFRUIT_BLE
665 bluefruit_serial_send(0x00);
666 bluefruit_serial_send(0x03);
667 bluefruit_serial_send(report->buttons);
668 bluefruit_serial_send(report->x);
669 bluefruit_serial_send(report->y);
670 bluefruit_serial_send(report->v); // should try sending the wheel v here
671 bluefruit_serial_send(report->h); // should try sending the wheel h here
672 bluefruit_serial_send(0x00);
673 }
674#endif
675
676#ifdef ADAFRUIT_BLE_ENABLE
677 if (where == OUTPUT_ADAFRUIT_BLE) {
678 // FIXME: mouse buttons 664 // FIXME: mouse buttons
679 adafruit_ble_send_mouse_move(report->x, report->y, report->v, report->h); 665 adafruit_ble_send_mouse_move(report->x, report->y, report->v, report->h);
680 } 666 #else
667 bluefruit_serial_send(0xFD);
668 bluefruit_serial_send(0x00);
669 bluefruit_serial_send(0x03);
670 bluefruit_serial_send(report->buttons);
671 bluefruit_serial_send(report->x);
672 bluefruit_serial_send(report->y);
673 bluefruit_serial_send(report->v); // should try sending the wheel v here
674 bluefruit_serial_send(report->h); // should try sending the wheel h here
675 bluefruit_serial_send(0x00);
676 #endif
677 }
681#endif 678#endif
682 679
683 if (where != OUTPUT_USB && where != OUTPUT_USB_AND_BT) { 680 if (where != OUTPUT_USB && where != OUTPUT_USB_AND_BT) {
@@ -727,6 +724,9 @@ static void send_consumer(uint16_t data)
727 724
728#ifdef BLUETOOTH_ENABLE 725#ifdef BLUETOOTH_ENABLE
729 if (where == OUTPUT_BLUETOOTH || where == OUTPUT_USB_AND_BT) { 726 if (where == OUTPUT_BLUETOOTH || where == OUTPUT_USB_AND_BT) {
727 #ifdef MODULE_ADAFRUIT_BLE
728 adafruit_ble_send_consumer_key(data, 0);
729 #else
730 static uint16_t last_data = 0; 730 static uint16_t last_data = 0;
731 if (data == last_data) return; 731 if (data == last_data) return;
732 last_data = data; 732 last_data = data;
@@ -740,12 +740,7 @@ static void send_consumer(uint16_t data)
740 bluefruit_serial_send(0x00); 740 bluefruit_serial_send(0x00);
741 bluefruit_serial_send(0x00); 741 bluefruit_serial_send(0x00);
742 bluefruit_serial_send(0x00); 742 bluefruit_serial_send(0x00);
743 } 743 #endif
744#endif
745
746#ifdef ADAFRUIT_BLE_ENABLE
747 if (where == OUTPUT_ADAFRUIT_BLE) {
748 adafruit_ble_send_consumer_key(data, 0);
749 } 744 }
750#endif 745#endif
751 746
@@ -1130,7 +1125,7 @@ int main(void)
1130 // midi_send_noteoff(&midi_device, 0, 64, 127); 1125 // midi_send_noteoff(&midi_device, 0, 64, 127);
1131#endif 1126#endif
1132 1127
1133#ifdef BLUETOOTH_ENABLE 1128#ifdef MODULE_ADAFRUIT_EZKEY
1134 serial_init(); 1129 serial_init();
1135#endif 1130#endif
1136 1131
@@ -1161,7 +1156,7 @@ int main(void)
1161 1156
1162 print("Keyboard start.\n"); 1157 print("Keyboard start.\n");
1163 while (1) { 1158 while (1) {
1164 #if !defined(BLUETOOTH_ENABLE) && !defined(ADAFRUIT_BLE_ENABLE) 1159 #if !defined(BLUETOOTH_ENABLE)
1165 while (USB_DeviceState == DEVICE_STATE_Suspended) { 1160 while (USB_DeviceState == DEVICE_STATE_Suspended) {
1166 print("[s]"); 1161 print("[s]");
1167 suspend_power_down(); 1162 suspend_power_down();
@@ -1182,7 +1177,7 @@ int main(void)
1182 rgblight_task(); 1177 rgblight_task();
1183#endif 1178#endif
1184 1179
1185#ifdef ADAFRUIT_BLE_ENABLE 1180#ifdef MODULE_ADAFRUIT_BLE
1186 adafruit_ble_task(); 1181 adafruit_ble_task();
1187#endif 1182#endif
1188 1183
diff --git a/tmk_core/protocol/lufa/outputselect.c b/tmk_core/protocol/lufa/outputselect.c
index 5d2457bff..0df5d3b75 100644
--- a/tmk_core/protocol/lufa/outputselect.c
+++ b/tmk_core/protocol/lufa/outputselect.c
@@ -14,7 +14,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
14 14
15#include "lufa.h" 15#include "lufa.h"
16#include "outputselect.h" 16#include "outputselect.h"
17#ifdef ADAFRUIT_BLE_ENABLE 17#ifdef MODULE_ADAFRUIT_BLE
18 #include "adafruit_ble.h" 18 #include "adafruit_ble.h"
19#endif 19#endif
20 20
@@ -34,9 +34,9 @@ uint8_t auto_detect_output(void) {
34 return OUTPUT_USB; 34 return OUTPUT_USB;
35 } 35 }
36 36
37#ifdef ADAFRUIT_BLE_ENABLE 37#ifdef MODULE_ADAFRUIT_BLE
38 if (adafruit_ble_is_connected()) { 38 if (adafruit_ble_is_connected()) {
39 return OUTPUT_ADAFRUIT_BLE; 39 return OUTPUT_BLUETOOTH;
40 } 40 }
41#endif 41#endif
42 42
diff --git a/tmk_core/protocol/lufa/outputselect.h b/tmk_core/protocol/lufa/outputselect.h
index 79b4dd35d..28cc3298e 100644
--- a/tmk_core/protocol/lufa/outputselect.h
+++ b/tmk_core/protocol/lufa/outputselect.h
@@ -18,7 +18,6 @@ enum outputs {
18 OUTPUT_NONE, 18 OUTPUT_NONE,
19 OUTPUT_USB, 19 OUTPUT_USB,
20 OUTPUT_BLUETOOTH, 20 OUTPUT_BLUETOOTH,
21 OUTPUT_ADAFRUIT_BLE,
22 21
23 // backward compatibility 22 // backward compatibility
24 OUTPUT_USB_AND_BT 23 OUTPUT_USB_AND_BT