Compare commits

...

88 Commits

Author SHA1 Message Date
Mrinal Singh Tak
0411ad4ce9
Merge 95878423fe into 9bea332a21 2024-11-20 22:22:13 -08:00
Ryan
9bea332a21
qmk via2json: Improve macro parsing (#24345) 2024-11-21 17:20:05 +11:00
Ryan
8cbcdcac62
qmk new-keymap: validate keymap name (#23420) 2024-11-21 17:18:51 +11:00
Mrinal Singh Tak
95878423fe
Merge branch 'qmk:master' into dev_branch 2024-09-04 18:43:43 +05:30
Mrinal Singh Tak
0926a8d988
Update keyboards/protokeeb/rev1/keyboard.json
Changes according to QMK Maintainer's request.

Co-authored-by: Ryan <fauxpark@gmail.com>
2024-09-04 18:33:12 +05:30
Mrinal Singh Tak
785afeab76
Update keyboards/protokeeb/rev1/keyboard.json
Removed RGB Light's "driver" configuration as requested by QMK Maintainer.

Co-authored-by: Ryan <fauxpark@gmail.com>
2024-09-04 18:30:44 +05:30
Mrinal Singh Tak
23a98c75b5
Update keyboards/protokeeb/rev1/keyboard.json
Removed "rgb_test" RGB Light effect as requested by QMK Maintainer.

Co-authored-by: Ryan <fauxpark@gmail.com>
2024-09-04 18:26:57 +05:30
atechofficials
654f50785b Replaced deprecated keycodes in all the keymaps and using short keycode names in all the keymaps. 2024-07-14 19:05:52 +05:30
atechofficials
c81487cd56 Removed WS2812 Driver's WS2812_BYTE_ORDER_RGB because it was not displaying the correct color when used with Protokeeb's WS2812B-2020 LEDs. Now defaults to WS2812_BYTE_ORDER_GRB 2024-07-14 04:26:56 +05:30
atechofficials
cb54da6861 Changed readPin function to gpio_read_pin function in rev1.c file because of core change: Renaming Arduino-style GPIO pin functions #23085, #23093 2024-07-14 03:13:22 +05:30
atechofficials
cdf87c05b0 Improved the encoder push button functionality code to address/fix the switch matrix scanning not working issue. 2024-07-14 02:18:12 +05:30
atechofficials
f2831a0aee qmk format-json -i on keyboard.json file as requested by QMK Maintainers in pull request. 2024-07-11 02:28:32 +05:30
atechofficials
4c606fe417 Deleted Protokeeb keyboard main/root directory's rules.mk file, consisting the build option DEFAULT_FOLDER because the keyboard does not have more than one sub-folder. 2024-07-11 02:07:56 +05:30
Mrinal Singh Tak
b696d78df5
Update keyboards/protokeeb/keymaps/default/rules.mk
Co-authored-by: Ryan <fauxpark@gmail.com>
2024-07-11 01:56:55 +05:30
Mrinal Singh Tak
ead296f238
Update keyboards/protokeeb/keymaps/midi/rules.mk
Co-authored-by: Ryan <fauxpark@gmail.com>
2024-07-11 01:56:18 +05:30
Mrinal Singh Tak
f51e8816e6
Update keyboards/protokeeb/keymaps/via/rules.mk
Co-authored-by: Ryan <fauxpark@gmail.com>
2024-07-11 01:54:32 +05:30
Mrinal Singh Tak
739ff79006
Update keyboards/protokeeb/rev1/rev1.c
Renaming Arduino-style GPIO pin functions (#23085, #23093)

Co-authored-by: Ryan <fauxpark@gmail.com>
2024-07-11 01:47:56 +05:30
Mrinal Singh Tak
3f06af21c9
Merge branch 'qmk:master' into dev_branch 2024-07-10 22:40:45 +05:30
Mrinal Singh Tak
1e9e69faa9
Update keyboards/protokeeb/rev1/config.h
Co-authored-by: Drashna Jaelre <drashna@live.com>
2024-07-06 00:27:42 +05:30
Mrinal Singh Tak
e4aad107cd
Update keyboards/protokeeb/rev1/config.h
Co-authored-by: Drashna Jaelre <drashna@live.com>
2024-07-06 00:26:57 +05:30
atechofficials
99ae294473 Merge branch 'master' into dev_branch 2024-06-29 23:57:59 +05:30
atechofficials
586836b7c2 Added the QMK's Tri-Layer functionality to the default keymap 2024-06-27 23:00:07 +05:30
atechofficials
f38ca58467 Layout name changed in all the keymap files according to the keyboard.json file and also formatted the C code in rev1.c file as requested by QMK Maintainer in Pull Request. 2024-06-27 14:17:29 +05:30
Mrinal Singh Tak
4c18c8885b
Update keyboards/protokeeb/keymaps/via/rules.mk
Co-authored-by: jack <jack@pngu.org>
2024-06-27 14:04:00 +05:30
Mrinal Singh Tak
59d28ad8c8
Update keyboards/protokeeb/keymaps/midi/rules.mk
Co-authored-by: jack <jack@pngu.org>
2024-06-27 14:03:04 +05:30
Mrinal Singh Tak
50919d86f5
Update keyboards/protokeeb/keymaps/default/rules.mk
Co-authored-by: jack <jack@pngu.org>
2024-06-27 14:02:53 +05:30
Mrinal Singh Tak
22777112e2
Update keyboards/protokeeb/rev1/keyboard.json
Co-authored-by: jack <jack@pngu.org>
2024-06-27 14:00:42 +05:30
Mrinal Singh Tak
34fdc5814d
Update keyboards/protokeeb/rules.mk
Co-authored-by: jack <jack@pngu.org>
2024-06-27 13:59:57 +05:30
atechofficials
09ba0009e0 Added custom switch matrix and Changed the encoder built-in push button functionality logic as suggested by QMK maintainer in Pull Request. 2024-06-26 23:47:10 +05:30
atechofficials
c6d1aa0ec9 Removed the the default_ortho_4x4 keymap as requested by QMK maintainer in Pull Request. Note: QMK no longer accepts user keymaps. 2024-06-25 23:03:25 +05:30
atechofficials
0238181180 Fixed the qmk firmware compilation issues occured due to recent changes in keymap files. 2024-06-25 06:28:41 +05:30
atechofficials
953d6caa52 Changed the layout name from LAYOUT_midi to LAYOUT_ortho_4x4 in the midi keymap's keymap.c file becasue the LAYOUT_midi was removed earlier as requested by QMK member in pull request 2024-06-25 06:11:46 +05:30
atechofficials
a520b48f33 Removed rules.mk file in rev1 directory as requested by QMK member in pull request 2024-06-25 05:36:27 +05:30
atechofficials
b95c4eda02 Removed rev1.h file as requested by QMK member in pull request 2024-06-25 05:32:16 +05:30
atechofficials
d9063a6341 Successfully formatted the rev1.c file using qmk format-c command as requested by QMK member in pull request 2024-06-25 05:27:51 +05:30
Mrinal Singh Tak
50be79cf72
Update keyboards/protokeeb/rev1/rev1.c
Co-authored-by: jack <jack@pngu.org>
2024-06-25 05:22:06 +05:30
Mrinal Singh Tak
8930af70f2
Update keyboards/protokeeb/rev1/readme.md
Co-authored-by: jack <jack@pngu.org>
2024-06-25 05:21:18 +05:30
atechofficials
58c2102013 Removed the unused SPI driver configuration in mcuconf.h file as requested by QMK member in pull request 2024-06-25 05:18:19 +05:30
Mrinal Singh Tak
03d66d929d
Update keyboards/protokeeb/rev1/mcuconf.h
Co-authored-by: jack <jack@pngu.org>
2024-06-25 05:07:53 +05:30
atechofficials
5c70850397 Done some slight changes in keyboard.json file according to QMK member suggestions in pull request 2024-06-25 05:02:01 +05:30
atechofficials
d1c29a4f6b Removed the tri-layer functionality from via keymap. Also, removed the LAYOUT and LAYOUT_midi layouts from the keyboard.json file as requested by QMK member in pull request 2024-06-25 04:40:53 +05:30
atechofficials
2144302a73 Removed Protokeeb keyboard's halconf.h file as requested by QMK member in pull request 2024-06-25 03:39:36 +05:30
atechofficials
1f93dbc446 Removed via keymap config.h file as requested by QMK member in pull request 2024-06-25 03:34:51 +05:30
atechofficials
d230e717d6 Removed debug keymap directory as requested by QMK member in pull request 2024-06-25 03:27:42 +05:30
Mrinal Singh Tak
842cf93f3a
Update keyboards/protokeeb/rev1/keyboard.json
Co-authored-by: jack <jack@pngu.org>
2024-06-25 03:19:57 +05:30
Mrinal Singh Tak
71dd1932e6
Update keyboards/protokeeb/rev1/keyboard.json
Co-authored-by: jack <jack@pngu.org>
2024-06-25 03:18:31 +05:30
Mrinal Singh Tak
6898fb09ca
Update keyboards/protokeeb/rev1/keyboard.json
Co-authored-by: jack <jack@pngu.org>
2024-06-25 03:17:54 +05:30
Mrinal Singh Tak
0cae39f3f3
Update keyboards/protokeeb/rev1/config.h
Co-authored-by: jack <jack@pngu.org>
2024-06-25 03:16:38 +05:30
Mrinal Singh Tak
e5ce704208
Update keyboards/protokeeb/keymaps/via/rules.mk
Co-authored-by: jack <jack@pngu.org>
2024-06-25 03:16:07 +05:30
Mrinal Singh Tak
27eefb3875
Update keyboards/protokeeb/keymaps/via/keymap.c
Co-authored-by: jack <jack@pngu.org>
2024-06-25 03:15:40 +05:30
Mrinal Singh Tak
3ba5b88cd1
Update keyboards/protokeeb/keymaps/via/keymap.c
Co-authored-by: jack <jack@pngu.org>
2024-06-25 03:15:16 +05:30
Mrinal Singh Tak
fe38f5f1c4
Update keyboards/protokeeb/keymaps/via/keymap.c
Co-authored-by: jack <jack@pngu.org>
2024-06-25 03:14:14 +05:30
Mrinal Singh Tak
3506a4c453
Update keyboards/protokeeb/keymaps/via/keymap.c
Co-authored-by: jack <jack@pngu.org>
2024-06-25 03:13:19 +05:30
Mrinal Singh Tak
8a47fba0f1
Update keyboards/protokeeb/rev1/keyboard.json
Co-authored-by: jack <jack@pngu.org>
2024-06-25 03:10:27 +05:30
Mrinal Singh Tak
a2194380c3
Update keyboards/protokeeb/keymaps/via/keymap.c
Co-authored-by: jack <jack@pngu.org>
2024-06-25 03:09:01 +05:30
Mrinal Singh Tak
e4feb53897
Update keyboards/protokeeb/keymaps/midi/keymap.c
Co-authored-by: jack <jack@pngu.org>
2024-06-25 03:07:08 +05:30
Mrinal Singh Tak
0fcde68665
Update keyboards/protokeeb/rev1/rev1.c
Co-authored-by: jack <jack@pngu.org>
2024-06-25 03:05:42 +05:30
Mrinal Singh Tak
7ea5d711bc
Update keyboards/protokeeb/keymaps/midi/keymap.c
Co-authored-by: jack <jack@pngu.org>
2024-06-25 03:05:01 +05:30
Mrinal Singh Tak
4bc3045011
Update keyboards/protokeeb/keymaps/default/keymap.c
Co-authored-by: jack <jack@pngu.org>
2024-06-25 03:03:39 +05:30
Mrinal Singh Tak
78aa8b7382
Update keyboards/protokeeb/keymaps/default/keymap.c
Co-authored-by: jack <jack@pngu.org>
2024-06-25 02:58:17 +05:30
atechofficials
bb827d718c Created a new rules.mk file inside the keyboard's root folder and added the keyboard specific configurations 2024-06-24 15:27:42 +05:30
atechofficials
af874df740 Merge branch 'master' of https://github.com/qmk/qmk_firmware into dev_branch 2024-06-24 14:48:34 +05:30
atechofficials
d84ba683ab Removed unsused configuration options. Reviewed files and made some changes according to the PR Checklist documentation. Reorganized existing keymaps and added a new keymap. 2024-06-24 03:53:01 +05:30
atechofficials
bfa809ef71 slight changes in the config.h file 2024-06-23 04:23:33 +05:30
atechofficials
254090ec74 Slight changes in the readme.md file and rules.mk file 2024-06-23 03:38:36 +05:30
atechofficials
c1290ce863 Added more features, changes in the Protokeeb firmware files according to the QMK's new changelogs (renamed Protokeeb rev1 info.json to keyboard.json) and much more... 2024-06-23 02:28:54 +05:30
atechofficials
d799a26a99 Merge branch 'master' of github.com:atechofficials/qmk_firmware into dev_branch 2024-06-22 22:14:04 +05:30
atechofficials
db98afd081 Merge branch 'dev_branch' of github.com:atechofficials/qmk_firmware into dev_branch 2024-05-31 14:57:05 +05:30
Mrinal Singh Tak
cd1514dc42
Merge branch 'qmk:master' into dev_branch 2024-05-25 04:15:54 +05:30
Mrinal Singh Tak
e0651ba501
Merge branch 'qmk:master' into dev_branch 2024-05-09 12:35:43 +05:30
Mrinal Singh Tak
d01884f27c
Merge branch 'qmk:master' into dev_branch 2024-05-05 01:33:24 +05:30
atechofficials
0053e8cabb Protokeeb QMK Firmware file changes 2024-04-27 00:11:46 +05:30
atechofficials
79cc1e568b Merge branch 'dev_branch' of github.com:atechofficials/qmk_firmware into dev_branch 2024-04-26 22:55:40 +05:30
atechofficials
5a46bdeacf Merge branch 'master' of https://github.com/qmk/qmk_firmware into dev_branch 2024-04-26 22:50:16 +05:30
Mrinal Singh Tak
858add1769
Merge branch 'qmk:master' into dev_branch 2024-04-26 21:00:12 +05:30
atechofficials
1bb1f563a5 Protokeeb readme file updated 2024-04-25 01:08:17 +05:30
atechofficials
c6ed373dbf Protokeeb readme file updated 2024-04-25 00:35:09 +05:30
atechofficials
c3fdc6508b Protokeeb midi keymap files updated 2024-04-24 23:29:15 +05:30
Mrinal Singh Tak
f312c68c13
Merge branch 'qmk:master' into dev_branch 2024-04-24 18:12:32 +05:30
atechofficials
84d8ce04e8 Added ProtoKeeb Via Support 2024-04-20 22:46:28 +05:30
Mrinal Singh Tak
f9b30e93cb
Merge branch 'qmk:master' into dev_branch 2024-04-20 00:45:11 +05:30
atechofficials
c73284dac2 Merge branch 'dev_branch' of github.com:atechofficials/qmk_firmware into dev_branch 2024-04-20 00:42:51 +05:30
atechofficials
0fc220b8ee Protokeeb Rev1 QMK Firmware 2024-04-20 00:37:20 +05:30
Mrinal Singh Tak
a0e599e511
Merge branch 'qmk:master' into dev_branch 2024-04-17 11:26:55 +05:30
atechofficials
7f756448ba Merge branch 'master' of github.com:atechofficials/qmk_firmware into dev_branch
QMK dev_branch updated to the latest qmk firmware
2024-03-28 13:00:00 +05:30
Mrinal Singh Tak
ab22f12df3
Merge branch 'qmk:master' into dev_branch 2024-03-28 12:58:33 +05:30
atechofficials
45364e26d1 Merge branch 'dev_branch' of github.com:atechofficials/qmk_firmware into dev_branch
Merging the Master branch with the dev_branch. All the Protokeeb QMK firmware
development will be carried out in the dev_branch.
2024-02-18 00:32:19 +05:30
atechofficials
d226b651f3 Protokeeb v1.0 QMK Firmware 2024-02-16 21:05:25 +05:30
15 changed files with 456 additions and 9 deletions

View File

@ -0,0 +1,11 @@
{
"keyboard_name": "Protokeeb",
"manufacturer": "A-Tech Officials",
"maintainer": "atechofficials",
"url": "https://github.com/atechofficials/protokeeb",
"bootloader_instructions": "Press and hold the FN Key (row-4, column-1) then press the key mapped to `QK_BOOT` i.e ENTER Key (row-4, column-4) to enter the bootloader mode.",
"tags": ["rgb", "4x4"],
"usb": {
"vid": "0x419A"
}
}

View File

@ -0,0 +1,58 @@
/* Protokeeb Copyright 2024 A-Tech Officials (@atechofficials)
* 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 3 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 <https://www.gnu.org/licenses/gpl-3.0.html>.
*/
/* Protokeeb v1.0
* Keymap: Default
*/
#include QMK_KEYBOARD_H
enum protokeeb_keymap_layers {
LAYER_BASE,
LAYER_LOWER,
LAYER_RAISE,
LAYER_ADJUST,
};
#define LOWER LT(LAYER_LOWER, KC_P0)
#define RAISE LT(LAYER_RAISE, KC_PENT)
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[LAYER_BASE] = LAYOUT(/* Base: Numpad without Num Lock*/
KC_P7, KC_P8, KC_P9, KC_PSLS, KC_MUTE, KC_P4, KC_P5, KC_P6, KC_PAST, KC_P1, KC_P2, KC_P3, KC_PMNS, LOWER, KC_PDOT, RAISE, KC_PPLS),
[LAYER_LOWER] = LAYOUT(/* RGB Control */
UG_TOGG, UG_NEXT, UG_PREV, DB_TOGG, KC_TRNS, UG_HUEU, UG_HUED, UG_SATU, UG_SATD, UG_VALU, UG_VALD, UG_SPDU, UG_SPDD, KC_TRNS, KC_NO, KC_TRNS, QK_BOOT),
[LAYER_RAISE] = LAYOUT(/* Media Control and Quick Launch*/
KC_MPLY, KC_MPRV, KC_MNXT, KC_MSTP, KC_TRNS, KC_CALC, KC_MYCM, KC_CPNL, KC_PWR, KC_PSCR, KC_HOME, KC_INS, KC_DEL, KC_TRNS, KC_NO, KC_TRNS, QK_RBT),
[LAYER_ADJUST] = LAYOUT(/* Function Keys */
KC_F1, KC_F2, KC_F3, KC_F4, KC_TRNS, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_NO, KC_TRNS, KC_NO),
};
#if defined(ENCODER_MAP_ENABLE)
const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
[LAYER_BASE] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
[LAYER_LOWER] = {ENCODER_CCW_CW(KC_BRID, KC_BRIU)},
[LAYER_RAISE] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
[LAYER_ADJUST] = {ENCODER_CCW_CW(KC_TRNS, KC_TRNS)},
};
#endif
layer_state_t layer_state_set_user(layer_state_t state) {
return update_tri_layer_state(state, LAYER_LOWER, LAYER_RAISE, LAYER_ADJUST);
}

View File

@ -0,0 +1,2 @@
ENCODER_MAP_ENABLE = yes
TRI_LAYER_ENABLE = yes

View File

@ -0,0 +1,19 @@
/* Protokeeb Copyright 2024 A-Tech Officials (@atechofficials)
* 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 3 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 <https://www.gnu.org/licenses/gpl-3.0.html>.
*/
#pragma once
#define MIDI_BASIC

View File

@ -0,0 +1,56 @@
/* Protokeeb Copyright 2024 A-Tech Officials (@atechofficials)
* 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 3 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 <https://www.gnu.org/licenses/gpl-3.0.html>.
*/
/* Protokeeb v1.0
* Keymap: MIDI
*/
#include QMK_KEYBOARD_H
enum protokeeb_keymap_layers {
LAYER_NOTES_SET_1,
LAYER_NOTES_SET_2,
LAYER_NOTES_SET_3,
LAYER_RGB_CONTROL,
};
#define NOTES_SET_1 TG(LAYER_NOTES_SET_1)
#define NOTES_SET_2 TG(LAYER_NOTES_SET_2)
#define NOTES_SET_3 TG(LAYER_NOTES_SET_3)
#define RGB_CTRL MO(LAYER_RGB_CONTROL)
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[LAYER_NOTES_SET_1] = LAYOUT(/* Notes Set-1 */
MI_C, MI_Cs, MI_D, MI_Ds, KC_MUTE, MI_E, MI_F, MI_Fs, MI_G, MI_Gs, MI_A, MI_As, MI_B, RGB_CTRL, NOTES_SET_2, NOTES_SET_3, MI_TOGG),
[LAYER_NOTES_SET_2] = LAYOUT(/* Notes Set-2 */
MI_C1, MI_Cs1, MI_D1, MI_Ds1, KC_MUTE, MI_E1, MI_F1, MI_Fs1, MI_G1, MI_Gs1, MI_A1, MI_As1, MI_B1, NOTES_SET_1, KC_TRNS, NOTES_SET_3, KC_TRNS),
[LAYER_NOTES_SET_3] = LAYOUT(/* Notes Set-3 */
MI_C2, MI_Cs2, MI_D2, MI_Ds2, KC_MUTE, MI_E2, MI_F2, MI_Fs2, MI_G2, MI_Gs2, MI_A2, MI_As2, MI_B2, NOTES_SET_1, NOTES_SET_2, KC_TRNS, KC_TRNS),
[LAYER_RGB_CONTROL] = LAYOUT(/* RGB Control */
UG_TOGG, UG_NEXT, UG_PREV, DB_TOGG, KC_MUTE, UG_HUEU, UG_HUED, UG_SATU, UG_SATD, UG_VALU, UG_VALD, UG_SPDU, UG_SPDD, KC_TRNS, KC_NO, KC_NO, QK_BOOT),
};
#if defined(ENCODER_MAP_ENABLE)
const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
[LAYER_NOTES_SET_1] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
[LAYER_NOTES_SET_2] = {ENCODER_CCW_CW(MI_OCTD, MI_OCTU)},
[LAYER_NOTES_SET_3] = {ENCODER_CCW_CW(MI_TRSD, MI_TRSU)},
[LAYER_RGB_CONTROL] = {ENCODER_CCW_CW(UG_HUED, UG_HUEU)},
};
#endif

