summaryrefslogtreecommitdiffstats
path: root/keyboards/dtisaac/dosa40rgb/keymaps
diff options
context:
space:
mode:
authorDao Tak Isaac <daotran0940@gmail.com>2021-09-18 13:52:18 +0700
committerGitHub <noreply@github.com>2021-09-17 23:52:18 -0700
commit09b66c06d4fa0f2db1340e9f9b89ab27235bb500 (patch)
tree5f6bdde5a8227411d61898c34bcd800629a056a9 /keyboards/dtisaac/dosa40rgb/keymaps
parent228c7b095b0f441652b2719713cb3bf1e5811828 (diff)
[Keyboard] Add Dosa40RGB + dtisaac01 (#14476)
Diffstat (limited to 'keyboards/dtisaac/dosa40rgb/keymaps')
-rw-r--r--keyboards/dtisaac/dosa40rgb/keymaps/default/keymap.c122
-rw-r--r--keyboards/dtisaac/dosa40rgb/keymaps/default/readme.md1
2 files changed, 123 insertions, 0 deletions
diff --git a/keyboards/dtisaac/dosa40rgb/keymaps/default/keymap.c b/keyboards/dtisaac/dosa40rgb/keymaps/default/keymap.c
new file mode 100644
index 0000000000..c9bde4bb8d
--- /dev/null
+++ b/keyboards/dtisaac/dosa40rgb/keymaps/default/keymap.c
@@ -0,0 +1,122 @@
+/* Copyright 2021 DTIsaac
+ *
+ * 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 QMK_KEYBOARD_H
+#include "spi_master.h"
+#include "wait.h"
+
+// Defines names for use in layer keycodes and the keymap
+enum layer_names {
+ _BASE,
+ _L1,
+ _L2
+};
+
+// Defines the keycodes used by our macros in process_record_user
+enum custom_keycodes {
+ BASE,
+ L1,
+ BLE_DIS, // Disconnect BLE
+ LED_EN, // Toggle LED
+};
+
+#define L1 MO(_L1)
+const uint8_t cm1[] = "AT+GAPSTOPADV";
+const uint8_t cm2[] = "AT+GAPDISCONNECT";
+const uint8_t cm3[] = "ATZ";
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ /* Base */
+ [_BASE] = LAYOUT(
+ KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
+ LT(_L2,KC_CAPS), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_ENT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_RSFT,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPACE, KC_SPACE, KC_RALT, L1, KC_RCTL
+ ),
+ [_L1] = LAYOUT(
+ RESET, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL,
+ KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_SCLN, KC_QUOT,
+ KC_TRNS, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_TRNS, KC_SLSH, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+ [_L2] = LAYOUT(
+ LED_EN, RGB_RMOD, KC_UP, RGB_MOD, RGB_HUI, RGB_VAI, RGB_SAI, RGB_SPI, KC_TRNS, OUT_USB, OUT_BT, BLE_DIS,
+ KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, RGB_HUD, RGB_VAD, RGB_SAD, RGB_SPD, KC_TRNS, KC_TRNS, KC_BSLS,
+ 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_TAB, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+};
+
+void rgb_matrix_indicators_user(void)
+{
+ if (host_keyboard_led_state().caps_lock)
+ {
+ rgb_matrix_set_color(22, 200, 200, 200);
+ }
+ if (IS_LAYER_ON(_L1))
+ {
+ rgb_matrix_set_color(35, 0, 200, 200);
+ }
+ if (IS_LAYER_ON(_L2))
+ {
+ rgb_matrix_set_color(22, 200, 0, 200);
+ }
+}
+
+void sdep_send(const uint8_t *cmd, uint8_t len) {
+
+ spi_start(AdafruitBleCSPin, false, 0, 2);
+ uint8_t cnt = 200;
+ bool ready = false;
+
+ do {
+ ready = spi_write(0x10) != 0xFE;
+ if (ready) {
+ break;
+ }
+ spi_stop();
+ wait_us(25);
+ spi_start(AdafruitBleCSPin, false, 0, 2);
+ } while (cnt--);
+
+ if (ready) {
+ spi_write(0x00);
+ spi_write(0x0A);
+ spi_write(len);
+ spi_transmit(cmd, len);
+ }
+
+ spi_stop();
+}
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+
+ switch (keycode) {
+ case LED_EN:
+ if (record->event.pressed) {
+ DDRB = DDRB ^ 0x20;
+ PORTB &= ~(1 << 5);
+ }
+ return false;
+ case BLE_DIS:
+ if (record->event.pressed) {
+ sdep_send(cm1,sizeof(cm1));
+ sdep_send(cm2,sizeof(cm2));
+ sdep_send(cm3,sizeof(cm3));
+ }
+ return false;
+ }
+ return true;
+} \ No newline at end of file
diff --git a/keyboards/dtisaac/dosa40rgb/keymaps/default/readme.md b/keyboards/dtisaac/dosa40rgb/keymaps/default/readme.md
new file mode 100644
index 0000000000..35494635d8
--- /dev/null
+++ b/keyboards/dtisaac/dosa40rgb/keymaps/default/readme.md
@@ -0,0 +1 @@
+# The default keymap for dosa40rgb