mirror of
https://github.com/qmk/qmk_firmware.git
synced 2025-08-16 21:40:53 +00:00
Compare commits
28 Commits
Author | SHA1 | Date | |
---|---|---|---|
![]() |
90c7ae70c6 | ||
![]() |
ef49a9243b | ||
![]() |
db7c8562ed | ||
![]() |
51eac99ce4 | ||
![]() |
c3f83b6761 | ||
![]() |
ce75f48acb | ||
![]() |
9fd5c6f619 | ||
![]() |
f41e5ec928 | ||
![]() |
cd12fe86d3 | ||
![]() |
d6fb8f12c6 | ||
![]() |
371fb853ee | ||
![]() |
a0f532072d | ||
![]() |
3405efe934 | ||
![]() |
af2e1f4e4d | ||
![]() |
4fe8c473fd | ||
![]() |
b2a0e98a60 | ||
![]() |
74372424ae | ||
![]() |
4a7a9e9951 | ||
![]() |
81fd005af9 | ||
![]() |
2395069b0b | ||
![]() |
032dfddb6b | ||
![]() |
e6f7da4036 | ||
![]() |
7190971b44 | ||
![]() |
6b1170cb97 | ||
![]() |
ec06ffe294 | ||
![]() |
03ea478f20 | ||
![]() |
e4d3ff2374 | ||
![]() |
bcbcb3d107 |
@@ -23,6 +23,141 @@ These allow you to combine a modifier with a keycode. When pressed, the keydown
|
||||
|
||||
You can also chain them, for example `LCTL(LALT(KC_DEL))` or `C(A(KC_DEL))` makes a key that sends Control+Alt+Delete with a single keypress.
|
||||
|
||||
# Checking Modifier State :id=checking-modifier-state
|
||||
|
||||
The current modifier state can mainly be accessed with two functions: `get_mods()` for normal modifiers and modtaps and `get_oneshot_mods()` for one-shot modifiers (unless they're held, in which case they act like normal modifier keys).
|
||||
|
||||
The presence of one or more specific modifiers in the current modifier state can be detected by ANDing the modifier state with a mod mask corresponding to the set of modifiers you want to match for. The reason why bitwise operators are used is that the modifier state is stored as a single byte in the format (GASC)<sub>R</sub>(GASC)<sub>L</sub>.
|
||||
|
||||
Thus, to give an example, `01000010` would be the internal representation of LShift+RAlt.
|
||||
For more information on bitwise operators in C, click [here](https://en.wikipedia.org/wiki/Bitwise_operations_in_C) to open the Wikipedia page on the topic.
|
||||
|
||||
In practice, this means that you can check whether a given modifier is active with `get_mods() & MOD_BIT(KC_<modifier>)` (see the [list of modifier keycodes](keycodes_basic.md#modifiers)) or with `get_mods() & MOD_MASK_<modifier>` if the difference between left and right hand modifiers is not important and you want to match both. Same thing can be done for one-shot modifiers if you replace `get_mods()` with `get_oneshot_mods()`.
|
||||
|
||||
To check that *only* a specific set of mods is active at a time, AND the modifier state and your desired mod mask as explained above and compare the result to the mod mask itself: `get_mods() & <mod mask> == <mod mask>`.
|
||||
|
||||
For example, let's say you want to trigger a piece of custom code if one-shot left control and one-shot left shift are on but every other one-shot mods are off. To do so, you can compose the desired mod mask by combining the mod bits for left control and shift with `(MOD_BIT(KC_LCTL) | MOD_BIT(KC_LSFT))` and then plug it in: `get_oneshot_mods & (MOD_BIT(KC_LCTL) | MOD_BIT(KC_LSFT)) == (MOD_BIT(KC_LCTL) | MOD_BIT(KC_LSFT))`. Using `MOD_MASK_CS` instead for the mod bitmask would have forced you to press four modifier keys (both versions of control and shift) to fulfill the condition.
|
||||
|
||||
The full list of mod masks is as follows:
|
||||
|
||||
| Mod Mask Name | Matching Modifiers |
|
||||
|--------------------|------------------------------------------------|
|
||||
| `MOD_MASK_CTRL` | LCTRL , RCTRL |
|
||||
| `MOD_MASK_SHIFT` | LSHIFT , RSHIFT |
|
||||
| `MOD_MASK_ALT` | LALT , RALT |
|
||||
| `MOD_MASK_GUI` | LGUI , RGUI |
|
||||
| `MOD_MASK_CS` | CTRL , SHIFT |
|
||||
| `MOD_MASK_CA` | (L/R)CTRL , (L/R)ALT |
|
||||
| `MOD_MASK_CG` | (L/R)CTRL , (L/R)GUI |
|
||||
| `MOD_MASK_SA` | (L/R)SHIFT , (L/R)ALT |
|
||||
| `MOD_MASK_SG` | (L/R)SHIFT , (L/R)GUI |
|
||||
| `MOD_MASK_AG` | (L/R)ALT , (L/R)GUI |
|
||||
| `MOD_MASK_CSA` | (L/R)CTRL , (L/R)SHIFT , (L/R)ALT |
|
||||
| `MOD_MASK_CSG` | (L/R)CTRL , (L/R)SHIFT , (L/R)GUI |
|
||||
| `MOD_MASK_CAG` | (L/R)CTRL , (L/R)ALT , (L/R)GUI |
|
||||
| `MOD_MASK_SAG` | (L/R)SHIFT , (L/R)ALT , (L/R)GUI |
|
||||
| `MOD_MASK_CSAG` | (L/R)CTRL , (L/R)SHIFT , (L/R)ALT , (L/R)GUI |
|
||||
|
||||
Aside from accessing the currently active modifiers using `get_mods()`, there exists some other functions you can use to modify the modifier state, where the `mods` argument refers to the modifiers bitmask.
|
||||
|
||||
* `add_mods(mods)`: Enable `mods` without affecting any other modifiers
|
||||
* `register_mods(mods)`: Like `add_mods` but send a keyboard report immediately.
|
||||
* `del_mods(mods)`: Disable `mods` without affecting any other modifiers
|
||||
* `unregister_mods(mods)`: Like `del_mods` but send a keyboard report immediately.
|
||||
* `set_mods(mods)`: Overwrite current modifier state with `mods`
|
||||
* `clear_mods()`: Reset the modifier state by disabling all modifiers
|
||||
|
||||
Similarly, in addition to `get_oneshot_mods()`, there also exists these functions for one-shot mods:
|
||||
|
||||
* `add_oneshot_mods(mods)`: Enable `mods` without affecting any other one-shot modifiers
|
||||
* `del_oneshot_mods(mods)`: Disable `mods` without affecting any other one-shot modifiers
|
||||
* `set_oneshot_mods(mods)`: Overwrite current one-shot modifier state with `mods`
|
||||
* `clear_oneshot_mods()`: Reset the one-shot modifier state by disabling all one-shot modifiers
|
||||
|
||||
## Examples :id=examples
|
||||
|
||||
The following examples use [advanced macro functions](feature_macros.md#advanced-macro-functions) which you can read more about in the [documentation page on macros](feature_macros.md).
|
||||
|
||||
### Alt + Escape for Alt + Tab :id=alt-escape-for-alt-tab
|
||||
|
||||
Simple example where chording Left Alt with `KC_ESC` makes it behave like `KC_TAB` for alt-tabbing between applications. This example strictly checks if only Left Alt is active, meaning you can't do Alt+Shift+Esc to switch between applications in reverse order. Also keep in mind that this removes the ability to trigger the actual Alt+Escape keyboard shortcut, though it keeps the ability to do AltGr+Escape.
|
||||
|
||||
```c
|
||||
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
||||
switch (keycode) {
|
||||
|
||||
case KC_ESC:
|
||||
// Detect the activation of only Left Alt
|
||||
if ((get_mods() & MOD_BIT(KC_LALT)) == MOD_BIT(KC_LALT)) {
|
||||
if (record->event.pressed) {
|
||||
// No need to register KC_LALT because it's already active.
|
||||
// The Alt modifier will apply on this KC_TAB.
|
||||
register_code(KC_TAB);
|
||||
} else {
|
||||
unregister_code(KC_TAB);
|
||||
}
|
||||
// Do not let QMK process the keycode further
|
||||
return false;
|
||||
}
|
||||
// Else, let QMK process the KC_ESC keycode as usual
|
||||
return true;
|
||||
|
||||
}
|
||||
return true;
|
||||
};
|
||||
```
|
||||
|
||||
### Shift + Backspace for Delete :id=shift-backspace-for-delete
|
||||
|
||||
Advanced example where the original behaviour of shift is cancelled when chorded with `KC_BSPC` and is instead fully replaced by `KC_DEL`. Two main variables are created to make this work well: `mod_state` and `delkey_registered`. The first one stores the modifier state and is used to restore it after registering `KC_DEL`. The second variable is a boolean variable (true or false) which keeps track of the status of `KC_DEL` to manage the release of the whole Backspace/Delete key correctly.
|
||||
|
||||
As opposed to the previous example, this doesn't use strict modifier checking. Pressing `KC_BSPC` while one or two shifts are active is enough to trigger this custom code, regardless of the state of other modifiers. That approach offers some perks: Ctrl+Shift+Backspace lets us delete the next word (Ctrl+Delete) and Ctrl+Alt+Shift+Backspace lets us execute the Ctrl+Alt+Del keyboard shortcut.
|
||||
|
||||
```c
|
||||
// Initialize variable holding the binary
|
||||
// representation of active modifiers.
|
||||
uint8_t mod_state;
|
||||
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
||||
// Store the current modifier state in the variable for later reference
|
||||
mod_state = get_mods();
|
||||
switch (keycode) {
|
||||
|
||||
case KC_BSPC:
|
||||
{
|
||||
// Initialize a boolean variable that keeps track
|
||||
// of the delete key status: registered or not?
|
||||
static bool delkey_registered;
|
||||
if (record->event.pressed) {
|
||||
// Detect the activation of either shift keys
|
||||
if (mod_state & MOD_MASK_SHIFT) {
|
||||
// First temporarily canceling both shifts so that
|
||||
// shift isn't applied to the KC_DEL keycode
|
||||
del_mods(MOD_MASK_SHIFT);
|
||||
register_code(KC_DEL);
|
||||
// Update the boolean variable to reflect the status of KC_DEL
|
||||
delkey_registered = true;
|
||||
// Reapplying modifier state so that the held shift key(s)
|
||||
// still work even after having tapped the Backspace/Delete key.
|
||||
set_mods(mod_state);
|
||||
return false;
|
||||
}
|
||||
} else { // on release of KC_BSPC
|
||||
// In case KC_DEL is still being sent even after the release of KC_BSPC
|
||||
if (delkey_registered) {
|
||||
unregister_code(KC_DEL);
|
||||
delkey_registered = false;
|
||||
return false;
|
||||
}
|
||||
}
|
||||
// Let QMK process the KC_BSPC keycode as usual outside of shift
|
||||
return true;
|
||||
}
|
||||
|
||||
}
|
||||
return true;
|
||||
};
|
||||
```
|
||||
|
||||
# Legacy Content :id=legacy-content
|
||||
|
||||
This page used to encompass a large set of features. We have moved many sections that used to be part of this page to their own pages. Everything below this point is simply a redirect so that people following old links on the web find what they're looking for.
|
||||
|
@@ -209,7 +209,7 @@ SEND_STRING(".."SS_TAP(X_END));
|
||||
|
||||
There are some functions you may find useful in macro-writing. Keep in mind that while you can write some fairly advanced code within a macro, if your functionality gets too complex you may want to define a custom keycode instead. Macros are meant to be simple.
|
||||
|
||||
?> You can also use the functions described in [Useful functions](ref_functions.md) for additional functionality. For example `reset_keyboard()` allows you to reset the keyboard as part of a macro.
|
||||
?> You can also use the functions described in [Useful function](ref_functions.md) and [Checking modifier state](feature_advanced_keycodes#checking-modifier-state) for additional functionality. For example, `reset_keyboard()` allows you to reset the keyboard as part of a macro and `get_mods() & MOD_MASK_SHIFT` lets you check for the existence of active shift modifiers.
|
||||
|
||||
### `record->event.pressed`
|
||||
|
||||
|
@@ -126,6 +126,8 @@ The following input modes are available:
|
||||
Enabled by default and works almost anywhere on IBus-enabled distros. Without IBus, this mode works under GTK apps, but rarely anywhere else.
|
||||
By default, this mode uses Ctrl+Shift+U (`LCTL(LSFT(KC_U))`) to start Unicode input, but this can be changed by defining [`UNICODE_KEY_LNX`](#input-key-configuration) with a different keycode. This might be required for IBus versions ≥1.5.15, where Ctrl+Shift+U behavior is consolidated into Ctrl+Shift+E.
|
||||
|
||||
Users who wish support in non-GTK apps without IBus may need to resort to a more indirect method, such as creating a custom keyboard layout ([more on this method](#custom-linux-layout)).
|
||||
|
||||
* **`UC_WIN`**: _(not recommended)_ Windows built-in hex numpad Unicode input. Supports code points up to `0xFFFF`.
|
||||
|
||||
To enable, create a registry key under `HKEY_CURRENT_USER\Control Panel\Input Method` of type `REG_SZ` called `EnableHexNumpad` and set its value to `1`. This can be done from the Command Prompt by running `reg add "HKCU\Control Panel\Input Method" -v EnableHexNumpad -t REG_SZ -d 1` with administrator privileges. Reboot afterwards.
|
||||
@@ -270,3 +272,22 @@ AutoHotkey inserts the Text right of `Send, ` when this combination is pressed.
|
||||
|
||||
If you enable the US International layout on the system, it will use punctuation to accent the characters. For instance, typing "\`a" will result in à.
|
||||
You can find details on how to enable this [here](https://support.microsoft.com/en-us/help/17424/windows-change-keyboard-layout).
|
||||
|
||||
## Software keyboard layout on Linux :id=custom-linux-layout
|
||||
|
||||
This method does not require Unicode support on the keyboard itself but instead uses a custom keyboard layout for Xorg. This is how special characters are inserted by regular keyboards. This does not require IBus and works in practically all software. Help on creating a custom layout can be found [here](https://www.linux.com/news/creating-custom-keyboard-layouts-x11-using-xkb/), [here](http://karols.github.io/blog/2013/11/18/creating-custom-keyboard-layouts-for-linux/) and [here](https://wiki.archlinux.org/index.php/X_keyboard_extension). An example of how you could edit the `us` layout to gain 🤣 on `RALT(KC_R)`:
|
||||
|
||||
Edit the keyboard layout file `/usr/share/X11/xkb/symbols/us`.
|
||||
|
||||
Inside `xkb_symbols "basic" {`, add `include "level3(ralt_switch)"`.
|
||||
|
||||
Find the line defining the R key and add an entry to the list, making it look like this:
|
||||
```
|
||||
key <AD04> { [ r, R, U1F923 ] };
|
||||
```
|
||||
|
||||
Save the file and run the command `setxkbmap us` to reload the layout.
|
||||
|
||||
You can define one custom character for key defined in the layout, and another if you populate the fourth layer. Additional layers up to 8th are also possible.
|
||||
|
||||
This method is specific to the computer on which you set the custom layout. The custom keys will be available only when Xorg is running. To avoid accidents, you should always reload the layout using `setxkbmap`, otherwise an invalid layout could prevent you from logging into your system, locking you out.
|
||||
|
@@ -4,8 +4,9 @@ This project includes a Docker workflow that will allow you to build a new firmw
|
||||
|
||||
## Requirements
|
||||
|
||||
The main prerequisite is a working `docker` install.
|
||||
The main prerequisite is a working `docker` or `podman` install.
|
||||
* [Docker CE](https://docs.docker.com/install/#supported-platforms)
|
||||
* [Podman](https://podman.io/getting-started/installation)
|
||||
|
||||
## Usage
|
||||
|
||||
@@ -38,6 +39,13 @@ util/docker_build.sh
|
||||
# Reads parameters as input (leave blank for all keyboards/keymaps)
|
||||
```
|
||||
|
||||
You can manually set which container runtime you want to use by setting the `RUNTIME` environment variable to it's name or path.
|
||||
By default docker or podman are automatically detected and docker is preferred over podman.
|
||||
|
||||
```bash
|
||||
RUNTIME="podman" util/docker_build.sh keyboard:keymap:target
|
||||
```
|
||||
|
||||
## FAQ
|
||||
|
||||
### Why can't I flash on Windows/macOS
|
||||
|
40
keyboards/7c8/framework/config.h
Normal file
40
keyboards/7c8/framework/config.h
Normal file
@@ -0,0 +1,40 @@
|
||||
/* Copyright 2020 Steven Nguyen
|
||||
*
|
||||
* 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"
|
||||
|
||||
#define VENDOR_ID 0x77C8
|
||||
#define PRODUCT_ID 0x0001
|
||||
#define DEVICE_VER 0x0000
|
||||
#define MANUFACTURER 7c8
|
||||
#define PRODUCT Framework
|
||||
|
||||
#define MATRIX_ROWS 10
|
||||
#define MATRIX_COLS 6
|
||||
|
||||
#define MATRIX_ROW_PINS { B0, B1, D7, B2, D6, B3, D5, B4, D4, B5 }
|
||||
#define MATRIX_COL_PINS { C0, C1, C2, C3, C4, C5 }
|
||||
#define ENCODERS_PAD_A { D0 }
|
||||
#define ENCODERS_PAD_B { D1 }
|
||||
|
||||
#define ENCODER_RESOLUTION 4
|
||||
#define TAP_CODE_DELAY 16
|
||||
#define DIODE_DIRECTION COL2ROW
|
||||
#define DEBOUNCE 5
|
||||
|
||||
#define LEADER_TIMEOUT 250
|
||||
#define LEADER_PER_KEY_TIMING 150
|
17
keyboards/7c8/framework/framework.c
Normal file
17
keyboards/7c8/framework/framework.c
Normal file
@@ -0,0 +1,17 @@
|
||||
/* Copyright 2020 Steven Nguyen
|
||||
*
|
||||
* 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 "framework.h"
|
98
keyboards/7c8/framework/framework.h
Normal file
98
keyboards/7c8/framework/framework.h
Normal file
@@ -0,0 +1,98 @@
|
||||
/* Copyright 2020 Steven Nguyen
|
||||
*
|
||||
* 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 ___ KC_NO
|
||||
|
||||
#define LAYOUT_ortho_5x12( \
|
||||
K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0a, K0b, \
|
||||
K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1a, K1b, \
|
||||
K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2a, K2b, \
|
||||
K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3a, K3b, \
|
||||
K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4a, K4b \
|
||||
) { \
|
||||
{ K00, K01, K02, K03, K04, K05 }, \
|
||||
{ K06, K07, K08, K09, K0a, K0b }, \
|
||||
{ K10, K11, K12, K13, K14, K15 }, \
|
||||
{ K16, K17, K18, K19, K1a, K1b }, \
|
||||
{ K20, K21, K22, K23, K24, K25 }, \
|
||||
{ K26, K27, K28, K29, K2a, K2b }, \
|
||||
{ K30, K31, K32, K33, K34, K35 }, \
|
||||
{ K36, K37, K38, K39, K3a, K3b }, \
|
||||
{ K40, K41, K42, K43, K44, K45 }, \
|
||||
{ K46, K47, K48, K49, K4a, K4b } \
|
||||
}
|
||||
|
||||
#define LAYOUT_ortho_5x12_1x2uC( \
|
||||
K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0a, K0b, \
|
||||
K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1a, K1b, \
|
||||
K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2a, K2b, \
|
||||
K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3a, K3b, \
|
||||
K40, K41, K42, K43, K44, K45, K47, K48, K49, K4a, K4b \
|
||||
) { \
|
||||
{ K00, K01, K02, K03, K04, K05 }, \
|
||||
{ K06, K07, K08, K09, K0a, K0b }, \
|
||||
{ K10, K11, K12, K13, K14, K15 }, \
|
||||
{ K16, K17, K18, K19, K1a, K1b }, \
|
||||
{ K20, K21, K22, K23, K24, K25 }, \
|
||||
{ K26, K27, K28, K29, K2a, K2b }, \
|
||||
{ K30, K31, K32, K33, K34, K35 }, \
|
||||
{ K36, K37, K38, K39, K3a, K3b }, \
|
||||
{ K40, K41, K42, K43, K44, K45 }, \
|
||||
{ ___, K47, K48, K49, K4a, K4b } \
|
||||
}
|
||||
|
||||
#define LAYOUT_preonic_2x2u( \
|
||||
K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0a, K0b, \
|
||||
K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1a, K1b, \
|
||||
K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2a, K2b, \
|
||||
K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3a, K3b, \
|
||||
K40, K41, K42, K43, K45, K46, K48, K49, K4a, K4b \
|
||||
) { \
|
||||
{ K00, K01, K02, K03, K04, K05 }, \
|
||||
{ K06, K07, K08, K09, K0a, K0b }, \
|
||||
{ K10, K11, K12, K13, K14, K15 }, \
|
||||
{ K16, K17, K18, K19, K1a, K1b }, \
|
||||
{ K20, K21, K22, K23, K24, K25 }, \
|
||||
{ K26, K27, K28, K29, K2a, K2b }, \
|
||||
{ K30, K31, K32, K33, K34, K35 }, \
|
||||
{ K36, K37, K38, K39, K3a, K3b }, \
|
||||
{ K40, K41, K42, K43, ___, K45 }, \
|
||||
{ K46, ___, K48, K49, K4a, K4b } \
|
||||
}
|
||||
|
||||
#define framework_via( \
|
||||
K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0a, K0b, \
|
||||
K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1a, K1b, \
|
||||
K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2a, K2b, \
|
||||
K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3a, K3b, \
|
||||
K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4a, K4b, \
|
||||
K50, K51 \
|
||||
) { \
|
||||
{ K00, K01, K02, K03, K04, K05 }, \
|
||||
{ K06, K07, K08, K09, K0a, K0b }, \
|
||||
{ K10, K11, K12, K13, K14, K15 }, \
|
||||
{ K16, K17, K18, K19, K1a, K1b }, \
|
||||
{ K20, K21, K22, K23, K24, K25 }, \
|
||||
{ K26, K27, K28, K29, K2a, K2b }, \
|
||||
{ K30, K31, K32, K33, K34, K35 }, \
|
||||
{ K36, K37, K38, K39, K3a, K3b }, \
|
||||
{ K40, K41, K42, K43, K44, K45 }, \
|
||||
{ K46, K47, K48, K49, K4a, K4b }, \
|
||||
{ K50, K51 } \
|
||||
}
|
156
keyboards/7c8/framework/keymaps/default/keymap.c
Normal file
156
keyboards/7c8/framework/keymaps/default/keymap.c
Normal file
@@ -0,0 +1,156 @@
|
||||
/* Copyright 2020 Steven Nguyen
|
||||
*
|
||||
* 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 framework_layers {
|
||||
_BASE,
|
||||
_LOWER,
|
||||
_RAISE,
|
||||
_BOTH,
|
||||
_FN
|
||||
};
|
||||
|
||||
enum framework_keycodes {
|
||||
LOWER = SAFE_RANGE,
|
||||
RAISE,
|
||||
BOTH,
|
||||
FN
|
||||
};
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
[_BASE] = LAYOUT_ortho_5x12(
|
||||
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MEDIA_PLAY_PAUSE,
|
||||
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
|
||||
KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
|
||||
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT,
|
||||
KC_LCTL, KC_LGUI, KC_LALT, FN, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT
|
||||
),
|
||||
|
||||
[_LOWER] = LAYOUT_ortho_5x12(
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MINS, KC_EQL, _______,
|
||||
KC_LEAD, KC_F1, KC_F2, KC_F3, KC_F4, _______, _______, _______, _______, KC_LBRC, KC_RBRC, KC_BSLS,
|
||||
KC_DEL, KC_F5, KC_F6, KC_F7, KC_F8, _______, _______, _______, _______, _______, _______, _______,
|
||||
KC_TRNS, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, _______, _______, _______, _______, _______,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, _______, _______, KC_TRNS, KC_HOME, KC_PGDN, KC_PGUP, KC_END
|
||||
),
|
||||
|
||||
[_RAISE] = LAYOUT_ortho_5x12(
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, KC_TRNS, _______, _______, KC_TRNS, _______, _______, _______, _______
|
||||
),
|
||||
|
||||
[_BOTH] = LAYOUT_ortho_5x12(
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, LALT(KC_F4), _______, KC_MYCM, LGUI(KC_R), _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, DEBUG
|
||||
),
|
||||
|
||||
[_FN] = LAYOUT_ortho_5x12(
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
|
||||
)
|
||||
};
|
||||
|
||||
void encoder_update_user(uint8_t index, bool clockwise) {
|
||||
if (index == 0) {
|
||||
switch (get_highest_layer(layer_state)) {
|
||||
case _BASE:
|
||||
if (clockwise) {
|
||||
tap_code(KC_AUDIO_VOL_UP);
|
||||
} else {
|
||||
tap_code(KC_AUDIO_VOL_DOWN);
|
||||
}
|
||||
break;
|
||||
|
||||
case _LOWER:
|
||||
if (clockwise) {
|
||||
tap_code16(LCTL(KC_TAB));
|
||||
} else {
|
||||
tap_code16(LCTL(LSFT(KC_TAB)));
|
||||
}
|
||||
break;
|
||||
|
||||
case _RAISE:
|
||||
if (clockwise) {
|
||||
tap_code16(LCTL(KC_RGHT));
|
||||
} else {
|
||||
tap_code16(LCTL(KC_LEFT));
|
||||
}
|
||||
break;
|
||||
|
||||
case _BOTH:
|
||||
if (clockwise) {
|
||||
tap_code16(LCTL(KC_Y));
|
||||
} else {
|
||||
tap_code16(LCTL(KC_Z));
|
||||
}
|
||||
break;
|
||||
|
||||
case _FN:
|
||||
if (clockwise) {
|
||||
tap_code(_______);
|
||||
} else {
|
||||
tap_code(_______);
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
||||
switch (keycode) {
|
||||
case LOWER:
|
||||
if (record->event.pressed) {
|
||||
layer_on(_LOWER);
|
||||
update_tri_layer(_LOWER, _RAISE, _BOTH);
|
||||
} else {
|
||||
layer_off(_LOWER);
|
||||
update_tri_layer(_LOWER, _RAISE, _BOTH);
|
||||
}
|
||||
return false;
|
||||
|
||||
case RAISE:
|
||||
if (record->event.pressed) {
|
||||
layer_on(_RAISE);
|
||||
update_tri_layer(_LOWER, _RAISE, _BOTH);
|
||||
} else {
|
||||
layer_off(_RAISE);
|
||||
update_tri_layer(_LOWER, _RAISE, _BOTH);
|
||||
}
|
||||
return false;
|
||||
|
||||
case FN:
|
||||
if (record->event.pressed) {
|
||||
layer_on(_FN);
|
||||
} else {
|
||||
layer_off(_FN);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
23
keyboards/7c8/framework/keymaps/steven/config.h
Normal file
23
keyboards/7c8/framework/keymaps/steven/config.h
Normal file
@@ -0,0 +1,23 @@
|
||||
/* Copyright 2020 Steven Nguyen
|
||||
*
|
||||
* 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/>.
|
||||
*/
|
||||
|
||||
/* VIA specific defines to increase dynamic layer count */
|
||||
#define VIA_EEPROM_LAYOUT_OPTIONS_SIZE 3
|
||||
#define DYNAMIC_KEYMAP_LAYER_COUNT 5
|
||||
|
||||
/* defining an extra row for encoder assignment in VIA */
|
||||
#undef MATRIX_ROWS
|
||||
#define MATRIX_ROWS 11
|
129
keyboards/7c8/framework/keymaps/steven/keymap.c
Normal file
129
keyboards/7c8/framework/keymaps/steven/keymap.c
Normal file
@@ -0,0 +1,129 @@
|
||||
/* Copyright 2020 Steven Nguyen
|
||||
*
|
||||
* 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 framework_layers {
|
||||
_BASE,
|
||||
_LOWER,
|
||||
_RAISE,
|
||||
_BOTH,
|
||||
_FN
|
||||
};
|
||||
|
||||
enum framework_keycodes {
|
||||
LOWER = SAFE_RANGE,
|
||||
RAISE,
|
||||
BOTH,
|
||||
FN
|
||||
};
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
[_BASE] = framework_via(
|
||||
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MEDIA_PLAY_PAUSE,
|
||||
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
|
||||
KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
|
||||
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT,
|
||||
KC_LCTL, KC_LGUI, KC_LALT, MO(_FN), MO(_LOWER), KC_SPC, KC_SPC, MO(_RAISE), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT,
|
||||
KC_AUDIO_VOL_DOWN, KC_AUDIO_VOL_UP
|
||||
),
|
||||
|
||||
[_LOWER] = framework_via(
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MINS, KC_EQL, _______,
|
||||
KC_LEAD, KC_F1, KC_F2, KC_F3, KC_F4, _______, _______, _______, _______, KC_LBRC, KC_RBRC, KC_BSLS,
|
||||
KC_DEL, KC_F5, KC_F6, KC_F7, KC_F8, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, MO(_BOTH), KC_HOME, KC_PGDN, KC_PGUP, KC_END,
|
||||
C(S(KC_TAB)), C(KC_TAB)
|
||||
),
|
||||
|
||||
[_RAISE] = framework_via(
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, MO(_BOTH), _______, _______, _______, _______, _______, _______, _______,
|
||||
C(KC_LEFT), C(KC_RIGHT)
|
||||
),
|
||||
|
||||
[_BOTH] = framework_via(
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, EEP_RST, DEBUG,
|
||||
C(KC_Z), C(KC_Y)
|
||||
),
|
||||
|
||||
[_FN] = framework_via(
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
KC_MS_WH_LEFT, KC_MS_WH_RIGHT
|
||||
)
|
||||
};
|
||||
|
||||
LEADER_EXTERNS();
|
||||
|
||||
void matrix_scan_user(void) {
|
||||
LEADER_DICTIONARY() {
|
||||
leading = false;
|
||||
leader_end();
|
||||
|
||||
// qq, alt+f4 close window
|
||||
SEQ_TWO_KEYS(KC_Q, KC_Q) {
|
||||
tap_code16(A(KC_F4));
|
||||
}
|
||||
|
||||
// ee, open explorer
|
||||
SEQ_TWO_KEYS(KC_E, KC_E) {
|
||||
tap_code16(G(KC_E));
|
||||
}
|
||||
|
||||
// rr, windows run prompt
|
||||
SEQ_TWO_KEYS(KC_R, KC_R) {
|
||||
tap_code16(G(KC_R));
|
||||
}
|
||||
|
||||
// ww, maximize window
|
||||
SEQ_TWO_KEYS(KC_W, KC_W) {
|
||||
tap_code16(G(KC_UP));
|
||||
}
|
||||
|
||||
// ss, minimize window
|
||||
SEQ_TWO_KEYS(KC_S, KC_S) {
|
||||
tap_code16(G(KC_DOWN));
|
||||
}
|
||||
|
||||
// <space><space>, toggle desktop
|
||||
SEQ_TWO_KEYS(KC_SPC, KC_SPC) {
|
||||
tap_code16(G(KC_D));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void encoder_update_user(uint8_t index, bool clockwise) {
|
||||
uint8_t layer = get_highest_layer(layer_state);
|
||||
if (index == 0) {
|
||||
if (clockwise) {
|
||||
tap_code16(dynamic_keymap_get_keycode(layer, 10, 1));
|
||||
} else {
|
||||
tap_code16(dynamic_keymap_get_keycode(layer, 10, 0));
|
||||
}
|
||||
}
|
||||
}
|
3
keyboards/7c8/framework/keymaps/steven/readme.md
Normal file
3
keyboards/7c8/framework/keymaps/steven/readme.md
Normal file
@@ -0,0 +1,3 @@
|
||||
# Steven's Framework layout
|
||||
|
||||
This is a VIA compatible layout, exactly like the default VIA keymap, but with some leader key sequences that I find convenient.
|
1
keyboards/7c8/framework/keymaps/steven/rules.mk
Normal file
1
keyboards/7c8/framework/keymaps/steven/rules.mk
Normal file
@@ -0,0 +1 @@
|
||||
VIA_ENABLE = yes
|
23
keyboards/7c8/framework/keymaps/via/config.h
Normal file
23
keyboards/7c8/framework/keymaps/via/config.h
Normal file
@@ -0,0 +1,23 @@
|
||||
/* Copyright 2020 Steven Nguyen
|
||||
*
|
||||
* 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/>.
|
||||
*/
|
||||
|
||||
/* VIA specific defines to increase dynamic layer count */
|
||||
#define VIA_EEPROM_LAYOUT_OPTIONS_SIZE 3
|
||||
#define DYNAMIC_KEYMAP_LAYER_COUNT 5
|
||||
|
||||
/* defining an extra row for encoder assignment in VIA */
|
||||
#undef MATRIX_ROWS
|
||||
#define MATRIX_ROWS 11
|
90
keyboards/7c8/framework/keymaps/via/keymap.c
Normal file
90
keyboards/7c8/framework/keymaps/via/keymap.c
Normal file
@@ -0,0 +1,90 @@
|
||||
/* Copyright 2020 Steven Nguyen
|
||||
*
|
||||
* 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 framework_layers {
|
||||
_BASE,
|
||||
_LOWER,
|
||||
_RAISE,
|
||||
_BOTH,
|
||||
_FN
|
||||
};
|
||||
|
||||
enum framework_keycodes {
|
||||
LOWER = SAFE_RANGE,
|
||||
RAISE,
|
||||
BOTH,
|
||||
FN
|
||||
};
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
[_BASE] = framework_via(
|
||||
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MEDIA_PLAY_PAUSE,
|
||||
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
|
||||
KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
|
||||
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT,
|
||||
KC_LCTL, KC_LGUI, KC_LALT, MO(_FN), MO(_LOWER), KC_SPC, KC_SPC, MO(_RAISE), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT,
|
||||
KC_AUDIO_VOL_DOWN, KC_AUDIO_VOL_UP
|
||||
),
|
||||
|
||||
[_LOWER] = framework_via(
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MINS, KC_EQL, _______,
|
||||
_______, KC_F1, KC_F2, KC_F3, KC_F4, _______, _______, _______, _______, KC_LBRC, KC_RBRC, KC_BSLS,
|
||||
KC_DEL, KC_F5, KC_F6, KC_F7, KC_F8, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, MO(_BOTH), KC_HOME, KC_PGDN, KC_PGUP, KC_END,
|
||||
C(S(KC_TAB)), C(KC_TAB)
|
||||
),
|
||||
|
||||
[_RAISE] = framework_via(
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, MO(_BOTH), _______, _______, _______, _______, _______, _______, _______,
|
||||
C(KC_LEFT), C(KC_RIGHT)
|
||||
),
|
||||
|
||||
[_BOTH] = framework_via(
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, EEP_RST, DEBUG,
|
||||
C(KC_Z), C(KC_Y)
|
||||
),
|
||||
|
||||
[_FN] = framework_via(
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
KC_MS_WH_LEFT, KC_MS_WH_RIGHT
|
||||
)
|
||||
};
|
||||
|
||||
void encoder_update_user(uint8_t index, bool clockwise) {
|
||||
uint8_t layer = get_highest_layer(layer_state);
|
||||
if (index == 0) {
|
||||
if (clockwise) {
|
||||
tap_code16(dynamic_keymap_get_keycode(layer, 10, 1));
|
||||
} else {
|
||||
tap_code16(dynamic_keymap_get_keycode(layer, 10, 0));
|
||||
}
|
||||
}
|
||||
}
|
1
keyboards/7c8/framework/keymaps/via/rules.mk
Normal file
1
keyboards/7c8/framework/keymaps/via/rules.mk
Normal file
@@ -0,0 +1 @@
|
||||
VIA_ENABLE = yes
|
30
keyboards/7c8/framework/readme.md
Normal file
30
keyboards/7c8/framework/readme.md
Normal file
@@ -0,0 +1,30 @@
|
||||
# Framework
|
||||
|
||||

|
||||
|
||||
## Features
|
||||
|
||||
* All through-hole components (except Kailh hotswap sockets)
|
||||
* QMK firmware with VIA support
|
||||
* Rotary encoder
|
||||
* Hotswappable switches
|
||||
* FR-4 and acrylic sandwich construction
|
||||
* USB Type-C
|
||||
* Supports MIT (one 2u), grid (two 1u), and two 2u space keys
|
||||
|
||||
## Info
|
||||
|
||||
* Keyboard maintainer: [Steven Nguyen](https://github.com/stevennguyen)
|
||||
* Hardware supported: Framework
|
||||
* Hardware availability: [Steven Nguyen](https://github.com/stevennguyen)
|
||||
|
||||
Make example for this keyboard (after setting up your build environment):
|
||||
|
||||
make 7c8/framework:default # default keymap
|
||||
make 7c8/framework:via # via-compatible keymap
|
||||
|
||||
Flashing example for this keyboard:
|
||||
|
||||
make 7c8/framework: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).
|
20
keyboards/7c8/framework/rules.mk
Normal file
20
keyboards/7c8/framework/rules.mk
Normal file
@@ -0,0 +1,20 @@
|
||||
MCU = atmega328p
|
||||
BOOTLOADER = USBasp
|
||||
|
||||
BOOTMAGIC_ENABLE = no
|
||||
MOUSEKEY_ENABLE = yes
|
||||
EXTRAKEY_ENABLE = yes
|
||||
CONSOLE_ENABLE = no
|
||||
COMMAND_ENABLE = no
|
||||
SLEEP_LED_ENABLE = no
|
||||
NKRO_ENABLE = no
|
||||
BACKLIGHT_ENABLE = no
|
||||
RGBLIGHT_ENABLE = no
|
||||
MIDI_ENABLE = no
|
||||
UNICODE_ENABLE = no
|
||||
BLUETOOTH_ENABLE = no
|
||||
AUDIO_ENABLE = no
|
||||
FAUXCLICKY_ENABLE = no
|
||||
LAYOUTS_HAS_RGB = no
|
||||
ENCODER_ENABLE = yes
|
||||
LEADER_ENABLE = yes
|
17
keyboards/barracuda/barracuda.c
Normal file
17
keyboards/barracuda/barracuda.c
Normal file
@@ -0,0 +1,17 @@
|
||||
/* Copyright 2021 knaruo
|
||||
*
|
||||
* 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 "barracuda.h"
|
41
keyboards/barracuda/barracuda.h
Normal file
41
keyboards/barracuda/barracuda.h
Normal file
@@ -0,0 +1,41 @@
|
||||
/* Copyright 2021 knaruo
|
||||
*
|
||||
* 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"
|
||||
|
||||
/* This is a shortcut to help you visually see your layout.
|
||||
*
|
||||
* The first section contains all of the arguments representing the physical
|
||||
* layout of the board and position of the keys.
|
||||
*
|
||||
* The second converts the arguments into a two-dimensional array which
|
||||
* represents the switch matrix.
|
||||
*/
|
||||
|
||||
#define LAYOUT_ortho_3x11( \
|
||||
L00, L01, L02, L03, L04, L05, R00, R01, R02, R03, R04, \
|
||||
L10, L11, L12, L13, L14, L15, R10, R11, R12, R13, R14, \
|
||||
L20, L21, L22, L23, L24, L25, R20, R21, R22, R23, R24 \
|
||||
) { \
|
||||
{ L00, L01, L02, L03, L04, L05 }, \
|
||||
{ L10, L11, L12, L13, L14, L15 }, \
|
||||
{ L20, L21, L22, L23, L24, L25 }, \
|
||||
{ KC_NO, R00, R01, R02, R03, R04 }, \
|
||||
{ KC_NO, R10, R11, R12, R13, R14 }, \
|
||||
{ KC_NO, R20, R21, R22, R23, R24 } \
|
||||
}
|
59
keyboards/barracuda/config.h
Normal file
59
keyboards/barracuda/config.h
Normal file
@@ -0,0 +1,59 @@
|
||||
/* Copyright 2021 knaruo
|
||||
*
|
||||
* 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 0x6B6E
|
||||
#define PRODUCT_ID 0x0001
|
||||
#define DEVICE_VER 0x0001
|
||||
#define MANUFACTURER knaruo
|
||||
#define PRODUCT barracuda
|
||||
|
||||
/* key matrix size */
|
||||
#define MATRIX_ROWS 6
|
||||
#define MATRIX_COLS 6
|
||||
|
||||
/*
|
||||
* 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)
|
||||
*
|
||||
*/
|
||||
#define MATRIX_ROW_PINS { C4, C5, C6, D1, D2, D3 }
|
||||
#define MATRIX_COL_PINS { D4, D5, D6, B0, B1, B2 }
|
||||
#define UNUSED_PINS
|
||||
|
||||
/* COL2ROW, ROW2COL */
|
||||
#define DIODE_DIRECTION COL2ROW
|
||||
|
||||
/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
|
||||
#define DEBOUNCE 5
|
||||
|
||||
/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
|
||||
#define LOCKING_SUPPORT_ENABLE
|
||||
/* Locking resynchronize hack */
|
||||
#define LOCKING_RESYNC_ENABLE
|
||||
|
||||
/* disable these deprecated features by default */
|
||||
#define NO_ACTION_MACRO
|
||||
#define NO_ACTION_FUNCTION
|
48
keyboards/barracuda/info.json
Normal file
48
keyboards/barracuda/info.json
Normal file
@@ -0,0 +1,48 @@
|
||||
{
|
||||
"keyboard_name": "barracuda",
|
||||
"url": "https://github.com/knaruo/barracuda",
|
||||
"maintainer": "knaruo",
|
||||
"width": 14,
|
||||
"height": 3,
|
||||
"layouts": {
|
||||
"LAYOUT": {
|
||||
"layout": [
|
||||
{"x": 0, "y": 0},
|
||||
{"x": 1, "y": 0},
|
||||
{"x": 2, "y": 0},
|
||||
{"x": 3, "y": 0},
|
||||
{"x": 4, "y": 0},
|
||||
{"x": 5, "y": 0},
|
||||
{"x": 9, "y": 0},
|
||||
{"x": 10, "y": 0},
|
||||
{"x": 11, "y": 0},
|
||||
{"x": 12, "y": 0},
|
||||
{"x": 13, "y": 0},
|
||||
|
||||
{"x": 0, "y": 1},
|
||||
{"x": 1, "y": 1},
|
||||
{"x": 2, "y": 1},
|
||||
{"x": 3, "y": 1},
|
||||
{"x": 4, "y": 1},
|
||||
{"x": 5, "y": 1},
|
||||
{"x": 9, "y": 1},
|
||||
{"x": 10, "y": 1},
|
||||
{"x": 11, "y": 1},
|
||||
{"x": 12, "y": 1},
|
||||
{"x": 13, "y": 1},
|
||||
|
||||
{"x": 0, "y": 2},
|
||||
{"x": 1, "y": 2},
|
||||
{"x": 2, "y": 2},
|
||||
{"x": 3, "y": 2},
|
||||
{"x": 4, "y": 2},
|
||||
{"x": 5, "y": 2},
|
||||
{"x": 9, "y": 2},
|
||||
{"x": 10, "y": 2},
|
||||
{"x": 11, "y": 2},
|
||||
{"x": 12, "y": 2},
|
||||
{"x": 13, "y": 2}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
@@ -1,4 +1,4 @@
|
||||
/* Copyright 2020-2021 Viktor Eikman
|
||||
/* Copyright 2021 knaruo
|
||||
*
|
||||
* 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
|
||||
@@ -16,8 +16,5 @@
|
||||
|
||||
#pragma once
|
||||
|
||||
#ifdef KEYBOARD_handwired_concertina_64key
|
||||
#include "64key.h"
|
||||
#endif
|
||||
|
||||
#include "quantum.h"
|
||||
#define TAPPING_TERM 175 // milliseconds
|
||||
#define IGNORE_MOD_TAP_INTERRUPT
|
63
keyboards/barracuda/keymaps/default/keymap.c
Normal file
63
keyboards/barracuda/keymaps/default/keymap.c
Normal file
@@ -0,0 +1,63 @@
|
||||
/* Copyright 2021 knaruo
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include QMK_KEYBOARD_H
|
||||
#include "keymap_jp.h"
|
||||
|
||||
/* keymap layers */
|
||||
enum _layers {
|
||||
_BASE = 0,
|
||||
_NUM,
|
||||
_FN,
|
||||
_RESERVED, // reserved for VIA
|
||||
_END, // end of supported layers
|
||||
};
|
||||
|
||||
/* Keycode alias */
|
||||
#define KC_CTBS RCTL_T(KC_BSPC) // Backspace + Ctrl
|
||||
#define KC_XWIN LWIN_T(KC_X)
|
||||
#define KC_SPF1 LT(_NUM, KC_SPC) // Space + NUM layer
|
||||
#define KC_DLF2 LT(_FN, KC_DEL) // Del + FN key layer
|
||||
#define KC_SFEN RSFT_T(KC_ENT) // Enter + Shift
|
||||
#define KC_CAD LALT(LCTL(KC_DEL)) // ctrl + alt + delete
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
|
||||
/* Base QWERTY key map */
|
||||
[_BASE] = LAYOUT_ortho_3x11(
|
||||
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, /*_____*/ KC_Y, KC_U, KC_I, KC_O, KC_P,
|
||||
KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, /*_____*/ KC_H, KC_J, KC_K, KC_L, KC_CTBS,
|
||||
KC_LSFT, KC_Z, KC_XWIN, KC_C, KC_V, KC_SPF1, /*_____*/ KC_DLF2, KC_B, KC_N, KC_M, KC_SFEN
|
||||
),
|
||||
|
||||
[_NUM] = LAYOUT_ortho_3x11(
|
||||
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, /*_____*/ KC_6, KC_7, KC_8, KC_9, KC_0,
|
||||
_______, KC_TAB, JP_MINS, JP_CIRC, JP_YEN, JP_AT, /*_____*/ JP_SCLN, JP_COLN, JP_LBRC, JP_RBRC, _______,
|
||||
_______, _______, JP_ZKHK, KC_LALT, JP_COMM, _______, /*_____*/ _______, JP_DOT, JP_SLSH, JP_BSLS, _______
|
||||
),
|
||||
|
||||
[_FN] = LAYOUT_ortho_3x11(
|
||||
_______, 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_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_CAD,
|
||||
_______, _______, _______, _______, _______, _______, /*_____*/ _______, KC_HOME, KC_PGDN, KC_PGUP, KC_END
|
||||
),
|
||||
|
||||
[_RESERVED] = LAYOUT_ortho_3x11(
|
||||
_______, _______, _______, _______, _______, _______, /*_____*/ _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, /*_____*/ _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, /*_____*/ _______, _______, _______, _______, _______
|
||||
),
|
||||
};
|
1
keyboards/barracuda/keymaps/default/readme.md
Normal file
1
keyboards/barracuda/keymaps/default/readme.md
Normal file
@@ -0,0 +1 @@
|
||||
# The default keymap
|
@@ -1,4 +1,4 @@
|
||||
/* Copyright 2020-2021 Viktor Eikman
|
||||
/* Copyright 2021 knaruo
|
||||
*
|
||||
* 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
|
||||
@@ -16,11 +16,5 @@
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "config_common.h"
|
||||
|
||||
/* USB device descriptors */
|
||||
#define VENDOR_ID 0x444D
|
||||
#define PRODUCT_ID 0x3632
|
||||
#define DEVICE_VER 0x0001
|
||||
#define PRODUCT Concertina
|
||||
#define MANUFACTURER Viktor Eikman
|
||||
#define TAPPING_TERM 175 // milliseconds
|
||||
#define IGNORE_MOD_TAP_INTERRUPT
|
63
keyboards/barracuda/keymaps/via/keymap.c
Normal file
63
keyboards/barracuda/keymaps/via/keymap.c
Normal file
@@ -0,0 +1,63 @@
|
||||
/* Copyright 2021 knaruo
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include QMK_KEYBOARD_H
|
||||
#include "keymap_jp.h"
|
||||
|
||||
/* keymap layers */
|
||||
enum _layers {
|
||||
_BASE = 0,
|
||||
_NUM,
|
||||
_FN,
|
||||
_RESERVED, // reserved for VIA
|
||||
_END, // end of supported layers
|
||||
};
|
||||
|
||||
/* Keycode alias */
|
||||
#define KC_CTBS RCTL_T(KC_BSPC) // Backspace + Ctrl
|
||||
#define KC_XWIN LWIN_T(KC_X)
|
||||
#define KC_SPF1 LT(_NUM, KC_SPC) // Space + NUM layer
|
||||
#define KC_DLF2 LT(_FN, KC_DEL) // Del + FN key layer
|
||||
#define KC_SFEN RSFT_T(KC_ENT) // Enter + Shift
|
||||
#define KC_CAD LALT(LCTL(KC_DEL)) // ctrl + alt + delete
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
|
||||
/* Base QWERTY key map */
|
||||
[_BASE] = LAYOUT_ortho_3x11(
|
||||
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, /*_____*/ KC_Y, KC_U, KC_I, KC_O, KC_P,
|
||||
KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, /*_____*/ KC_H, KC_J, KC_K, KC_L, KC_CTBS,
|
||||
KC_LSFT, KC_Z, KC_XWIN, KC_C, KC_V, KC_SPF1, /*_____*/ KC_DLF2, KC_B, KC_N, KC_M, KC_SFEN
|
||||
),
|
||||
|
||||
[_NUM] = LAYOUT_ortho_3x11(
|
||||
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, /*_____*/ KC_6, KC_7, KC_8, KC_9, KC_0,
|
||||
_______, KC_TAB, JP_MINS, JP_CIRC, JP_YEN, JP_AT, /*_____*/ JP_SCLN, JP_COLN, JP_LBRC, JP_RBRC, _______,
|
||||
_______, _______, JP_ZKHK, KC_LALT, JP_COMM, _______, /*_____*/ _______, JP_DOT, JP_SLSH, JP_BSLS, _______
|
||||
),
|
||||
|
||||
[_FN] = LAYOUT_ortho_3x11(
|
||||
_______, 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_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_CAD,
|
||||
_______, _______, _______, _______, _______, _______, /*_____*/ _______, KC_HOME, KC_PGDN, KC_PGUP, KC_END
|
||||
),
|
||||
|
||||
[_RESERVED] = LAYOUT_ortho_3x11(
|
||||
_______, _______, _______, _______, _______, _______, /*_____*/ _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, /*_____*/ _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, /*_____*/ _______, _______, _______, _______, _______
|
||||
),
|
||||
};
|
1
keyboards/barracuda/keymaps/via/readme.md
Normal file
1
keyboards/barracuda/keymaps/via/readme.md
Normal file
@@ -0,0 +1 @@
|
||||
# VIA enabled keymap
|
24
keyboards/barracuda/readme.md
Normal file
24
keyboards/barracuda/readme.md
Normal file
@@ -0,0 +1,24 @@
|
||||
# barracuda
|
||||
|
||||

|
||||
|
||||
30% Ortholinear keyboard with low profile switches
|
||||
|
||||
* Keyboard Maintainer: [knaruo](https://github.com/knaruo)
|
||||
* Hardware Supported: barracuda PCB, ATmega32U2
|
||||
* Hardware Availability: [PCB and Plate](https://github.com/knaruo/barracuda)
|
||||
|
||||
Getting the board into bootloader mode:
|
||||
|
||||
To be able to flash firmware onto this board, you'll need to bring the micro controller into bootloader mode. Press the reset button (RSTSW1) on the bottom side of the PCB to enable the bootloader mode.
|
||||
|
||||
|
||||
Make example for this keyboard (after setting up your build environment):
|
||||
|
||||
make barracuda:default
|
||||
|
||||
Flashing example for this keyboard:
|
||||
|
||||
make barracuda: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).
|
24
keyboards/barracuda/rules.mk
Normal file
24
keyboards/barracuda/rules.mk
Normal file
@@ -0,0 +1,24 @@
|
||||
# MCU name
|
||||
MCU = atmega32u2
|
||||
|
||||
# Bootloader selection
|
||||
BOOTLOADER = atmel-dfu
|
||||
|
||||
# Build Options
|
||||
# change yes to no to disable
|
||||
#
|
||||
BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration
|
||||
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 = yes # USB Nkey Rollover
|
||||
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
|
||||
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
|
||||
BLUETOOTH_ENABLE = no # Enable Bluetooth
|
||||
AUDIO_ENABLE = no # Audio output
|
||||
|
||||
LAYOUTS = ortho_3x11
|
120
keyboards/buildakb/potato65/config.h
Normal file
120
keyboards/buildakb/potato65/config.h
Normal file
@@ -0,0 +1,120 @@
|
||||
/*
|
||||
Copyright 2021 Maelkk
|
||||
|
||||
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 0x0001
|
||||
#define DEVICE_VER 0x0001
|
||||
#define MANUFACTURER Maelkk
|
||||
#define PRODUCT Potato 65
|
||||
|
||||
/* key matrix size */
|
||||
#define MATRIX_ROWS 5
|
||||
#define MATRIX_COLS 16
|
||||
|
||||
/*
|
||||
* 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)
|
||||
*
|
||||
*/
|
||||
#define MATRIX_ROW_PINS { E6, B7, F7, F4, F5 }
|
||||
#define MATRIX_COL_PINS { F6, B0, F1, C7, C6, B6, B5, B4, D7, D6, D4, D5, D3, D2, D1, D0 }
|
||||
#define UNUSED_PINS
|
||||
|
||||
/* COL2ROW, ROW2COL */
|
||||
#define DIODE_DIRECTION COL2ROW
|
||||
|
||||
/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
|
||||
#define DEBOUNCE 5
|
||||
|
||||
/* define if matrix has ghost (lacks anti-ghosting diodes) */
|
||||
//#define MATRIX_HAS_GHOST
|
||||
|
||||
/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
|
||||
#define LOCKING_SUPPORT_ENABLE
|
||||
/* Locking resynchronize hack */
|
||||
#define LOCKING_RESYNC_ENABLE
|
||||
|
||||
/* If defined, GRAVE_ESC will always act as ESC when CTRL is held.
|
||||
* This is useful for the Windows task manager shortcut (ctrl+shift+esc).
|
||||
*/
|
||||
//#define GRAVE_ESC_CTRL_OVERRIDE
|
||||
|
||||
/*
|
||||
* Force NKRO
|
||||
*
|
||||
* Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved
|
||||
* state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the
|
||||
* makefile for this to work.)
|
||||
*
|
||||
* If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N)
|
||||
* until the next keyboard reset.
|
||||
*
|
||||
* NKRO may prevent your keystrokes from being detected in the BIOS, but it is
|
||||
* fully operational during normal computer usage.
|
||||
*
|
||||
* For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N)
|
||||
* or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by
|
||||
* bootmagic, NKRO mode will always be enabled until it is toggled again during a
|
||||
* power-up.
|
||||
*
|
||||
*/
|
||||
//#define FORCE_NKRO
|
||||
|
||||
/*
|
||||
* Feature disable options
|
||||
* These options are also useful to firmware size reduction.
|
||||
*/
|
||||
|
||||
/* disable debug print */
|
||||
//#define NO_DEBUG
|
||||
|
||||
/* disable print */
|
||||
//#define NO_PRINT
|
||||
|
||||
/* disable action features */
|
||||
//#define NO_ACTION_LAYER
|
||||
//#define NO_ACTION_TAPPING
|
||||
//#define NO_ACTION_ONESHOT
|
||||
|
||||
/* disable these deprecated features by default */
|
||||
#define NO_ACTION_MACRO
|
||||
#define NO_ACTION_FUNCTION
|
||||
|
||||
/* Bootmagic Lite key configuration */
|
||||
//#define BOOTMAGIC_LITE_ROW 0
|
||||
//#define BOOTMAGIC_LITE_COLUMN 0
|
||||
|
||||
#define RGB_DI_PIN B1
|
||||
#ifdef RGB_DI_PIN
|
||||
#define RGBLIGHT_ANIMATIONS
|
||||
#define RGBLED_NUM 14
|
||||
#define RGBLIGHT_HUE_STEP 8
|
||||
#define RGBLIGHT_SAT_STEP 8
|
||||
#define RGBLIGHT_VAL_STEP 8
|
||||
#define RGBLIGHT_LIMIT_VAL 240
|
||||
#define RGBLIGHT_SLEEP
|
||||
#endif
|
313
keyboards/buildakb/potato65/info.json
Normal file
313
keyboards/buildakb/potato65/info.json
Normal file
@@ -0,0 +1,313 @@
|
||||
{
|
||||
"keyboard_name": "Potato 65",
|
||||
"url": "https://github.com/Aeonstrife/potato65",
|
||||
"maintainer": "Maelkk",
|
||||
"width": 16,
|
||||
"height": 5,
|
||||
"layouts": {
|
||||
"LAYOUT_65_ansi_split_bs": {
|
||||
"layout": [
|
||||
{ "x":0, "y":0 },
|
||||
{ "x":1, "y":0 },
|
||||
{ "x":2, "y":0 },
|
||||
{ "x":3, "y":0 },
|
||||
{ "x":4, "y":0 },
|
||||
{ "x":5, "y":0 },
|
||||
{ "x":6, "y":0 },
|
||||
{ "x":7, "y":0 },
|
||||
{ "x":8, "y":0 },
|
||||
{ "x":9, "y":0 },
|
||||
{ "x":10, "y":0 },
|
||||
{ "x":11, "y":0 },
|
||||
{ "x":12, "y":0 },
|
||||
{ "x":13, "y":0 },
|
||||
{ "x":14, "y":0 },
|
||||
{ "x":15, "y":0 },
|
||||
|
||||
{ "x":0, "y":1, "w":1.5 },
|
||||
{ "x":1.5, "y":1 },
|
||||
{ "x":2.5, "y":1 },
|
||||
{ "x":3.5, "y":1 },
|
||||
{ "x":4.5, "y":1 },
|
||||
{ "x":5.5, "y":1 },
|
||||
{ "x":6.5, "y":1 },
|
||||
{ "x":7.5, "y":1 },
|
||||
{ "x":8.5, "y":1 },
|
||||
{ "x":9.5, "y":1 },
|
||||
{ "x":10.5, "y":1 },
|
||||
{ "x":11.5, "y":1 },
|
||||
{ "x":12.5, "y":1 },
|
||||
{ "x":13.5, "y":1, "w":1.5 },
|
||||
{ "x":15, "y":1 },
|
||||
|
||||
{ "x":0, "y":2, "w":1.75 },
|
||||
{ "x":1.75, "y":2 },
|
||||
{ "x":2.75, "y":2 },
|
||||
{ "x":3.75, "y":2 },
|
||||
{ "x":4.75, "y":2 },
|
||||
{ "x":5.75, "y":2 },
|
||||
{ "x":6.75, "y":2 },
|
||||
{ "x":7.75, "y":2 },
|
||||
{ "x":8.75, "y":2 },
|
||||
{ "x":9.75, "y":2 },
|
||||
{ "x":10.75, "y":2 },
|
||||
{ "x":11.75, "y":2 },
|
||||
{ "x":12.75, "y":2, "w":2.25 },
|
||||
{ "x":15, "y":2 },
|
||||
|
||||
{ "x":0, "y":3, "w":2.25 },
|
||||
{ "x":2.25, "y":3 },
|
||||
{ "x":3.25, "y":3 },
|
||||
{ "x":4.25, "y":3 },
|
||||
{ "x":5.25, "y":3 },
|
||||
{ "x":6.25, "y":3 },
|
||||
{ "x":7.25, "y":3 },
|
||||
{ "x":8.25, "y":3 },
|
||||
{ "x":9.25, "y":3 },
|
||||
{ "x":10.25, "y":3 },
|
||||
{ "x":11.25, "y":3 },
|
||||
{ "x":12.25, "y":3, "w":1.75 },
|
||||
{ "x":14, "y":3 },
|
||||
{ "x":15, "y":3 },
|
||||
|
||||
{ "x":0, "y":4, "w":1.25 },
|
||||
{ "x":1.25, "y":4, "w":1.25 },
|
||||
{ "x":2.5, "y":4, "w":1.25 },
|
||||
{ "x":3.75, "y":4, "w":6.25 },
|
||||
{ "x":10, "y":4 },
|
||||
{ "x":11, "y":4 },
|
||||
{ "x":12, "y":4 },
|
||||
{ "x":13, "y":4 },
|
||||
{ "x":14, "y":4 },
|
||||
{ "x":15, "y":4 }
|
||||
]
|
||||
},
|
||||
"LAYOUT_65_ansi": {
|
||||
"layout": [
|
||||
{ "x":0, "y":0 },
|
||||
{ "x":1, "y":0 },
|
||||
{ "x":2, "y":0 },
|
||||
{ "x":3, "y":0 },
|
||||
{ "x":4, "y":0 },
|
||||
{ "x":5, "y":0 },
|
||||
{ "x":6, "y":0 },
|
||||
{ "x":7, "y":0 },
|
||||
{ "x":8, "y":0 },
|
||||
{ "x":9, "y":0 },
|
||||
{ "x":10, "y":0 },
|
||||
{ "x":11, "y":0 },
|
||||
{ "x":12, "y":0 },
|
||||
{ "x":13, "y":0, "w": 2 },
|
||||
{ "x":15, "y":0 },
|
||||
|
||||
{ "x":0, "y":1, "w":1.5 },
|
||||
{ "x":1.5, "y":1 },
|
||||
{ "x":2.5, "y":1 },
|
||||
{ "x":3.5, "y":1 },
|
||||
{ "x":4.5, "y":1 },
|
||||
{ "x":5.5, "y":1 },
|
||||
{ "x":6.5, "y":1 },
|
||||
{ "x":7.5, "y":1 },
|
||||
{ "x":8.5, "y":1 },
|
||||
{ "x":9.5, "y":1 },
|
||||
{ "x":10.5, "y":1 },
|
||||
{ "x":11.5, "y":1 },
|
||||
{ "x":12.5, "y":1 },
|
||||
{ "x":13.5, "y":1, "w":1.5 },
|
||||
{ "x":15, "y":1 },
|
||||
|
||||
{ "x":0, "y":2, "w":1.75 },
|
||||
{ "x":1.75, "y":2 },
|
||||
{ "x":2.75, "y":2 },
|
||||
{ "x":3.75, "y":2 },
|
||||
{ "x":4.75, "y":2 },
|
||||
{ "x":5.75, "y":2 },
|
||||
{ "x":6.75, "y":2 },
|
||||
{ "x":7.75, "y":2 },
|
||||
{ "x":8.75, "y":2 },
|
||||
{ "x":9.75, "y":2 },
|
||||
{ "x":10.75, "y":2 },
|
||||
{ "x":11.75, "y":2 },
|
||||
{ "x":12.75, "y":2, "w":2.25 },
|
||||
{ "x":15, "y":2 },
|
||||
|
||||
{ "x":0, "y":3, "w":2.25 },
|
||||
{ "x":2.25, "y":3 },
|
||||
{ "x":3.25, "y":3 },
|
||||
{ "x":4.25, "y":3 },
|
||||
{ "x":5.25, "y":3 },
|
||||
{ "x":6.25, "y":3 },
|
||||
{ "x":7.25, "y":3 },
|
||||
{ "x":8.25, "y":3 },
|
||||
{ "x":9.25, "y":3 },
|
||||
{ "x":10.25, "y":3 },
|
||||
{ "x":11.25, "y":3 },
|
||||
{ "x":12.25, "y":3, "w":1.75 },
|
||||
{ "x":14, "y":3 },
|
||||
{ "x":15, "y":3 },
|
||||
|
||||
{ "x":0, "y":4, "w":1.25 },
|
||||
{ "x":1.25, "y":4, "w":1.25 },
|
||||
{ "x":2.5, "y":4, "w":1.25 },
|
||||
{ "x":3.75, "y":4, "w":6.25 },
|
||||
{ "x":10, "y":4 },
|
||||
{ "x":11, "y":4 },
|
||||
{ "x":12, "y":4 },
|
||||
{ "x":13, "y":4 },
|
||||
{ "x":14, "y":4 },
|
||||
{ "x":15, "y":4 }
|
||||
]
|
||||
},
|
||||
"LAYOUT_65_ansi_split_bs_2_right_mods": {
|
||||
"layout": [
|
||||
{ "x":0, "y":0 },
|
||||
{ "x":1, "y":0 },
|
||||
{ "x":2, "y":0 },
|
||||
{ "x":3, "y":0 },
|
||||
{ "x":4, "y":0 },
|
||||
{ "x":5, "y":0 },
|
||||
{ "x":6, "y":0 },
|
||||
{ "x":7, "y":0 },
|
||||
{ "x":8, "y":0 },
|
||||
{ "x":9, "y":0 },
|
||||
{ "x":10, "y":0 },
|
||||
{ "x":11, "y":0 },
|
||||
{ "x":12, "y":0 },
|
||||
{ "x":13, "y":0 },
|
||||
{ "x":14, "y":0 },
|
||||
{ "x":15, "y":0 },
|
||||
|
||||
{ "x":0, "y":1, "w":1.5 },
|
||||
{ "x":1.5, "y":1 },
|
||||
{ "x":2.5, "y":1 },
|
||||
{ "x":3.5, "y":1 },
|
||||
{ "x":4.5, "y":1 },
|
||||
{ "x":5.5, "y":1 },
|
||||
{ "x":6.5, "y":1 },
|
||||
{ "x":7.5, "y":1 },
|
||||
{ "x":8.5, "y":1 },
|
||||
{ "x":9.5, "y":1 },
|
||||
{ "x":10.5, "y":1 },
|
||||
{ "x":11.5, "y":1 },
|
||||
{ "x":12.5, "y":1 },
|
||||
{ "x":13.5, "y":1, "w":1.5 },
|
||||
{ "x":15, "y":1 },
|
||||
|
||||
{ "x":0, "y":2, "w":1.75 },
|
||||
{ "x":1.75, "y":2 },
|
||||
{ "x":2.75, "y":2 },
|
||||
{ "x":3.75, "y":2 },
|
||||
{ "x":4.75, "y":2 },
|
||||
{ "x":5.75, "y":2 },
|
||||
{ "x":6.75, "y":2 },
|
||||
{ "x":7.75, "y":2 },
|
||||
{ "x":8.75, "y":2 },
|
||||
{ "x":9.75, "y":2 },
|
||||
{ "x":10.75, "y":2 },
|
||||
{ "x":11.75, "y":2 },
|
||||
{ "x":12.75, "y":2, "w":2.25 },
|
||||
{ "x":15, "y":2 },
|
||||
|
||||
{ "x":0, "y":3, "w":2.25 },
|
||||
{ "x":2.25, "y":3 },
|
||||
{ "x":3.25, "y":3 },
|
||||
{ "x":4.25, "y":3 },
|
||||
{ "x":5.25, "y":3 },
|
||||
{ "x":6.25, "y":3 },
|
||||
{ "x":7.25, "y":3 },
|
||||
{ "x":8.25, "y":3 },
|
||||
{ "x":9.25, "y":3 },
|
||||
{ "x":10.25, "y":3 },
|
||||
{ "x":11.25, "y":3 },
|
||||
{ "x":12.25, "y":3, "w":1.75 },
|
||||
{ "x":14, "y":3 },
|
||||
{ "x":15, "y":3 },
|
||||
|
||||
{ "x":0, "y":4, "w":1.25 },
|
||||
{ "x":1.25, "y":4, "w":1.25 },
|
||||
{ "x":2.5, "y":4, "w":1.25 },
|
||||
{ "x":3.75, "y":4, "w":6.25 },
|
||||
{ "x":10, "y":4, "w":1.5 },
|
||||
{ "x":11.5, "y":4, "w":1.5 },
|
||||
{ "x":13, "y":4 },
|
||||
{ "x":14, "y":4 },
|
||||
{ "x":15, "y":4 }
|
||||
]
|
||||
},
|
||||
"LAYOUT_65_ansi_2_right_mods": {
|
||||
"layout": [
|
||||
{ "x":0, "y":0 },
|
||||
{ "x":1, "y":0 },
|
||||
{ "x":2, "y":0 },
|
||||
{ "x":3, "y":0 },
|
||||
{ "x":4, "y":0 },
|
||||
{ "x":5, "y":0 },
|
||||
{ "x":6, "y":0 },
|
||||
{ "x":7, "y":0 },
|
||||
{ "x":8, "y":0 },
|
||||
{ "x":9, "y":0 },
|
||||
{ "x":10, "y":0 },
|
||||
{ "x":11, "y":0 },
|
||||
{ "x":12, "y":0 },
|
||||
{ "x":13, "y":0, "w": 2 },
|
||||
{ "x":15, "y":0 },
|
||||
|
||||
{ "x":0, "y":1, "w":1.5 },
|
||||
{ "x":1.5, "y":1 },
|
||||
{ "x":2.5, "y":1 },
|
||||
{ "x":3.5, "y":1 },
|
||||
{ "x":4.5, "y":1 },
|
||||
{ "x":5.5, "y":1 },
|
||||
{ "x":6.5, "y":1 },
|
||||
{ "x":7.5, "y":1 },
|
||||
{ "x":8.5, "y":1 },
|
||||
{ "x":9.5, "y":1 },
|
||||
{ "x":10.5, "y":1 },
|
||||
{ "x":11.5, "y":1 },
|
||||
{ "x":12.5, "y":1 },
|
||||
{ "x":13.5, "y":1, "w":1.5 },
|
||||
{ "x":15, "y":1 },
|
||||
|
||||
{ "x":0, "y":2, "w":1.75 },
|
||||
{ "x":1.75, "y":2 },
|
||||
{ "x":2.75, "y":2 },
|
||||
{ "x":3.75, "y":2 },
|
||||
{ "x":4.75, "y":2 },
|
||||
{ "x":5.75, "y":2 },
|
||||
{ "x":6.75, "y":2 },
|
||||
{ "x":7.75, "y":2 },
|
||||
{ "x":8.75, "y":2 },
|
||||
{ "x":9.75, "y":2 },
|
||||
{ "x":10.75, "y":2 },
|
||||
{ "x":11.75, "y":2 },
|
||||
{ "x":12.75, "y":2, "w":2.25 },
|
||||
{ "x":15, "y":2 },
|
||||
|
||||
{ "x":0, "y":3, "w":2.25 },
|
||||
{ "x":2.25, "y":3 },
|
||||
{ "x":3.25, "y":3 },
|
||||
{ "x":4.25, "y":3 },
|
||||
{ "x":5.25, "y":3 },
|
||||
{ "x":6.25, "y":3 },
|
||||
{ "x":7.25, "y":3 },
|
||||
{ "x":8.25, "y":3 },
|
||||
{ "x":9.25, "y":3 },
|
||||
{ "x":10.25, "y":3 },
|
||||
{ "x":11.25, "y":3 },
|
||||
{ "x":12.25, "y":3, "w":1.75 },
|
||||
{ "x":14, "y":3 },
|
||||
{ "x":15, "y":3 },
|
||||
|
||||
{ "x":0, "y":4, "w":1.25 },
|
||||
{ "x":1.25, "y":4, "w":1.25 },
|
||||
{ "x":2.5, "y":4, "w":1.25 },
|
||||
{ "x":3.75, "y":4, "w":6.25 },
|
||||
{ "x":10, "y":4, "w":1.5 },
|
||||
{ "x":11.5, "y":4, "w":1.5 },
|
||||
{ "x":13, "y":4 },
|
||||
{ "x":14, "y":4 },
|
||||
{ "x":15, "y":4 }
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
38
keyboards/buildakb/potato65/keymaps/default/keymap.c
Normal file
38
keyboards/buildakb/potato65/keymaps/default/keymap.c
Normal file
@@ -0,0 +1,38 @@
|
||||
/* Copyright 2021 Maelkk
|
||||
*
|
||||
* 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 layer_names {
|
||||
_BASE,
|
||||
_FN
|
||||
};
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
[_BASE] = LAYOUT_65_ansi_split_bs(
|
||||
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_GRV, KC_BSPC, KC_HOME,
|
||||
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_END,
|
||||
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGUP,
|
||||
KC_LSFT, 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_PGDN,
|
||||
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
|
||||
),
|
||||
[_FN] = LAYOUT_65_ansi_split_bs(
|
||||
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, _______, _______, _______,
|
||||
_______, RGB_TOG, RGB_MOD, RGB_RMOD,_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, RGB_HUI, RGB_SAI, RGB_VAI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, RGB_HUD, RGB_SAD, RGB_VAD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______
|
||||
)
|
||||
};
|
3
keyboards/buildakb/potato65/keymaps/default/readme.md
Normal file
3
keyboards/buildakb/potato65/keymaps/default/readme.md
Normal file
@@ -0,0 +1,3 @@
|
||||
# Default Potato65 Layout
|
||||
|
||||
This is the default layout for the Potato65. Largely based on the Tada68 layout.
|
54
keyboards/buildakb/potato65/keymaps/via/keymap.c
Normal file
54
keyboards/buildakb/potato65/keymaps/via/keymap.c
Normal file
@@ -0,0 +1,54 @@
|
||||
/* Copyright 2021 Maelkk
|
||||
*
|
||||
* 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 layer_names {
|
||||
_BASE,
|
||||
_FN1,
|
||||
_FN2,
|
||||
_FN3
|
||||
};
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
[_BASE] = LAYOUT_65_ansi_split_bs(
|
||||
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_GRV, KC_BSPC, KC_HOME,
|
||||
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_END,
|
||||
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGUP,
|
||||
KC_LSFT, 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_PGDN,
|
||||
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(_FN1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
|
||||
),
|
||||
[_FN1] = LAYOUT_65_ansi_split_bs(
|
||||
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, _______, _______, _______,
|
||||
_______, RGB_TOG, RGB_MOD, RGB_RMOD,_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, RGB_HUI, RGB_SAI, RGB_VAI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, RGB_HUD, RGB_SAD, RGB_VAD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______
|
||||
),
|
||||
[_FN2] = LAYOUT_65_ansi_split_bs(
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______
|
||||
),
|
||||
[_FN3] = LAYOUT_65_ansi_split_bs(
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______
|
||||
)
|
||||
};
|
3
keyboards/buildakb/potato65/keymaps/via/readme.md
Normal file
3
keyboards/buildakb/potato65/keymaps/via/readme.md
Normal file
@@ -0,0 +1,3 @@
|
||||
# VIA Potato65 Layout
|
||||
|
||||
This is the VIA layout for the Potato65. Largely based on the Tada68 layout.
|
1
keyboards/buildakb/potato65/keymaps/via/rules.mk
Normal file
1
keyboards/buildakb/potato65/keymaps/via/rules.mk
Normal file
@@ -0,0 +1 @@
|
||||
VIA_ENABLE = yes
|
17
keyboards/buildakb/potato65/potato65.c
Normal file
17
keyboards/buildakb/potato65/potato65.c
Normal file
@@ -0,0 +1,17 @@
|
||||
/* Copyright 2021 Maelkk
|
||||
*
|
||||
* 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 "potato65.h"
|
75
keyboards/buildakb/potato65/potato65.h
Normal file
75
keyboards/buildakb/potato65/potato65.h
Normal file
@@ -0,0 +1,75 @@
|
||||
/* Copyright 2021 Maelkk
|
||||
*
|
||||
* 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 LAYOUT_65_ansi_split_bs( \
|
||||
k000, k001, k002, k003, k004, k005, k006, k007, k008, k009, k010, k011, k012, k013, k014, k015, \
|
||||
k100, k101, k102, k103, k104, k105, k106, k107, k108, k109, k110, k111, k112, k113, k115, \
|
||||
k200, k201, k202, k203, k204, k205, k206, k207, k208, k209, k210, k211, k213, k215, \
|
||||
k300, k302, k303, k304, k305, k306, k307, k308, k309, k310, k311, k312, k313, k315, \
|
||||
k400, k401, k402, k406, k409, k410, k411, k412, k413, k415 \
|
||||
) { \
|
||||
{ k000, k001, k002, k003, k004, k005, k006, k007, k008, k009, k010, k011, k012, k013, k014, k015 }, \
|
||||
{ k100, k101, k102, k103, k104, k105, k106, k107, k108, k109, k110, k111, k112, k113, KC_NO, k115 }, \
|
||||
{ k200, k201, k202, k203, k204, k205, k206, k207, k208, k209, k210, k211, KC_NO, k213, KC_NO, k215 }, \
|
||||
{ k300, KC_NO, k302, k303, k304, k305, k306, k307, k308, k309, k310, k311, k312, k313, KC_NO, k315 }, \
|
||||
{ k400, k401, k402, KC_NO, KC_NO, KC_NO, k406, KC_NO, KC_NO, k409, k410, k411, k412, k413, KC_NO, k415 } \
|
||||
}
|
||||
|
||||
#define LAYOUT_65_ansi( \
|
||||
k000, k001, k002, k003, k004, k005, k006, k007, k008, k009, k010, k011, k012, k014, k015, \
|
||||
k100, k101, k102, k103, k104, k105, k106, k107, k108, k109, k110, k111, k112, k113, k115, \
|
||||
k200, k201, k202, k203, k204, k205, k206, k207, k208, k209, k210, k211, k213, k215, \
|
||||
k300, k302, k303, k304, k305, k306, k307, k308, k309, k310, k311, k312, k313, k315, \
|
||||
k400, k401, k402, k406, k409, k410, k411, k412, k413, k415 \
|
||||
) { \
|
||||
{ k000, k001, k002, k003, k004, k005, k006, k007, k008, k009, k010, k011, k012, KC_NO, k014, k015 }, \
|
||||
{ k100, k101, k102, k103, k104, k105, k106, k107, k108, k109, k110, k111, k112, k113, KC_NO, k115 }, \
|
||||
{ k200, k201, k202, k203, k204, k205, k206, k207, k208, k209, k210, k211, KC_NO, k213, KC_NO, k215 }, \
|
||||
{ k300, KC_NO, k302, k303, k304, k305, k306, k307, k308, k309, k310, k311, k312, k313, KC_NO, k315 }, \
|
||||
{ k400, k401, k402, KC_NO, KC_NO, KC_NO, k406, KC_NO, KC_NO, k409, k410, k411, k412, k413, KC_NO, k415 } \
|
||||
}
|
||||
|
||||
#define LAYOUT_65_ansi_split_bs_2_right_mods( \
|
||||
k000, k001, k002, k003, k004, k005, k006, k007, k008, k009, k010, k011, k012, k013, k014, k015, \
|
||||
k100, k101, k102, k103, k104, k105, k106, k107, k108, k109, k110, k111, k112, k113, k115, \
|
||||
k200, k201, k202, k203, k204, k205, k206, k207, k208, k209, k210, k211, k213, k215, \
|
||||
k300, k302, k303, k304, k305, k306, k307, k308, k309, k310, k311, k312, k313, k315, \
|
||||
k400, k401, k402, k406, k409, k411, k412, k413, k415 \
|
||||
) { \
|
||||
{ k000, k001, k002, k003, k004, k005, k006, k007, k008, k009, k010, k011, k012, k013, k014, k015 }, \
|
||||
{ k100, k101, k102, k103, k104, k105, k106, k107, k108, k109, k110, k111, k112, k113, KC_NO, k115 }, \
|
||||
{ k200, k201, k202, k203, k204, k205, k206, k207, k208, k209, k210, k211, KC_NO, k213, KC_NO, k215 }, \
|
||||
{ k300, KC_NO, k302, k303, k304, k305, k306, k307, k308, k309, k310, k311, k312, k313, KC_NO, k315 }, \
|
||||
{ k400, k401, k402, KC_NO, KC_NO, KC_NO, k406, KC_NO, KC_NO, k409, KC_NO, k411, k412, k413, KC_NO, k415 } \
|
||||
}
|
||||
|
||||
#define LAYOUT_65_ansi_2_right_mods( \
|
||||
k000, k001, k002, k003, k004, k005, k006, k007, k008, k009, k010, k011, k012, k014, k015, \
|
||||
k100, k101, k102, k103, k104, k105, k106, k107, k108, k109, k110, k111, k112, k113, k115, \
|
||||
k200, k201, k202, k203, k204, k205, k206, k207, k208, k209, k210, k211, k213, k215, \
|
||||
k300, k302, k303, k304, k305, k306, k307, k308, k309, k310, k311, k312, k313, k315, \
|
||||
k400, k401, k402, k406, k409, k411, k412, k413, k415 \
|
||||
) { \
|
||||
{ k000, k001, k002, k003, k004, k005, k006, k007, k008, k009, k010, k011, k012, KC_NO, k014, k015 }, \
|
||||
{ k100, k101, k102, k103, k104, k105, k106, k107, k108, k109, k110, k111, k112, k113, KC_NO, k115 }, \
|
||||
{ k200, k201, k202, k203, k204, k205, k206, k207, k208, k209, k210, k211, KC_NO, k213, KC_NO, k215 }, \
|
||||
{ k300, KC_NO, k302, k303, k304, k305, k306, k307, k308, k309, k310, k311, k312, k313, KC_NO, k315 }, \
|
||||
{ k400, k401, k402, KC_NO, KC_NO, KC_NO, k406, KC_NO, KC_NO, k409, KC_NO, k411, k412, k413, KC_NO, k415 } \
|
||||
}
|
19
keyboards/buildakb/potato65/readme.md
Normal file
19
keyboards/buildakb/potato65/readme.md
Normal file
@@ -0,0 +1,19 @@
|
||||
# Potato65
|
||||
|
||||

|
||||
|
||||
A simple 65% pcb with underglow. Compatible with most TADA68 cases.
|
||||
|
||||
- Keyboard Maintainer: [Maelkk](https://github.com/Aeonstrife)
|
||||
- Hardware Supported: Potato65 PCBs
|
||||
- Hardware Availability: Private Group-Buy
|
||||
|
||||
Make example for this keyboard (after setting up your build environment):
|
||||
|
||||
make buildakb/potato65:default
|
||||
|
||||
Flashing example for this keyboard:
|
||||
|
||||
make buildakb/potato65: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).
|
24
keyboards/buildakb/potato65/rules.mk
Normal file
24
keyboards/buildakb/potato65/rules.mk
Normal file
@@ -0,0 +1,24 @@
|
||||
# MCU name
|
||||
MCU = atmega32u4
|
||||
|
||||
# Bootloader selection
|
||||
BOOTLOADER = atmel-dfu
|
||||
|
||||
# Build Options
|
||||
# change yes to no to disable
|
||||
#
|
||||
BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration
|
||||
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
|
||||
BLUETOOTH_ENABLE = no # Enable Bluetooth
|
||||
AUDIO_ENABLE = no # Audio output
|
||||
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
|
||||
|
||||
LAYOUTS = 65_ansi
|
@@ -80,6 +80,21 @@ void backlight_init_ports(void) {
|
||||
}
|
||||
}
|
||||
|
||||
void suspend_power_down_user(void) {
|
||||
backlight_set(0);
|
||||
}
|
||||
void suspend_wakeup_init_user(void) {
|
||||
if(kb_backlight_config.enable){
|
||||
if(kb_backlight_config.breathing){
|
||||
breathing_enable();
|
||||
} else{
|
||||
backlight_set(kb_backlight_config.level);
|
||||
}
|
||||
} else {
|
||||
backlight_set(0);
|
||||
}
|
||||
}
|
||||
|
||||
void backlight_set(uint8_t level) {
|
||||
uint32_t duty = (uint32_t)(cie_lightness(0xFFFF * (uint32_t) level / BACKLIGHT_LEVELS));
|
||||
if (level == 0) {
|
||||
|
@@ -15,7 +15,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
|
||||
EXTRAKEY_ENABLE = yes # Audio control and System control
|
||||
CONSOLE_ENABLE = yes # Console for debug
|
||||
COMMAND_ENABLE = yes # Commands for debug and configuration
|
||||
SLEEP_LED_ENABLE = yes # Breathing sleep LED during USB suspend
|
||||
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
|
||||
NKRO_ENABLE = yes # USB Nkey Rollover
|
||||
CUSTOM_MATRIX = no # Custom matrix file
|
||||
ENCODER_ENABLE = yes
|
||||
|
@@ -18,6 +18,13 @@
|
||||
|
||||
#include "config_common.h"
|
||||
|
||||
/* USB device descriptors */
|
||||
#define VENDOR_ID 0x444D
|
||||
#define PRODUCT_ID 0x3632
|
||||
#define DEVICE_VER 0x0001
|
||||
#define PRODUCT Concertina
|
||||
#define MANUFACTURER Viktor Eikman
|
||||
|
||||
#define MATRIX_ROWS 8
|
||||
#define MATRIX_COLS 8
|
||||
|
||||
|
@@ -1,5 +1,8 @@
|
||||
The `64key` layout
|
||||
==================
|
||||
# Concertina 64-key
|
||||
|
||||

|
||||
|
||||
A diploid, concave, columnar keyboard.
|
||||
|
||||
This folder represents the keyboard configuration identified as
|
||||
`concertina_64key` in the DMOTE application’s list of GNU make targets, as of
|
||||
@@ -13,3 +16,17 @@ not run Colemak.
|
||||
|
||||
A full set of printable caps to match the keymap is available in the
|
||||
`dmote-keycap` application, [here](https://github.com/veikman/dmote-keycap).
|
||||
|
||||
* Keyboard Maintainer: [Viktor Eikman](https://github.com/veikman)
|
||||
* Hardware Supported: Concertina 64-key case, Pro Micro (ATmega32U4)
|
||||
* Hardware Availability: [viktor.eikman.se](https://viktor.eikman.se/article/the-concertina/)
|
||||
|
||||
Make example for this keyboard (after setting up your build environment):
|
||||
|
||||
make handwired/concertina/64key:default
|
||||
|
||||
Flashing example for this keyboard:
|
||||
|
||||
make handwired/concertina/64key: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).
|
||||
|
25
keyboards/handwired/concertina/64key/rules.mk
Normal file
25
keyboards/handwired/concertina/64key/rules.mk
Normal file
@@ -0,0 +1,25 @@
|
||||
# Written for a Pro Micro. The keyboard case is compatible with much else.
|
||||
# MCU name
|
||||
MCU = atmega32u4
|
||||
|
||||
# Bootloader selection
|
||||
BOOTLOADER = caterina
|
||||
|
||||
# Build Options
|
||||
# change yes to no to disable
|
||||
#
|
||||
BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration
|
||||
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
|
||||
BLUETOOTH_ENABLE = no # Enable Bluetooth
|
||||
AUDIO_ENABLE = no # Audio output
|
||||
|
||||
TAP_DANCE_ENABLE = yes
|
@@ -1,9 +0,0 @@
|
||||
# Written for a Pro Micro. The keyboard case is compatible with much else.
|
||||
MCU = atmega32u4
|
||||
BOOTLOADER = caterina
|
||||
|
||||
# Build options:
|
||||
MOUSEKEY_ENABLE = yes
|
||||
EXTRAKEY_ENABLE = yes
|
||||
TAP_DANCE_ENABLE = yes
|
||||
RGBLIGHT_ENABLE = no
|
@@ -13,4 +13,4 @@
|
||||
* 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 "consolekeyboard.h"
|
||||
#include "18key.h"
|
26
keyboards/handwired/consolekeyboard/18key/18key.h
Normal file
26
keyboards/handwired/consolekeyboard/18key/18key.h
Normal file
@@ -0,0 +1,26 @@
|
||||
/* Copyright 2021 Gareth Edwards
|
||||
*
|
||||
* 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 LAYOUT( \
|
||||
K000, K001, K002, K004, K005, K006, K008, K009, K010, \
|
||||
K100, K101, K102, K104, K105, K106, K108, K109, K110 \
|
||||
) { \
|
||||
{ K000, K001, K002, KC_NO, K004, K005, K006, KC_NO, K008, K009, K010 }, \
|
||||
{ K100, K101, K102, KC_NO, K104, K105, K106, KC_NO, K108, K109, K110 }, \
|
||||
}
|
67
keyboards/handwired/consolekeyboard/18key/config.h
Normal file
67
keyboards/handwired/consolekeyboard/18key/config.h
Normal file
@@ -0,0 +1,67 @@
|
||||
/* Copyright 2021 Gareth Edwards
|
||||
*
|
||||
* 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 0x6761
|
||||
#define PRODUCT_ID 0x3332
|
||||
#define DEVICE_VER 0x0001
|
||||
#define MANUFACTURER Stream Cheap
|
||||
#define PRODUCT Console Keyboard 18
|
||||
/* key matrix size */
|
||||
#define MATRIX_ROWS 2
|
||||
#define MATRIX_COLS 11
|
||||
|
||||
/*
|
||||
* 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)
|
||||
*
|
||||
*/
|
||||
#define MATRIX_ROW_PINS { D1, D0 }
|
||||
#define MATRIX_COL_PINS { D4, C6, D7, C4, B1, B3, B2, B6, C5, E6, B4 }
|
||||
|
||||
#define DIODE_DIRECTION COL2ROW
|
||||
|
||||
#define RGB_DI_PIN F4
|
||||
#ifdef RGB_DI_PIN
|
||||
#define RGBLED_NUM 6
|
||||
#define RGBLIGHT_HUE_STEP 8
|
||||
#define RGBLIGHT_SAT_STEP 8
|
||||
#define RGBLIGHT_VAL_STEP 8
|
||||
#define RGBLIGHT_LIMIT_VAL 255 /* The maximum brightness level */
|
||||
#define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */
|
||||
/*== all animations enable ==*/
|
||||
// #define RGBLIGHT_ANIMATIONS
|
||||
// /*== or choose animations ==*/
|
||||
#define RGBLIGHT_EFFECT_BREATHING
|
||||
// #define RGBLIGHT_EFFECT_RAINBOW_MOOD
|
||||
// #define RGBLIGHT_EFFECT_RAINBOW_SWIRL
|
||||
// #define RGBLIGHT_EFFECT_SNAKE
|
||||
// #define RGBLIGHT_EFFECT_KNIGHT
|
||||
// #define RGBLIGHT_EFFECT_CHRISTMAS
|
||||
// #define RGBLIGHT_EFFECT_STATIC_GRADIENT
|
||||
// #define RGBLIGHT_EFFECT_RGB_TEST
|
||||
// #define RGBLIGHT_EFFECT_ALTERNATING
|
||||
#endif
|
||||
|
33
keyboards/handwired/consolekeyboard/18key/info.json
Normal file
33
keyboards/handwired/consolekeyboard/18key/info.json
Normal file
@@ -0,0 +1,33 @@
|
||||
{
|
||||
"keyboard_name": "Console Keyboard",
|
||||
"url": "https://www.thingiverse.com/thing:3167050",
|
||||
"maintainer": "Gareth Edwards",
|
||||
"width": 11,
|
||||
"height": 2,
|
||||
"layouts": {
|
||||
"LAYOUT": {
|
||||
"layout": [
|
||||
{"label":"K00 (D1,D4)", "x":0, "y":0},
|
||||
{"label":"K01 (D1,C6)", "x":1, "y":0},
|
||||
{"label":"K02 (D1,D7)", "x":2, "y":0},
|
||||
{"label":"K04 (D1,B3)", "x":4, "y":0},
|
||||
{"label":"K05 (D1,B2)", "x":5, "y":0},
|
||||
{"label":"K06 (D1,B6)", "x":6, "y":0},
|
||||
{"label":"K08 (D1,E6)", "x":8, "y":0},
|
||||
{"label":"K09 (D1,C4)", "x":9, "y":0},
|
||||
{"label":"K0A (D1,C5)", "x":10, "y":0},
|
||||
{"label":"K10 (D0,D4)", "x":0, "y":1},
|
||||
{"label":"K11 (D0,C6)", "x":1, "y":1},
|
||||
{"label":"K12 (D0,D7)", "x":2, "y":1},
|
||||
{"label":"K14 (D0,B3)", "x":4, "y":1},
|
||||
{"label":"K15 (D0,B2)", "x":5, "y":1},
|
||||
{"label":"K16 (D0,B6)", "x":6, "y":1},
|
||||
{"label":"K18 (D0,E6)", "x":8, "y":1},
|
||||
{"label":"K19 (D0,C4)", "x":9, "y":1},
|
||||
{"label":"K1A (D0,C5)", "x":10, "y":1}
|
||||
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
}
|
@@ -0,0 +1,25 @@
|
||||
/* Copyright 2021 Gareth Edwards
|
||||
*
|
||||
* 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
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
[0] = LAYOUT(
|
||||
KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_8, KC_9, KC_0,
|
||||
KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_I, KC_O, KC_P
|
||||
),
|
||||
|
||||
};
|
@@ -0,0 +1,35 @@
|
||||
/* Copyright 2021 Gareth Edwards
|
||||
*
|
||||
* 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
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
[0] = LAYOUT(
|
||||
KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_8, KC_9, KC_0,
|
||||
KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_I, KC_O, KC_P
|
||||
),
|
||||
[1] = 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
|
||||
),
|
||||
[2] = 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
|
||||
),
|
||||
[3] = 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
|
||||
),
|
||||
};
|
@@ -0,0 +1 @@
|
||||
VIA_ENABLE = yes
|
17
keyboards/handwired/consolekeyboard/18key/readme.md
Normal file
17
keyboards/handwired/consolekeyboard/18key/readme.md
Normal file
@@ -0,0 +1,17 @@
|
||||
# Console Keyboard
|
||||
|
||||
[Console Keyboard](https://i.imgur.com/5aLT7CLl.jpeg)
|
||||
|
||||
A 3d printed macro pad based on the Stream Cheap with 18 keys
|
||||
|
||||
* Keyboard Maintainer: [Gareth Edwards](https://github.com/gazeddy)
|
||||
* Hardware Supported: Arduino Pro Micro
|
||||
* Hardware Availability:https://www.thingiverse.com/thing:3167050
|
||||
|
||||
Make example for this keyboard (after setting up your build environment):
|
||||
|
||||
make handwired/consolekeyboard/18key: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).
|
16
keyboards/handwired/consolekeyboard/20key/20key.c
Normal file
16
keyboards/handwired/consolekeyboard/20key/20key.c
Normal file
@@ -0,0 +1,16 @@
|
||||
/* Copyright 2021 Gareth Edwards
|
||||
*
|
||||
* 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 "20key.h"
|
@@ -23,7 +23,7 @@
|
||||
#define PRODUCT_ID 0x3432
|
||||
#define DEVICE_VER 0x0001
|
||||
#define MANUFACTURER Stream Cheap
|
||||
#define PRODUCT Console Keyboard
|
||||
#define PRODUCT Console Keyboard 20
|
||||
/* key matrix size */
|
||||
#define MATRIX_ROWS 2
|
||||
#define MATRIX_COLS 12
|
@@ -15,22 +15,21 @@
|
||||
*/
|
||||
|
||||
#include QMK_KEYBOARD_H
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
[0] = LAYOUT(
|
||||
KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0,
|
||||
KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P
|
||||
),
|
||||
[1] = 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, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
|
||||
),
|
||||
[2] = 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, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
|
||||
),
|
||||
[3] = 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, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
|
||||
),
|
||||
};
|
@@ -0,0 +1 @@
|
||||
VIA_ENABLE = yes
|
17
keyboards/handwired/consolekeyboard/20key/readme.md
Normal file
17
keyboards/handwired/consolekeyboard/20key/readme.md
Normal file
@@ -0,0 +1,17 @@
|
||||
# Console Keyboard
|
||||
|
||||
[Console Keyboard](https://i.imgur.com/5aLT7CLl.jpeg)
|
||||
|
||||
A 3d printed macro pad based on the Stream Cheap with 20 keys
|
||||
|
||||
* Keyboard Maintainer: [Gareth Edwards](https://github.com/gazeddy)
|
||||
* Hardware Supported: Arduino Pro Micro
|
||||
* Hardware Availability:https://www.thingiverse.com/thing:3167050
|
||||
|
||||
Make example for this keyboard (after setting up your build environment):
|
||||
|
||||
make handwired/consolekeyboard/20key: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).
|
23
keyboards/handwired/consolekeyboard/20key/rules.mk
Normal file
23
keyboards/handwired/consolekeyboard/20key/rules.mk
Normal file
@@ -0,0 +1,23 @@
|
||||
# MCU name
|
||||
MCU = atmega32u4
|
||||
|
||||
# Bootloader selection
|
||||
BOOTLOADER = caterina
|
||||
|
||||
# Build Options
|
||||
# change yes to no to disable
|
||||
#
|
||||
BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration
|
||||
MOUSEKEY_ENABLE = no # Mouse keys
|
||||
EXTRAKEY_ENABLE = yes # Audio control and System control
|
||||
CONSOLE_ENABLE = no # Console for debug
|
||||
COMMAND_ENABLE = yes # 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
|
||||
BLUETOOTH_ENABLE = no # Enable Bluetooth
|
||||
AUDIO_ENABLE = no # Audio output
|
||||
LTO_ENABLE = yes # Link time optimize
|
16
keyboards/handwired/consolekeyboard/27key/27key.c
Normal file
16
keyboards/handwired/consolekeyboard/27key/27key.c
Normal file
@@ -0,0 +1,16 @@
|
||||
/* Copyright 2021 Gareth Edwards
|
||||
*
|
||||
* 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 "27key.h"
|
28
keyboards/handwired/consolekeyboard/27key/27key.h
Normal file
28
keyboards/handwired/consolekeyboard/27key/27key.h
Normal file
@@ -0,0 +1,28 @@
|
||||
/* Copyright 2021 Gareth Edwards
|
||||
*
|
||||
* 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 LAYOUT( \
|
||||
K000, K001, K002, K004, K005, K006, K008, K009, K010, \
|
||||
K100, K101, K102, K104, K105, K106, K108, K109, K110, \
|
||||
K200, K201, K202, K204, K205, K206, K208, K209, K210 \
|
||||
) { \
|
||||
{ K000, K001, K002, KC_NO, K004, K005, K006, KC_NO, K008, K009, K010 }, \
|
||||
{ K100, K101, K102, KC_NO, K104, K105, K106, KC_NO, K108, K109, K110 }, \
|
||||
{ K200, K201, K202, KC_NO, K204, K205, K206, KC_NO, K208, K209, K210 }, \
|
||||
}
|
67
keyboards/handwired/consolekeyboard/27key/config.h
Normal file
67
keyboards/handwired/consolekeyboard/27key/config.h
Normal file
@@ -0,0 +1,67 @@
|
||||
/* Copyright 2021 Gareth Edwards
|
||||
*
|
||||
* 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 0x6761
|
||||
#define PRODUCT_ID 0x3433
|
||||
#define DEVICE_VER 0x0001
|
||||
#define MANUFACTURER Stream Cheap
|
||||
#define PRODUCT Console Keyboard 30
|
||||
/* key matrix size */
|
||||
#define MATRIX_ROWS 3
|
||||
#define MATRIX_COLS 11
|
||||
|
||||
/*
|
||||
* 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)
|
||||
*
|
||||
*/
|
||||
#define MATRIX_ROW_PINS { D1, D0, F7}
|
||||
#define MATRIX_COL_PINS { D4, C6, D7, C4, B1, B3, B2, B6, C5, E6, B4 }
|
||||
|
||||
#define DIODE_DIRECTION COL2ROW
|
||||
|
||||
#define RGB_DI_PIN F4
|
||||
#ifdef RGB_DI_PIN
|
||||
#define RGBLED_NUM 6
|
||||
#define RGBLIGHT_HUE_STEP 8
|
||||
#define RGBLIGHT_SAT_STEP 8
|
||||
#define RGBLIGHT_VAL_STEP 8
|
||||
#define RGBLIGHT_LIMIT_VAL 255 /* The maximum brightness level */
|
||||
#define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */
|
||||
/*== all animations enable ==*/
|
||||
// #define RGBLIGHT_ANIMATIONS
|
||||
// /*== or choose animations ==*/
|
||||
#define RGBLIGHT_EFFECT_BREATHING
|
||||
// #define RGBLIGHT_EFFECT_RAINBOW_MOOD
|
||||
// #define RGBLIGHT_EFFECT_RAINBOW_SWIRL
|
||||
// #define RGBLIGHT_EFFECT_SNAKE
|
||||
// #define RGBLIGHT_EFFECT_KNIGHT
|
||||
// #define RGBLIGHT_EFFECT_CHRISTMAS
|
||||
// #define RGBLIGHT_EFFECT_STATIC_GRADIENT
|
||||
// #define RGBLIGHT_EFFECT_RGB_TEST
|
||||
// #define RGBLIGHT_EFFECT_ALTERNATING
|
||||
#endif
|
||||
|
42
keyboards/handwired/consolekeyboard/27key/info.json
Normal file
42
keyboards/handwired/consolekeyboard/27key/info.json
Normal file
@@ -0,0 +1,42 @@
|
||||
{
|
||||
"keyboard_name": "Console Keyboard",
|
||||
"url": "https://www.thingiverse.com/thing:3167050",
|
||||
"maintainer": "Gareth Edwards",
|
||||
"width": 11,
|
||||
"height": 3,
|
||||
"layouts": {
|
||||
"LAYOUT": {
|
||||
"layout": [
|
||||
{"label":"K00 (D1,D4)", "x":0, "y":0},
|
||||
{"label":"K01 (D1,C6)", "x":1, "y":0},
|
||||
{"label":"K02 (D1,D7)", "x":2, "y":0},
|
||||
{"label":"K04 (D1,B3)", "x":4, "y":0},
|
||||
{"label":"K05 (D1,B2)", "x":5, "y":0},
|
||||
{"label":"K06 (D1,B6)", "x":6, "y":0},
|
||||
{"label":"K08 (D1,E6)", "x":8, "y":0},
|
||||
{"label":"K09 (D1,C4)", "x":9, "y":0},
|
||||
{"label":"K0A (D1,C5)", "x":10, "y":0},
|
||||
{"label":"K10 (D0,D4)", "x":0, "y":1},
|
||||
{"label":"K11 (D0,C6)", "x":1, "y":1},
|
||||
{"label":"K12 (D0,D7)", "x":2, "y":1},
|
||||
{"label":"K14 (D0,B3)", "x":4, "y":1},
|
||||
{"label":"K15 (D0,B2)", "x":5, "y":1},
|
||||
{"label":"K16 (D0,B6)", "x":6, "y":1},
|
||||
{"label":"K18 (D0,E6)", "x":8, "y":1},
|
||||
{"label":"K19 (D0,C4)", "x":9, "y":1},
|
||||
{"label":"K1A (D0,C5)", "x":10, "y":1},
|
||||
{"label":"K20 (F7,D4)", "x":0, "y":2},
|
||||
{"label":"K21 (F7,C6)", "x":1, "y":2},
|
||||
{"label":"K22 (F7,D7)", "x":2, "y":2},
|
||||
{"label":"K24 (F7,B3)", "x":4, "y":2},
|
||||
{"label":"K25 (F7,B2)", "x":5, "y":2},
|
||||
{"label":"K26 (F7,B6)", "x":6, "y":2},
|
||||
{"label":"K27 (F7,E6)", "x":8, "y":2},
|
||||
{"label":"K29 (F7,C4)", "x":9, "y":2},
|
||||
{"label":"K2A (F7,C5)", "x":10, "y":2}
|
||||
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
}
|
@@ -0,0 +1,26 @@
|
||||
/* Copyright 2021 Gareth Edwards
|
||||
*
|
||||
* 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
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
[0] = LAYOUT(
|
||||
KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_8, KC_9, KC_0,
|
||||
KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_I, KC_O, KC_P,
|
||||
KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_K, KC_L, KC_Z
|
||||
),
|
||||
|
||||
};
|
@@ -0,0 +1,40 @@
|
||||
/* Copyright 2021 Gareth Edwards
|
||||
*
|
||||
* 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
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
[0] = LAYOUT(
|
||||
KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_8, KC_9, KC_0,
|
||||
KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_I, KC_O, KC_P,
|
||||
KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_K, KC_L, KC_Z
|
||||
),
|
||||
[1] = 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, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
|
||||
),
|
||||
[2] = 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, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
|
||||
),
|
||||
[3] = 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, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
|
||||
),
|
||||
};
|
@@ -0,0 +1 @@
|
||||
VIA_ENABLE = yes
|
16
keyboards/handwired/consolekeyboard/27key/readme.md
Normal file
16
keyboards/handwired/consolekeyboard/27key/readme.md
Normal file
@@ -0,0 +1,16 @@
|
||||
# Console Keyboard
|
||||
|
||||
[Console Keyboard](https://i.imgur.com/5aLT7CLl.jpeg)
|
||||
|
||||
A 3d printed macro pad based on the Stream Cheap with 27keys
|
||||
|
||||
* Keyboard Maintainer: [Gareth Edwards](https://github.com/gazeddy)
|
||||
* Hardware Supported: Arduino Pro Micro
|
||||
* Hardware Availability:https://www.thingiverse.com/thing:3167050
|
||||
|
||||
Make example for this keyboard (after setting up your build environment):
|
||||
|
||||
make handwired/consolekeyboard/27key: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).
|
23
keyboards/handwired/consolekeyboard/27key/rules.mk
Normal file
23
keyboards/handwired/consolekeyboard/27key/rules.mk
Normal file
@@ -0,0 +1,23 @@
|
||||
# MCU name
|
||||
MCU = atmega32u4
|
||||
|
||||
# Bootloader selection
|
||||
BOOTLOADER = caterina
|
||||
|
||||
# Build Options
|
||||
# change yes to no to disable
|
||||
#
|
||||
BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration
|
||||
MOUSEKEY_ENABLE = no # Mouse keys
|
||||
EXTRAKEY_ENABLE = yes # Audio control and System control
|
||||
CONSOLE_ENABLE = no # Console for debug
|
||||
COMMAND_ENABLE = yes # 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
|
||||
BLUETOOTH_ENABLE = no # Enable Bluetooth
|
||||
AUDIO_ENABLE = no # Audio output
|
||||
LTO_ENABLE = yes # Link time optimize
|
16
keyboards/handwired/consolekeyboard/30key/30key.c
Normal file
16
keyboards/handwired/consolekeyboard/30key/30key.c
Normal file
@@ -0,0 +1,16 @@
|
||||
/* Copyright 2021 Gareth Edwards
|
||||
*
|
||||
* 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 "30key.h"
|
28
keyboards/handwired/consolekeyboard/30key/30key.h
Normal file
28
keyboards/handwired/consolekeyboard/30key/30key.h
Normal file
@@ -0,0 +1,28 @@
|
||||
/* Copyright 2021 Gareth Edwards
|
||||
*
|
||||
* 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 LAYOUT( \
|
||||
K000, K001, K002, K004, K005, K006, K007, K009, K010, K011, \
|
||||
K100, K101, K102, K104, K105, K106, K107, K109, K110, K111, \
|
||||
K200, K201, K202, K204, K205, K206, K207, K209, K210, K211 \
|
||||
) { \
|
||||
{ K000, K001, K002, KC_NO, K004, K005, K006, K007, KC_NO, K009, K010, K011 }, \
|
||||
{ K100, K101, K102, KC_NO, K104, K105, K106, K107, KC_NO, K109, K110, K111 }, \
|
||||
{ K200, K201, K202, KC_NO, K204, K205, K206, K207, KC_NO, K209, K210, K211 }, \
|
||||
}
|
67
keyboards/handwired/consolekeyboard/30key/config.h
Normal file
67
keyboards/handwired/consolekeyboard/30key/config.h
Normal file
@@ -0,0 +1,67 @@
|
||||
/* Copyright 2021 Gareth Edwards
|
||||
*
|
||||
* 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 0x6761
|
||||
#define PRODUCT_ID 0x3433
|
||||
#define DEVICE_VER 0x0001
|
||||
#define MANUFACTURER Stream Cheap
|
||||
#define PRODUCT Console Keyboard 30
|
||||
/* key matrix size */
|
||||
#define MATRIX_ROWS 3
|
||||
#define MATRIX_COLS 12
|
||||
|
||||
/*
|
||||
* 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)
|
||||
*
|
||||
*/
|
||||
#define MATRIX_ROW_PINS { D1, D0, F7}
|
||||
#define MATRIX_COL_PINS { D4, C6, D7, C4, B1, B3, B2, B6, C5, E6, B4, B5 }
|
||||
|
||||
#define DIODE_DIRECTION COL2ROW
|
||||
|
||||
#define RGB_DI_PIN F4
|
||||
#ifdef RGB_DI_PIN
|
||||
#define RGBLED_NUM 6
|
||||
#define RGBLIGHT_HUE_STEP 8
|
||||
#define RGBLIGHT_SAT_STEP 8
|
||||
#define RGBLIGHT_VAL_STEP 8
|
||||
#define RGBLIGHT_LIMIT_VAL 255 /* The maximum brightness level */
|
||||
#define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */
|
||||
/*== all animations enable ==*/
|
||||
// #define RGBLIGHT_ANIMATIONS
|
||||
// /*== or choose animations ==*/
|
||||
#define RGBLIGHT_EFFECT_BREATHING
|
||||
// #define RGBLIGHT_EFFECT_RAINBOW_MOOD
|
||||
// #define RGBLIGHT_EFFECT_RAINBOW_SWIRL
|
||||
// #define RGBLIGHT_EFFECT_SNAKE
|
||||
// #define RGBLIGHT_EFFECT_KNIGHT
|
||||
// #define RGBLIGHT_EFFECT_CHRISTMAS
|
||||
// #define RGBLIGHT_EFFECT_STATIC_GRADIENT
|
||||
// #define RGBLIGHT_EFFECT_RGB_TEST
|
||||
// #define RGBLIGHT_EFFECT_ALTERNATING
|
||||
#endif
|
||||
|
44
keyboards/handwired/consolekeyboard/30key/info.json
Normal file
44
keyboards/handwired/consolekeyboard/30key/info.json
Normal file
@@ -0,0 +1,44 @@
|
||||
{
|
||||
"keyboard_name": "Console Keyboard",
|
||||
"url": "https://www.thingiverse.com/thing:3167050",
|
||||
"maintainer": "Gareth Edwards",
|
||||
"width": 12,
|
||||
"height": 3,
|
||||
"layouts": {
|
||||
"LAYOUT": {
|
||||
"layout": [
|
||||
{"label":"K00 (D1,D4)", "x":0, "y":0},
|
||||
{"label":"K01 (D1,C6)", "x":1, "y":0},
|
||||
{"label":"K02 (D1,D7)", "x":2, "y":0},
|
||||
{"label":"K04 (D1,B3)", "x":4, "y":0},
|
||||
{"label":"K05 (D1,B2)", "x":5, "y":0},
|
||||
{"label":"K06 (D1,B6)", "x":6, "y":0},
|
||||
{"label":"K07 (D1,E6)", "x":7, "y":0},
|
||||
{"label":"K09 (D1,B5)", "x":9, "y":0},
|
||||
{"label":"K0A (D1,C4)", "x":10, "y":0},
|
||||
{"label":"K0B (D1,C5)", "x":11, "y":0},
|
||||
{"label":"K10 (D0,D4)", "x":0, "y":1},
|
||||
{"label":"K11 (D0,C6)", "x":1, "y":1},
|
||||
{"label":"K12 (D0,D7)", "x":2, "y":1},
|
||||
{"label":"K14 (D0,B3)", "x":4, "y":1},
|
||||
{"label":"K15 (D0,B2)", "x":5, "y":1},
|
||||
{"label":"K16 (D0,B6)", "x":6, "y":1},
|
||||
{"label":"K17 (D0,E6)", "x":7, "y":1},
|
||||
{"label":"K19 (D0,B5)", "x":9, "y":1},
|
||||
{"label":"K1A (D0,C4)", "x":10, "y":1},
|
||||
{"label":"K1B (D0,C5)", "x":11, "y":1},
|
||||
{"label":"K20 (F7,D4)", "x":0, "y":2},
|
||||
{"label":"K21 (F7,C6)", "x":1, "y":2},
|
||||
{"label":"K22 (F7,D7)", "x":2, "y":2},
|
||||
{"label":"K24 (F7,B3)", "x":4, "y":2},
|
||||
{"label":"K25 (F7,B2)", "x":5, "y":2},
|
||||
{"label":"K26 (F7,B6)", "x":6, "y":2},
|
||||
{"label":"K27 (F7,E6)", "x":7, "y":2},
|
||||
{"label":"K29 (F7,B5)", "x":9, "y":2},
|
||||
{"label":"K2A (F7,C4)", "x":10, "y":2},
|
||||
{"label":"K2B (F7,C5)", "x":11, "y":2}
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
}
|
@@ -0,0 +1,26 @@
|
||||
/* Copyright 2021 Gareth Edwards
|
||||
*
|
||||
* 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
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
[0] = LAYOUT(
|
||||
KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0,
|
||||
KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P,
|
||||
KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_Q
|
||||
),
|
||||
|
||||
};
|
@@ -0,0 +1,40 @@
|
||||
/* Copyright 2021 Gareth Edwards
|
||||
*
|
||||
* 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
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
[0] = LAYOUT(
|
||||
KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0,
|
||||
KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P,
|
||||
KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_Z
|
||||
),
|
||||
[1] = 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, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
|
||||
),
|
||||
[2] = 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, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
|
||||
),
|
||||
[3] = 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, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
|
||||
),
|
||||
};
|
@@ -0,0 +1 @@
|
||||
VIA_ENABLE = yes
|
16
keyboards/handwired/consolekeyboard/30key/readme.md
Normal file
16
keyboards/handwired/consolekeyboard/30key/readme.md
Normal file
@@ -0,0 +1,16 @@
|
||||
# Console Keyboard
|
||||
|
||||
[Console Keyboard](https://i.imgur.com/5aLT7CLl.jpeg)
|
||||
|
||||
A 3d printed macro pad based on the Stream Cheap with 30 keys
|
||||
|
||||
* Keyboard Maintainer: [Gareth Edwards](https://github.com/gazeddy)
|
||||
* Hardware Supported: Arduino Pro Micro
|
||||
* Hardware Availability:https://www.thingiverse.com/thing:3167050
|
||||
|
||||
Make example for this keyboard (after setting up your build environment):
|
||||
|
||||
make handwired/consolekeyboard/30key: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).
|
23
keyboards/handwired/consolekeyboard/30key/rules.mk
Normal file
23
keyboards/handwired/consolekeyboard/30key/rules.mk
Normal file
@@ -0,0 +1,23 @@
|
||||
# MCU name
|
||||
MCU = atmega32u4
|
||||
|
||||
# Bootloader selection
|
||||
BOOTLOADER = caterina
|
||||
|
||||
# Build Options
|
||||
# change yes to no to disable
|
||||
#
|
||||
BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration
|
||||
MOUSEKEY_ENABLE = no # Mouse keys
|
||||
EXTRAKEY_ENABLE = yes # Audio control and System control
|
||||
CONSOLE_ENABLE = no # Console for debug
|
||||
COMMAND_ENABLE = yes # 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
|
||||
BLUETOOTH_ENABLE = no # Enable Bluetooth
|
||||
AUDIO_ENABLE = no # Audio output
|
||||
LTO_ENABLE = yes # Link time optimize
|
@@ -2,7 +2,7 @@
|
||||
|
||||
[Console Keyboard](https://i.imgur.com/5aLT7CLl.jpeg)
|
||||
|
||||
A 3d printed macro pad based on the Stream Cheap
|
||||
A 3d printed macro pad based on the Stream Cheap with 18,20,27,or 30 keys
|
||||
|
||||
* Keyboard Maintainer: [Gareth Edwards](https://github.com/gazeddy)
|
||||
* Hardware Supported: Arduino Pro Micro
|
||||
@@ -10,6 +10,10 @@ A 3d printed macro pad based on the Stream Cheap
|
||||
|
||||
Make example for this keyboard (after setting up your build environment):
|
||||
|
||||
make handwired/consolekeyboard:default
|
||||
make handwired/consolekeyboard/18key:default
|
||||
make handwired/consolekeyboard/20key:default
|
||||
make handwired/consolekeyboard/27key:default
|
||||
make handwired/consolekeyboard/30key: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).
|
||||
|
60
keyboards/handwired/onekey/keymaps/quine/keymap.c
Normal file
60
keyboards/handwired/onekey/keymaps/quine/keymap.c
Normal file
@@ -0,0 +1,60 @@
|
||||
#include <handwired/onekey/onekey.h>
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { LAYOUT_ortho_1x1(KC_A) };
|
||||
const char *buf[30] = {
|
||||
"#include <handwired/onekey/onekey.h>",
|
||||
"const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { LAYOUT_ortho_1x1(KC_A) };",
|
||||
"const char *buf[30] = {",
|
||||
"",
|
||||
"};",
|
||||
"bool process_record_user(uint16_t keycode, keyrecord_t *record) {",
|
||||
" switch(keycode) {",
|
||||
" case KC_A:",
|
||||
" if (record->event.pressed) {",
|
||||
" for (int i = 0; i < 3; i++) {",
|
||||
" send_string(buf[i]);",
|
||||
" tap_code(KC_ENT);",
|
||||
" }",
|
||||
" for (int i = 0; i < 30; i++) {",
|
||||
" send_string(buf[3]);",
|
||||
" tap_code16(S(KC_QUOT));",
|
||||
" send_string(buf[i]);",
|
||||
" tap_code16(S(KC_QUOT));",
|
||||
" tap_code(KC_COMM);",
|
||||
" tap_code(KC_ENT);",
|
||||
" }",
|
||||
" for (int i = 4; i < 30; i++) {",
|
||||
" send_string(buf[i]);",
|
||||
" tap_code(KC_ENT);",
|
||||
" }",
|
||||
" }",
|
||||
" return false;",
|
||||
" }",
|
||||
" return true;",
|
||||
"};",
|
||||
};
|
||||
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
||||
switch(keycode) {
|
||||
case KC_A:
|
||||
if (record->event.pressed) {
|
||||
for (int i = 0; i < 3; i++) {
|
||||
send_string(buf[i]);
|
||||
tap_code(KC_ENT);
|
||||
}
|
||||
for (int i = 0; i < 30; i++) {
|
||||
send_string(buf[3]);
|
||||
tap_code16(S(KC_QUOT));
|
||||
send_string(buf[i]);
|
||||
tap_code16(S(KC_QUOT));
|
||||
tap_code(KC_COMM);
|
||||
tap_code(KC_ENT);
|
||||
}
|
||||
for (int i = 4; i < 30; i++) {
|
||||
send_string(buf[i]);
|
||||
tap_code(KC_ENT);
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
};
|
||||
|
1
keyboards/handwired/onekey/keymaps/quine/rules.mk
Normal file
1
keyboards/handwired/onekey/keymaps/quine/rules.mk
Normal file
@@ -0,0 +1 @@
|
||||
BOOTLOADER=atmel-dfu
|
@@ -30,16 +30,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#define MATRIX_ROWS 5
|
||||
#define MATRIX_COLS 4
|
||||
|
||||
/*
|
||||
* 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)
|
||||
*
|
||||
*/
|
||||
#define MATRIX_ROW_PINS \
|
||||
{ F0, C7, C6, B6, E6}
|
||||
#define MATRIX_COL_PINS \
|
||||
@@ -49,7 +39,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#define DIODE_DIRECTION COL2ROW
|
||||
|
||||
#define RGB_DI_PIN D1
|
||||
// #ifdef RGB_DI_PIN
|
||||
#define RGBLED_NUM 11
|
||||
#define RGBLIGHT_HUE_STEP 8
|
||||
#define RGBLIGHT_SAT_STEP 8
|
||||
@@ -57,24 +46,17 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#define RGBLIGHT_LIMIT_VAL 255 /* The maximum brightness level */
|
||||
#define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */
|
||||
// /*== all animations enable ==*/
|
||||
// #define RGBLIGHT_ANIMATIONS
|
||||
#define RGBLIGHT_ANIMATIONS
|
||||
// /*== or choose animations ==*/
|
||||
#define RGBLIGHT_EFFECT_BREATHING
|
||||
#define RGBLIGHT_EFFECT_RAINBOW_MOOD
|
||||
#define RGBLIGHT_EFFECT_RAINBOW_SWIRL
|
||||
#define RGBLIGHT_EFFECT_SNAKE
|
||||
#define RGBLIGHT_EFFECT_KNIGHT
|
||||
// #define RGBLIGHT_EFFECT_CHRISTMAS
|
||||
// #define RGBLIGHT_EFFECT_STATIC_GRADIENT
|
||||
// #define RGBLIGHT_EFFECT_RGB_TEST
|
||||
// #define RGBLIGHT_EFFECT_ALTERNATING
|
||||
// /*== customize breathing effect ==*/
|
||||
// /*==== (DEFAULT) use fixed table instead of exp() and sin() ====*/
|
||||
// #define RGBLIGHT_BREATHE_TABLE_SIZE 256 // 256(default) or 128 or 64
|
||||
// /*==== use exp() and sin() ====*/
|
||||
// #define RGBLIGHT_EFFECT_BREATHE_CENTER 1.85 // 1 to 2.7
|
||||
// #define RGBLIGHT_EFFECT_BREATHE_MAX 255 // 0 to 255
|
||||
// #endif
|
||||
// #define RGBLIGHT_EFFECT_BREATHING
|
||||
// #define RGBLIGHT_EFFECT_RAINBOW_MOOD
|
||||
// #define RGBLIGHT_EFFECT_RAINBOW_SWIRL
|
||||
// #define RGBLIGHT_EFFECT_SNAKE
|
||||
// #define RGBLIGHT_EFFECT_KNIGHT
|
||||
// #define RGBLIGHT_EFFECT_CHRISTMAS
|
||||
// #define RGBLIGHT_EFFECT_STATIC_GRADIENT
|
||||
// #define RGBLIGHT_EFFECT_RGB_TEST
|
||||
// #define RGBLIGHT_EFFECT_ALTERNATING
|
||||
|
||||
/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
|
||||
#define DEBOUNCE 20
|
||||
@@ -82,9 +64,9 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
/* ENCODER THINGS */
|
||||
// #define ENCODER_DIRECTION_FLIP
|
||||
#define ENCODERS_PAD_A \
|
||||
{ F6, B4 }
|
||||
#define ENCODERS_PAD_B \
|
||||
{ F5, B5 }
|
||||
#define ENCODERS_PAD_B \
|
||||
{ F6, B4 }
|
||||
|
||||
/* Tap Dance timing */
|
||||
#define TAPPING_TERM 200
|
||||
|
31
keyboards/hub16/info.json
Normal file
31
keyboards/hub16/info.json
Normal file
@@ -0,0 +1,31 @@
|
||||
{
|
||||
"keyboard_name": "Hub16",
|
||||
"url": "https://joshajohnson.com/hub16-keyboard/",
|
||||
"maintainer": "Josh Johnson",
|
||||
"width": 4,
|
||||
"height": 5,
|
||||
"layouts": {
|
||||
"LAYOUT": {
|
||||
"layout": [
|
||||
{"label":"Mute", "x":0.5, "y":0},
|
||||
{"label":"Play / Pause", "x":2.5, "y":0},
|
||||
{"label":"7", "x":0, "y":1},
|
||||
{"label":"8", "x":1, "y":1},
|
||||
{"label":"9", "x":2, "y":1},
|
||||
{"label":"*", "x":3, "y":1},
|
||||
{"label":"4", "x":0, "y":2},
|
||||
{"label":"5", "x":1, "y":2},
|
||||
{"label":"6", "x":2, "y":2},
|
||||
{"label":"-", "x":3, "y":2},
|
||||
{"label":"1", "x":0, "y":3},
|
||||
{"label":"2", "x":1, "y":3},
|
||||
{"label":"3", "x":2, "y":3},
|
||||
{"label":"+", "x":3, "y":3},
|
||||
{"label":"MO(1)", "x":0, "y":4},
|
||||
{"label":"0", "x":1, "y":4},
|
||||
{"label":".", "x":2, "y":4},
|
||||
{"label":"N.ENT", "x":3, "y":4}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
@@ -1,7 +1,7 @@
|
||||
# AutoHotKey Companion
|
||||
|
||||
## Overview
|
||||
AutoHotKey Companion Keymap for <a href="https://www.tindie.com/products/joshajohnson/hub16-programmable-macro-keyboard/">Hub16 macropad</a> is designed be a quick and easy way to get started with AutoHotKey and to provide a foundation for customizing your own macropad. I upgraded to the Super16 from a Super16 because it kept the RGB underglow lights for an easy way (RGB) to identify what layer I was on with a quick glance or peripheral vision and added 2 rotary encoders and a USB 2.0 hub with USB-C ports. The F13 to F24 keys were selected as they are rarely used so you won't run into conflicts with existing application shortcuts and AutoHotKey recognizes them without any issues. *Note:* MacOS does not support/recognize F21 to F24 so these would need to be remapped for Mac users.
|
||||
AutoHotKey Companion Keymap for <a href="https://www.tindie.com/products/joshajohnson/hub16-programmable-macro-keyboard/">Hub16 macropad</a> is designed be a quick and easy way to get started with AutoHotKey and to provide a foundation for customizing your own macropad. I upgraded to the Hub16 from a Super16 because it kept the RGB underglow lights for an easy way (RGB) to identify what layer I was on with a quick glance or peripheral vision and added 2 rotary encoders and a USB 2.0 hub with USB-C ports. The F13 to F24 keys were selected as they are rarely used so you won't run into conflicts with existing application shortcuts and AutoHotKey recognizes them without any issues. *Note:* MacOS does not support/recognize F21 to F24 so these would need to be remapped for Mac users.
|
||||
|
||||
Same functionality can be accomplished with other similar applications on the host system like Keyboard Maestro, AutoIt, etc.
|
||||
|
||||
@@ -64,7 +64,7 @@ While the first 5 layers are accessible with only 1 key press at most, the 5th (
|
||||
|
||||
## Host Configuration
|
||||
|
||||
Once the keymap has been flashed to the Super16, you can download the accompanying AutoHotKey file or create your own and have it start automatically either via a Windows Task or another way. Using AutoHotKey allows adjustment of functionality of the buttons without the need to change your map and reflash the macropad every time.
|
||||
Once the keymap has been flashed to the Hub16, you can download the accompanying AutoHotKey file or create your own and have it start automatically either via a Windows Task or another way. Using AutoHotKey allows adjustment of functionality of the buttons without the need to change your map and reflash the macropad every time.
|
||||
Starting the AHK file can be done either by:
|
||||
* Creating a Windows Task
|
||||
* Adding the AHK to the startup folder
|
||||
|
@@ -1,3 +0,0 @@
|
||||
TAP_DANCE_ENABLE = no # Support for tap dancing
|
||||
|
||||
|
50
keyboards/hub16/keymaps/default/keymap.c
Executable file
50
keyboards/hub16/keymaps/default/keymap.c
Executable file
@@ -0,0 +1,50 @@
|
||||
/* Copyright 2019 Josh Johnson
|
||||
*
|
||||
* 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
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
[0] = LAYOUT( /* Base */
|
||||
KC_MUTE, KC_MPLY,
|
||||
KC_7, KC_8, KC_9, KC_PAST,
|
||||
KC_4, KC_5, KC_6, KC_PMNS,
|
||||
KC_1, KC_2, KC_3, KC_PPLS,
|
||||
MO(1), KC_0, KC_PDOT,KC_PENT
|
||||
),
|
||||
|
||||
[1] = LAYOUT( /* LED Control */
|
||||
_______, _______,
|
||||
_______, RGB_MOD, RGB_RMOD, RGB_TOG,
|
||||
RGB_VAD, RGB_VAI, RGB_HUD, RGB_HUI,
|
||||
RGB_SAD, RGB_SAI, _______, _______,
|
||||
_______, _______, RESET, _______
|
||||
),
|
||||
};
|
||||
|
||||
void encoder_update_user(uint8_t index, bool clockwise) {
|
||||
if (index == 0) { /* Left Encoder */
|
||||
if (clockwise) {
|
||||
tap_code(KC_VOLD);
|
||||
} else {
|
||||
tap_code(KC_VOLU);
|
||||
}
|
||||
} else if (index == 1) { /* Right Encoder */
|
||||
if (clockwise) {
|
||||
tap_code(KC_MPRV);
|
||||
} else {
|
||||
tap_code(KC_MNXT);
|
||||
}
|
||||
}
|
||||
}
|
@@ -1 +0,0 @@
|
||||
{"version":1,"notes":"","documentation":"\"This file is a QMK Configurator export. You can import this at <https://config.qmk.fm>. It can also be used directly with QMK's source code.\n\nTo setup your QMK environment check out the tutorial: <https://docs.qmk.fm/#/newbs>\n\nYou can convert this file to a keymap.c using this command: `qmk json2c {keymap}`\n\nYou can compile this keymap using this command: `qmk compile {keymap}`\"\n","keyboard":"hub16","keymap":"default","layout":"LAYOUT","layers":[["KC_NLCK","KC_PSLS","KC_P7","KC_P8","KC_P9","KC_PPLS","KC_P4","KC_P5","KC_P6","KC_PCMM","KC_P1","KC_P2","KC_P3","KC_PEQL","KC_P0","KC_P0","KC_PDOT","KC_PENT"]],"author":""}
|
@@ -1 +0,0 @@
|
||||
TAP_DANCE_ENABLE = yes # Support for tap dancing
|
@@ -36,18 +36,18 @@ qk_tap_dance_action_t tap_dance_actions[] = {
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
[_BASE] = LAYOUT( /* Base */
|
||||
KC_S, KC_V,
|
||||
KC_A, KC_B, KC_C, KC_D,
|
||||
KC_E, KC_F, KC_G, KC_H,
|
||||
KC_I, KC_J, KC_K, KC_L,
|
||||
KC_S, KC_V,
|
||||
KC_A, KC_B, KC_C, KC_D,
|
||||
KC_E, KC_F, KC_G, KC_H,
|
||||
KC_I, KC_J, KC_K, KC_L,
|
||||
KC_M, KC_N, KC_O, TD(CTRL)
|
||||
),
|
||||
|
||||
[_CTRL] = LAYOUT( /* Control */
|
||||
KC_NO, KC_NO,
|
||||
KC_NO, KC_NO,
|
||||
_______, RGB_MOD, RGB_RMOD, RGB_TOG,
|
||||
RGB_VAD, RGB_VAI, RGB_HUD, RGB_HUI,
|
||||
RGB_SAD, RGB_SAI, _______, _______,
|
||||
RGB_VAD, RGB_VAI, RGB_HUD, RGB_HUI,
|
||||
RGB_SAD, RGB_SAI, _______, _______,
|
||||
_______, _______, RESET, TD(BASE)
|
||||
),
|
||||
};
|
||||
@@ -112,4 +112,4 @@ void td_ctrl (qk_tap_dance_state_t *state, void *user_data) {
|
||||
} else if (state->count == 2) {
|
||||
layer_move(_CTRL);
|
||||
}
|
||||
}
|
||||
}
|
1
keyboards/hub16/keymaps/macro/rules.mk
Normal file
1
keyboards/hub16/keymaps/macro/rules.mk
Normal file
@@ -0,0 +1 @@
|
||||
TAP_DANCE_ENABLE = yes
|
@@ -1,78 +0,0 @@
|
||||
/* Copyright 2019 Josh Johnson
|
||||
*
|
||||
* 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
|
||||
|
||||
// Keyboard Layers
|
||||
enum keyboard_layers{
|
||||
_BASE = 0,
|
||||
_CONTROL
|
||||
};
|
||||
|
||||
// Tap Dance Declarations
|
||||
enum tap_dance { TD_TO_LED = 0, TD_TO_DEFAULT = 1 };
|
||||
|
||||
qk_tap_dance_action_t tap_dance_actions[] = {
|
||||
// Tap once for standard key, twice to toggle to control layer
|
||||
[TD_TO_LED] = ACTION_TAP_DANCE_DUAL_ROLE(KC_P, _CONTROL),
|
||||
[TD_TO_DEFAULT] = ACTION_TAP_DANCE_DUAL_ROLE(KC_P, _BASE)};
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
[_BASE] = LAYOUT( /* Base */
|
||||
KC_S, KC_V,
|
||||
KC_A, KC_B, KC_C, KC_D,
|
||||
KC_E, KC_F, KC_G, KC_H,
|
||||
KC_I, KC_J, KC_K, KC_L,
|
||||
KC_M, KC_N, KC_O, TD(TD_TO_LED)
|
||||
),
|
||||
|
||||
[_CONTROL] = LAYOUT( /* LED Control */
|
||||
KC_NO, KC_NO,
|
||||
_______, RGB_MOD, RGB_RMOD, RGB_TOG,
|
||||
RGB_VAD, RGB_VAI, RGB_HUD, RGB_HUI,
|
||||
RGB_SAD, RGB_SAI, _______, _______,
|
||||
_______, _______, RESET, TD(TD_TO_DEFAULT)
|
||||
),
|
||||
};
|
||||
|
||||
void encoder_update_user(uint8_t index, bool clockwise) {
|
||||
if (index == 0) { /* Left Encoder */
|
||||
if (clockwise) {
|
||||
tap_code(KC_R);
|
||||
} else {
|
||||
tap_code(KC_Q);
|
||||
}
|
||||
} else if (index == 1) { /* Right Encoder */
|
||||
if (clockwise) {
|
||||
tap_code(KC_U);
|
||||
} else {
|
||||
tap_code(KC_T);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
||||
switch (keycode) {
|
||||
// Example of "pressing" CONTROL+SHIFT+V instead of "A" on keyboard
|
||||
// More info: https://docs.qmk.fm/#/feature_macros
|
||||
// case KC_A:
|
||||
// if (record->event.pressed) {
|
||||
// SEND_STRING(SS_LCTL(SS_LSFT("v")));
|
||||
// } else {
|
||||
// }
|
||||
// break;
|
||||
}
|
||||
return true;
|
||||
};
|
@@ -1,4 +1 @@
|
||||
VIA_ENABLE = yes
|
||||
CONSOLE_ENABLE = no
|
||||
COMMAND_ENABLE = no
|
||||
TAP_DANCE_ENABLE = no
|
||||
|
@@ -19,7 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#include "wait.h"
|
||||
#include "util.h"
|
||||
#include "matrix.h"
|
||||
#include "debounce.h"
|
||||
#include "quantum.h"
|
||||
|
||||
// Encoder things
|
||||
@@ -27,65 +26,12 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#define SWITCH_2 D7
|
||||
static bool read_encoder_switches(matrix_row_t current_matrix[], uint8_t current_row);
|
||||
|
||||
#ifdef MATRIX_MASKED
|
||||
extern const matrix_row_t matrix_mask[];
|
||||
#endif
|
||||
|
||||
#ifdef DIRECT_PINS
|
||||
static pin_t direct_pins[MATRIX_ROWS][MATRIX_COLS] = DIRECT_PINS;
|
||||
#elif (DIODE_DIRECTION == ROW2COL) || (DIODE_DIRECTION == COL2ROW)
|
||||
static const pin_t row_pins[MATRIX_ROWS] = MATRIX_ROW_PINS;
|
||||
static const pin_t col_pins[MATRIX_COLS] = MATRIX_COL_PINS;
|
||||
#endif
|
||||
|
||||
/* matrix state(1:on, 0:off) */
|
||||
static matrix_row_t raw_matrix[MATRIX_ROWS]; // raw values
|
||||
static matrix_row_t matrix[MATRIX_ROWS]; // debounced values
|
||||
|
||||
// helper functions
|
||||
|
||||
inline bool matrix_is_on(uint8_t row, uint8_t col) { return (matrix[row] & ((matrix_row_t)1 << col)); }
|
||||
|
||||
inline matrix_row_t matrix_get_row(uint8_t row) {
|
||||
// Matrix mask lets you disable switches in the returned matrix data. For example, if you have a
|
||||
// switch blocker installed and the switch is always pressed.
|
||||
#ifdef MATRIX_MASKED
|
||||
return matrix[row] & matrix_mask[row];
|
||||
#else
|
||||
return matrix[row];
|
||||
#endif
|
||||
}
|
||||
|
||||
// matrix code
|
||||
|
||||
#ifdef DIRECT_PINS
|
||||
|
||||
static void init_pins(void) {
|
||||
for (int row = 0; row < MATRIX_ROWS; row++) {
|
||||
for (int col = 0; col < MATRIX_COLS; col++) {
|
||||
pin_t pin = direct_pins[row][col];
|
||||
if (pin != NO_PIN) {
|
||||
setPinInputHigh(pin);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static bool read_cols_on_row(matrix_row_t current_matrix[], uint8_t current_row) {
|
||||
matrix_row_t last_row_value = current_matrix[current_row];
|
||||
current_matrix[current_row] = 0;
|
||||
|
||||
for (uint8_t col_index = 0; col_index < MATRIX_COLS; col_index++) {
|
||||
pin_t pin = direct_pins[current_row][col_index];
|
||||
if (pin != NO_PIN) {
|
||||
current_matrix[current_row] |= readPin(pin) ? 0 : (MATRIX_ROW_SHIFTER << col_index);
|
||||
}
|
||||
}
|
||||
|
||||
return (last_row_value != current_matrix[current_row]);
|
||||
}
|
||||
|
||||
#elif (DIODE_DIRECTION == COL2ROW)
|
||||
extern matrix_row_t raw_matrix[MATRIX_ROWS]; // raw values
|
||||
extern matrix_row_t matrix[MATRIX_ROWS]; // debounced values
|
||||
|
||||
static void select_row(uint8_t row) {
|
||||
setPinOutput(row_pins[row]);
|
||||
@@ -133,112 +79,28 @@ static bool read_cols_on_row(matrix_row_t current_matrix[], uint8_t current_row)
|
||||
return (last_row_value != current_matrix[current_row]);
|
||||
}
|
||||
|
||||
#elif (DIODE_DIRECTION == ROW2COL)
|
||||
|
||||
static void select_col(uint8_t col) {
|
||||
setPinOutput(col_pins[col]);
|
||||
writePinLow(col_pins[col]);
|
||||
}
|
||||
|
||||
static void unselect_col(uint8_t col) { setPinInputHigh(col_pins[col]); }
|
||||
|
||||
static void unselect_cols(void) {
|
||||
for (uint8_t x = 0; x < MATRIX_COLS; x++) {
|
||||
setPinInputHigh(col_pins[x]);
|
||||
}
|
||||
}
|
||||
|
||||
static void init_pins(void) {
|
||||
unselect_cols();
|
||||
for (uint8_t x = 0; x < MATRIX_ROWS; x++) {
|
||||
setPinInputHigh(row_pins[x]);
|
||||
}
|
||||
}
|
||||
|
||||
static bool read_rows_on_col(matrix_row_t current_matrix[], uint8_t current_col) {
|
||||
bool matrix_changed = false;
|
||||
|
||||
// Select col and wait for col selecton to stabilize
|
||||
select_col(current_col);
|
||||
wait_us(30);
|
||||
|
||||
// For each row...
|
||||
for (uint8_t row_index = 0; row_index < MATRIX_ROWS; row_index++) {
|
||||
// Store last value of row prior to reading
|
||||
matrix_row_t last_row_value = current_matrix[row_index];
|
||||
|
||||
// Check row pin state
|
||||
if (readPin(row_pins[row_index]) == 0) {
|
||||
// Pin LO, set col bit
|
||||
current_matrix[row_index] |= (MATRIX_ROW_SHIFTER << current_col);
|
||||
} else {
|
||||
// Pin HI, clear col bit
|
||||
current_matrix[row_index] &= ~(MATRIX_ROW_SHIFTER << current_col);
|
||||
}
|
||||
|
||||
// Determine if the matrix changed state
|
||||
if ((last_row_value != current_matrix[row_index]) && !(matrix_changed)) {
|
||||
matrix_changed = true;
|
||||
}
|
||||
}
|
||||
|
||||
// Unselect col
|
||||
unselect_col(current_col);
|
||||
|
||||
return matrix_changed;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
void matrix_init(void) {
|
||||
void matrix_init_custom(void) {
|
||||
// initialize key pins
|
||||
setPinInput(SWITCH_1);
|
||||
setPinInput(SWITCH_2);
|
||||
init_pins();
|
||||
|
||||
// initialize matrix state: all keys off
|
||||
for (uint8_t i = 0; i < MATRIX_ROWS; i++) {
|
||||
raw_matrix[i] = 0;
|
||||
matrix[i] = 0;
|
||||
}
|
||||
|
||||
debounce_init(MATRIX_ROWS);
|
||||
|
||||
matrix_init_quantum();
|
||||
}
|
||||
|
||||
uint8_t matrix_scan(void) {
|
||||
bool matrix_scan_custom(void) {
|
||||
bool changed = false;
|
||||
|
||||
#if defined(DIRECT_PINS) || (DIODE_DIRECTION == COL2ROW)
|
||||
// Set row, read cols
|
||||
for (uint8_t current_row = 0; current_row < MATRIX_ROWS; current_row++) {
|
||||
changed |= read_cols_on_row(raw_matrix, current_row);
|
||||
}
|
||||
#elif (DIODE_DIRECTION == ROW2COL)
|
||||
// Set col, read rows
|
||||
for (uint8_t current_col = 0; current_col < MATRIX_COLS; current_col++) {
|
||||
changed |= read_rows_on_col(raw_matrix, current_col);
|
||||
}
|
||||
#endif
|
||||
|
||||
debounce(raw_matrix, matrix, MATRIX_ROWS, changed);
|
||||
|
||||
// Read encoder switches, already debounced
|
||||
changed |= read_encoder_switches(matrix, 4);
|
||||
|
||||
matrix_scan_quantum();
|
||||
return (uint8_t)changed;
|
||||
return changed;
|
||||
}
|
||||
|
||||
// Customisations for the encoders
|
||||
void matrix_init_kb(void) {
|
||||
setPinInput(SWITCH_1);
|
||||
setPinInput(SWITCH_2);
|
||||
}
|
||||
|
||||
void matrix_scan_kb(void) {}
|
||||
|
||||
void matrix_print(void) {}
|
||||
|
||||
static bool read_encoder_switches(matrix_row_t current_matrix[], uint8_t current_row) {
|
||||
// Store last value of row prior to reading
|
||||
matrix_row_t last_row_value = current_matrix[current_row];
|
||||
@@ -249,18 +111,18 @@ static bool read_encoder_switches(matrix_row_t current_matrix[], uint8_t current
|
||||
// Debounce the encoder buttons using a shift register
|
||||
static uint8_t btn_1_array;
|
||||
static uint8_t btn_2_array;
|
||||
bool btn_1_pressed = 0;
|
||||
bool btn_2_pressed = 0;
|
||||
bool btn_1_rise = 0;
|
||||
bool btn_2_rise = 0;
|
||||
btn_1_array <<= 1;
|
||||
btn_2_array <<= 1;
|
||||
btn_1_array |= readPin(SWITCH_1);
|
||||
btn_2_array |= readPin(SWITCH_2);
|
||||
(btn_1_array == 0b11111111) ? (btn_1_pressed = 1) : (btn_1_pressed = 0);
|
||||
(btn_2_array == 0b11111111) ? (btn_2_pressed = 1) : (btn_2_pressed = 0);
|
||||
(btn_1_array == 0b01111111) ? (btn_1_rise = 1) : (btn_1_rise = 0);
|
||||
(btn_2_array == 0b01111111) ? (btn_2_rise = 1) : (btn_2_rise = 0);
|
||||
|
||||
// Populate the matrix row with the state of the encoder
|
||||
current_matrix[current_row] |= btn_1_pressed ? (1 << 0) : 0;
|
||||
current_matrix[current_row] |= btn_2_pressed ? (1 << 1) : 0;
|
||||
current_matrix[current_row] |= btn_1_rise ? (1 << 0) : 0;
|
||||
current_matrix[current_row] |= btn_2_rise ? (1 << 1) : 0;
|
||||
|
||||
return (last_row_value != current_matrix[current_row]);
|
||||
}
|
||||
}
|
||||
|
@@ -1,6 +1,6 @@
|
||||
# Hub16
|
||||
|
||||
Hub16 is a 16 Key Macro Pad with an inbuilt USB 2.0 hub and dual rotary encoders.
|
||||
Hub16 is a 16 Key Macro Pad with an inbuilt USB 2.0 hub and dual rotary encoders.
|
||||
|
||||
For more information regarding the keyboard, please visit the [Hub16 Website](https://www.joshajohnson.com/hub16-keyboard/) or [GitHub Repo](https://github.com/joshajohnson/Hub16).
|
||||
|
||||
@@ -10,6 +10,6 @@ For more information regarding the keyboard, please visit the [Hub16 Website](ht
|
||||
|
||||
Make example for this keyboard (after setting up your build environment):
|
||||
|
||||
make hub16:default
|
||||
make hub16: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).
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user