View File

@ -0,0 +1,2 @@
MIDI_ENABLE = yes
ENCODER_MAP_ENABLE = yes

View File

@ -0,0 +1,40 @@
/* Protokeeb Copyright 2024 A-Tech Officials (@atechofficials)
* 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 3 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 <https://www.gnu.org/licenses/gpl-3.0.html>.
*/
/* Protokeeb v1.0
* Keymap: Via
*/
#include QMK_KEYBOARD_H
enum protokeeb_keymap_layers {
LAYER_BASE,
LAYER_LOWER,
};
#define LOWER LT(LAYER_LOWER, KC_P0)
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[LAYER_BASE] = LAYOUT(/* Base */
KC_P7, KC_P8, KC_P9, KC_PSLS, KC_MUTE, KC_P4, KC_P5, KC_P6, KC_PAST, KC_P1, KC_P2, KC_P3, KC_PMNS, LOWER, KC_PDOT, KC_PENT, KC_PPLS),
[LAYER_LOWER] = LAYOUT(/* RGB Control */
UG_TOGG, UG_NEXT, UG_PREV, DB_TOGG, KC_TRNS, UG_HUEU, UG_HUED, UG_SATU, UG_SATD, UG_VALU, UG_VALD, UG_SPDU, UG_SPDD, KC_TRNS, KC_NO, KC_NO, QK_BOOT),
};
#if defined(ENCODER_MAP_ENABLE)
const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {[LAYER_BASE] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU)}, [LAYER_LOWER] = {ENCODER_CCW_CW(KC_BRID, KC_BRIU)}};
#endif

