mirror of
https://github.com/qmk/qmk_firmware.git
synced 2025-09-10 17:15:43 +00:00
Compare commits
9 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
ed49dbeac4 | ||
|
|
04cad4582e | ||
|
|
507dd18f24 | ||
|
|
6716f1d2df | ||
|
|
284e653eeb | ||
|
|
569eee20b4 | ||
|
|
62e01928cd | ||
|
|
285afa3a8a | ||
|
|
db04899a4a |
@@ -37,10 +37,9 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
{ E6, B4, B2 } \
|
||||
}
|
||||
#define TAP_CODE_DELAY 10
|
||||
#define ENCODER_DIRECTION_FLIP
|
||||
#define ENCODER_RESOLUTION 4
|
||||
#define ENCODERS_PAD_A { F5 }
|
||||
#define ENCODERS_PAD_B { F6 }
|
||||
#define ENCODERS_PAD_A { F6 }
|
||||
#define ENCODERS_PAD_B { F5 }
|
||||
|
||||
#define BACKLIGHT_PIN B5
|
||||
#define BACKLIGHT_BREATHING
|
||||
|
||||
@@ -44,10 +44,8 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#define MATRIX_COL_PINS { F4, F5, F6, F7, B1, B3, B2, D3, D0 }
|
||||
#define UNUSED_PINS
|
||||
|
||||
#define ENCODERS_PAD_A { D5 }
|
||||
#define ENCODERS_PAD_B { B7 }
|
||||
|
||||
#define ENCODER_DIRECTION_FLIP
|
||||
#define ENCODERS_PAD_A { B7 }
|
||||
#define ENCODERS_PAD_B { D5 }
|
||||
|
||||
/* COL2ROW, ROW2COL*/
|
||||
#define DIODE_DIRECTION COL2ROW
|
||||
|
||||
@@ -41,9 +41,8 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#define TAPPING_TERM 200
|
||||
|
||||
/* Encoder */
|
||||
#define ENCODERS_PAD_A { F4 }
|
||||
#define ENCODERS_PAD_B { F5 }
|
||||
#define ENCODERS_PAD_A { F5 }
|
||||
#define ENCODERS_PAD_B { F4 }
|
||||
#define ENCODER_RESOLUTION 4
|
||||
#define ENCODER_DIRECTION_FLIP
|
||||
|
||||
#define TAP_CODE_DELAY 50
|
||||
|
||||
@@ -50,10 +50,9 @@
|
||||
*/
|
||||
// #define GRAVE_ESC_CTRL_OVERRIDE
|
||||
|
||||
#define ENCODERS_PAD_A { D7 }
|
||||
#define ENCODERS_PAD_B { C0 }
|
||||
#define ENCODERS_PAD_A { C0 }
|
||||
#define ENCODERS_PAD_B { D7 }
|
||||
#define ENCODER_RESOLUTION 4
|
||||
#define ENCODER_DIRECTION_FLIP
|
||||
#define TAP_CODE_DELAY 10
|
||||
|
||||
/* Bootmagic Lite key configuration */
|
||||
|
||||
42
keyboards/bpiphany/ghost_squid/config.h
Normal file
42
keyboards/bpiphany/ghost_squid/config.h
Normal file
@@ -0,0 +1,42 @@
|
||||
/*
|
||||
Copyright 2016 Daniel Svensson <dsvensson@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/>.
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "config_common.h"
|
||||
|
||||
/* USB Device descriptor parameter */
|
||||
#define VENDOR_ID 0xFEED
|
||||
#define PRODUCT_ID 0x6050
|
||||
#define DEVICE_VER 0x0104
|
||||
#define MANUFACTURER Bathroom Epiphanies
|
||||
#define PRODUCT ghost_squid
|
||||
|
||||
/* key matrix size */
|
||||
#define MATRIX_ROWS 8
|
||||
#define MATRIX_COLS 18
|
||||
|
||||
/* COL2ROW or ROW2COL */
|
||||
#define DIODE_DIRECTION COL2ROW
|
||||
|
||||
#define LED_PIN_ON_STATE 0
|
||||
#define LED_NUM_LOCK_PIN C5
|
||||
#define LED_CAPS_LOCK_PIN C6
|
||||
#define LED_SCROLL_LOCK_PIN B7
|
||||
|
||||
/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
|
||||
#define DEBOUNCE 5
|
||||
26
keyboards/bpiphany/ghost_squid/ghost_squid.c
Normal file
26
keyboards/bpiphany/ghost_squid/ghost_squid.c
Normal file
@@ -0,0 +1,26 @@
|
||||
/*
|
||||
Copyright 2016 Daniel Svensson <dsvensson@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 "ghost_squid.h"
|
||||
|
||||
void keyboard_pre_init_kb(void) {
|
||||
setPinOutput(D0);
|
||||
writePinLow(D0);
|
||||
fn_led_off();
|
||||
|
||||
keyboard_pre_init_user();
|
||||
}
|
||||
44
keyboards/bpiphany/ghost_squid/ghost_squid.h
Normal file
44
keyboards/bpiphany/ghost_squid/ghost_squid.h
Normal file
@@ -0,0 +1,44 @@
|
||||
/*
|
||||
Copyright 2016 Daniel Svensson <dsvensson@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/>.
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "quantum.h"
|
||||
|
||||
#define fn_led_on() writePinLow(D0)
|
||||
#define fn_led_off() writePinHigh(D0)
|
||||
|
||||
#define ___ KC_NO
|
||||
|
||||
#define LAYOUT( \
|
||||
KJ6, KI4, KH4, KH2, KH6, KA7, KE6, KD2, KD4, KB4, KB7, KB6, KB0, KC7, KC5, KA5, \
|
||||
KJ4, KJ7, KI7, KH7, KG7, KG4, KF4, KF7, KE7, KD7, KR7, KR4, KE4, KB2, KL4, KO4, KQ4, KK1, KL1, KQ1, KQ0, \
|
||||
KJ2, KJ5, KI5, KH5, KG5, KG2, KF2, KF5, KE5, KD5, KR5, KR2, KE2, KB3, KK4, KO7, KQ7, KK5, KL5, KQ5, KO5, \
|
||||
KI2, KJ3, KI3, KH3, KG3, KG6, KF6, KF3, KE3, KD3, KR3, KR6, KB1, KK2, KL2, KQ2, \
|
||||
KN2, KI6, KJ1, KI1, KH1, KG1, KG0, KF0, KF1, KE1, KD1, KR0, KN3, KO6, KK3, KL3, KQ3, KO3, \
|
||||
KA4, KP2, KC6, KK6, KC0, KM3, KD0, KA1, KO0, KK0, KL0, KL6, KQ6 \
|
||||
) { /* 00-A 01-B 02-C 03-D 04-E 05-F 06-G 07-H 08-I 09-J 10-K 11-L 12-M 13-N 14-O 15-P 16-Q 17-R */ \
|
||||
/* 0 */ { ___ , KB0 , KC0 , KD0 , ___ , KF0 , KG0 , ___ , ___ , ___ , KK0 , KL0 , ___ , ___ , KO0 , ___ , KQ0 , KR0 }, \
|
||||
/* 1 */ { KA1 , KB1 , ___ , KD1 , KE1 , KF1 , KG1 , KH1 , KI1 , KJ1 , KK1 , KL1 , ___ , ___ , ___ , ___ , KQ1 , ___ }, \
|
||||
/* 2 */ { ___ , KB2 , ___ , KD2 , KE2 , KF2 , KG2 , KH2 , KI2 , KJ2 , KK2 , KL2 , ___ , KN2 , ___ , KP2 , KQ2 , KR2 }, \
|
||||
/* 3 */ { ___ , KB3 , ___ , KD3 , KE3 , KF3 , KG3 , KH3 , KI3 , KJ3 , KK3 , KL3 , KM3 , KN3 , KO3 , ___ , KQ3 , KR3 }, \
|
||||
/* 4 */ { KA4 , KB4 , ___ , KD4 , KE4 , KF4 , KG4 , KH4 , KI4 , KJ4 , KK4 , KL4 , ___ , ___ , KO4 , ___ , KQ4 , KR4 }, \
|
||||
/* 5 */ { KA5 , ___ , KC5 , KD5 , KE5 , KF5 , KG5 , KH5 , KI5 , KJ5 , KK5 , KL5 , ___ , ___ , KO5 , ___ , KQ5 , KR5 }, \
|
||||
/* 6 */ { ___ , KB6 , KC6 , ___ , KE6 , KF6 , KG6 , KH6 , KI6 , KJ6 , KK6 , KL6 , ___ , ___ , KO6 , ___ , KQ6 , KR6 }, \
|
||||
/* 7 */ { KA7 , KB7 , KC7 , KD7 , KE7 , KF7 , KG7 , KH7 , KI7 , KJ7 , ___ , ___ , ___ , ___ , KO7 , ___ , KQ7 , KR7 } \
|
||||
}
|
||||
|
||||
77
keyboards/bpiphany/ghost_squid/keymaps/default/keymap.c
Normal file
77
keyboards/bpiphany/ghost_squid/keymaps/default/keymap.c
Normal file
@@ -0,0 +1,77 @@
|
||||
/*
|
||||
Copyright 2016 Daniel Svensson <dsvensson@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 QMK_KEYBOARD_H
|
||||
|
||||
/* Default qwerty layout
|
||||
* ┌───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┐ ┌───────────┐
|
||||
* │ESC│ │F1 │F2 │F3 │F4 │ │F5 │F6 │F7 │F8 │ │F9 │F10│F11│F12│ │PRT│SCR│PAU│ │Ghost Squid│
|
||||
* └───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┘ └───────────┘
|
||||
* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ ┌───┬───┬───┐ ┌───┬───┬───┬───┐
|
||||
* │ ` │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │ Backsp│ │INS│HOM│PgU│ │NUM│ / │ * │ - │
|
||||
* ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ ├───┼───┼───┤ ├───┼───┼───┼───┤
|
||||
* │ Tab │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ [ │ ] │ │ │DEL│END│PgD│ │ 7 │ 8 │ 9 │ │
|
||||
* ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ ↲ │ └───┴───┴───┘ ├───┼───┼───┤ + │
|
||||
* │ Caps │ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ ' │ \ │ │ │ 7 │ 8 │ 9 │ │
|
||||
* ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤ ┌───┐ ├───┼───┼───┼───┤
|
||||
* │Shif│ # │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │ Shift │ │ ↑ │ │ 1 │ 2 │ 3 │ │
|
||||
* ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤ ┌───┼───┼───┐ ├───┴───┼───┤ ↲ │
|
||||
* │Ctrl│GUI │Alt │ │ Alt│ GUI│Fn │Ctrl│ │ ← │ ↓ │ → │ │ 0 │ , │ │
|
||||
* └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ └───┴───┴───┘ └───────┴───┴───┘
|
||||
*/
|
||||
|
||||
enum layer_names {
|
||||
KM_QWERTY,
|
||||
KM_MEDIA,
|
||||
KM_GUI_LOCK
|
||||
};
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
/* Layer 0: Standard ISO layer */
|
||||
[KM_QWERTY] = LAYOUT(
|
||||
KC_ESC, 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_PSCR,KC_SLCK,KC_PAUS,
|
||||
KC_GRV, 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_INS, KC_HOME,KC_PGUP, KC_NLCK,KC_PSLS,KC_PAST,KC_PMNS,
|
||||
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_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS,
|
||||
KC_CLCK, 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_P4, KC_P5, KC_P6,
|
||||
KC_LSFT, KC_NUBS,KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM,KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_P1, KC_P2, KC_P3, KC_PENT,
|
||||
KC_LCTL, KC_LGUI,KC_LALT, KC_SPC, KC_RALT,KC_RGUI,MO(KM_MEDIA),KC_RCTL, KC_LEFT,KC_DOWN,KC_RGHT, KC_P0, KC_PDOT),
|
||||
/* Layer 1: Function layer */
|
||||
[KM_MEDIA] = LAYOUT(
|
||||
_______,_______,_______,_______,_______, KC_MEDIA_PLAY_PAUSE, KC_MEDIA_STOP, KC_MEDIA_PREV_TRACK, KC_MEDIA_NEXT_TRACK, TG(KM_GUI_LOCK),KC_MUTE, KC_VOLD, KC_VOLU,_______,_______, RESET,
|
||||
_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,
|
||||
_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,
|
||||
_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,
|
||||
_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, _______,_______,
|
||||
_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______),
|
||||
[KM_GUI_LOCK] = LAYOUT(
|
||||
_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, _______,
|
||||
_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,
|
||||
_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,
|
||||
_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,
|
||||
_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,
|
||||
_______,KC_NO,_______,_______,_______,KC_NO,_______,_______,_______,_______,_______,_______,_______)
|
||||
};
|
||||
|
||||
|
||||
layer_state_t layer_state_set_user(layer_state_t state) {
|
||||
if (IS_LAYER_ON_STATE(state, KM_GUI_LOCK)) {
|
||||
fn_led_on();
|
||||
} else {
|
||||
fn_led_off();
|
||||
}
|
||||
return state;
|
||||
}
|
||||
1
keyboards/bpiphany/ghost_squid/keymaps/default/readme.md
Normal file
1
keyboards/bpiphany/ghost_squid/keymaps/default/readme.md
Normal file
@@ -0,0 +1 @@
|
||||
# Default layout desc TODO
|
||||
97
keyboards/bpiphany/ghost_squid/matrix.c
Normal file
97
keyboards/bpiphany/ghost_squid/matrix.c
Normal file
@@ -0,0 +1,97 @@
|
||||
/*
|
||||
Copyright 2014 Ralf Schmitt <ralf@bunkertor.net>
|
||||
Copyright 2016 Daniel Svensson <dsvensson@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 "matrix.h"
|
||||
#include "quantum.h"
|
||||
|
||||
matrix_row_t read_rows(void) {
|
||||
return
|
||||
(PINB & (1 << 1) ? 0 : ((matrix_row_t)1 << 0)) |
|
||||
(PINC & (1 << 2) ? 0 : ((matrix_row_t)1 << 1)) |
|
||||
(PINB & (1 << 6) ? 0 : ((matrix_row_t)1 << 2)) |
|
||||
(PINB & (1 << 4) ? 0 : ((matrix_row_t)1 << 3)) |
|
||||
(PINB & (1 << 3) ? 0 : ((matrix_row_t)1 << 4)) |
|
||||
(PINB & (1 << 2) ? 0 : ((matrix_row_t)1 << 5)) |
|
||||
(PINB & (1 << 0) ? 0 : ((matrix_row_t)1 << 6)) |
|
||||
(PINB & (1 << 5) ? 0 : ((matrix_row_t)1 << 7));
|
||||
}
|
||||
|
||||
void select_col(uint8_t col) {
|
||||
switch (col) {
|
||||
case 0: PORTD = (PORTD & ~0b01111110) | 0b01100010; break;
|
||||
case 1: PORTD = (PORTD & ~0b01111110) | 0b01101000; break;
|
||||
case 2: PORTD = (PORTD & ~0b01111110) | 0b01101100; break;
|
||||
case 3: PORTD = (PORTD & ~0b01111110) | 0b01110000; break;
|
||||
case 4: PORTD = (PORTD & ~0b01111110) | 0b01111000; break;
|
||||
case 5: PORTD = (PORTD & ~0b01111110) | 0b01100000; break;
|
||||
case 6: PORTD = (PORTD & ~0b01111110) | 0b01110100; break;
|
||||
case 7: PORTD = (PORTD & ~0b01111110) | 0b01100100; break;
|
||||
case 8: PORTD = (PORTD & ~0b01111110) | 0b01111100; break;
|
||||
case 9: PORTD = (PORTD & ~0b01111110) | 0b01101010; break;
|
||||
case 10: PORTD = (PORTD & ~0b01111110) | 0b00110110; break;
|
||||
case 11: PORTD = (PORTD & ~0b01111110) | 0b00010110; break;
|
||||
case 12: PORTD = (PORTD & ~0b01111110) | 0b01001110; break;
|
||||
case 13: PORTD = (PORTD & ~0b01111110) | 0b00111110; break;
|
||||
case 14: PORTD = (PORTD & ~0b01111110) | 0b00011110; break;
|
||||
case 15: PORTD = (PORTD & ~0b01111110) | 0b01000110; break;
|
||||
case 16: PORTD = (PORTD & ~0b01111110) | 0b00100110; break;
|
||||
case 17: PORTD = (PORTD & ~0b01111110) | 0b00101110; break;
|
||||
}
|
||||
}
|
||||
|
||||
void matrix_init_custom(void) {
|
||||
/* Column output pins */
|
||||
setPinOutput(D1);
|
||||
setPinOutput(D2);
|
||||
setPinOutput(D3);
|
||||
setPinOutput(D4);
|
||||
setPinOutput(D5);
|
||||
setPinOutput(D6);
|
||||
|
||||
/* Row input pins */
|
||||
writePinHigh(B0);
|
||||
writePinHigh(B1);
|
||||
writePinHigh(B2);
|
||||
writePinHigh(B3);
|
||||
writePinHigh(B4);
|
||||
writePinHigh(B5);
|
||||
writePinHigh(B6);
|
||||
writePinHigh(C2);
|
||||
}
|
||||
|
||||
bool matrix_scan_custom(matrix_row_t current_matrix[]) {
|
||||
bool changed = false;
|
||||
|
||||
for (uint8_t col = 0; col < MATRIX_COLS; col++) {
|
||||
select_col(col);
|
||||
matrix_io_delay();
|
||||
matrix_row_t rows = read_rows();
|
||||
|
||||
for (uint8_t row = 0; row < MATRIX_ROWS; row++) {
|
||||
bool prev_bit = current_matrix[row] & ((matrix_row_t)1 << col);
|
||||
bool curr_bit = rows & (1 << row);
|
||||
|
||||
if (prev_bit != curr_bit) {
|
||||
current_matrix[row] ^= (matrix_row_t)1 << col;
|
||||
changed = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return changed;
|
||||
}
|
||||
27
keyboards/bpiphany/ghost_squid/readme.md
Normal file
27
keyboards/bpiphany/ghost_squid/readme.md
Normal file
@@ -0,0 +1,27 @@
|
||||
# Ghost Squid Controller
|
||||
|
||||
This is the firmware for Rev. 20140518 of the Ghost Squid controller by [Bathroom Epiphanies](http://bathroomepiphanies.com/controllers/), a replacement controller for the [Cooler Master Quick Fire XT](https://www.coolermaster.com/catalog/peripheral/keyboards/quick-fire-xt/).
|
||||
|
||||
The code was adapted from the [BathroomEpiphanies QMK Firmware](https://github.com/BathroomEpiphanies/epiphanies_qmk_keyboard/tree/master/keyboards/ghost_squid_20140518).
|
||||
|
||||
* Keyboard Maintainer: QMK Community
|
||||
* Hardware Supported: Ghost Squid
|
||||
* Hardware Availability: [1upkeyboards](https://1upkeyboards.com/shop/controllers/qf-xt-ghost-squid-controller-2/)
|
||||
|
||||
Enter the bootloader in 3 ways:
|
||||
|
||||
* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (usually the top left key or Escape) and plug in the keyboard
|
||||
* **Physical reset button**: Briefly press the button on the back of the PCB - some may have pads you must short instead
|
||||
* **Keycode in layout**: Press the key mapped to `RESET` if it is available
|
||||
|
||||
Make example for this keyboard (after setting up your build environment):
|
||||
|
||||
104 key default layout:
|
||||
|
||||
make bpiphany/ghost_squid:default
|
||||
|
||||
Flashing example for this keyboard:
|
||||
|
||||
make bpiphany/ghost_squid:default:flash
|
||||
|
||||
See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
|
||||
23
keyboards/bpiphany/ghost_squid/rules.mk
Normal file
23
keyboards/bpiphany/ghost_squid/rules.mk
Normal file
@@ -0,0 +1,23 @@
|
||||
# MCU name
|
||||
MCU = atmega32u2
|
||||
|
||||
# Bootloader selection
|
||||
BOOTLOADER = atmel-dfu
|
||||
|
||||
# Build Options
|
||||
# change yes to no to disable
|
||||
#
|
||||
BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
|
||||
MOUSEKEY_ENABLE = yes # Mouse keys
|
||||
EXTRAKEY_ENABLE = yes # Audio control and System control
|
||||
CONSOLE_ENABLE = no # Console for debug
|
||||
COMMAND_ENABLE = no # Commands for debug and configuration
|
||||
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
|
||||
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
|
||||
# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
|
||||
NKRO_ENABLE = no # USB Nkey Rollover
|
||||
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
|
||||
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
|
||||
AUDIO_ENABLE = no # Audio output
|
||||
CUSTOM_MATRIX = lite
|
||||
SRC += matrix.c
|
||||
@@ -62,7 +62,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
//├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
|
||||
KC_TRNS, SE_LCBR, SE_RCBR, SE_LPRN, SE_RPRN, KC_NO, SE_PLUS, S(KC_1), S(KC_2), S(KC_3), SE_AMPR, KC_TRNS,
|
||||
//├────────┼────────┼────────┼────────┼────────┼────────┼────────┐ ┌────────┼────────┼────────┼────────┼────────┼────────┼────────┤
|
||||
KC_TRNS, M_TILD, M_CIRC, SE_LESS, SE_GRTR, KC_NO, KC_TRNS, KC_TRNS, SE_APOS, SE_SLSH, SE_BSLS, SE_ASTR, M_BTCK, KC_TRNS,
|
||||
KC_TRNS, M_TILD, M_CIRC, SE_LABK, SE_RABK, KC_NO, KC_TRNS, KC_TRNS, SE_QUOT, SE_SLSH, SE_BSLS, SE_ASTR, M_BTCK, KC_TRNS,
|
||||
//└────────┴────────┴────────┴───┬────┴───┬────┴───┬────┴───┬────┘ └───┬────┴───┬────┴───┬────┴───┬────┴────────┴────────┴────────┘
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS ),
|
||||
// └────────┴────────┴────────┘ └────────┴────────┴────────┘
|
||||
|
||||
@@ -35,10 +35,9 @@
|
||||
#define UNUSED_PINS
|
||||
|
||||
|
||||
#define ENCODERS_PAD_A { E6 }
|
||||
#define ENCODERS_PAD_B { D7 }
|
||||
#define ENCODERS_PAD_A { D7 }
|
||||
#define ENCODERS_PAD_B { E6 }
|
||||
#define ENCODER_RESOLUTION 1
|
||||
#define ENCODER_DIRECTION_FLIP
|
||||
|
||||
/* COL2ROW or ROW2COL */
|
||||
#define DIODE_DIRECTION COL2ROW
|
||||
|
||||
124
keyboards/ll3macorn/bongopad/bongopad.c
Normal file
124
keyboards/ll3macorn/bongopad/bongopad.c
Normal file
@@ -0,0 +1,124 @@
|
||||
// Copyright 2021 Ll3macorn (@ll3macorn)
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
#include "bongopad.h"
|
||||
|
||||
|
||||
#ifdef ENCODER_ENABLE
|
||||
bool encoder_update_kb(uint8_t index, bool clockwise) {
|
||||
if (!encoder_update_user(index, clockwise)) {
|
||||
return false;
|
||||
}
|
||||
// rest fo the code
|
||||
if (clockwise) {
|
||||
tap_code_delay(KC_VOLU, 10);
|
||||
} else {
|
||||
tap_code_delay(KC_VOLD, 10);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef OLED_ENABLE
|
||||
bool oled_task_kb(void) {
|
||||
if (!oled_task_user()) {
|
||||
return false;
|
||||
}
|
||||
|
||||
// WPM-responsive animation stuff here
|
||||
# define IDLE_FRAMES 5
|
||||
# define IDLE_SPEED 0 // below this wpm value your animation will idle
|
||||
|
||||
// #define PREP_FRAMES 1 // uncomment if >1
|
||||
|
||||
# define TAP_FRAMES 2
|
||||
# define TAP_SPEED 0 // above this wpm value typing animation to triggere
|
||||
|
||||
# define ANIM_FRAME_DURATION 200 // how long each frame lasts in ms
|
||||
// #define SLEEP_TIMER 60000 // should sleep after this period of 0 wpm, needs fixing
|
||||
# define ANIM_SIZE 512 // number of bytes in array, minimize for adequate firmware size, max is 1024
|
||||
|
||||
uint32_t anim_timer = 0;
|
||||
uint32_t anim_sleep = 0;
|
||||
uint8_t current_idle_frame = 0;
|
||||
// uint8_t current_prep_frame = 0; // uncomment if PREP_FRAMES >1
|
||||
uint8_t current_tap_frame = 0;
|
||||
|
||||
// Images credit j-inc(/James Incandenza) and pixelbenny. Credit to obosob for initial animation approach.
|
||||
void render_anim(void) {
|
||||
static const char PROGMEM idle[IDLE_FRAMES][ANIM_SIZE] = {{
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 64, 64, 32, 32, 32, 32, 16, 16, 16, 16, 16, 8, 8, 4, 4, 4, 8, 48, 64, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 100, 130, 2, 2, 2, 2, 2, 1, 0, 0, 0, 0, 128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 0, 48, 48, 0, 192, 193, 193, 194, 4, 8, 16, 32, 64, 128, 0, 0, 0, 128, 128, 128, 128, 64, 64, 64, 64, 32, 32, 32, 32, 16, 16, 16, 16, 8, 8, 8, 8, 8, 196, 4, 196, 4, 196, 2, 194, 2, 194, 1, 1, 1, 1, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 192, 56, 4, 3, 0, 0, 0, 0, 0, 0, 0, 12, 12, 12, 13, 1, 0, 64, 160, 33, 34, 18, 17, 17, 17, 9, 8, 8, 8, 8, 4, 4, 8, 8, 16, 16, 16, 16, 16, 17, 15, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 170, 170, 255, 255, 195, 191, 127, 3, 127, 191, 195, 255, 255, 170, 170, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 128, 64, 64, 64, 64, 32, 32, 32, 32, 16, 16, 16, 16, 8, 8, 8, 8, 8, 4, 4, 4, 4, 4, 2, 3, 2, 2, 1, 1, 1, 1, 1, 1, 2, 2, 4, 4, 8, 8, 8, 8, 8, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 7, 31, 7, 31, 7, 28, 7, 31, 7, 31, 7, 2, 2, 0, 0, 0, 0,
|
||||
},
|
||||
{
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 64, 64, 32, 32, 32, 32, 16, 16, 16, 16, 16, 8, 8, 4, 4, 4, 8, 48, 64, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 100, 130, 2, 2, 2, 2, 2, 1, 0, 0, 0, 0, 128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 0, 48, 48, 0, 192, 193, 193, 194, 4, 8, 16, 32, 64, 128, 0, 0, 0, 128, 128, 128, 128, 64, 64, 64, 64, 32, 32, 32, 32, 16, 16, 16, 16, 8, 8, 8, 8, 8, 196, 4, 196, 4, 196, 2, 194, 2, 194, 1, 1, 1, 1, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 192, 56, 4, 3, 0, 0, 0, 0, 0, 0, 0, 12, 12, 12, 13, 1, 0, 64, 160, 33, 34, 18, 17, 17, 17, 9, 8, 8, 8, 8, 4, 4, 8, 8, 16, 16, 16, 16, 16, 17, 15, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 170, 170, 255, 255, 195, 191, 127, 3, 127, 191, 195, 255, 255, 170, 170, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 128, 64, 64, 64, 64, 32, 32, 32, 32, 16, 16, 16, 16, 8, 8, 8, 8, 8, 4, 4, 4, 4, 4, 2, 3, 2, 2, 1, 1, 1, 1, 1, 1, 2, 2, 4, 4, 8, 8, 8, 8, 8, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 7, 31, 7, 31, 7, 28, 7, 31, 7, 31, 7, 2, 2, 0, 0, 0, 0,
|
||||
},
|
||||
{
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 64, 64, 64, 64, 32, 32, 32, 32, 16, 8, 4, 2, 2, 4, 24, 96, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60, 194, 1, 1, 2, 2, 4, 4, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 96, 0, 129, 130, 130, 132, 8, 16, 32, 64, 128, 0, 0, 0, 0, 128, 128, 128, 128, 64, 64, 64, 64, 32, 32, 32, 32, 16, 16, 16, 16, 8, 8, 8, 8, 8, 196, 4, 196, 4, 196, 2, 194, 2, 194, 1, 1, 1, 1, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 112, 25, 6, 0, 0, 0, 0, 0, 0, 0, 24, 24, 24, 27, 3, 0, 64, 160, 34, 36, 20, 18, 18, 18, 11, 8, 8, 8, 8, 5, 5, 9, 9, 16, 16, 16, 16, 16, 17, 15, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 170, 170, 255, 255, 195, 191, 127, 3, 127, 191, 195, 255, 255, 170, 170, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 128, 64, 64, 64, 64, 32, 32, 32, 32, 16, 16, 16, 16, 8, 8, 8, 8, 8, 4, 4, 4, 4, 4, 2, 3, 2, 2, 1, 1, 1, 1, 1, 1, 2, 2, 4, 4, 8, 8, 8, 8, 8, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 7, 31, 7, 31, 7, 28, 7, 31, 7, 31, 7, 2, 2, 0, 0, 0, 0,
|
||||
},
|
||||
{
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 0, 0, 0, 0, 0, 128, 64, 64, 32, 32, 32, 32, 16, 16, 16, 16, 8, 4, 2, 1, 1, 2, 12, 48, 64, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30, 225, 0, 0, 1, 1, 2, 2, 1, 0, 0, 0, 0, 128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 0, 48, 48, 0, 192, 193, 193, 194, 4, 8, 16, 32, 64, 128, 0, 0, 0, 128, 128, 128, 128, 64, 64, 64, 64, 32, 32, 32, 32, 16, 16, 16, 16, 8, 8, 8, 8, 8, 196, 4, 196, 4, 196, 2, 194, 2, 194, 1, 1, 1, 1, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 112, 12, 3, 0, 0, 0, 0, 0, 0, 0, 12, 12, 12, 13, 1, 0, 64, 160, 33, 34, 18, 17, 17, 17, 9, 8, 8, 8, 8, 4, 4, 8, 8, 16, 16, 16, 16, 16, 17, 15, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 170, 170, 255, 255, 195, 191, 127, 3, 127, 191, 195, 255, 255, 170, 170, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 128, 64, 64, 64, 64, 32, 32, 32, 32, 16, 16, 16, 16, 8, 8, 8, 8, 8, 4, 4, 4, 4, 4, 2, 3, 2, 2, 1, 1, 1, 1, 1, 1, 2, 2, 4, 4, 8, 8, 8, 8, 8, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 7, 31, 7, 31, 7, 28, 7, 31, 7, 31, 7, 2, 2, 0, 0, 0, 0,
|
||||
},
|
||||
{
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 64, 64, 32, 32, 32, 32, 16, 16, 16, 16, 8, 8, 4, 2, 2, 2, 4, 56, 64, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 226, 1, 1, 2, 2, 2, 2, 1, 0, 0, 0, 0, 128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 0, 48, 48, 0, 192, 193, 193, 194, 4, 8, 16, 32, 64, 128, 0, 0, 0, 128, 128, 128, 128, 64, 64, 64, 64, 32, 32, 32, 32, 16, 16, 16, 16, 8, 8, 8, 8, 8, 196, 4, 196, 4, 196, 2, 194, 2, 194, 1, 1, 1, 1, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 112, 12, 3, 0, 0, 0, 0, 0, 0, 0, 12, 12, 12, 13, 1, 0, 64, 160, 33, 34, 18, 17, 17, 17, 9, 8, 8, 8, 8, 4, 4, 8, 8, 16, 16, 16, 16, 16, 17, 15, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 170, 170, 255, 255, 195, 191, 127, 3, 127, 191, 195, 255, 255, 170, 170, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 128, 64, 64, 64, 64, 32, 32, 32, 32, 16, 16, 16, 16, 8, 8, 8, 8, 8, 4, 4, 4, 4, 4, 2, 3, 2, 2, 1, 1, 1, 1, 1, 1, 2, 2, 4, 4, 8, 8, 8, 8, 8, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 7, 31, 7, 31, 7, 28, 7, 31, 7, 31, 7, 2, 2, 0, 0, 0, 0,
|
||||
}};
|
||||
static const char PROGMEM prep[][ANIM_SIZE] = {{
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 0, 0, 0, 0, 0, 128, 64, 64, 32, 32, 32, 32, 16, 16, 16, 16, 8, 4, 2, 1, 1, 2, 12, 48, 64, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30, 225, 0, 0, 1, 1, 2, 2, 129, 128, 128, 0, 0, 128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 0, 48, 48, 0, 0, 1, 225, 26, 6, 9, 49, 53, 1, 138, 124, 0, 0, 128, 128, 128, 128, 64, 64, 64, 64, 32, 32, 32, 32, 16, 16, 16, 16, 8, 8, 8, 8, 8, 196, 4, 196, 4, 196, 2, 194, 2, 194, 1, 1, 1, 1, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 112, 12, 3, 0, 0, 24, 6, 5, 152, 153, 132, 195, 124, 65, 65, 64, 64, 32, 33, 34, 18, 17, 17, 17, 9, 8, 8, 8, 8, 4, 4, 4, 4, 4, 4, 2, 2, 2, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 170, 170, 255, 255, 195, 191, 127, 3, 127, 191, 195, 255, 255, 170, 170, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 128, 64, 64, 64, 64, 32, 32, 32, 32, 16, 16, 16, 16, 8, 8, 8, 8, 8, 4, 4, 4, 4, 4, 2, 3, 2, 2, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 7, 31, 7, 31, 7, 28, 7, 31, 7, 31, 7, 2, 2, 0, 0, 0, 0,
|
||||
}};
|
||||
static const char PROGMEM tap[TAP_FRAMES][ANIM_SIZE] = {
|
||||
{
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 0, 0, 0, 0, 0, 128, 64, 64, 32, 32, 32, 32, 16, 16, 16, 16, 8, 4, 2, 1, 1, 2, 12, 48, 64, 128, 0, 0, 0, 0, 0, 0, 0, 248, 248, 248, 248, 0, 0, 0, 0, 0, 128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30, 225, 0, 0, 1, 1, 2, 2, 129, 128, 128, 0, 0, 128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 0, 48, 48, 0, 0, 1, 1, 2, 4, 8, 16, 32, 67, 135, 7, 1, 0, 184, 188, 190, 159, 95, 95, 79, 76, 32, 32, 32, 32, 16, 16, 16, 16, 8, 8, 8, 8, 8, 196, 4, 196, 4, 196, 2, 194, 2, 194, 1, 1, 1, 1, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 112, 12, 3, 0, 0, 24, 6, 5, 152, 153, 132, 67, 124, 65, 65, 64, 64, 32, 33, 34, 18, 17, 17, 17, 9, 8, 8, 8, 8, 4, 4, 8, 8, 16, 16, 16, 16, 16, 17, 15, 1, 61, 124, 252, 252, 252, 252, 252, 60, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 170, 170, 255, 255, 195, 191, 127, 3, 127, 191, 195, 255, 255, 170, 170, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 128, 64, 64, 64, 64, 32, 32, 32, 32, 16, 16, 16, 16, 8, 8, 8, 8, 8, 4, 4, 4, 4, 4, 2, 3, 2, 2, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 7, 31, 7, 31, 7, 28, 7, 31, 7, 31, 7, 2, 2, 0, 0, 0, 0,
|
||||
},
|
||||
{
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 0, 0, 0, 0, 0, 128, 64, 64, 32, 32, 32, 32, 16, 16, 16, 16, 8, 4, 2, 1, 1, 2, 12, 48, 64, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30, 225, 0, 0, 1, 1, 2, 2, 1, 0, 0, 0, 0, 128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 0, 48, 48, 0, 0, 1, 225, 26, 6, 9, 49, 53, 1, 138, 124, 0, 0, 128, 128, 128, 128, 64, 64, 64, 64, 32, 32, 32, 32, 16, 16, 16, 16, 8, 8, 8, 8, 8, 196, 4, 196, 4, 196, 2, 194, 2, 194, 1, 1, 1, 1, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 112, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 64, 160, 33, 34, 18, 17, 17, 17, 9, 8, 8, 8, 8, 4, 4, 4, 4, 4, 4, 2, 2, 2, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 170, 170, 255, 255, 195, 191, 127, 3, 127, 191, 195, 255, 255, 170, 170, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 128, 64, 64, 64, 64, 32, 32, 32, 32, 16, 16, 16, 16, 8, 8, 8, 8, 8, 4, 4, 4, 4, 4, 2, 3, 122, 122, 121, 121, 121, 121, 57, 49, 2, 2, 4, 4, 8, 8, 8, 8, 8, 7, 0, 0, 0, 48, 60, 124, 124, 126, 126, 126, 126, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 7, 31, 7, 31, 7, 28, 7, 31, 7, 31, 7, 2, 2, 0, 0, 0, 0,
|
||||
},
|
||||
};
|
||||
|
||||
// assumes 1 frame prep stage
|
||||
void animation_phase(void) {
|
||||
if (get_current_wpm() <= IDLE_SPEED) {
|
||||
current_idle_frame = (current_idle_frame + 1) % IDLE_FRAMES;
|
||||
oled_write_raw_P(idle[abs((IDLE_FRAMES - 1) - current_idle_frame)], ANIM_SIZE);
|
||||
}
|
||||
if (get_current_wpm() > IDLE_SPEED && get_current_wpm() < TAP_SPEED) {
|
||||
// oled_write_raw_P(prep[abs((PREP_FRAMES-1)-current_prep_frame)], ANIM_SIZE); // uncomment if IDLE_FRAMES >1
|
||||
oled_write_raw_P(prep[0], ANIM_SIZE); // remove if IDLE_FRAMES >1
|
||||
}
|
||||
if (get_current_wpm() >= TAP_SPEED) {
|
||||
current_tap_frame = (current_tap_frame + 1) % TAP_FRAMES;
|
||||
oled_write_raw_P(tap[abs((TAP_FRAMES - 1) - current_tap_frame)], ANIM_SIZE);
|
||||
}
|
||||
}
|
||||
if (get_current_wpm() != 000) {
|
||||
oled_on(); // not essential but turns on animation OLED with any alpha keypress
|
||||
if (timer_elapsed32(anim_timer) > ANIM_FRAME_DURATION) {
|
||||
anim_timer = timer_read32();
|
||||
animation_phase();
|
||||
}
|
||||
anim_sleep = timer_read32();
|
||||
} else {
|
||||
if (timer_elapsed32(anim_sleep) > OLED_TIMEOUT) {
|
||||
oled_off();
|
||||
} else {
|
||||
if (timer_elapsed32(anim_timer) > ANIM_FRAME_DURATION) {
|
||||
anim_timer = timer_read32();
|
||||
animation_phase();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
render_anim();
|
||||
oled_set_cursor(0, 0);
|
||||
oled_write(get_u8_str(get_current_wpm(), '0'), false);
|
||||
return true;
|
||||
}
|
||||
|
||||
oled_rotation_t oled_init_user(oled_rotation_t rotation) { return OLED_ROTATION_180; };
|
||||
#endif
|
||||
18
keyboards/ll3macorn/bongopad/bongopad.h
Normal file
18
keyboards/ll3macorn/bongopad/bongopad.h
Normal file
@@ -0,0 +1,18 @@
|
||||
// Copyright 2021 Ll3macorn (@ll3macorn)
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
#pragma once
|
||||
|
||||
#include "quantum.h"
|
||||
|
||||
#define LAYOUT_default( \
|
||||
K00, \
|
||||
K10, K11, K12, \
|
||||
K20, K21, K22, \
|
||||
K30, K31, K32 \
|
||||
) { \
|
||||
{ K00, KC_NO, KC_NO }, \
|
||||
{ K10, K11, K12 }, \
|
||||
{ K20, K21, K22 }, \
|
||||
{ K30, K31, K32 } \
|
||||
}
|
||||
|
||||
40
keyboards/ll3macorn/bongopad/config.h
Normal file
40
keyboards/ll3macorn/bongopad/config.h
Normal file
@@ -0,0 +1,40 @@
|
||||
// Copyright 2021 Ll3macorn (@ll3macorn)
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
#pragma once
|
||||
|
||||
#include "config_common.h"
|
||||
|
||||
/* USB Device descriptor parameter */
|
||||
#define VENDOR_ID 0x3728
|
||||
#define PRODUCT_ID 0x2949
|
||||
#define DEVICE_VER 0x0001
|
||||
#define MANUFACTURER Ll3macorn
|
||||
#define PRODUCT BongoPad
|
||||
|
||||
/* bootmagic */
|
||||
#define BOOTMAGIC_LITE_ROW 1
|
||||
#define BOOTMAGIC_LITE_COLUMN 0
|
||||
|
||||
/* rgb underglow */
|
||||
#define RGB_DI_PIN E6
|
||||
#define RGBLED_NUM 6
|
||||
|
||||
/* key matrix size */
|
||||
#define MATRIX_ROWS 4
|
||||
#define MATRIX_COLS 3
|
||||
|
||||
/* key matrix pins */
|
||||
#define MATRIX_ROW_PINS { F7, D7, C6, D4 }
|
||||
#define MATRIX_COL_PINS { F4, F5, F6 }
|
||||
#define UNUSED_PINS
|
||||
|
||||
/* COL2ROW or ROW2COL */
|
||||
#define DIODE_DIRECTION COL2ROW
|
||||
|
||||
/* encoders */
|
||||
#define ENCODERS_PAD_A { B1 }
|
||||
#define ENCODERS_PAD_B { B3 }
|
||||
|
||||
/* misc */
|
||||
#define LAYER_STATE_8BIT
|
||||
#define NO_ACTION_TAPPING
|
||||
41
keyboards/ll3macorn/bongopad/keymaps/default/keymap.c
Normal file
41
keyboards/ll3macorn/bongopad/keymaps/default/keymap.c
Normal file
@@ -0,0 +1,41 @@
|
||||
// Copyright 2021 Ll3macorn (@ll3macorn)
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
#include QMK_KEYBOARD_H
|
||||
|
||||
enum layers {
|
||||
Layer1,
|
||||
Layer2,
|
||||
Layer3,
|
||||
Layer4
|
||||
};
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
|
||||
[Layer1] = LAYOUT_default(
|
||||
KC__MUTE,
|
||||
KC_7, KC_8, KC_9,
|
||||
KC_4, KC_5, KC_6,
|
||||
KC_1, KC_2, KC_3),
|
||||
|
||||
[Layer2] = LAYOUT_default(
|
||||
KC_SPC,
|
||||
KC_SPC, KC_SPC, KC_SPC,
|
||||
KC_SPC, KC_SPC, KC_SPC,
|
||||
KC_SPC, KC_SPC, KC_SPC),
|
||||
|
||||
[Layer3] = LAYOUT_default(
|
||||
KC_SPC,
|
||||
KC_SPC, KC_SPC, KC_SPC,
|
||||
KC_SPC, KC_SPC, KC_SPC,
|
||||
KC_SPC, KC_SPC, KC_SPC),
|
||||
|
||||
[Layer4] = LAYOUT_default(
|
||||
KC_SPC,
|
||||
KC_SPC, KC_SPC, KC_SPC,
|
||||
KC_SPC, KC_SPC, KC_SPC,
|
||||
KC_SPC, KC_SPC, KC_SPC)
|
||||
|
||||
};
|
||||
|
||||
// clang-format on
|
||||
|
||||
3
keyboards/ll3macorn/bongopad/keymaps/default/rules.mk
Normal file
3
keyboards/ll3macorn/bongopad/keymaps/default/rules.mk
Normal file
@@ -0,0 +1,3 @@
|
||||
LTO_ENABLE = yes
|
||||
COMBO_ENABLE = no
|
||||
|
||||
10
keyboards/ll3macorn/bongopad/readme.md
Normal file
10
keyboards/ll3macorn/bongopad/readme.md
Normal file
@@ -0,0 +1,10 @@
|
||||
# BongoPad
|
||||
|
||||
* Keyboard Maintainer: [Ll3macorn](https://github.com/Ll3macorn)
|
||||
* Hardware Supported: Pro micro
|
||||
|
||||
Make example for this keyboard (after setting up your build environment):
|
||||
|
||||
make ll3macorn/bongopad:default
|
||||
|
||||
See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
|
||||
25
keyboards/ll3macorn/bongopad/rules.mk
Normal file
25
keyboards/ll3macorn/bongopad/rules.mk
Normal file
@@ -0,0 +1,25 @@
|
||||
# MCU name
|
||||
MCU = atmega32u4
|
||||
|
||||
# Bootloader selection
|
||||
BOOTLOADER = atmel-dfu
|
||||
|
||||
# Build Options
|
||||
# change yes to no to disable
|
||||
#
|
||||
BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
|
||||
MOUSEKEY_ENABLE = no # Mouse keys
|
||||
EXTRAKEY_ENABLE = yes # Audio control and System control
|
||||
CONSOLE_ENABLE = no # Console for debug
|
||||
COMMAND_ENABLE = no # Commands for debug and configuration
|
||||
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
|
||||
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
|
||||
# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
|
||||
NKRO_ENABLE = yes # USB Nkey Rollover
|
||||
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
|
||||
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
|
||||
AUDIO_ENABLE = no # Audio output
|
||||
ENCODER_ENABLE = yes
|
||||
OLED_ENABLE = yes
|
||||
OLED_DRIVER = SSD1306
|
||||
WPM_ENABLE = yes
|
||||
@@ -34,9 +34,8 @@
|
||||
#define MATRIX_COL_PINS { B2, B3, B1, F7, F6, F5}
|
||||
#define UNUSED_PINS
|
||||
|
||||
#define ENCODERS_PAD_A { D1 }
|
||||
#define ENCODERS_PAD_B { E6 }
|
||||
#define ENCODER_DIRECTION_FLIP
|
||||
#define ENCODERS_PAD_A { E6 }
|
||||
#define ENCODERS_PAD_B { D1 }
|
||||
#define TAP_CODE_DELAY 10
|
||||
/* COL2ROW or ROW2COL */
|
||||
#define DIODE_DIRECTION COL2ROW
|
||||
|
||||
@@ -29,8 +29,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
),
|
||||
|
||||
[_QWERTY] = LAYOUT_planck_2x2u(
|
||||
KC_TRNS, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, SE_AA,
|
||||
KC_TRNS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, SE_OSLH, SE_AE,
|
||||
KC_TRNS, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, SE_ARNG,
|
||||
KC_TRNS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, SE_ODIA, SE_ADIA,
|
||||
KC_TRNS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
|
||||
),
|
||||
@@ -38,7 +38,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
[_SYMBOLS] = LAYOUT_planck_2x2u(
|
||||
KC_TRNS, KC_NO, SE_PIPE, SE_LBRC, SE_RBRC, KC_NO, S(KC_5), SE_QUES, SE_AT, SE_EQL, SE_DLR, KC_BSPC,
|
||||
KC_TRNS, SE_LCBR, SE_RCBR, SE_LPRN, SE_RPRN, KC_NO, SE_PLUS, S(KC_1), S(KC_2), S(KC_3), SE_AMPR, KC_QUOT,
|
||||
KC_TRNS, M_TILD, M_CIRC, SE_LESS, SE_GRTR, KC_NO, SE_APOS, SE_SLSH, SE_BSLS, SE_ASTR, M_BTCK, KC_ENT,
|
||||
KC_TRNS, M_TILD, M_CIRC, SE_LABK, SE_RABK, KC_NO, SE_QUOT, SE_SLSH, SE_BSLS, SE_ASTR, M_BTCK, KC_ENT,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
|
||||
),
|
||||
|
||||
|
||||
@@ -66,7 +66,24 @@ uint8_t OptLowPin = OPT_ENC1;
|
||||
bool debug_encoder = false;
|
||||
bool is_drag_scroll = false;
|
||||
|
||||
void process_wheel(report_mouse_t* mouse_report) {
|
||||
__attribute__((weak)) bool encoder_update_user(uint8_t index, bool clockwise) { return true; }
|
||||
|
||||
bool encoder_update_kb(uint8_t index, bool clockwise) {
|
||||
if (!encoder_update_user(index, clockwise)) {
|
||||
return false;
|
||||
}
|
||||
#ifdef MOUSEKEY_ENABLE
|
||||
tap_code(clockwise ? KC_WH_U : KC_WH_D);
|
||||
#else
|
||||
mouse_report_t mouse_report = pointing_device_get_report();
|
||||
mouse_report.v = clockwise ? 1 : -1;
|
||||
pointing_device_set_report(mouse_report);
|
||||
pointing_device_send();
|
||||
#endif
|
||||
return true;
|
||||
}
|
||||
|
||||
void process_wheel(void) {
|
||||
// Lovingly ripped from the Ploopy Source
|
||||
|
||||
// If the mouse wheel was just released, do not scroll.
|
||||
@@ -94,11 +111,11 @@ void process_wheel(report_mouse_t* mouse_report) {
|
||||
int dir = opt_encoder_handler(p1, p2);
|
||||
|
||||
if (dir == 0) return;
|
||||
mouse_report->v = (int8_t)(dir * OPT_SCALE);
|
||||
encoder_update_kb(0, dir == 1);
|
||||
}
|
||||
|
||||
__attribute__((weak)) report_mouse_t pointing_device_task_kb(report_mouse_t mouse_report) {
|
||||
process_wheel(&mouse_report);
|
||||
report_mouse_t pointing_device_task_kb(report_mouse_t mouse_report) {
|
||||
process_wheel();
|
||||
|
||||
if (is_drag_scroll) {
|
||||
mouse_report.h = mouse_report.x;
|
||||
|
||||
@@ -28,16 +28,16 @@
|
||||
#define OPT_ENC1_MUX 0
|
||||
#define OPT_ENC2_MUX 4
|
||||
|
||||
void process_wheel(report_mouse_t* mouse_report);
|
||||
void process_wheel(void);
|
||||
|
||||
#define LAYOUT(BLL, BL, BM, BR, BRR, BF, BB, BDPI) \
|
||||
{ {BL, BM, BR, BF, BB, BRR, BLL, BDPI}, }
|
||||
|
||||
typedef union {
|
||||
uint32_t raw;
|
||||
struct {
|
||||
uint8_t dpi_config;
|
||||
};
|
||||
uint32_t raw;
|
||||
struct {
|
||||
uint8_t dpi_config;
|
||||
};
|
||||
} keyboard_config_t;
|
||||
|
||||
extern keyboard_config_t keyboard_config;
|
||||
@@ -56,3 +56,6 @@ enum ploopy_keycodes {
|
||||
PLOOPY_SAFE_RANGE,
|
||||
#endif
|
||||
};
|
||||
|
||||
bool encoder_update_user(uint8_t index, bool clockwise);
|
||||
bool encoder_update_kb(uint8_t index, bool clockwise);
|
||||
|
||||
@@ -25,5 +25,8 @@ POINTING_DEVICE_ENABLE = yes
|
||||
POINTING_DEVICE_DRIVER = pmw3360
|
||||
MOUSEKEY_ENABLE = yes # Mouse keys
|
||||
|
||||
ENCODER_ENABLE := no
|
||||
OPTS_DEF += -DENCODER_ENABLE
|
||||
|
||||
QUANTUM_LIB_SRC += analog.c
|
||||
SRC += opt_encoder.c
|
||||
|
||||
@@ -22,6 +22,9 @@ POINTING_DEVICE_ENABLE = yes
|
||||
POINTING_DEVICE_DRIVER = pmw3360
|
||||
MOUSEKEY_ENABLE = yes # Mouse keys
|
||||
|
||||
ENCODER_ENABLE := no
|
||||
OPTS_DEF += -DENCODER_ENABLE
|
||||
|
||||
QUANTUM_LIB_SRC += analog.c
|
||||
SRC += opt_encoder.c
|
||||
|
||||
|
||||
@@ -31,7 +31,8 @@
|
||||
# define OPT_SCALE 1 // Multiplier for wheel
|
||||
#endif
|
||||
#ifndef PLOOPY_DPI_OPTIONS
|
||||
# define PLOOPY_DPI_OPTIONS { 1200, 1600, 2400 }
|
||||
# define PLOOPY_DPI_OPTIONS \
|
||||
{ 1200, 1600, 2400 }
|
||||
# ifndef PLOOPY_DPI_DEFAULT
|
||||
# define PLOOPY_DPI_DEFAULT 1
|
||||
# endif
|
||||
@@ -40,10 +41,10 @@
|
||||
# define PLOOPY_DPI_DEFAULT 0
|
||||
#endif
|
||||
#ifndef PLOOPY_DRAGSCROLL_DPI
|
||||
# define PLOOPY_DRAGSCROLL_DPI 100 // Fixed-DPI Drag Scroll
|
||||
# define PLOOPY_DRAGSCROLL_DPI 100 // Fixed-DPI Drag Scroll
|
||||
#endif
|
||||
#ifndef PLOOPY_DRAGSCROLL_MULTIPLIER
|
||||
# define PLOOPY_DRAGSCROLL_MULTIPLIER 0.75 // Variable-DPI Drag Scroll
|
||||
# define PLOOPY_DRAGSCROLL_MULTIPLIER 0.75 // Variable-DPI Drag Scroll
|
||||
#endif
|
||||
|
||||
keyboard_config_t keyboard_config;
|
||||
@@ -65,7 +66,24 @@ uint8_t OptLowPin = OPT_ENC1;
|
||||
bool debug_encoder = false;
|
||||
bool is_drag_scroll = false;
|
||||
|
||||
void process_wheel(report_mouse_t* mouse_report) {
|
||||
__attribute__((weak)) bool encoder_update_user(uint8_t index, bool clockwise) { return true; }
|
||||
|
||||
bool encoder_update_kb(uint8_t index, bool clockwise) {
|
||||
if (!encoder_update_user(index, clockwise)) {
|
||||
return false;
|
||||
}
|
||||
#ifdef MOUSEKEY_ENABLE
|
||||
tap_code(clockwise ? KC_WH_U : KC_WH_D);
|
||||
#else
|
||||
mouse_report_t mouse_report = pointing_device_get_report();
|
||||
mouse_report.v = clockwise ? 1 : -1;
|
||||
pointing_device_set_report(mouse_report);
|
||||
pointing_device_send();
|
||||
#endif
|
||||
return true;
|
||||
}
|
||||
|
||||
void process_wheel(void) {
|
||||
// TODO: Replace this with interrupt driven code, polling is S L O W
|
||||
// Lovingly ripped from the Ploopy Source
|
||||
|
||||
@@ -94,11 +112,11 @@ void process_wheel(report_mouse_t* mouse_report) {
|
||||
int dir = opt_encoder_handler(p1, p2);
|
||||
|
||||
if (dir == 0) return;
|
||||
mouse_report->v = (int8_t)(dir * OPT_SCALE);
|
||||
encoder_update_kb(0, dir == 1);
|
||||
}
|
||||
|
||||
report_mouse_t pointing_device_task_kb(report_mouse_t mouse_report) {
|
||||
process_wheel(&mouse_report);
|
||||
process_wheel();
|
||||
|
||||
if (is_drag_scroll) {
|
||||
mouse_report.h = mouse_report.x;
|
||||
|
||||
@@ -61,3 +61,6 @@ enum ploopy_keycodes {
|
||||
PLOOPY_SAFE_RANGE,
|
||||
#endif
|
||||
};
|
||||
|
||||
bool encoder_update_user(uint8_t index, bool clockwise);
|
||||
bool encoder_update_kb(uint8_t index, bool clockwise);
|
||||
|
||||
@@ -20,7 +20,10 @@ RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
|
||||
AUDIO_ENABLE = no # Audio output
|
||||
POINTING_DEVICE_ENABLE = yes
|
||||
POINTING_DEVICE_DRIVER = adns5050
|
||||
MOUSEKEY_ENABLE = no # Mouse keys
|
||||
MOUSEKEY_ENABLE = yes # Mouse keys
|
||||
|
||||
ENCODER_ENABLE := no
|
||||
OPTS_DEF += -DENCODER_ENABLE
|
||||
|
||||
QUANTUM_LIB_SRC += analog.c
|
||||
SRC += opt_encoder.c
|
||||
|
||||
@@ -45,11 +45,11 @@
|
||||
# define PLOOPY_DRAGSCROLL_DPI 375 // Fixed-DPI Drag Scroll
|
||||
#endif
|
||||
#ifndef PLOOPY_DRAGSCROLL_MULTIPLIER
|
||||
# define PLOOPY_DRAGSCROLL_MULTIPLIER 0.75 // Variable-DPI Drag Scroll
|
||||
# define PLOOPY_DRAGSCROLL_MULTIPLIER 0.75 // Variable-DPI Drag Scroll
|
||||
#endif
|
||||
|
||||
keyboard_config_t keyboard_config;
|
||||
uint16_t dpi_array[] = PLOOPY_DPI_OPTIONS;
|
||||
uint16_t dpi_array[] = PLOOPY_DPI_OPTIONS;
|
||||
#define DPI_OPTION_SIZE (sizeof(dpi_array) / sizeof(uint16_t))
|
||||
|
||||
// TODO: Implement libinput profiles
|
||||
@@ -58,23 +58,38 @@ uint16_t dpi_array[] = PLOOPY_DPI_OPTIONS;
|
||||
// Valid options are ACC_NONE, ACC_LINEAR, ACC_CUSTOM, ACC_QUADRATIC
|
||||
|
||||
// Trackball State
|
||||
bool is_scroll_clicked = false;
|
||||
bool BurstState = false; // init burst state for Trackball module
|
||||
uint16_t MotionStart = 0; // Timer for accel, 0 is resting state
|
||||
uint16_t lastScroll = 0; // Previous confirmed wheel event
|
||||
uint16_t lastMidClick = 0; // Stops scrollwheel from being read if it was pressed
|
||||
uint8_t OptLowPin = OPT_ENC1;
|
||||
bool debug_encoder = false;
|
||||
bool is_scroll_clicked = false;
|
||||
bool BurstState = false; // init burst state for Trackball module
|
||||
uint16_t MotionStart = 0; // Timer for accel, 0 is resting state
|
||||
uint16_t lastScroll = 0; // Previous confirmed wheel event
|
||||
uint16_t lastMidClick = 0; // Stops scrollwheel from being read if it was pressed
|
||||
uint8_t OptLowPin = OPT_ENC1;
|
||||
bool debug_encoder = false;
|
||||
bool is_drag_scroll = false;
|
||||
|
||||
void process_wheel(report_mouse_t* mouse_report) {
|
||||
__attribute__((weak)) bool encoder_update_user(uint8_t index, bool clockwise) { return true; }
|
||||
|
||||
bool encoder_update_kb(uint8_t index, bool clockwise) {
|
||||
if (!encoder_update_user(index, clockwise)) {
|
||||
return false;
|
||||
}
|
||||
#ifdef MOUSEKEY_ENABLE
|
||||
tap_code(clockwise ? KC_WH_U : KC_WH_D);
|
||||
#else
|
||||
mouse_report_t mouse_report = pointing_device_get_report();
|
||||
mouse_report.v = clockwise ? 1 : -1;
|
||||
pointing_device_set_report(mouse_report);
|
||||
pointing_device_send();
|
||||
#endif
|
||||
return true;
|
||||
}
|
||||
|
||||
void process_wheel(void) {
|
||||
// If the mouse wheel was just released, do not scroll.
|
||||
if (timer_elapsed(lastMidClick) < SCROLL_BUTT_DEBOUNCE)
|
||||
return;
|
||||
if (timer_elapsed(lastMidClick) < SCROLL_BUTT_DEBOUNCE) return;
|
||||
|
||||
// Limit the number of scrolls per unit time.
|
||||
if (timer_elapsed(lastScroll) < OPT_DEBOUNCE)
|
||||
return;
|
||||
if (timer_elapsed(lastScroll) < OPT_DEBOUNCE) return;
|
||||
|
||||
// Don't scroll if the middle button is depressed.
|
||||
if (is_scroll_clicked) {
|
||||
@@ -87,15 +102,12 @@ void process_wheel(report_mouse_t* mouse_report) {
|
||||
uint16_t p1 = adc_read(OPT_ENC1_MUX);
|
||||
uint16_t p2 = adc_read(OPT_ENC2_MUX);
|
||||
|
||||
if (debug_encoder)
|
||||
dprintf("OPT1: %d, OPT2: %d\n", p1, p2);
|
||||
if (debug_encoder) dprintf("OPT1: %d, OPT2: %d\n", p1, p2);
|
||||
|
||||
uint8_t dir = opt_encoder_handler(p1, p2);
|
||||
|
||||
if (dir == 0)
|
||||
return;
|
||||
|
||||
mouse_report->v = (int8_t)(dir * OPT_SCALE);
|
||||
if (dir == 0) return;
|
||||
encoder_update_kb(0, dir == 1);
|
||||
}
|
||||
|
||||
void pointing_device_init_kb(void) {
|
||||
@@ -106,6 +118,7 @@ void pointing_device_init_kb(void) {
|
||||
}
|
||||
|
||||
report_mouse_t pointing_device_task_kb(report_mouse_t mouse_report) {
|
||||
process_wheel();
|
||||
|
||||
if (is_drag_scroll) {
|
||||
mouse_report.h = mouse_report.x;
|
||||
@@ -127,12 +140,11 @@ bool process_record_kb(uint16_t keycode, keyrecord_t* record) {
|
||||
|
||||
// Update Timer to prevent accidental scrolls
|
||||
if ((record->event.key.col == 1) && (record->event.key.row == 0)) {
|
||||
lastMidClick = timer_read();
|
||||
lastMidClick = timer_read();
|
||||
is_scroll_clicked = record->event.pressed;
|
||||
}
|
||||
|
||||
if (!process_record_user(keycode, record))
|
||||
return false;
|
||||
if (!process_record_user(keycode, record)) return false;
|
||||
|
||||
if (keycode == DPI_CONFIG && record->event.pressed) {
|
||||
keyboard_config.dpi_config = (keyboard_config.dpi_config + 1) % DPI_OPTION_SIZE;
|
||||
|
||||
@@ -29,16 +29,16 @@
|
||||
#define OPT_ENC1_MUX 0
|
||||
#define OPT_ENC2_MUX 4
|
||||
|
||||
void process_wheel(report_mouse_t* mouse_report);
|
||||
void process_wheel(void);
|
||||
|
||||
#define LAYOUT(BL, BM, BR, BF, BB) \
|
||||
{ {BL, BM, BR, BF, BB}, }
|
||||
|
||||
typedef union {
|
||||
uint32_t raw;
|
||||
struct {
|
||||
uint8_t dpi_config;
|
||||
};
|
||||
uint32_t raw;
|
||||
struct {
|
||||
uint8_t dpi_config;
|
||||
};
|
||||
} keyboard_config_t;
|
||||
|
||||
extern keyboard_config_t keyboard_config;
|
||||
@@ -56,3 +56,6 @@ enum ploopy_keycodes {
|
||||
PLOOPY_SAFE_RANGE,
|
||||
#endif
|
||||
};
|
||||
|
||||
bool encoder_update_user(uint8_t index, bool clockwise);
|
||||
bool encoder_update_kb(uint8_t index, bool clockwise);
|
||||
|
||||
@@ -48,10 +48,8 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#define DIODE_DIRECTION COL2ROW
|
||||
|
||||
/* Encoder pin assignment */
|
||||
#define ENCODERS_PAD_A { C3 }
|
||||
#define ENCODERS_PAD_B { C2 }
|
||||
|
||||
#define ENCODER_DIRECTION_FLIP
|
||||
#define ENCODERS_PAD_A { C2 }
|
||||
#define ENCODERS_PAD_B { C3 }
|
||||
|
||||
/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
|
||||
#define DEBOUNCE 5
|
||||
|
||||
71
keyboards/skippys_custom_pcs/roopad/config.h
Normal file
71
keyboards/skippys_custom_pcs/roopad/config.h
Normal file
@@ -0,0 +1,71 @@
|
||||
/*
|
||||
Copyright 2020 <contact@vwolf.be>
|
||||
|
||||
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/>.
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "config_common.h"
|
||||
|
||||
/* USB Device descriptor parameter */
|
||||
#define VENDOR_ID 0x36B6 // skippys_custom_pcs
|
||||
#define PRODUCT_ID 0x0001 // RooPad
|
||||
#define DEVICE_VER 0x0001 // Version 1
|
||||
#define MANUFACTURER ToastyStoemp
|
||||
#define PRODUCT RooPad
|
||||
|
||||
/* key matrix size */
|
||||
#define MATRIX_ROWS 5
|
||||
#define MATRIX_COLS 5
|
||||
|
||||
/*
|
||||
* Keyboard Matrix Assignments
|
||||
*
|
||||
* Change this to how you wired your keyboard
|
||||
* COLS: AVR pins used for columns, left to right
|
||||
* ROWS: AVR pins used for rows, top to bottom
|
||||
* DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode)
|
||||
* ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode)
|
||||
*
|
||||
*/
|
||||
|
||||
// Checked with Eagle Schematic
|
||||
#define MATRIX_ROW_PINS { B5, F6, F5, F4, F1 }
|
||||
#define MATRIX_COL_PINS { F0, B4, D7, D6, D4 }
|
||||
#define UNUSED_PINS
|
||||
|
||||
/* COL2ROW or ROW2COL */
|
||||
#define DIODE_DIRECTION COL2ROW
|
||||
|
||||
/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
|
||||
#define DEBOUNCE 5
|
||||
|
||||
#define RGB_DI_PIN B6
|
||||
#define RGBLED_NUM 21
|
||||
#define RGBLIGHT_SLEEP
|
||||
|
||||
#define RGBLIGHT_EFFECT_ALTERNATING
|
||||
#define RGBLIGHT_EFFECT_BREATHING
|
||||
#define RGBLIGHT_EFFECT_CHRISTMAS
|
||||
#define RGBLIGHT_EFFECT_KNIGHT
|
||||
#define RGBLIGHT_EFFECT_RAINBOW_MOOD
|
||||
#define RGBLIGHT_EFFECT_RAINBOW_SWIRL
|
||||
#define RGBLIGHT_EFFECT_RGB_TEST
|
||||
#define RGBLIGHT_EFFECT_SNAKE
|
||||
#define RGBLIGHT_EFFECT_STATIC_GRADIENT
|
||||
#define RGBLIGHT_EFFECT_TWINKLE
|
||||
|
||||
#define NO_ACTION_MACRO
|
||||
#define NO_ACTION_FUNCTION
|
||||
10
keyboards/skippys_custom_pcs/roopad/info.json
Normal file
10
keyboards/skippys_custom_pcs/roopad/info.json
Normal file
@@ -0,0 +1,10 @@
|
||||
{
|
||||
"keyboard_name": "RooPad",
|
||||
"url": "",
|
||||
"maintainer": "ToastyStoemp",
|
||||
"layouts": {
|
||||
"LAYOUT": {
|
||||
"layout": [{"label":"Num Lock", "x":1.5, "y":0}, {"label":"/", "x":2.5, "y":0}, {"label":"*", "x":3.5, "y":0}, {"label":"-", "x":4.5, "y":0}, {"x":0, "y":1}, {"label":"7", "x":1.5, "y":1}, {"label":"8", "x":2.5, "y":1}, {"label":"9", "x":3.5, "y":1}, {"label":"+", "x":4.5, "y":1, "h":2}, {"x":0, "y":2}, {"label":"4", "x":1.5, "y":2}, {"label":"5", "x":2.5, "y":2}, {"label":"6", "x":3.5, "y":2}, {"x":0, "y":3}, {"label":"1", "x":1.5, "y":3}, {"label":"2", "x":2.5, "y":3}, {"label":"3", "x":3.5, "y":3}, {"label":"Enter", "x":4.5, "y":3, "h":2}, {"x":0, "y":4}, {"label":"0", "x":1.5, "y":4, "w":2}, {"label":".", "x":3.5, "y":4}]
|
||||
}
|
||||
}
|
||||
}
|
||||
67
keyboards/skippys_custom_pcs/roopad/keymaps/default/keymap.c
Normal file
67
keyboards/skippys_custom_pcs/roopad/keymaps/default/keymap.c
Normal file
@@ -0,0 +1,67 @@
|
||||
/*
|
||||
Copyright 2020 <contact@vwolf.be>
|
||||
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
|
||||
|
||||
enum layers {
|
||||
_LAYER0,
|
||||
_LAYER1,
|
||||
};
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
|
||||
/*
|
||||
* ┌───┬───┬───┬───┐
|
||||
* │Num│ / │ * │ - │
|
||||
* ┌───┬─┼───┼───┼───┼───┤
|
||||
* │Cal│ │ 7 │ 8 │ 9 │ │
|
||||
* ├───┼─┼───┼───┼───┤ + │
|
||||
* │WWW│ │ 4 │ 5 │ 6 │ │
|
||||
* ├───┼─┼───┼───┼───┼───┤
|
||||
* │Mai│ │ 1 │ 2 │ 3 │ E │
|
||||
* ├───┼─┼───┴───┼───┤ N │
|
||||
* │FN │ │ 0 │ . │ T │
|
||||
* └───┴─┴───────┴───┴───┘
|
||||
*/
|
||||
|
||||
[_LAYER0] = LAYOUT(
|
||||
KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS,
|
||||
KC_CALC, KC_P7, KC_P8, KC_P9, KC_PPLS,
|
||||
KC_WSCH, KC_P4, KC_P5, KC_P6,
|
||||
KC_MAIL, KC_P1, KC_P2, KC_P3, KC_PENT,
|
||||
MO(1), KC_P0, KC_PDOT
|
||||
),
|
||||
|
||||
/*
|
||||
* ┌───┬───┬───┬───┐
|
||||
* │Num│ / │ * │-BR│
|
||||
* ┌───┬─┼───┼───┼───┼───┤
|
||||
* │ │ │F7 │F8 │F9 │ │
|
||||
* ├───┼─┼───┼───┼───┤+BR│
|
||||
* │ │ │F4 │F5 │F6 │ │
|
||||
* ├───┼─┼───┼───┼───┼───┤
|
||||
* │ │ │F1 │F2 │F3 │RGB│
|
||||
* ├───┼─┼───┴───┼───┤ │
|
||||
* │FN │ │ │TOG│MOD│
|
||||
* └───┴─┴───────┴───┴───┘
|
||||
*/
|
||||
|
||||
[_LAYER1] = LAYOUT(
|
||||
KC_NLCK, KC_PSLS, KC_PAST, RGB_VAD,
|
||||
KC_TRNS, KC_F7, KC_F8, KC_F9, RGB_VAI,
|
||||
KC_TRNS, KC_F4, KC_F5, KC_F6,
|
||||
KC_TRNS, KC_F1, KC_F2, KC_F3, RGB_MOD,
|
||||
KC_TRNS, KC_TRNS, RGB_TOG
|
||||
)
|
||||
};
|
||||
85
keyboards/skippys_custom_pcs/roopad/keymaps/via/keymap.c
Normal file
85
keyboards/skippys_custom_pcs/roopad/keymaps/via/keymap.c
Normal file
@@ -0,0 +1,85 @@
|
||||
/*
|
||||
Copyright 2020 <contact@vwolf.be>
|
||||
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
|
||||
|
||||
enum layers {
|
||||
_LAYER0,
|
||||
_LAYER1,
|
||||
_LAYER2,
|
||||
_LAYER3,
|
||||
};
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
|
||||
/*
|
||||
* ┌───┬───┬───┬───┐
|
||||
* │Num│ / │ * │ - │
|
||||
* ┌───┬─┼───┼───┼───┼───┤
|
||||
* │Cal│ │ 7 │ 8 │ 9 │ │
|
||||
* ├───┼─┼───┼───┼───┤ + │
|
||||
* │WWW│ │ 4 │ 5 │ 6 │ │
|
||||
* ├───┼─┼───┼───┼───┼───┤
|
||||
* │Mai│ │ 1 │ 2 │ 3 │ E │
|
||||
* ├───┼─┼───┴───┼───┤ N │
|
||||
* │FN │ │ 0 │ . │ T │
|
||||
* └───┴─┴───────┴───┴───┘
|
||||
*/
|
||||
|
||||
[_LAYER0] = LAYOUT(
|
||||
KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS,
|
||||
KC_CALC, KC_P7, KC_P8, KC_P9, KC_PPLS,
|
||||
KC_WSCH, KC_P4, KC_P5, KC_P6,
|
||||
KC_MAIL, KC_P1, KC_P2, KC_P3, KC_PENT,
|
||||
MO(1), KC_P0, KC_PDOT
|
||||
),
|
||||
|
||||
/*
|
||||
* ┌───┬───┬───┬───┐
|
||||
* │Num│ / │ * │-BR│
|
||||
* ┌───┬─┼───┼───┼───┼───┤
|
||||
* │ │ │F7 │F8 │F9 │ │
|
||||
* ├───┼─┼───┼───┼───┤+BR│
|
||||
* │ │ │F4 │F5 │F6 │ │
|
||||
* ├───┼─┼───┼───┼───┼───┤
|
||||
* │ │ │F1 │F2 │F3 │RGB│
|
||||
* ├───┼─┼───┴───┼───┤ │
|
||||
* │FN │ │ │TOG│MOD│
|
||||
* └───┴─┴───────┴───┴───┘
|
||||
*/
|
||||
|
||||
[_LAYER1] = LAYOUT(
|
||||
KC_NLCK, KC_PSLS, KC_PAST, RGB_VAD,
|
||||
KC_TRNS, KC_F7, KC_F8, KC_F9, RGB_VAI,
|
||||
KC_TRNS, KC_F4, KC_F5, KC_F6,
|
||||
KC_TRNS, KC_F1, KC_F2, KC_F3, RGB_MOD,
|
||||
KC_TRNS, KC_TRNS, RGB_TOG
|
||||
),
|
||||
|
||||
[_LAYER2] = LAYOUT(
|
||||
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, KC_TRNS, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS
|
||||
),
|
||||
|
||||
[_LAYER3] = LAYOUT(
|
||||
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, KC_TRNS, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS
|
||||
)
|
||||
};
|
||||
1
keyboards/skippys_custom_pcs/roopad/keymaps/via/rules.mk
Normal file
1
keyboards/skippys_custom_pcs/roopad/keymaps/via/rules.mk
Normal file
@@ -0,0 +1 @@
|
||||
VIA_ENABLE = yes
|
||||
22
keyboards/skippys_custom_pcs/roopad/readme.md
Normal file
22
keyboards/skippys_custom_pcs/roopad/readme.md
Normal file
@@ -0,0 +1,22 @@
|
||||
# kuku65
|
||||
|
||||
The following is the QMK Firmware for the kuku65 Hotswap PCB.
|
||||
|
||||
The PCB features:
|
||||
* QMK & VIA compatibility
|
||||
* Hotswap
|
||||
|
||||
---
|
||||
|
||||
* Keyboard Maintainer: [ToastyStoemp](https://github.com/ToastyStoemp)
|
||||
|
||||
Make example for this keyboard (after setting up your build environment):
|
||||
|
||||
make wolf/kuku65:default
|
||||
|
||||
See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
|
||||
|
||||
## Bootloader Enter the bootloader in 3 ways:
|
||||
* **Bootmagic reset**: Hold down the key ESC key and plug in the keyboard (Top Left most switch)
|
||||
* **Physical reset button**: Briefly press the button on the back of the PCB
|
||||
* **Keycode in layout**: Press the B key on layer 1 which is mapped to `RESET`
|
||||
14
keyboards/skippys_custom_pcs/roopad/roopad.c
Normal file
14
keyboards/skippys_custom_pcs/roopad/roopad.c
Normal file
@@ -0,0 +1,14 @@
|
||||
/*
|
||||
Copyright 2020 <contact@vwolf.be>
|
||||
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 "roopad.h"
|
||||
32
keyboards/skippys_custom_pcs/roopad/roopad.h
Normal file
32
keyboards/skippys_custom_pcs/roopad/roopad.h
Normal file
@@ -0,0 +1,32 @@
|
||||
/*
|
||||
Copyright 2020 <contact@vwolf.be>
|
||||
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/>.
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "quantum.h"
|
||||
|
||||
/* RooPad Keymap Definitions */
|
||||
#define LAYOUT( \
|
||||
K01, K02, K03, K04, \
|
||||
K10, K11, K12, K13, K14, \
|
||||
K20, K21, K22, K23, \
|
||||
K30, K31, K32, K33, K34, \
|
||||
K40, K41, K43 \
|
||||
) { \
|
||||
{ KC_NO, K01, K02, K03, K04 }, \
|
||||
{ K10, K11, K12, K13, K14 }, \
|
||||
{ K20, K21, K22, K23, KC_NO }, \
|
||||
{ K30, K31, K32, K33, K34 }, \
|
||||
{ K40, K41, KC_NO, K43, KC_NO } \
|
||||
}
|
||||
24
keyboards/skippys_custom_pcs/roopad/rules.mk
Normal file
24
keyboards/skippys_custom_pcs/roopad/rules.mk
Normal file
@@ -0,0 +1,24 @@
|
||||
# MCU name
|
||||
MCU = atmega32u4
|
||||
|
||||
# Processor frequency
|
||||
F_CPU = 8000000
|
||||
|
||||
# Bootloader selection
|
||||
BOOTLOADER = atmel-dfu
|
||||
|
||||
# Build Options
|
||||
# change yes to no to disable
|
||||
#
|
||||
BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
|
||||
MOUSEKEY_ENABLE = no # Mouse keys
|
||||
EXTRAKEY_ENABLE = yes # Audio control and System control
|
||||
CONSOLE_ENABLE = no # Console for debug
|
||||
COMMAND_ENABLE = no # Commands for debug and configuration
|
||||
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
|
||||
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
|
||||
# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
|
||||
NKRO_ENABLE = yes # USB Nkey Rollover
|
||||
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
|
||||
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
|
||||
AUDIO_ENABLE = no # Audio output
|
||||
@@ -41,12 +41,11 @@
|
||||
|
||||
/* ROTARY ENCODERS */
|
||||
#define ENCODERS_PAD_A \
|
||||
{ D7, F7 }
|
||||
#define ENCODERS_PAD_B \
|
||||
{ B4, C7 }
|
||||
#define ENCODERS_PAD_B \
|
||||
{ D7, F7 }
|
||||
|
||||
#define ENCODER_RESOLUTION 3
|
||||
#define ENCODER_DIRECTION_FLIP
|
||||
|
||||
#define DEBOUNCE 5
|
||||
|
||||
|
||||
@@ -41,12 +41,11 @@
|
||||
|
||||
/* ROTARY ENCODERS */
|
||||
#define ENCODERS_PAD_A \
|
||||
{ D6, C6 }
|
||||
#define ENCODERS_PAD_B \
|
||||
{ D7, C7 }
|
||||
#define ENCODERS_PAD_B \
|
||||
{ D6, C6 }
|
||||
|
||||
#define ENCODER_RESOLUTION 4
|
||||
#define ENCODER_DIRECTION_FLIP
|
||||
|
||||
#define DEBOUNCE 5
|
||||
|
||||
|
||||
25
keyboards/xiudi/xd60/keymaps/finnish/keymap.c
Normal file
25
keyboards/xiudi/xd60/keymaps/finnish/keymap.c
Normal file
@@ -0,0 +1,25 @@
|
||||
// Copyright 2021 Minna Pallari (@pallarim)
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
#include QMK_KEYBOARD_H
|
||||
#include "keymap_finnish.h"
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
|
||||
// 0: Base Layer
|
||||
LAYOUT_all(
|
||||
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, FI_PLUS, FI_ACUT, MO(1), KC_BSPC,
|
||||
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, FI_ARNG, FI_DIAE, KC_NO,
|
||||
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, FI_ODIA, FI_ADIA, FI_QUOT, KC_ENT,
|
||||
KC_LSFT, FI_LABK, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, FI_MINS,
|
||||
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RIGHT),
|
||||
|
||||
// 1: Function Layer
|
||||
LAYOUT_all(
|
||||
RESET, 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_F13, KC_F14,
|
||||
KC_NO, KC_WH_U, KC_UP, KC_WH_D, KC_BSPC,KC_HOME,KC_CALC,KC_NO, KC_INS, KC_NO, KC_PSCR, KC_SLCK, KC_PAUS, KC_DEL,
|
||||
KC_NO, KC_LEFT, KC_DOWN, KC_RIGHT,KC_DEL, KC_END, KC_PGDN,KC_NO, KC_NO, KC_NO, KC_HOME, KC_PGUP, KC_NO, KC_ENT,
|
||||
KC_LSFT, KC_NO, KC_NO, KC_APP, BL_STEP,KC_NO, KC_NO, KC_VOLD,KC_VOLU,KC_MUTE, KC_END, KC_PGDN, KC_RSFT, KC_PGUP, KC_INS,
|
||||
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RGUI, MO(1), KC_HOME, KC_PGDOWN,KC_END),
|
||||
|
||||
};
|
||||
20
keyboards/xiudi/xd60/keymaps/finnish/readme.md
Normal file
20
keyboards/xiudi/xd60/keymaps/finnish/readme.md
Normal file
@@ -0,0 +1,20 @@
|
||||
# Finnish/Swedish iso Keymap for XIUDI's XD60 PCB
|
||||
|
||||
FI/SV iso Keymap for XD60.
|
||||
|
||||
## Keymap
|
||||
|
||||
### Base Layer
|
||||
|
||||

|
||||
|
||||
### Function Layer
|
||||
|
||||

|
||||
|
||||
## Build
|
||||
|
||||
To build the default keymap, simply run:
|
||||
|
||||
make xiudi/xd60/rev2:finnish # XD60 rev2
|
||||
make xiudi/xd60/rev3:finnish # XD60 rev3
|
||||
@@ -25,9 +25,8 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#define MANUFACTURER zigotica
|
||||
#define PRODUCT z12
|
||||
|
||||
#define ENCODERS_PAD_A { B4, B2 }
|
||||
#define ENCODERS_PAD_B { B5, B6 }
|
||||
#define ENCODER_DIRECTION_FLIP
|
||||
#define ENCODERS_PAD_A { B5, B6 }
|
||||
#define ENCODERS_PAD_B { B4, B2 }
|
||||
|
||||
/* key matrix size */
|
||||
#define MATRIX_ROWS 4
|
||||
|
||||
@@ -74,7 +74,7 @@ def filter_files(files, core_only=False):
|
||||
# The following statement checks each file to see if the file path is
|
||||
# - in the core directories
|
||||
# - not in the ignored directories
|
||||
if not any(i in str(file) for i in core_dirs) or any(i in str(file) for i in ignored):
|
||||
if not any(str(file).startswith(i) for i in core_dirs) or any(str(file).startswith(i) for i in ignored):
|
||||
files[index] = None
|
||||
cli.log.debug("Skipping non-core file %s, as '--core-only' is used.", file)
|
||||
|
||||
|
||||
@@ -1099,6 +1099,8 @@ void midi_ep_task(void) {
|
||||
|
||||
#ifdef VIRTSER_ENABLE
|
||||
|
||||
void virtser_init(void) {}
|
||||
|
||||
void virtser_send(const uint8_t byte) { chnWrite(&drivers.serial_driver.driver, &byte, 1); }
|
||||
|
||||
__attribute__((weak)) void virtser_recv(uint8_t c) {
|
||||
|
||||
@@ -86,7 +86,7 @@ void ae_finished(qk_tap_dance_state_t *state, void *user_data) {
|
||||
register_code(KC_A);
|
||||
break;
|
||||
case SINGLE_HOLD:
|
||||
tap_code(SE_AE);
|
||||
tap_code(SE_ADIA);
|
||||
break;
|
||||
case DOUBLE_SINGLE_TAP:
|
||||
tap_code(KC_A);
|
||||
@@ -113,15 +113,15 @@ void aa_finished(qk_tap_dance_state_t *state, void *user_data) {
|
||||
aa_tap_state.state = cur_dance(state);
|
||||
switch (aa_tap_state.state) {
|
||||
case SINGLE_TAP:
|
||||
register_code(SE_OSLH);
|
||||
register_code(SE_ODIA);
|
||||
break;
|
||||
case SINGLE_HOLD:
|
||||
register_code(SE_AA);
|
||||
unregister_code(SE_AA);
|
||||
register_code(SE_ARNG);
|
||||
unregister_code(SE_ARNG);
|
||||
break;
|
||||
case DOUBLE_SINGLE_TAP:
|
||||
tap_code(SE_OSLH);
|
||||
register_code(SE_OSLH);
|
||||
tap_code(SE_ODIA);
|
||||
register_code(SE_ODIA);
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -129,10 +129,10 @@ void aa_finished(qk_tap_dance_state_t *state, void *user_data) {
|
||||
void aa_reset(qk_tap_dance_state_t *state, void *user_data) {
|
||||
switch (aa_tap_state.state) {
|
||||
case SINGLE_TAP:
|
||||
unregister_code(SE_OSLH);
|
||||
unregister_code(SE_ODIA);
|
||||
break;
|
||||
case DOUBLE_SINGLE_TAP:
|
||||
unregister_code(SE_OSLH);
|
||||
unregister_code(SE_ODIA);
|
||||
break;
|
||||
}
|
||||
aa_tap_state.state = 0;
|
||||
|
||||
Reference in New Issue
Block a user