@ -0,0 +1,16 @@ | |||
/* Copyright 2018-2020 ENDO Katsuhiro <ka2hiro@curlybracket.co.jp> David Philip Barr <@davidphilipbarr> Pierre Chevalier <pierrechevalier83@gmail.com> | |||
* | |||
* This program is free software: you can redistribute it and/or modify | |||
* it under the terms of the GNU General Public License as published by | |||
* the Free Software Foundation, either version 2 of the License, or | |||
* (at your option) any later version. | |||
* | |||
* This program is distributed in the hope that it will be useful, | |||
* but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||
* GNU General Public License for more details. | |||
* | |||
* You should have received a copy of the GNU General Public License | |||
* along with this program. If not, see <http://www.gnu.org/licenses/>. | |||
*/ | |||
#include "a_dux.h" |
@ -0,0 +1,47 @@ | |||
/* Copyright 2018-2020 ENDO Katsuhiro <ka2hiro@curlybracket.co.jp> David Philip Barr <@davidphilipbarr> Pierre Chevalier <pierrechevalier83@gmail.com> | |||
* | |||
* This program is free software: you can redistribute it and/or modify | |||
* it under the terms of the GNU General Public License as published by | |||
* the Free Software Foundation, either version 2 of the License, or | |||
* (at your option) any later version. | |||
* | |||
* This program is distributed in the hope that it will be useful, | |||
* but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||
* GNU General Public License for more details. | |||
* | |||
* You should have received a copy of the GNU General Public License | |||
* along with this program. If not, see <http://www.gnu.org/licenses/>. | |||
*/ | |||
#include "quantum.h" | |||
/* This 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. | |||
*/ | |||
// readability | |||
#define ___ KC_NO | |||
#define LAYOUT( \ | |||
L01, L02, L03, L04, L05, R01, R02, R03, R04, R05, \ | |||
L06, L07, L08, L09, L10, R06, R07, R08, R09, R10, \ | |||
L11, L12, L13, L14, L15, R11, R12, R13, R14, R15, \ | |||
L16, L17, R16, R17 \ | |||
) \ | |||
{ \ | |||
{ L01, L02, L03, L04, L05 }, \ | |||
{ L06, L07, L08, L09, L10 }, \ | |||
{ L11, L12, L13, L14, L15 }, \ | |||
{ L16, L17, ___, ___ , ___}, \ | |||
{ R01, R02, R03, R04, R05 }, \ | |||
{ R06, R07, R08, R09, R10 }, \ | |||
{ R11, R12, R13, R14, R15 }, \ | |||
{ R16, R17, ___, ___, ___ } \ | |||
} | |||
@ -0,0 +1,76 @@ | |||
/* Copyright 2018-2020 ENDO Katsuhiro <ka2hiro@curlybracket.co.jp> David Philip Barr <@davidphilipbarr> Pierre Chevalier <pierrechevalier83@gmail.com> | |||
This program is free software: you can redistribute it and/or modify | |||
it under the terms of the GNU General Public License as published by | |||
the Free Software Foundation, either version 2 of the License, or | |||
(at your option) any later version. | |||
This program is distributed in the hope that it will be useful, | |||
but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||
GNU General Public License for more details. | |||
You should have received a copy of the GNU General Public License | |||
along with this program. If not, see <http://www.gnu.org/licenses/>. | |||
*/ | |||
#pragma once | |||
#include "config_common.h" | |||
/* USB Device descriptor parameter */ | |||
#define VENDOR_ID 0xC2AB | |||
#define PRODUCT_ID 0x3939 | |||
#define DEVICE_VER 0x0001 | |||
#define MANUFACTURER tapioki | |||
#define PRODUCT Architeuthis dux | |||
/* key matrix size */ | |||
#define MATRIX_ROWS 8 | |||
#define MATRIX_COLS 5 | |||
/* | |||
* Keyboard Matrix Assignments | |||
* | |||
* Change this to how you wired your keyboard | |||
* COLS: AVR pins used for columns, left to right | |||
* ROWS: AVR pins used for rows, top to bottom | |||
* DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode) | |||
* ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode) | |||
* NO_DIODE = switches are directly connected to AVR pins | |||
* | |||
*/ | |||
#define DIRECT_PINS { \ | |||
{ C6, D2, F7, B2, F4 }, \ | |||
{ D7, D0, F6, B3, F5 }, \ | |||
{ E6, D4, D3, B1, B6 }, \ | |||
{ B4, B5, NO_PIN, NO_PIN, NO_PIN } \ | |||
} | |||
#define DIRECT_PINS_RIGHT { \ | |||
{ F4, B2, F7, D2, C6 }, \ | |||
{ F5, B3, F6, D0, D7 }, \ | |||
{ B6, B1, D3, D4, E6 }, \ | |||
{ B5, B4, NO_PIN, NO_PIN, NO_PIN } \ | |||
} | |||
#define UNUSED_PINS | |||
/* 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 | |||
/* Serial settings */ | |||
#define USE_SERIAL | |||
/* serial.c configuration for split keyboard */ | |||
#define SOFT_SERIAL_PIN D1 | |||
#define EE_HANDS |
@ -0,0 +1,52 @@ | |||
{ | |||
"keyboard_name": "Architeuthis dux", | |||
"url": "https://github.com/tapioki/cephalopoda", | |||
"maintainer": "@tapioki", | |||
"layouts": { | |||
"LAYOUT": { | |||
"layout": [ | |||
{"x": 0, "y": 0.93}, | |||
{"x": 1, "y": 0.31}, | |||
{"x": 2, "y": 0}, | |||
{"x": 3, "y": 0.28}, | |||
{"x": 4, "y": 0.42}, | |||
{"x": 7, "y": 0.42}, | |||
{"x": 8, "y": 0.28}, | |||
{"x": 9, "y": 0}, | |||
{"x": 10, "y": 0.31}, | |||
{"x": 11, "y": 0.93}, | |||
{"x": 0, "y": 1.93}, | |||
{"x": 1, "y": 1.31}, | |||
{"x": 2, "y": 1}, | |||
{"x": 3, "y": 1.28}, | |||
{"x": 4, "y": 1.42}, | |||
{"x": 7, "y": 1.42}, | |||
{"x": 8, "y": 1.28}, | |||
{"x": 9, "y": 1}, | |||
{"x": 10, "y": 1.31}, | |||
{"x": 11, "y": 1.93}, | |||
{"x": 0, "y": 2.93}, | |||
{"x": 1, "y": 2.31}, | |||
{"x": 2, "y": 2}, | |||
{"x": 3, "y": 2.28}, | |||
{"x": 4, "y": 2.42}, | |||
{"x": 7, "y": 2.42}, | |||
{"x": 8, "y": 2.28}, | |||
{"x": 9, "y": 2}, | |||
{"x": 10, "y": 2.31}, | |||
{"x": 11, "y": 2.93}, | |||
{"x": 3.5, "y": 3.75}, | |||
{"x": 4.5, "y": 4}, | |||
{"x": 6.5, "y": 4}, | |||
{"x": 7.5, "y": 3.75} | |||
] | |||
} | |||
} | |||
} |
@ -0,0 +1,39 @@ | |||
/* | |||
Copyright 2020 Pierre Chevalier <pierrechevalier83@gmail.com> | |||
This program is free software: you can redistribute it and/or modify | |||
it under the terms of the GNU General Public License as published by | |||
the Free Software Foundation, either version 2 of the License, or | |||
(at your option) any later version. | |||
This program is distributed in the hope that it will be useful, | |||
but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||
GNU General Public License for more details. | |||
You should have received a copy of the GNU General Public License | |||
along with this program. If not, see <http://www.gnu.org/licenses/>. | |||
*/ | |||
#pragma once | |||
// Set the mouse settings to a comfortable speed/accuracy trade-off, | |||
// assuming a screen refresh rate of 60 Htz or higher | |||
// The default is 50. This makes the mouse ~3 times faster and more accurate | |||
#define MOUSEKEY_INTERVAL 16 | |||
// The default is 20. Since we made the mouse about 3 times faster with the previous setting, | |||
// give it more time to accelerate to max speed to retain precise control over short distances. | |||
#define MOUSEKEY_TIME_TO_MAX 40 | |||
// The default is 300. Let's try and make this as low as possible while keeping the cursor responsive | |||
#define MOUSEKEY_DELAY 100 | |||
// It makes sense to use the same delay for the mouseweel | |||
#define MOUSEKEY_WHEEL_DELAY 100 | |||
// The default is 100 | |||
#define MOUSEKEY_WHEEL_INTERVAL 50 | |||
// The default is 40 | |||
#define MOUSEKEY_WHEEL_TIME_TO_MAX 100 | |||
// Pick good defaults for enabling homerow modifiers | |||
#define TAPPING_TERM 200 | |||
#define PERMISSIVE_HOLD | |||
#define IGNORE_MOD_TAP_INTERRUPT | |||
#define TAPPING_FORCE_HOLD |
@ -0,0 +1,106 @@ | |||
{ "version": 1, | |||
"notes": "My awesome keymap", | |||
"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": "a_dux", | |||
"keymap": "default", | |||
"layout": "LAYOUT", | |||
"layers": [ | |||
["KC_Q" , "KC_W" , "KC_E" , "KC_R" , "KC_T", | |||
"KC_Y" , "KC_U" , "KC_I" , "KC_O" , "KC_P", | |||
"LSFT_T(KC_A)", "LT(5,KC_S)" , "LT(1,KC_D)" , "LT(3,KC_F)" , "KC_G", | |||
"KC_H" , "LT(4,KC_J)" , "LT(2,KC_K)" , "LT(6,KC_L)" , "LSFT_T(KC_SCLN)", | |||
"KC_Z" , "LCTL_T(KC_X)", "LALT_T(KC_C)" , "KC_V" , "KC_B", | |||
"KC_N" , "KC_M" , "LALT_T(KC_COMM)", "LCTL_T(KC_DOT)", "KC_SLSH", | |||
"KC_P0" , "KC_BSPC", | |||
"LT(7,KC_SPC)", "KC_P1" | |||
], | |||
["KC_TRNS" , "KC_TRNS" , "KC_TRNS" , "KC_TRNS" , "KC_TRNS", | |||
"KC_TRNS" , "KC_BTN1" , "KC_WH_U" , "KC_BTN2" , "KC_TRNS", | |||
"KC_TRNS" , "KC_BTN2" , "KC_NO" , "KC_BTN1" , "KC_TRNS", | |||
"KC_TRNS" , "KC_MS_L" , "KC_MS_D" , "KC_MS_U" , "KC_MS_R", | |||
"KC_TRNS" , "KC_TRNS" , "KC_TRNS" , "KC_TRNS" , "KC_TRNS", | |||
"KC_TRNS" , "KC_WH_L" , "KC_WH_D" , "KC_WH_R" , "KC_TRNS", | |||
"KC_TRNS" , "KC_TRNS", | |||
"KC_TRNS" , "KC_TRNS" | |||
], | |||
["KC_TRNS" , "KC_TRNS" , "KC_PGUP" , "KC_TRNS" , "KC_TRNS", | |||
"KC_TRNS" , "KC_TRNS" , "KC_TRNS" , "KC_TRNS" , "KC_TRNS", | |||
"KC_LEFT" , "KC_UP" , "KC_DOWN" , "KC_RGHT" , "KC_TRNS", | |||
"KC_TRNS" , "KC_LGUI" , "KC_NO" , "LCTL(KC_LALT)" , "LCA(KC_LSFT)", | |||
"KC_TRNS" , "KC_HOME" , "KC_PGDN" , "KC_END" , "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_UNDS" , "KC_PIPE" , "KC_QUOT" , "KC_TRNS", | |||
"KC_CIRC" , "KC_ASTR" , "KC_AMPR" , "KC_NO" , "KC_TRNS", | |||
"KC_HASH" , "KC_TILD" , "KC_SLSH" , "KC_DQUO" , "KC_DLR", | |||
"KC_TRNS" , "KC_TRNS" , "KC_TRNS" , "KC_TRNS" , "KC_TRNS", | |||
"KC_TRNS" , "KC_MINS" , "KC_BSLS" , "KC_GRV" , "KC_TRNS", | |||
"KC_TRNS" , "KC_TRNS", | |||
"KC_TRNS" , "KC_TRNS" | |||
], | |||
["KC_TRNS" , "KC_COLN" , "KC_LT" , "KC_GT" , "KC_SCLN", | |||
"KC_TRNS" , "KC_TRNS" , "KC_TRNS" , "KC_TRNS" , "KC_TRNS", | |||
"KC_LCBR" , "KC_RCBR" , "KC_LPRN" , "KC_RPRN" , "KC_AT", | |||
"KC_TRNS" , "KC_NO" , "KC_EQL" , "KC_PLUS" , "KC_PERC", | |||
"KC_TRNS" , "KC_EXLM" , "KC_LBRC" , "KC_RBRC" , "KC_TRNS", | |||
"KC_TRNS" , "KC_TRNS" , "KC_TRNS" , "KC_TRNS" , "KC_TRNS", | |||
"KC_VOLD" , "KC_TRNS", | |||
"KC_TRNS" , "KC_VOLU" | |||
], | |||
["KC_TRNS" , "KC_TRNS" , "KC_TRNS" , "KC_TRNS" , "KC_TRNS", | |||
"KC_TRNS" , "KC_F7" , "KC_F8" , "KC_F9" , "KC_F10", | |||
"KC_TRNS" , "KC_NO" , "LCTL(KC_LALT)" , "KC_TRNS" , "KC_TRNS", | |||
"KC_TRNS" , "KC_F4" , "KC_F5" , "KC_F6" , "KC_F11", | |||
"KC_TRNS" , "KC_TRNS" , "KC_TRNS" , "KC_TRNS" , "KC_TRNS", | |||
"KC_TRNS" , "KC_F1" , "KC_F2" , "KC_F3" , "KC_F12", | |||
"KC_TRNS" , "KC_TRNS", | |||
"KC_TRNS" , "KC_TRNS" | |||
], | |||
["KC_PSLS" , "KC_7" , "KC_8" , "KC_9" , "KC_PPLS", | |||
"KC_TRNS" , "KC_TRNS" , "KC_TRNS" , "KC_TRNS" , "KC_TRNS", | |||
"KC_0" , "KC_1" , "KC_2" , "KC_3" , "KC_PMNS", | |||
"KC_TRNS" , "KC_TRNS" , "KC_TRNS" , "KC_NO" , "KC_TRNS", | |||
"KC_PAST" , "KC_4" , "KC_5" , "KC_6" , "KC_PEQL", | |||
"KC_TRNS" , "KC_TRNS" , "KC_TRNS" , "KC_TRNS" , "KC_TRNS", | |||
"KC_TRNS" , "KC_TRNS", | |||
"KC_TRNS" , "KC_TRNS" | |||
], | |||
["KC_TRNS" , "KC_TRNS" , "KC_COLN" , "KC_ESC" , "KC_TRNS", | |||
"KC_TRNS" , "KC_TRNS" , "KC_TRNS" , "KC_TRNS" , "KC_DEL", | |||
"KC_TRNS" , "KC_PERC" , "KC_SLSH" , "KC_ENT" , "KC_TRNS", | |||
"DF(1)" , "KC_LGUI" , "KC_TRNS" , "KC_TRNS" , "KC_TRNS", | |||
"KC_TRNS" , "KC_TRNS" , "KC_TRNS" , "KC_EXLM" , "KC_TRNS", | |||
"DF(0)" , "KC_TRNS" , "RALT_T(KC_COMM)", "RCTL_T(KC_DOT)", "RESET", | |||
"KC_TRNS" , "KC_TAB", | |||
"KC_NO" , "KC_TRNS" | |||
] | |||
], | |||
"author": "@pierrec83" | |||
} |
@ -0,0 +1,122 @@ | |||
A usable default keymap for the A. Dux keyboard | |||
=============================================== | |||
Keymaps in general are quite personal, so it is difficult to come up with a default that will suit every user. | |||
This keymap makes heavy use of keys behaving differently when tapped and held, so that all the keys one may need remain accessible despite the low number of thumb keys. | |||
It comes with a number of layers to give access to most of the keys one may need on a keyboard. It is not meant to be the best possible keymap, but rather a good base on which to build a keymap that works for you. | |||
This is not the only way to make 34 keys a comfortable typing experience, but it is one way to do so. If you don't already know of a better way, this may be as good a starting point as any :) | |||
Note that this keymap was built from the perspective that it is OK to take a steep learning curve if it results in a keymap that is easier to use in the long run. This means that it may take more effort to learn this keymap than some alternatives. "Easy to use" was assessed against the workflow of the author, so your mileage may vary on some of the details. | |||
What do all these layers do? | |||
---------------------------- | |||
### Layer 0: Base layer | |||
![Layer 0](https://i.imgur.com/HjNHUPL.png) | |||
On tapping the keys, our base layer is qwerty with space on the right homing thumb and backspace on the left homing thumb. | |||
In this layer, the non-homing-thumb positions have 0 and 1. I recommend modifying this to some frequently accessed shortcut such as copy/paste, previous/next tab or anything that makes most sense in your own workflow. O and 1 are place-holders and make it easy to troubleshoot that all keys are working properly before soldering in the switches. | |||
The reason I recommend convenience shortcuts instead of more commonly used keys like tab or meta is that unhoming of the thumbs was a frequent source of typos for me when I used more than one thumb key frequently in the context of typing. | |||
Despite being missing on this layer, "meta", "tab", "esc" and such are accessible from any other layer: see Layer 7. | |||
The behaviour of some keys differ when held: | |||
* Both homing pinkies behave as shift. | |||
* Both bottom-row ring fingers behave as ctrl. | |||
* Both bottom-row middle fingers behave as alt. | |||
* The homing left ring finger gives access to the Function keys layer | |||
* The homing right ring finger gives access to the Numbers layer | |||
* The homing left middle finger gives access to the Mouse layer | |||
* The homing right middle finger gives access to the Navigation layer | |||
* The homing left index finger gives access to the Right symbols layer | |||
* The homing right index finger gives access to the Left symbols layer | |||
* The homing right thumb gives access to the Always accessible layer | |||
### Layer 1: Mouse | |||
![Layer 1](https://i.imgur.com/0fvTuB9.png) | |||
Layer 1 is a mouse layer: it can be used one-handed or two-handed. The most common way to use it is two handed, with left and right click on the homerow of the left hand and directions on the homerow of the right hand. | |||
Scrolling is available on the right hand with mid finger up and down for vertical scroll and index and ring finger down for horizontal scroll. | |||
On the right hand, left click and right click are also available with index and ring finger up to allow one handed operation. This can be particularly handy when enabling the mouse layer permanently (no need to hold the left middle finger), which can be done from Layer 7. | |||
Note that thanks to the transparency, shift, ctrl and alt are all accessible on the left hand while operating the mouse. | |||
### Layer 2: Navigation | |||
![Layer 2](https://i.imgur.com/ZquQJRq.png) | |||
The navigation layer somewhat mirrors the mouse layer. It is accessed by holding the right middle finger and gives access to arrow keys on the left homerow. Page up and down, Home and End mirror the vertical scrolling and horizontal scrolling on the mouse layer. | |||
On the right hand, in addition to ctrl and alt which are available through transparency, ctrl + alt, ctrl + alt + shift and meta are accessible on the homerow to enable common shortcuts in some window managers. This part is quite workflow dependent, so make sure to adapt it to your own workflow as appropriate. | |||
### Layer 3: Right symbols | |||
![Layer 3](https://i.imgur.com/9tLAUqG.png) | |||
When holding down the left index, one may access about half of the symbols. The pinkies store `^` and `$` symbols that represent begin and end in vim. The left homerow hosts `*` and `&`, symbols which are related in the way that they represent some form of indirection in programming languages such as rust. On the right hand, most symbols used when navigating the command line are stored together, organized by columns of related symbols. | |||
### Layer 4: Left symbols | |||
![Layer 4](https://i.imgur.com/CkjUSW6.png) | |||
When holding down the right index, one may access the other symbols. On the left hand, most of the different brackets are laid out. The most frequent ones (round brackets and curly brackets) get a spot on the homerow. The rest of the layer hosts the remaining symbols that are easier to access here than on any other layers. | |||
### Layer 5: Function keys | |||
![Layer 5](https://i.imgur.com/fWgVqc4.png) | |||
By holding down the left ring finger, one may access the function keys, roughly in a numpad layout. | |||
This means that alt+F4 is easy to type, with F4 being on the homerow. | |||
There is a shortcut for ctrl+alt on the left hand to enable convenient switching between virtual terminals on Linux. | |||
### Layer 6: Numbers | |||
![Layer 6](https://i.imgur.com/S8gq9Kj.png) | |||
The number layer is accessed by holding the right ring finger. It hosts the numbers and some duplicated symbols that are commonly accessed next to numbers, such as mathematical operators. | |||
The number are layed out similarly to a numpad, but with the middle row and the homerow swapped so that the most used numbers: 0, 1, 2 and 3 are all available in homing positions. | |||
### Layer 7: Always accessible | |||
![Layer 7](https://i.imgur.com/twqBeBb.png) | |||
Layer 7 is accessed by holding the right homing thumb down. Because this position is left transparent from every other layer, this layer is always accessible. | |||
It gives access to some essential keys that would typically be accessed on a thumb cluster or pinkies, such as meta, enter, tab, esc and delete. | |||
As the layer hosting esc, we duplicated some symbols here to allow for fast navigation in vim. For instance, esc, :, w, q can be done in a single roll. | |||
Where is the keymap.c? | |||
---------------------- | |||
The keymap.c file is not published to the repository. It is generated from `keymap.json` by the build system. | |||
This avoids duplicating information and allow users to edit their keymap from the qmk configurator web interface. | |||
How do I edit and update the keymap? | |||
------------------------------------ | |||
The `keymap.json` file is generated from the qmk configurator interface and formatted for better readability in the context of the A. Dux keyboard. | |||
To edit it, you may: | |||
* Edit it directly from a text editor. | |||
* Edit it from the qmk configurator. | |||
If you decide to use the latter workflow, here are the steps to follow: | |||
* From the qmk configurator, hit the "import QMK keymap json file" button (it has a drawing with an up arrow on it). | |||
* Browse to the location of your keymap (for example, `<your qmk repo>/keyboards/a_dux/keymaps/default/keymap.json`) | |||
* Perform any modification to the keymap in the web UI | |||
* Export the keymap to your downloads folder, by hitting the "Export QMK keymap json file" button (it has a drawing with a down arrow on it) | |||
* Override your original keymap with the output of formatting the exported keymap by running a command such as this one from the root of your qmk repo: | |||
``` | |||
./keyboards/a_dux/keymaps/json2crab.py --input <Your download directory>/default.json > ./keyboards/a_dux/keymaps/default/keymap.json | |||
``` | |||
Note that you may first need to make json2crab executable by using `chmod +x` on it. | |||
Also note that you may then want to remove the exported keymap from your dowload directory. |
@ -0,0 +1,130 @@ | |||
/* Copyright 2021 @jcmkk3 | |||
* | |||
* 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 "oneshot.h" | |||
#define LA_UPP OSL(UPP) | |||
#define LA_SYM OSL(SYM) | |||
#define LA_NAV MO(NAV) | |||
enum layers { | |||
DEF, | |||
UPP, | |||
SYM, | |||
NAV, | |||
NUM, | |||
}; | |||
enum keycodes { | |||
// Custom oneshot mod implementation with no timers. | |||
OS_SHFT = SAFE_RANGE, | |||
OS_CTRL, | |||
OS_ALT, | |||
OS_GUI, | |||
}; | |||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | |||
[DEF] = LAYOUT( | |||
KC_Y, KC_C, KC_L, KC_M, KC_K, KC_Z, KC_F, KC_U, KC_QUOT, KC_DQUO, | |||
KC_I, KC_S, KC_R, KC_T, KC_G, KC_P, KC_N, KC_E, KC_A, KC_O, | |||
KC_Q, KC_V, KC_W, KC_D, KC_J, KC_B, KC_H, KC_COMM, KC_DOT, KC_X, | |||
LA_NAV, KC_SPC, LA_UPP, LA_SYM | |||
), | |||
[UPP] = LAYOUT( | |||
S(KC_Y), S(KC_C), S(KC_L), S(KC_M), S(KC_K), S(KC_Z), S(KC_F), S(KC_U), KC_EXLM, KC_QUES, | |||
S(KC_I), S(KC_S), S(KC_R), S(KC_T), S(KC_G), S(KC_P), S(KC_N), S(KC_E), S(KC_A), S(KC_O), | |||
S(KC_Q), S(KC_V), S(KC_W), S(KC_D), S(KC_J), S(KC_B), S(KC_H), KC_SCLN, KC_COLN, S(KC_X), | |||
_______, _______, _______, _______ | |||
), | |||
[SYM] = LAYOUT( | |||
KC_LABK, KC_LCBR, KC_LBRC, KC_LPRN, KC_CIRC, KC_DLR, KC_RPRN, KC_RBRC, KC_RCBR, KC_RABK, | |||
KC_HASH, KC_UNDS, KC_EQL, KC_MINS, KC_PLUS, KC_AMPR, OS_CTRL, OS_SHFT, OS_ALT, OS_GUI, | |||
KC_PERC, KC_GRV, KC_TILD, KC_SLSH, KC_ASTR, KC_PIPE, KC_BSLS, KC_SCLN, KC_COLN, KC_AT, | |||
_______, _______, _______, _______ | |||
), | |||
[NAV] = LAYOUT( | |||
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_TAB, KC_UP, KC_ENT, KC_DEL, | |||
OS_GUI, OS_ALT, OS_SHFT, OS_CTRL, XXXXXXX, KC_HOME, KC_LEFT, KC_DOWN, KC_RGHT, KC_END, | |||
C(KC_Z), C(KC_X), C(KC_C), C(KC_V), XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, | |||
_______, _______, KC_BSPC, _______ | |||
), | |||
[NUM] = LAYOUT( | |||
KC_7, KC_5, KC_3, KC_1, KC_9, KC_8, KC_0, KC_2, KC_4, KC_6, | |||
OS_GUI, OS_ALT, OS_SHFT, OS_CTRL, XXXXXXX, XXXXXXX, OS_CTRL, OS_SHFT, OS_ALT, OS_GUI, | |||
XXXXXXX, XXXXXXX, XXXXXXX, KC_MINS, XXXXXXX, XXXXXXX, XXXXXXX, KC_COMM, KC_DOT, KC_SLSH, | |||
_______, _______, KC_BSPC, _______ | |||
), | |||
}; | |||
bool is_oneshot_cancel_key(uint16_t keycode) { | |||
switch (keycode) { | |||
case LA_SYM: | |||
case LA_NAV: | |||
return true; | |||
default: | |||
return false; | |||
} | |||
} | |||
bool is_oneshot_ignored_key(uint16_t keycode) { | |||
switch (keycode) { | |||
case LA_SYM: | |||
case LA_NAV: | |||
case KC_LSFT: | |||
case OS_SHFT: | |||
case OS_CTRL: | |||
case OS_ALT: | |||
case OS_GUI: | |||
return true; | |||
default: | |||
return false; | |||
} | |||
} | |||
oneshot_state os_shft_state = os_up_unqueued; | |||
oneshot_state os_ctrl_state = os_up_unqueued; | |||
oneshot_state os_alt_state = os_up_unqueued; | |||
oneshot_state os_gui_state = os_up_unqueued; | |||
bool process_record_user(uint16_t keycode, keyrecord_t *record) { | |||
update_oneshot( | |||
&os_shft_state, KC_LSFT, OS_SHFT, | |||
keycode, record | |||
); | |||
update_oneshot( | |||
&os_ctrl_state, KC_LCTL, OS_CTRL, | |||
keycode, record | |||
); | |||
update_oneshot( | |||
&os_alt_state, KC_LALT, OS_ALT, | |||
keycode, record | |||
); | |||
update_oneshot( | |||
&os_gui_state, KC_LGUI, OS_GUI, | |||
keycode, record | |||
); | |||
return true; | |||
} | |||
layer_state_t layer_state_set_user(layer_state_t state) { | |||
return update_tri_layer_state(state, SYM, NAV, NUM); | |||
} |
@ -0,0 +1,72 @@ | |||
/* Copyright 2021 @jcmkk3 | |||
* | |||
* 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 "oneshot.h" | |||
void update_oneshot( | |||
oneshot_state *state, | |||
uint16_t mod, | |||
uint16_t trigger, | |||
uint16_t keycode, | |||
keyrecord_t *record | |||
) { | |||
if (keycode == trigger) { | |||
if (record->event.pressed) { | |||
// Trigger keydown | |||
if (*state == os_up_unqueued) { | |||
register_code(mod); | |||
} | |||
*state = os_down_unused; | |||
} else { | |||
// Trigger keyup | |||
switch (*state) { | |||
case os_down_unused: | |||
// If we didn't use the mod while trigger was held, queue it. | |||
*state = os_up_queued; | |||
break; | |||
case os_down_used: | |||
// If we did use the mod while trigger was held, unregister it. | |||
*state = os_up_unqueued; | |||
unregister_code(mod); | |||
break; | |||
default: | |||
break; | |||
} | |||
} | |||
} else { | |||
if (record->event.pressed) { | |||
if (is_oneshot_cancel_key(keycode) && *state != os_up_unqueued) { | |||
// Cancel oneshot on designated cancel keydown. | |||
*state = os_up_unqueued; | |||
unregister_code(mod); | |||
} | |||
} else { | |||
if (!is_oneshot_ignored_key(keycode)) { | |||
// On non-ignored keyup, consider the oneshot used. | |||
switch (*state) { | |||
case os_down_unused: | |||
*state = os_down_used; | |||
break; | |||
case os_up_queued: | |||
*state = os_up_unqueued; | |||
unregister_code(mod); | |||
break; | |||
default: | |||
break; | |||
} | |||
} | |||
} | |||
} | |||
} |
@ -0,0 +1,46 @@ | |||
/* Copyright 2021 @jcmkk3 | |||
* | |||
* 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 QMK_KEYBOARD_H | |||
// Represents the four states a oneshot key can be in | |||
typedef enum { | |||
os_up_unqueued, | |||
os_up_queued, | |||
os_down_unused, | |||
os_down_used, | |||
} oneshot_state; | |||
// Custom oneshot mod implementation that doesn't rely on timers. If a mod is | |||
// used while it is held it will be unregistered on keyup as normal, otherwise | |||
// it will be queued and only released after the next non-mod keyup. | |||
void update_oneshot( | |||
oneshot_state *state, | |||
uint16_t mod, | |||
uint16_t trigger, | |||
uint16_t keycode, | |||
keyrecord_t *record | |||
); | |||
// To be implemented by the consumer. Defines keys to cancel oneshot mods. | |||
bool is_oneshot_cancel_key(uint16_t keycode); | |||
// To be implemented by the consumer. Defines keys to ignore when determining | |||
// whether a oneshot mod has been used. Setting this to modifiers and layer | |||
// change keys allows stacking multiple oneshot modifiers, and carrying them | |||
// between layers. | |||
bool is_oneshot_ignored_key(uint16_t keycode); |
@ -0,0 +1 @@ | |||
SRC += oneshot.c |
@ -0,0 +1,38 @@ | |||
# Architeuthis Dux | |||
![Architeuthis Dux](https://raw.githubusercontent.com/tapioki/cephalopoda/main/Images/architeuthis_dux.png) | |||
AKA A. dux, A.D., "Giant squid" | |||
34 keys, same stagger as [D. gigas](https://github.com/tapioki/cephalopoda/tree/main/Dosidicus%20gigas), but with two thumb keys included. Pinky, ring, index, and inner columns splayed at 15, 5, 0, -5, -5 degrees. SplitKB Tenting Puck support. All PCB files are available on the [project's github page](https://github.com/tapioki/cephalopoda/tree/main/Architeuthis%20dux) | |||
Thank you [Perce](https://madebyperce.com/) for the logo. | |||
## Cases can be found here: | |||
* [Flat Case](https://github.com/madebyperce/aduxcase) | |||
* [Tented Case](https://github.com/jdart/adux-tent) | |||
* [Case with Plates](https://github.com/sadekbaroudi/cephalopoda/tree/main/Architeuthis%20dux/case) | |||
## Keyboard Info | |||
* Keyboard Maintainer: [tapioki](https://github.com/tapioki) | |||
* Hardware Supported: Architeuthis Dux | |||
* Hardware Availability: [GitHub](https://github.com/tapioki/cephalopoda/tree/main/Architeuthis%20dux) | |||
Make examples for this keyboard (after setting up your build environment): | |||
make a_dux:default | |||
make a_dux:default:avrdude-split-left | |||
make a_dux:default:avrdude-split-right | |||
## Bootloader | |||
Enter the bootloader in 3 ways: | |||
* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (usually the top left key or Escape) and plug in the keyboard | |||
* **Physical reset**: Briefly short the RST and GND pins on the microcontroller using tweezers, a paperclip, or any other conductive material. | |||
* **Keycode in layout**: Press the key mapped to `RESET` if it is available | |||
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). |
@ -0,0 +1,23 @@ | |||
# MCU name | |||
MCU = atmega32u4 | |||
# Bootloader selection | |||
BOOTLOADER = atmel-dfu | |||
# Build Options | |||
# change yes to no to disable | |||
# | |||
BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite | |||
MOUSEKEY_ENABLE = yes # Mouse keys | |||
EXTRAKEY_ENABLE = yes # Audio control and System control | |||
CONSOLE_ENABLE = no # Console for debug | |||
COMMAND_ENABLE = no # Commands for debug and configuration | |||
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE | |||
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend | |||
# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work | |||
NKRO_ENABLE = yes # USB Nkey Rollover | |||
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality | |||
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow | |||
AUDIO_ENABLE = no # Audio output | |||
UNICODE_ENABLE = yes | |||
SPLIT_KEYBOARD = yes |
@ -1,30 +1,84 @@ | |||
{ | |||
"keyboard_name": "ALF X2", | |||
"url": "", | |||
"maintainer": "qmk", | |||
"keyboard_name": "ALF X2", | |||
"url": "", | |||
"maintainer": "qmk", | |||
"layouts": { | |||
"LAYOUT": { | |||
"layout": [{"x":1.5, "y":0}, {"x":2.5, "y":0}, {"label":"~", "x":0, "y":1}, {"label":"!", "x":1, "y":1}, {"label":"@", "x":2, "y":1}, {"label":"#", "x":3, "y":1}, {"label":"$", "x":4, "y":1}, {"label":"%", "x":5, "y":1}, {"label":"^", "x":6, "y":1}, {"label":"&", "x":7, "y":1}, {"label":"*", "x":8, "y":1}, {"label":"(", "x":9, "y":1}, {"label":")", "x":10, "y":1}, {"label":"_", "x":11, "y":1}, {"label":"+", "x":12, "y":1}, {"x":13, "y":1}, {"x":14, "y":1}, {"label":"Tab", "x":0, "y":2, "w":1.5}, {"label":"Q", "x":1.5, "y":2}, {"label":"W", "x":2.5, "y":2}, {"label":"E", "x":3.5, "y":2}, {"label":"R", "x":4.5, "y":2}, {"label":"T", "x":5.5, "y":2}, {"label":"Y", "x":6.5, "y":2}, {"label":"U", "x":7.5, "y":2}, {"label":"I", "x":8.5, "y":2}, {"label":"O", "x":9.5, "y":2}, {"label":"P", "x":10.5, "y":2}, {"label":"{", "x":11.5, "y":2}, {"label":"}", "x":12.5, "y":2}, {"label":"|", "x":13.5, "y":2, "w":1.5}, {"label":"Caps Lock", "x":0, "y":3, "w":1.75}, {"label":"A", "x":1.75, "y":3}, {"label":"S", "x":2.75, "y":3}, {"label":"D", "x":3.75, "y":3}, {"label":"F", "x":4.75, "y":3}, {"label":"G", "x":5.75, "y":3}, {"label":"H", "x":6.75, "y":3}, {"label":"J", "x":7.75, "y":3}, {"label":"K", "x":8.75, "y":3}, {"label":"L", "x":9.75, "y":3}, {"label":":", "x":10.75, "y":3}, {"label":"\"", "x":11.75, "y":3}, {"label":"Enter", "x":12.75, "y":3, "w":2.25}, {"x":0, "y":4}, {"x":1, "y":4}, {"label":"Z", "x":2, "y":4}, {"label":"X", "x":3, "y":4}, {"label":"C", "x":4, "y":4}, {"label":"V", "x":5, "y":4}, {"label":"B", "x":6, "y":4}, {"label":"N", "x":7, "y":4}, {"label":"M", "x":8, "y":4}, {"label":"<", "x":9, "y":4}, {"label":">", "x":10, "y":4}, {"label":"?", "x":11, "y":4}, {"x":12, "y":4}, {"x":13, "y":4}, {"x":14, "y":4}, {"label":"Ctrl", "x":0, "y":5, "w":1.25}, {"label":"Win", "x":1.25, "y":5, "w":1.25}, {"label":"Alt", "x":2.5, "y":5, "w":1.25}, {"x":3.75, "y":5, "w":6.25}, {"label":"Alt", "x":10, "y":5}, {"label":"Win", "x":11, "y":5}, {"label":"Menu", "x":12, "y":5}, {"label":"Ctrl", "x":13, "y":5}, {"x":14, "y":5}] | |||
}, | |||
"LAYOUT_all": { | |||
"layout": [ | |||
{"x":1.5, "y":0}, | |||
{"x":2.5, "y":0}, | |||
"LAYOUT_std_ansi": { | |||
"layout": [{"x":1.5, "y":0}, {"x":2.5, "y":0}, {"label":"~", "x":0, "y":1}, {"label":"!", "x":1, "y":1}, {"label":"@", "x":2, "y":1}, {"label":"#", "x":3, "y":1}, {"label":"$", "x":4, "y":1}, {"label":"%", "x":5, "y":1}, {"label":"^", "x":6, "y":1}, {"label":"&", "x":7, "y":1}, {"label":"*", "x":8, "y":1}, {"label":"(", "x":9, "y":1}, {"label":")", "x":10, "y":1}, {"label":"_", "x":11, "y":1}, {"label":"+", "x":12, "y":1}, {"label":"Backspace", "x":13, "y":1, "w":2}, {"label":"Tab", "x":0, "y":2, "w":1.5}, {"label":"Q", "x":1.5, "y":2}, {"label":"W", "x":2.5, "y":2}, {"label":"E", "x":3.5, "y":2}, {"label":"R", "x":4.5, "y":2}, {"label":"T", "x":5.5, "y":2}, {"label":"Y", "x":6.5, "y":2}, {"label":"U", "x":7.5, "y":2}, {"label":"I", "x":8.5, "y":2}, {"label":"O", "x":9.5, "y":2}, {"label":"P", "x":10.5, "y":2}, {"label":"{", "x":11.5, "y":2}, {"label":"}", "x":12.5, "y":2}, {"label":"|", "x":13.5, "y":2, "w":1.5}, {"label":"Caps Lock", "x":0, "y":3, "w":1.75}, {"label":"A", "x":1.75, "y":3}, {"label":"S", "x":2.75, "y":3}, {"label":"D", "x":3.75, "y":3}, {"label":"F", "x":4.75, "y":3}, {"label":"G", "x":5.75, "y":3}, {"label":"H", "x":6.75, "y":3}, {"label":"J", "x":7.75, "y":3}, {"label":"K", "x":8.75, "y":3}, {"label":"L", "x":9.75, "y":3}, {"label":":", "x":10.75, "y":3}, {"label":"\"", "x":11.75, "y":3}, {"label":"Enter", "x":12.75, "y":3, "w":2.25}, {"label":"Shift", "x":0, "y":4, "w":2.25}, {"label":"Z", "x":2.25, "y":4}, {"label":"X", "x":3.25, "y":4}, {"label":"C", "x":4.25, "y":4}, {"label":"V", "x":5.25, "y":4}, {"label":"B", "x":6.25, "y":4}, {"label":"N", "x":7.25, "y":4}, {"label":"M", "x":8.25, "y":4}, {"label":"<", "x":9.25, "y":4}, {"label":">", "x":10.25, "y":4}, {"label":"?", "x":11.25, "y":4}, {"label":"Shift", "x":12.25, "y":4, "w":2.75}, {"label":"Ctrl", "x":0, "y":5, "w":1.25}, {"label":"Win", "x":1.25, "y":5, "w":1.25}, {"label":"Alt", "x":2.5, "y":5, "w":1.25}, {"x":3.75, "y":5, "w":6.25}, {"label":"Alt", "x":10, "y":5, "w":1.25}, {"label":"Win", "x":11.25, "y":5, "w":1.25}, {"label":"Menu", "x":12.5, "y":5, "w":1.25}, {"label":"Ctrl", "x":13.75, "y":5, "w":1.25}] | |||
}, | |||
{"label":"~", "x":0, "y":1}, | |||
{"label":"!", "x":1, "y":1}, | |||
{"label":"@", "x":2, "y":1}, | |||
{"label":"#", "x":3, "y":1}, | |||
{"label":"$", "x":4, "y":1}, | |||
{"label":"%", "x":5, "y":1}, | |||
{"label":"^", "x":6, "y":1}, | |||
{"label":"&", "x":7, "y":1}, | |||
{"label":"*", "x":8, "y":1}, | |||
{"label":"(", "x":9, "y":1}, | |||
{"label":")", "x":10, "y":1}, | |||
{"label":"_", "x":11, "y":1}, | |||
{"label":"+", "x":12, "y":1}, | |||
{"x":13, "y":1}, | |||
{"x":14, "y":1}, | |||
"LAYOUT_std_splits": { | |||
"layout": [{"x":1.5, "y":0}, {"x":2.5, "y":0}, {"label":"~", "x":0, "y":1}, {"label":"!", "x":1, "y":1}, {"label":"@", "x":2, "y":1}, {"label":"#", "x":3, "y":1}, {"label":"$", "x":4, "y":1}, {"label":"%", "x":5, "y":1}, {"label":"^", "x":6, "y":1}, {"label":"&", "x":7, "y":1}, {"label":"*", "x":8, "y":1}, {"label":"(", "x":9, "y":1}, {"label":")", "x":10, "y":1}, {"label":"_", "x":11, "y":1}, {"label":"+", "x":12, "y":1}, {"x":13, "y":1}, {"x":14, "y":1}, {"label":"Tab", "x":0, "y":2, "w":1.5}, {"label":"Q", "x":1.5, "y":2}, {"label":"W", "x":2.5, "y":2}, {"label":"E", "x":3.5, "y":2}, {"label":"R", "x":4.5, "y":2}, {"label":"T", "x":5.5, "y":2}, {"label":"Y", "x":6.5, "y":2}, {"label":"U", "x":7.5, "y":2}, {"label":"I", "x":8.5, "y":2}, {"label":"O", "x":9.5, "y":2}, {"label":"P", "x":10.5, "y":2}, {"label":"{", "x":11.5, "y":2}, {"label":"}", "x":12.5, "y":2}, {"label":"|", "x":13.5, "y":2, "w":1.5}, {"label":"Caps Lock", "x":0, "y":3, "w":1.75}, {"label":"A", "x":1.75, "y":3}, {"label":"S", "x":2.75, "y":3}, {"label":"D", "x":3.75, "y":3}, {"label":"F", "x":4.75, "y":3}, {"label":"G", "x":5.75, "y":3}, {"label":"H", "x":6.75, "y":3}, {"label":"J", "x":7.75, "y":3}, {"label":"K", "x":8.75, "y":3}, {"label":"L", "x":9.75, "y":3}, {"label":":", "x":10.75, "y":3}, {"label":"\"", "x":11.75, "y":3}, {"label":"Enter", "x":12.75, "y":3, "w":2.25}, {"label":"Shift", "x":0, "y":4, "w":1.25}, {"x":1.25, "y":4}, {"label":"Z", "x":2.25, "y":4}, {"label":"X", "x":3.25, "y":4}, {"label":"C", "x":4.25, "y":4}, {"label":"V", "x":5.25, "y":4}, {"label":"B", "x":6.25, "y":4}, {"label":"N", "x":7.25, "y":4}, {"label":"M", "x":8.25, "y":4}, {"label":"<", "x":9.25, "y":4}, {"label":">", "x":10.25, "y":4}, {"label":"?", "x":11.25, "y":4}, {"label":"Shift", "x":12.25, "y":4, "w":1.75}, {"x":14, "y":4}, {"label":"Ctrl", "x":0, "y":5, "w":1.25}, {"label":"Win", "x":1.25, "y":5, "w":1.25}, {"label":"Alt", "x":2.5, "y":5, "w":1.25}, {"x":3.75, "y":5, "w":6.25}, {"label":"Alt", "x":10, "y":5, "w":1.25}, {"label":"Win", "x":11.25, "y":5, "w":1.25}, {"label":"Menu", "x":12.5, "y":5, "w":1.25}, {"label":"Ctrl", "x":13.75, "y":5, "w":1.25}] | |||
}, | |||
{"label":"Tab", "x":0, "y":2, "w":1.5}, | |||
{"label":"Q", "x":1.5, "y":2}, | |||
{"label":"W", "x":2.5, "y":2}, | |||
{"label":"E", "x":3.5, "y":2}, | |||
{"label":"R", "x":4.5, "y":2}, | |||
{"label":"T", "x":5.5, "y":2}, | |||
{"label":"Y", "x":6.5, "y":2}, | |||
{"label":"U", "x":7.5, "y":2}, | |||
{"label":"I", "x":8.5, "y":2}, | |||
{"label":"O", "x":9.5, "y":2}, | |||
{"label":"P", "x":10.5, "y":2}, | |||
{"label":"{", "x":11.5, "y":2}, | |||
{"label":"}", "x":12.5, "y":2}, | |||
{"label":"|", "x":13.5, "y":2, "w":1.5}, | |||
"LAYOUT_hhkb": { | |||
"layout": [{"x":1.5, "y":0}, {"x":2.5, "y":0}, {"label":"~", "x":0, "y":1}, {"label":"!", "x":1, "y":1}, {"label":"@", "x":2, "y":1}, {"label":"#", "x":3, "y":1}, {"label":"$", "x":4, "y":1}, {"label":"%", "x":5, "y":1}, {"label":"^", "x":6, "y":1}, {"label":"&", "x":7, "y":1}, {"label":"*", "x":8, "y":1}, {"label":"(", "x":9, "y":1}, {"label":")", "x":10, "y":1}, {"label":"_", "x":11, "y":1}, {"label":"+", "x":12, "y":1}, {"x":13, "y":1}, {"x":14, "y":1}, {"label":"Tab", "x":0, "y":2, "w":1.5}, {"label":"Q", "x":1.5, "y":2}, {"label":"W", "x":2.5, "y":2}, {"label":"E", "x":3.5, "y":2}, {"label":"R", "x":4.5, "y":2}, {"label":"T", "x":5.5, "y":2}, {"label":"Y", "x":6.5, "y":2}, {"label":"U", "x":7.5, "y":2}, {"label":"I", "x":8.5, "y":2}, {"label":"O", "x":9.5, "y":2}, {"label":"P", "x":10.5, "y":2}, {"label":"{", "x":11.5, "y":2}, {"label":"}", "x":12.5, "y":2}, {"label":"|", "x":13.5, "y":2, "w":1.5}, {"label":"Caps Lock", "x":0, "y":3, "w":1.75}, {"label":"A", "x":1.75, "y":3}, {"label":"S", "x":2.75, "y":3}, {"label":"D", "x":3.75, "y":3}, {"label":"F", "x":4.75, "y":3}, {"label":"G", "x":5.75, "y":3}, {"label":"H", "x":6.75, "y":3}, {"label":"J", "x":7.75, "y":3}, {"label":"K", "x":8.75, "y":3}, {"label":"L", "x":9.75, "y":3}, {"label":":", "x":10.75, "y":3}, {"label":"\"", "x":11.75, "y":3}, {"label":"Enter", "x":12.75, "y":3, "w":2.25}, {"label":"Shift", "x":0, "y":4, "w":2.25}, {"label":"Z", "x":2.25, "y":4}, {"label":"X", "x":3.25, "y":4}, {"label":"C", "x":4.25, "y":4}, {"label":"V", "x":5.25, "y":4}, {"label":"B", "x":6.25, "y":4}, {"label":"N", "x":7.25, "y":4}, {"label":"M", "x":8.25, "y":4}, {"label":"<", "x":9.25, "y":4}, {"label":">", "x":10.25, "y":4}, {"label":"?", "x":11.25, "y":4}, {"label":"Shift", "x":12.25, "y":4, "w":1.75}, {"x":14, "y":4}, {"label":"Win", "x":1.5, "y":5, "w":1.25}, {"label":"Alt", "x":2.75, "y":5, "w":1.5}, {"x":4.25, "y":5, "w":6.25}, {"label":"Alt", "x":10.5, "y":5, "w":1.5}, {"label":"Win", "x":12, "y":5, "w":1.25}] | |||
}, | |||
{"label":"Caps Lock", "x":0, "y":3, "w":1.75}, | |||
{"label":"A", "x":1.75, "y":3}, | |||
{"label":"S", "x":2.75, "y":3}, | |||
{"label":"D", "x":3.75, "y":3}, | |||
{"label":"F", "x":4.75, "y":3}, | |||
{"label":"G", "x":5.75, "y":3}, | |||
{"label":"H", "x":6.75, "y":3}, | |||
{"label":"J", "x":7.75, "y":3}, | |||
{"label":"K", "x":8.75, "y":3}, | |||
{"label":"L", "x":9.75, "y":3}, | |||
{"label":":", "x":10.75, "y":3}, | |||
{"label":"\"", "x":11.75, "y":3}, | |||
{"label":"Enter", "x":12.75, "y":3, "w":2.25}, | |||
"LAYOUT_split_arrows": { | |||
"layout": [{"x":1.5, "y":0}, {"x":2.5, "y":0}, {"label":"~", "x":0, "y":1}, {"label":"!", "x":1, "y":1}, {"label":"@", "x":2, "y":1}, {"label":"#", "x":3, "y":1}, {"label":"$", "x":4, "y":1}, {"label":"%", "x":5, "y":1}, {"label":"^", "x":6, "y":1}, {"label":"&", "x":7, "y":1}, {"label":"*", "x":8, "y":1}, {"label":"(", "x":9, "y":1}, {"label":")", "x":10, "y":1}, {"label":"_", "x":11, "y":1}, {"label":"+", "x":12, "y":1}, {"x":13, "y":1}, {"x":14, "y":1}, {"label":"Tab", "x":0, "y":2, "w":1.5}, {"label":"Q", "x":1.5, "y":2}, {"label":"W", "x":2.5, "y":2}, {"label":"E", "x":3.5, "y":2}, {"label":"R", "x":4.5, "y":2}, {"label":"T", "x":5.5, "y":2}, {"label":"Y", "x":6.5, "y":2}, {"label":"U", "x":7.5, "y":2}, {"label":"I", "x":8.5, "y":2}, {"label":"O", "x":9.5, "y":2}, {"label":"P", "x":10.5, "y":2}, {"label":"{", "x":11.5, "y":2}, {"label":"}", "x":12.5, "y":2}, {"label":"|", "x":13.5, "y":2, "w":1.5}, {"label":"Caps Lock", "x":0, "y":3, "w":1.75}, {"label":"A", "x":1.75, "y":3}, {"label":"S", "x":2.75, "y":3}, {"label":"D", "x":3.75, "y":3}, {"label":"F", "x":4.75, "y":3}, {"label":"G", "x":5.75, "y":3}, {"label":"H", "x":6.75, "y":3}, {"label":"J", "x":7.75, "y":3}, {"label":"K", "x":8.75, "y":3}, {"label":"L", "x":9.75, "y":3}, {"label":":", "x":10.75, "y":3}, {"label":"\"", "x":11.75, "y":3}, {"label":"Enter", "x":12.75, "y":3, "w":2.25}, {"label":"Shift", "x":0, "y":4, "w":1.25}, {"x":1.25, "y":4}, {"label":"Z", "x":2.25, "y":4}, {"label":"X", "x":3.25, "y":4}, {"label":"C", "x":4.25, "y":4}, {"label":"V", "x":5.25, "y":4}, {"label":"B", "x":6.25, "y":4}, {"label":"N", "x":7.25, "y":4}, {"label":"M", "x":8.25, "y":4}, {"label":"<", "x":9.25, "y":4}, {"label":">", "x":10.25, "y":4}, {"label":"?", "x":11.25, "y":4, "w":1.75}, {"x":13, "y":4}, {"x":14, "y":4}, {"label":"Ctrl", "x":0, "y":5, "w":1.25}, {"label":"Win", "x":1.25, "y":5, "w":1.25}, {"label":"Alt", "x":2.5, "y":5, "w":1.25}, {"x":3.75, "y":5, "w":6.25}, {"label":"Alt", "x":10, "y":5}, {"label":"Win", "x":11, "y":5}, {"label":"Menu", "x":12, "y":5}, {"label":"Ctrl", "x":13, "y":5}, {"x":14, "y":5}] | |||
}, | |||
{"label":"Shift", "x":0, "y":4}, | |||
{"x":1, "y":4}, | |||
{"label":"Z", "x":2, "y":4}, | |||
{"label":"X", "x":3, "y":4}, | |||
{"label":"C", "x":4, "y":4}, | |||
{"label":"V", "x":5, "y":4}, | |||
{"label":"B", "x":6, "y":4}, | |||
{"label":"N", "x":7, "y":4}, | |||
{"label":"M", "x":8, "y":4}, | |||
{"label":"<", "x":9, "y":4}, | |||
{"label":">", "x":10, "y":4}, | |||
{"label":"?", "x":11, "y":4}, | |||
{"x":12, "y":4}, | |||
{"x":13, "y":4}, | |||
{"x":14, "y":4}, | |||
"LAYOUT_2u_split_arrows": { | |||
"layout": [{"x":1.5, "y":0}, {"x":2.5, "y":0}, {"label":"~", "x":0, "y":1}, {"label":"!", "x":1, "y":1}, {"label":"@", "x":2, "y":1}, {"label":"#", "x":3, "y":1}, {"label":"$", "x":4, "y":1}, {"label":"%", "x":5, "y":1}, {"label":"^", "x":6, "y":1}, {"label":"&", "x":7, "y":1}, {"label":"*", "x":8, "y":1}, {"label":"(", "x":9, "y":1}, {"label":")", "x":10, "y":1}, {"label":"_", "x":11, "y":1}, {"label":"+", "x":12, "y":1}, {"x":13, "y":1}, {"x":14, "y":1}, {"label":"Tab", "x":0, "y":2, "w":1.5}, {"label":"Q", "x":1.5, "y":2}, {"label":"W", "x":2.5, "y":2}, {"label":"E", "x":3.5, "y":2}, {"label":"R", "x":4.5, "y":2}, {"label":"T", "x":5.5, "y":2}, {"label":"Y", "x":6.5, "y":2}, {"label":"U", "x":7.5, "y":2}, {"label":"I", "x":8.5, "y":2}, {"label":"O", "x":9.5, "y":2}, {"label":"P", "x":10.5, "y":2}, {"label":"{", "x":11.5, "y":2}, {"label":"}", "x":12.5, "y":2}, {"label":"|", "x":13.5, "y":2, "w":1.5}, {"label":"Caps Lock", "x":0, "y":3, "w":1.75}, {"label":"A", "x":1.75, "y":3}, {"label":"S", "x":2.75, "y":3}, {"label":"D", "x":3.75, "y":3}, {"label":"F", "x":4.75, "y":3}, {"label":"G", "x":5.75, "y":3}, {"label":"H", "x":6.75, "y":3}, {"label":"J", "x":7.75, "y":3}, {"label":"K", "x":8.75, "y":3}, {"label":"L", "x":9.75, "y":3}, {"label":":", "x":10.75, "y":3}, {"label":"\"", "x":11.75, "y":3}, {"label":"Enter", "x":12.75, "y":3, "w":2.25}, {"label":"Shift", "x":0, "y":4}, {"x":1, "y":4}, {"label":"Z", "x":2, "y":4}, {"label":"X", "x":3, "y":4}, {"label":"C", "x":4, "y":4}, {"label":"V", "x":5, "y":4}, {"label":"B", "x":6, "y":4}, {"label":"N", "x":7, "y":4}, {"label":"M", "x":8, "y":4}, {"label":"<", "x":9, "y":4}, {"label":">", "x":10, "y":4}, {"label":"?", "x":11, "y":4}, {"x":12, "y":4}, {"x":13, "y":4}, {"x":14, "y":4}, {"label":"Ctrl", "x":0, "y":5, "w":1.25}, {"label":"Win", "x":1.25, "y":5, "w":1.25}, {"label":"Alt", "x":2.5, "y":5, "w":1.25}, {"x":3.75, "y":5, "w":6.25}, {"label":"Alt", "x":10, "y":5}, {"label":"Win", "x":11, "y":5}, {"label":"Menu", "x":12, "y":5}, {"label":"Ctrl", "x":13, "y":5}, {"x":14, "y":5}] | |||
{"label":"Ctrl", "x":0, "y":5, "w":1.25}, | |||
{"label":"Win", "x":1.25, "y":5, "w":1.25}, | |||
{"label":"Alt", "x":2.5, "y":5, "w":1.25}, | |||
{"x":3.75, "y":5, "w":6.25}, | |||
{"label":"Alt", "x":10, "y":5}, | |||
{"label":"Win", "x":11, "y":5}, | |||
{"label":"Menu", "x":12, "y":5}, | |||
{"label":"Ctrl", "x":13, "y":5}, | |||
{"x":14, "y":5} | |||
] | |||
} | |||
} | |||
} |
@ -1,30 +1,39 @@ | |||
/* Copyright 2018-2021 @fixed, MechMerlin, QMK | |||
* | |||
* 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] = { | |||
LAYOUT( | |||
KC_VOLU, KC_VOLD, | |||
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_NO, KC_BSPC, | |||
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_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_LSFT, KC_NO, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_NO, KC_RSFT, KC_NO, | |||
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_NO, KC_APP, KC_RCTL), | |||
[0] = LAYOUT_all( | |||
KC_VOLU, KC_VOLD, | |||
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, XXXXXXX, KC_BSPC, | |||
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_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_LSFT, XXXXXXX, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, XXXXXXX, KC_RSFT, XXXXXXX, | |||
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), XXXXXXX, KC_APP, KC_RCTL | |||
), | |||
LAYOUT( | |||
KC_MNXT, KC_MPRV, | |||
KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_DEL, | |||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, KC_UP, KC_TRNS, RESET, | |||
KC_TRNS, KC_VOLD, KC_VOLU, KC_MUTE, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_HOME, KC_PGUP, KC_LEFT, KC_RGHT, KC_TRNS, | |||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_END, KC_PGDN, KC_DOWN, KC_DOWN, KC_TRNS, KC_TRNS, | |||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), | |||
}; | |||
[1] = LAYOUT_all( | |||
KC_MNXT, KC_MPRV, | |||
KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, KC_DEL, | |||
_______, _______, _______, _______, _______, _______, _______, _______, KC_PSCR, KC_SLCK, KC_PAUS, KC_UP, _______, RESET, | |||
_______, KC_VOLD, KC_VOLU, KC_MUTE, _______, _______, _______, _______, KC_HOME, KC_PGUP, KC_LEFT, KC_RGHT, _______, | |||
_______, _______, _______, _______, _______, _______, _______, _______, _______, KC_END, KC_PGDN, KC_DOWN, KC_DOWN, _______, _______, | |||
_______, _______, _______, _______, _______, _______, _______, _______, _______ | |||
), | |||
void led_set_user(uint8_t usb_led) { | |||
if (usb_led & (1 << USB_LED_CAPS_LOCK)) { | |||
setPinOutput(B2); | |||
writePinLow(B2); | |||
} else { | |||
setPinInput(B2); | |||
writePinLow(B2); | |||
} | |||
} | |||
}; |
@ -1,28 +1,39 @@ | |||
/* Copyright 2018-2021 @fixed, MechMerlin, QMK | |||
* | |||
* 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] = { | |||
LAYOUT( | |||
KC_VOLU, KC_VOLD, | |||
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_BSLS, KC_GRV, | |||
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_BSPC, | |||
KC_LCTL, 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_LSFT, KC_NO, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_NO, KC_RSFT, MO(1), | |||
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_NO, KC_APP, KC_RCTL), | |||
[0] = LAYOUT_all( | |||
KC_VOLU, KC_VOLD, | |||
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_BSLS, KC_GRV, | |||
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_BSPC, | |||
KC_LCTL, 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_LSFT, XXXXXXX, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, XXXXXXX, KC_RSFT, MO(1), | |||
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, XXXXXXX, KC_APP, KC_RCTL | |||
), | |||
LAYOUT( | |||
KC_MNXT, KC_MPRV, | |||
KC_NO, 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_INS, KC_DEL, | |||
KC_CAPS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, KC_UP, KC_TRNS, RESET, | |||
KC_TRNS, KC_VOLD, KC_VOLU, KC_MUTE, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_HOME, KC_PGUP, KC_LEFT, KC_RGHT, KC_TRNS, | |||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_END, KC_PGDN, KC_DOWN, KC_DOWN, KC_TRNS, KC_TRNS, | |||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), | |||
}; | |||
[1] = LAYOUT_all( | |||
KC_MNXT, KC_MPRV, | |||
KC_PWR, 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_INS, KC_DEL, | |||
KC_CAPS, _______, _______, _______, _______, _______, _______, _______, KC_PSCR, KC_SLCK, KC_PAUS, KC_UP, _______, RESET, | |||
_______, KC_VOLD, KC_VOLU, KC_MUTE, _______, _______, _______, _______, KC_HOME, KC_PGUP, KC_LEFT, KC_RGHT, _______, | |||
_______, _______, _______, _______, _______, _______, _______, _______, _______, KC_END, KC_PGDN, KC_DOWN, _______, _______, _______, | |||
_______, _______, _______, _______, _______, _______, _______, _______, _______ | |||
), | |||
void led_set_user(uint8_t usb_led) { | |||
if (usb_led & (1 << USB_LED_CAPS_LOCK)) { | |||
DDRB |= (1 << 2); PORTB &= ~(1 << 2); | |||
} else { | |||
DDRB &= ~(1 << 2); PORTB &= ~(1 << 2); | |||
} | |||
} | |||
}; |
@ -1 +1,17 @@ | |||
/* Copyright 2018 @fixed | |||
* | |||
* 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 "x2.h" |
@ -1,97 +1,38 @@ | |||
/* Copyright 2018-2021 @fixed, MechMerlin, QMK | |||
* | |||
* 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 XXX KC_NO | |||
// k44 and k48 are the microswitches at the top of the PCB | |||
#define LAYOUT( \ | |||
k44, k48, \ | |||
k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E, \ | |||
k10, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k1E, \ | |||
k20, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, \ | |||
k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, k3E, \ | |||
k40, k41, k43, k46, k4A, k4B, k4C, k4D, k4E \ | |||
) { \ | |||
{ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E }, \ | |||
{ k10, XXX, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k1E }, \ | |||
{ k20, XXX, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, XXX }, \ | |||
{ k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, k3E }, \ | |||
{ k40, k41, XXX, k43, k44, XXX, k46, XXX, k48, XXX, k4A, k4B, k4C, k4D, k4E } \ | |||
} | |||
#define LAYOUT_std_ansi( \ | |||
k44, k48, \ | |||
k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0E, \ | |||
k10, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k1E, \ | |||
k20, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, \ | |||
k30, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3D, \ | |||
k40, k41, k43, k46, k4A, k4B, k4D, k4E \ | |||
) { \ | |||
{ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, XXX, k0E }, \ | |||
{ k10, XXX, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k1E }, \ | |||
{ k20, XXX, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, XXX }, \ | |||
{ k30, XXX, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, XXX, k3D, XXX }, \ | |||
{ k40, k41, XXX, k43, k44, XXX, k46, XXX, k48, XXX, k4A, k4B, XXX, k4D, k4E } \ | |||
} | |||
#define LAYOUT_std_splits( \ | |||
k44, k48, \ | |||
k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E, \ | |||
k10, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k1E, \ | |||
k20, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, \ | |||
k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3D, k3E, \ | |||
k40, k41, k43, k46, k4A, k4B, k4D, k4E \ | |||
) { \ | |||
{ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E }, \ | |||
{ k10, XXX, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k1E }, \ | |||
{ k20, XXX, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, XXX }, \ | |||
{ k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, XXX, k3D, k3E }, \ | |||
{ k40, k41, XXX, k43, k44, XXX, k46, XXX, k48, XXX, k4A, k4B, XXX, k4D, k4E } \ | |||
} | |||
#define LAYOUT_hhkb( \ | |||
k44, k48, \ | |||
k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E, \ | |||
k10, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k1E, \ | |||
k20, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, \ | |||
k30, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3D, k3E, \ | |||
k41, k43, k46, k4A, k4B \ | |||
) { \ | |||
{ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E }, \ | |||
{ k10, XXX, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k1E }, \ | |||
{ k20, XXX, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, XXX }, \ | |||
{ k30, XXX, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, XXX, k3D, k3E }, \ | |||
{ XXX, k41, XXX, k43, k44, XXX, k46, XXX, k48, XXX, k4A, k4B, XXX, XXX, XXX } \ | |||
} | |||
#define ___ KC_NO | |||
#define LAYOUT_2u_split_arrows( \ | |||
k44, k48, \ | |||
k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E, \ | |||
k10, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k1E, \ | |||
k20, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, \ | |||
k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, k3E, \ | |||
k40, k41, k43, k46, k4A, k4B, k4C, k4D, k4E \ | |||
) { \ | |||
{ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E }, \ | |||
{ k10, XXX, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k1E }, \ | |||
{ k20, XXX, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, XXX }, \ | |||
{ k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, k3E }, \ | |||
{ k40, k41, XXX, k43, k44, XXX, k46, XXX, k48, XXX, k4A, k4B, k4C, k4D, k4E } \ | |||
} | |||
// K44 and K48 are the microswitches at the top of the PCB | |||
#define LAYOUT_split_arrows( \ | |||
k44, k48, \ | |||
k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E, \ | |||
k10, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k1E, \ | |||
k20, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, \ | |||
k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3D, k3E, \ | |||
k40, k41, k43, k46, k4A, k4B, k4C, k4D, k4E \ | |||
#define LAYOUT_all( \ | |||
K44, K48, \ | |||
K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, \ | |||
K10, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, \ | |||
K20, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, \ | |||
K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E, \ | |||
K40, K41, K43, K46, K4A, K4B, K4C, K4D, K4E \ | |||
) { \ | |||
{ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E }, \ | |||
{ k10, XXX, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k1E }, \ | |||
{ k20, XXX, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, XXX }, \ | |||
{ k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, XXX, k3D, k3E }, \ | |||
{ k40, k41, XXX, k43, k44, XXX, k46, XXX, k48, XXX, k4A, k4B, k4C, k4D, k4E } \ | |||
{ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E }, \ | |||
{ K10, ___, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E }, \ | |||
{ K20, ___, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, ___ }, \ | |||
{ K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E }, \ | |||
{ K40, K41, ___, K43, K44, ___, K46, ___, K48, ___, K4A, K4B, K4C, K4D, K4E } \ | |||
} |
@ -1,3 +0,0 @@ | |||
# Default Swift65 Solder Layout | |||
![](https://i.imgur.com/7Capi8W.png) |
@ -1,3 +0,0 @@ | |||
# Default Swift65 Solder Layout | |||
![](https://i.imgur.com/7Capi8W.png) |
@ -1,10 +1,122 @@ | |||
{ | |||
"keyboard_name": "AMJ96", | |||
"url": "", | |||
"maintainer": "qmk", | |||
"layouts": { | |||
"LAYOUT": { | |||
"layout": [{"label":"Esc", "x":0, "y":0}, {"label":"F1", "x":1, "y":0}, {"label":"F2", "x":2, "y":0}, {"label":"F3", "x":3, "y":0}, {"label":"F4", "x":4, "y":0}, {"label":"F5", "x":5, "y":0}, {"label":"F6", "x":6, "y":0}, {"label":"F7", "x":7, "y":0}, {"label":"F8", "x":8, "y":0}, {"label":"F9", "x":9, "y":0}, {"label":"F10", "x":10, "y":0}, {"label":"F11", "x":11, "y":0}, {"label":"F12", "x":12, "y":0}, {"label":"Print Screen", "x":13, "y":0}, {"label":"Pause", "x":14, "y":0}, {"label":"Ins", "x":15, "y":0}, {"label":"Del", "x":16, "y":0}, {"label":"Page Up", "x":17, "y":0}, {"label":"Page Down", "x":18, "y":0}, {"label":"` ~", "x":0, "y":1}, {"label":"1 !", "x":1, "y":1}, {"label":"2 @", "x":2, "y":1}, {"label":"3 #", "x":3, "y":1}, {"label":"4 $", "x":4, "y":1}, {"label":"5 %", "x":5, "y":1}, {"label":"6 ^", "x":6, "y":1}, {"label":"7 &", "x":7, "y":1}, {"label":"8 *", "x":8, "y":1}, {"label":"9 (", "x":9, "y":1}, {"label":"0 )", "x":10, "y":1}, {"label":"- _", "x":11, "y":1}, {"label":"= +", "x":12, "y":1}, {"label":"Back Space", "x":13, "y":1}, {"label":"Back Space 2", "x":14, "y":1}, {"label":"Num Lock", "x":15, "y":1}, {"label":"/", "x":16, "y":1}, {"label":"*", "x":17, "y":1}, {"label":"-", "x":18, "y":1}, {"label":"Tab", "x":0, "y":2, "w":1.5}, {"label":"Q", "x":1.5, "y":2}, {"label":"W", "x":2.5, "y":2}, {"label":"E", "x":3.5, "y":2}, {"label":"R", "x":4.5, "y":2}, {"label":"T", "x":5.5, "y":2}, {"label":"Y", "x":6.5, "y":2}, {"label":"U", "x":7.5, "y":2}, {"label":"I", "x":8.5, "y":2}, {"label":"O", "x":9.5, "y":2}, {"label":"P", "x":10.5, "y":2}, {"label":"[ {", "x":11.5, "y":2}, {"label":"] }", "x":12.5, "y":2}, {"label":"\\ |", "x":13.5, "y":2, "w":1.5}, {"label":"7", "x":15, "y":2}, {"label":"8", "x":16, "y":2}, {"label":"9", "x":17, "y":2}, {"label":"+", "x":18, "y":2}, {"label":"Caps Lock", "x":0, "y":3, "w":1.75}, {"label":"A", "x":1.75, "y":3}, {"label":"S", "x":2.75, "y":3}, {"label":"D", "x":3.75, "y":3}, {"label":"F", "x":4.75, "y":3}, {"label":"G", "x":5.75, "y":3}, {"label":"H", "x":6.75, "y":3}, {"label":"J", "x":7.75, "y":3}, {"label":"K", "x":8.75, "y":3}, {"label":"L", "x":9.75, "y":3}, {"label":"; :", "x":10.75, "y":3}, {"label":"' \"", "x":11.75, "y":3}, {"label":"Enter", "x":12.75, "y":3, "w":2.25}, {"label":"4", "x":15, "y":3}, {"label":"5", "x":16, "y":3}, {"label":"6", "x":17, "y":3}, {"label":"+", "x":18, "y":3}, {"label":"Shift", "x":0, "y":4, "w":1.25}, {"label":"ISO \\", "x":1.25, "y":4}, {"label":"Z", "x":2.25, "y":4}, {"label":"X", "x":3.25, "y":4}, {"label":"C", "x":4.25, "y":4}, {"label":"V", "x":5.25, "y":4}, {"label":"B", "x":6.25, "y":4}, {"label":"N", "x":7.25, "y":4}, {"label":"M", "x":8.25, "y":4}, {"label":", <", "x":9.25, "y":4}, {"label":". >", "x":10.25, "y":4}, {"label":"/ ?", "x":11.25, "y":4}, {"label":"Shift", "x":12.25, "y":4, "w":1.75}, {"label":"Up", "x":14, "y":4}, {"label":"1", "x":15, "y":4}, {"label":"2", "x":16, "y":4}, {"label":"3", "x":17, "y":4}, {"label":"Enter", "x":18, "y":4}, {"label":"Ctrl", "x":0, "y":5, "w":1.25}, {"label":"GUI", "x":1.25, "y":5, "w":1.25}, {"label":"Alt", "x":2.5, "y":5, "w":1.25}, {"label":"Space", "x":3.75, "y":5, "w":6.25}, {"label":"Alt", "x":10, "y":5, "w":1.5}, {"label":"Fn", "x":11.5, "y":5, "w":1.5}, {"label":"Left", "x":13, "y":5}, {"label":"Down", "x":14, "y":5}, {"label":"Right", "x":15, "y":5}, {"label":"0", "x":16, "y":5}, {"label":".", "x":17, "y":5}, {"label":"Enter", "x":18, "y":5}] | |||
"keyboard_name": "AMJ96", | |||
"url": "", | |||
"maintainer": "qmk", | |||
"layout_aliases": { | |||
"LAYOUT": "LAYOUT_all" | |||
}, | |||
"layouts": { | |||
"LAYOUT_all": { | |||
"layout": [ | |||
{"label":"Esc", "x":0, "y":0}, | |||
{"label":"F1", "x":1, "y":0}, | |||
{"label":"F2", "x":2, "y":0}, | |||
{"label":"F3", "x":3, "y":0}, | |||
{"label":"F4", "x":4, "y":0}, | |||
{"label":"F5", "x":5, "y":0}, | |||
{"label":"F6", "x":6, "y":0}, | |||
{"label":"F7", "x":7, "y":0}, | |||
{"label":"F8", "x":8, "y":0}, | |||
{"label":"F9", "x":9, "y":0}, | |||
{"label":"F10", "x":10, "y":0}, | |||
{"label":"F11", "x":11, "y":0}, | |||
{"label":"F12", "x":12, "y":0}, | |||
{"label":"Print Screen", "x":13, "y":0}, | |||
{"label":"Pause", "x":14, "y":0}, | |||
{"label":"Ins", "x":15, "y":0}, | |||
{"label":"Del", "x":16, "y":0}, | |||
{"label":"Page Up", "x":17, "y":0}, | |||
{"label":"Page Down", "x":18, "y":0}, | |||
{"label":"` ~", "x":0, "y":1}, | |||
{"label":"1 !", "x":1, "y":1}, | |||
{"label":"2 @", "x":2, "y":1}, | |||
{"label":"3 #", "x":3, "y":1}, | |||
{"label":"4 $", "x":4, "y":1}, | |||
{"label":"5 %", "x":5, "y":1}, | |||
{"label":"6 ^", "x":6, "y":1}, | |||
{"label":"7 &", "x":7, "y":1}, | |||
{"label":"8 *", "x":8, "y":1}, | |||
{"label":"9 (", "x":9, "y":1}, | |||
{"label":"0 )", "x":10, "y":1}, | |||
{"label":"- _", "x":11, "y":1}, | |||
{"label":"= +", "x":12, "y":1}, | |||
{"label":"Back Space", "x":13, "y":1}, | |||
{"label":"Back Space 2", "x":14, "y":1}, | |||
{"label":"Num Lock", "x":15, "y":1}, | |||
{"label":"/", "x":16, "y":1}, | |||
{"label":"*", "x":17, "y":1}, | |||
{"label":"-", "x":18, "y":1}, | |||
{"label":"Tab", "x":0, "y":2, "w":1.5}, | |||
{"label":"Q", "x":1.5, "y":2}, | |||
{"label":"W", "x":2.5, "y":2}, | |||
{"label":"E", "x":3.5, "y":2}, | |||
{"label":"R", "x":4.5, "y":2}, | |||
{"label":"T", "x":5.5, "y":2}, | |||
{"label":"Y", "x":6.5, "y":2}, | |||
{"label":"U", "x":7.5, "y":2}, | |||
{"label":"I", "x":8.5, "y":2}, | |||
{"label":"O", "x":9.5, "y":2}, | |||
{"label":"P", "x":10.5, "y":2}, | |||
{"label":"[ {", "x":11.5, "y":2}, | |||
{"label":"] }", "x":12.5, "y":2}, | |||
{"label":"\\ |", "x":13.5, "y":2, "w":1.5}, | |||
{"label":"7", "x":15, "y":2}, | |||
{"label":"8", "x":16, "y":2}, | |||
{"label":"9", "x":17, "y":2}, | |||
{"label":"+", "x":18, "y":2}, | |||
{"label":"Caps Lock", "x":0, "y":3, "w":1.75}, | |||
{"label":"A", "x":1.75, "y":3}, | |||
{"label":"S", "x":2.75, "y":3}, | |||
{"label":"D", "x":3.75, "y":3}, | |||
{"label":"F", "x":4.75, "y":3}, | |||
{"label":"G", "x":5.75, "y":3}, | |||
{"label":"H", "x":6.75, "y":3}, | |||
{"label":"J", "x":7.75, "y":3}, | |||
{"label":"K", "x":8.75, "y":3}, | |||
{"label":"L", "x":9.75, "y":3}, | |||
{"label":"; :", "x":10.75, "y":3}, | |||
{"label":"' \"", "x":11.75, "y":3}, | |||
{"label":"Enter", "x":12.75, "y":3, "w":2.25}, | |||
{"label":"4", "x":15, "y":3}, | |||
{"label":"5", "x":16, "y":3}, | |||
{"label":"6", "x":17, "y":3}, | |||
{"label":"+", "x":18, "y":3}, | |||
{"label":"Shift", "x":0, "y":4, "w":1.25}, | |||
{"label":"ISO \\", "x":1.25, "y":4}, | |||
{"label":"Z", "x":2.25, "y":4}, | |||
{"label":"X", "x":3.25, "y":4}, | |||
{"label":"C", "x":4.25, "y":4}, | |||
{"label":"V", "x":5.25, "y":4}, | |||
{"label":"B", "x":6.25, "y":4}, | |||
{"label":"N", "x":7.25, "y":4}, | |||
{"label":"M", "x":8.25, "y":4}, | |||
{"label":", <", "x":9.25, "y":4}, | |||
{"label":". >", "x":10.25, "y":4}, | |||
{"label":"/ ?", "x":11.25, "y":4}, | |||
{"label":"Shift", "x":12.25, "y":4, "w":1.75}, | |||
{"label":"Up", "x":14, "y":4}, | |||
{"label":"1", "x":15, "y":4}, | |||
{"label":"2", "x":16, "y":4}, | |||
{"label":"3", "x":17, "y":4}, | |||
{"label":"Enter", "x":18, "y":4}, | |||
{"label":"Ctrl", "x":0, "y":5, "w":1.25}, | |||
{"label":"GUI", "x":1.25, "y":5, "w":1.25}, | |||
{"label":"Alt", "x":2.5, "y":5, "w":1.25}, | |||
{"label":"Space", "x":3.75, "y":5, "w":6.25}, | |||
{"label":"Alt", "x":10, "y":5, "w":1.5}, | |||
{"label":"Fn", "x":11.5, "y":5, "w":1.5}, | |||
{"label":"Left", "x":13, "y":5}, | |||
{"label":"Down", "x":14, "y":5}, | |||
{"label":"Right", "x":15, "y":5}, | |||
{"label":"0", "x":16, "y":5}, | |||
{"label":".", "x":17, "y":5}, | |||
{"label":"Enter", "x":18, "y":5} | |||
] | |||
} | |||
} | |||
} | |||
} |
@ -1 +0,0 @@ | |||
# The default keymap for amj96 |
@ -0,0 +1,72 @@ | |||
/* | |||
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 0x4A56 | |||
#define PRODUCT_ID 0x0003 | |||
#define DEVICE_VER 0x0001 | |||
#define MANUFACTURER Maelkk | |||
#define PRODUCT Potato 65 Solderable | |||
/* key matrix size */ | |||
#define MATRIX_ROWS 5 | |||
#define MATRIX_COLS 15 | |||
/* key matrix pins */ | |||
#define MATRIX_ROW_PINS { F5, F4, F6, F0, D2 } | |||
#define MATRIX_COL_PINS { D3, D4, D6, D7, B4, B5, B6, F1, B0, B1, B2, B3, B7, D0, D1 } | |||
#define UNUSED_PINS | |||
/* COL2ROW or ROW2COL */ | |||
#define DIODE_DIRECTION COL2ROW | |||
/* Set 0 if debouncing isn't 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 | |||
#define RGB_DI_PIN D5 | |||
#ifdef RGB_DI_PIN | |||
# 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 | |||
# define RGBLIGHT_EFFECT_TWINKLE | |||
# define RGBLED_NUM 16 | |||
# define RGBLIGHT_HUE_STEP 8 | |||
# define RGBLIGHT_SAT_STEP 8 | |||
# define RGBLIGHT_VAL_STEP 8 | |||
# define RGBLIGHT_LIMIT_VAL 240 | |||
# define RGBLIGHT_SLEEP | |||
#endif |
@ -0,0 +1,83 @@ | |||
{ | |||
"keyboard_name": "Potato 65 Solderable", | |||
"url": "https://github.com/Aeonstrife/potato65solderable", | |||
"maintainer": "Maelkk", | |||
"layouts": { | |||
"LAYOUT_all": { | |||
"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.25 }, | |||
{ "x":11.25, "y":4, "w":1.25 }, | |||
{ "x":13, "y":4 }, | |||
{ "x":14, "y":4 }, | |||
{ "x":15, "y":4 } | |||
] | |||
} | |||
} | |||
} |
@ -0,0 +1,39 @@ | |||
/* 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_all( | |||
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL, 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_PGUP, | |||
MO(1), 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_PGDN, | |||
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_END, | |||
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT | |||
), | |||
[_FN1] = LAYOUT_all( | |||
KC_TILD, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_TRNS, KC_TRNS, | |||
KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, RESET, 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_VOLU, KC_MUTE, | |||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPRV, KC_VOLD, KC_MNXT | |||
) | |||
}; |
@ -0,0 +1,3 @@ | |||
# Default Potato65 Hotswap Layout | |||
This is the default layout for the Potato65 Hotswap keyboard. Largely based on the KBD67 layout. |
@ -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_all( | |||
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL, 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_PGUP, | |||
MO(1), 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_PGDN, | |||
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_END, | |||
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT | |||
), | |||
[_FN1] = LAYOUT_all( | |||
KC_TILD, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_TRNS, KC_TRNS, | |||
KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, RESET, 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_VOLU, KC_MUTE, | |||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPRV, KC_VOLD, KC_MNXT | |||
), | |||
[_FN2] = LAYOUT_all( | |||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, | |||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, | |||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, | |||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, | |||
_______, _______, _______, _______, _______, _______, _______, _______, _______ | |||
), | |||
[_FN3] = LAYOUT_all( | |||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, | |||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, | |||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, | |||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, | |||
_______, _______, _______, _______, _______, _______, _______, _______, _______ | |||
), | |||
}; |
@ -0,0 +1,3 @@ | |||
# Default Potato65 Layout | |||
This is the VIA layout for the Potato65 Hotswap Keyboard. Largely based on the KBD67 layout. |
@ -0,0 +1 @@ | |||
VIA_ENABLE = yes |
@ -0,0 +1,33 @@ | |||
/* 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_all( \ | |||
K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K212, K014, \ | |||
K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114, \ | |||
K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K213, K214, \ | |||
K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K312, K313, K314, \ | |||
K400, K401, K402, K403, K409, K410, K412, K413, K414 \ | |||
) { \ | |||
{ K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014 }, \ | |||
{ K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114 }, \ | |||
{ K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, K214 }, \ | |||
{ K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, KC_NO, K312, K313, K314 }, \ | |||
{ K400, K401, K402, K403, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, K409, K410, KC_NO, K412, K413, K414 } \ | |||
} |
@ -0,0 +1,24 @@ | |||
# Potato65 Solderable Keyboard | |||
![Potato65 Solderable](https://i.imgur.com/ysAGZCmh.jpg) | |||
A solderable gasket mount stacked acrylic 65% keyboard | |||
- Keyboard Maintainer: [Maelkk](https://github.com/Aeonstrife) | |||
- Hardware Supported: Potato65 Keyboard | |||
- Hardware Availability: Private Group-Buy | |||
Make example for this keyboard (after setting up your build environment): | |||
make buildakb/potato65s:default | |||
Flashing example for this keyboard: | |||
make buildakb/potato65s:default:flash | |||
To reset into bootloader mode: | |||
While plugged in, press the RESET switch located on the back of the pcb. | |||
The keyboard should now be in bootloader mode. | |||
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). |
@ -0,0 +1,21 @@ | |||
# MCU name | |||
MCU = atmega32u4 | |||
# Bootloader selection | |||
BOOTLOADER = atmel-dfu | |||
# Build Options | |||
# change yes to no to disable | |||
# | |||
BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite | |||
MOUSEKEY_ENABLE = 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 | |||
AUDIO_ENABLE = no # Audio output | |||
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow |
@ -0,0 +1,30 @@ | |||
/* Copyright 2021 Andrew Braini | |||
* | |||
* 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 "battleship_gamepad.h" | |||
#include "joystick.h" | |||
#include "analog.h" | |||
/* joystick config */ | |||
joystick_config_t joystick_axes[JOYSTICK_AXES_COUNT] = { | |||
[0] = JOYSTICK_AXIS_IN(F5, 1023, 512, 0), | |||
[1] = JOYSTICK_AXIS_IN(F4, 0, 512, 1023) | |||
}; | |||
/* joystick button code (thumbstick pressed) */ | |||
void keyboard_pre_init_kb(void) { | |||
setPinInputHigh(F6); | |||
} |
@ -0,0 +1,31 @@ | |||
/* Copyright 2021 Andrew Braini | |||
* | |||
* 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 "quantum.h" | |||
#define LAYOUT( \ | |||
K00, K01, K02, K03, K04, K05, K06, K07, \ | |||
K10, K11, K12, K13, K14, K15, K16, K17, \ | |||
K20, K21, K22, K23, K24, K25, K26, K27, \ | |||
K30, K31, K32, K33, K34, K35, K36, K37, \ | |||
K40, K41, K42, K43, K44, K45, K46, K47 \ | |||
) { \ | |||
{ K00, K01, K02, K03, K04, K05, K06, K07 }, \ | |||
{ K10, K11, K12, K13, K14, K15, K16, K17 }, \ | |||
{ K20, K21, K22, K23, K24, K25, K26, K27 }, \ | |||
{ K30, K31, K32, K33, K34, K35, K36, K37 }, \ | |||
{ K40, K41, K42, K43, K44, K45, K46, K47 } \ | |||
} |
@ -0,0 +1,52 @@ | |||
/* Copyright 2021 Andrew Braini | |||
* | |||
* 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 0x4142 | |||
#define PRODUCT_ID 0x0000 | |||
#define DEVICE_VER 0x0001 | |||
#define MANUFACTURER arbraini | |||
#define PRODUCT Battleship Gamepad | |||
/* key matrix size */ | |||
#define MATRIX_ROWS 5 | |||
#define MATRIX_COLS 8 | |||
/* key matrix pins */ | |||
#define MATRIX_ROW_PINS { B6, B2, B3, B1, F7 } | |||
#define MATRIX_COL_PINS { D1, D0, D4, C6, D7, E6, B4, B5 } | |||
#define UNUSED_PINS | |||
/* joystick configuration */ | |||
#define JOYSTICK_BUTTON_COUNT 25 | |||
#define JOYSTICK_AXES_COUNT 2 | |||
#define JOYSTICK_AXES_RESOLUTION 10 | |||
/* COL2ROW or ROW2COL */ | |||
#define DIODE_DIRECTION COL2ROW | |||
/* Set 0 if debouncing isn't 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 |
@ -0,0 +1,215 @@ | |||
{ | |||
"keyboard_name": "Battleship Gamepad", | |||
"url": "https://github.com/abraini-Nascent/battleship_gamepad", | |||
"maintainer": "arbraini", | |||
"layouts": { | |||
"LAYOUT": { | |||
"layout": [ | |||
{ | |||
"label": "F1", | |||
"x": 0, | |||
"y": 0 | |||
}, | |||
{ | |||
"label": "F2", | |||
"x": 1, | |||
"y": 0 | |||
}, | |||
{ | |||
"label": "Esc", | |||
"x": 2.25, | |||
"y": 0, | |||
"w": 1.25 | |||
}, | |||
{ | |||
"label": "!", | |||
"x": 3.5, | |||
"y": 0 | |||
}, | |||
{ | |||
"label": "@", | |||
"x": 4.5, | |||
"y": 0 | |||
}, | |||
{ | |||
"label": "#", | |||
"x": 5.5, | |||
"y": 0 | |||
}, | |||
{ | |||
"label": "$", | |||
"x": 6.5, | |||
"y": 0 | |||
}, | |||
{ | |||
"label": "%", | |||
"x": 7.5, | |||
"y": 0 | |||
}, | |||
{ | |||
"label": "F3", | |||
"x": 0, | |||
"y": 1 | |||
}, | |||
{ | |||
"label": "F4", | |||
"x": 1, | |||
"y": 1 | |||
}, | |||
{ | |||
"label": "Tab", | |||
"x": 2.25, | |||
"y": 1, | |||
"w": 1.25 | |||
}, | |||
{ | |||
"label": "Q", | |||
"x": 3.5, | |||
"y": 1 | |||
}, | |||
{ | |||
"label": "W", | |||
"x": 4.5, | |||
"y": 1 | |||
}, | |||
{ | |||
"label": "E", | |||
"x": 5.5, | |||
"y": 1 | |||
}, | |||
{ | |||
"label": "R", | |||
"x": 6.5, | |||
"y": 1 | |||
}, | |||
{ | |||
"label": "T", | |||
"x": 7.5, | |||
"y": 1 | |||
}, | |||
{ | |||
"label": "F5", | |||
"x": 0, | |||
"y": 2 | |||
}, | |||
{ | |||
"label": "F6", | |||
"x": 1, | |||
"y": 2 | |||
}, | |||
{ | |||
"label": "Caps<br>Lock", | |||
"x": 2.25, | |||
"y": 2, | |||
"w": 1.25 | |||
}, | |||
{ | |||
"label": "A", | |||
"x": 3.5, | |||
"y": 2 | |||
}, | |||
{ | |||
"label": "S", | |||
"x": 4.5, | |||
"y": 2 | |||
}, | |||
{ | |||
"label": "D", | |||
"x": 5.5, | |||
"y": 2 | |||
}, | |||
{ | |||
"label": "F", | |||
"x": 6.5, | |||
"y": 2 | |||
}, | |||
{ | |||
"label": "G", | |||
"x": 7.5, | |||
"y": 2 | |||
}, | |||
{ | |||
"label": "F7", | |||
"x": 0, | |||
"y": 3 | |||
}, | |||
{ | |||
"label": "F8", | |||
"x": 1, | |||
"y": 3 | |||
}, | |||
{ | |||
"label": "Shift", | |||
"x": 2.25, | |||
"y": 3, | |||
"w": 1.25 | |||
}, | |||
{ | |||
"label": "Z", | |||
"x": 3.5, | |||
"y": 3 | |||
}, | |||
{ | |||
"label": "X", | |||
"x": 4.5, | |||
"y": 3 | |||
}, | |||
{ | |||
"label": "C", | |||
"x": 5.5, | |||
"y": 3 | |||
}, | |||
{ | |||
"label": "V", | |||
"x": 6.5, | |||
"y": 3 | |||
}, | |||
{ | |||
"label": "B", | |||
"x": 7.5, | |||
"y": 3 | |||
}, | |||
{ | |||
"label": "F9", | |||
"x": 0, | |||
"y": 4 | |||
}, | |||
{ | |||
"label": "F10", | |||
"x": 1, | |||
"y": 4 | |||
}, | |||
{ | |||
"label": "", | |||
"x": 2.25, | |||
"y": 4, | |||
"w": 1.25 | |||
}, | |||
{ | |||
"label": "Ctrl", | |||
"x": 3.5, | |||
"y": 4 | |||
}, | |||
{ | |||
"label": "Alt", | |||
"x": 4.5, | |||
"y": 4 | |||
}, | |||
{ | |||
"label": "\u21e9", | |||
"x": 5.5, | |||
"y": 4 | |||
}, | |||
{ | |||
"label": "\u21e7", | |||
"x": 6.5, | |||
"y": 4 | |||
}, | |||
{ | |||
"x": 7.5, | |||
"y": 4 | |||
} | |||
] | |||
} | |||
} | |||
} |
@ -0,0 +1,41 @@ | |||
/* Copyright 2021 Andrew Braini | |||
* | |||
* 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_F1, KC_F2, KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, | |||
KC_F3, KC_F4, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, | |||
KC_F5, KC_F6, KC_NO, KC_A, KC_S, KC_D, KC_F, KC_G, | |||
KC_F7, KC_F8, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, | |||
KC_F9, KC_F10, LT(1, KC_NO), KC_LCTL, KC_LALT, KC_NO, LT(1, KC_NO), KC_SPC), | |||
[1] = LAYOUT( | |||
RESET, DEBUG, KC_TILD, KC_6, KC_7, KC_8, KC_9, KC_0, | |||
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_F11, KC_F12, KC_TRNS, KC_TRNS, KC_TRNS, TG(2), KC_TRNS, KC_TRNS), | |||
[2] = LAYOUT( | |||
KC_TRNS, KC_TRNS, TG(2), JS_BUTTON0, JS_BUTTON1, JS_BUTTON2, JS_BUTTON3, JS_BUTTON4, | |||
KC_TRNS, KC_TRNS, KC_TRNS, JS_BUTTON5, JS_BUTTON6, JS_BUTTON7, JS_BUTTON8, JS_BUTTON9, | |||
KC_TRNS, KC_TRNS, KC_TRNS, JS_BUTTON10, JS_BUTTON11, JS_BUTTON12, JS_BUTTON13, JS_BUTTON14, | |||
KC_TRNS, KC_TRNS, KC_TRNS, JS_BUTTON15, JS_BUTTON16, JS_BUTTON17, JS_BUTTON18, JS_BUTTON19, | |||
KC_TRNS, KC_TRNS, KC_TRNS, JS_BUTTON20, JS_BUTTON21, JS_BUTTON22, JS_BUTTON23, JS_BUTTON24) | |||
}; |
@ -0,0 +1,2 @@ | |||
# Battleship Gamepad - Default layout | |||
Default layout with 2 axies thumbstick and press to click |
@ -0,0 +1,48 @@ | |||
/* Copyright 2021 Andrew Braini | |||
* | |||
* 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_F1, KC_F2, KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, | |||
KC_F3, KC_F4, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, | |||
KC_F5, KC_F6, KC_NO, KC_A, KC_S, KC_D, KC_F, KC_G, | |||
KC_F7, KC_F8, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, | |||
KC_F9, KC_F10, LT(1, KC_NO), KC_LCTL, KC_LALT, LT(2, KC_NO), LT(1, KC_NO), KC_SPC), | |||
[1] = LAYOUT( | |||
RESET, DEBUG, KC_TILD, KC_6, KC_7, KC_8, KC_9, KC_0, | |||
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_F11, KC_F12, 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, 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, KC_TRNS, KC_TRNS, | |||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS) | |||
}; |
@ -0,0 +1,2 @@ | |||
VIA_ENABLE = yes | |||
CONSOLE_ENABLE = no |
@ -0,0 +1,29 @@ | |||
# Battleship Gamepad | |||
![Battleship Gamepad](https://imgur.com/FCpQfzQ.jpg) | |||
A hand-wired 3d-printed mechanical keyboard intended for one hand with an analog thumbstick for movement. The layout matches the left side of large "battleship" keyboards with their extra bank of 2x5 1u F keys. | |||
Build instructions and 3d printer files can be found in the [project github repo](https://github.com/abraini-Nascent/battleship_gamepad) | |||
* Keyboard Maintainer: [arbraini](https://github.com/abraini-Nascent) | |||
* Hardware Supported: Arduino Pro Micro | |||
* Features: 40 keys in an ortho layout and an analog thumbstick. | |||
Make example for this keyboard (after setting up your build environment): | |||
make handwired/battleship_gamepad:default | |||
Flashing example for this keyboard: | |||
make handwired/battleship_gamepad:flash | |||
## Bootloader | |||
Enter the bootloader in 3 ways: | |||
* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (the top left key in the 2x5 bank) and plug in the keyboard. | |||
* **Physical reset button**: Briefly press the button on the back of the PCB - some may have pads you must short instead. | |||
* **Keycode in layout**: Press the key mapped to `RESET`. In the default layout this is the key at (0,0) on layer 1. | |||
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). |
@ -0,0 +1,25 @@ | |||
# MCU name | |||
MCU = atmega32u4 | |||
# Bootloader selection | |||
BOOTLOADER = caterina | |||
SRC += analog.c | |||
# Build Options | |||
# change yes to no to disable | |||
# | |||
BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite | |||
MOUSEKEY_ENABLE = yes # Mouse keys | |||
EXTRAKEY_ENABLE = yes # Audio control and System control | |||
CONSOLE_ENABLE = no # Console for debug | |||
COMMAND_ENABLE = no # Commands for debug and configuration | |||
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE | |||
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend | |||
# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work | |||
NKRO_ENABLE = yes # USB Nkey Rollover | |||
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality | |||
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow | |||
AUDIO_ENABLE = no # Audio output | |||
JOYSTICK_ENABLE = yes | |||
JOYSTICK_DRIVER = analog |
@ -0,0 +1,61 @@ | |||
/* Copyright 2020 QMK | |||
* | |||
* 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/>. | |||
*/ | |||
/* | |||
* This file was auto-generated by: | |||
* `qmk chibios-confmigrate -i keyboards/phrygian/ph100/chconf.h -r platforms/chibios/common/configs/chconf.h` | |||
*/ | |||
#pragma once | |||
#define CH_CFG_ST_FREQUENCY 10000 | |||
#define CH_CFG_USE_REGISTRY TRUE | |||
#define CH_CFG_USE_WAITEXIT TRUE | |||
#define CH_CFG_USE_CONDVARS TRUE | |||
#define CH_CFG_USE_MESSAGES TRUE | |||
#define CH_CFG_USE_MAILBOXES TRUE | |||
#define CH_CFG_USE_HEAP TRUE | |||
#define CH_CFG_USE_MEMPOOLS TRUE | |||
#define CH_CFG_USE_OBJ_FIFOS TRUE | |||
#define CH_CFG_USE_PIPES TRUE | |||
#define CH_CFG_USE_DYNAMIC TRUE | |||
#define CH_CFG_USE_FACTORY TRUE | |||
#define CH_CFG_FACTORY_OBJECTS_REGISTRY TRUE | |||
#define CH_CFG_FACTORY_GENERIC_BUFFERS TRUE | |||
#define CH_CFG_FACTORY_SEMAPHORES TRUE | |||
#define CH_CFG_FACTORY_MAILBOXES TRUE | |||
#define CH_CFG_FACTORY_OBJ_FIFOS TRUE | |||
#define CH_CFG_FACTORY_PIPES TRUE | |||
#include_next <chconf.h> | |||
@ -0,0 +1,43 @@ | |||
/* Copyright 2021 Phrygian Design | |||
* | |||
* 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 0x0C61 | |||
#define DEVICE_VER 0x0100 | |||
#define MANUFACTURER PhrygianDesign | |||
#define PRODUCT ph100 | |||
/* key matrix size */ | |||
#define MATRIX_ROWS 10 | |||
#define MATRIX_COLS 10 | |||
#define MATRIX_ROW_PINS { B0, B1, B2, B3, B4, B5, B6, B7, B8, B9 } | |||
#define MATRIX_COL_PINS { A0, A1, A2, A3, A4, A5, A6, A7, A8, A9 } | |||
/* COL2ROW, ROW2COL */ | |||
#define DIODE_DIRECTION COL2ROW | |||
/* Define capslock and numlock */ | |||
#define LED_NUM_LOCK_PIN B14 | |||
#define LED_CAPS_LOCK_PIN B15 | |||
/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ | |||
#define DEBOUNCE 10 |
@ -0,0 +1,37 @@ | |||
/* Copyright 2020 QMK | |||
* | |||
* 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/>. | |||
*/ | |||
/* | |||
* This file was auto-generated by: | |||
* `qmk chibios-confmigrate -i keyboards/phrygian/ph100/halconf.h -r platforms/chibios/common/configs/halconf.h` | |||
*/ | |||
#pragma once | |||
#define HAL_USE_SERIAL_USB TRUE | |||
#define ADC_USE_WAIT FALSE | |||
#define ADC_USE_MUTUAL_EXCLUSION FALSE | |||
#define SERIAL_USB_BUFFERS_SIZE 256 | |||
#define SPI_USE_WAIT FALSE | |||
#define SPI_USE_MUTUAL_EXCLUSION FALSE | |||
#include_next <halconf.h> | |||
@ -0,0 +1,111 @@ | |||
{ | |||
"keyboard_name": "ph100", | |||
"url": "https://phrygiandesign.com/products/ph100-mechanical-keyboard", | |||
"maintainer": "phrygiandesign", | |||
"layouts": { | |||
"LAYOUT": { | |||
"layout": [ | |||
{"label":"ESCAPE", "x":0, "y":0}, | |||
{"label":"F1", "x":2, "y":0}, | |||
{"label":"F2", "x":3, "y":0}, | |||
{"label":"F3", "x":4, "y":0}, | |||
{"label":"F4", "x":5, "y":0}, | |||
{"label":"F5", "x":6.5, "y":0}, | |||
{"label":"F6", "x":7.5, "y":0}, | |||
{"label":"F7", "x":8.5, "y":0}, | |||
{"label":"F8", "x":9.5, "y":0}, | |||
{"label":"F9", "x":11, "y":0}, | |||
{"label":"F10", "x":12, "y":0}, | |||
{"label":"F11", "x":13, "y":0}, | |||
{"label":"F12", "x":14, "y":0}, | |||
{"label":"HOME", "x":15.25, "y":0}, | |||
{"label":"PRINT SCREEN", "x":16.25, "y":0}, | |||
{"label":"BACKTICK", "x":0, "y":1}, | |||
{"label":"1", "x":1, "y":1}, | |||
{"label":"2", "x":2, "y":1}, | |||
{"label":"3", "x":3, "y":1}, | |||
{"label":"4", "x":4, "y":1}, | |||
{"label":"5", "x":5, "y":1}, | |||
{"label":"6", "x":6, "y":1}, | |||
{"label":"7", "x":7, "y":1}, | |||
{"label":"8", "x":8, "y":1}, | |||
{"label":"9", "x":9, "y":1}, | |||
{"label":"0", "x":10, "y":1}, | |||
{"label":"MINUS", "x":11, "y":1}, | |||
{"label":"EQUALS", "x":12, "y":1}, | |||
{"label":"BACKSPACE", "x":13, "y":1, "w":2}, | |||
{"label":"END", "x":15.25, "y":1}, | |||
{"label":"PAGE UP", "x":16.25, "y":1}, | |||
{"label":"NUM LOCK", "x":17.5, "y":1}, | |||
{"label":"/", "x":18.5, "y":1}, | |||
{"label":"*", "x":19.5, "y":1}, | |||
{"label":"-", "x":20.5, "y":1}, | |||
{"label":"TAB", "x":0, "y":2, "w":1.5}, | |||
{"label":"Q", "x":1.5, "y":2}, | |||
{"label":"W", "x":2.5, "y":2}, | |||
{"label":"E", "x":3.5, "y":2}, | |||
{"label":"R", "x":4.5, "y":2}, | |||
{"label":"T", "x":5.5, "y":2}, | |||
{"label":"Y", "x":6.5, "y":2}, | |||
{"label":"U", "x":7.5, "y":2}, | |||
{"label":"I", "x":8.5, "y":2}, | |||
{"label":"O", "x":9.5, "y":2}, | |||
{"label":"P", "x":10.5, "y":2}, | |||
{"label":"LEFT BRACKET", "x":11.5, "y":2}, | |||
{"label":"RIGHT BRACKET", "x":12.5, "y":2}, | |||
{"label":"BACK SLASH", "x":13.5, "y":2, "w":1.5}, | |||
{"label":"DELETE", "x":15.25, "y":2}, | |||
{"label":"PAGE DOWN", "x":16.25, "y":2}, | |||
{"label":"7", "x":17.5, "y":2}, | |||
{"label":"8", "x":18.5, "y":2}, | |||
{"label":"9", "x":19.5, "y":2}, | |||
{"label":"+", "x":20.5, "y":2, "h":2}, | |||
{"label":"CAPS LOCK", "x":0, "y":3, "w":1.75}, | |||
{"label":"A", "x":1.75, "y":3}, | |||
{"label":"S", "x":2.75, "y":3}, | |||
{"label":"D", "x":3.75, "y":3}, | |||
{"label":"F", "x":4.75, "y":3}, | |||
{"label":"G", "x":5.75, "y":3}, | |||
{"label":"H", "x":6.75, "y":3}, | |||
{"label":"J", "x":7.75, "y":3}, | |||
{"label":"K", "x":8.75, "y":3}, | |||
{"label":"L", "x":9.75, "y":3}, | |||
{"label":"SEMICOLON", "x":10.75, "y":3}, | |||
{"label":"SINGLE TICK", "x":11.75, "y":3}, | |||
{"label":"ENTER", "x":12.75, "y":3, "w":2.25}, | |||
{"label":"4", "x":17.5, "y":3}, | |||
{"label":"5", "x":18.5, "y":3}, | |||
{"label":"6", "x":19.5, "y":3}, | |||
{"label":"LEFT SHIFT", "x":0, "y":4, "w":2.25}, | |||
{"label":"Z", "x":2.25, "y":4}, | |||
{"label":"X", "x":3.25, "y":4}, | |||
{"label":"C", "x":4.25, "y":4}, | |||
{"label":"V", "x":5.25, "y":4}, | |||
{"label":"B", "x":6.25, "y":4}, | |||
{"label":"N", "x":7.25, "y":4}, | |||
{"label":"M", "x":8.25, "y":4}, | |||
{"label":"COMMA", "x":9.25, "y":4}, | |||
{"label":"PERIOD", "x":10.25, "y":4}, | |||
{"label":"FORWARD SLASH", "x":11.25, "y":4}, | |||
{"label":"RIGHT SHIFT", "x":12.25, "y":4, "w":2.25}, | |||
{"label":"UP ARROW", "x":15.25, "y":4}, | |||
{"label":"1", "x":17.5, "y":4}, | |||
{"label":"2", "x":18.5, "y":4}, | |||
{"label":"3", "x":19.5, "y":4}, | |||
{"label":"ENTER", "x":20.5, "y":4, "h":2}, | |||
{"label":"LEFT CTRL", "x":0, "y":5, "w":1.25}, | |||
{"label":"LEFT WIN", "x":1.25, "y":5, "w":1.25}, | |||
{"label":"LEFT ALT", "x":2.5, "y":5, "w":1.25}, | |||
{"label":"SPACEBAR", "x":3.75, "y":5, "w":6.25}, | |||
{"label":"RIGHT ALT", "x":10, "y":5, "w":1.25}, | |||
{"label":"RIGHT CTRL", "x":11.25, "y":5, "w":1.25}, | |||
{"label":"FN", "x":12.5, "y":5}, | |||
{"label":"LEFT ARROW", "x":14.25, "y":5}, | |||
{"label":"DOWN ARROW", "x":15.25, "y":5}, | |||
{"label":"RIGHT ARROW", "x":16.25, "y":5}, | |||
{"label":"0", "x":17.5, "y":5, "w":2}, | |||
{"label":".", "x":19.5, "y":5} | |||
] | |||
} | |||
} | |||
} |
@ -0,0 +1,27 @@ | |||
/* Copyright 2021 Phrygian Design | |||
* | |||
* 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_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_PGUP, | |||
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL, KC_PGDN, KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS, | |||
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_HOME, KC_END, KC_P7, KC_P8, KC_P9, | |||
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_P4, KC_P5, KC_P6, KC_PPLS, | |||
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_P1, KC_P2, KC_P3, | |||
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RCTL, KC_APP, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT) | |||
}; |
@ -0,0 +1,19 @@ | |||
/* Copyright 2021 Phrygian Design | |||
* | |||
* 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 "ph100.h" | |||
//Put software here |
@ -0,0 +1,44 @@ | |||
/* Copyright 2021 Phrygian Design | |||
* | |||
* 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 | |||
#define XXX KC_NO | |||
#include "quantum.h" | |||
// This a shortcut to help you visually see your layout. | |||
#define LAYOUT(\ | |||
K01, K02, K03, K04, K05, K06, K07, K08, K09, K10, K61, K62, K63, K64, K65, \ | |||
K11, K12, K13, K14, K15, K16, K17, K18, K19, K20, K71, K72, K73, K74, K75, K76, K66, K67, K68, K69, \ | |||
K21, K22, K23, K24, K25, K26, K27, K28, K29, K30, K81, K82, K83, K84, K85, K86, K77, K78, K79, \ | |||
K31, K32, K33, K34, K35, K36, K37, K38, K39, K40, K91, K93, K95, K87, K88, K80, K70, \ | |||
K41, K42, K43, K44, K45, K46, K47, K48, K49, K50, K92, K94, K96, K97, K89, K90, \ | |||
K51, K52, K53, K54, K55, K56, K57, K58, K59, K60, K98, K99, K100\ | |||
){ \ | |||
{ K01, K02, K03, K04, K05, K06, K07, K08, K09, K10 }, \ | |||
{ K11, K12, K13, K14, K15, K16, K17, K18, K19, K20 }, \ | |||
{ K21, K22, K23, K24, K25, K26, K27, K28, K29, K30 }, \ | |||
{ K31, K32, K33, K34, K35, K36, K37, K38, K39, K40 }, \ | |||
{ K41, K42, K43, K44, K45, K46, K47, K48, K49, K50 }, \ | |||
{ K51, K52, K53, K54, K55, K56, K57, K58, K59, K60 }, \ | |||
{ K61, K62, K63, K64, K65, K66, K67, K68, K69, K70 }, \ | |||
{ K71, K72, K73, K74, K75, K76, K77, K78, K79, K80 }, \ | |||
{ K81, K82, K83, K84, K85, K86, K87, K88, K89, K90 }, \ | |||
{ K91, K92, K93, K94, K95, K96, K97, K98, K99, K100 }, \ | |||
} | |||
@ -0,0 +1,20 @@ | |||
## Phrygian Design ph100 | |||
![ph100](https://cdn.shopify.com/s/files/1/0470/8814/0443/products/DSCF0064_1080x.png) | |||
The ph100 is a 100-key modular keyboard from Phrygian Design. | |||
* Keyboard Maintainer: https://github.com/phrygiandesign | |||
* Hardware Supported: ph100 PCB | |||
* Hardware Availability: https://phrygiandesign.com/products/ph100-mechanical-keyboard | |||
* Keyboard support: contact@phrygiandesign.com | |||
Make example for this keyboard: | |||
make phrygian/ph100: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). | |||
#### Note: Booting into the STM32 USB Bootloader | |||
The STM32F042 range of microcontrollers have problems with entering into the USB bootloader with QMK's bootloader key sequence. | |||
To boot into the bootloader, apply power to the keyboard while holding down "SW0" on the bottom of PCB near the USB port. |
@ -0,0 +1,25 @@ | |||
# MCU name | |||
MCU = STM32F042 | |||
# Bootloader selection | |||
BOOTLOADER = stm32-dfu | |||
# Build Options | |||
# change yes to no to disable | |||
# | |||
BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite | |||
MOUSEKEY_ENABLE = yes # Mouse keys | |||
EXTRAKEY_ENABLE = yes # Audio control and System control | |||
CONSOLE_ENABLE = no # Console for debug | |||
COMMAND_ENABLE = no # Commands for debug and configuration | |||
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE | |||
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend | |||
# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work | |||
NKRO_ENABLE = yes # USB Nkey Rollover | |||
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality | |||
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow | |||
AUDIO_ENABLE = no # Audio output | |||
# Enter lower-power sleep mode when on the ChibiOS idle thread | |||
OPT_DEFS += -DCORTEX_ENABLE_WFI_IDLE=TRUE |
@ -0,0 +1,49 @@ | |||
/* Copyright 2020 Peac Design and Basekeys.com | |||
* | |||
* This program is free software: you can redistribute it and/or modify | |||
* it under the terms of the GNU General Public License as published by | |||
* the Free Software Foundation, either version 2 of the License, or | |||
* (at your option) any later version. | |||
* | |||
* This program is distributed in the hope that it will be useful, | |||
* but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||
* GNU General Public License for more details. | |||
* | |||
* You should have received a copy of the GNU General Public License | |||
* along with this program. If not, see <http://www.gnu.org/licenses/>. | |||
*/ | |||
#include QMK_KEYBOARD_H | |||
// Defines names for use in layer keycodes and the keymap | |||
enum layer_names { | |||
_BASE, | |||
_FN, | |||
_MEDIA }; | |||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | |||
[_BASE] = LAYOUT( | |||
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_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_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_BSLS, KC_ENT, | |||
KC_LSFT, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(_FN), | |||
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL | |||
), | |||
[_FN] = LAYOUT( | |||
KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, | |||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, | |||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, | |||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, | |||
_______, _______, _______, _______, _______, _______, _______ | |||
), | |||
[_MEDIA] = LAYOUT( | |||
KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, | |||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, | |||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, | |||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, | |||
_______, _______, _______, _______, _______, _______, _______ | |||
) | |||
}; |
@ -0,0 +1,39 @@ | |||
/* Copyright 2021 Densus Design and Basekeys.jp | |||
* | |||
* 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 0x04D8 | |||
#define PRODUCT_ID 0xE8BE | |||
#define DEVICE_VER 0x0001 | |||
#define MANUFACTURER Densus Design | |||
#define PRODUCT Rotor | |||
/* key matrix size */ | |||
#define MATRIX_ROWS 5 | |||
#define MATRIX_COLS 18 | |||
/* key matrix pins */ | |||
#define MATRIX_ROW_PINS { B7, B0, B1, B2, B3 } | |||
#define MATRIX_COL_PINS { E6, F0, F1, F4, F5, F6, F7, C7, C6, B6, B5, B4, D7, D6, D4, D2, D5, D3 } | |||
/* COL2ROW, ROW2COL*/ | |||
#define DIODE_DIRECTION COL2ROW | |||
@ -0,0 +1,10 @@ | |||
{ | |||
"keyboard_name": "Rotor", | |||
"url": "https://klc-playground.com/", | |||
"maintainer": "2Moons", | |||
"layouts": { | |||
"LAYOUT": { | |||
"layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"label":"Esc", "x":2.25, "y":0}, {"label":"!", "x":3.25, "y":0}, {"label":"@", "x":4.25, "y":0}, {"label":"#", "x":5.25, "y":0}, {"label":"$", "x":6.25, "y":0}, {"label":"%", "x":7.25, "y":0}, {"label":"^", "x":8.25, "y":0}, {"label":"&", "x":9.25, "y":0}, {"label":"*", "x":10.25, "y":0}, {"label":"(", "x":11.25, "y":0}, {"label":")", "x":12.25, "y":0}, {"label":"_", "x":13.25, "y":0}, {"label":"+", "x":14.25, "y":0}, {"label":"Backspace", "x":15.25, "y":0, "w":2}, {"label":"Home", "x":17.25, "y":0}, {"x":0, "y":1}, {"x":1, "y":1}, {"label":"Tab", "x":2.25, "y":1, "w":1.5}, {"label":"Q", "x":3.75, "y":1}, {"label":"W", "x":4.75, "y":1}, {"label":"E", "x":5.75, "y":1}, {"label":"R", "x":6.75, "y":1}, {"label":"T", "x":7.75, "y":1}, {"label":"Y", "x":8.75, "y":1}, {"label":"U", "x":9.75, "y":1}, {"label":"I", "x":10.75, "y":1}, {"label":"O", "x":11.75, "y":1}, {"label":"P", "x":12.75, "y":1}, {"label":"{", "x":13.75, "y":1}, {"label":"}", "x":14.75, "y":1}, {"label":"|", "x":15.75, "y":1, "w":1.5}, {"label":"PgUp", "x":17.25, "y":1}, {"x":0, "y":2}, {"x":1, "y":2}, {"label":"Caps Lock", "x":2.25, "y":2, "w":1.75}, {"label":"A", "x":4, "y":2}, {"label":"S", "x":5, "y":2}, {"label":"D", "x":6, "y":2}, {"label":"F", "x":7, "y":2}, {"label":"G", "x":8, "y":2}, {"label":"H", "x":9, "y":2}, {"label":"J", "x":10, "y":2}, {"label":"K", "x":11, "y":2}, {"label":"L", "x":12, "y":2}, {"label":":", "x":13, "y":2}, {"label":"\"", "x":14, "y":2}, {"label":"Enter", "x":15, "y":2, "w":2.25}, {"label":"PgDn", "x":17.25, "y":2}, {"x":0, "y":3}, {"x":1, "y":3}, {"label":"Shift", "x":2.25, "y":3, "w":2.25}, {"label":"Z", "x":4.5, "y":3}, {"label":"X", "x":5.5, "y":3}, {"label":"C", "x":6.5, "y":3}, {"label":"V", "x":7.5, "y":3}, {"label":"B", "x":8.5, "y":3}, {"label":"N", "x":9.5, "y":3}, {"label":"M", "x":10.5, "y":3}, {"label":"<", "x":11.5, "y":3}, {"label":">", "x":12.5, "y":3}, {"label":"?", "x":13.5, "y":3}, {"label":"Shift", "x":14.5, "y":3, "w":1.75}, {"label":"\u2191", "x":16.25, "y":3}, {"label":"End", "x":17.25, "y":3}, {"x":0, "y":4}, {"x":1, "y":4}, {"label":"Ctrl", "x":2.25, "y":4, "w":1.5}, {"x":3.75, "y":4}, {"label":"Alt", "x":4.75, "y":4, "w":1.5}, {"label":"7u", "x":6.25, "y":4, "w":7}, {"label":"Ctrl", "x":13.25, "y":4, "w":1.5}, {"label":"\u2190", "x":15.25, "y":4}, {"label":"\u2193", "x":16.25, "y":4}, {"label":"\u2192", "x":17.25, "y":4}] | |||
} | |||
} | |||
} |
@ -0,0 +1,49 @@ | |||
/* Copyright 2021 Densus Design and Basekeys.jp | |||
* | |||
* 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 | |||
// Defines names for use in layer keycodes and the keymap | |||
enum layer_names { | |||
_BASE, | |||
_FN, | |||
_MEDIA }; | |||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | |||
[_BASE] = LAYOUT( | |||
KC_F1, KC_F2, KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, | |||
KC_F3, KC_F4, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, | |||
KC_F5, KC_F6, 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_F7, KC_F8, 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_F9, KC_F10, KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_LEFT, KC_DOWN, KC_RGHT | |||
), | |||
[_FN] = LAYOUT( | |||
_______, _______, KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, | |||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, | |||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, | |||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, | |||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______ | |||
), | |||
[_MEDIA] = LAYOUT( | |||
_______, _______, KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, | |||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, | |||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, | |||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, | |||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______ | |||
) | |||
}; |
@ -0,0 +1,2 @@ | |||
CONSOLE_ENABLE = no # Console for debug | |||
COMMAND_ENABLE = no |
@ -0,0 +1,49 @@ | |||
/* Copyright 2021 Densus Design and Basekeys.jp | |||
* | |||
* 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 | |||
// Defines names for use in layer keycodes and the keymap | |||
enum layer_names { | |||
_BASE, | |||
_FN, | |||
_MEDIA }; | |||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | |||
[_BASE] = LAYOUT_all( | |||
KC_F1, KC_F2, KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_BSPC, KC_INS, | |||
KC_F3, KC_F4, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, | |||
KC_F5, KC_F6, 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_ENT, KC_PGUP, | |||
KC_F7, KC_F8, KC_LSFT, 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_F9, KC_F10, KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_RGUI, KC_RALT, KC_LEFT, KC_DOWN, KC_RGHT | |||
), | |||
[_FN] = LAYOUT_all( | |||
_______, _______, KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, _______, | |||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, | |||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, | |||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, | |||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ | |||
), | |||
[_MEDIA] = LAYOUT_all( | |||
_______, _______, KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, _______, | |||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, | |||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, | |||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, | |||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ | |||
) | |||
}; |
@ -0,0 +1,2 @@ | |||
CONSOLE_ENABLE = no # Console for debug | |||
COMMAND_ENABLE = no |
@ -0,0 +1,19 @@ | |||
/* Copyright 2021 Densus Design and Basekeys.jp | |||
* | |||
* 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 | |||
#define DYNAMIC_KEYMAP_LAYER_COUNT 3 |
@ -0,0 +1,49 @@ | |||
/* Copyright 2020 Swiftrax and Basekeys.com | |||
* | |||
* This program is free software: you can redistribute it and/or modify | |||
* it under the terms of the GNU General Public License as published by | |||
* the Free Software Foundation, either version 2 of the License, or | |||
* (at your option) any later version. | |||
* | |||
* This program is distributed in the hope that it will be useful, | |||
* but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||
* GNU General Public License for more details. | |||
* | |||
* You should have received a copy of the GNU General Public License | |||
* along with this program. If not, see <http://www.gnu.org/licenses/>. | |||
*/ | |||
#include QMK_KEYBOARD_H | |||
// Defines names for use in layer keycodes and the keymap | |||
enum layer_names { | |||
_BASE, | |||
_FN, | |||
_MEDIA }; | |||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | |||
[_BASE] = LAYOUT_all( | |||
KC_F1, KC_F2, KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_BSPC, KC_INS, | |||
KC_F3, KC_F4, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, | |||
KC_F5, KC_F6, 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_ENT, KC_PGUP, | |||
KC_F7, KC_F8, KC_LSFT, 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_F9, KC_F10, KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_RGUI, KC_RALT, KC_LEFT, KC_DOWN, KC_RGHT | |||
), | |||
[_FN] = LAYOUT_all( | |||
_______, _______, KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, _______, | |||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, | |||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, | |||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, | |||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ | |||
), | |||
[_MEDIA] = LAYOUT_all( | |||
_______, _______, KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, _______, | |||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, | |||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, | |||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, | |||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ | |||
) | |||
}; |
@ -0,0 +1,3 @@ | |||
VIA_ENABLE = yes | |||
CONSOLE_ENABLE = no # Console for debug | |||
COMMAND_ENABLE = no |
@ -0,0 +1,19 @@ | |||
# Rotor | |||
![Rotor](https://i.imgur.com/NfWdlzF.png) | |||
A 75 percent keyboard | |||
* Keyboard Maintainer: [2moons](https://github.com/2moons-jp) | |||
* Hardware Supported: Rotor PCB, ATMEGA32U4-MU | |||
* Hardware Availability: [Website](https://klc-playground.com/) | |||
Make example for this keyboard (after setting up your build environment): | |||
make rotor:default | |||
To flash firmware onto this board, you'll need to bring the PCB into bootloader mode. To enter bootloader mode, press the reset button on the back of the PCB once. The reset button is located near the left side of the board near the TAB key. | |||
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) | |||
[Build guide](https://docs.google.com/document/d/1BWUkFYRJ3aB-AY9pEW-9av5j8VWKI2Hmt8xsCFQgDg0/edit) |
@ -0,0 +1,17 @@ | |||
/* Copyright 2021 Densus Design and Basekeys.jp | |||
* | |||
* 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 "rotor.h" |
@ -0,0 +1,58 @@ | |||
/* Copyright 2021 Densus Design and Basekeys.jp | |||
* | |||
* 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 XXX KC_NO//readabilty | |||
/* This 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( \ | |||
k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E, k0G, k0H, \ | |||
k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k1E, k1G, k1H, \ | |||
k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, k2G, k2H, \ | |||
k30, k31, k32, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, k3E, k3G, k3H, \ | |||
k40, k41, k42, k43, k44, k48, k4D, k4E, k4G, k4H \ | |||
) \ | |||
{ \ | |||
{ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E, XXX, k0G, k0H}, \ | |||
{ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k1E, XXX, k1G, k1H}, \ | |||
{ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, XXX, XXX, k2G, k2H}, \ | |||
{ k30, k31, k32, XXX, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, k3E, XXX, k3G, k3H}, \ | |||
{ k40, k41, k42, k43, k44, XXX, XXX, XXX, k48, XXX, XXX, XXX, XXX, k4D, k4E, XXX, k4G, k4H} \ | |||
} | |||
#define LAYOUT_all( \ | |||
k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E, k0F, k0G, k0H, \ | |||
k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k1E, k1G, k1H, \ | |||
k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, k2E, k2G, k2H, \ | |||
k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, k3E, k3G, k3H, \ | |||
k40, k41, k42, k43, k44, k46, k48, k4A, k4C, k4D, k4E, k4G, k4H \ | |||
) \ | |||
{ \ | |||
{ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E, k0F, k0G, k0H}, \ | |||
{ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k1E, XXX, k1G, k1H}, \ | |||
{ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, k2E, XXX, k2G, k2H}, \ | |||
{ k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, k3E, XXX, k3G, k3H}, \ | |||
{ k40, k41, k42, k43, k44, XXX, k46, XXX, k48, XXX, k4A, XXX, k4C, k4D, k4E, XXX, k4G, k4H} \ | |||
} |
@ -0,0 +1,21 @@ | |||
# MCU name | |||
MCU = atmega32u4 | |||
# Bootloader selection | |||
BOOTLOADER = atmel-dfu | |||
# Build Options | |||
# change yes to no to disable | |||
# | |||
BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite | |||
MOUSEKEY_ENABLE = no # Mouse keys | |||
EXTRAKEY_ENABLE = yes # Audio control and System control | |||
CONSOLE_ENABLE = yes # 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 = no # USB Nkey Rollover | |||
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality | |||
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow | |||
AUDIO_ENABLE = no # Audio output |
@ -0,0 +1,32 @@ | |||
/* Copyright 2021 Stan Gurenkov <rococo04_fox@icloud.com> | |||
* | |||
* This program is free software: you can redistribute it and/or modify | |||
* it under the terms of the GNU General Public License as published by | |||
* the Free Software Foundation, either version 2 of the License, or | |||
* (at your option) any later version. | |||
* | |||
* This program is distributed in the hope that it will be useful, | |||
* but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||
* GNU General Public License for more details. | |||
* | |||
* You should have received a copy of the GNU General Public License | |||
* along with this program. If not, see <http://www.gnu.org/licenses/>. | |||
*/ | |||
#pragma once | |||
#include "config_common.h" | |||
/* USB Device descriptor parameter */ | |||
#define VENDOR_ID 0xFEED | |||
#define PRODUCT_ID 0x6060 | |||
#define DEVICE_VER 0x0001 | |||
#define MANUFACTURER Troy Fletcher | |||
#define PRODUCT Signum30 | |||
/* key matrix size */ | |||
#define MATRIX_ROWS 4 | |||
#define MATRIX_COLS 12 | |||
/* COL2ROW or ROW2COL */ | |||
#define DIODE_DIRECTION COL2ROW |
@ -1,15 +1,4 @@ | |||
#pragma once | |||
#include "quantum.h" | |||
#define LAYOUT_ortho_4x12( \ | |||
K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, \ | |||
K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, \ | |||
K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, \ | |||
K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311 \ | |||
) { \ | |||
{ K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011 }, \ | |||
{ K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111 }, \ | |||
{ K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211 }, \ | |||
{ K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311 } \ | |||
} | |||
#include "signum.h" |
@ -1,28 +0,0 @@ | |||
# MCU name | |||
MCU = atmega32u4 | |||
# Bootloader selection | |||
BOOTLOADER = atmel-dfu | |||
# Build Options | |||
# comment out to disable the options. | |||
# | |||
BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite | |||
MOUSEKEY_ENABLE = yes # Mouse keys | |||
EXTRAKEY_ENABLE = yes # Audio control and System control | |||
CONSOLE_ENABLE = no # Console for debug | |||
COMMAND_ENABLE = no # Commands for debug and configuration | |||
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend | |||
NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work | |||
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality | |||
AUDIO_ENABLE = no | |||
RGBLIGHT_ENABLE = no | |||
UNICODEMAP_ENABLE = no | |||
LAYOUTS = ortho_4x12 | |||
# Disable unsupported hardware | |||
RGBLIGHT_SUPPORTED = no | |||
AUDIO_SUPPORTED = no | |||
BACKLIGHT_SUPPORTED = no |