View File

@ -0,0 +1,2 @@
VIA_ENABLE = yes
ENCODER_MAP_ENABLE = yes

View File

@ -0,0 +1,50 @@
/* Protokeeb Copyright 2024 A-Tech Officials (@atechofficials)
* 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 3 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 <https://www.gnu.org/licenses/gpl-3.0.html>.
*/
#pragma once
// Define the pin connected to the encoder push button
#define ENCODER_BUTTON_PIN GP14
// Define the row and column for the encoder button
#define ENCODER_BUTTON_ROW 0
#define ENCODER_BUTTON_COL 4
/* Peripheral used */
#define WS2812_PIO_USE_PIO1
/* RGB lighting effects and animations settings */
#define RGBLIGHT_EFFECT_BREATHE_MAX 127
#define RGBLIGHT_EFFECT_CHRISTMAS_INTERVAL 40
#define RGBLIGHT_EFFECT_CHRISTMAS_STEP 2
#define RGBLIGHT_EFFECT_KNIGHT_LED_NUM 4
#define RGBLIGHT_EFFECT_KNIGHT_LENGTH 3
#define RGBLIGHT_EFFECT_KNIGHT_OFFSET 0
#define RGBLIGHT_EFFECT_SWIRL_RANGE 255
#define RGBLIGHT_EFFECT_SNAKE_LENGTH 4
#define RGBLIGHT_EFFECT_TWINKLE_LIFE 200
#define RGBLIGHT_EFFECT_TWINKLE_PROBABILITY (1/127)
/* Double tap reset bootloader entry */
#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET
/* Bootloader timeout window in milli-seconds */
#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_TIMEOUT 200U
/* LED to blink when entering bootloader mode */
#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_LED GP25
#define ENCODER_MAP_KEY_DELAY 10

