From 0c5b3826d15015ec8aaee0b87a7a485f17158c6b Mon Sep 17 00:00:00 2001 From: worthlessowl <53881082+worthlessowl@users.noreply.github.com> Date: Wed, 2 Oct 2019 11:26:39 +0700 Subject: [Keyboard] Add Owlet60 Keyboard to qmk_firmware/keyboards/handwired (#6803) * first commit, skeleton code, not sure if working * Owlet 60 working firmware, json not sure * use json from kle to qmk converter * deleted temporary text from owlet60.h * owlet60 working oled and led firmware * moved owlet60 to handwired * updated readme.md * Revert "owlet60 working oled and led firmware" This reverts commit 27f9465aabd62d9ee445b477a02af348160532c1. * Revert "moved owlet60 to handwired" This reverts commit 9b8e8344fc303ddc4dcc3b023d4e9d05b89d5800. * revert changes, moved owlet60 to handwired, updated copyright blurb * fixed readme.md * removed duplicate items * resolve merge artifact * Update keyboards/handwired/owlet60/readme.md Co-Authored-By: fauxpark * check out merge artifacts with qmk master * Update keyboards/handwired/owlet60/matrix.c Co-Authored-By: fauxpark * Update keyboards/handwired/owlet60/matrix.c Co-Authored-By: fauxpark * Update keyboards/handwired/owlet60/matrix.c Co-Authored-By: fauxpark * Update keyboards/handwired/owlet60/matrix.c Co-Authored-By: fauxpark * removed redundant rule on oled_testing/rules.mk, refactored mux switching code on matrix.c --- .../handwired/owlet60/keymaps/default/config.h | 19 ++++ .../handwired/owlet60/keymaps/default/keymap.c | 74 ++++++++++++++ .../handwired/owlet60/keymaps/default/readme.md | 1 + .../owlet60/keymaps/oled_testing/config.h | 22 +++++ .../owlet60/keymaps/oled_testing/customfont.c | 20 ++++ .../owlet60/keymaps/oled_testing/keymap.c | 107 +++++++++++++++++++++ .../owlet60/keymaps/oled_testing/readme.md | 1 + .../owlet60/keymaps/oled_testing/rules.mk | 1 + 8 files changed, 245 insertions(+) create mode 100644 keyboards/handwired/owlet60/keymaps/default/config.h create mode 100644 keyboards/handwired/owlet60/keymaps/default/keymap.c create mode 100644 keyboards/handwired/owlet60/keymaps/default/readme.md create mode 100644 keyboards/handwired/owlet60/keymaps/oled_testing/config.h create mode 100644 keyboards/handwired/owlet60/keymaps/oled_testing/customfont.c create mode 100644 keyboards/handwired/owlet60/keymaps/oled_testing/keymap.c create mode 100644 keyboards/handwired/owlet60/keymaps/oled_testing/readme.md create mode 100644 keyboards/handwired/owlet60/keymaps/oled_testing/rules.mk (limited to 'keyboards/handwired/owlet60/keymaps') diff --git a/keyboards/handwired/owlet60/keymaps/default/config.h b/keyboards/handwired/owlet60/keymaps/default/config.h new file mode 100644 index 000000000..f662fe7c9 --- /dev/null +++ b/keyboards/handwired/owlet60/keymaps/default/config.h @@ -0,0 +1,19 @@ +/* Copyright 2019 worthlessowl + * + * 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 . + */ + +#pragma once + +// place overrides here diff --git a/keyboards/handwired/owlet60/keymaps/default/keymap.c b/keyboards/handwired/owlet60/keymaps/default/keymap.c new file mode 100644 index 000000000..c850d1ff7 --- /dev/null +++ b/keyboards/handwired/owlet60/keymaps/default/keymap.c @@ -0,0 +1,74 @@ +/* Copyright 2019 worthlessowl + * + * 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 . + */ +#include QMK_KEYBOARD_H + +// Defines the keycodes used by our macros in process_record_user +enum custom_keycodes { + QMKBEST = SAFE_RANGE, + QMKURL +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_owlet60_full_bsp( + KC_1, 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_PGUP, \ + KC_2, 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, KC_PGDOWN, \ + KC_3, KC_CAPS,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_HOME, \ + KC_LSFT,KC_Z, KC_X, KC_C, KC_V, KC_B, KC_B, KC_N, KC_M, KC_COMM,KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END, \ + KC_LCTRL, KC_LALT, KC_SPC, MO(1),KC_SPC, KC_RALT, KC_LEFT, KC_DOWN, KC_RIGHT \ + ), + + [1] = LAYOUT_owlet60_full_bsp( + KC_NO, 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_TRNS, RGB_TOG, \ + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, RGB_MOD, \ + KC_NO, KC_NO,KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,KC_NO, KC_NO, RGB_VAI, \ + KC_TRNS,KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_N, KC_NO, KC_NO,KC_NO, KC_NO, KC_NO, KC_TRNS, RGB_VAD, \ + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS \ + ) +}; + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { + case QMKBEST: + if (record->event.pressed) { + // when keycode QMKBEST is pressed + SEND_STRING("QMK is the best thing ever!"); + } else { + // when keycode QMKBEST is released + } + break; + case QMKURL: + if (record->event.pressed) { + // when keycode QMKURL is pressed + SEND_STRING("https://qmk.fm/" SS_TAP(X_ENTER)); + } else { + // when keycode QMKURL is released + } + break; + } + return true; +} + +void matrix_init_user(void) { + +} + +void matrix_scan_user(void) { + +} + +void led_set_user(uint8_t usb_led) { + +} diff --git a/keyboards/handwired/owlet60/keymaps/default/readme.md b/keyboards/handwired/owlet60/keymaps/default/readme.md new file mode 100644 index 000000000..1d177ae10 --- /dev/null +++ b/keyboards/handwired/owlet60/keymaps/default/readme.md @@ -0,0 +1 @@ +# The default keymap for owlet60 \ No newline at end of file diff --git a/keyboards/handwired/owlet60/keymaps/oled_testing/config.h b/keyboards/handwired/owlet60/keymaps/oled_testing/config.h new file mode 100644 index 000000000..884d36b69 --- /dev/null +++ b/keyboards/handwired/owlet60/keymaps/oled_testing/config.h @@ -0,0 +1,22 @@ +/* Copyright 2019 worthlessowl + * + * 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 . + */ + +#pragma once + +// place overrides here + + +#define OLED_FONT_H "customfont.c" diff --git a/keyboards/handwired/owlet60/keymaps/oled_testing/customfont.c b/keyboards/handwired/owlet60/keymaps/oled_testing/customfont.c new file mode 100644 index 000000000..b7ad73bfa --- /dev/null +++ b/keyboards/handwired/owlet60/keymaps/oled_testing/customfont.c @@ -0,0 +1,20 @@ +#pragma once + +#ifdef __AVR__ +# include +# include +#elif defined(ESP8266) +# include +#else +# define PROGMEM +#endif + +// Helidox 8x6 font with QMK Firmware Logo +// Online editor: http://teripom.x0.com/ + +static const unsigned char font[] PROGMEM = { +0x00,0x00,0x00,0x00,0x00,0x00,0x3e,0x5b,0x4f,0x5b,0x3e,0x00,0x3e,0x6b,0x4f,0x6b,0x3e,0x00,0x1c,0x3e,0x7c,0x3e,0x1c,0x00,0x18,0x3c,0x7e,0x3c,0x18,0x00,0x1c,0x57,0x7d,0x57,0x1c,0x00,0x1c,0x5e,0x7f,0x5e,0x1c,0x00,0x00,0x18,0x3c,0x18,0x00,0x00,0xff,0xe7,0xc3,0xe7,0xff,0x00,0x00,0x18,0x24,0x18,0x00,0x00,0xff,0xe7,0xdb,0xe7,0xff,0x00,0x30,0x48,0x3a,0x06,0x0e,0x00,0x26,0x29,0x79,0x29,0x26,0x00,0x40,0x7f,0x05,0x05,0x07,0x00,0x40,0x7f,0x05,0x25,0x3f,0x00,0x5a,0x3c,0xe7,0x3c,0x5a,0x00,0x7f,0x3e,0x1c,0x1c,0x08,0x00,0x08,0x1c,0x1c,0x3e,0x7f,0x00,0x14,0x22,0x7f,0x22,0x14,0x00,0x5f,0x5f,0x00,0x5f,0x5f,0x00,0x06,0x09,0x7f,0x01,0x7f,0x00,0x00,0x66,0x89,0x95,0x6a,0x00,0x60,0x60,0x60,0x60,0x60,0x00,0x94,0xa2,0xff,0xa2,0x94,0x00,0x08,0x04,0x7e,0x04,0x08,0x00,0x10,0x20,0x7e,0x20,0x10,0x00,0x08,0x08,0x2a,0x1c,0x08,0x00,0x08,0x1c,0x2a,0x08,0x08,0x00,0x1e,0x10,0x10,0x10,0x10,0x00,0x0c,0x1e,0x0c,0x1e,0x0c,0x00,0x30,0x38,0x3e,0x38,0x30,0x00,0x06,0x0e,0x3e,0x0e,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x5f,0x00,0x00,0x00,0x00,0x07,0x00,0x07,0x00,0x00,0x14,0x7f,0x14,0x7f,0x14,0x00,0x24,0x2a,0x7f,0x2a,0x12,0x00,0x23,0x13,0x08,0x64,0x62,0x00,0x36,0x49,0x56,0x20,0x50,0x00,0x00,0x08,0x07,0x03,0x00,0x00,0x00,0x1c,0x22,0x41,0x00,0x00,0x00,0x41,0x22,0x1c,0x00,0x00,0x2a,0x1c,0x7f,0x1c,0x2a,0x00,0x08,0x08,0x3e,0x08,0x08,0x00,0x00,0x80,0x70,0x30,0x00,0x00,0x08,0x08,0x08,0x08,0x08,0x00,0x00,0x00,0x60,0x60,0x00,0x00,0x20,0x10,0x08,0x04,0x02,0x00,0x3e,0x51,0x49,0x45,0x3e,0x00,0x00,0x42,0x7f,0x40,0x00,0x00,0x72,0x49,0x49,0x49,0x46,0x00,0x21,0x41,0x49,0x4d,0x33,0x00,0x18,0x14,0x12,0x7f,0x10,0x00,0x27,0x45,0x45,0x45,0x39,0x00,0x3c,0x4a,0x49,0x49,0x31,0x00,0x41,0x21,0x11,0x09,0x07,0x00,0x36,0x49,0x49,0x49,0x36,0x00,0x46,0x49,0x49,0x29,0x1e,0x00,0x00,0x00,0x14,0x00,0x00,0x00,0x00,0x40,0x34,0x00,0x00,0x00,0x00,0x08,0x14,0x22,0x41,0x00,0x14,0x14,0x14,0x14,0x14,0x00,0x00,0x41,0x22,0x14,0x08,0x00,0x02,0x01,0x59,0x09,0x06,0x00,0x3e,0x41,0x5d,0x59,0x4e,0x00,0x7c,0x12,0x11,0x12,0x7c,0x00,0x7f,0x49,0x49,0x49, +0x36,0x00,0x3e,0x41,0x41,0x41,0x22,0x00,0x7f,0x41,0x41,0x41,0x3e,0x00,0x7f,0x49,0x49,0x49,0x41,0x00,0x7f,0x09,0x09,0x09,0x01,0x00,0x3e,0x41,0x41,0x51,0x73,0x00,0x7f,0x08,0x08,0x08,0x7f,0x00,0x00,0x41,0x7f,0x41,0x00,0x00,0x20,0x40,0x41,0x3f,0x01,0x00,0x7f,0x08,0x14,0x22,0x41,0x00,0x7f,0x40,0x40,0x40,0x40,0x00,0x7f,0x02,0x1c,0x02,0x7f,0x00,0x7f,0x04,0x08,0x10,0x7f,0x00,0x3e,0x41,0x41,0x41,0x3e,0x00,0x7f,0x09,0x09,0x09,0x06,0x00,0x3e,0x41,0x51,0x21,0x5e,0x00,0x7f,0x09,0x19,0x29,0x46,0x00,0x26,0x49,0x49,0x49,0x32,0x00,0x03,0x01,0x7f,0x01,0x03,0x00,0x3f,0x40,0x40,0x40,0x3f,0x00,0x1f,0x20,0x40,0x20,0x1f,0x00,0x3f,0x40,0x38,0x40,0x3f,0x00,0x63,0x14,0x08,0x14,0x63,0x00,0x03,0x04,0x78,0x04,0x03,0x00,0x61,0x59,0x49,0x4d,0x43,0x00,0x00,0x7f,0x41,0x41,0x41,0x00,0x02,0x04,0x08,0x10,0x20,0x00,0x00,0x41,0x41,0x41,0x7f,0x00,0x04,0x02,0x01,0x02,0x04,0x00,0x40,0x40,0x40,0x40,0x40,0x00,0x00,0x03,0x07,0x08,0x00,0x00,0x20,0x54,0x54,0x78,0x40,0x00,0x7f,0x28,0x44,0x44,0x38,0x00,0x38,0x44,0x44,0x44,0x28,0x00,0x38,0x44,0x44,0x28,0x7f,0x00,0x38,0x54,0x54,0x54,0x18,0x00,0x00,0x08,0x7e,0x09,0x02,0x00,0x18,0xa4,0xa4,0x9c,0x78,0x00,0x7f,0x08,0x04,0x04,0x78,0x00,0x00,0x44,0x7d,0x40,0x00,0x00,0x20,0x40,0x40,0x3d,0x00,0x00,0x7f,0x10,0x28,0x44,0x00,0x00,0x00,0x41,0x7f,0x40,0x00,0x00,0x7c,0x04,0x78,0x04,0x78,0x00,0x7c,0x08,0x04,0x04,0x78,0x00,0x38,0x44,0x44,0x44,0x38,0x00,0xfc,0x18,0x24,0x24,0x18,0x00,0x18,0x24,0x24,0x18,0xfc,0x00,0x7c,0x08,0x04,0x04,0x08,0x00,0x48,0x54,0x54,0x54,0x24,0x00,0x04,0x04,0x3f,0x44,0x24,0x00,0x3c,0x40,0x40,0x20,0x7c,0x00,0x1c,0x20,0x40,0x20,0x1c,0x00,0x3c,0x40,0x30,0x40,0x3c,0x00,0x44,0x28,0x10,0x28,0x44,0x00,0x4c,0x90,0x90,0x90,0x7c,0x00,0x44,0x64,0x54,0x4c,0x44,0x00,0x00,0x08,0x36,0x41,0x00,0x00,0x00,0x00,0x77,0x00,0x00,0x00,0x00,0x41,0x36,0x08,0x00,0x00,0x02,0x01,0x02,0x04,0x02,0x00,0x3c,0x26,0x23,0x26,0x3c,0x00,0x00,0x00,0x00,0x80,0xe0,0xe0,0xe0,0xe0,0x60,0x60,0xe0,0xe0,0xc0,0x80,0x00,0x00,0x00,0x04,0x0c,0x1c,0x1c,0x1c,0x18,0x38,0x38,0x78,0x70,0x70,0xf0,0xa0,0xa0,0x08, +0x18,0x18,0x18,0x1c,0x1c,0x1c,0x1c,0x1c,0x18,0x18,0x18,0xf8,0xf8,0xfc,0xf0,0x10,0x10,0x00,0x00,0x80,0xe0,0xf8,0xf0,0x70,0x70,0x70,0x70,0x60,0x60,0xe0,0xe0,0xe0,0xe0,0xe0,0xe0,0xc0,0xc0,0xc0,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xf8,0xfc,0xfe,0xde,0x80,0x80,0x80,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xf0,0xf8,0xfc,0x3e,0x1e,0x06,0x01,0x00,0x00,0x00,0x7f,0x41,0x41,0x41,0x7f,0x00,0x7f,0x41,0x41,0x41,0x7f,0x00,0x00,0x80,0xc0,0xe0,0x7e,0x5b,0x4f,0x5b,0xfe,0xc0,0x00,0x00,0xc0,0x00,0xdc,0xd7,0xde,0xde,0xde,0xd7,0xdc,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0f,0x7f,0xff,0xf3,0xe0,0xc0,0xc0,0xc0,0xf3,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x20,0x70,0x78,0x78,0xf8,0xf8,0xdc,0xcc,0x8c,0x84,0x07,0x03,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0x00,0x00,0x00,0xc0,0xfc,0xff,0x1f,0x03,0x01,0x00,0x00,0xc0,0xe0,0xfc,0x7f,0x1f,0x0f,0x03,0x80,0xe0,0xfc,0xff,0x1f,0x03,0x00,0x00,0x00,0x00,0x00,0xe0,0xfc,0xff,0x3f,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x0f,0x0f,0x0f,0x0e,0x1e,0x1e,0x0e,0x0c,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x69,0x69,0x6f,0x26,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x0f,0x1f,0x3f,0x3c,0x78,0x70,0x60,0x00,0x00,0x00,0x7f,0x41,0x41,0x41,0x7f,0x00,0x7f,0x41,0x41,0x41,0x7f,0x00,0x30,0x7b,0x7f,0x78,0x30,0x20,0x20,0x30,0x78,0x7f,0x3b,0x00,0x03,0x00,0x0f,0x7f,0x0f,0x0f,0x0f,0x7f,0x0f,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x03,0x03,0x03,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x38,0x38,0x1c,0x1c,0x0e,0x0e,0x07,0x03,0x03,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0x07,0x03,0x01,0x00, +0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x00,0x00,0x00,0x0e,0x0f,0x07,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x07,0x03,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +}; diff --git a/keyboards/handwired/owlet60/keymaps/oled_testing/keymap.c b/keyboards/handwired/owlet60/keymaps/oled_testing/keymap.c new file mode 100644 index 000000000..3493a9d6c --- /dev/null +++ b/keyboards/handwired/owlet60/keymaps/oled_testing/keymap.c @@ -0,0 +1,107 @@ +/* Copyright 2019 worthlessowl + * + * 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 . + */ +#include QMK_KEYBOARD_H + +// Defines the keycodes used by our macros in process_record_user +enum custom_keycodes { + QMKBEST = SAFE_RANGE, + QMKURL +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_owlet60_full_bsp( + KC_1, 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_PGUP, \ + KC_2, 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, KC_PGDOWN, \ + KC_3, KC_CAPS,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_HOME, \ + KC_LSFT,KC_Z, KC_X, KC_C, KC_V, KC_B, KC_B, KC_N, KC_M, KC_COMM,KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END, \ + KC_LCTRL, KC_LALT, KC_SPC, MO(1),KC_SPC, KC_RALT, KC_LEFT, KC_DOWN, KC_RIGHT \ + ), + + [1] = LAYOUT_owlet60_full_bsp( + KC_NO, 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_TRNS, RGB_TOG, \ + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, RGB_MOD, \ + KC_NO, KC_NO,KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,KC_NO, KC_NO, RGB_VAI, \ + KC_TRNS,KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_N, KC_NO, KC_NO,KC_NO, KC_NO, KC_NO, KC_TRNS, RGB_VAD, \ + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS \ + ) +}; + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { + case QMKBEST: + if (record->event.pressed) { + // when keycode QMKBEST is pressed + SEND_STRING("QMK is the best thing ever!"); + } else { + // when keycode QMKBEST is released + } + break; + case QMKURL: + if (record->event.pressed) { + // when keycode QMKURL is pressed + SEND_STRING("https://qmk.fm/" SS_TAP(X_ENTER)); + } else { + // when keycode QMKURL is released + } + break; + } + return true; +} + +void matrix_init_user(void) { + +} + +void matrix_scan_user(void) { + +} + +void led_set_user(uint8_t usb_led) { + +} + +#ifdef OLED_DRIVER_ENABLE +oled_rotation_t oled_init_user(oled_rotation_t rotation) { + //return OLED_ROTATION_180; + return OLED_ROTATION_180; +} +void oled_task_user(void) { + // Host Keyboard Layer Status + /*oled_write_P(PSTR("Lyr: "), false); + switch (get_highest_layer(layer_state)) { + case 0: + oled_write_P(PSTR("Alpha\n"), false); + break; + case 1: + oled_write_P(PSTR("FN\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); + } + + uint8_t led_usb_state = host_keyboard_leds(); + oled_write_P(led_usb_state & (1<