View File

@ -0,0 +1,83 @@
{
"audio": {
"default": {
"on": false
},
"pins": ["GP22"]
},
"board": "GENERIC_RP_RP2040",
"bootloader": "rp2040",
"debounce": 20,
"diode_direction": "COL2ROW",
"encoder": {
"rotary": [
{"pin_a": "GP12", "pin_b": "GP13", "resolution": 2}
]
},
"features": {
"bootmagic": true,
"encoder": true,
"extrakey": true,
"nkro": true,
"rgblight": true
},
"matrix_pins": {
"cols": ["GP6", "GP7", "GP8", "GP9", "GP14"],
"rows": ["GP2", "GP3", "GP4", "GP5"]
},
"processor": "RP2040",
"rgblight": {
"animations": {
"alternating": true,
"breathing": true,
"christmas": true,
"knight": true,
"rainbow_mood": true,
"rainbow_swirl": true,
"snake": true,
"static_gradient": true,
"twinkle": true
},
"brightness_steps": 15,
"default": {
"val": 50
},
"hue_steps": 15,
"led_count": 4,
"led_map": [3, 2, 1, 0],
"max_brightness": 127,
"saturation_steps": 15,
"sleep": true
},
"usb": {
"device_version": "1.0.0",
"pid": "0x1717"
},
"ws2812": {
"driver": "vendor",
"pin": "GP10"
},
"layouts": {
"LAYOUT": {
"layout": [
{"label": "7", "matrix": [0, 0], "x": 0, "y": 0},
{"label": "8", "matrix": [0, 1], "x": 1, "y": 0},
{"label": "9", "matrix": [0, 2], "x": 2, "y": 0},
{"label": "/", "matrix": [0, 3], "x": 3, "y": 0},
{"label": "MUTE", "matrix": [0, 4], "x": 4, "y": 0},
{"label": "4", "matrix": [1, 0], "x": 0, "y": 1},
{"label": "5", "matrix": [1, 1], "x": 1, "y": 1},
{"label": "6", "matrix": [1, 2], "x": 2, "y": 1},
{"label": "*", "matrix": [1, 3], "x": 3, "y": 1},
{"label": "1", "matrix": [2, 0], "x": 0, "y": 2},
{"label": "2", "matrix": [2, 1], "x": 1, "y": 2},
{"label": "3", "matrix": [2, 2], "x": 2, "y": 2},
{"label": "-", "matrix": [2, 3], "x": 3, "y": 2},
{"label": "0", "matrix": [3, 0], "x": 0, "y": 3},
{"label": ".", "matrix": [3, 1], "x": 1, "y": 3},
{"label": "ENTER", "matrix": [3, 2], "x": 2, "y": 3},
{"label": "+", "matrix": [3, 3], "x": 3, "y": 3}
]
}
}
}

View File

@ -0,0 +1,26 @@
/* Protokeeb Copyright 2024 A-Tech Officials (@atechofficials)
* 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 3 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 <https://www.gnu.org/licenses/gpl-3.0.html>.
*/
#pragma once
#include_next <mcuconf.h>
/* RP2040 I2C Driver Selection */
#undef RP_I2C_USE_I2C0
#define RP_I2C_USE_I2C0 TRUE
#undef RP_I2C_USE_I2C1
#define RP_I2C_USE_I2C1 FALSE

View File

@ -0,0 +1,42 @@
# Protokeeb Rev1
![Protokeeb](https://i.imgur.com/RsSBoJg.jpg)
The Protokeeb is a versatile 16-key (4 x 4) Numpad/Macropad/MIDI device designed by A-Tech Officials. It is perfect for anyone looking to get started with custom keyboards. This open-source hardware project is based on a Raspberry Pi Pico development board, making it easy to learn, build, and modify. Designed for developers and enthusiasts alike, the Protokeeb features per-key south-facing ARGB LEDs and much more.
For more information, visit the [Protokeeb GitHub page](https://github.com/atechofficials/protokeeb).
- **Keyboard Maintainer:** [A-Tech Officials](https://github.com/atechofficials)
- **Hardware Supported:** Protokeeb Keyboard PCB v1.x, Raspberry Pi Pico, Raspberry Pi Pico W, Waveshare RP2040-Plus
- **Hardware Availability:** [ProtoKeeb](https://github.com/atechofficials/protokeeb)
## Default Protokeeb Layout
![Protokeeb Layout Image](https://i.imgur.com/e0RlllX.png)
The default layout comes pre-flashed on every Protokeeb and consists of two layers:
- Layer 1: 16-key numpad, excluding the `NUM LOCK` key.
- Layer 2: RGB LED control and keyboard boot options.
- Layer 3: Media control, quick launch application and other options.
- Layer 4: Function Keys.
Make example for this keyboard (after setting up your build environment):
make protokeeb/rev1:default
Flashing example for this keyboard:
make protokeeb/rev1: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).
## Bootloader
Enter the bootloader in 3 ways:
- **Bootmagic reset:** Press and hold the top left key (row-0, column-0) before plugging-in the keyboard into your PC/Laptop.
- **Physical reset buttons:** Briefly press and hold both the left (Bootsel) and right (Reset) tactile push buttons located on the top left side of the Protokeeb rev1 PCB. Keep holding the left (Bootsel) button, release the right (Reset) button, then release the left (Bootsel) button after 3-5 seconds to enter bootloader mode.
- **Keycode in Layout:** Press and hold the 0-key (row-4, column-1) then press the key mapped to `QK_BOOT` (Plus + key, row-4, column-4) to enter bootloader mode.

View File

@ -0,0 +1,28 @@
/* Protokeeb Copyright 2024 A-Tech Officials (@atechofficials)
* 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 3 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 <https://www.gnu.org/licenses/gpl-3.0.html>.
*/
#include "quantum.h"
extern matrix_row_t matrix[]; // Declare the matrix array
void matrix_scan_kb(void) {
// Read the encoder button state and update the matrix
if (gpio_read_pin(ENCODER_BUTTON_PIN) == 0) {
matrix[ENCODER_BUTTON_ROW] |= (1 << ENCODER_BUTTON_COL);
} else {
matrix[ENCODER_BUTTON_ROW] &= ~(1 << ENCODER_BUTTON_COL);
}
}

View File

@ -1,5 +1,6 @@
"""This script automates the copying of the default keymap into your own keymap. """This script automates the copying of the default keymap into your own keymap.
""" """
import re
import shutil import shutil
from milc import cli from milc import cli
@ -13,6 +14,13 @@ from qmk.keyboard import keyboard_completer, keyboard_folder
from qmk.userspace import UserspaceDefs from qmk.userspace import UserspaceDefs
def validate_keymap_name(name):
"""Returns True if the given keymap name contains only a-z, 0-9 and underscore characters.
"""
regex = re.compile(r'^[a-zA-Z0-9][a-zA-Z0-9_]+$')
return bool(regex.match(name))
def prompt_keyboard(): def prompt_keyboard():
prompt = """{fg_yellow}Select Keyboard{style_reset_all} prompt = """{fg_yellow}Select Keyboard{style_reset_all}
If you`re unsure you can view a full list of supported keyboards with {fg_yellow}qmk list-keyboards{style_reset_all}. If you`re unsure you can view a full list of supported keyboards with {fg_yellow}qmk list-keyboards{style_reset_all}.
@ -60,6 +68,10 @@ def new_keymap(cli):
cli.log.error(f'Default keymap {{fg_cyan}}{keymap_path_default}{{fg_reset}} does not exist!') cli.log.error(f'Default keymap {{fg_cyan}}{keymap_path_default}{{fg_reset}} does not exist!')
return False return False
if not validate_keymap_name(user_name):
cli.log.error('Keymap names must contain only {fg_cyan}a-z{fg_reset}, {fg_cyan}0-9{fg_reset} and {fg_cyan}_{fg_reset}! Please choose a different name.')
return False
if keymap_path_new.exists(): if keymap_path_new.exists():
cli.log.error(f'Keymap {{fg_cyan}}{user_name}{{fg_reset}} already exists! Please choose a different name.') cli.log.error(f'Keymap {{fg_cyan}}{user_name}{{fg_reset}} already exists! Please choose a different name.')
return False return False

View File

@ -29,6 +29,7 @@ def _convert_macros(via_macros):
if len(via_macros) == 0: if len(via_macros) == 0:
return list() return list()
split_regex = re.compile(r'(}\,)|(\,{)') split_regex = re.compile(r'(}\,)|(\,{)')
macro_group_regex = re.compile(r'({.+?})')
macros = list() macros = list()
for via_macro in via_macros: for via_macro in via_macros:
# Split VIA macro to its elements # Split VIA macro to its elements
@ -38,13 +39,28 @@ def _convert_macros(via_macros):
macro_data = list() macro_data = list()
for m in macro: for m in macro:
if '{' in m or '}' in m: if '{' in m or '}' in m:
# Found keycode(s) # Split macro groups
keycodes = m.split(',') macro_groups = macro_group_regex.findall(m)
# Remove whitespaces and curly braces from around keycodes for macro_group in macro_groups:
keycodes = list(map(lambda s: s.strip(' {}'), keycodes)) # Remove whitespaces and curly braces from around group
# Remove the KC prefix macro_group = macro_group.strip(' {}')
keycodes = list(map(lambda s: s.replace('KC_', ''), keycodes))
macro_data.append({"action": "tap", "keycodes": keycodes}) macro_action = 'tap'
macro_keycodes = []
if macro_group[0] == '+':
macro_action = 'down'
macro_keycodes.append(macro_group[1:])
elif macro_group[0] == '-':
macro_action = 'up'
macro_keycodes.append(macro_group[1:])
else:
macro_keycodes.extend(macro_group.split(',') if ',' in macro_group else [macro_group])
# Remove the KC prefixes
macro_keycodes = list(map(lambda s: s.replace('KC_', ''), macro_keycodes))
macro_data.append({"action": macro_action, "keycodes": macro_keycodes})
else: else:
# Found text # Found text
macro_data.append(m) macro_data.append(m)
@ -54,13 +70,13 @@ def _convert_macros(via_macros):
def _fix_macro_keys(keymap_data): def _fix_macro_keys(keymap_data):
macro_no = re.compile(r'MACRO0?([0-9]{1,2})') macro_no = re.compile(r'MACRO0?\(([0-9]{1,2})\)')
for i in range(0, len(keymap_data)): for i in range(0, len(keymap_data)):
for j in range(0, len(keymap_data[i])): for j in range(0, len(keymap_data[i])):
kc = keymap_data[i][j] kc = keymap_data[i][j]
m = macro_no.match(kc) m = macro_no.match(kc)
if m: if m:
keymap_data[i][j] = f'MACRO_{m.group(1)}' keymap_data[i][j] = f'MC_{m.group(1)}'
return keymap_data return keymap_data