From 7f4f0f7685cef421df4c07b0982c1905fb57a736 Mon Sep 17 00:00:00 2001 From: noroadsleft <18669334+noroadsleft@users.noreply.github.com> Date: Fri, 4 Jan 2019 07:25:48 -0800 Subject: Remove deprecated QUANTUM_DIR code blocks from makefiles (#4754) * Remove QUANTUM_DIR code blocks from keyboard rules This commit removes the deprecated "QUANTUM_DIR" code block from rules.mk files that affect entire keyboards. * remove QUANTUM_DIR code blocks from rules for default keymaps This commit removes the deprecated "QUANTUM_DIR" code block from rules.mk files that affect default keymaps. * remove QUANTUM_DIR code blocks from rules for user keymaps This commit removes the deprecated "QUANTUM_DIR" code block from rules.mk files that affect "user" keymaps. (It's actually any keymap that isn't named `default`.) * remove QUANTUM_DIR code blocks from rules for community layouts This commit removes the deprecated "QUANTUM_DIR" code block from rules.mk files for community layouts. * remove QUANTUM_DIR code blocks from rules for userspaces This commit removes the deprecated "QUANTUM_DIR" code block from rules.mk files for userspaces. --- keyboards/handwired/atreus50/keymaps/ajp10304/rules.mk | 4 ---- keyboards/handwired/dactyl_manuform/4x5/keymaps/default/rules.mk | 3 --- keyboards/handwired/dactyl_manuform/4x5/keymaps/dvorak/rules.mk | 3 --- keyboards/handwired/frenchdev/rules.mk | 3 --- keyboards/handwired/woodpad/keymaps/default/rules.mk | 3 --- keyboards/handwired/woodpad/keymaps/drashna/rules.mk | 3 --- 6 files changed, 19 deletions(-) (limited to 'keyboards/handwired') diff --git a/keyboards/handwired/atreus50/keymaps/ajp10304/rules.mk b/keyboards/handwired/atreus50/keymaps/ajp10304/rules.mk index f2a91de897..fc5d9ba1aa 100644 --- a/keyboards/handwired/atreus50/keymaps/ajp10304/rules.mk +++ b/keyboards/handwired/atreus50/keymaps/ajp10304/rules.mk @@ -1,7 +1,3 @@ -ifndef QUANTUM_DIR - include ../../../../Makefile -endif - AUDIO_ENABLE = no MOUSEKEY_ENABLE = yes diff --git a/keyboards/handwired/dactyl_manuform/4x5/keymaps/default/rules.mk b/keyboards/handwired/dactyl_manuform/4x5/keymaps/default/rules.mk index 457a3d01d4..e69de29bb2 100644 --- a/keyboards/handwired/dactyl_manuform/4x5/keymaps/default/rules.mk +++ b/keyboards/handwired/dactyl_manuform/4x5/keymaps/default/rules.mk @@ -1,3 +0,0 @@ -ifndef QUANTUM_DIR - include ../../../../Makefile -endif diff --git a/keyboards/handwired/dactyl_manuform/4x5/keymaps/dvorak/rules.mk b/keyboards/handwired/dactyl_manuform/4x5/keymaps/dvorak/rules.mk index 457a3d01d4..e69de29bb2 100644 --- a/keyboards/handwired/dactyl_manuform/4x5/keymaps/dvorak/rules.mk +++ b/keyboards/handwired/dactyl_manuform/4x5/keymaps/dvorak/rules.mk @@ -1,3 +0,0 @@ -ifndef QUANTUM_DIR - include ../../../../Makefile -endif diff --git a/keyboards/handwired/frenchdev/rules.mk b/keyboards/handwired/frenchdev/rules.mk index 2b70ae564e..c82bf4a389 100644 --- a/keyboards/handwired/frenchdev/rules.mk +++ b/keyboards/handwired/frenchdev/rules.mk @@ -87,6 +87,3 @@ AUDIO_ENABLE = no # Audio output on port C6 RGBLIGHT_ENABLE = no API_SYSEX_ENABLE = no -#ifndef QUANTUM_DIR -# include ../../../Makefile -#endif diff --git a/keyboards/handwired/woodpad/keymaps/default/rules.mk b/keyboards/handwired/woodpad/keymaps/default/rules.mk index f060db79c0..fce19bfaa8 100644 --- a/keyboards/handwired/woodpad/keymaps/default/rules.mk +++ b/keyboards/handwired/woodpad/keymaps/default/rules.mk @@ -32,6 +32,3 @@ BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend -ifndef QUANTUM_DIR - include ../../../../Makefile -endif diff --git a/keyboards/handwired/woodpad/keymaps/drashna/rules.mk b/keyboards/handwired/woodpad/keymaps/drashna/rules.mk index ed7d2e7c6d..7f7f30e2ad 100644 --- a/keyboards/handwired/woodpad/keymaps/drashna/rules.mk +++ b/keyboards/handwired/woodpad/keymaps/drashna/rules.mk @@ -8,6 +8,3 @@ MOUSEKEY_ENABLE = no EXTRAFLAGS = -flto -ifndef QUANTUM_DIR - include ../../../../Makefile -endif -- cgit v1.2.3 From 3527efcbd21231cf9e7bf7a8de0fa02aa177a957 Mon Sep 17 00:00:00 2001 From: flehrad <20124416+flehrad@users.noreply.github.com> Date: Sat, 5 Jan 2019 16:38:22 +1100 Subject: Adding keyboards/handwire/numbrero (#4773) * add snagpad * Update keyboards/snagpad/kb.c Co-Authored-By: flehrad <20124416+flehrad@users.noreply.github.com> * Rename kb.c to snagpad.c * Update and rename kb.h to snagpad.h * Update snagpad.h * Update keymap.c * Update config.h * Update config.h * Update rules.mk * Update README.md * Add files via upload * Update info.json * Update keymap.c * Update snagpad.h * Delete snagpad_numpad.json * Delete snagpad_ortho.json * Update README.md * Update keyboards/snagpad/info.json Co-Authored-By: flehrad <20124416+flehrad@users.noreply.github.com> * Update keyboards/snagpad/keymaps/default/keymap.c Co-Authored-By: flehrad <20124416+flehrad@users.noreply.github.com> * Update keyboards/snagpad/keymaps/default/keymap.c Co-Authored-By: flehrad <20124416+flehrad@users.noreply.github.com> * Update keyboards/snagpad/keymaps/default/keymap.c Co-Authored-By: flehrad <20124416+flehrad@users.noreply.github.com> * Update keyboards/snagpad/snagpad.h Co-Authored-By: flehrad <20124416+flehrad@users.noreply.github.com> * Update keyboards/snagpad/keymaps/default/keymap.c Co-Authored-By: flehrad <20124416+flehrad@users.noreply.github.com> * Update keyboards/snagpad/snagpad.h Co-Authored-By: flehrad <20124416+flehrad@users.noreply.github.com> * Update keyboards/snagpad/snagpad.h Co-Authored-By: flehrad <20124416+flehrad@users.noreply.github.com> * Update keyboards/snagpad/snagpad.h Co-Authored-By: flehrad <20124416+flehrad@users.noreply.github.com> * Update keyboards/snagpad/keymaps/default/keymap.c Co-Authored-By: flehrad <20124416+flehrad@users.noreply.github.com> * Update keyboards/snagpad/keymaps/default/keymap.c Co-Authored-By: flehrad <20124416+flehrad@users.noreply.github.com> * Update keyboards/snagpad/keymaps/default/keymap.c Co-Authored-By: flehrad <20124416+flehrad@users.noreply.github.com> * Update keyboards/snagpad/rules.mk Co-Authored-By: flehrad <20124416+flehrad@users.noreply.github.com> * add tradestation * --all * Did something weird messing with git -_- hopefully fixed * Update keyboards/tradestation/keymaps/default/keymap.c Co-Authored-By: flehrad <20124416+flehrad@users.noreply.github.com> * Update keyboards/tradestation/config.h Co-Authored-By: flehrad <20124416+flehrad@users.noreply.github.com> * Update keyboards/tradestation/config.h Co-Authored-By: flehrad <20124416+flehrad@users.noreply.github.com> * Update keyboards/tradestation/rules.mk Co-Authored-By: flehrad <20124416+flehrad@users.noreply.github.com> * Update snagpad.h * Update rules.mk * Update keymap.c * fixed merge conflict, updated to LAYOUT_numpad_5x4 * relocated to handwire, updated naming, added layouts to rules.mk * Update keyboards/handwired/tradestation/rules.mk Co-Authored-By: flehrad <20124416+flehrad@users.noreply.github.com> * Update keyboards/snagpad/snagpad.h Co-Authored-By: flehrad <20124416+flehrad@users.noreply.github.com> * Update keyboards/snagpad/snagpad.h Co-Authored-By: flehrad <20124416+flehrad@users.noreply.github.com> * Update keyboards/snagpad/snagpad.h Co-Authored-By: flehrad <20124416+flehrad@users.noreply.github.com> * Update keyboards/snagpad/snagpad.h Co-Authored-By: flehrad <20124416+flehrad@users.noreply.github.com> * Rename LICENSE to license * Rename README.md to readme.md * Rename LICENSE to license * Rename README.md to readme.md * Update info.json * Update keymap.c * Update info.json * Adding Numbrero QMK to Handwire Repository * Update config.h * Update readme.md * Update keyboards/handwired/numbrero/numbrero.h Co-Authored-By: flehrad <20124416+flehrad@users.noreply.github.com> * Update keymap.c * Update keyboards/handwired/numbrero/rules.mk Co-Authored-By: flehrad <20124416+flehrad@users.noreply.github.com> --- keyboards/handwired/numbrero/config.h | 51 ++++++ keyboards/handwired/numbrero/info.json | 15 ++ .../handwired/numbrero/keymaps/default/keymap.c | 30 +++ keyboards/handwired/numbrero/license | 201 +++++++++++++++++++++ keyboards/handwired/numbrero/numbrero.c | 1 + keyboards/handwired/numbrero/numbrero.h | 30 +++ keyboards/handwired/numbrero/readme.md | 15 ++ keyboards/handwired/numbrero/rules.mk | 59 ++++++ 8 files changed, 402 insertions(+) create mode 100644 keyboards/handwired/numbrero/config.h create mode 100644 keyboards/handwired/numbrero/info.json create mode 100644 keyboards/handwired/numbrero/keymaps/default/keymap.c create mode 100644 keyboards/handwired/numbrero/license create mode 100644 keyboards/handwired/numbrero/numbrero.c create mode 100644 keyboards/handwired/numbrero/numbrero.h create mode 100644 keyboards/handwired/numbrero/readme.md create mode 100644 keyboards/handwired/numbrero/rules.mk (limited to 'keyboards/handwired') diff --git a/keyboards/handwired/numbrero/config.h b/keyboards/handwired/numbrero/config.h new file mode 100644 index 0000000000..cbcb1d8261 --- /dev/null +++ b/keyboards/handwired/numbrero/config.h @@ -0,0 +1,51 @@ +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0xFEED +#define PRODUCT_ID 0x6060 +#define DEVICE_VER 0x0001 +#define MANUFACTURER Flehrad +#define PRODUCT Numbrero +#define DESCRIPTION Pro Micro-powered Reversible L/H Numpad with Extra Macro Keys + +/* key matrix size */ +#define MATRIX_ROWS 5 +#define MATRIX_COLS 5 + +/* key matrix pins */ +#define MATRIX_ROW_PINS { F6, B5, B4, E6, F7 } +#define MATRIX_COL_PINS { D1, D0, D4, F5, F4 } +#define UNUSED_PINS + +/* COL2ROW or ROW2COL */ +#define DIODE_DIRECTION COL2ROW + +/* number of backlight levels */ + +#ifdef BACKLIGHT_PIN +#define BACKLIGHT_LEVELS 3 +#endif + +/* Set 0 if debouncing isn't needed */ +#define DEBOUNCING_DELAY 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 + +/* key combination for command */ +#define IS_COMMAND() ( \ + keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \ +) + +#ifdef RGB_DI_PIN +#define RGBLIGHT_ANIMATIONS +#define RGBLED_NUM 5 +#define RGBLIGHT_HUE_STEP 8 +#define RGBLIGHT_SAT_STEP 8 +#define RGBLIGHT_VAL_STEP 8 +#endif diff --git a/keyboards/handwired/numbrero/info.json b/keyboards/handwired/numbrero/info.json new file mode 100644 index 0000000000..85c4b48275 --- /dev/null +++ b/keyboards/handwired/numbrero/info.json @@ -0,0 +1,15 @@ +{ + "keyboard_name": "Numbrero", + "url": "", + "maintainer": "Flehrad", + "width": 5, + "height": 5, + "layouts": { + "LAYOUT_numbrero_numpad": { + "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":0, "y":1, "h":1.5}, {"x":1, "y":1}, {"x":2, "y":1}, {"x":3, "y":1}, {"x":4, "y":1, "h":2}, {"x":1, "y":2}, {"x":2, "y":2}, {"x":3, "y":2}, {"x":0, "y":2.5}, {"x":1, "y":3}, {"x":2, "y":3}, {"x":3, "y":3}, {"x":4, "y":3, "h":2}, {"x":0, "y":3.5, "h":1.5}, {"x":1, "y":4, "w":2}, {"x":3, "y":4}] + }, + "LAYOUT_numbrero_ortho": { + "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":0, "y":1, "h":1.5}, {"x":1, "y":1}, {"x":2, "y":1}, {"x":3, "y":1}, {"x":4, "y":1}, {"x":1, "y":2}, {"x":2, "y":2}, {"x":3, "y":2}, {"x":4, "y":2}, {"x":0, "y":2.5}, {"x":1, "y":3}, {"x":2, "y":3}, {"x":3, "y":3}, {"x":4, "y":3}, {"x":0, "y":3.5, "h":1.5}, {"x":1, "y":4}, {"x":2, "y":4}, {"x":3, "y":4}, {"x":4, "y":4}] + } + } +} diff --git a/keyboards/handwired/numbrero/keymaps/default/keymap.c b/keyboards/handwired/numbrero/keymaps/default/keymap.c new file mode 100644 index 0000000000..903ed8d88c --- /dev/null +++ b/keyboards/handwired/numbrero/keymaps/default/keymap.c @@ -0,0 +1,30 @@ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + LAYOUT_numbrero_numpad( + KC_TRNS, KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS, + KC_TRNS, KC_P7, KC_P8, KC_P9, + KC_TRNS, KC_P4, KC_P5, KC_P6, KC_PPLS, + KC_TRNS, KC_P1, KC_P2, KC_P3, + KC_P0, KC_PDOT, KC_PENT), + + LAYOUT_numbrero_ortho( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), + + +}; + +void matrix_init_user(void) { +} + +void matrix_scan_user(void) { +} + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + return true; +} diff --git a/keyboards/handwired/numbrero/license b/keyboards/handwired/numbrero/license new file mode 100644 index 0000000000..b09cd7856d --- /dev/null +++ b/keyboards/handwired/numbrero/license @@ -0,0 +1,201 @@ +Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/keyboards/handwired/numbrero/numbrero.c b/keyboards/handwired/numbrero/numbrero.c new file mode 100644 index 0000000000..d3ec36904a --- /dev/null +++ b/keyboards/handwired/numbrero/numbrero.c @@ -0,0 +1 @@ +#include "numbrero.h" diff --git a/keyboards/handwired/numbrero/numbrero.h b/keyboards/handwired/numbrero/numbrero.h new file mode 100644 index 0000000000..d4aff8b880 --- /dev/null +++ b/keyboards/handwired/numbrero/numbrero.h @@ -0,0 +1,30 @@ +#pragma once + +#include "quantum.h" + +#define LAYOUT_numbrero_numpad( \ + K00, K01, K02, K03, K04, \ + K10, K11, K12, K13, \ + K20, K21, K22, K23, K14, \ + K30, K31, K32, K33, \ + K41, K43, K34 \ +) { \ + { K00, K01, K02, K03, K04 }, \ + { K10, K11, K12, K13, K14 }, \ + { K20, K21, K22, K23, KC_NO }, \ + { K30, K31, K32, K33, K34 }, \ + { KC_NO, K41, KC_NO, K43, KC_NO } \ +} +#define LAYOUT_numbrero_ortho(\ + K00, K01, K02, K03, K04, \ + K10, K11, K12, K13, K14, \ + K20, K21, K22, K23, K24, \ + K30, K31, K32, K33, K34, \ + K41, K42, K43, K44 \ +){ \ + { K00, K01, K02, K03, K04 }, \ + { K10, K11, K12, K13, K14 }, \ + { K20, K21, K22, K23, K24 }, \ + { K30, K31, K32, K33, K34 }, \ + { KC_NO, K41, K42, K43, K44 } \ +} diff --git a/keyboards/handwired/numbrero/readme.md b/keyboards/handwired/numbrero/readme.md new file mode 100644 index 0000000000..a69eeefd43 --- /dev/null +++ b/keyboards/handwired/numbrero/readme.md @@ -0,0 +1,15 @@ +# Numbrero + +No picture currently available. + +A Reversible Numpad (Left/Right handed) with extra macro keys. + +Keyboard Maintainer: [Flehrad](https://github.com/flehrad) +Hardware Supported: Numbrero PCB. +Hardware Availability: The Board Podcast Slack + +Make example for this keyboard (after setting up your build environment): + + make handwired/numbrero/numbrero: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). diff --git a/keyboards/handwired/numbrero/rules.mk b/keyboards/handwired/numbrero/rules.mk new file mode 100644 index 0000000000..bda6c866e2 --- /dev/null +++ b/keyboards/handwired/numbrero/rules.mk @@ -0,0 +1,59 @@ +# MCU name +MCU = atmega32u4 + +# Processor frequency. +# This will define a symbol, F_CPU, in all source code files equal to the +# processor frequency in Hz. You can then use this symbol in your source code to +# calculate timings. Do NOT tack on a 'UL' at the end, this will be done +# automatically to create a 32-bit value in your source code. +# +# This will be an integer division of F_USB below, as it is sourced by +# F_USB after it has run through any CPU prescalers. Note that this value +# does not *change* the processor frequency - it should merely be updated to +# reflect the processor speed set externally so that the code can use accurate +# software delays. +F_CPU = 16000000 + +# +# LUFA specific +# +# Target architecture (see library "Board Types" documentation). +ARCH = AVR8 + +# Input clock frequency. +# This will define a symbol, F_USB, in all source code files equal to the +# input clock frequency (before any prescaling is performed) in Hz. This value may +# differ from F_CPU if prescaling is used on the latter, and is required as the +# raw input clock is fed directly to the PLL sections of the AVR for high speed +# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL' +# at the end, this will be done automatically to create a 32-bit value in your +# source code. +# +# If no clock division is performed on the input clock inside the AVR (via the +# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU. +F_USB = $(F_CPU) + +# Interrupt driven control endpoint task(+60) +OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT + +#Bootloder +#Pro Micro = caterina +BOOTLOADER = caterina + +# Boot Section Size in *bytes* +#OPT_DEFS += -DBOOTLOADER_SIZE=4096 + + +# Build Options +# comment out to disable the options. +# +BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000) +MOUSEKEY_ENABLE = yes # Mouse keys(+4700) +EXTRAKEY_ENABLE = yes # Audio control and System control(+450) +CONSOLE_ENABLE = no # Console for debug(+400) +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 -- cgit v1.2.3 From 27b512d9f550dd1a42466733c0c3066742aeb300 Mon Sep 17 00:00:00 2001 From: noroadsleft <18669334+noroadsleft@users.noreply.github.com> Date: Sat, 5 Jan 2019 15:34:19 -0800 Subject: Keyboard: Tradestation code tidy and readme refactor (#4784) * Tradestation: tidy code - correct JSON syntax on info.json - visual key alignment on info.json - white space changes on rules.mk and tradestation.h (readability/QMK conventions) * Tradestation: readme refactor Modify readme.md to more closely match QMK template. * Tradestation: readme update Update The Board podcast link for libsyn. --- keyboards/handwired/tradestation/info.json | 12 +++++----- keyboards/handwired/tradestation/readme.md | 26 ++++++++++---------- keyboards/handwired/tradestation/rules.mk | 3 ++- keyboards/handwired/tradestation/tradestation.h | 32 ++++++++++++------------- 4 files changed, 38 insertions(+), 35 deletions(-) (limited to 'keyboards/handwired') diff --git a/keyboards/handwired/tradestation/info.json b/keyboards/handwired/tradestation/info.json index f26d4ec371..e59c217cb7 100644 --- a/keyboards/handwired/tradestation/info.json +++ b/keyboards/handwired/tradestation/info.json @@ -2,14 +2,14 @@ "keyboard_name": "Tradestation", "url": "", "maintainer": "Flehrad", - "bootloader": "", - "width": 4.3, - "height": 4.5, + "width": 4.375, + "height": 4.375, "layouts": { "LAYOUT_tradestation": { - "layout": [{"x":0, "y":0}, {"x":1.1, "y":0}, {"x":2.2, "y":0}, {"x":3.3, "y":0}, {"x":0, "y":1.1}, {"x":1.1, "y":1.1}, {"x":2.2, "y":1.1}, {"x":3.3, "y":1.1}, {"x":0, "y":2.25, "w":2}, {"x":2.25, "y":2.25, "w":2}, {"x":0, "y":3.5, "w":2}, {"x":2.25, "y":3.5, "w":2}] + "layout": [{"x":0, "y":0},{"x":1.125, "y":0},{"x":2.25, "y":0},{"x":3.375, "y":0},{"x":0, "y":1.1},{"x":1.125, "y":1.1},{"x":2.25, "y":1.1},{"x":3.375, "y":1.1},{"x":0, "y":2.25, "w":2},{"x":2.25, "y":2.25, "w":2},{"x":0, "y":3.5, "w":2},{"x":2.25, "y":3.5, "w":2}] }, - "LAYOUT_ortho_4x4": { - "layout": [{"x":0, "y":0}, {"x":1.1, "y":0}, {"x":2.2, "y":0}, {"x":3.3, "y":0}, {"x":0, "y":1.1}, {"x":1.1, "y":1.1}, {"x":2.2, "y":1.1}, {"x":3.3, "y":1.1}, {"x":0, "y":2.25}, {"x":1, "y":2.25}, {"x":2.25, "y":2.25}, {"x":3.25, "y":2.25}, {"x":0, "y":3.5}, {"x":1, "y":3.5}, {"x":2.25, "y":3.5}, {"x":3.25, "y":3.5}] + "LAYOUT_ortho_4x4": { + "layout": [{"x":0, "y":0},{"x":1.125, "y":0},{"x":2.25, "y":0},{"x":3.375, "y":0},{"x":0, "y":1.1},{"x":1.125, "y":1.1},{"x":2.25, "y":1.1},{"x":3.375, "y":1.1},{"x":0, "y":2.25},{"x":1.125, "y":2.25},{"x":2.25, "y":2.25},{"x":3.375, "y":2.25},{"x":0, "y":3.5},{"x":1.125, "y":3.5},{"x":2.25, "y":3.5},{"x":3.375, "y":3.5}] + } } } diff --git a/keyboards/handwired/tradestation/readme.md b/keyboards/handwired/tradestation/readme.md index 69c0331a92..3a8c39e263 100644 --- a/keyboards/handwired/tradestation/readme.md +++ b/keyboards/handwired/tradestation/readme.md @@ -1,25 +1,27 @@ # Tradestation -QMK for Tradestation Macropad -This macropad was layout designed by Didier Luximon +[Image Gallery](https://imgur.com/a/yxQJXMT) + +A 4x4 ortholinear macropad, with options for 2U keys on the bottom half. Can be built as single PCB with custom case, or as two-PCB style with standoffs. Requires a Pro Micro. This PCB supports an overall 4x4 matrix with unique spacing. + * Top two rows are 1U keys with 1/8U spacing * Bottom two rows are available with 4x2 1U as clusters of 2x1U or as 2x2 2U, spaced with 1/4U -For QMK Configurator, the info.json is utilised. -- For 2U keys , the first 1u row/column key assignment is the same as the 2u position. - -Build requires a pro micro. +If you like this simple PCB and want to make a donation, you can do so at [paypal.me/theboardpodcast](https://paypal.me/theboardpodcast). -Can be built as single PCB with custom case, or as two PCB style with standoffs. +- [The Board Podcast on YouTube](https://www.youtube.com/channel/UCg98oJZNffR9nDLJNkorjqw) +- [The Board Podcast on Libsyn](http://theboard.libsyn.com/) +- [The Board Podcast on Patreon](https://www.patreon.com/theboardpodcast) -If you like this simple PCB and want to make a donation, you can at https://paypal.me/theboardpodcast +Designed by Didier Luximon. -Check out our: +Keyboard Maintainer: [flehrad](https://github.com/flehrad) +Hardware Supported: Tradestation PCB, Pro Micro -YouTube (https://www.youtube.com/channel/UCg98oJZNffR9nDLJNkorjqw) +Make example for this keyboard (after setting up your build environment): -Podcast (www.libsyn.com/theboardpodcast) + make tradestation:default -Patreon (www.patreon.com/theboardpodcast) +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). diff --git a/keyboards/handwired/tradestation/rules.mk b/keyboards/handwired/tradestation/rules.mk index 9d49888b5f..649b63babf 100644 --- a/keyboards/handwired/tradestation/rules.mk +++ b/keyboards/handwired/tradestation/rules.mk @@ -62,4 +62,5 @@ NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https:/ BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality AUDIO_ENABLE = no RGBLIGHT_ENABLE = no - LAYOUTS = ortho_4x4 + +LAYOUTS = ortho_4x4 diff --git a/keyboards/handwired/tradestation/tradestation.h b/keyboards/handwired/tradestation/tradestation.h index 15e40e3b51..60b53b7ddf 100644 --- a/keyboards/handwired/tradestation/tradestation.h +++ b/keyboards/handwired/tradestation/tradestation.h @@ -3,25 +3,25 @@ #include "quantum.h" #define LAYOUT_ortho_4x4( \ - K00, K01, K02, K03, \ - K10, K11, K12, K13, \ - K20, K21, K22, K23, \ - K30, K31, K32, K33 \ + K00, K01, K02, K03, \ + K10, K11, K12, K13, \ + K20, K21, K22, K23, \ + K30, K31, K32, K33 \ ) { \ - { K00, K01, K02, K03 }, \ - { K10, K11, K12, K13 }, \ - { K20, K21, K22, K23 }, \ - { K30, K31, K32, K33 } \ + { K00, K01, K02, K03 }, \ + { K10, K11, K12, K13 }, \ + { K20, K21, K22, K23 }, \ + { K30, K31, K32, K33 } \ } #define LAYOUT_tradestation( \ - K00, K01, K02, K03, \ - K10, K11, K12, K13, \ - K20, K22, \ - K30, K32 \ + K00, K01, K02, K03, \ + K10, K11, K12, K13, \ + K20, K22, \ + K30, K32 \ ) { \ - { K00, K01, K02, K03 }, \ - { K10, K11, K12, K13 }, \ - { K20, KC_NO, K22, KC_NO }, \ - { K30, KC_NO, K32, KC_NO } \ + { K00, K01, K02, K03 }, \ + { K10, K11, K12, K13 }, \ + { K20, KC_NO, K22, KC_NO }, \ + { K30, KC_NO, K32, KC_NO } \ } -- cgit v1.2.3 From 90046af17fb3ffe1dfe57d87b83a894ce925f3c1 Mon Sep 17 00:00:00 2001 From: noroadsleft <18669334+noroadsleft@users.noreply.github.com> Date: Sat, 5 Jan 2019 15:34:38 -0800 Subject: Keyboard: Numbrero: Configurator fix and code tidy (#4787) * Numbrero: fix Configurator mismatch Key object order in info.json didn't match the layout macro, leading to keys being assigned out-of-sequence. * Numbrero: tidy - white space changes in numbrero.h (alignment/readability/QMK conventions) - minor changes to readme.md (grammar, mostly) --- keyboards/handwired/numbrero/info.json | 57 ++++++++++++++++++++++++++++++--- keyboards/handwired/numbrero/numbrero.h | 38 +++++++++++----------- keyboards/handwired/numbrero/readme.md | 6 ++-- 3 files changed, 73 insertions(+), 28 deletions(-) (limited to 'keyboards/handwired') diff --git a/keyboards/handwired/numbrero/info.json b/keyboards/handwired/numbrero/info.json index 85c4b48275..d2f7ebd031 100644 --- a/keyboards/handwired/numbrero/info.json +++ b/keyboards/handwired/numbrero/info.json @@ -5,11 +5,58 @@ "width": 5, "height": 5, "layouts": { - "LAYOUT_numbrero_numpad": { - "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":0, "y":1, "h":1.5}, {"x":1, "y":1}, {"x":2, "y":1}, {"x":3, "y":1}, {"x":4, "y":1, "h":2}, {"x":1, "y":2}, {"x":2, "y":2}, {"x":3, "y":2}, {"x":0, "y":2.5}, {"x":1, "y":3}, {"x":2, "y":3}, {"x":3, "y":3}, {"x":4, "y":3, "h":2}, {"x":0, "y":3.5, "h":1.5}, {"x":1, "y":4, "w":2}, {"x":3, "y":4}] - }, - "LAYOUT_numbrero_ortho": { - "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":0, "y":1, "h":1.5}, {"x":1, "y":1}, {"x":2, "y":1}, {"x":3, "y":1}, {"x":4, "y":1}, {"x":1, "y":2}, {"x":2, "y":2}, {"x":3, "y":2}, {"x":4, "y":2}, {"x":0, "y":2.5}, {"x":1, "y":3}, {"x":2, "y":3}, {"x":3, "y":3}, {"x":4, "y":3}, {"x":0, "y":3.5, "h":1.5}, {"x":1, "y":4}, {"x":2, "y":4}, {"x":3, "y":4}, {"x":4, "y":4}] + "LAYOUT_numbrero_numpad": { + "layout": [ + {"label":"K00", "x":0, "y":0}, + {"label":"K01", "x":1, "y":0}, + {"label":"K02", "x":2, "y":0}, + {"label":"K03", "x":3, "y":0}, + {"label":"K04", "x":4, "y":0}, + {"label":"K10", "x":0, "y":1, "h":1.5}, + {"label":"K11", "x":1, "y":1}, + {"label":"K12", "x":2, "y":1}, + {"label":"K13", "x":3, "y":1}, + {"label":"K20", "x":0, "y":2.5}, + {"label":"K21", "x":1, "y":2}, + {"label":"K22", "x":2, "y":2}, + {"label":"K23", "x":3, "y":2}, + {"label":"K14", "x":4, "y":1, "h":2}, + {"label":"K30", "x":0, "y":3.5, "h":1.5}, + {"label":"K31", "x":1, "y":3}, + {"label":"K32", "x":2, "y":3}, + {"label":"K33", "x":3, "y":3}, + {"label":"K41", "x":1, "y":4, "w":2}, + {"label":"K43", "x":3, "y":4}, + {"label":"K34", "x":4, "y":3, "h":2} + ] + }, + "LAYOUT_numbrero_ortho": { + "layout": [ + {"label":"K00", "x":0, "y":0}, + {"label":"K01", "x":1, "y":0}, + {"label":"K02", "x":2, "y":0}, + {"label":"K03", "x":3, "y":0}, + {"label":"K04", "x":4, "y":0}, + {"label":"K10", "x":0, "y":1, "h":1.5}, + {"label":"K11", "x":1, "y":1}, + {"label":"K12", "x":2, "y":1}, + {"label":"K13", "x":3, "y":1}, + {"label":"K14", "x":4, "y":1}, + {"label":"K20", "x":0, "y":2.5}, + {"label":"K21", "x":1, "y":2}, + {"label":"K22", "x":2, "y":2}, + {"label":"K23", "x":3, "y":2}, + {"label":"K24", "x":4, "y":2}, + {"label":"K30", "x":0, "y":3.5, "h":1.5}, + {"label":"K31", "x":1, "y":3}, + {"label":"K32", "x":2, "y":3}, + {"label":"K33", "x":3, "y":3}, + {"label":"K34", "x":4, "y":3}, + {"label":"K41", "x":1, "y":4}, + {"label":"K42", "x":2, "y":4}, + {"label":"K43", "x":3, "y":4}, + {"label":"K44", "x":4, "y":4} + ] } } } diff --git a/keyboards/handwired/numbrero/numbrero.h b/keyboards/handwired/numbrero/numbrero.h index d4aff8b880..c72e654078 100644 --- a/keyboards/handwired/numbrero/numbrero.h +++ b/keyboards/handwired/numbrero/numbrero.h @@ -3,28 +3,28 @@ #include "quantum.h" #define LAYOUT_numbrero_numpad( \ - K00, K01, K02, K03, K04, \ - K10, K11, K12, K13, \ - K20, K21, K22, K23, K14, \ - K30, K31, K32, K33, \ - K41, K43, K34 \ + K00, K01, K02, K03, K04, \ + K10, K11, K12, K13, \ + K20, K21, K22, K23, K14, \ + K30, K31, K32, K33, \ + K41, K43, K34 \ ) { \ - { K00, K01, K02, K03, K04 }, \ - { K10, K11, K12, K13, K14 }, \ - { K20, K21, K22, K23, KC_NO }, \ - { K30, K31, K32, K33, K34 }, \ - { KC_NO, K41, KC_NO, K43, KC_NO } \ + { K00, K01, K02, K03, K04 }, \ + { K10, K11, K12, K13, K14 }, \ + { K20, K21, K22, K23, KC_NO }, \ + { K30, K31, K32, K33, K34 }, \ + { KC_NO, K41, KC_NO, K43, KC_NO } \ } #define LAYOUT_numbrero_ortho(\ K00, K01, K02, K03, K04, \ - K10, K11, K12, K13, K14, \ - K20, K21, K22, K23, K24, \ - K30, K31, K32, K33, K34, \ - K41, K42, K43, K44 \ + K10, K11, K12, K13, K14, \ + K20, K21, K22, K23, K24, \ + K30, K31, K32, K33, K34, \ + K41, K42, K43, K44 \ ){ \ - { K00, K01, K02, K03, K04 }, \ - { K10, K11, K12, K13, K14 }, \ - { K20, K21, K22, K23, K24 }, \ - { K30, K31, K32, K33, K34 }, \ - { KC_NO, K41, K42, K43, K44 } \ + { K00, K01, K02, K03, K04 }, \ + { K10, K11, K12, K13, K14 }, \ + { K20, K21, K22, K23, K24 }, \ + { K30, K31, K32, K33, K34 }, \ + { KC_NO, K41, K42, K43, K44 } \ } diff --git a/keyboards/handwired/numbrero/readme.md b/keyboards/handwired/numbrero/readme.md index a69eeefd43..42f005dbe2 100644 --- a/keyboards/handwired/numbrero/readme.md +++ b/keyboards/handwired/numbrero/readme.md @@ -1,11 +1,9 @@ # Numbrero -No picture currently available. - -A Reversible Numpad (Left/Right handed) with extra macro keys. +A reversible numpad (left/right-handed) with extra macro keys. Keyboard Maintainer: [Flehrad](https://github.com/flehrad) -Hardware Supported: Numbrero PCB. +Hardware Supported: Numbrero PCB, Pro Micro Hardware Availability: The Board Podcast Slack Make example for this keyboard (after setting up your build environment): -- cgit v1.2.3 From 28986998046b4dbdbc228dbb7889836de2a3ee18 Mon Sep 17 00:00:00 2001 From: flehrad <20124416+flehrad@users.noreply.github.com> Date: Tue, 8 Jan 2019 02:29:37 +1100 Subject: Add Downbubble to Handwired repository (#4794) * add snagpad * Update keyboards/snagpad/kb.c Co-Authored-By: flehrad <20124416+flehrad@users.noreply.github.com> * Rename kb.c to snagpad.c * Update and rename kb.h to snagpad.h * Update snagpad.h * Update keymap.c * Update config.h * Update config.h * Update rules.mk * Update README.md * Add files via upload * Update info.json * Update keymap.c * Update snagpad.h * Delete snagpad_numpad.json * Delete snagpad_ortho.json * Update README.md * Update keyboards/snagpad/info.json Co-Authored-By: flehrad <20124416+flehrad@users.noreply.github.com> * Update keyboards/snagpad/keymaps/default/keymap.c Co-Authored-By: flehrad <20124416+flehrad@users.noreply.github.com> * Update keyboards/snagpad/keymaps/default/keymap.c Co-Authored-By: flehrad <20124416+flehrad@users.noreply.github.com> * Update keyboards/snagpad/keymaps/default/keymap.c Co-Authored-By: flehrad <20124416+flehrad@users.noreply.github.com> * Update keyboards/snagpad/snagpad.h Co-Authored-By: flehrad <20124416+flehrad@users.noreply.github.com> * Update keyboards/snagpad/keymaps/default/keymap.c Co-Authored-By: flehrad <20124416+flehrad@users.noreply.github.com> * Update keyboards/snagpad/snagpad.h Co-Authored-By: flehrad <20124416+flehrad@users.noreply.github.com> * Update keyboards/snagpad/snagpad.h Co-Authored-By: flehrad <20124416+flehrad@users.noreply.github.com> * Update keyboards/snagpad/snagpad.h Co-Authored-By: flehrad <20124416+flehrad@users.noreply.github.com> * Update keyboards/snagpad/keymaps/default/keymap.c Co-Authored-By: flehrad <20124416+flehrad@users.noreply.github.com> * Update keyboards/snagpad/keymaps/default/keymap.c Co-Authored-By: flehrad <20124416+flehrad@users.noreply.github.com> * Update keyboards/snagpad/keymaps/default/keymap.c Co-Authored-By: flehrad <20124416+flehrad@users.noreply.github.com> * Update keyboards/snagpad/rules.mk Co-Authored-By: flehrad <20124416+flehrad@users.noreply.github.com> * add tradestation * --all * Did something weird messing with git -_- hopefully fixed * Update keyboards/tradestation/keymaps/default/keymap.c Co-Authored-By: flehrad <20124416+flehrad@users.noreply.github.com> * Update keyboards/tradestation/config.h Co-Authored-By: flehrad <20124416+flehrad@users.noreply.github.com> * Update keyboards/tradestation/config.h Co-Authored-By: flehrad <20124416+flehrad@users.noreply.github.com> * Update keyboards/tradestation/rules.mk Co-Authored-By: flehrad <20124416+flehrad@users.noreply.github.com> * Update snagpad.h * Update rules.mk * Update keymap.c * fixed merge conflict, updated to LAYOUT_numpad_5x4 * relocated to handwire, updated naming, added layouts to rules.mk * Update keyboards/handwired/tradestation/rules.mk Co-Authored-By: flehrad <20124416+flehrad@users.noreply.github.com> * Update keyboards/snagpad/snagpad.h Co-Authored-By: flehrad <20124416+flehrad@users.noreply.github.com> * Update keyboards/snagpad/snagpad.h Co-Authored-By: flehrad <20124416+flehrad@users.noreply.github.com> * Update keyboards/snagpad/snagpad.h Co-Authored-By: flehrad <20124416+flehrad@users.noreply.github.com> * Update keyboards/snagpad/snagpad.h Co-Authored-By: flehrad <20124416+flehrad@users.noreply.github.com> * Rename LICENSE to license * Rename README.md to readme.md * Rename LICENSE to license * Rename README.md to readme.md * Update info.json * Update keymap.c * Update info.json * Adding Numbrero QMK to Handwire Repository * Update config.h * Update readme.md * Update keyboards/handwired/numbrero/numbrero.h Co-Authored-By: flehrad <20124416+flehrad@users.noreply.github.com> * Update keymap.c * Update keyboards/handwired/numbrero/rules.mk Co-Authored-By: flehrad <20124416+flehrad@users.noreply.github.com> * Add handwired/downbubble keyboard to QMK Repository * Update readme.md * Create license * Update keyboards/handwired/downbubble/readme.md Co-Authored-By: flehrad <20124416+flehrad@users.noreply.github.com> * Update keyboards/handwired/downbubble/keymaps/default/keymap.c Co-Authored-By: flehrad <20124416+flehrad@users.noreply.github.com> * Update keyboards/handwired/downbubble/keymaps/default/keymap.c Co-Authored-By: flehrad <20124416+flehrad@users.noreply.github.com> * Update keyboards/handwired/downbubble/keymaps/default/keymap.c Co-Authored-By: flehrad <20124416+flehrad@users.noreply.github.com> * Update keyboards/handwired/downbubble/keymaps/default/keymap.c Co-Authored-By: flehrad <20124416+flehrad@users.noreply.github.com> * Update keyboards/handwired/downbubble/keymaps/default/keymap.c Co-Authored-By: flehrad <20124416+flehrad@users.noreply.github.com> * Update keyboards/handwired/downbubble/keymaps/default/keymap.c Co-Authored-By: flehrad <20124416+flehrad@users.noreply.github.com> * Update keyboards/handwired/downbubble/keymaps/default/keymap.c Co-Authored-By: flehrad <20124416+flehrad@users.noreply.github.com> * Update keyboards/handwired/downbubble/keymaps/default/keymap.c Co-Authored-By: flehrad <20124416+flehrad@users.noreply.github.com> * Update keyboards/handwired/downbubble/keymaps/default/keymap.c Co-Authored-By: flehrad <20124416+flehrad@users.noreply.github.com> * Update keyboards/handwired/downbubble/keymaps/default/keymap.c Co-Authored-By: flehrad <20124416+flehrad@users.noreply.github.com> * Update keyboards/handwired/downbubble/keymaps/default/keymap.c Co-Authored-By: flehrad <20124416+flehrad@users.noreply.github.com> * Update keyboards/handwired/downbubble/keymaps/default/keymap.c Co-Authored-By: flehrad <20124416+flehrad@users.noreply.github.com> * Update keyboards/handwired/downbubble/keymaps/default/keymap.c Co-Authored-By: flehrad <20124416+flehrad@users.noreply.github.com> * Update keyboards/handwired/downbubble/keymaps/default/keymap.c Co-Authored-By: flehrad <20124416+flehrad@users.noreply.github.com> * Update keyboards/handwired/downbubble/keymaps/default/keymap.c Co-Authored-By: flehrad <20124416+flehrad@users.noreply.github.com> * Update keyboards/handwired/downbubble/keymaps/default/keymap.c Co-Authored-By: flehrad <20124416+flehrad@users.noreply.github.com> * Update keyboards/handwired/downbubble/keymaps/default/keymap.c Co-Authored-By: flehrad <20124416+flehrad@users.noreply.github.com> * Update keyboards/handwired/downbubble/keymaps/default/keymap.c Co-Authored-By: flehrad <20124416+flehrad@users.noreply.github.com> * Update keyboards/handwired/downbubble/keymaps/default/keymap.c Co-Authored-By: flehrad <20124416+flehrad@users.noreply.github.com> * fixed .h with noroadsleft's gist --- keyboards/handwired/downbubble/config.h | 245 +++++++++ keyboards/handwired/downbubble/downbubble.c | 16 + keyboards/handwired/downbubble/downbubble.h | 111 +++++ keyboards/handwired/downbubble/info.json | 554 +++++++++++++++++++++ .../handwired/downbubble/keymaps/default/config.h | 19 + .../handwired/downbubble/keymaps/default/keymap.c | 103 ++++ .../handwired/downbubble/keymaps/default/readme.md | 1 + keyboards/handwired/downbubble/license | 201 ++++++++ keyboards/handwired/downbubble/readme.md | 15 + keyboards/handwired/downbubble/rules.mk | 81 +++ 10 files changed, 1346 insertions(+) create mode 100644 keyboards/handwired/downbubble/config.h create mode 100644 keyboards/handwired/downbubble/downbubble.c create mode 100644 keyboards/handwired/downbubble/downbubble.h create mode 100644 keyboards/handwired/downbubble/info.json create mode 100644 keyboards/handwired/downbubble/keymaps/default/config.h create mode 100644 keyboards/handwired/downbubble/keymaps/default/keymap.c create mode 100644 keyboards/handwired/downbubble/keymaps/default/readme.md create mode 100644 keyboards/handwired/downbubble/license create mode 100644 keyboards/handwired/downbubble/readme.md create mode 100644 keyboards/handwired/downbubble/rules.mk (limited to 'keyboards/handwired') diff --git a/keyboards/handwired/downbubble/config.h b/keyboards/handwired/downbubble/config.h new file mode 100644 index 0000000000..0da13a4b15 --- /dev/null +++ b/keyboards/handwired/downbubble/config.h @@ -0,0 +1,245 @@ +/* +Copyright 2018 Don Chiou + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0xFEED +#define PRODUCT_ID 0x0000 +#define DEVICE_VER 0x0001 +#define MANUFACTURER Flehrad +#define PRODUCT downbubble +#define DESCRIPTION An Ergonomic Centered Numpad Keyboard + +/* key matrix size */ +#define MATRIX_ROWS 6 +#define MATRIX_COLS 20 + +/* + * Keyboard Matrix Assignments + * + * Change this to how you wired your keyboard + * COLS: AVR pins used for columns, left to right + * ROWS: AVR pins used for rows, top to bottom + * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode) + * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode) + * +*/ +#define MATRIX_ROW_PINS { F1, F2, F3, F4, F5, F6 } +#define MATRIX_COL_PINS { F7, C7, C6, C5, C4, C3, C2, C1, C0, E1, E0, D7, D6, D5, D4, D3, D2, D1, D0, B7 } +#define UNUSED_PINS + +/* COL2ROW, ROW2COL, or CUSTOM_MATRIX */ +#define DIODE_DIRECTION COL2ROW + +/* + * Split Keyboard specific options, make sure you have 'SPLIT_KEYBOARD = yes' in your rules.mk, and define SOFT_SERIAL_PIN. + */ +//#define SOFT_SERIAL_PIN D0 // or D1, D2, D3, E6 + +// #define BACKLIGHT_PIN B7 +// #define BACKLIGHT_BREATHING +// #define BACKLIGHT_LEVELS 3 + +// #define RGB_DI_PIN E2 +// #ifdef RGB_DI_PIN +// #define RGBLED_NUM 16 +// #define RGBLIGHT_HUE_STEP 8 +// #define RGBLIGHT_SAT_STEP 8 +// #define RGBLIGHT_VAL_STEP 8 +// #define RGBLIGHT_LIMIT_VAL 255 /* The maximum brightness level */ +// #define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */ +// /*== all animations enable ==*/ +// #define RGBLIGHT_ANIMATIONS +// /*== or choose animations ==*/ +// #define RGBLIGHT_EFFECT_BREATHING +// #define RGBLIGHT_EFFECT_RAINBOW_MOOD +// #define RGBLIGHT_EFFECT_RAINBOW_SWIRL +// #define RGBLIGHT_EFFECT_SNAKE +// #define RGBLIGHT_EFFECT_KNIGHT +// #define RGBLIGHT_EFFECT_CHRISTMAS +// #define RGBLIGHT_EFFECT_STATIC_GRADIENT +// #define RGBLIGHT_EFFECT_RGB_TEST +// #define RGBLIGHT_EFFECT_ALTERNATING +// #endif + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCING_DELAY 5 + +/* define if matrix has ghost (lacks anti-ghosting diodes) */ +//#define MATRIX_HAS_GHOST + +/* number of backlight levels */ + +/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ +#define LOCKING_SUPPORT_ENABLE +/* Locking resynchronize hack */ +#define LOCKING_RESYNC_ENABLE + +/* If defined, GRAVE_ESC will always act as ESC when CTRL is held. + * This is userful for the Windows task manager shortcut (ctrl+shift+esc). + */ +// #define GRAVE_ESC_CTRL_OVERRIDE + +/* + * Force NKRO + * + * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved + * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the + * makefile for this to work.) + * + * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N) + * until the next keyboard reset. + * + * NKRO may prevent your keystrokes from being detected in the BIOS, but it is + * fully operational during normal computer usage. + * + * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N) + * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by + * bootmagic, NKRO mode will always be enabled until it is toggled again during a + * power-up. + * + */ +//#define FORCE_NKRO + +/* + * Magic Key Options + * + * Magic keys are hotkey commands that allow control over firmware functions of + * the keyboard. They are best used in combination with the HID Listen program, + * found here: https://www.pjrc.com/teensy/hid_listen.html + * + * The options below allow the magic key functionality to be changed. This is + * useful if your keyboard/keypad is missing keys and you want magic key support. + * + */ + +/* key combination for magic key command */ +#define IS_COMMAND() ( \ + keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \ +) + +/* control how magic key switches layers */ +//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true +//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true +//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false + +/* override magic key keymap */ +//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS +//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS +//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM +//#define MAGIC_KEY_HELP1 H +//#define MAGIC_KEY_HELP2 SLASH +//#define MAGIC_KEY_DEBUG D +//#define MAGIC_KEY_DEBUG_MATRIX X +//#define MAGIC_KEY_DEBUG_KBD K +//#define MAGIC_KEY_DEBUG_MOUSE M +//#define MAGIC_KEY_VERSION V +//#define MAGIC_KEY_STATUS S +//#define MAGIC_KEY_CONSOLE C +//#define MAGIC_KEY_LAYER0_ALT1 ESC +//#define MAGIC_KEY_LAYER0_ALT2 GRAVE +//#define MAGIC_KEY_LAYER0 0 +//#define MAGIC_KEY_LAYER1 1 +//#define MAGIC_KEY_LAYER2 2 +//#define MAGIC_KEY_LAYER3 3 +//#define MAGIC_KEY_LAYER4 4 +//#define MAGIC_KEY_LAYER5 5 +//#define MAGIC_KEY_LAYER6 6 +//#define MAGIC_KEY_LAYER7 7 +//#define MAGIC_KEY_LAYER8 8 +//#define MAGIC_KEY_LAYER9 9 +//#define MAGIC_KEY_BOOTLOADER PAUSE +//#define MAGIC_KEY_LOCK CAPS +//#define MAGIC_KEY_EEPROM E +//#define MAGIC_KEY_NKRO N +//#define MAGIC_KEY_SLEEP_LED Z + +/* + * Feature disable options + * These options are also useful to firmware size reduction. + */ + +/* disable debug print */ +//#define NO_DEBUG + +/* disable print */ +//#define NO_PRINT + +/* disable action features */ +//#define NO_ACTION_LAYER +//#define NO_ACTION_TAPPING +//#define NO_ACTION_ONESHOT +//#define NO_ACTION_MACRO +//#define NO_ACTION_FUNCTION + +/* + * MIDI options + */ + +/* Prevent use of disabled MIDI features in the keymap */ +//#define MIDI_ENABLE_STRICT 1 + +/* enable basic MIDI features: + - MIDI notes can be sent when in Music mode is on +*/ +//#define MIDI_BASIC + +/* enable advanced MIDI features: + - MIDI notes can be added to the keymap + - Octave shift and transpose + - Virtual sustain, portamento, and modulation wheel + - etc. +*/ +//#define MIDI_ADVANCED + +/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ +//#define MIDI_TONE_KEYCODE_OCTAVES 1 + +/* + * HD44780 LCD Display Configuration + */ +/* +#define LCD_LINES 2 //< number of visible lines of the display +#define LCD_DISP_LENGTH 16 //< visibles characters per line of the display + +#define LCD_IO_MODE 1 //< 0: memory mapped mode, 1: IO port mode + +#if LCD_IO_MODE +#define LCD_PORT PORTB //< port for the LCD lines +#define LCD_DATA0_PORT LCD_PORT //< port for 4bit data bit 0 +#define LCD_DATA1_PORT LCD_PORT //< port for 4bit data bit 1 +#define LCD_DATA2_PORT LCD_PORT //< port for 4bit data bit 2 +#define LCD_DATA3_PORT LCD_PORT //< port for 4bit data bit 3 +#define LCD_DATA0_PIN 4 //< pin for 4bit data bit 0 +#define LCD_DATA1_PIN 5 //< pin for 4bit data bit 1 +#define LCD_DATA2_PIN 6 //< pin for 4bit data bit 2 +#define LCD_DATA3_PIN 7 //< pin for 4bit data bit 3 +#define LCD_RS_PORT LCD_PORT //< port for RS line +#define LCD_RS_PIN 3 //< pin for RS line +#define LCD_RW_PORT LCD_PORT //< port for RW line +#define LCD_RW_PIN 2 //< pin for RW line +#define LCD_E_PORT LCD_PORT //< port for Enable line +#define LCD_E_PIN 1 //< pin for Enable line +#endif +*/ + +/* Bootmagic Lite key configuration */ +// #define BOOTMAGIC_LITE_ROW 0 +// #define BOOTMAGIC_LITE_COLUMN 0 diff --git a/keyboards/handwired/downbubble/downbubble.c b/keyboards/handwired/downbubble/downbubble.c new file mode 100644 index 0000000000..48be8e4998 --- /dev/null +++ b/keyboards/handwired/downbubble/downbubble.c @@ -0,0 +1,16 @@ +/* Copyright 2018 REPLACE_WITH_YOUR_NAME + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include "downbubble.h" diff --git a/keyboards/handwired/downbubble/downbubble.h b/keyboards/handwired/downbubble/downbubble.h new file mode 100644 index 0000000000..a25a9a5db5 --- /dev/null +++ b/keyboards/handwired/downbubble/downbubble.h @@ -0,0 +1,111 @@ +/* Copyright 2018 REPLACE_WITH_YOUR_NAME + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#pragma once + +#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. + */ +#define LAYOUT_downbubble_standard( \ + K00, K01, K02, K03, K04, K05, K06, K010, K011, K012, K013, K014, K015, K016, K017, K018, K019,\ + K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K110, K111, K112, K113, K114, K115, K116, K118, K119,\ + K20, K21, K22, K23, K24, K25, K26, K27, K28, K210, K211, K212, K213, K214, K215, K216, K217, K218, K219,\ + K30, K31, K32, K33, K34, K35, K36, K37, K38, K29, K310, K311, K312, K313, K314, K315, K317, \ + K40, K41, K42, K43, K44, K45, K46, K47, K48, K410, K411, K412, K413, K414, K416, K418, \ + K50, K51, K52, K53, K54, K56, K58, K49, K510, K512, K513, K514, K516, K517, K518, K519 \ +) \ +{ \ + { K00, K01, K02, K03, K04, K05, K06, KC_NO, KC_NO, KC_NO, K010, K011, K012, K013, K014, K015, K016, K017, K018, K019 }, \ + { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K110, K111, K112, K113, K114, K115, K116, KC_NO, K118, K119 }, \ + { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K210, K211, K212, K213, K214, K215, K216, K217, K218, K219 }, \ + { K30, K31, K32, K33, K34, K35, K36, K37, K38, KC_NO, K310, K311, K312, K313, K314, K315, KC_NO, K317, KC_NO, KC_NO }, \ + { K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K410, K411, K412, K413, K414, KC_NO, K416, KC_NO, K418, KC_NO }, \ + { K50, K51, K52, K53, K54, KC_NO, K56, KC_NO, K58, KC_NO, K510, KC_NO, K512, K513, K514, KC_NO, K516, K517, K518, K519 }, \ + } + +#define LAYOUT_downbubble_splitbackspace( \ + K00, K01, K02, K03, K04, K05, K06, K010, K011, K012, K013, K014, K015, K016, K017, K018, K019,\ + K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K110, K111, K112, K113, K114, K115, K116, K117, K118, K119,\ + K20, K21, K22, K23, K24, K25, K26, K27, K28, K210, K211, K212, K213, K214, K215, K216, K217, K218, K219,\ + K30, K31, K32, K33, K34, K35, K36, K37, K38, K29, K310, K311, K312, K313, K314, K315, K317, \ + K40, K41, K42, K43, K44, K45, K46, K47, K48, K410, K411, K412, K413, K414, K416, K418, \ + K50, K51, K52, K53, K54, K56, K58, K49, K510, K512, K513, K514, K516, K517, K518, K519 \ +) \ +{ \ + { K00, K01, K02, K03, K04, K05, K06, KC_NO, KC_NO, KC_NO, K010, K011, K012, K013, K014, K015, K016, K017, K018, K019 }, \ + { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K110, K111, K112, K113, K114, K115, K116, K117, K118, K119 }, \ + { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K210, K211, K212, K213, K214, K215, K216, K217, K218, K219 }, \ + { K30, K31, K32, K33, K34, K35, K36, K37, K38, KC_NO, K310, K311, K312, K313, K314, K315, KC_NO, K317, KC_NO, KC_NO }, \ + { K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K410, K411, K412, K413, K414, KC_NO, K416, KC_NO, K418, KC_NO }, \ + { K50, K51, K52, K53, K54, KC_NO, K56, KC_NO, K58, KC_NO, K510, KC_NO, K512, K513, K514, KC_NO, K516, K517, K518, K519 }, \ + } + +#define LAYOUT_downbubble_splitrightshift( \ + K00, K01, K02, K03, K04, K05, K06, K010, K011, K012, K013, K014, K015, K016, K017, K018, K019,\ + K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K110, K111, K112, K113, K114, K115, K116, K118, K119,\ + K20, K21, K22, K23, K24, K25, K26, K27, K28, K210, K211, K212, K213, K214, K215, K216, K217, K218, K219,\ + K30, K31, K32, K33, K34, K35, K36, K37, K38, K29, K310, K311, K312, K313, K314, K315, K317, \ + K40, K41, K42, K43, K44, K45, K46, K47, K48, K410, K411, K412, K413, K414, K416, K417, K418, \ + K50, K51, K52, K53, K54, K56, K58, K49, K510, K512, K513, K514, K516, K517, K518, K519 \ +) \ +{ \ + { K00, K01, K02, K03, K04, K05, K06, KC_NO, KC_NO, KC_NO, K010, K011, K012, K013, K014, K015, K016, K017, K018, K019 }, \ + { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K110, K111, K112, K113, K114, K115, K116, KC_NO, K118, K119 }, \ + { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K210, K211, K212, K213, K214, K215, K216, K217, K218, K219 }, \ + { K30, K31, K32, K33, K34, K35, K36, K37, K38, KC_NO, K310, K311, K312, K313, K314, K315, KC_NO, K317, KC_NO, KC_NO }, \ + { K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K410, K411, K412, K413, K414, KC_NO, K416, K417, K418, KC_NO }, \ + { K50, K51, K52, K53, K54, KC_NO, K56, KC_NO, K58, KC_NO, K510, KC_NO, K512, K513, K514, KC_NO, K516, K517, K518, K519 }, \ + } + +#define LAYOUT_downbubble_splitnumpad( \ + K00, K01, K02, K03, K04, K05, K06, K010, K011, K012, K013, K014, K015, K016, K017, K018, K019,\ + K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K110, K111, K112, K113, K114, K115, K116, K118, K119,\ + K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K210, K211, K212, K213, K214, K215, K216, K217, K218, K219,\ + K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K310, K311, K312, K313, K314, K315, K317, \ + K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K410, K411, K412, K413, K414, K416, K418, \ + K50, K51, K52, K53, K54, K56, K57, K58, K59, K510, K512, K513, K514, K516, K517, K518, K519 \ +) \ +{ \ + { K00, K01, K02, K03, K04, K05, K06, KC_NO, KC_NO, KC_NO, K010, K011, K012, K013, K014, K015, K016, K017, K018, K019 }, \ + { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K110, K111, K112, K113, K114, K115, K116, KC_NO, K118, K119 }, \ + { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K210, K211, K212, K213, K214, K215, K216, K217, K218, K219 }, \ + { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K310, K311, K312, K313, K314, K315, KC_NO, K317, KC_NO, KC_NO }, \ + { K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K410, K411, K412, K413, K414, KC_NO, K416, KC_NO, K418, KC_NO }, \ + { K50, K51, K52, K53, K54, KC_NO, K56, K57, K58, K59, K510, KC_NO, K512, K513, K514, KC_NO, K516, K517, K518, K519 }, \ + } + +#define LAYOUT_downbubble_spliteverything( \ + K00, K01, K02, K03, K04, K05, K06, K010, K011, K012, K013, K014, K015, K016, K017, K018, K019,\ + K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K110, K111, K112, K113, K114, K115, K116, K117, K118, K119,\ + K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K210, K211, K212, K213, K214, K215, K216, K217, K218, K219,\ + K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K310, K311, K312, K313, K314, K315, K317, \ + K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K410, K411, K412, K413, K414, K416, K417, K418, \ + K50, K51, K52, K53, K54, K56, K57, K58, K59, K510, K512, K513, K514, K516, K517, K518, K519 \ +) \ +{ \ + { K00, K01, K02, K03, K04, K05, K06, KC_NO, KC_NO, KC_NO, K010, K011, K012, K013, K014, K015, K016, K017, K018, K019 }, \ + { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K110, K111, K112, K113, K114, K115, K116, K117, K118, K119 }, \ + { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K210, K211, K212, K213, K214, K215, K216, K217, K218, K219 }, \ + { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K310, K311, K312, K313, K314, K315, KC_NO, K317, KC_NO, KC_NO }, \ + { K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K410, K411, K412, K413, K414, KC_NO, K416, K417, K418, KC_NO }, \ + { K50, K51, K52, K53, K54, KC_NO, K56, K57, K58, K59, K510, KC_NO, K512, K513, K514, KC_NO, K516, K517, K518, K519 }, \ + } diff --git a/keyboards/handwired/downbubble/info.json b/keyboards/handwired/downbubble/info.json new file mode 100644 index 0000000000..cd64c0e369 --- /dev/null +++ b/keyboards/handwired/downbubble/info.json @@ -0,0 +1,554 @@ +{ + "keyboard_name": "downbubble", + "url": "", + "maintainer": "flehrad", + "width": 22.75, + "height": 6, + "layouts": { + "LAYOUT_downbubble_standard": { + "layout": [ + {"label":"K00", "x":0, "y":0.5}, + {"label":"K01", "x":1, "y":0.5}, + {"label":"K02", "x":2, "y":0.5}, + {"label":"K03", "x":3, "y":0.5}, + {"label":"K04", "x":4, "y":0.5}, + {"label":"K05", "x":5, "y":0.5}, + {"label":"K06", "x":6, "y":0.5}, + {"label":"K010", "x":12.75, "y":0.5}, + {"label":"K011", "x":13.75, "y":0.5}, + {"label":"K012", "x":14.75, "y":0.5}, + {"label":"K013", "x":15.75, "y":0.5}, + {"label":"K014", "x":16.75, "y":0.5}, + {"label":"K015", "x":17.75, "y":0.5}, + {"label":"K016", "x":18.75, "y":0.5}, + {"label":"K017", "x":19.75, "y":0.5}, + {"label":"K018", "x":20.75, "y":0.5}, + {"label":"K019", "x":21.75, "y":0.5}, + {"label":"K10", "x":0, "y":1.5}, + {"label":"K11", "x":1, "y":1.5}, + {"label":"K12", "x":2, "y":1.5}, + {"label":"K13", "x":3, "y":1.5}, + {"label":"K14", "x":4, "y":1.5}, + {"label":"K15", "x":5, "y":1.5}, + {"label":"K16", "x":6, "y":1.5}, + {"label":"K17", "x":8.75, "y":1.5}, + {"label":"K18", "x":9.75, "y":1.5}, + {"label":"K19", "x":10.75, "y":1.5}, + {"label":"K110", "x":12.75, "y":1.5}, + {"label":"K111", "x":13.75, "y":1.5}, + {"label":"K112", "x":14.75, "y":1.5}, + {"label":"K113", "x":15.75, "y":1.5}, + {"label":"K114", "x":16.75, "y":1.5}, + {"label":"K115", "x":17.75, "y":1.5}, + {"label":"K116", "x":18.75, "y":1.5, "w":2}, + {"label":"K118", "x":20.75, "y":1.5}, + {"label":"K119", "x":21.75, "y":1.5}, + {"label":"K20", "x":0, "y":2.5, "w":1.5}, + {"label":"K21", "x":1.5, "y":2.5}, + {"label":"K22", "x":2.5, "y":2.5}, + {"label":"K23", "x":3.5, "y":2.5}, + {"label":"K24", "x":4.5, "y":2.5}, + {"label":"K25", "x":5.5, "y":2.5}, + {"label":"K26", "x":7.75, "y":2.5}, + {"label":"K17", "x":8.75, "y":2.5}, + {"label":"K28", "x":9.75, "y":2.5}, + {"label":"K210", "x":12.25, "y":2.5}, + {"label":"K211", "x":13.25, "y":2.5}, + {"label":"K212", "x":14.25, "y":2.5}, + {"label":"K213", "x":15.25, "y":2.5}, + {"label":"K214", "x":16.25, "y":2.5}, + {"label":"K215", "x":17.25, "y":2.5}, + {"label":"K216", "x":18.25, "y":2.5}, + {"label":"K217", "x":19.25, "y":2.5, "w":1.5}, + {"label":"K218", "x":20.75, "y":2.5}, + {"label":"K219", "x":21.75, "y":2.5}, + {"label":"K30", "x":0, "y":3.5, "w":1.75}, + {"label":"K31", "x":1.75, "y":3.5}, + {"label":"K32", "x":2.75, "y":3.5}, + {"label":"K33", "x":3.75, "y":3.5}, + {"label":"K34", "x":4.75, "y":3.5}, + {"label":"K35", "x":5.75, "y":3.5}, + {"label":"K36", "x":7.75, "y":3.5}, + {"label":"K37", "x":8.75, "y":3.5}, + {"label":"K38", "x":9.75, "y":3.5}, + {"label":"K29", "x":10.75, "y":2.5, "h":2}, + {"label":"K310", "x":12.5, "y":3.5}, + {"label":"K311", "x":13.5, "y":3.5}, + {"label":"K312", "x":14.5, "y":3.5}, + {"label":"K313", "x":15.5, "y":3.5}, + {"label":"K314", "x":16.5, "y":3.5}, + {"label":"K315", "x":17.5, "y":3.5}, + {"label":"K317", "x":18.5, "y":3.5, "w":2.25}, + {"label":"K40", "x":0, "y":4.5, "w":2.25}, + {"label":"K41", "x":2.25, "y":4.5}, + {"label":"K42", "x":3.25, "y":4.5}, + {"label":"K43", "x":4.25, "y":4.5}, + {"label":"K44", "x":5.25, "y":4.5}, + {"label":"K45", "x":6.25, "y":4.5}, + {"label":"K46", "x":7.75, "y":4.5}, + {"label":"K47", "x":8.75, "y":4.5}, + {"label":"K48", "x":9.75, "y":4.5}, + {"label":"K410", "x":13, "y":4.5}, + {"label":"K411", "x":14, "y":4.5}, + {"label":"K412", "x":15, "y":4.5}, + {"label":"K413", "x":16, "y":4.5}, + {"label":"K414", "x":17, "y":4.5}, + {"label":"K416", "x":18, "y":4.5, "w":2.75}, + {"label":"K418", "x":20.75, "y":4.5}, + {"label":"K50", "x":0, "y":5.5, "w":1.25}, + {"label":"K51", "x":1.25, "y":5.5, "w":1.25}, + {"label":"K52", "x":2.5, "y":5.5, "w":1.25}, + {"label":"K53", "x":3.75, "y":5.5, "w":1.25}, + {"label":"K54", "x":5, "y":5.5, "w":2.25}, + {"label":"K56", "x":7.75, "y":5.5, "w":2}, + {"label":"K58", "x":9.75, "y":5.5}, + {"label":"K49", "x":10.75, "y":4.5, "h":2}, + {"label":"K510", "x":13, "y":5.5, "w":2}, + {"label":"K512", "x":15, "y":5.5, "w":1.25}, + {"label":"K513", "x":16.25, "y":5.5, "w":1.25}, + {"label":"K514", "x":17.5, "y":5.5, "w":1.25}, + {"label":"K516", "x":18.75, "y":5.5}, + {"label":"K517", "x":19.75, "y":5.5}, + {"label":"K518", "x":20.75, "y":5.5}, + {"label":"K519", "x":21.75, "y":5.5}] + }, + "LAYOUT_downbubbled_splitbackspace": { + "layout": [ + {"label":"K00", "x":0, "y":0.5}, + {"label":"K01", "x":1, "y":0.5}, + {"label":"K02", "x":2, "y":0.5}, + {"label":"K03", "x":3, "y":0.5}, + {"label":"K04", "x":4, "y":0.5}, + {"label":"K05", "x":5, "y":0.5}, + {"label":"K06", "x":6, "y":0.5}, + {"label":"K010", "x":12.75, "y":0.5}, + {"label":"K011", "x":13.75, "y":0.5}, + {"label":"K012", "x":14.75, "y":0.5}, + {"label":"K013", "x":15.75, "y":0.5}, + {"label":"K014", "x":16.75, "y":0.5}, + {"label":"K015", "x":17.75, "y":0.5}, + {"label":"K016", "x":18.75, "y":0.5}, + {"label":"K017", "x":19.75, "y":0.5}, + {"label":"K018", "x":20.75, "y":0.5}, + {"label":"K019", "x":21.75, "y":0.5}, + {"label":"K10", "x":0, "y":1.5}, + {"label":"K11", "x":1, "y":1.5}, + {"label":"K12", "x":2, "y":1.5}, + {"label":"K13", "x":3, "y":1.5}, + {"label":"K14", "x":4, "y":1.5}, + {"label":"K15", "x":5, "y":1.5}, + {"label":"K16", "x":6, "y":1.5}, + {"label":"K17", "x":8.75, "y":1.5}, + {"label":"K18", "x":9.75, "y":1.5}, + {"label":"K19", "x":10.75, "y":1.5}, + {"label":"K110", "x":12.75, "y":1.5}, + {"label":"K111", "x":13.75, "y":1.5}, + {"label":"K112", "x":14.75, "y":1.5}, + {"label":"K113", "x":15.75, "y":1.5}, + {"label":"K114", "x":16.75, "y":1.5}, + {"label":"K115", "x":17.75, "y":1.5}, + {"label":"K116", "x":18.75, "y":1.5}, + {"label":"K117", "x":19.75, "y":1}, + {"label":"K118", "x":20.75, "y":1.5}, + {"label":"K119", "x":21.75, "y":1.5}, + {"label":"K20", "x":0, "y":2.5, "w":1.5}, + {"label":"K21", "x":1.5, "y":2.5}, + {"label":"K22", "x":2.5, "y":2.5}, + {"label":"K23", "x":3.5, "y":2.5}, + {"label":"K24", "x":4.5, "y":2.5}, + {"label":"K25", "x":5.5, "y":2.5}, + {"label":"K26", "x":7.75, "y":2.5}, + {"label":"K17", "x":8.75, "y":2.5}, + {"label":"K28", "x":9.75, "y":2.5}, + {"label":"K210", "x":12.25, "y":2.5}, + {"label":"K211", "x":13.25, "y":2.5}, + {"label":"K212", "x":14.25, "y":2.5}, + {"label":"K213", "x":15.25, "y":2.5}, + {"label":"K214", "x":16.25, "y":2.5}, + {"label":"K215", "x":17.25, "y":2.5}, + {"label":"K216", "x":18.25, "y":2.5}, + {"label":"K217", "x":19.25, "y":2.5, "w":1.5}, + {"label":"K218", "x":20.75, "y":2.5}, + {"label":"K219", "x":21.75, "y":2.5}, + {"label":"K30", "x":0, "y":3.5, "w":1.75}, + {"label":"K31", "x":1.75, "y":3.5}, + {"label":"K32", "x":2.75, "y":3.5}, + {"label":"K33", "x":3.75, "y":3.5}, + {"label":"K34", "x":4.75, "y":3.5}, + {"label":"K35", "x":5.75, "y":3.5}, + {"label":"K36", "x":7.75, "y":3.5}, + {"label":"K37", "x":8.75, "y":3.5}, + {"label":"K38", "x":9.75, "y":3.5}, + {"label":"K29", "x":10.75, "y":2.5, "h":2}, + {"label":"K310", "x":12.5, "y":3.5}, + {"label":"K311", "x":13.5, "y":3.5}, + {"label":"K312", "x":14.5, "y":3.5}, + {"label":"K313", "x":15.5, "y":3.5}, + {"label":"K314", "x":16.5, "y":3.5}, + {"label":"K315", "x":17.5, "y":3.5}, + {"label":"K317", "x":18.5, "y":3.5, "w":2.25}, + {"label":"K40", "x":0, "y":4.5, "w":2.25}, + {"label":"K41", "x":2.25, "y":4.5}, + {"label":"K42", "x":3.25, "y":4.5}, + {"label":"K43", "x":4.25, "y":4.5}, + {"label":"K44", "x":5.25, "y":4.5}, + {"label":"K45", "x":6.25, "y":4.5}, + {"label":"K46", "x":7.75, "y":4.5}, + {"label":"K47", "x":8.75, "y":4.5}, + {"label":"K48", "x":9.75, "y":4.5}, + {"label":"K410", "x":13, "y":4.5}, + {"label":"K411", "x":14, "y":4.5}, + {"label":"K412", "x":15, "y":4.5}, + {"label":"K413", "x":16, "y":4.5}, + {"label":"K414", "x":17, "y":4.5}, + {"label":"K416", "x":18, "y":4.5, "w":2.75}, + {"label":"K418", "x":20.75, "y":4.5}, + {"label":"K50", "x":0, "y":5.5, "w":1.25}, + {"label":"K51", "x":1.25, "y":5.5, "w":1.25}, + {"label":"K52", "x":2.5, "y":5.5, "w":1.25}, + {"label":"K53", "x":3.75, "y":5.5, "w":1.25}, + {"label":"K54", "x":5, "y":5.5, "w":2.25}, + {"label":"K56", "x":7.75, "y":5.5, "w":2}, + {"label":"K58", "x":9.75, "y":5.5}, + {"label":"K49", "x":10.75, "y":4.5, "h":2}, + {"label":"K510", "x":13, "y":5.5, "w":2}, + {"label":"K512", "x":15, "y":5.5, "w":1.25}, + {"label":"K513", "x":16.25, "y":5.5, "w":1.25}, + {"label":"K514", "x":17.5, "y":5.5, "w":1.25}, + {"label":"K516", "x":18.75, "y":5.5}, + {"label":"K517", "x":19.75, "y":5.5}, + {"label":"K518", "x":20.75, "y":5.5}, + {"label":"K519", "x":21.75, "y":5.5}] + }, + "LAYOUT_downbubble_splitrightshift": { + "layout": [ + {"label":"K00", "x":0, "y":0.5}, + {"label":"K01", "x":1, "y":0.5}, + {"label":"K02", "x":2, "y":0.5}, + {"label":"K03", "x":3, "y":0.5}, + {"label":"K04", "x":4, "y":0.5}, + {"label":"K05", "x":5, "y":0.5}, + {"label":"K06", "x":6, "y":0.5}, + {"label":"K010", "x":12.75, "y":0.5}, + {"label":"K011", "x":13.75, "y":0.5}, + {"label":"K012", "x":14.75, "y":0.5}, + {"label":"K013", "x":15.75, "y":0.5}, + {"label":"K014", "x":16.75, "y":0.5}, + {"label":"K015", "x":17.75, "y":0.5}, + {"label":"K016", "x":18.75, "y":0.5}, + {"label":"K017", "x":19.75, "y":0.5}, + {"label":"K018", "x":20.75, "y":0.5}, + {"label":"K019", "x":21.75, "y":0.5}, + {"label":"K10", "x":0, "y":1.5}, + {"label":"K11", "x":1, "y":1.5}, + {"label":"K12", "x":2, "y":1.5}, + {"label":"K13", "x":3, "y":1.5}, + {"label":"K14", "x":4, "y":1.5}, + {"label":"K15", "x":5, "y":1.5}, + {"label":"K16", "x":6, "y":1.5}, + {"label":"K17", "x":8.75, "y":1.5}, + {"label":"K18", "x":9.75, "y":1.5}, + {"label":"K19", "x":10.75, "y":1.5}, + {"label":"K110", "x":12.75, "y":1.5}, + {"label":"K111", "x":13.75, "y":1.5}, + {"label":"K112", "x":14.75, "y":1.5}, + {"label":"K113", "x":15.75, "y":1.5}, + {"label":"K114", "x":16.75, "y":1.5}, + {"label":"K115", "x":17.75, "y":1.5}, + {"label":"K116", "x":18.75, "y":1.5, "w":2}, + {"label":"K118", "x":20.75, "y":1.5}, + {"label":"K119", "x":21.75, "y":1.5}, + {"label":"K20", "x":0, "y":2.5, "w":1.5}, + {"label":"K21", "x":1.5, "y":2.5}, + {"label":"K22", "x":2.5, "y":2.5}, + {"label":"K23", "x":3.5, "y":2.5}, + {"label":"K24", "x":4.5, "y":2.5}, + {"label":"K25", "x":5.5, "y":2.5}, + {"label":"K26", "x":7.75, "y":2.5}, + {"label":"K17", "x":8.75, "y":2.5}, + {"label":"K28", "x":9.75, "y":2.5}, + {"label":"K210", "x":12.25, "y":2.5}, + {"label":"K211", "x":13.25, "y":2.5}, + {"label":"K212", "x":14.25, "y":2.5}, + {"label":"K213", "x":15.25, "y":2.5}, + {"label":"K214", "x":16.25, "y":2.5}, + {"label":"K215", "x":17.25, "y":2.5}, + {"label":"K216", "x":18.25, "y":2.5}, + {"label":"K217", "x":19.25, "y":2.5, "w":1.5}, + {"label":"K218", "x":20.75, "y":2.5}, + {"label":"K219", "x":21.75, "y":2.5}, + {"label":"K30", "x":0, "y":3.5, "w":1.75}, + {"label":"K31", "x":1.75, "y":3.5}, + {"label":"K32", "x":2.75, "y":3.5}, + {"label":"K33", "x":3.75, "y":3.5}, + {"label":"K34", "x":4.75, "y":3.5}, + {"label":"K35", "x":5.75, "y":3.5}, + {"label":"K36", "x":7.75, "y":3.5}, + {"label":"K37", "x":8.75, "y":3.5}, + {"label":"K38", "x":9.75, "y":3.5}, + {"label":"K29", "x":10.75, "y":2.5, "h":2}, + {"label":"K310", "x":12.5, "y":3.5}, + {"label":"K311", "x":13.5, "y":3.5}, + {"label":"K312", "x":14.5, "y":3.5}, + {"label":"K313", "x":15.5, "y":3.5}, + {"label":"K314", "x":16.5, "y":3.5}, + {"label":"K315", "x":17.5, "y":3.5}, + {"label":"K317", "x":18.5, "y":3.5, "w":2.25}, + {"label":"K40", "x":0, "y":4.5, "w":2.25}, + {"label":"K41", "x":2.25, "y":4.5}, + {"label":"K42", "x":3.25, "y":4.5}, + {"label":"K43", "x":4.25, "y":4.5}, + {"label":"K44", "x":5.25, "y":4.5}, + {"label":"K45", "x":6.25, "y":4.5}, + {"label":"K46", "x":7.75, "y":4.5}, + {"label":"K47", "x":8.75, "y":4.5}, + {"label":"K48", "x":9.75, "y":4.5}, + {"label":"K410", "x":13, "y":4.5}, + {"label":"K411", "x":14, "y":4.5}, + {"label":"K412", "x":15, "y":4.5}, + {"label":"K413", "x":16, "y":4.5}, + {"label":"K414", "x":17, "y":4.5}, + {"label":"K416", "x":18, "y":4.5, "w":1.75}, + {"label":"K417", "x":19.75, "y":4}, + {"label":"K418", "x":20.75, "y":4.5}, + {"label":"K50", "x":0, "y":5.5, "w":1.25}, + {"label":"K51", "x":1.25, "y":5.5, "w":1.25}, + {"label":"K52", "x":2.5, "y":5.5, "w":1.25}, + {"label":"K53", "x":3.75, "y":5.5, "w":1.25}, + {"label":"K54", "x":5, "y":5.5, "w":2.25}, + {"label":"K56", "x":7.75, "y":5.5, "w":2}, + {"label":"K58", "x":9.75, "y":5.5}, + {"label":"K49", "x":10.75, "y":4.5, "h":2}, + {"label":"K510", "x":13, "y":5.5, "w":2}, + {"label":"K512", "x":15, "y":5.5, "w":1.25}, + {"label":"K513", "x":16.25, "y":5.5, "w":1.25}, + {"label":"K514", "x":17.5, "y":5.5, "w":1.25}, + {"label":"K516", "x":18.75, "y":5.5}, + {"label":"K517", "x":19.75, "y":5.5}, + {"label":"K518", "x":20.75, "y":5.5}, + {"label":"K519", "x":21.75, "y":5.5}] + }, + "LAYOUT_downbubble_splitnumpad": { + "layout": [ + {"label":"K00", "x":0, "y":0.5}, + {"label":"K01", "x":1, "y":0.5}, + {"label":"K02", "x":2, "y":0.5}, + {"label":"K03", "x":3, "y":0.5}, + {"label":"K04", "x":4, "y":0.5}, + {"label":"K05", "x":5, "y":0.5}, + {"label":"K06", "x":6, "y":0.5}, + {"label":"K010", "x":12.75, "y":0.5}, + {"label":"K011", "x":13.75, "y":0.5}, + {"label":"K012", "x":14.75, "y":0.5}, + {"label":"K013", "x":15.75, "y":0.5}, + {"label":"K014", "x":16.75, "y":0.5}, + {"label":"K015", "x":17.75, "y":0.5}, + {"label":"K016", "x":18.75, "y":0.5}, + {"label":"K017", "x":19.75, "y":0.5}, + {"label":"K018", "x":20.75, "y":0.5}, + {"label":"K019", "x":21.75, "y":0.5}, + {"label":"K10", "x":0, "y":1.5}, + {"label":"K11", "x":1, "y":1.5}, + {"label":"K12", "x":2, "y":1.5}, + {"label":"K13", "x":3, "y":1.5}, + {"label":"K14", "x":4, "y":1.5}, + {"label":"K15", "x":5, "y":1.5}, + {"label":"K16", "x":6, "y":1.5}, + {"label":"K17", "x":8.75, "y":1.5}, + {"label":"K18", "x":9.75, "y":1.5}, + {"label":"K19", "x":10.75, "y":1.5}, + {"label":"K110", "x":12.75, "y":1.5}, + {"label":"K111", "x":13.75, "y":1.5}, + {"label":"K112", "x":14.75, "y":1.5}, + {"label":"K113", "x":15.75, "y":1.5}, + {"label":"K114", "x":16.75, "y":1.5}, + {"label":"K115", "x":17.75, "y":1.5}, + {"label":"K116", "x":18.75, "y":1.5, "w":2}, + {"label":"K118", "x":20.75, "y":1.5}, + {"label":"K119", "x":21.75, "y":1.5}, + {"label":"K20", "x":0, "y":2.5, "w":1.5}, + {"label":"K21", "x":1.5, "y":2.5}, + {"label":"K22", "x":2.5, "y":2.5}, + {"label":"K23", "x":3.5, "y":2.5}, + {"label":"K24", "x":4.5, "y":2.5}, + {"label":"K25", "x":5.5, "y":2.5}, + {"label":"K26", "x":7.75, "y":2.5}, + {"label":"K17", "x":8.75, "y":2.5}, + {"label":"K28", "x":9.75, "y":2.5}, + {"label":"K29", "x":10.75, "y":2}, + {"label":"K210", "x":12.25, "y":2.5}, + {"label":"K211", "x":13.25, "y":2.5}, + {"label":"K212", "x":14.25, "y":2.5}, + {"label":"K213", "x":15.25, "y":2.5}, + {"label":"K214", "x":16.25, "y":2.5}, + {"label":"K215", "x":17.25, "y":2.5}, + {"label":"K216", "x":18.25, "y":2.5}, + {"label":"K217", "x":19.25, "y":2.5, "w":1.5}, + {"label":"K218", "x":20.75, "y":2.5}, + {"label":"K219", "x":21.75, "y":2.5}, + {"label":"K30", "x":0, "y":3.5, "w":1.75}, + {"label":"K31", "x":1.75, "y":3.5}, + {"label":"K32", "x":2.75, "y":3.5}, + {"label":"K33", "x":3.75, "y":3.5}, + {"label":"K34", "x":4.75, "y":3.5}, + {"label":"K35", "x":5.75, "y":3.5}, + {"label":"K36", "x":7.75, "y":3.5}, + {"label":"K37", "x":8.75, "y":3.5}, + {"label":"K38", "x":9.75, "y":3.5}, + {"label":"K39", "x":10.75, "y":3}, + {"label":"K310", "x":12.5, "y":3.5}, + {"label":"K311", "x":13.5, "y":3.5}, + {"label":"K312", "x":14.5, "y":3.5}, + {"label":"K313", "x":15.5, "y":3.5}, + {"label":"K314", "x":16.5, "y":3.5}, + {"label":"K315", "x":17.5, "y":3.5}, + {"label":"K317", "x":18.5, "y":3.5, "w":2.25}, + {"label":"K40", "x":0, "y":4.5, "w":2.25}, + {"label":"K41", "x":2.25, "y":4.5}, + {"label":"K42", "x":3.25, "y":4.5}, + {"label":"K43", "x":4.25, "y":4.5}, + {"label":"K44", "x":5.25, "y":4.5}, + {"label":"K45", "x":6.25, "y":4.5}, + {"label":"K46", "x":7.75, "y":4.5}, + {"label":"K47", "x":8.75, "y":4.5}, + {"label":"K48", "x":9.75, "y":4.5}, + {"label":"K49", "x":10.75, "y":4}, + {"label":"K410", "x":13, "y":4.5}, + {"label":"K411", "x":14, "y":4.5}, + {"label":"K412", "x":15, "y":4.5}, + {"label":"K413", "x":16, "y":4.5}, + {"label":"K414", "x":17, "y":4.5}, + {"label":"K416", "x":18, "y":4.5, "w":2.75}, + {"label":"K418", "x":20.75, "y":4.5}, + {"label":"K50", "x":0, "y":5.5, "w":1.25}, + {"label":"K51", "x":1.25, "y":5.5, "w":1.25}, + {"label":"K52", "x":2.5, "y":5.5, "w":1.25}, + {"label":"K53", "x":3.75, "y":5.5, "w":1.25}, + {"label":"K54", "x":5, "y":5.5, "w":2.25}, + {"label":"K56", "x":7.75, "y":5.5}, + {"Label":"K57", "x":8.75, "y":5}, + {"label":"K58", "x":9.75, "y":5}, + {"label":"K59", "x":10.75, "y":5}, + {"label":"K510", "x":13, "y":5.5, "w":2}, + {"label":"K512", "x":15, "y":5.5, "w":1.25}, + {"label":"K513", "x":16.25, "y":5.5, "w":1.25}, + {"label":"K514", "x":17.5, "y":5.5, "w":1.25}, + {"label":"K516", "x":18.75, "y":5.5}, + {"label":"K517", "x":19.75, "y":5.5}, + {"label":"K518", "x":20.75, "y":5.5}, + {"label":"K519", "x":21.75, "y":5.5}] + }, + "LAYOUT_downbubble_spliteverything": { + "layout": [ + {"label":"K00", "x":0, "y":0}, + {"label":"K01", "x":1, "y":0}, + {"label":"K02", "x":2, "y":0}, + {"label":"K03", "x":3, "y":0}, + {"label":"K04", "x":4, "y":0}, + {"label":"K05", "x":5, "y":0}, + {"label":"K06", "x":6, "y":0}, + {"label":"K010", "x":12.75, "y":0}, + {"label":"K011", "x":13.75, "y":0}, + {"label":"K012", "x":14.75, "y":0}, + {"label":"K013", "x":15.75, "y":0}, + {"label":"K014", "x":16.75, "y":0}, + {"label":"K015", "x":17.75, "y":0}, + {"label":"K016", "x":18.75, "y":0}, + {"label":"K017", "x":19.75, "y":0}, + {"label":"K018", "x":20.75, "y":0}, + {"label":"K019", "X":21.75, "y":0}, + {"label":"K10", "x":0, "y":1}, + {"label":"K11", "x":1, "y":1}, + {"label":"K12", "x":2, "y":1}, + {"label":"K13", "x":3, "y":1}, + {"label":"K14", "x":4, "y":1}, + {"label":"K15", "x":5, "y":1}, + {"label":"K16", "x":6, "y":1}, + {"label":"K17", "x":8.75, "y":1}, + {"label":"K18", "x":9.75, "y":1}, + {"label":"K19", "x":10.75, "y":1}, + {"label":"K110", "x":12.75, "y":1}, + {"label":"K111", "x":13.75, "y":1}, + {"label":"K112", "x":14.75, "y":1}, + {"label":"K113", "x":15.75, "y":1}, + {"label":"K114", "x":16.75, "y":1}, + {"label":"K115", "x":17.75, "y":1}, + {"label":"K116", "x":18.75, "y":1}, + {"label":"K117", "x":19.75, "y":1}, + {"label":"K118", "x":20.75, "y":1}, + {"label":"K119", "x":21.75, "y":1}, + {"label":"K20", "x":0, "y":2, "w":1.5}, + {"label":"K21", "x":1.5, "y":2}, + {"label":"K22", "x":2.5, "y":2}, + {"label":"K23", "x":3.5, "y":2}, + {"label":"K24", "x":4.5, "y":2}, + {"label":"K25", "x":5.5, "y":2}, + {"label":"K26", "x":7.75, "y":2}, + {"label":"K27", "x":8.75, "y":2}, + {"label":"K28", "x":9.75, "y":2}, + {"label":"K29", "x":10.75, "y":2}, + {"label":"K210", "x":12.25, "y":2}, + {"label":"K211", "x":13.25, "y":2}, + {"label":"K212", "x":14.25, "y":2}, + {"label":"K213", "x":15.25, "y":2}, + {"label":"K214", "x":16.25, "y":2}, + {"label":"K215", "x":17.25, "y":2}, + {"label":"K216", "x":18.25, "y":2}, + {"label":"K217", "x":19.25, "y":2, "w":1.5}, + {"label":"K218", "x":20.75, "y":2}, + {"label":"K219", "x":21.75, "y":2}, + {"label":"K30", "x":0, "y":3, "w":1.75}, + {"label":"K31", "x":1.75, "y":3}, + {"label":"K32", "x":2.75, "y":3}, + {"label":"K33", "x":3.75, "y":3}, + {"label":"K34", "x":4.75, "y":3}, + {"label":"K35", "x":5.75, "y":3}, + {"label":"K36", "x":7.75, "y":3}, + {"label":"K37", "x":8.75, "y":3}, + {"label":"K38", "x":9.75, "y":3}, + {"label":"K39", "x":10.75, "y":3}, + {"label":"K310", "x":12.5, "y":3}, + {"label":"K311", "x":13.5, "y":3}, + {"label":"K312", "x":14.5, "y":3}, + {"label":"K313", "x":15.5, "y":3}, + {"label":"K314", "x":16.5, "y":3}, + {"label":"K315", "x":17.5, "y":3}, + {"label":"K317", "x":18.5, "y":3, "w":2.25}, + {"label":"K40", "x":0, "y":4, "w":2.25}, + {"label":"K41", "x":2.25, "y":4}, + {"label":"K42", "x":3.25, "y":4}, + {"label":"K43", "x":4.25, "y":4}, + {"label":"K44", "x":5.25, "y":4}, + {"label":"K45", "x":6.25, "y":4}, + {"label":"K46", "x":7.75, "y":4}, + {"label":"K47", "x":8.75, "y":4}, + {"label":"K48", "x":9.75, "y":4}, + {"label":"K49", "x":10.75, "y":4}, + {"label":"K410", "x":13, "y":4}, + {"label":"K411", "x":14, "y":4}, + {"label":"K412", "x":15, "y":4}, + {"label":"K413", "x":16, "y":4}, + {"label":"K414", "x":17, "y":4}, + {"label":"K416", "x":18, "y":4, "w":1.75}, + {"label":"K417", "x":19.75, "y":4}, + {"label":"K418", "x":20.75, "y":4}, + {"label":"K50", "x":0, "y":5, "w":1.25}, + {"label":"K51", "x":1.25, "y":5, "w":1.25}, + {"label":"K52", "x":2.5, "y":5, "w":1.25}, + {"label":"K53", "x":3.75, "y":5, "w":1.25}, + {"label":"K54", "x":5, "y":5, "w":2.25}, + {"label":"K56", "x":7.75, "y":5}, + {"label":"K57", "x":8.75, "y":5}, + {"label":"K58", "x":9.75, "y":5}, + {"label":"K59", "x":10.75, "y":5}, + {"label":"K510", "x":13, "y":5, "w":2}, + {"label":"K512", "x":15, "y":5, "w":1.25}, + {"label":"K513", "x":16.25, "y":5, "w":1.25}, + {"label":"K514", "x":17.5, "y":5, "w":1.25}, + {"label":"K516", "x":18.75, "y":5}, + {"label":"K517", "x":19.75, "y":5}, + {"label":"K518", "x":20.75, "y":5}, + {"label":"K519", "x":21.75, "y":5}] + } + } +} diff --git a/keyboards/handwired/downbubble/keymaps/default/config.h b/keyboards/handwired/downbubble/keymaps/default/config.h new file mode 100644 index 0000000000..4496c59100 --- /dev/null +++ b/keyboards/handwired/downbubble/keymaps/default/config.h @@ -0,0 +1,19 @@ +/* Copyright 2018 REPLACE_WITH_YOUR_NAME + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +// place overrides here diff --git a/keyboards/handwired/downbubble/keymaps/default/keymap.c b/keyboards/handwired/downbubble/keymaps/default/keymap.c new file mode 100644 index 0000000000..d35d367394 --- /dev/null +++ b/keyboards/handwired/downbubble/keymaps/default/keymap.c @@ -0,0 +1,103 @@ +/* Copyright 2018 REPLACE_WITH_YOUR_NAME + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +// Defines the keycodes used by our macros in process_record_user +enum custom_keycodes { + QMKBEST = SAFE_RANGE, + QMKURL +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_downbubble_standard(\ + 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_NLCK, KC_HOME, KC_TRNS, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_PSLS, KC_PAST, KC_PMNS, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_END, KC_PGUP, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_P7, KC_P8, KC_P9, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_PGDN, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_P4, KC_P5, KC_P6, KC_PPLS, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_P1, KC_P2, KC_P3, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, + KC_LCTL, KC_LGUI, KC_LALT, KC_BSPC, KC_SPC, KC_P0, KC_PDOT, KC_PENT, KC_BSPC, KC_RALT, KC_RGUI, KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + + LAYOUT_downbubble_splitbackspace(\ + 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_NLCK, KC_HOME, KC_TRNS, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_PSLS, KC_PAST, KC_PMNS, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_TRNS, KC_END, KC_PGUP, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_P7, KC_P8, KC_P9, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_PGDN, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_P4, KC_P5, KC_P6, KC_PPLS, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_P1, KC_P2, KC_P3, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, + KC_LCTL, KC_LGUI, KC_LALT, KC_BSPC, KC_SPC, KC_P0, KC_PDOT, KC_PENT, KC_BSPC, KC_RALT, KC_RGUI, KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + + LAYOUT_downbubble_splitrightshift(\ + 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_NLCK, KC_HOME, KC_TRNS, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_PSLS, KC_PAST, KC_PMNS, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_END, KC_PGUP, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_P7, KC_P8, KC_P9, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_PGDN, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_P4, KC_P5, KC_P6, KC_PPLS, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_P1, KC_P2, KC_P3, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_TRNS, KC_UP, + KC_LCTL, KC_LGUI, KC_LALT, KC_BSPC, KC_SPC, KC_P0, KC_PDOT, KC_PENT, KC_BSPC, KC_RALT, KC_RGUI, KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + + LAYOUT_downbubble_splitnumpad(\ + 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_NLCK, KC_HOME, KC_TRNS, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_PSLS, KC_PAST, KC_PMNS, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_END, KC_PGUP, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_P7, KC_P8, KC_P9, KC_PPLS, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_PGDN, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_P4, KC_P5, KC_P6, KC_TRNS, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_P1, KC_P2, KC_P3, KC_PENT, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, + KC_LCTL, KC_LGUI, KC_LALT, KC_BSPC, KC_SPC, KC_P0, KC_TRNS, KC_PDOT, KC_TRNS, KC_BSPC, KC_RALT, KC_RGUI, KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + + LAYOUT_downbubble_spliteverything(\ + 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_NLCK, KC_HOME, KC_TRNS, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_PSLS, KC_PAST, KC_PMNS, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_TRNS, KC_END, KC_PGUP, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_P7, KC_P8, KC_P9, KC_PPLS, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_PGDN, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_P4, KC_P5, KC_P6, KC_TRNS, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_P1, KC_P2, KC_P3, KC_PENT, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_TRNS, KC_UP, + KC_LCTL, KC_LGUI, KC_LALT, KC_BSPC, KC_SPC, KC_P0, KC_TRNS, KC_PDOT, KC_TRNS, KC_BSPC, KC_RALT, KC_RGUI, KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), +}; + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { + case QMKBEST: + if (record->event.pressed) { + // when keycode QMKBEST is pressed + SEND_STRING("QMK is the best thing ever!"); + } else { + // when keycode QMKBEST is released + } + break; + case QMKURL: + if (record->event.pressed) { + // when keycode QMKURL is pressed + SEND_STRING("https://qmk.fm/" SS_TAP(X_ENTER)); + } else { + // when keycode QMKURL is released + } + break; + } + return true; +} + +void matrix_init_user(void) { + +} + +void matrix_scan_user(void) { + +} + +void led_set_user(uint8_t usb_led) { + +} diff --git a/keyboards/handwired/downbubble/keymaps/default/readme.md b/keyboards/handwired/downbubble/keymaps/default/readme.md new file mode 100644 index 0000000000..757d990625 --- /dev/null +++ b/keyboards/handwired/downbubble/keymaps/default/readme.md @@ -0,0 +1 @@ +# The default keymaps for downbubble diff --git a/keyboards/handwired/downbubble/license b/keyboards/handwired/downbubble/license new file mode 100644 index 0000000000..e6e77b0890 --- /dev/null +++ b/keyboards/handwired/downbubble/license @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/keyboards/handwired/downbubble/readme.md b/keyboards/handwired/downbubble/readme.md new file mode 100644 index 0000000000..e662345127 --- /dev/null +++ b/keyboards/handwired/downbubble/readme.md @@ -0,0 +1,15 @@ +# downbubble + +Prototype hand-wired version of this keyboard - https://imgur.com/a/0KbX1JH + +This is an ergonomic keyboard with a 5 degree rotation on keyboard halves, and a rotated numpad in the center for RH users. + +Keyboard Maintainer: [Flehrad](https://github.com/flehrad) +Hardware Supported: downbubble PCB, AT90USB1286 MCU, MX switches and MiniUSB connector +Hardware Availability: The Board Podcast Slack + +Make example for this keyboard (after setting up your build environment): + + make downbubble: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). diff --git a/keyboards/handwired/downbubble/rules.mk b/keyboards/handwired/downbubble/rules.mk new file mode 100644 index 0000000000..87d0d4a1e2 --- /dev/null +++ b/keyboards/handwired/downbubble/rules.mk @@ -0,0 +1,81 @@ +# MCU name +MCU = at90usb1286 +#MCU = atmega32u4 + +# Processor frequency. +# This will define a symbol, F_CPU, in all source code files equal to the +# processor frequency in Hz. You can then use this symbol in your source code to +# calculate timings. Do NOT tack on a 'UL' at the end, this will be done +# automatically to create a 32-bit value in your source code. +# +# This will be an integer division of F_USB below, as it is sourced by +# F_USB after it has run through any CPU prescalers. Note that this value +# does not *change* the processor frequency - it should merely be updated to +# reflect the processor speed set externally so that the code can use accurate +# software delays. +F_CPU = 16000000 + + +# +# LUFA specific +# +# Target architecture (see library "Board Types" documentation). +ARCH = AVR8 + +# Input clock frequency. +# This will define a symbol, F_USB, in all source code files equal to the +# input clock frequency (before any prescaling is performed) in Hz. This value may +# differ from F_CPU if prescaling is used on the latter, and is required as the +# raw input clock is fed directly to the PLL sections of the AVR for high speed +# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL' +# at the end, this will be done automatically to create a 32-bit value in your +# source code. +# +# If no clock division is performed on the input clock inside the AVR (via the +# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU. +F_USB = $(F_CPU) + +# Interrupt driven control endpoint task(+60) +OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT + + +# Bootloader selection +# Teensy halfkay +# Pro Micro caterina +# Atmel DFU atmel-dfu +# LUFA DFU lufa-dfu +# QMK DFU qmk-dfu +# atmega32a bootloadHID +BOOTLOADER = atmel-dfu + + +# If you don't know the bootloader type, then you can specify the +# Boot Section Size in *bytes* by uncommenting out the OPT_DEFS line +# Teensy halfKay 512 +# Teensy++ halfKay 1024 +# Atmel DFU loader 4096 +# LUFA bootloader 4096 +# USBaspLoader 2048 +# OPT_DEFS += -DBOOTLOADER_SIZE=4096 + + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) +MOUSEKEY_ENABLE = yes # Mouse keys(+4700) +EXTRAKEY_ENABLE = yes # Audio control and System control(+450) +CONSOLE_ENABLE = yes # Console for debug(+400) +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 on B7 by default +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config) +UNICODE_ENABLE = no # Unicode +BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID +AUDIO_ENABLE = no # Audio output on port C6 +FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches +HD44780_ENABLE = no # Enable support for HD44780 based LCDs (+400) -- cgit v1.2.3 From 9eb7b7919f2a77493961af73a7f01609db326fba Mon Sep 17 00:00:00 2001 From: noroadsleft <18669334+noroadsleft@users.noreply.github.com> Date: Mon, 7 Jan 2019 23:16:50 -0800 Subject: Keyboard: Downbubble refactor and Configurator fix (#4798) * Downbubble: Configurator fix Fix the visual key alignment and some typos. * Downbubble: refactor Rename layout macros: - LAYOUT_downbubble_standard to LAYOUT_standard - LAYOUT_downbubble_splitbackspace to LAYOUT_split_bs - LAYOUT_downbubble_splitrightshift to LAYOUT_split_rshift - LAYOUT_downbubble_splitnumpad to LAYOUT_split_numpad - LAYOUT_downbubble_spliteverything to LAYOUT_all --- keyboards/handwired/downbubble/downbubble.h | 10 +- keyboards/handwired/downbubble/info.json | 1095 ++++++++++---------- .../handwired/downbubble/keymaps/default/keymap.c | 10 +- 3 files changed, 560 insertions(+), 555 deletions(-) (limited to 'keyboards/handwired') diff --git a/keyboards/handwired/downbubble/downbubble.h b/keyboards/handwired/downbubble/downbubble.h index a25a9a5db5..0df39dd9ee 100644 --- a/keyboards/handwired/downbubble/downbubble.h +++ b/keyboards/handwired/downbubble/downbubble.h @@ -25,7 +25,7 @@ * The second converts the arguments into a two-dimensional array which * represents the switch matrix. */ -#define LAYOUT_downbubble_standard( \ +#define LAYOUT_standard( \ K00, K01, K02, K03, K04, K05, K06, K010, K011, K012, K013, K014, K015, K016, K017, K018, K019,\ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K110, K111, K112, K113, K114, K115, K116, K118, K119,\ K20, K21, K22, K23, K24, K25, K26, K27, K28, K210, K211, K212, K213, K214, K215, K216, K217, K218, K219,\ @@ -42,7 +42,7 @@ { K50, K51, K52, K53, K54, KC_NO, K56, KC_NO, K58, KC_NO, K510, KC_NO, K512, K513, K514, KC_NO, K516, K517, K518, K519 }, \ } -#define LAYOUT_downbubble_splitbackspace( \ +#define LAYOUT_split_bs( \ K00, K01, K02, K03, K04, K05, K06, K010, K011, K012, K013, K014, K015, K016, K017, K018, K019,\ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K110, K111, K112, K113, K114, K115, K116, K117, K118, K119,\ K20, K21, K22, K23, K24, K25, K26, K27, K28, K210, K211, K212, K213, K214, K215, K216, K217, K218, K219,\ @@ -59,7 +59,7 @@ { K50, K51, K52, K53, K54, KC_NO, K56, KC_NO, K58, KC_NO, K510, KC_NO, K512, K513, K514, KC_NO, K516, K517, K518, K519 }, \ } -#define LAYOUT_downbubble_splitrightshift( \ +#define LAYOUT_split_rshift( \ K00, K01, K02, K03, K04, K05, K06, K010, K011, K012, K013, K014, K015, K016, K017, K018, K019,\ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K110, K111, K112, K113, K114, K115, K116, K118, K119,\ K20, K21, K22, K23, K24, K25, K26, K27, K28, K210, K211, K212, K213, K214, K215, K216, K217, K218, K219,\ @@ -76,7 +76,7 @@ { K50, K51, K52, K53, K54, KC_NO, K56, KC_NO, K58, KC_NO, K510, KC_NO, K512, K513, K514, KC_NO, K516, K517, K518, K519 }, \ } -#define LAYOUT_downbubble_splitnumpad( \ +#define LAYOUT_split_numpad( \ K00, K01, K02, K03, K04, K05, K06, K010, K011, K012, K013, K014, K015, K016, K017, K018, K019,\ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K110, K111, K112, K113, K114, K115, K116, K118, K119,\ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K210, K211, K212, K213, K214, K215, K216, K217, K218, K219,\ @@ -93,7 +93,7 @@ { K50, K51, K52, K53, K54, KC_NO, K56, K57, K58, K59, K510, KC_NO, K512, K513, K514, KC_NO, K516, K517, K518, K519 }, \ } -#define LAYOUT_downbubble_spliteverything( \ +#define LAYOUT_all( \ K00, K01, K02, K03, K04, K05, K06, K010, K011, K012, K013, K014, K015, K016, K017, K018, K019,\ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K110, K111, K112, K113, K114, K115, K116, K117, K118, K119,\ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K210, K211, K212, K213, K214, K215, K216, K217, K218, K219,\ diff --git a/keyboards/handwired/downbubble/info.json b/keyboards/handwired/downbubble/info.json index cd64c0e369..c5cd97de54 100644 --- a/keyboards/handwired/downbubble/info.json +++ b/keyboards/handwired/downbubble/info.json @@ -5,550 +5,555 @@ "width": 22.75, "height": 6, "layouts": { - "LAYOUT_downbubble_standard": { - "layout": [ - {"label":"K00", "x":0, "y":0.5}, - {"label":"K01", "x":1, "y":0.5}, - {"label":"K02", "x":2, "y":0.5}, - {"label":"K03", "x":3, "y":0.5}, - {"label":"K04", "x":4, "y":0.5}, - {"label":"K05", "x":5, "y":0.5}, - {"label":"K06", "x":6, "y":0.5}, - {"label":"K010", "x":12.75, "y":0.5}, - {"label":"K011", "x":13.75, "y":0.5}, - {"label":"K012", "x":14.75, "y":0.5}, - {"label":"K013", "x":15.75, "y":0.5}, - {"label":"K014", "x":16.75, "y":0.5}, - {"label":"K015", "x":17.75, "y":0.5}, - {"label":"K016", "x":18.75, "y":0.5}, - {"label":"K017", "x":19.75, "y":0.5}, - {"label":"K018", "x":20.75, "y":0.5}, - {"label":"K019", "x":21.75, "y":0.5}, - {"label":"K10", "x":0, "y":1.5}, - {"label":"K11", "x":1, "y":1.5}, - {"label":"K12", "x":2, "y":1.5}, - {"label":"K13", "x":3, "y":1.5}, - {"label":"K14", "x":4, "y":1.5}, - {"label":"K15", "x":5, "y":1.5}, - {"label":"K16", "x":6, "y":1.5}, - {"label":"K17", "x":8.75, "y":1.5}, - {"label":"K18", "x":9.75, "y":1.5}, - {"label":"K19", "x":10.75, "y":1.5}, - {"label":"K110", "x":12.75, "y":1.5}, - {"label":"K111", "x":13.75, "y":1.5}, - {"label":"K112", "x":14.75, "y":1.5}, - {"label":"K113", "x":15.75, "y":1.5}, - {"label":"K114", "x":16.75, "y":1.5}, - {"label":"K115", "x":17.75, "y":1.5}, - {"label":"K116", "x":18.75, "y":1.5, "w":2}, - {"label":"K118", "x":20.75, "y":1.5}, - {"label":"K119", "x":21.75, "y":1.5}, - {"label":"K20", "x":0, "y":2.5, "w":1.5}, - {"label":"K21", "x":1.5, "y":2.5}, - {"label":"K22", "x":2.5, "y":2.5}, - {"label":"K23", "x":3.5, "y":2.5}, - {"label":"K24", "x":4.5, "y":2.5}, - {"label":"K25", "x":5.5, "y":2.5}, - {"label":"K26", "x":7.75, "y":2.5}, - {"label":"K17", "x":8.75, "y":2.5}, - {"label":"K28", "x":9.75, "y":2.5}, - {"label":"K210", "x":12.25, "y":2.5}, - {"label":"K211", "x":13.25, "y":2.5}, - {"label":"K212", "x":14.25, "y":2.5}, - {"label":"K213", "x":15.25, "y":2.5}, - {"label":"K214", "x":16.25, "y":2.5}, - {"label":"K215", "x":17.25, "y":2.5}, - {"label":"K216", "x":18.25, "y":2.5}, - {"label":"K217", "x":19.25, "y":2.5, "w":1.5}, - {"label":"K218", "x":20.75, "y":2.5}, - {"label":"K219", "x":21.75, "y":2.5}, - {"label":"K30", "x":0, "y":3.5, "w":1.75}, - {"label":"K31", "x":1.75, "y":3.5}, - {"label":"K32", "x":2.75, "y":3.5}, - {"label":"K33", "x":3.75, "y":3.5}, - {"label":"K34", "x":4.75, "y":3.5}, - {"label":"K35", "x":5.75, "y":3.5}, - {"label":"K36", "x":7.75, "y":3.5}, - {"label":"K37", "x":8.75, "y":3.5}, - {"label":"K38", "x":9.75, "y":3.5}, - {"label":"K29", "x":10.75, "y":2.5, "h":2}, - {"label":"K310", "x":12.5, "y":3.5}, - {"label":"K311", "x":13.5, "y":3.5}, - {"label":"K312", "x":14.5, "y":3.5}, - {"label":"K313", "x":15.5, "y":3.5}, - {"label":"K314", "x":16.5, "y":3.5}, - {"label":"K315", "x":17.5, "y":3.5}, - {"label":"K317", "x":18.5, "y":3.5, "w":2.25}, - {"label":"K40", "x":0, "y":4.5, "w":2.25}, - {"label":"K41", "x":2.25, "y":4.5}, - {"label":"K42", "x":3.25, "y":4.5}, - {"label":"K43", "x":4.25, "y":4.5}, - {"label":"K44", "x":5.25, "y":4.5}, - {"label":"K45", "x":6.25, "y":4.5}, - {"label":"K46", "x":7.75, "y":4.5}, - {"label":"K47", "x":8.75, "y":4.5}, - {"label":"K48", "x":9.75, "y":4.5}, - {"label":"K410", "x":13, "y":4.5}, - {"label":"K411", "x":14, "y":4.5}, - {"label":"K412", "x":15, "y":4.5}, - {"label":"K413", "x":16, "y":4.5}, - {"label":"K414", "x":17, "y":4.5}, - {"label":"K416", "x":18, "y":4.5, "w":2.75}, - {"label":"K418", "x":20.75, "y":4.5}, - {"label":"K50", "x":0, "y":5.5, "w":1.25}, - {"label":"K51", "x":1.25, "y":5.5, "w":1.25}, - {"label":"K52", "x":2.5, "y":5.5, "w":1.25}, - {"label":"K53", "x":3.75, "y":5.5, "w":1.25}, - {"label":"K54", "x":5, "y":5.5, "w":2.25}, - {"label":"K56", "x":7.75, "y":5.5, "w":2}, - {"label":"K58", "x":9.75, "y":5.5}, - {"label":"K49", "x":10.75, "y":4.5, "h":2}, - {"label":"K510", "x":13, "y":5.5, "w":2}, - {"label":"K512", "x":15, "y":5.5, "w":1.25}, - {"label":"K513", "x":16.25, "y":5.5, "w":1.25}, - {"label":"K514", "x":17.5, "y":5.5, "w":1.25}, - {"label":"K516", "x":18.75, "y":5.5}, - {"label":"K517", "x":19.75, "y":5.5}, - {"label":"K518", "x":20.75, "y":5.5}, - {"label":"K519", "x":21.75, "y":5.5}] - }, - "LAYOUT_downbubbled_splitbackspace": { - "layout": [ - {"label":"K00", "x":0, "y":0.5}, - {"label":"K01", "x":1, "y":0.5}, - {"label":"K02", "x":2, "y":0.5}, - {"label":"K03", "x":3, "y":0.5}, - {"label":"K04", "x":4, "y":0.5}, - {"label":"K05", "x":5, "y":0.5}, - {"label":"K06", "x":6, "y":0.5}, - {"label":"K010", "x":12.75, "y":0.5}, - {"label":"K011", "x":13.75, "y":0.5}, - {"label":"K012", "x":14.75, "y":0.5}, - {"label":"K013", "x":15.75, "y":0.5}, - {"label":"K014", "x":16.75, "y":0.5}, - {"label":"K015", "x":17.75, "y":0.5}, - {"label":"K016", "x":18.75, "y":0.5}, - {"label":"K017", "x":19.75, "y":0.5}, - {"label":"K018", "x":20.75, "y":0.5}, - {"label":"K019", "x":21.75, "y":0.5}, - {"label":"K10", "x":0, "y":1.5}, - {"label":"K11", "x":1, "y":1.5}, - {"label":"K12", "x":2, "y":1.5}, - {"label":"K13", "x":3, "y":1.5}, - {"label":"K14", "x":4, "y":1.5}, - {"label":"K15", "x":5, "y":1.5}, - {"label":"K16", "x":6, "y":1.5}, - {"label":"K17", "x":8.75, "y":1.5}, - {"label":"K18", "x":9.75, "y":1.5}, - {"label":"K19", "x":10.75, "y":1.5}, - {"label":"K110", "x":12.75, "y":1.5}, - {"label":"K111", "x":13.75, "y":1.5}, - {"label":"K112", "x":14.75, "y":1.5}, - {"label":"K113", "x":15.75, "y":1.5}, - {"label":"K114", "x":16.75, "y":1.5}, - {"label":"K115", "x":17.75, "y":1.5}, - {"label":"K116", "x":18.75, "y":1.5}, - {"label":"K117", "x":19.75, "y":1}, - {"label":"K118", "x":20.75, "y":1.5}, - {"label":"K119", "x":21.75, "y":1.5}, - {"label":"K20", "x":0, "y":2.5, "w":1.5}, - {"label":"K21", "x":1.5, "y":2.5}, - {"label":"K22", "x":2.5, "y":2.5}, - {"label":"K23", "x":3.5, "y":2.5}, - {"label":"K24", "x":4.5, "y":2.5}, - {"label":"K25", "x":5.5, "y":2.5}, - {"label":"K26", "x":7.75, "y":2.5}, - {"label":"K17", "x":8.75, "y":2.5}, - {"label":"K28", "x":9.75, "y":2.5}, - {"label":"K210", "x":12.25, "y":2.5}, - {"label":"K211", "x":13.25, "y":2.5}, - {"label":"K212", "x":14.25, "y":2.5}, - {"label":"K213", "x":15.25, "y":2.5}, - {"label":"K214", "x":16.25, "y":2.5}, - {"label":"K215", "x":17.25, "y":2.5}, - {"label":"K216", "x":18.25, "y":2.5}, - {"label":"K217", "x":19.25, "y":2.5, "w":1.5}, - {"label":"K218", "x":20.75, "y":2.5}, - {"label":"K219", "x":21.75, "y":2.5}, - {"label":"K30", "x":0, "y":3.5, "w":1.75}, - {"label":"K31", "x":1.75, "y":3.5}, - {"label":"K32", "x":2.75, "y":3.5}, - {"label":"K33", "x":3.75, "y":3.5}, - {"label":"K34", "x":4.75, "y":3.5}, - {"label":"K35", "x":5.75, "y":3.5}, - {"label":"K36", "x":7.75, "y":3.5}, - {"label":"K37", "x":8.75, "y":3.5}, - {"label":"K38", "x":9.75, "y":3.5}, - {"label":"K29", "x":10.75, "y":2.5, "h":2}, - {"label":"K310", "x":12.5, "y":3.5}, - {"label":"K311", "x":13.5, "y":3.5}, - {"label":"K312", "x":14.5, "y":3.5}, - {"label":"K313", "x":15.5, "y":3.5}, - {"label":"K314", "x":16.5, "y":3.5}, - {"label":"K315", "x":17.5, "y":3.5}, - {"label":"K317", "x":18.5, "y":3.5, "w":2.25}, - {"label":"K40", "x":0, "y":4.5, "w":2.25}, - {"label":"K41", "x":2.25, "y":4.5}, - {"label":"K42", "x":3.25, "y":4.5}, - {"label":"K43", "x":4.25, "y":4.5}, - {"label":"K44", "x":5.25, "y":4.5}, - {"label":"K45", "x":6.25, "y":4.5}, - {"label":"K46", "x":7.75, "y":4.5}, - {"label":"K47", "x":8.75, "y":4.5}, - {"label":"K48", "x":9.75, "y":4.5}, - {"label":"K410", "x":13, "y":4.5}, - {"label":"K411", "x":14, "y":4.5}, - {"label":"K412", "x":15, "y":4.5}, - {"label":"K413", "x":16, "y":4.5}, - {"label":"K414", "x":17, "y":4.5}, - {"label":"K416", "x":18, "y":4.5, "w":2.75}, - {"label":"K418", "x":20.75, "y":4.5}, - {"label":"K50", "x":0, "y":5.5, "w":1.25}, - {"label":"K51", "x":1.25, "y":5.5, "w":1.25}, - {"label":"K52", "x":2.5, "y":5.5, "w":1.25}, - {"label":"K53", "x":3.75, "y":5.5, "w":1.25}, - {"label":"K54", "x":5, "y":5.5, "w":2.25}, - {"label":"K56", "x":7.75, "y":5.5, "w":2}, - {"label":"K58", "x":9.75, "y":5.5}, - {"label":"K49", "x":10.75, "y":4.5, "h":2}, - {"label":"K510", "x":13, "y":5.5, "w":2}, - {"label":"K512", "x":15, "y":5.5, "w":1.25}, - {"label":"K513", "x":16.25, "y":5.5, "w":1.25}, - {"label":"K514", "x":17.5, "y":5.5, "w":1.25}, - {"label":"K516", "x":18.75, "y":5.5}, - {"label":"K517", "x":19.75, "y":5.5}, - {"label":"K518", "x":20.75, "y":5.5}, - {"label":"K519", "x":21.75, "y":5.5}] - }, - "LAYOUT_downbubble_splitrightshift": { - "layout": [ - {"label":"K00", "x":0, "y":0.5}, - {"label":"K01", "x":1, "y":0.5}, - {"label":"K02", "x":2, "y":0.5}, - {"label":"K03", "x":3, "y":0.5}, - {"label":"K04", "x":4, "y":0.5}, - {"label":"K05", "x":5, "y":0.5}, - {"label":"K06", "x":6, "y":0.5}, - {"label":"K010", "x":12.75, "y":0.5}, - {"label":"K011", "x":13.75, "y":0.5}, - {"label":"K012", "x":14.75, "y":0.5}, - {"label":"K013", "x":15.75, "y":0.5}, - {"label":"K014", "x":16.75, "y":0.5}, - {"label":"K015", "x":17.75, "y":0.5}, - {"label":"K016", "x":18.75, "y":0.5}, - {"label":"K017", "x":19.75, "y":0.5}, - {"label":"K018", "x":20.75, "y":0.5}, - {"label":"K019", "x":21.75, "y":0.5}, - {"label":"K10", "x":0, "y":1.5}, - {"label":"K11", "x":1, "y":1.5}, - {"label":"K12", "x":2, "y":1.5}, - {"label":"K13", "x":3, "y":1.5}, - {"label":"K14", "x":4, "y":1.5}, - {"label":"K15", "x":5, "y":1.5}, - {"label":"K16", "x":6, "y":1.5}, - {"label":"K17", "x":8.75, "y":1.5}, - {"label":"K18", "x":9.75, "y":1.5}, - {"label":"K19", "x":10.75, "y":1.5}, - {"label":"K110", "x":12.75, "y":1.5}, - {"label":"K111", "x":13.75, "y":1.5}, - {"label":"K112", "x":14.75, "y":1.5}, - {"label":"K113", "x":15.75, "y":1.5}, - {"label":"K114", "x":16.75, "y":1.5}, - {"label":"K115", "x":17.75, "y":1.5}, - {"label":"K116", "x":18.75, "y":1.5, "w":2}, - {"label":"K118", "x":20.75, "y":1.5}, - {"label":"K119", "x":21.75, "y":1.5}, - {"label":"K20", "x":0, "y":2.5, "w":1.5}, - {"label":"K21", "x":1.5, "y":2.5}, - {"label":"K22", "x":2.5, "y":2.5}, - {"label":"K23", "x":3.5, "y":2.5}, - {"label":"K24", "x":4.5, "y":2.5}, - {"label":"K25", "x":5.5, "y":2.5}, - {"label":"K26", "x":7.75, "y":2.5}, - {"label":"K17", "x":8.75, "y":2.5}, - {"label":"K28", "x":9.75, "y":2.5}, - {"label":"K210", "x":12.25, "y":2.5}, - {"label":"K211", "x":13.25, "y":2.5}, - {"label":"K212", "x":14.25, "y":2.5}, - {"label":"K213", "x":15.25, "y":2.5}, - {"label":"K214", "x":16.25, "y":2.5}, - {"label":"K215", "x":17.25, "y":2.5}, - {"label":"K216", "x":18.25, "y":2.5}, - {"label":"K217", "x":19.25, "y":2.5, "w":1.5}, - {"label":"K218", "x":20.75, "y":2.5}, - {"label":"K219", "x":21.75, "y":2.5}, - {"label":"K30", "x":0, "y":3.5, "w":1.75}, - {"label":"K31", "x":1.75, "y":3.5}, - {"label":"K32", "x":2.75, "y":3.5}, - {"label":"K33", "x":3.75, "y":3.5}, - {"label":"K34", "x":4.75, "y":3.5}, - {"label":"K35", "x":5.75, "y":3.5}, - {"label":"K36", "x":7.75, "y":3.5}, - {"label":"K37", "x":8.75, "y":3.5}, - {"label":"K38", "x":9.75, "y":3.5}, - {"label":"K29", "x":10.75, "y":2.5, "h":2}, - {"label":"K310", "x":12.5, "y":3.5}, - {"label":"K311", "x":13.5, "y":3.5}, - {"label":"K312", "x":14.5, "y":3.5}, - {"label":"K313", "x":15.5, "y":3.5}, - {"label":"K314", "x":16.5, "y":3.5}, - {"label":"K315", "x":17.5, "y":3.5}, - {"label":"K317", "x":18.5, "y":3.5, "w":2.25}, - {"label":"K40", "x":0, "y":4.5, "w":2.25}, - {"label":"K41", "x":2.25, "y":4.5}, - {"label":"K42", "x":3.25, "y":4.5}, - {"label":"K43", "x":4.25, "y":4.5}, - {"label":"K44", "x":5.25, "y":4.5}, - {"label":"K45", "x":6.25, "y":4.5}, - {"label":"K46", "x":7.75, "y":4.5}, - {"label":"K47", "x":8.75, "y":4.5}, - {"label":"K48", "x":9.75, "y":4.5}, - {"label":"K410", "x":13, "y":4.5}, - {"label":"K411", "x":14, "y":4.5}, - {"label":"K412", "x":15, "y":4.5}, - {"label":"K413", "x":16, "y":4.5}, - {"label":"K414", "x":17, "y":4.5}, - {"label":"K416", "x":18, "y":4.5, "w":1.75}, - {"label":"K417", "x":19.75, "y":4}, - {"label":"K418", "x":20.75, "y":4.5}, - {"label":"K50", "x":0, "y":5.5, "w":1.25}, - {"label":"K51", "x":1.25, "y":5.5, "w":1.25}, - {"label":"K52", "x":2.5, "y":5.5, "w":1.25}, - {"label":"K53", "x":3.75, "y":5.5, "w":1.25}, - {"label":"K54", "x":5, "y":5.5, "w":2.25}, - {"label":"K56", "x":7.75, "y":5.5, "w":2}, - {"label":"K58", "x":9.75, "y":5.5}, - {"label":"K49", "x":10.75, "y":4.5, "h":2}, - {"label":"K510", "x":13, "y":5.5, "w":2}, - {"label":"K512", "x":15, "y":5.5, "w":1.25}, - {"label":"K513", "x":16.25, "y":5.5, "w":1.25}, - {"label":"K514", "x":17.5, "y":5.5, "w":1.25}, - {"label":"K516", "x":18.75, "y":5.5}, - {"label":"K517", "x":19.75, "y":5.5}, - {"label":"K518", "x":20.75, "y":5.5}, - {"label":"K519", "x":21.75, "y":5.5}] - }, - "LAYOUT_downbubble_splitnumpad": { - "layout": [ - {"label":"K00", "x":0, "y":0.5}, - {"label":"K01", "x":1, "y":0.5}, - {"label":"K02", "x":2, "y":0.5}, - {"label":"K03", "x":3, "y":0.5}, - {"label":"K04", "x":4, "y":0.5}, - {"label":"K05", "x":5, "y":0.5}, - {"label":"K06", "x":6, "y":0.5}, - {"label":"K010", "x":12.75, "y":0.5}, - {"label":"K011", "x":13.75, "y":0.5}, - {"label":"K012", "x":14.75, "y":0.5}, - {"label":"K013", "x":15.75, "y":0.5}, - {"label":"K014", "x":16.75, "y":0.5}, - {"label":"K015", "x":17.75, "y":0.5}, - {"label":"K016", "x":18.75, "y":0.5}, - {"label":"K017", "x":19.75, "y":0.5}, - {"label":"K018", "x":20.75, "y":0.5}, - {"label":"K019", "x":21.75, "y":0.5}, - {"label":"K10", "x":0, "y":1.5}, - {"label":"K11", "x":1, "y":1.5}, - {"label":"K12", "x":2, "y":1.5}, - {"label":"K13", "x":3, "y":1.5}, - {"label":"K14", "x":4, "y":1.5}, - {"label":"K15", "x":5, "y":1.5}, - {"label":"K16", "x":6, "y":1.5}, - {"label":"K17", "x":8.75, "y":1.5}, - {"label":"K18", "x":9.75, "y":1.5}, - {"label":"K19", "x":10.75, "y":1.5}, - {"label":"K110", "x":12.75, "y":1.5}, - {"label":"K111", "x":13.75, "y":1.5}, - {"label":"K112", "x":14.75, "y":1.5}, - {"label":"K113", "x":15.75, "y":1.5}, - {"label":"K114", "x":16.75, "y":1.5}, - {"label":"K115", "x":17.75, "y":1.5}, - {"label":"K116", "x":18.75, "y":1.5, "w":2}, - {"label":"K118", "x":20.75, "y":1.5}, - {"label":"K119", "x":21.75, "y":1.5}, - {"label":"K20", "x":0, "y":2.5, "w":1.5}, - {"label":"K21", "x":1.5, "y":2.5}, - {"label":"K22", "x":2.5, "y":2.5}, - {"label":"K23", "x":3.5, "y":2.5}, - {"label":"K24", "x":4.5, "y":2.5}, - {"label":"K25", "x":5.5, "y":2.5}, - {"label":"K26", "x":7.75, "y":2.5}, - {"label":"K17", "x":8.75, "y":2.5}, - {"label":"K28", "x":9.75, "y":2.5}, - {"label":"K29", "x":10.75, "y":2}, - {"label":"K210", "x":12.25, "y":2.5}, - {"label":"K211", "x":13.25, "y":2.5}, - {"label":"K212", "x":14.25, "y":2.5}, - {"label":"K213", "x":15.25, "y":2.5}, - {"label":"K214", "x":16.25, "y":2.5}, - {"label":"K215", "x":17.25, "y":2.5}, - {"label":"K216", "x":18.25, "y":2.5}, - {"label":"K217", "x":19.25, "y":2.5, "w":1.5}, - {"label":"K218", "x":20.75, "y":2.5}, - {"label":"K219", "x":21.75, "y":2.5}, - {"label":"K30", "x":0, "y":3.5, "w":1.75}, - {"label":"K31", "x":1.75, "y":3.5}, - {"label":"K32", "x":2.75, "y":3.5}, - {"label":"K33", "x":3.75, "y":3.5}, - {"label":"K34", "x":4.75, "y":3.5}, - {"label":"K35", "x":5.75, "y":3.5}, - {"label":"K36", "x":7.75, "y":3.5}, - {"label":"K37", "x":8.75, "y":3.5}, - {"label":"K38", "x":9.75, "y":3.5}, - {"label":"K39", "x":10.75, "y":3}, - {"label":"K310", "x":12.5, "y":3.5}, - {"label":"K311", "x":13.5, "y":3.5}, - {"label":"K312", "x":14.5, "y":3.5}, - {"label":"K313", "x":15.5, "y":3.5}, - {"label":"K314", "x":16.5, "y":3.5}, - {"label":"K315", "x":17.5, "y":3.5}, - {"label":"K317", "x":18.5, "y":3.5, "w":2.25}, - {"label":"K40", "x":0, "y":4.5, "w":2.25}, - {"label":"K41", "x":2.25, "y":4.5}, - {"label":"K42", "x":3.25, "y":4.5}, - {"label":"K43", "x":4.25, "y":4.5}, - {"label":"K44", "x":5.25, "y":4.5}, - {"label":"K45", "x":6.25, "y":4.5}, - {"label":"K46", "x":7.75, "y":4.5}, - {"label":"K47", "x":8.75, "y":4.5}, - {"label":"K48", "x":9.75, "y":4.5}, - {"label":"K49", "x":10.75, "y":4}, - {"label":"K410", "x":13, "y":4.5}, - {"label":"K411", "x":14, "y":4.5}, - {"label":"K412", "x":15, "y":4.5}, - {"label":"K413", "x":16, "y":4.5}, - {"label":"K414", "x":17, "y":4.5}, - {"label":"K416", "x":18, "y":4.5, "w":2.75}, - {"label":"K418", "x":20.75, "y":4.5}, - {"label":"K50", "x":0, "y":5.5, "w":1.25}, - {"label":"K51", "x":1.25, "y":5.5, "w":1.25}, - {"label":"K52", "x":2.5, "y":5.5, "w":1.25}, - {"label":"K53", "x":3.75, "y":5.5, "w":1.25}, - {"label":"K54", "x":5, "y":5.5, "w":2.25}, - {"label":"K56", "x":7.75, "y":5.5}, - {"Label":"K57", "x":8.75, "y":5}, - {"label":"K58", "x":9.75, "y":5}, - {"label":"K59", "x":10.75, "y":5}, - {"label":"K510", "x":13, "y":5.5, "w":2}, - {"label":"K512", "x":15, "y":5.5, "w":1.25}, - {"label":"K513", "x":16.25, "y":5.5, "w":1.25}, - {"label":"K514", "x":17.5, "y":5.5, "w":1.25}, - {"label":"K516", "x":18.75, "y":5.5}, - {"label":"K517", "x":19.75, "y":5.5}, - {"label":"K518", "x":20.75, "y":5.5}, - {"label":"K519", "x":21.75, "y":5.5}] - }, - "LAYOUT_downbubble_spliteverything": { - "layout": [ - {"label":"K00", "x":0, "y":0}, - {"label":"K01", "x":1, "y":0}, - {"label":"K02", "x":2, "y":0}, - {"label":"K03", "x":3, "y":0}, - {"label":"K04", "x":4, "y":0}, - {"label":"K05", "x":5, "y":0}, - {"label":"K06", "x":6, "y":0}, - {"label":"K010", "x":12.75, "y":0}, - {"label":"K011", "x":13.75, "y":0}, - {"label":"K012", "x":14.75, "y":0}, - {"label":"K013", "x":15.75, "y":0}, - {"label":"K014", "x":16.75, "y":0}, - {"label":"K015", "x":17.75, "y":0}, - {"label":"K016", "x":18.75, "y":0}, - {"label":"K017", "x":19.75, "y":0}, - {"label":"K018", "x":20.75, "y":0}, - {"label":"K019", "X":21.75, "y":0}, - {"label":"K10", "x":0, "y":1}, - {"label":"K11", "x":1, "y":1}, - {"label":"K12", "x":2, "y":1}, - {"label":"K13", "x":3, "y":1}, - {"label":"K14", "x":4, "y":1}, - {"label":"K15", "x":5, "y":1}, - {"label":"K16", "x":6, "y":1}, - {"label":"K17", "x":8.75, "y":1}, - {"label":"K18", "x":9.75, "y":1}, - {"label":"K19", "x":10.75, "y":1}, - {"label":"K110", "x":12.75, "y":1}, - {"label":"K111", "x":13.75, "y":1}, - {"label":"K112", "x":14.75, "y":1}, - {"label":"K113", "x":15.75, "y":1}, - {"label":"K114", "x":16.75, "y":1}, - {"label":"K115", "x":17.75, "y":1}, - {"label":"K116", "x":18.75, "y":1}, - {"label":"K117", "x":19.75, "y":1}, - {"label":"K118", "x":20.75, "y":1}, - {"label":"K119", "x":21.75, "y":1}, - {"label":"K20", "x":0, "y":2, "w":1.5}, - {"label":"K21", "x":1.5, "y":2}, - {"label":"K22", "x":2.5, "y":2}, - {"label":"K23", "x":3.5, "y":2}, - {"label":"K24", "x":4.5, "y":2}, - {"label":"K25", "x":5.5, "y":2}, - {"label":"K26", "x":7.75, "y":2}, - {"label":"K27", "x":8.75, "y":2}, - {"label":"K28", "x":9.75, "y":2}, - {"label":"K29", "x":10.75, "y":2}, - {"label":"K210", "x":12.25, "y":2}, - {"label":"K211", "x":13.25, "y":2}, - {"label":"K212", "x":14.25, "y":2}, - {"label":"K213", "x":15.25, "y":2}, - {"label":"K214", "x":16.25, "y":2}, - {"label":"K215", "x":17.25, "y":2}, - {"label":"K216", "x":18.25, "y":2}, - {"label":"K217", "x":19.25, "y":2, "w":1.5}, - {"label":"K218", "x":20.75, "y":2}, - {"label":"K219", "x":21.75, "y":2}, - {"label":"K30", "x":0, "y":3, "w":1.75}, - {"label":"K31", "x":1.75, "y":3}, - {"label":"K32", "x":2.75, "y":3}, - {"label":"K33", "x":3.75, "y":3}, - {"label":"K34", "x":4.75, "y":3}, - {"label":"K35", "x":5.75, "y":3}, - {"label":"K36", "x":7.75, "y":3}, - {"label":"K37", "x":8.75, "y":3}, - {"label":"K38", "x":9.75, "y":3}, - {"label":"K39", "x":10.75, "y":3}, - {"label":"K310", "x":12.5, "y":3}, - {"label":"K311", "x":13.5, "y":3}, - {"label":"K312", "x":14.5, "y":3}, - {"label":"K313", "x":15.5, "y":3}, - {"label":"K314", "x":16.5, "y":3}, - {"label":"K315", "x":17.5, "y":3}, - {"label":"K317", "x":18.5, "y":3, "w":2.25}, - {"label":"K40", "x":0, "y":4, "w":2.25}, - {"label":"K41", "x":2.25, "y":4}, - {"label":"K42", "x":3.25, "y":4}, - {"label":"K43", "x":4.25, "y":4}, - {"label":"K44", "x":5.25, "y":4}, - {"label":"K45", "x":6.25, "y":4}, - {"label":"K46", "x":7.75, "y":4}, - {"label":"K47", "x":8.75, "y":4}, - {"label":"K48", "x":9.75, "y":4}, - {"label":"K49", "x":10.75, "y":4}, - {"label":"K410", "x":13, "y":4}, - {"label":"K411", "x":14, "y":4}, - {"label":"K412", "x":15, "y":4}, - {"label":"K413", "x":16, "y":4}, - {"label":"K414", "x":17, "y":4}, - {"label":"K416", "x":18, "y":4, "w":1.75}, - {"label":"K417", "x":19.75, "y":4}, - {"label":"K418", "x":20.75, "y":4}, - {"label":"K50", "x":0, "y":5, "w":1.25}, - {"label":"K51", "x":1.25, "y":5, "w":1.25}, - {"label":"K52", "x":2.5, "y":5, "w":1.25}, - {"label":"K53", "x":3.75, "y":5, "w":1.25}, - {"label":"K54", "x":5, "y":5, "w":2.25}, - {"label":"K56", "x":7.75, "y":5}, - {"label":"K57", "x":8.75, "y":5}, - {"label":"K58", "x":9.75, "y":5}, - {"label":"K59", "x":10.75, "y":5}, - {"label":"K510", "x":13, "y":5, "w":2}, - {"label":"K512", "x":15, "y":5, "w":1.25}, - {"label":"K513", "x":16.25, "y":5, "w":1.25}, - {"label":"K514", "x":17.5, "y":5, "w":1.25}, - {"label":"K516", "x":18.75, "y":5}, - {"label":"K517", "x":19.75, "y":5}, - {"label":"K518", "x":20.75, "y":5}, - {"label":"K519", "x":21.75, "y":5}] + "LAYOUT_standard": { + "layout": [ + {"label":"K00", "x":0, "y":0}, + {"label":"K01", "x":1, "y":0}, + {"label":"K02", "x":2, "y":0}, + {"label":"K03", "x":3, "y":0}, + {"label":"K04", "x":4, "y":0}, + {"label":"K05", "x":5, "y":0}, + {"label":"K06", "x":6, "y":0}, + {"label":"K010", "x":12.75, "y":0}, + {"label":"K011", "x":13.75, "y":0}, + {"label":"K012", "x":14.75, "y":0}, + {"label":"K013", "x":15.75, "y":0}, + {"label":"K014", "x":16.75, "y":0}, + {"label":"K015", "x":17.75, "y":0}, + {"label":"K016", "x":18.75, "y":0}, + {"label":"K017", "x":19.75, "y":0}, + {"label":"K018", "x":20.75, "y":0}, + {"label":"K019", "x":21.75, "y":0}, + {"label":"K10", "x":0, "y":1}, + {"label":"K11", "x":1, "y":1}, + {"label":"K12", "x":2, "y":1}, + {"label":"K13", "x":3, "y":1}, + {"label":"K14", "x":4, "y":1}, + {"label":"K15", "x":5, "y":1}, + {"label":"K16", "x":6, "y":1}, + {"label":"K17", "x":8.75, "y":1}, + {"label":"K18", "x":9.75, "y":1}, + {"label":"K19", "x":10.75, "y":1}, + {"label":"K110", "x":12.75, "y":1}, + {"label":"K111", "x":13.75, "y":1}, + {"label":"K112", "x":14.75, "y":1}, + {"label":"K113", "x":15.75, "y":1}, + {"label":"K114", "x":16.75, "y":1}, + {"label":"K115", "x":17.75, "y":1}, + {"label":"K116", "x":18.75, "y":1, "w":2}, + {"label":"K118", "x":20.75, "y":1}, + {"label":"K119", "x":21.75, "y":1}, + {"label":"K20", "x":0, "y":2, "w":1.5}, + {"label":"K21", "x":1.5, "y":2}, + {"label":"K22", "x":2.5, "y":2}, + {"label":"K23", "x":3.5, "y":2}, + {"label":"K24", "x":4.5, "y":2}, + {"label":"K25", "x":5.5, "y":2}, + {"label":"K26", "x":7.75, "y":2}, + {"label":"K17", "x":8.75, "y":2}, + {"label":"K28", "x":9.75, "y":2}, + {"label":"K210", "x":12.25, "y":2}, + {"label":"K211", "x":13.25, "y":2}, + {"label":"K212", "x":14.25, "y":2}, + {"label":"K213", "x":15.25, "y":2}, + {"label":"K214", "x":16.25, "y":2}, + {"label":"K215", "x":17.25, "y":2}, + {"label":"K216", "x":18.25, "y":2}, + {"label":"K217", "x":19.25, "y":2, "w":1.5}, + {"label":"K218", "x":20.75, "y":2}, + {"label":"K219", "x":21.75, "y":2}, + {"label":"K30", "x":0, "y":3, "w":1.75}, + {"label":"K31", "x":1.75, "y":3}, + {"label":"K32", "x":2.75, "y":3}, + {"label":"K33", "x":3.75, "y":3}, + {"label":"K34", "x":4.75, "y":3}, + {"label":"K35", "x":5.75, "y":3}, + {"label":"K36", "x":7.75, "y":3}, + {"label":"K37", "x":8.75, "y":3}, + {"label":"K38", "x":9.75, "y":3}, + {"label":"K29", "x":10.75, "y":2, "h":2}, + {"label":"K310", "x":12.5, "y":3}, + {"label":"K311", "x":13.5, "y":3}, + {"label":"K312", "x":14.5, "y":3}, + {"label":"K313", "x":15.5, "y":3}, + {"label":"K314", "x":16.5, "y":3}, + {"label":"K315", "x":17.5, "y":3}, + {"label":"K317", "x":18.5, "y":3, "w":2.25}, + {"label":"K40", "x":0, "y":4, "w":2.25}, + {"label":"K41", "x":2.25, "y":4}, + {"label":"K42", "x":3.25, "y":4}, + {"label":"K43", "x":4.25, "y":4}, + {"label":"K44", "x":5.25, "y":4}, + {"label":"K45", "x":6.25, "y":4}, + {"label":"K46", "x":7.75, "y":4}, + {"label":"K47", "x":8.75, "y":4}, + {"label":"K48", "x":9.75, "y":4}, + {"label":"K410", "x":13, "y":4}, + {"label":"K411", "x":14, "y":4}, + {"label":"K412", "x":15, "y":4}, + {"label":"K413", "x":16, "y":4}, + {"label":"K414", "x":17, "y":4}, + {"label":"K416", "x":18, "y":4, "w":2.75}, + {"label":"K418", "x":20.75, "y":4}, + {"label":"K50", "x":0, "y":5, "w":1.25}, + {"label":"K51", "x":1.25, "y":5, "w":1.25}, + {"label":"K52", "x":2.5, "y":5, "w":1.25}, + {"label":"K53", "x":3.75, "y":5, "w":1.25}, + {"label":"K54", "x":5, "y":5, "w":2.25}, + {"label":"K56", "x":7.75, "y":5, "w":2}, + {"label":"K58", "x":9.75, "y":5}, + {"label":"K49", "x":10.75, "y":4, "h":2}, + {"label":"K510", "x":13, "y":5, "w":2}, + {"label":"K512", "x":15, "y":5, "w":1.25}, + {"label":"K513", "x":16.25, "y":5, "w":1.25}, + {"label":"K514", "x":17.5, "y":5, "w":1.25}, + {"label":"K516", "x":18.75, "y":5}, + {"label":"K517", "x":19.75, "y":5}, + {"label":"K518", "x":20.75, "y":5}, + {"label":"K519", "x":21.75, "y":5} + ] + }, + "LAYOUT_split_bs": { + "layout": [ + {"label":"K00", "x":0, "y":0}, + {"label":"K01", "x":1, "y":0}, + {"label":"K02", "x":2, "y":0}, + {"label":"K03", "x":3, "y":0}, + {"label":"K04", "x":4, "y":0}, + {"label":"K05", "x":5, "y":0}, + {"label":"K06", "x":6, "y":0}, + {"label":"K010", "x":12.75, "y":0}, + {"label":"K011", "x":13.75, "y":0}, + {"label":"K012", "x":14.75, "y":0}, + {"label":"K013", "x":15.75, "y":0}, + {"label":"K014", "x":16.75, "y":0}, + {"label":"K015", "x":17.75, "y":0}, + {"label":"K016", "x":18.75, "y":0}, + {"label":"K017", "x":19.75, "y":0}, + {"label":"K018", "x":20.75, "y":0}, + {"label":"K019", "x":21.75, "y":0}, + {"label":"K10", "x":0, "y":1}, + {"label":"K11", "x":1, "y":1}, + {"label":"K12", "x":2, "y":1}, + {"label":"K13", "x":3, "y":1}, + {"label":"K14", "x":4, "y":1}, + {"label":"K15", "x":5, "y":1}, + {"label":"K16", "x":6, "y":1}, + {"label":"K17", "x":8.75, "y":1}, + {"label":"K18", "x":9.75, "y":1}, + {"label":"K19", "x":10.75, "y":1}, + {"label":"K110", "x":12.75, "y":1}, + {"label":"K111", "x":13.75, "y":1}, + {"label":"K112", "x":14.75, "y":1}, + {"label":"K113", "x":15.75, "y":1}, + {"label":"K114", "x":16.75, "y":1}, + {"label":"K115", "x":17.75, "y":1}, + {"label":"K116", "x":18.75, "y":1}, + {"label":"K117", "x":19.75, "y":1}, + {"label":"K118", "x":20.75, "y":1}, + {"label":"K119", "x":21.75, "y":1}, + {"label":"K20", "x":0, "y":2, "w":1.5}, + {"label":"K21", "x":1.5, "y":2}, + {"label":"K22", "x":2.5, "y":2}, + {"label":"K23", "x":3.5, "y":2}, + {"label":"K24", "x":4.5, "y":2}, + {"label":"K25", "x":5.5, "y":2}, + {"label":"K26", "x":7.75, "y":2}, + {"label":"K17", "x":8.75, "y":2}, + {"label":"K28", "x":9.75, "y":2}, + {"label":"K210", "x":12.25, "y":2}, + {"label":"K211", "x":13.25, "y":2}, + {"label":"K212", "x":14.25, "y":2}, + {"label":"K213", "x":15.25, "y":2}, + {"label":"K214", "x":16.25, "y":2}, + {"label":"K215", "x":17.25, "y":2}, + {"label":"K216", "x":18.25, "y":2}, + {"label":"K217", "x":19.25, "y":2, "w":1.5}, + {"label":"K218", "x":20.75, "y":2}, + {"label":"K219", "x":21.75, "y":2}, + {"label":"K30", "x":0, "y":3, "w":1.75}, + {"label":"K31", "x":1.75, "y":3}, + {"label":"K32", "x":2.75, "y":3}, + {"label":"K33", "x":3.75, "y":3}, + {"label":"K34", "x":4.75, "y":3}, + {"label":"K35", "x":5.75, "y":3}, + {"label":"K36", "x":7.75, "y":3}, + {"label":"K37", "x":8.75, "y":3}, + {"label":"K38", "x":9.75, "y":3}, + {"label":"K29", "x":10.75, "y":2, "h":2}, + {"label":"K310", "x":12.5, "y":3}, + {"label":"K311", "x":13.5, "y":3}, + {"label":"K312", "x":14.5, "y":3}, + {"label":"K313", "x":15.5, "y":3}, + {"label":"K314", "x":16.5, "y":3}, + {"label":"K315", "x":17.5, "y":3}, + {"label":"K317", "x":18.5, "y":3, "w":2.25}, + {"label":"K40", "x":0, "y":4, "w":2.25}, + {"label":"K41", "x":2.25, "y":4}, + {"label":"K42", "x":3.25, "y":4}, + {"label":"K43", "x":4.25, "y":4}, + {"label":"K44", "x":5.25, "y":4}, + {"label":"K45", "x":6.25, "y":4}, + {"label":"K46", "x":7.75, "y":4}, + {"label":"K47", "x":8.75, "y":4}, + {"label":"K48", "x":9.75, "y":4}, + {"label":"K410", "x":13, "y":4}, + {"label":"K411", "x":14, "y":4}, + {"label":"K412", "x":15, "y":4}, + {"label":"K413", "x":16, "y":4}, + {"label":"K414", "x":17, "y":4}, + {"label":"K416", "x":18, "y":4, "w":2.75}, + {"label":"K418", "x":20.75, "y":4}, + {"label":"K50", "x":0, "y":5, "w":1.25}, + {"label":"K51", "x":1.25, "y":5, "w":1.25}, + {"label":"K52", "x":2.5, "y":5, "w":1.25}, + {"label":"K53", "x":3.75, "y":5, "w":1.25}, + {"label":"K54", "x":5, "y":5, "w":2.25}, + {"label":"K56", "x":7.75, "y":5, "w":2}, + {"label":"K58", "x":9.75, "y":5}, + {"label":"K49", "x":10.75, "y":4, "h":2}, + {"label":"K510", "x":13, "y":5, "w":2}, + {"label":"K512", "x":15, "y":5, "w":1.25}, + {"label":"K513", "x":16.25, "y":5, "w":1.25}, + {"label":"K514", "x":17.5, "y":5, "w":1.25}, + {"label":"K516", "x":18.75, "y":5}, + {"label":"K517", "x":19.75, "y":5}, + {"label":"K518", "x":20.75, "y":5}, + {"label":"K519", "x":21.75, "y":5} + ] + }, + "LAYOUT_split_rshift": { + "layout": [ + {"label":"K00", "x":0, "y":0}, + {"label":"K01", "x":1, "y":0}, + {"label":"K02", "x":2, "y":0}, + {"label":"K03", "x":3, "y":0}, + {"label":"K04", "x":4, "y":0}, + {"label":"K05", "x":5, "y":0}, + {"label":"K06", "x":6, "y":0}, + {"label":"K010", "x":12.75, "y":0}, + {"label":"K011", "x":13.75, "y":0}, + {"label":"K012", "x":14.75, "y":0}, + {"label":"K013", "x":15.75, "y":0}, + {"label":"K014", "x":16.75, "y":0}, + {"label":"K015", "x":17.75, "y":0}, + {"label":"K016", "x":18.75, "y":0}, + {"label":"K017", "x":19.75, "y":0}, + {"label":"K018", "x":20.75, "y":0}, + {"label":"K019", "x":21.75, "y":0}, + {"label":"K10", "x":0, "y":1}, + {"label":"K11", "x":1, "y":1}, + {"label":"K12", "x":2, "y":1}, + {"label":"K13", "x":3, "y":1}, + {"label":"K14", "x":4, "y":1}, + {"label":"K15", "x":5, "y":1}, + {"label":"K16", "x":6, "y":1}, + {"label":"K17", "x":8.75, "y":1}, + {"label":"K18", "x":9.75, "y":1}, + {"label":"K19", "x":10.75, "y":1}, + {"label":"K110", "x":12.75, "y":1}, + {"label":"K111", "x":13.75, "y":1}, + {"label":"K112", "x":14.75, "y":1}, + {"label":"K113", "x":15.75, "y":1}, + {"label":"K114", "x":16.75, "y":1}, + {"label":"K115", "x":17.75, "y":1}, + {"label":"K116", "x":18.75, "y":1, "w":2}, + {"label":"K118", "x":20.75, "y":1}, + {"label":"K119", "x":21.75, "y":1}, + {"label":"K20", "x":0, "y":2, "w":1.5}, + {"label":"K21", "x":1.5, "y":2}, + {"label":"K22", "x":2.5, "y":2}, + {"label":"K23", "x":3.5, "y":2}, + {"label":"K24", "x":4.5, "y":2}, + {"label":"K25", "x":5.5, "y":2}, + {"label":"K26", "x":7.75, "y":2}, + {"label":"K17", "x":8.75, "y":2}, + {"label":"K28", "x":9.75, "y":2}, + {"label":"K210", "x":12.25, "y":2}, + {"label":"K211", "x":13.25, "y":2}, + {"label":"K212", "x":14.25, "y":2}, + {"label":"K213", "x":15.25, "y":2}, + {"label":"K214", "x":16.25, "y":2}, + {"label":"K215", "x":17.25, "y":2}, + {"label":"K216", "x":18.25, "y":2}, + {"label":"K217", "x":19.25, "y":2, "w":1.5}, + {"label":"K218", "x":20.75, "y":2}, + {"label":"K219", "x":21.75, "y":2}, + {"label":"K30", "x":0, "y":3, "w":1.75}, + {"label":"K31", "x":1.75, "y":3}, + {"label":"K32", "x":2.75, "y":3}, + {"label":"K33", "x":3.75, "y":3}, + {"label":"K34", "x":4.75, "y":3}, + {"label":"K35", "x":5.75, "y":3}, + {"label":"K36", "x":7.75, "y":3}, + {"label":"K37", "x":8.75, "y":3}, + {"label":"K38", "x":9.75, "y":3}, + {"label":"K29", "x":10.75, "y":2, "h":2}, + {"label":"K310", "x":12.5, "y":3}, + {"label":"K311", "x":13.5, "y":3}, + {"label":"K312", "x":14.5, "y":3}, + {"label":"K313", "x":15.5, "y":3}, + {"label":"K314", "x":16.5, "y":3}, + {"label":"K315", "x":17.5, "y":3}, + {"label":"K317", "x":18.5, "y":3, "w":2.25}, + {"label":"K40", "x":0, "y":4, "w":2.25}, + {"label":"K41", "x":2.25, "y":4}, + {"label":"K42", "x":3.25, "y":4}, + {"label":"K43", "x":4.25, "y":4}, + {"label":"K44", "x":5.25, "y":4}, + {"label":"K45", "x":6.25, "y":4}, + {"label":"K46", "x":7.75, "y":4}, + {"label":"K47", "x":8.75, "y":4}, + {"label":"K48", "x":9.75, "y":4}, + {"label":"K410", "x":13, "y":4}, + {"label":"K411", "x":14, "y":4}, + {"label":"K412", "x":15, "y":4}, + {"label":"K413", "x":16, "y":4}, + {"label":"K414", "x":17, "y":4}, + {"label":"K416", "x":18, "y":4, "w":1.75}, + {"label":"K417", "x":19.75, "y":4}, + {"label":"K418", "x":20.75, "y":4}, + {"label":"K50", "x":0, "y":5, "w":1.25}, + {"label":"K51", "x":1.25, "y":5, "w":1.25}, + {"label":"K52", "x":2.5, "y":5, "w":1.25}, + {"label":"K53", "x":3.75, "y":5, "w":1.25}, + {"label":"K54", "x":5, "y":5, "w":2.25}, + {"label":"K56", "x":7.75, "y":5, "w":2}, + {"label":"K58", "x":9.75, "y":5}, + {"label":"K49", "x":10.75, "y":4, "h":2}, + {"label":"K510", "x":13, "y":5, "w":2}, + {"label":"K512", "x":15, "y":5, "w":1.25}, + {"label":"K513", "x":16.25, "y":5, "w":1.25}, + {"label":"K514", "x":17.5, "y":5, "w":1.25}, + {"label":"K516", "x":18.75, "y":5}, + {"label":"K517", "x":19.75, "y":5}, + {"label":"K518", "x":20.75, "y":5}, + {"label":"K519", "x":21.75, "y":5} + ] + }, + "LAYOUT_split_numpad": { + "layout": [ + {"label":"K00", "x":0, "y":0}, + {"label":"K01", "x":1, "y":0}, + {"label":"K02", "x":2, "y":0}, + {"label":"K03", "x":3, "y":0}, + {"label":"K04", "x":4, "y":0}, + {"label":"K05", "x":5, "y":0}, + {"label":"K06", "x":6, "y":0}, + {"label":"K010", "x":12.75, "y":0}, + {"label":"K011", "x":13.75, "y":0}, + {"label":"K012", "x":14.75, "y":0}, + {"label":"K013", "x":15.75, "y":0}, + {"label":"K014", "x":16.75, "y":0}, + {"label":"K015", "x":17.75, "y":0}, + {"label":"K016", "x":18.75, "y":0}, + {"label":"K017", "x":19.75, "y":0}, + {"label":"K018", "x":20.75, "y":0}, + {"label":"K019", "x":21.75, "y":0}, + {"label":"K10", "x":0, "y":1}, + {"label":"K11", "x":1, "y":1}, + {"label":"K12", "x":2, "y":1}, + {"label":"K13", "x":3, "y":1}, + {"label":"K14", "x":4, "y":1}, + {"label":"K15", "x":5, "y":1}, + {"label":"K16", "x":6, "y":1}, + {"label":"K17", "x":8.75, "y":1}, + {"label":"K18", "x":9.75, "y":1}, + {"label":"K19", "x":10.75, "y":1}, + {"label":"K110", "x":12.75, "y":1}, + {"label":"K111", "x":13.75, "y":1}, + {"label":"K112", "x":14.75, "y":1}, + {"label":"K113", "x":15.75, "y":1}, + {"label":"K114", "x":16.75, "y":1}, + {"label":"K115", "x":17.75, "y":1}, + {"label":"K116", "x":18.75, "y":1, "w":2}, + {"label":"K118", "x":20.75, "y":1}, + {"label":"K119", "x":21.75, "y":1}, + {"label":"K20", "x":0, "y":2, "w":1.5}, + {"label":"K21", "x":1.5, "y":2}, + {"label":"K22", "x":2.5, "y":2}, + {"label":"K23", "x":3.5, "y":2}, + {"label":"K24", "x":4.5, "y":2}, + {"label":"K25", "x":5.5, "y":2}, + {"label":"K26", "x":7.75, "y":2}, + {"label":"K17", "x":8.75, "y":2}, + {"label":"K28", "x":9.75, "y":2}, + {"label":"K29", "x":10.75, "y":2}, + {"label":"K210", "x":12.25, "y":2}, + {"label":"K211", "x":13.25, "y":2}, + {"label":"K212", "x":14.25, "y":2}, + {"label":"K213", "x":15.25, "y":2}, + {"label":"K214", "x":16.25, "y":2}, + {"label":"K215", "x":17.25, "y":2}, + {"label":"K216", "x":18.25, "y":2}, + {"label":"K217", "x":19.25, "y":2, "w":1.5}, + {"label":"K218", "x":20.75, "y":2}, + {"label":"K219", "x":21.75, "y":2}, + {"label":"K30", "x":0, "y":3, "w":1.75}, + {"label":"K31", "x":1.75, "y":3}, + {"label":"K32", "x":2.75, "y":3}, + {"label":"K33", "x":3.75, "y":3}, + {"label":"K34", "x":4.75, "y":3}, + {"label":"K35", "x":5.75, "y":3}, + {"label":"K36", "x":7.75, "y":3}, + {"label":"K37", "x":8.75, "y":3}, + {"label":"K38", "x":9.75, "y":3}, + {"label":"K39", "x":10.75, "y":3}, + {"label":"K310", "x":12.5, "y":3}, + {"label":"K311", "x":13.5, "y":3}, + {"label":"K312", "x":14.5, "y":3}, + {"label":"K313", "x":15.5, "y":3}, + {"label":"K314", "x":16.5, "y":3}, + {"label":"K315", "x":17.5, "y":3}, + {"label":"K317", "x":18.5, "y":3, "w":2.25}, + {"label":"K40", "x":0, "y":4, "w":2.25}, + {"label":"K41", "x":2.25, "y":4}, + {"label":"K42", "x":3.25, "y":4}, + {"label":"K43", "x":4.25, "y":4}, + {"label":"K44", "x":5.25, "y":4}, + {"label":"K45", "x":6.25, "y":4}, + {"label":"K46", "x":7.75, "y":4}, + {"label":"K47", "x":8.75, "y":4}, + {"label":"K48", "x":9.75, "y":4}, + {"label":"K49", "x":10.75, "y":4}, + {"label":"K410", "x":13, "y":4}, + {"label":"K411", "x":14, "y":4}, + {"label":"K412", "x":15, "y":4}, + {"label":"K413", "x":16, "y":4}, + {"label":"K414", "x":17, "y":4}, + {"label":"K416", "x":18, "y":4, "w":2.75}, + {"label":"K418", "x":20.75, "y":4}, + {"label":"K50", "x":0, "y":5, "w":1.25}, + {"label":"K51", "x":1.25, "y":5, "w":1.25}, + {"label":"K52", "x":2.5, "y":5, "w":1.25}, + {"label":"K53", "x":3.75, "y":5, "w":1.25}, + {"label":"K54", "x":5, "y":5, "w":2.25}, + {"label":"K56", "x":7.75, "y":5}, + {"Label":"K57", "x":8.75, "y":5}, + {"label":"K58", "x":9.75, "y":5}, + {"label":"K59", "x":10.75, "y":5}, + {"label":"K510", "x":13, "y":5, "w":2}, + {"label":"K512", "x":15, "y":5, "w":1.25}, + {"label":"K513", "x":16.25, "y":5, "w":1.25}, + {"label":"K514", "x":17.5, "y":5, "w":1.25}, + {"label":"K516", "x":18.75, "y":5}, + {"label":"K517", "x":19.75, "y":5}, + {"label":"K518", "x":20.75, "y":5}, + {"label":"K519", "x":21.75, "y":5} + ] + }, + "LAYOUT_all": { + "layout": [ + {"label":"K00", "x":0, "y":0}, + {"label":"K01", "x":1, "y":0}, + {"label":"K02", "x":2, "y":0}, + {"label":"K03", "x":3, "y":0}, + {"label":"K04", "x":4, "y":0}, + {"label":"K05", "x":5, "y":0}, + {"label":"K06", "x":6, "y":0}, + {"label":"K010", "x":12.75, "y":0}, + {"label":"K011", "x":13.75, "y":0}, + {"label":"K012", "x":14.75, "y":0}, + {"label":"K013", "x":15.75, "y":0}, + {"label":"K014", "x":16.75, "y":0}, + {"label":"K015", "x":17.75, "y":0}, + {"label":"K016", "x":18.75, "y":0}, + {"label":"K017", "x":19.75, "y":0}, + {"label":"K018", "x":20.75, "y":0}, + {"label":"K019", "x":21.75, "y":0}, + {"label":"K10", "x":0, "y":1}, + {"label":"K11", "x":1, "y":1}, + {"label":"K12", "x":2, "y":1}, + {"label":"K13", "x":3, "y":1}, + {"label":"K14", "x":4, "y":1}, + {"label":"K15", "x":5, "y":1}, + {"label":"K16", "x":6, "y":1}, + {"label":"K17", "x":8.75, "y":1}, + {"label":"K18", "x":9.75, "y":1}, + {"label":"K19", "x":10.75, "y":1}, + {"label":"K110", "x":12.75, "y":1}, + {"label":"K111", "x":13.75, "y":1}, + {"label":"K112", "x":14.75, "y":1}, + {"label":"K113", "x":15.75, "y":1}, + {"label":"K114", "x":16.75, "y":1}, + {"label":"K115", "x":17.75, "y":1}, + {"label":"K116", "x":18.75, "y":1}, + {"label":"K117", "x":19.75, "y":1}, + {"label":"K118", "x":20.75, "y":1}, + {"label":"K119", "x":21.75, "y":1}, + {"label":"K20", "x":0, "y":2, "w":1.5}, + {"label":"K21", "x":1.5, "y":2}, + {"label":"K22", "x":2.5, "y":2}, + {"label":"K23", "x":3.5, "y":2}, + {"label":"K24", "x":4.5, "y":2}, + {"label":"K25", "x":5.5, "y":2}, + {"label":"K26", "x":7.75, "y":2}, + {"label":"K27", "x":8.75, "y":2}, + {"label":"K28", "x":9.75, "y":2}, + {"label":"K29", "x":10.75, "y":2}, + {"label":"K210", "x":12.25, "y":2}, + {"label":"K211", "x":13.25, "y":2}, + {"label":"K212", "x":14.25, "y":2}, + {"label":"K213", "x":15.25, "y":2}, + {"label":"K214", "x":16.25, "y":2}, + {"label":"K215", "x":17.25, "y":2}, + {"label":"K216", "x":18.25, "y":2}, + {"label":"K217", "x":19.25, "y":2, "w":1.5}, + {"label":"K218", "x":20.75, "y":2}, + {"label":"K219", "x":21.75, "y":2}, + {"label":"K30", "x":0, "y":3, "w":1.75}, + {"label":"K31", "x":1.75, "y":3}, + {"label":"K32", "x":2.75, "y":3}, + {"label":"K33", "x":3.75, "y":3}, + {"label":"K34", "x":4.75, "y":3}, + {"label":"K35", "x":5.75, "y":3}, + {"label":"K36", "x":7.75, "y":3}, + {"label":"K37", "x":8.75, "y":3}, + {"label":"K38", "x":9.75, "y":3}, + {"label":"K39", "x":10.75, "y":3}, + {"label":"K310", "x":12.5, "y":3}, + {"label":"K311", "x":13.5, "y":3}, + {"label":"K312", "x":14.5, "y":3}, + {"label":"K313", "x":15.5, "y":3}, + {"label":"K314", "x":16.5, "y":3}, + {"label":"K315", "x":17.5, "y":3}, + {"label":"K317", "x":18.5, "y":3, "w":2.25}, + {"label":"K40", "x":0, "y":4, "w":2.25}, + {"label":"K41", "x":2.25, "y":4}, + {"label":"K42", "x":3.25, "y":4}, + {"label":"K43", "x":4.25, "y":4}, + {"label":"K44", "x":5.25, "y":4}, + {"label":"K45", "x":6.25, "y":4}, + {"label":"K46", "x":7.75, "y":4}, + {"label":"K47", "x":8.75, "y":4}, + {"label":"K48", "x":9.75, "y":4}, + {"label":"K49", "x":10.75, "y":4}, + {"label":"K410", "x":13, "y":4}, + {"label":"K411", "x":14, "y":4}, + {"label":"K412", "x":15, "y":4}, + {"label":"K413", "x":16, "y":4}, + {"label":"K414", "x":17, "y":4}, + {"label":"K416", "x":18, "y":4, "w":1.75}, + {"label":"K417", "x":19.75, "y":4}, + {"label":"K418", "x":20.75, "y":4}, + {"label":"K50", "x":0, "y":5, "w":1.25}, + {"label":"K51", "x":1.25, "y":5, "w":1.25}, + {"label":"K52", "x":2.5, "y":5, "w":1.25}, + {"label":"K53", "x":3.75, "y":5, "w":1.25}, + {"label":"K54", "x":5, "y":5, "w":2.25}, + {"label":"K56", "x":7.75, "y":5}, + {"label":"K57", "x":8.75, "y":5}, + {"label":"K58", "x":9.75, "y":5}, + {"label":"K59", "x":10.75, "y":5}, + {"label":"K510", "x":13, "y":5, "w":2}, + {"label":"K512", "x":15, "y":5, "w":1.25}, + {"label":"K513", "x":16.25, "y":5, "w":1.25}, + {"label":"K514", "x":17.5, "y":5, "w":1.25}, + {"label":"K516", "x":18.75, "y":5}, + {"label":"K517", "x":19.75, "y":5}, + {"label":"K518", "x":20.75, "y":5}, + {"label":"K519", "x":21.75, "y":5} + ] } - } + } } diff --git a/keyboards/handwired/downbubble/keymaps/default/keymap.c b/keyboards/handwired/downbubble/keymaps/default/keymap.c index d35d367394..48303900fb 100644 --- a/keyboards/handwired/downbubble/keymaps/default/keymap.c +++ b/keyboards/handwired/downbubble/keymaps/default/keymap.c @@ -22,7 +22,7 @@ enum custom_keycodes { }; const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [0] = LAYOUT_downbubble_standard(\ + [0] = LAYOUT_standard(\ 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_NLCK, KC_HOME, KC_TRNS, KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_PSLS, KC_PAST, KC_PMNS, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_END, KC_PGUP, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_P7, KC_P8, KC_P9, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_PGDN, @@ -31,7 +31,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_LCTL, KC_LGUI, KC_LALT, KC_BSPC, KC_SPC, KC_P0, KC_PDOT, KC_PENT, KC_BSPC, KC_RALT, KC_RGUI, KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT ), - LAYOUT_downbubble_splitbackspace(\ + LAYOUT_split_bs(\ 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_NLCK, KC_HOME, KC_TRNS, KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_PSLS, KC_PAST, KC_PMNS, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_TRNS, KC_END, KC_PGUP, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_P7, KC_P8, KC_P9, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_PGDN, @@ -40,7 +40,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_LCTL, KC_LGUI, KC_LALT, KC_BSPC, KC_SPC, KC_P0, KC_PDOT, KC_PENT, KC_BSPC, KC_RALT, KC_RGUI, KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT ), - LAYOUT_downbubble_splitrightshift(\ + LAYOUT_split_rshift(\ 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_NLCK, KC_HOME, KC_TRNS, KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_PSLS, KC_PAST, KC_PMNS, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_END, KC_PGUP, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_P7, KC_P8, KC_P9, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_PGDN, @@ -49,7 +49,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_LCTL, KC_LGUI, KC_LALT, KC_BSPC, KC_SPC, KC_P0, KC_PDOT, KC_PENT, KC_BSPC, KC_RALT, KC_RGUI, KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT ), - LAYOUT_downbubble_splitnumpad(\ + LAYOUT_split_numpad(\ 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_NLCK, KC_HOME, KC_TRNS, KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_PSLS, KC_PAST, KC_PMNS, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_END, KC_PGUP, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_P7, KC_P8, KC_P9, KC_PPLS, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_PGDN, @@ -58,7 +58,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_LCTL, KC_LGUI, KC_LALT, KC_BSPC, KC_SPC, KC_P0, KC_TRNS, KC_PDOT, KC_TRNS, KC_BSPC, KC_RALT, KC_RGUI, KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT ), - LAYOUT_downbubble_spliteverything(\ + LAYOUT_all(\ 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_NLCK, KC_HOME, KC_TRNS, KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_PSLS, KC_PAST, KC_PMNS, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_TRNS, KC_END, KC_PGUP, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_P7, KC_P8, KC_P9, KC_PPLS, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_PGDN, -- cgit v1.2.3 From 67adc29aa35719eea2de43bacf9cd5e8b5dfd79e Mon Sep 17 00:00:00 2001 From: fauxpark Date: Fri, 11 Jan 2019 09:50:14 +1100 Subject: Remove empty fn_actions[] --- keyboards/handwired/frenchdev/keymaps/default/keymap.c | 5 ----- keyboards/handwired/ibm122m/keymaps/lukaus/keymap.c | 4 ---- keyboards/handwired/retro_refit/keymaps/default/keymap.c | 4 ---- keyboards/handwired/woodpad/keymaps/default/keymap.c | 4 ---- 4 files changed, 17 deletions(-) (limited to 'keyboards/handwired') diff --git a/keyboards/handwired/frenchdev/keymaps/default/keymap.c b/keyboards/handwired/frenchdev/keymaps/default/keymap.c index 635383b55b..9912a3e98a 100644 --- a/keyboards/handwired/frenchdev/keymaps/default/keymap.c +++ b/keyboards/handwired/frenchdev/keymaps/default/keymap.c @@ -176,11 +176,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { }; - -const uint16_t PROGMEM fn_actions[] = { - -}; - void hold_shift(void) { shift_count = shift_count + 1; register_code(KC_LSHIFT); diff --git a/keyboards/handwired/ibm122m/keymaps/lukaus/keymap.c b/keyboards/handwired/ibm122m/keymaps/lukaus/keymap.c index 9cd58c0ec9..130465e8d8 100644 --- a/keyboards/handwired/ibm122m/keymaps/lukaus/keymap.c +++ b/keyboards/handwired/ibm122m/keymaps/lukaus/keymap.c @@ -137,10 +137,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ),*/ }; -const uint16_t PROGMEM fn_actions[] = { - -}; - const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) { // MACRODOWN only works in this function diff --git a/keyboards/handwired/retro_refit/keymaps/default/keymap.c b/keyboards/handwired/retro_refit/keymaps/default/keymap.c index 598541a05b..a850bd5080 100644 --- a/keyboards/handwired/retro_refit/keymaps/default/keymap.c +++ b/keyboards/handwired/retro_refit/keymaps/default/keymap.c @@ -11,10 +11,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { LCTL, LGUI, LALT, SPC, INS, DEL, LEFT, DOWN, RGHT), }; -const uint16_t PROGMEM fn_actions[] = { - -}; - const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) { // MACRODOWN only works in this function diff --git a/keyboards/handwired/woodpad/keymaps/default/keymap.c b/keyboards/handwired/woodpad/keymaps/default/keymap.c index 1fa90ba919..70c05fc271 100644 --- a/keyboards/handwired/woodpad/keymaps/default/keymap.c +++ b/keyboards/handwired/woodpad/keymaps/default/keymap.c @@ -59,10 +59,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ), }; -const uint16_t PROGMEM fn_actions[] = { - -}; - void numlock_led_on(void) { PORTF |= (1<<7); } -- cgit v1.2.3 From 3ea7c2a4340d129266ecea2e38185455059274d2 Mon Sep 17 00:00:00 2001 From: fauxpark Date: Fri, 11 Jan 2019 10:58:59 +1100 Subject: Remove empty action_function() --- keyboards/handwired/frenchdev/keymaps/default/keymap.c | 4 ---- 1 file changed, 4 deletions(-) (limited to 'keyboards/handwired') diff --git a/keyboards/handwired/frenchdev/keymaps/default/keymap.c b/keyboards/handwired/frenchdev/keymaps/default/keymap.c index 9912a3e98a..3d0f1fbfb8 100644 --- a/keyboards/handwired/frenchdev/keymaps/default/keymap.c +++ b/keyboards/handwired/frenchdev/keymaps/default/keymap.c @@ -354,10 +354,6 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) return MACRO_NONE; }; -void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) { - -} - void matrix_init_user(void) { } -- cgit v1.2.3 From 9ef46494b2412061a8e0fff6f10d50e90a7152b0 Mon Sep 17 00:00:00 2001 From: Jason Pepas Date: Sat, 12 Jan 2019 23:30:19 -0600 Subject: [Keyboard] hexon38 and Dual-role key implementation (#4709) * initial dual-role key implementation for hexon38 * PR feedback, adding README * Moving to handwired subdir * Additional PR feedback --- keyboards/handwired/hexon38/config.h | 60 +++ keyboards/handwired/hexon38/hexon38.c | 3 + keyboards/handwired/hexon38/hexon38.h | 17 + .../handwired/hexon38/keymaps/default/keymap.c | 407 +++++++++++++++++++++ keyboards/handwired/hexon38/readme.md | 11 + keyboards/handwired/hexon38/rules.mk | 64 ++++ 6 files changed, 562 insertions(+) create mode 100644 keyboards/handwired/hexon38/config.h create mode 100644 keyboards/handwired/hexon38/hexon38.c create mode 100644 keyboards/handwired/hexon38/hexon38.h create mode 100644 keyboards/handwired/hexon38/keymaps/default/keymap.c create mode 100644 keyboards/handwired/hexon38/readme.md create mode 100644 keyboards/handwired/hexon38/rules.mk (limited to 'keyboards/handwired') diff --git a/keyboards/handwired/hexon38/config.h b/keyboards/handwired/hexon38/config.h new file mode 100644 index 0000000000..23eb51e014 --- /dev/null +++ b/keyboards/handwired/hexon38/config.h @@ -0,0 +1,60 @@ +// see https://github.com/pepaslabs/hexon38 + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0xFEED +#define PRODUCT_ID 0x6060 +#define DEVICE_VER 0x0001 +#define MANUFACTURER pepaslabs +#define PRODUCT hexon38 +#define DESCRIPTION "A handmade non-split ergonomic 38-key keyboard, inspired by the lil38. See https://github.com/pepaslabs/hexon38." + +/* key matrix size */ +#define MATRIX_ROWS 4 +#define MATRIX_COLS 12 + +/* key matrix pins */ +#define MATRIX_ROW_PINS { B0, F0, B2, F4 } +#define MATRIX_COL_PINS { C6, D3, D2, D1, D0, B7, F6, F7, B6, B5, B4, D7 } +#define UNUSED_PINS + +/* COL2ROW or ROW2COL */ +#define DIODE_DIRECTION ROW2COL + +/* number of backlight levels */ + +#ifdef BACKLIGHT_PIN +#define BACKLIGHT_LEVELS 0 +#endif + +/* Set 0 if debouncing isn't needed */ +#define DEBOUNCING_DELAY 5 + + +/* key combination for command */ +#define IS_COMMAND() ( \ + keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \ +) + +#ifdef RGB_DI_PIN +#define RGBLIGHT_ANIMATIONS +#define RGBLED_NUM 0 +#define RGBLIGHT_HUE_STEP 8 +#define RGBLIGHT_SAT_STEP 8 +#define RGBLIGHT_VAL_STEP 8 +#endif + + +// Disabled features: + +/* 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 + +/* prevent stuck modifiers */ +//#define PREVENT_STUCK_MODIFIERS diff --git a/keyboards/handwired/hexon38/hexon38.c b/keyboards/handwired/hexon38/hexon38.c new file mode 100644 index 0000000000..d830adef3c --- /dev/null +++ b/keyboards/handwired/hexon38/hexon38.c @@ -0,0 +1,3 @@ +// see https://github.com/pepaslabs/hexon38 + +#include "hexon38.h" diff --git a/keyboards/handwired/hexon38/hexon38.h b/keyboards/handwired/hexon38/hexon38.h new file mode 100644 index 0000000000..f98f460faf --- /dev/null +++ b/keyboards/handwired/hexon38/hexon38.h @@ -0,0 +1,17 @@ +// see https://github.com/pepaslabs/hexon38 + +#pragma once + +#include "quantum.h" + +#define LAYOUT( \ + K002, K003, K004, K005, K006, K007, K008, K009, \ + K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, \ + K200, K201, K202, K203, K204, K207, K208, K209, K210, K211, \ + K302, K303, K304, K305, K306, K307, K308, K309 \ +) { \ + { KC_NO, KC_NO, K002, K003, K004, K005, K006, K007, K008, K009, KC_NO, KC_NO }, \ + { K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111 }, \ + { K200, K201, K202, K203, K204, KC_NO, KC_NO, K207, K208, K209, K210, K211 }, \ + { KC_NO, KC_NO, K302, K303, K304, K305, K306, K307, K308, K309, KC_NO, KC_NO } \ +} diff --git a/keyboards/handwired/hexon38/keymaps/default/keymap.c b/keyboards/handwired/hexon38/keymaps/default/keymap.c new file mode 100644 index 0000000000..c3805991f0 --- /dev/null +++ b/keyboards/handwired/hexon38/keymaps/default/keymap.c @@ -0,0 +1,407 @@ +// see https://github.com/pepaslabs/hexon38 + +#include "hexon38.h" + +#define A_ KC_A +#define B_ KC_B +#define C_ KC_C +#define D_ KC_D +#define E_ KC_E +#define F_ KC_F +#define G_ KC_G +#define H_ KC_H +#define I_ KC_I +#define J_ KC_J +#define K_ KC_K +#define L_ KC_L +#define M_ KC_M +#define N_ KC_N +#define O_ KC_O +#define P_ KC_P +#define Q_ KC_Q +#define R_ KC_R +#define S_ KC_S +#define T_ KC_T +#define U_ KC_U +#define V_ KC_V +#define W_ KC_W +#define X_ KC_X +#define Y_ KC_Y +#define Z_ KC_Z + +// Dual-role keys: modifier when held, alpha when tapped. +#define A_CTL CTL_T(KC_A) +#define S_ALT ALT_T(KC_S) +#define D_GUI GUI_T(KC_D) +#define F_SFT SFT_T(KC_F) +#define J_SFT SFT_T(KC_J) +#define K_GUI GUI_T(KC_K) +#define L_ALT ALT_T(KC_L) +#define COLN_CTL CTL_T(KC_SCLN) + +#define ______ KC_TRNS +#define LSHIFT KC_LSHIFT +#define RSHIFT KC_RSHIFT +#define COMMA KC_COMM +#define SLASH KC_SLSH +#define SPACE KC_SPC +#define TAB KC_TAB +#define BKSPC KC_BSPC +#define ENTER KC_ENT +#define PERIOD KC_DOT + +#define BASE_LAYER LAYOUT +#define BLANK_LAYER LAYOUT + + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + BASE_LAYER( +// ,--------+--------+--------+--------. ,--------+--------+--------+--------. + W_ , E_ , R_ , T_ , Y_ , U_ , I_ , O_ , +//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------. + Q_ , A_CTL , S_ALT , D_GUI , F_SFT , G_ , H_ , J_SFT , K_GUI , L_ALT ,COLN_CTL, P_ , +//|--------+--------+--------+--------+--------+--------' `--------+--------+--------+--------+--------+--------| + B_ , Z_ , X_ , C_ , V_ , M_ , COMMA , PERIOD , SLASH , N_ , +//`--------+--------+--------+--------+--------' `--------+--------+--------+--------+--------' + +// ,--------+--------+--------+--------. ,--------+--------+--------+--------. + LSHIFT , SPACE , TAB , DEBUG , SPACE , BKSPC , ENTER , RSHIFT +// `--------+--------+--------+--------' `--------+--------+--------+--------' +), + + BLANK_LAYER( +// ,--------+--------+--------+--------. ,--------+--------+--------+--------. + ______ , ______ , ______ , ______ , ______ , ______ , ______ , ______ , +//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------. + ______ , ______ , ______ , ______ , ______ , ______ , ______ , ______ , ______ , ______ , ______ , ______ , +//|--------+--------+--------+--------+--------+--------' `--------+--------+--------+--------+--------+--------| + ______ , ______ , ______ , ______ , ______ , ______ , ______ , ______ , ______ , ______ , +//`--------+--------+--------+--------+--------' `--------+--------+--------+--------+--------' + +// ,--------+--------+--------+--------. ,--------+--------+--------+--------. + ______ , ______ , ______ , ______ , ______ , ______ , ______ , ______ +// `--------+--------+--------+--------' `--------+--------+--------+--------' +) + +}; + +// a linked list of pending key events (press or release) which we haven't processed yet. +struct _pending_key_t { + uint16_t keycode; + keyrecord_t record; + struct _pending_key_t *next; +}; +typedef struct _pending_key_t pending_key_t; + +// worst case is 10 down strokes and 1 up stroke before we can start disambiguating. +#define RINGSIZE 11 + +// a ring buffer and linked list to store pending key events (presses and releases). +// (basically, this is a fixed-allocation linked list.) +struct _kring_t { + // the actual key events. + pending_key_t items[RINGSIZE]; + // the index of the oldest item, or -1 if no items. + int8_t ifirst; + // the index of the most recently added item, or -1 if no items. + int8_t ilast; + // the number of items in the ring. + uint8_t count; + // the head of the linked list. + pending_key_t *head; +}; +typedef struct _kring_t kring_t; + +// safe accessor to the i-th item of the linked list (returns pointer or NULL). +pending_key_t* kring_get(kring_t *ring, uint8_t i) { + if (i >= ring->count) { + return NULL; + } + uint8_t j = (ring->ifirst + i) % RINGSIZE; + return &(ring->items[j]); +} + +// return the last key in the list of buffered keys. +pending_key_t* kring_last(kring_t *ring) { + if (ring->count == 0) { + return NULL; + } + return kring_get(ring, ring->count - 1); +} + +// remove the oldest item from the ring (the head of the list). +void kring_pop(kring_t *ring) { + if (ring->count > 0) { + ring->ifirst += 1; + ring->ifirst %= RINGSIZE; + ring->head = ring->head->next; + ring->count -= 1; + } +} + +// add an item to the ring (append to the list). +void kring_append(kring_t *ring, uint16_t keycode, keyrecord_t *record) { + if (ring->count >= RINGSIZE) { + // uh oh, we overflowed the capacity of our buffer :( + return; + } + + // if the ring is empty, insert at index 0. + if (ring->count == 0) { + ring->count += 1; + ring->ifirst = 0; + ring->ilast = 0; + ring->head = &(ring->items[0]); + } + // else, append it onto the end. + else { + ring->count += 1; + ring->ilast += 1; + ring->ilast %= RINGSIZE; + } + + // the index at which we should insert this item. + int8_t i = ring->ilast; + + // insert the item. + ring->items[i].keycode = keycode; + ring->items[i].record.event = record->event; +#ifndef NO_ACTION_TAPPING + ring->items[i].record.tap = record->tap; +#endif + ring->items[i].next = NULL; + + // update the previous item to point to this item. + if (ring->count > 1) { + kring_get(ring, ring->count - 2)->next = &(ring->items[i]); + } +} + +kring_t g_pending; + +void matrix_init_user(void) { + g_pending.ifirst = -1; + g_pending.ilast = -1; + g_pending.count = 0; + g_pending.head = NULL; +} + +void matrix_scan_user(void) {} + +/* +a_ a-: emit a +a_ b_ b- a-: emit SHIFT+b +a_ b_ a- b-: emit a, b +dual1down, dual1up -> norm1down, norm1up +dual1down, norm2down, norm2up -> mod1down, norm2down, norm2up +dual1down, norm2down, dual1up -> norm1down, norm2down, norm1up +dual1down, dual2down, norm3down, norm3up -> mod1down, mod2down, norm3down, norm3up +so, a dual key can't be disambiguated until the next keyup of a keydown (not including keyups from keys before it). +*/ + +bool is_ambiguous_kc(uint16_t kc) { + // See the MT() define: https://github.com/qmk/qmk_firmware/blob/master/quantum/quantum_keycodes.h#L642 + // See the QK_MOD_TAP case: https://github.com/qmk/qmk_firmware/blob/master/quantum/keymap_common.c#L134 + uint8_t mod = mod_config((kc >> 0x8) & 0x1F); + return mod != 0; +} + +bool is_down(pending_key_t *k) { + return k->record.event.pressed; +} + +bool is_up(pending_key_t *k) { + return !is_down(k); +} + +bool keys_match(pending_key_t *a, pending_key_t *b) { + return a->record.event.key.col == b->record.event.key.col + && a->record.event.key.row == b->record.event.key.row; +} + +// both the down and corresponding upstroke of a keypress. +struct _pending_pair_t { + pending_key_t *down; + pending_key_t *up; +}; +typedef struct _pending_pair_t pending_pair_t; + +// returns true if this keydown event has a corresponding keyup event in the +// list of buffered keys. also fills out 'p'. +bool is_downup_pair(pending_key_t *k, pending_pair_t *p) { + // first, make sure this event is keydown. + if (!is_down(k)) { + return false; + } + // now find its matching keyup. + pending_key_t *next = k->next; + while (next != NULL) { + if (keys_match(k, next) && is_up(next)) { + // found it. + if (p != NULL) { + p->down = k; + p->up = next; + } + return true; + } + next = next->next; + } + // didn't find it. + return false; +} + +// given a QK_MOD_TAP keycode, return the KC_* version of the modifier keycode. +uint16_t get_mod_kc(uint16_t keycode) { + uint8_t mod = mod_config((keycode >> 0x8) & 0x1F); + switch (mod) { + case MOD_LCTL: + return KC_LCTL; + case MOD_RCTL: + return KC_RCTL; + case MOD_LSFT: + return KC_LSFT; + case MOD_RSFT: + return KC_RSFT; + case MOD_LALT: + return KC_LALT; + case MOD_RALT: + return KC_RALT; + case MOD_LGUI: + return KC_LGUI; + case MOD_RGUI: + return KC_RGUI; + default: + // shrug? this shouldn't happen. + return keycode; + } +} + +bool is_mod_kc(uint16_t keycode) { + switch (keycode) { + case QK_MODS ... QK_MODS_MAX: + return true; + default: + return false; + } +} + +void interpret_as_mod(pending_pair_t *p) { + // see https://github.com/qmk/qmk_firmware/issues/1503 + pending_key_t *k; + k = p->down; + if (k != NULL) { + k->keycode = get_mod_kc(k->keycode); + } + k = p->up; + if (k != NULL) { + k->keycode = get_mod_kc(k->keycode); + } +} + +void interpret_as_normal(pending_pair_t *p) { + pending_key_t *k; + k = p->down; + if (k != NULL) { + k->keycode = k->keycode & 0xFF; + } + k = p->up; + if (k != NULL) { + k->keycode = k->keycode & 0xFF; + } +} + +void execute_head_and_pop(kring_t *ring) { + pending_key_t *head = kring_get(ring, 0); + uint16_t kc = head->keycode; + if (is_mod_kc(kc)) { + if (is_down(head)) { + dprintf(" %s: mod down 0x%04X\n", __func__, kc); + set_mods(get_mods() | MOD_BIT(kc)); + } else { + dprintf(" %s: mod up 0x%04X\n", __func__, kc); + set_mods(get_mods() & ~MOD_BIT(kc)); + } + } else { + if (is_down(head)) { + dprintf(" %s: key down 0x%04X\n", __func__, kc); + register_code16(kc); + } else { + dprintf(" %s: key up 0x%04X\n", __func__, kc); + unregister_code16(kc); + } + } + kring_pop(ring); +} + +// try to figure out what the next pending keypress means. +bool parse_next(kring_t *pending) { + pending_pair_t p; + pending_key_t *first = kring_get(pending, 0); + if (!is_ambiguous_kc(first->keycode)) { + // this pending key isn't ambiguous, so execute it. + dprintf(" %s: found unambiguous key\n", __func__); + execute_head_and_pop(pending); + return true; + } else if (is_ambiguous_kc(first->keycode) && is_up(first)) { + dprintf(" %s: interpreting keyup as mod\n", __func__); + p.down = NULL; + p.up = first; + interpret_as_mod(&p); + execute_head_and_pop(pending); + return true; + } else if (is_downup_pair(first, &p)) { + // 'first' was released before any other pressed key, so treat this as + // a rolling series of normal key taps. + dprintf(" %s: found down-up pair, interpreting as normal key\n", __func__); + interpret_as_normal(&p); + execute_head_and_pop(pending); + return true; + } else { + // if another key was pressed and released while 'first' was held, then we + // should treat it like a modifier. + pending_key_t *next = first->next; + while (next != NULL) { + if (is_downup_pair(next, NULL)) { + dprintf(" %s: found subsequent downup pair, interpreting head as mod\n", __func__); + p.down = first; + p.up = NULL; + interpret_as_mod(&p); + execute_head_and_pop(pending); + return true; + } + next = next->next; + } + + // we can't disambiguate 'first' yet. wait for another keypress. + dprintf(" %s: can't disambiguate (yet)\n", __func__); + return false; + } +} + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + if (keycode == DEBUG) { + return true; + } + + if (g_pending.count == 0 && !is_ambiguous_kc(keycode)) { + // we have no pending keys and this key isn't ambiguous, so we should + // just let QMK take care of it. + dprintf("%s: handled by qmk\n", __func__); + return true; + } else { + dprintf("%s: got dual-role key\n", __func__); + // append the keypress and then try parsing all pending keypresses. + kring_append(&g_pending, keycode, record); + while (g_pending.count > 0) { + dprintf("%s: looping through %d keys...\n", __func__, g_pending.count); + if (!parse_next(&g_pending)) { + // one of our keypresses is ambiguous and we can't proceed until + // we get further keypresses to disambiguate it. + dprintf("%s: %d pending keys are ambiguous\n", __func__, g_pending.count); + break; + } + } + return false; + } +} diff --git a/keyboards/handwired/hexon38/readme.md b/keyboards/handwired/hexon38/readme.md new file mode 100644 index 0000000000..c8ada8e2b2 --- /dev/null +++ b/keyboards/handwired/hexon38/readme.md @@ -0,0 +1,11 @@ +# hexon38 + +QMK support for the [hexon38](https://github.com/pepaslabs/hexon38). + +## Building + +``` +$ cd qmk_firmware +$ make handwired/hexon38 +``` + diff --git a/keyboards/handwired/hexon38/rules.mk b/keyboards/handwired/hexon38/rules.mk new file mode 100644 index 0000000000..2b6f17afc2 --- /dev/null +++ b/keyboards/handwired/hexon38/rules.mk @@ -0,0 +1,64 @@ +# see https://github.com/pepaslabs/hexon38 + +# MCU name +MCU = atmega32u4 + +# Processor frequency. +# This will define a symbol, F_CPU, in all source code files equal to the +# processor frequency in Hz. You can then use this symbol in your source code to +# calculate timings. Do NOT tack on a 'UL' at the end, this will be done +# automatically to create a 32-bit value in your source code. +# +# This will be an integer division of F_USB below, as it is sourced by +# F_USB after it has run through any CPU prescalers. Note that this value +# does not *change* the processor frequency - it should merely be updated to +# reflect the processor speed set externally so that the code can use accurate +# software delays. +F_CPU = 16000000 + +# +# LUFA specific +# +# Target architecture (see library "Board Types" documentation). +ARCH = AVR8 + +# Input clock frequency. +# This will define a symbol, F_USB, in all source code files equal to the +# input clock frequency (before any prescaling is performed) in Hz. This value may +# differ from F_CPU if prescaling is used on the latter, and is required as the +# raw input clock is fed directly to the PLL sections of the AVR for high speed +# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL' +# at the end, this will be done automatically to create a 32-bit value in your +# source code. +# +# If no clock division is performed on the input clock inside the AVR (via the +# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU. +F_USB = $(F_CPU) + +# Interrupt driven control endpoint task(+60) +OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT + + +# Bootloader selection +# Teensy halfkay +# Pro Micro caterina +# Atmel DFU atmel-dfu +# LUFA DFU lufa-dfu +# QMK DFU qmk-dfu +# atmega32a bootloadHID +BOOTLOADER = halfkay + + +# Enabled build options: +BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000) +MOUSEKEY_ENABLE = yes # Mouse keys(+4700) +EXTRAKEY_ENABLE = yes # Audio control and System control(+450) +CONSOLE_ENABLE = yes # Console for debug(+400) +COMMAND_ENABLE = yes # Commands for debug and configuration +NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work + +# Disabled build options: +SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +AUDIO_ENABLE = no +RGBLIGHT_ENABLE = no -- cgit v1.2.3 From c8cbee5d718244dd06fda66a0edf5d4cb73b2434 Mon Sep 17 00:00:00 2001 From: Jeremy Bernhardt Date: Sat, 12 Jan 2019 18:51:21 -0600 Subject: Modified URLs to point to new locations --- keyboards/handwired/ibm122m/readme.md | 2 +- keyboards/handwired/not_so_minidox/readme.md | 2 +- keyboards/handwired/numpad20/readme.md | 2 +- keyboards/handwired/qc60/README.md | 2 +- keyboards/handwired/terminus_mini/readme.md | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) (limited to 'keyboards/handwired') diff --git a/keyboards/handwired/ibm122m/readme.md b/keyboards/handwired/ibm122m/readme.md index 09dac49c0d..de89d7596e 100644 --- a/keyboards/handwired/ibm122m/readme.md +++ b/keyboards/handwired/ibm122m/readme.md @@ -13,4 +13,4 @@ Make example for this keyboard (after setting up your build environment): make handwired/ibm122m:default -See [build environment setup](https://docs.qmk.fm/build_environment_setup.html) then the [make instructions](https://docs.qmk.fm/make_instructions.html) for more information. +See [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) then the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. diff --git a/keyboards/handwired/not_so_minidox/readme.md b/keyboards/handwired/not_so_minidox/readme.md index bd40607357..c791e6e3f9 100644 --- a/keyboards/handwired/not_so_minidox/readme.md +++ b/keyboards/handwired/not_so_minidox/readme.md @@ -12,7 +12,7 @@ Make example for this keyboard (after setting up your build environment): make not_so_minidox/rev1:default -See [build environment setup](https://docs.qmk.fm/build_environment_setup.html) then the [make instructions](https://docs.qmk.fm/make_instructions.html) for more information. +See [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) then the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Flashing ------- diff --git a/keyboards/handwired/numpad20/readme.md b/keyboards/handwired/numpad20/readme.md index 29c832daf0..4e14fbb005 100644 --- a/keyboards/handwired/numpad20/readme.md +++ b/keyboards/handwired/numpad20/readme.md @@ -10,4 +10,4 @@ Make example for this keyboard (after setting up your build environment): make handwired/numpad20:default -See [build environment setup](https://docs.qmk.fm/build_environment_setup.html) then the [make instructions](https://docs.qmk.fm/make_instructions.html) for more information. \ No newline at end of file +See [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) then the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. \ No newline at end of file diff --git a/keyboards/handwired/qc60/README.md b/keyboards/handwired/qc60/README.md index 85570a8a76..8477bb04de 100644 --- a/keyboards/handwired/qc60/README.md +++ b/keyboards/handwired/qc60/README.md @@ -19,4 +19,4 @@ Example of flashing this keyboard: make handwired/qc60/proto:avrdude -See [build environment setup](https://docs.qmk.fm/build_environment_setup.html) then the [make instructions](https://docs.qmk.fm/make_instructions.html) for more information. +See [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) then the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. diff --git a/keyboards/handwired/terminus_mini/readme.md b/keyboards/handwired/terminus_mini/readme.md index 94249d6a96..5f0271bb40 100644 --- a/keyboards/handwired/terminus_mini/readme.md +++ b/keyboards/handwired/terminus_mini/readme.md @@ -10,4 +10,4 @@ Make example for this keyboard (after setting up your build environment): make handwired/terminus_mini:default -See [build environment setup](https://docs.qmk.fm/build_environment_setup.html) then the [make instructions](https://docs.qmk.fm/make_instructions.html) for more information. \ No newline at end of file +See [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) then the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. \ No newline at end of file -- cgit v1.2.3 From 28929ad0174bdcb38e09f6d272a23b9be6aa430c Mon Sep 17 00:00:00 2001 From: James Churchill Date: Fri, 18 Jan 2019 04:08:14 +1000 Subject: Simplify split_common Code significantly (#4772) * Eliminate separate slave loop Both master and slave run the standard keyboard_task main loop now. * Refactor i2c/serial specific code Simplify some of the preprocessor mess by using common function names. * Fix missing #endif * Move direct pin mapping support from miniaxe to split_common For boards with more pins than sense--sorry, switches. * Reordering and reformatting only * Don't run matrix_scan_quantum on slave side * Clean up the offset/slaveOffset calculations * Cut undebounced matrix size in half * Refactor debouncing * Minor fixups * Split split_common transport and debounce code into their own files Can now be replaced with custom versions per keyboard using CUSTOM_TRANSPORT = yes and CUSTOM_DEBOUNCE = yes * Refactor debounce for non-split keyboards too * Update handwired/xealous to build using new split_common * Fix debounce breaking basic test * Dodgy method to allow a split kb to only include one of i2c/serial SPLIT_TRANSPORT = serial or SPLIT_TRANSPORT = i2c will include only that driver code in the binary. SPLIT_TRANSPORT = custom (or anything else) will include neither, the keyboard must supply it's own code if SPLIT_TRANSPORT is not defined then the original behaviour (include both avr i2c and serial code) is maintained. This could be better but it would require explicitly updating all the existing split keyboards. * Enable LTO to get lets_split/sockets under the line * Add docs for SPLIT_TRANSPORT, CUSTOM_MATRIX, CUSTOM_DEBOUNCE * Remove avr-specific sei() from split matrix_setup Not needed now that slave doesn't have a separate main loop. Both sides (on avr) call sei() in lufa's main() after exiting keyboard_setup(). * Fix QUANTUM_LIB_SRC references and simplify SPLIT_TRANSPORT. * Add comments and fix formatting. --- keyboards/handwired/xealous/debounce.c | 63 ++++++++++++++++++++++++++++++++++ keyboards/handwired/xealous/rules.mk | 10 +++--- 2 files changed, 69 insertions(+), 4 deletions(-) create mode 100644 keyboards/handwired/xealous/debounce.c (limited to 'keyboards/handwired') diff --git a/keyboards/handwired/xealous/debounce.c b/keyboards/handwired/xealous/debounce.c new file mode 100644 index 0000000000..65a99f27f2 --- /dev/null +++ b/keyboards/handwired/xealous/debounce.c @@ -0,0 +1,63 @@ +#include +#include "config.h" +#include "matrix.h" +#include "timer.h" +#include "quantum.h" + +#ifndef DEBOUNCING_DELAY +# define DEBOUNCING_DELAY 5 +#endif + +//Debouncing counters +typedef uint8_t debounce_counter_t; +#define DEBOUNCE_COUNTER_MODULO 250 +#define DEBOUNCE_COUNTER_INACTIVE 251 + +static debounce_counter_t *debounce_counters; + +void debounce_init(uint8_t num_rows) +{ + debounce_counters = malloc(num_rows*MATRIX_COLS); + memset(debounce_counters, DEBOUNCE_COUNTER_INACTIVE, num_rows*MATRIX_COLS); +} + +void update_debounce_counters(uint8_t num_rows, uint8_t current_time) +{ + for (uint8_t row = 0; row < num_rows; row++) + { + for (uint8_t col = 0; col < MATRIX_COLS; col++) + { + if (debounce_counters[row*MATRIX_COLS + col] != DEBOUNCE_COUNTER_INACTIVE) + { + if (TIMER_DIFF(current_time, debounce_counters[row*MATRIX_COLS + col], DEBOUNCE_COUNTER_MODULO) >= DEBOUNCING_DELAY) { + debounce_counters[row*MATRIX_COLS + col] = DEBOUNCE_COUNTER_INACTIVE; + } + } + } + } +} + +void transfer_matrix_values(matrix_row_t raw[], matrix_row_t cooked[], uint8_t num_rows, uint8_t current_time) +{ + for (uint8_t row = 0; row < num_rows; row++) + { + matrix_row_t delta = raw[row] ^ cooked[row]; + + for (uint8_t col = 0; col < MATRIX_COLS; col++) + { + if (debounce_counters[row*MATRIX_COLS + col] == DEBOUNCE_COUNTER_INACTIVE && (delta & (1< Date: Thu, 17 Jan 2019 21:07:54 -0800 Subject: handwired/ortho5x13: layout macro refactor Discovered the LAYOUT_compact macro didn't compile in QMK Configurator. Realized the reason for that was that it automatically prepends `KC_` to every keycode received. Renamed the macro to LAYOUT_kc so Configurator will ignore it. Also changed the file to use the #pragma once include guard because I was in here anyway. --- keyboards/handwired/ortho5x13/ortho5x13.h | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) (limited to 'keyboards/handwired') diff --git a/keyboards/handwired/ortho5x13/ortho5x13.h b/keyboards/handwired/ortho5x13/ortho5x13.h index 93551bd70b..a43fc76ae6 100644 --- a/keyboards/handwired/ortho5x13/ortho5x13.h +++ b/keyboards/handwired/ortho5x13/ortho5x13.h @@ -1,5 +1,4 @@ -#ifndef ORTHO5X13_H -#define ORTHO5X13_H +#pragma once #include "quantum.h" @@ -18,7 +17,7 @@ { k40, k41, k42, k43, k44, k45, KC_NO, k47, k48, k49, k4a, k4b, k4c } \ } -#define LAYOUT_compact( \ +#define LAYOUT_kc( \ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, \ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, \ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, \ @@ -32,5 +31,3 @@ { KC_##k30, KC_##k31, KC_##k32, KC_##k33, KC_##k34, KC_##k35, KC_##k35, KC_##k37, KC_##k38, KC_##k39, KC_##k3a, KC_##k3b, KC_##k3c }, \ { KC_##k40, KC_##k41, KC_##k42, KC_##k43, KC_##k44, KC_##k45, KC_NO, KC_##k47, KC_##k48, KC_##k49, KC_##k4a, KC_##k4b, KC_##k4c } \ } - -#endif \ No newline at end of file -- cgit v1.2.3 From 76afdd097abdbdfd522e9f5654d354e67b5e1218 Mon Sep 17 00:00:00 2001 From: noroadsleft <18669334+noroadsleft@users.noreply.github.com> Date: Fri, 18 Jan 2019 10:46:16 -0800 Subject: [Keyboard] handwired/ortho60 Configurator update, readme update, and rules tidy (#4877) * handwired/ortho60: Configurator update - correct labels for Up and Right keys - add layout data for LAYOUT_1x2uC * handwired/ortho60: readme update - update readme file to use QMK template * handwired/ortho60: deleted DEFAULT_FOLDER rule Not needed as the keyboard currently has no revisions. --- keyboards/handwired/ortho60/info.json | 67 +++++++++++++++++++++++++++++++++-- keyboards/handwired/ortho60/readme.md | 11 +++++- keyboards/handwired/ortho60/rules.mk | 2 -- 3 files changed, 75 insertions(+), 5 deletions(-) (limited to 'keyboards/handwired') diff --git a/keyboards/handwired/ortho60/info.json b/keyboards/handwired/ortho60/info.json index b6e4854410..b94bfc7b53 100644 --- a/keyboards/handwired/ortho60/info.json +++ b/keyboards/handwired/ortho60/info.json @@ -65,8 +65,71 @@ {"label":"Raise", "x":7, "y":4}, {"label":"Left", "x":8, "y":4}, {"label":"Down", "x":9, "y":4}, - {"label":"Right", "x":10, "y":4}, - {"label":"up", "x":11, "y":4} + {"label":"Up", "x":10, "y":4}, + {"label":"Right", "x":11, "y":4} + ] + }, + "LAYOUT_1x2uC": { + "layout": [ + {"label":"`", "x":0, "y":0}, + {"label":"1", "x":1, "y":0}, + {"label":"2", "x":2, "y":0}, + {"label":"3", "x":3, "y":0}, + {"label":"4", "x":4, "y":0}, + {"label":"5", "x":5, "y":0}, + {"label":"6", "x":6, "y":0}, + {"label":"7", "x":7, "y":0}, + {"label":"8", "x":8, "y":0}, + {"label":"9", "x":9, "y":0}, + {"label":"0", "x":10, "y":0}, + {"label":"Backspace", "x":11, "y":0}, + {"label":"Tab", "x":0, "y":1}, + {"label":"Q", "x":1, "y":1}, + {"label":"W", "x":2, "y":1}, + {"label":"E", "x":3, "y":1}, + {"label":"R", "x":4, "y":1}, + {"label":"T", "x":5, "y":1}, + {"label":"Y", "x":6, "y":1}, + {"label":"U", "x":7, "y":1}, + {"label":"I", "x":8, "y":1}, + {"label":"O", "x":9, "y":1}, + {"label":"P", "x":10, "y":1}, + {"label":"Delete", "x":11, "y":1}, + {"label":"Esc", "x":0, "y":2}, + {"label":"A", "x":1, "y":2}, + {"label":"S", "x":2, "y":2}, + {"label":"D", "x":3, "y":2}, + {"label":"F", "x":4, "y":2}, + {"label":"G", "x":5, "y":2}, + {"label":"H", "x":6, "y":2}, + {"label":"J", "x":7, "y":2}, + {"label":"K", "x":8, "y":2}, + {"label":"L", "x":9, "y":2}, + {"label":";", "x":10, "y":2}, + {"label":"'", "x":11, "y":2}, + {"label":"Shift", "x":0, "y":3}, + {"label":"Z", "x":1, "y":3}, + {"label":"X", "x":2, "y":3}, + {"label":"C", "x":3, "y":3}, + {"label":"V", "x":4, "y":3}, + {"label":"B", "x":5, "y":3}, + {"label":"N", "x":6, "y":3}, + {"label":"M", "x":7, "y":3}, + {"label":",", "x":8, "y":3}, + {"label":".", "x":9, "y":3}, + {"label":"/", "x":10, "y":3}, + {"label":"Enter", "x":11, "y":3}, + {"label":"Fn", "x":0, "y":4}, + {"label":"Ctrl", "x":1, "y":4}, + {"label":"Alt", "x":2, "y":4}, + {"label":"Meta", "x":3, "y":4}, + {"label":"Lower", "x":4, "y":4}, + {"label":"Space", "x":5, "y":4, "w":2}, + {"label":"Raise", "x":7, "y":4}, + {"label":"Left", "x":8, "y":4}, + {"label":"Down", "x":9, "y":4}, + {"label":"Up", "x":10, "y":4}, + {"label":"Right", "x":11, "y":4} ] } } diff --git a/keyboards/handwired/ortho60/readme.md b/keyboards/handwired/ortho60/readme.md index 8db1b7df7d..be2a027c4f 100644 --- a/keyboards/handwired/ortho60/readme.md +++ b/keyboards/handwired/ortho60/readme.md @@ -1,3 +1,12 @@ # Ortho 60 -Blue Pill STM32F103C8T6 based 12x5 Ortholinear Board +A Blue Pill STM32F103C8T6-based 12x5 ortholinear keyboard. + +Keyboard Maintainer: [Andrew Kannan](https://github.com/awkannan1) +Hardware Supported: Blue Pill STM32F103C8T6 + +Make example for this keyboard (after setting up your build environment): + + make handwired/ortho60: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). diff --git a/keyboards/handwired/ortho60/rules.mk b/keyboards/handwired/ortho60/rules.mk index 3f4574473c..91acb3c5c6 100644 --- a/keyboards/handwired/ortho60/rules.mk +++ b/keyboards/handwired/ortho60/rules.mk @@ -52,5 +52,3 @@ NKRO_ENABLE = yes # USB Nkey Rollover BACKLIGHT_ENABLE = yes LAYOUTS = ortho_5x12 - -DEFAULT_FOLDER = handwired/ortho60 -- cgit v1.2.3 From c4680a6460bcc0a3695f3e9232089374c40fc29c Mon Sep 17 00:00:00 2001 From: noroadsleft <18669334+noroadsleft@users.noreply.github.com> Date: Fri, 18 Jan 2019 21:43:24 -0800 Subject: handwired/qc60: refactor, Configurator update, and readme update (#4878) * handwired/qc60: refactor and Configurator update - correct layout macro name (LAYOUT_ANSI_DEFAULT to LAYOUT_ansi_default) - add layout data for remaining layout macros - correct ISO layout macros (neither had a split left Shift) - refactor LAYOUT_iso_alt (place KC_NUHS key on home row; consistent with LAYOUT_iso_default) - proto.h refactored to use #pragma once include guard * handwired/qc60: keymap refactor - delete redundant KC_TRNS and KC_NO aliases * handwired/qc60: readme update - update header (made consistent with QMK template) - update Docs links (Newbs Guide; grammar) --- keyboards/handwired/qc60/README.md | 5 +- keyboards/handwired/qc60/info.json | 634 ++++++++++++++++++++-- keyboards/handwired/qc60/keymaps/default/keymap.c | 3 - keyboards/handwired/qc60/keymaps/wntrmln/keymap.c | 3 - keyboards/handwired/qc60/proto/proto.h | 26 +- 5 files changed, 606 insertions(+), 65 deletions(-) (limited to 'keyboards/handwired') diff --git a/keyboards/handwired/qc60/README.md b/keyboards/handwired/qc60/README.md index 8477bb04de..4fdd9ba6ef 100644 --- a/keyboards/handwired/qc60/README.md +++ b/keyboards/handwired/qc60/README.md @@ -1,5 +1,4 @@ -QC60 -======== +# QC60 ![qc60 layout](https://i.imgur.com/BAW1VGc.png) @@ -19,4 +18,4 @@ Example of flashing this keyboard: make handwired/qc60/proto:avrdude -See [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) then the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. +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). diff --git a/keyboards/handwired/qc60/info.json b/keyboards/handwired/qc60/info.json index b39ec587bc..c047d50307 100644 --- a/keyboards/handwired/qc60/info.json +++ b/keyboards/handwired/qc60/info.json @@ -1,11 +1,93 @@ { - "keyboard_name": "QC60", - "url": "", - "maintainer": "coarse", - "width": 15, - "height": 5, + "keyboard_name": "QC60", + "url": "", + "maintainer": "coarse", + "width": 16, + "height": 5, "layouts": { - "LAYOUT_ANSI_DEFAULT": { + "LAYOUT": { + "key_count": 67, + "layout": [ + {"label":"L00", "x":0, "y":0}, + {"label":"L01", "x":1, "y":0}, + {"label":"L02", "x":2, "y":0}, + {"label":"L03", "x":3, "y":0}, + {"label":"L04", "x":4, "y":0}, + {"label":"L05", "x":5, "y":0}, + {"label":"L06", "x":6, "y":0}, + + {"label":"R00", "x":8, "y":0}, + {"label":"R01", "x":9, "y":0}, + {"label":"R02", "x":10, "y":0}, + {"label":"R03", "x":11, "y":0}, + {"label":"R04", "x":12, "y":0}, + {"label":"R05", "x":13, "y":0}, + {"label":"R06", "x":14, "y":0}, + {"label":"R07", "x":15, "y":0}, + + {"label":"L10", "x":0, "y":1, "w":1.5}, + {"label":"L11", "x":1.5, "y":1}, + {"label":"L12", "x":2.5, "y":1}, + {"label":"L13", "x":3.5, "y":1}, + {"label":"L14", "x":4.5, "y":1}, + {"label":"L15", "x":5.5, "y":1}, + + {"label":"R10", "x":7.5, "y":1}, + {"label":"R11", "x":8.5, "y":1}, + {"label":"R12", "x":9.5, "y":1}, + {"label":"R13", "x":10.5, "y":1}, + {"label":"R14", "x":11.5, "y":1}, + {"label":"R15", "x":12.5, "y":1}, + {"label":"R16", "x":13.5, "y":1}, + {"label":"R17", "x":14.5, "y":1, "w":1.5}, + + {"label":"L20", "x":0, "y":2, "w":1.75}, + {"label":"L21", "x":1.75, "y":2}, + {"label":"L22", "x":2.75, "y":2}, + {"label":"L23", "x":3.75, "y":2}, + {"label":"L24", "x":4.75, "y":2}, + {"label":"L25", "x":5.75, "y":2}, + + {"label":"R21", "x":7.75, "y":2}, + {"label":"R22", "x":8.75, "y":2}, + {"label":"R23", "x":9.75, "y":2}, + {"label":"R24", "x":10.75, "y":2}, + {"label":"R25", "x":11.75, "y":2}, + {"label":"R26", "x":12.75, "y":2}, + {"label":"R27", "x":13.75, "y":2, "w":2.25}, + + {"label":"L30", "x":0, "y":3, "w":1.25}, + {"label":"L31", "x":1.25, "y":3}, + {"label":"L32", "x":2.25, "y":3}, + {"label":"L33", "x":3.25, "y":3}, + {"label":"L34", "x":4.25, "y":3}, + {"label":"L35", "x":5.25, "y":3}, + {"label":"L36", "x":6.25, "y":3}, + + {"label":"R31", "x":8.25, "y":3}, + {"label":"R32", "x":9.25, "y":3}, + {"label":"R33", "x":10.25, "y":3}, + {"label":"R34", "x":11.25, "y":3}, + {"label":"R35", "x":12.25, "y":3}, + {"label":"R36", "x":13.25, "y":3, "w":1.75}, + {"label":"R37", "x":15, "y":3}, + + {"label":"L40", "x":0, "y":4, "w":1.25}, + {"label":"L41", "x":1.25, "y":4, "w":1.25}, + {"label":"L42", "x":2.5, "y":4, "w":1.25}, + {"label":"L43", "x":3.75, "y":4, "w":2.75}, + {"label":"L44", "x":6.5, "y":4, "w":1.25}, + + {"label":"R43", "x":8.75, "y":4, "w":1.25}, + {"label":"R44", "x":10, "y":4, "w":2}, + {"label":"R42", "x":12, "y":4}, + {"label":"R45", "x":13, "y":4}, + {"label":"R46", "x":14, "y":4}, + {"label":"R47", "x":15, "y":4} + ] + }, + + "LAYOUT_ansi_default": { "key_count": 64, "layout": [ {"label":"Esc", "x":0, "y":0}, @@ -16,13 +98,13 @@ {"label":"5", "x":5, "y":0}, {"label":"6", "x":6, "y":0}, - {"label":"7", "x":7, "y":0}, - {"label":"8", "x":8, "y":0}, - {"label":"9", "x":9, "y":0}, - {"label":"0", "x":10, "y":0}, - {"label":"-", "x":11, "y":0}, - {"label":"=", "x":12, "y":0}, - {"label":"Backspace", "x":13, "y":0, "w":2.0}, + {"label":"7", "x":8, "y":0}, + {"label":"8", "x":9, "y":0}, + {"label":"9", "x":10, "y":0}, + {"label":"0", "x":11, "y":0}, + {"label":"-", "x":12, "y":0}, + {"label":"=", "x":13, "y":0}, + {"label":"Backspace", "x":14, "y":0, "w":2.0}, {"label":"Tab", "x":0, "y":1, "w":1.5}, {"label":"Q", "x":1.5, "y":1}, @@ -31,14 +113,14 @@ {"label":"R", "x":4.5, "y":1}, {"label":"T", "x":5.5, "y":1}, - {"label":"Y", "x":6.5, "y":1}, - {"label":"U", "x":7.5, "y":1}, - {"label":"I", "x":8.5, "y":1}, - {"label":"O", "x":9.5, "y":1}, - {"label":"P", "x":10.5, "y":1}, - {"label":"[", "x":11.5, "y":1}, - {"label":"]", "x":12.5, "y":1}, - {"label":"\\", "x":13.5, "y":1, "w":1.5}, + {"label":"Y", "x":7.5, "y":1}, + {"label":"U", "x":8.5, "y":1}, + {"label":"I", "x":9.5, "y":1}, + {"label":"O", "x":10.5, "y":1}, + {"label":"P", "x":11.5, "y":1}, + {"label":"[", "x":12.5, "y":1}, + {"label":"]", "x":13.5, "y":1}, + {"label":"\\", "x":14.5, "y":1, "w":1.5}, {"label":"CapsLock", "x":0, "y":2, "w":1.75}, {"label":"A", "x":1.75, "y":2}, @@ -47,13 +129,13 @@ {"label":"F", "x":4.75, "y":2}, {"label":"G", "x":5.75, "y":2}, - {"label":"H", "x":6.75, "y":2}, - {"label":"J", "x":7.75, "y":2}, - {"label":"K", "x":8.75, "y":2}, - {"label":"L", "x":9.75, "y":2}, - {"label":";", "x":10.75, "y":2}, - {"label":"'", "x":11.75, "y":2}, - {"label":"Enter", "x":12.75, "y":2, "w":2.25}, + {"label":"H", "x":7.75, "y":2}, + {"label":"J", "x":8.75, "y":2}, + {"label":"K", "x":9.75, "y":2}, + {"label":"L", "x":10.75, "y":2}, + {"label":";", "x":11.75, "y":2}, + {"label":"'", "x":12.75, "y":2}, + {"label":"Enter", "x":13.75, "y":2, "w":2.25}, {"label":"Shift", "x":0, "y":3, "w":2.25}, {"label":"Z", "x":2.25, "y":3}, @@ -62,12 +144,12 @@ {"label":"V", "x":5.25, "y":3}, {"label":"B", "x":6.25, "y":3}, - {"label":"N", "x":7.25, "y":3}, - {"label":"M", "x":8.25, "y":3}, - {"label":",", "x":9.25, "y":3}, - {"label":".", "x":10.25, "y":3}, - {"label":"/", "x":11.25, "y":3}, - {"label":"Shift", "x":12.25, "y":3, "w":2.75}, + {"label":"N", "x":8.25, "y":3}, + {"label":"M", "x":9.25, "y":3}, + {"label":",", "x":10.25, "y":3}, + {"label":".", "x":11.25, "y":3}, + {"label":"/", "x":12.25, "y":3}, + {"label":"Shift", "x":13.25, "y":3, "w":2.75}, {"label":"Ctrl", "x":0, "y":4, "w":1.25}, {"label":"Win", "x":1.25, "y":4, "w":1.25}, @@ -75,13 +157,483 @@ {"x":3.75, "y":4, "w":2.75}, {"x":6.5, "y":4, "w":1.25}, - {"x":7.75, "y":4, "w":1.25}, - {"x":9, "y":4, "w":2.0}, - {"label":"Alt", "x":11, "y":4}, - {"label":"Win", "x":12, "y":4}, - {"label":"Menu", "x":13, "y":4}, - {"label":"Ctrl", "x":14, "y":4} + {"x":8.75, "y":4, "w":1.25}, + {"x":10, "y":4, "w":2.0}, + {"label":"Alt", "x":12, "y":4}, + {"label":"Win", "x":13, "y":4}, + {"label":"Menu", "x":14, "y":4}, + {"label":"Ctrl", "x":15, "y":4} + ] + }, + + "LAYOUT_ansi_alt": { + "key_count": 63, + "layout": [ + {"label":"L00", "x":0, "y":0}, + {"label":"L01", "x":1, "y":0}, + {"label":"L02", "x":2, "y":0}, + {"label":"L03", "x":3, "y":0}, + {"label":"L04", "x":4, "y":0}, + {"label":"L05", "x":5, "y":0}, + {"label":"L06", "x":6, "y":0}, + + {"label":"R00", "x":8, "y":0}, + {"label":"R01", "x":9, "y":0}, + {"label":"R02", "x":10, "y":0}, + {"label":"R03", "x":11, "y":0}, + {"label":"R04", "x":12, "y":0}, + {"label":"R05", "x":13, "y":0}, + {"label":"R07", "x":14, "y":0, "w":2}, + + {"label":"L10", "x":0, "y":1, "w":1.5}, + {"label":"L11", "x":1.5, "y":1}, + {"label":"L12", "x":2.5, "y":1}, + {"label":"L13", "x":3.5, "y":1}, + {"label":"L14", "x":4.5, "y":1}, + {"label":"L15", "x":5.5, "y":1}, + + {"label":"R10", "x":7.5, "y":1}, + {"label":"R11", "x":8.5, "y":1}, + {"label":"R12", "x":9.5, "y":1}, + {"label":"R13", "x":10.5, "y":1}, + {"label":"R14", "x":11.5, "y":1}, + {"label":"R15", "x":12.5, "y":1}, + {"label":"R16", "x":13.5, "y":1}, + {"label":"R17", "x":14.5, "y":1, "w":1.5}, + + {"label":"L20", "x":0, "y":2, "w":1.75}, + {"label":"L21", "x":1.75, "y":2}, + {"label":"L22", "x":2.75, "y":2}, + {"label":"L23", "x":3.75, "y":2}, + {"label":"L24", "x":4.75, "y":2}, + {"label":"L25", "x":5.75, "y":2}, + + {"label":"R21", "x":7.75, "y":2}, + {"label":"R22", "x":8.75, "y":2}, + {"label":"R23", "x":9.75, "y":2}, + {"label":"R24", "x":10.75, "y":2}, + {"label":"R25", "x":11.75, "y":2}, + {"label":"R26", "x":12.75, "y":2}, + {"label":"R27", "x":13.75, "y":2, "w":2.25}, + + {"label":"L31", "x":0, "y":3, "w":2.25}, + {"label":"L32", "x":2.25, "y":3}, + {"label":"L33", "x":3.25, "y":3}, + {"label":"L34", "x":4.25, "y":3}, + {"label":"L35", "x":5.25, "y":3}, + {"label":"L36", "x":6.25, "y":3}, + + {"label":"R31", "x":8.25, "y":3}, + {"label":"R32", "x":9.25, "y":3}, + {"label":"R33", "x":10.25, "y":3}, + {"label":"R34", "x":11.25, "y":3}, + {"label":"R35", "x":12.25, "y":3}, + {"label":"R36", "x":13.25, "y":3, "w":2.75}, + + {"label":"L40", "x":0, "y":4, "w":1.5}, + {"label":"L41", "x":1.5, "y":4}, + {"label":"L42", "x":2.5, "y":4, "w":1.5}, + {"label":"L43", "x":4, "y":4, "w":2.75}, + {"label":"L44", "x":6.75, "y":4}, + + {"label":"R43", "x":8.75, "y":4}, + {"label":"R44", "x":9.75, "y":4, "w":2.25}, + {"label":"R45", "x":12, "y":4, "w":1.5}, + {"label":"R46", "x":13.5, "y":4}, + {"label":"R47", "x":14.5, "y":4, "w":1.5} + ] + }, + + "LAYOUT_iso_default": { + "key_count": 65, + "layout": [ + {"label":"L00", "x":0, "y":0}, + {"label":"L01", "x":1, "y":0}, + {"label":"L02", "x":2, "y":0}, + {"label":"L03", "x":3, "y":0}, + {"label":"L04", "x":4, "y":0}, + {"label":"L05", "x":5, "y":0}, + {"label":"L06", "x":6, "y":0}, + + {"label":"R00", "x":8, "y":0}, + {"label":"R01", "x":9, "y":0}, + {"label":"R02", "x":10, "y":0}, + {"label":"R03", "x":11, "y":0}, + {"label":"R04", "x":12, "y":0}, + {"label":"R05", "x":13, "y":0}, + {"label":"R07", "x":14, "y":0, "w":2}, + + {"label":"L10", "x":0, "y":1, "w":1.5}, + {"label":"L11", "x":1.5, "y":1}, + {"label":"L12", "x":2.5, "y":1}, + {"label":"L13", "x":3.5, "y":1}, + {"label":"L14", "x":4.5, "y":1}, + {"label":"L15", "x":5.5, "y":1}, + + {"label":"R10", "x":7.5, "y":1}, + {"label":"R11", "x":8.5, "y":1}, + {"label":"R12", "x":9.5, "y":1}, + {"label":"R13", "x":10.5, "y":1}, + {"label":"R14", "x":11.5, "y":1}, + {"label":"R15", "x":12.5, "y":1}, + {"label":"R16", "x":13.5, "y":1}, + + {"label":"L20", "x":0, "y":2, "w":1.75}, + {"label":"L21", "x":1.75, "y":2}, + {"label":"L22", "x":2.75, "y":2}, + {"label":"L23", "x":3.75, "y":2}, + {"label":"L24", "x":4.75, "y":2}, + {"label":"L25", "x":5.75, "y":2}, + + {"label":"R21", "x":7.75, "y":2}, + {"label":"R22", "x":8.75, "y":2}, + {"label":"R23", "x":9.75, "y":2}, + {"label":"R24", "x":10.75, "y":2}, + {"label":"R25", "x":11.75, "y":2}, + {"label":"R26", "x":12.75, "y":2}, + {"label":"R17", "x":13.75, "y":2}, + {"label":"R27", "x":14.75, "y":1, "w":1.25, "h":2}, + + {"label":"L30", "x":0, "y":3, "w":1.25}, + {"label":"L31", "x":1.25, "y":3}, + {"label":"L32", "x":2.25, "y":3}, + {"label":"L33", "x":3.25, "y":3}, + {"label":"L34", "x":4.25, "y":3}, + {"label":"L35", "x":5.25, "y":3}, + {"label":"L36", "x":6.25, "y":3}, + + {"label":"R31", "x":8.25, "y":3}, + {"label":"R32", "x":9.25, "y":3}, + {"label":"R33", "x":10.25, "y":3}, + {"label":"R34", "x":11.25, "y":3}, + {"label":"R35", "x":12.25, "y":3}, + {"label":"R36", "x":13.25, "y":3, "w":2.75}, + + {"label":"L40", "x":0, "y":4, "w":1.25}, + {"label":"L41", "x":1.25, "y":4, "w":1.25}, + {"label":"L42", "x":2.5, "y":4, "w":1.25}, + {"label":"L43", "x":3.75, "y":4, "w":2.75}, + {"label":"L44", "x":6.5, "y":4, "w":1.25}, + + {"label":"R43", "x":8.75, "y":4, "w":1.25}, + {"label":"R44", "x":10, "y":4, "w":2}, + {"label":"R42", "x":12, "y":4}, + {"label":"R45", "x":13, "y":4}, + {"label":"R46", "x":14, "y":4}, + {"label":"R47", "x":15, "y":4} + ] + }, + + "LAYOUT_iso_alt": { + "key_count": 64, + "layout": [ + {"label":"L00", "x":0, "y":0}, + {"label":"L01", "x":1, "y":0}, + {"label":"L02", "x":2, "y":0}, + {"label":"L03", "x":3, "y":0}, + {"label":"L04", "x":4, "y":0}, + {"label":"L05", "x":5, "y":0}, + {"label":"L06", "x":6, "y":0}, + + {"label":"R00", "x":8, "y":0}, + {"label":"R01", "x":9, "y":0}, + {"label":"R02", "x":10, "y":0}, + {"label":"R03", "x":11, "y":0}, + {"label":"R04", "x":12, "y":0}, + {"label":"R05", "x":13, "y":0}, + {"label":"R07", "x":14, "y":0, "w":2}, + + {"label":"L10", "x":0, "y":1, "w":1.5}, + {"label":"L11", "x":1.5, "y":1}, + {"label":"L12", "x":2.5, "y":1}, + {"label":"L13", "x":3.5, "y":1}, + {"label":"L14", "x":4.5, "y":1}, + {"label":"L15", "x":5.5, "y":1}, + + {"label":"R10", "x":7.5, "y":1}, + {"label":"R11", "x":8.5, "y":1}, + {"label":"R12", "x":9.5, "y":1}, + {"label":"R13", "x":10.5, "y":1}, + {"label":"R14", "x":11.5, "y":1}, + {"label":"R15", "x":12.5, "y":1}, + {"label":"R16", "x":13.5, "y":1}, + + {"label":"L20", "x":0, "y":2, "w":1.75}, + {"label":"L21", "x":1.75, "y":2}, + {"label":"L22", "x":2.75, "y":2}, + {"label":"L23", "x":3.75, "y":2}, + {"label":"L24", "x":4.75, "y":2}, + {"label":"L25", "x":5.75, "y":2}, + + {"label":"R21", "x":7.75, "y":2}, + {"label":"R22", "x":8.75, "y":2}, + {"label":"R23", "x":9.75, "y":2}, + {"label":"R24", "x":10.75, "y":2}, + {"label":"R25", "x":11.75, "y":2}, + {"label":"R26", "x":12.75, "y":2}, + {"label":"R17", "x":13.75, "y":2}, + {"label":"R27", "x":14.75, "y":1, "w":1.25, "h":2}, + + {"label":"L30", "x":0, "y":3, "w":1.25}, + {"label":"L31", "x":1.25, "y":3}, + {"label":"L32", "x":2.25, "y":3}, + {"label":"L33", "x":3.25, "y":3}, + {"label":"L34", "x":4.25, "y":3}, + {"label":"L35", "x":5.25, "y":3}, + {"label":"L36", "x":6.25, "y":3}, + + {"label":"R31", "x":8.25, "y":3}, + {"label":"R32", "x":9.25, "y":3}, + {"label":"R33", "x":10.25, "y":3}, + {"label":"R34", "x":11.25, "y":3}, + {"label":"R35", "x":12.25, "y":3}, + {"label":"R36", "x":13.25, "y":3, "w":2.75}, + + {"label":"L40", "x":0, "y":4, "w":1.5}, + {"label":"L41", "x":1.5, "y":4}, + {"label":"L42", "x":2.5, "y":4, "w":1.5}, + {"label":"L43", "x":4, "y":4, "w":2.75}, + {"label":"L44", "x":6.75, "y":4}, + + {"label":"R43", "x":8.75, "y":4}, + {"label":"R44", "x":9.75, "y":4, "w":2.25}, + {"label":"R45", "x":12, "y":4, "w":1.5}, + {"label":"R46", "x":13.5, "y":4}, + {"label":"R47", "x":14.5, "y":4, "w":1.5} + ] + }, + + "LAYOUT_hhkb_default": { + "key_count": 63, + "layout": [ + {"label":"L00", "x":0, "y":0}, + {"label":"L01", "x":1, "y":0}, + {"label":"L02", "x":2, "y":0}, + {"label":"L03", "x":3, "y":0}, + {"label":"L04", "x":4, "y":0}, + {"label":"L05", "x":5, "y":0}, + {"label":"L06", "x":6, "y":0}, + + {"label":"R00", "x":8, "y":0}, + {"label":"R01", "x":9, "y":0}, + {"label":"R02", "x":10, "y":0}, + {"label":"R03", "x":11, "y":0}, + {"label":"R04", "x":12, "y":0}, + {"label":"R05", "x":13, "y":0}, + {"label":"R06", "x":14, "y":0}, + {"label":"R07", "x":15, "y":0}, + + {"label":"L10", "x":0, "y":1, "w":1.5}, + {"label":"L11", "x":1.5, "y":1}, + {"label":"L12", "x":2.5, "y":1}, + {"label":"L13", "x":3.5, "y":1}, + {"label":"L14", "x":4.5, "y":1}, + {"label":"L15", "x":5.5, "y":1}, + + {"label":"R10", "x":7.5, "y":1}, + {"label":"R11", "x":8.5, "y":1}, + {"label":"R12", "x":9.5, "y":1}, + {"label":"R13", "x":10.5, "y":1}, + {"label":"R14", "x":11.5, "y":1}, + {"label":"R15", "x":12.5, "y":1}, + {"label":"R16", "x":13.5, "y":1}, + {"label":"R17", "x":14.5, "y":1, "w":1.5}, + + {"label":"L20", "x":0, "y":2, "w":1.75}, + {"label":"L21", "x":1.75, "y":2}, + {"label":"L22", "x":2.75, "y":2}, + {"label":"L23", "x":3.75, "y":2}, + {"label":"L24", "x":4.75, "y":2}, + {"label":"L25", "x":5.75, "y":2}, + + {"label":"R21", "x":7.75, "y":2}, + {"label":"R22", "x":8.75, "y":2}, + {"label":"R23", "x":9.75, "y":2}, + {"label":"R24", "x":10.75, "y":2}, + {"label":"R25", "x":11.75, "y":2}, + {"label":"R26", "x":12.75, "y":2}, + {"label":"R27", "x":13.75, "y":2, "w":2.25}, + + {"label":"L31", "x":0, "y":3, "w":2.25}, + {"label":"L32", "x":2.25, "y":3}, + {"label":"L33", "x":3.25, "y":3}, + {"label":"L34", "x":4.25, "y":3}, + {"label":"L35", "x":5.25, "y":3}, + {"label":"L36", "x":6.25, "y":3}, + + {"label":"R31", "x":8.25, "y":3}, + {"label":"R32", "x":9.25, "y":3}, + {"label":"R33", "x":10.25, "y":3}, + {"label":"R34", "x":11.25, "y":3}, + {"label":"R35", "x":12.25, "y":3}, + {"label":"R36", "x":13.25, "y":3, "w":1.75}, + {"label":"R37", "x":15, "y":3}, + + {"label":"L41", "x":1.5, "y":4}, + {"label":"L42", "x":2.5, "y":4, "w":1.5}, + {"label":"L43", "x":4, "y":4, "w":2.75}, + {"label":"L44", "x":6.75, "y":4}, + + {"label":"R43", "x":8.75, "y":4}, + {"label":"R44", "x":9.75, "y":4, "w":2.25}, + {"label":"R45", "x":12, "y":4, "w":1.5}, + {"label":"R46", "x":13.5, "y":4} + ] + }, + + "LAYOUT_hhkb_split_lshift": { + "key_count": 64, + "layout": [ + {"label":"L00", "x":0, "y":0}, + {"label":"L01", "x":1, "y":0}, + {"label":"L02", "x":2, "y":0}, + {"label":"L03", "x":3, "y":0}, + {"label":"L04", "x":4, "y":0}, + {"label":"L05", "x":5, "y":0}, + {"label":"L06", "x":6, "y":0}, + + {"label":"R00", "x":8, "y":0}, + {"label":"R01", "x":9, "y":0}, + {"label":"R02", "x":10, "y":0}, + {"label":"R03", "x":11, "y":0}, + {"label":"R04", "x":12, "y":0}, + {"label":"R05", "x":13, "y":0}, + {"label":"R06", "x":14, "y":0}, + {"label":"R07", "x":15, "y":0}, + + {"label":"L10", "x":0, "y":1, "w":1.5}, + {"label":"L11", "x":1.5, "y":1}, + {"label":"L12", "x":2.5, "y":1}, + {"label":"L13", "x":3.5, "y":1}, + {"label":"L14", "x":4.5, "y":1}, + {"label":"L15", "x":5.5, "y":1}, + + {"label":"R10", "x":7.5, "y":1}, + {"label":"R11", "x":8.5, "y":1}, + {"label":"R12", "x":9.5, "y":1}, + {"label":"R13", "x":10.5, "y":1}, + {"label":"R14", "x":11.5, "y":1}, + {"label":"R15", "x":12.5, "y":1}, + {"label":"R16", "x":13.5, "y":1}, + {"label":"R17", "x":14.5, "y":1, "w":1.5}, + + {"label":"L20", "x":0, "y":2, "w":1.75}, + {"label":"L21", "x":1.75, "y":2}, + {"label":"L22", "x":2.75, "y":2}, + {"label":"L23", "x":3.75, "y":2}, + {"label":"L24", "x":4.75, "y":2}, + {"label":"L25", "x":5.75, "y":2}, + + {"label":"R21", "x":7.75, "y":2}, + {"label":"R22", "x":8.75, "y":2}, + {"label":"R23", "x":9.75, "y":2}, + {"label":"R24", "x":10.75, "y":2}, + {"label":"R25", "x":11.75, "y":2}, + {"label":"R26", "x":12.75, "y":2}, + {"label":"R27", "x":13.75, "y":2, "w":2.25}, + + {"label":"L30", "x":0, "y":3, "w":1.25}, + {"label":"L31", "x":1.25, "y":3}, + {"label":"L32", "x":2.25, "y":3}, + {"label":"L33", "x":3.25, "y":3}, + {"label":"L34", "x":4.25, "y":3}, + {"label":"L35", "x":5.25, "y":3}, + {"label":"L36", "x":6.25, "y":3}, + + {"label":"R31", "x":8.25, "y":3}, + {"label":"R32", "x":9.25, "y":3}, + {"label":"R33", "x":10.25, "y":3}, + {"label":"R34", "x":11.25, "y":3}, + {"label":"R35", "x":12.25, "y":3}, + {"label":"R36", "x":13.25, "y":3, "w":1.75}, + {"label":"R37", "x":15, "y":3}, + + {"label":"L41", "x":1.5, "y":4}, + {"label":"L42", "x":2.5, "y":4, "w":1.5}, + {"label":"L43", "x":4, "y":4, "w":2.75}, + {"label":"L44", "x":6.75, "y":4}, + + {"label":"R43", "x":8.75, "y":4}, + {"label":"R44", "x":9.75, "y":4, "w":2.25}, + {"label":"R45", "x":12, "y":4, "w":1.5}, + {"label":"R46", "x":13.5, "y":4} + ] + }, + + "LAYOUT_wkl_default": { + "key_count": 61, + "layout": [ + {"label":"L00", "x":0, "y":0}, + {"label":"L01", "x":1, "y":0}, + {"label":"L02", "x":2, "y":0}, + {"label":"L03", "x":3, "y":0}, + {"label":"L04", "x":4, "y":0}, + {"label":"L05", "x":5, "y":0}, + {"label":"L06", "x":6, "y":0}, + + {"label":"R00", "x":8, "y":0}, + {"label":"R01", "x":9, "y":0}, + {"label":"R02", "x":10, "y":0}, + {"label":"R03", "x":11, "y":0}, + {"label":"R04", "x":12, "y":0}, + {"label":"R05", "x":13, "y":0}, + {"label":"R07", "x":14, "y":0, "w":2}, + + {"label":"L10", "x":0, "y":1, "w":1.5}, + {"label":"L11", "x":1.5, "y":1}, + {"label":"L12", "x":2.5, "y":1}, + {"label":"L13", "x":3.5, "y":1}, + {"label":"L14", "x":4.5, "y":1}, + {"label":"L15", "x":5.5, "y":1}, + + {"label":"R10", "x":7.5, "y":1}, + {"label":"R11", "x":8.5, "y":1}, + {"label":"R12", "x":9.5, "y":1}, + {"label":"R13", "x":10.5, "y":1}, + {"label":"R14", "x":11.5, "y":1}, + {"label":"R15", "x":12.5, "y":1}, + {"label":"R16", "x":13.5, "y":1}, + {"label":"R17", "x":14.5, "y":1, "w":1.5}, + + {"label":"L20", "x":0, "y":2, "w":1.75}, + {"label":"L21", "x":1.75, "y":2}, + {"label":"L22", "x":2.75, "y":2}, + {"label":"L23", "x":3.75, "y":2}, + {"label":"L24", "x":4.75, "y":2}, + {"label":"L25", "x":5.75, "y":2}, + + {"label":"R21", "x":7.75, "y":2}, + {"label":"R22", "x":8.75, "y":2}, + {"label":"R23", "x":9.75, "y":2}, + {"label":"R24", "x":10.75, "y":2}, + {"label":"R25", "x":11.75, "y":2}, + {"label":"R26", "x":12.75, "y":2}, + {"label":"R27", "x":13.75, "y":2, "w":2.25}, + + {"label":"L31", "x":0, "y":3, "w":2.25}, + {"label":"L32", "x":2.25, "y":3}, + {"label":"L33", "x":3.25, "y":3}, + {"label":"L34", "x":4.25, "y":3}, + {"label":"L35", "x":5.25, "y":3}, + {"label":"L36", "x":6.25, "y":3}, + + {"label":"R31", "x":8.25, "y":3}, + {"label":"R32", "x":9.25, "y":3}, + {"label":"R33", "x":10.25, "y":3}, + {"label":"R34", "x":11.25, "y":3}, + {"label":"R35", "x":12.25, "y":3}, + {"label":"R36", "x":13.25, "y":3, "w":2.75}, + + {"label":"L40", "x":0, "y":4, "w":1.5}, + {"label":"L42", "x":2.5, "y":4, "w":1.5}, + {"label":"L43", "x":4, "y":4, "w":2.75}, + {"label":"L44", "x":6.75, "y":4}, + + {"label":"R43", "x":8.75, "y":4}, + {"label":"R44", "x":9.75, "y":4, "w":2.25}, + {"label":"R45", "x":12, "y":4, "w":1.5}, + {"label":"R47", "x":14.5, "y":4, "w":1.5} ] } } -} \ No newline at end of file +} diff --git a/keyboards/handwired/qc60/keymaps/default/keymap.c b/keyboards/handwired/qc60/keymaps/default/keymap.c index bafaf5058e..88062d4ed4 100644 --- a/keyboards/handwired/qc60/keymaps/default/keymap.c +++ b/keyboards/handwired/qc60/keymaps/default/keymap.c @@ -24,9 +24,6 @@ extern keymap_config_t keymap_config; // entirely and just use numbers. #define _BASE 0 -#define _______ KC_TRNS -#define XXXXXXX KC_NO - const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [_BASE] = LAYOUT_ansi_default( 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, \ diff --git a/keyboards/handwired/qc60/keymaps/wntrmln/keymap.c b/keyboards/handwired/qc60/keymaps/wntrmln/keymap.c index f99635d531..f024ddb4b9 100644 --- a/keyboards/handwired/qc60/keymaps/wntrmln/keymap.c +++ b/keyboards/handwired/qc60/keymaps/wntrmln/keymap.c @@ -25,9 +25,6 @@ extern keymap_config_t keymap_config; #define _BASE 0 #define _FN 1 -#define _______ KC_TRNS -#define XXXXXXX KC_NO - #define FN MO(_FN) const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { diff --git a/keyboards/handwired/qc60/proto/proto.h b/keyboards/handwired/qc60/proto/proto.h index 191e8150a7..7e7755d0e2 100644 --- a/keyboards/handwired/qc60/proto/proto.h +++ b/keyboards/handwired/qc60/proto/proto.h @@ -14,8 +14,7 @@ * along with this program. If not, see . */ -#ifndef PROTO_H -#define PROTO_H +#pragma once #include "qc60.h" @@ -26,10 +25,10 @@ /* Split Backspace * {R07, XXX, R05, R04, R03, R02, R01, R00} - * + * * Split Right Shift * {R37, R36, R35, R34, R33, R32, R31, XXX} - * + * * Split Left Shift * {L30, L31, L32, L33, L34, L35, L36, XXX} * @@ -101,14 +100,14 @@ L00, L01, L02, L03, L04, L05, L06, R00, R01, R02, R03, R04, R05, R07, \ L10, L11, L12, L13, L14, L15, R10, R11, R12, R13, R14, R15, R16, \ L20, L21, L22, L23, L24, L25, R21, R22, R23, R24, R25, R26, R17, R27, \ - L31, L32, L33, L34, L35, L36, R31, R32, R33, R34, R35, R36, \ + L30, L31, L32, L33, L34, L35, L36, R31, R32, R33, R34, R35, R36, \ L40, L41, L42, L43, L44, R43, R44, R42, R45, R46, R47 \ ) \ { \ {L00, L01, L02, L03, L04, L05, L06, XXX}, \ {L10, L11, L12, L13, L14, L15, XXX, XXX}, \ {L20, L21, L22, L23, L24, L25, XXX, XXX}, \ - {XXX, L31, L32, L33, L34, L35, L36, XXX}, \ + {L30, L31, L32, L33, L34, L35, L36, XXX}, \ {L40, L41, L42, L43, L44, XXX, XXX, XXX}, \ {R07, XXX, R05, R04, R03, R02, R01, R00}, \ {R17, R16, R15, R14, R13, R12, R11, R10}, \ @@ -118,17 +117,17 @@ } #define LAYOUT_iso_alt( \ - L00, L01, L02, L03, L04, L05, L06, R00, R01, R02, R03, R04, R05, R07, \ - L10, L11, L12, L13, L14, L15, R10, R11, R12, R13, R14, R15, R16, R17, \ - L20, L21, L22, L23, L24, L25, R21, R22, R23, R24, R25, R26, R27, \ - L31, L32, L33, L34, L35, L36, R31, R32, R33, R34, R35, R36, \ - L40, L41, L42, L43, L44, R43, R44, R45, R46, R47 \ + L00, L01, L02, L03, L04, L05, L06, R00, R01, R02, R03, R04, R05, R07, \ + L10, L11, L12, L13, L14, L15, R10, R11, R12, R13, R14, R15, R16, \ + L20, L21, L22, L23, L24, L25, R21, R22, R23, R24, R25, R26, R17, R27, \ + L30, L31, L32, L33, L34, L35, L36, R31, R32, R33, R34, R35, R36, \ + L40, L41, L42, L43, L44, R43, R44, R45, R46, R47 \ ) \ { \ {L00, L01, L02, L03, L04, L05, L06, XXX}, \ {L10, L11, L12, L13, L14, L15, XXX, XXX}, \ {L20, L21, L22, L23, L24, L25, XXX, XXX}, \ - {XXX, L31, L32, L33, L34, L35, L36, XXX}, \ + {L30, L31, L32, L33, L34, L35, L36, XXX}, \ {L40, L41, L42, L43, L44, XXX, XXX, XXX}, \ {R07, XXX, R05, R04, R03, R02, R01, R00}, \ {R17, R16, R15, R14, R13, R12, R11, R10}, \ @@ -196,6 +195,3 @@ {XXX, R36, R35, R34, R33, R32, R31, XXX}, \ {R47, XXX, R45, R44, R43, XXX, XXX, XXX}, \ } - - -#endif -- cgit v1.2.3 From c6fd44cf26580b1a65ad0fdd35b43d770769e0de Mon Sep 17 00:00:00 2001 From: noroadsleft <18669334+noroadsleft@users.noreply.github.com> Date: Sat, 19 Jan 2019 16:53:41 -0800 Subject: handwired/reddot refactor, Configurator support and readme update (#4886) * handwired/reddot: refactor - reddot.h - updated to use #pragma once include guard - renamed layout macro KEYMAP to LAYOUT - refactored arguments to more closely resemble physical layout - aligned for readability - keymaps/default/keymap.c - now uses #include QMK_KEYBOARD_H - updated include path for keymap_french.h - refactored to use short keycodes - aligned for readability * handwired/reddot: Configurator support * handwired/reddot: readme update - update readme to current QMK template - add KLE permalink to my best guess at the layout --- keyboards/handwired/reddot/info.json | 108 +++++++++++++++++++++ .../handwired/reddot/keymaps/default/keymap.c | 39 +++----- keyboards/handwired/reddot/readme.md | 26 ++--- keyboards/handwired/reddot/reddot.h | 27 +++--- 4 files changed, 144 insertions(+), 56 deletions(-) create mode 100644 keyboards/handwired/reddot/info.json mode change 100755 => 100644 keyboards/handwired/reddot/keymaps/default/keymap.c (limited to 'keyboards/handwired') diff --git a/keyboards/handwired/reddot/info.json b/keyboards/handwired/reddot/info.json new file mode 100644 index 0000000000..1fcc8677e8 --- /dev/null +++ b/keyboards/handwired/reddot/info.json @@ -0,0 +1,108 @@ +{ + "keyboard_name": "handwired/reddot", + "url": "", + "maintainer": "qmk", + "width": 20.5, + "height": 5, + "layouts": { + "LAYOUT": { + "layout": [ + {"label":"k00 (Esc)", "x":0, "y":0}, + {"label":"k01 (F1)", "x":1, "y":0}, + {"label":"k02 (F2)", "x":2, "y":0}, + {"label":"k03 (F3)", "x":3, "y":0}, + {"label":"k04 (F4)", "x":4, "y":0}, + {"label":"k05 (F5)", "x":5, "y":0}, + {"label":"k06 (Tab)", "x":6, "y":0, "w":2}, + {"label":"k07 (Caps Lock)", "x":8, "y":0}, + {"label":"k08 (F6)", "x":9, "y":0}, + {"label":"k09 (F7)", "x":10, "y":0}, + {"label":"k0A (F8)", "x":11, "y":0}, + {"label":"k0B (F9)", "x":12, "y":0}, + {"label":"k0C (F10)", "x":13, "y":0}, + {"label":"k0D (F11)", "x":14, "y":0}, + {"label":"k0E (F12)", "x":15, "y":0}, + {"label":"k10 (Function)", "x":16.5, "y":0}, + {"label":"k11 (Keypad /)", "x":17.5, "y":0}, + {"label":"k12 (Keypad *)", "x":18.5, "y":0}, + {"label":"k13 (Keypad -)", "x":19.5, "y":0}, + + {"label":"k20 (Left Alt)", "x":0, "y":1}, + {"label":"k21 (1 / FR Ampersand)", "x":1, "y":1}, + {"label":"k22 (2 / FR É)", "x":2, "y":1}, + {"label":"k23 (3 / FR Quote)", "x":3, "y":1}, + {"label":"k24 (4 / FR Apostrophe)", "x":4, "y":1}, + {"label":"k25 (5 / FR Left Parenthesis)", "x":5, "y":1}, + {"label":"k26 (Backspace)", "x":6, "y":1, "w":2}, + {"label":"k27 (Delete)", "x":8, "y":1}, + {"label":"k28 (6 / FR Minus)", "x":9, "y":1}, + {"label":"k29 (7 / FR È)", "x":10, "y":1}, + {"label":"k2A (8 / FR Underscore)", "x":11, "y":1}, + {"label":"k2B (9 / FR Ç)", "x":12, "y":1}, + {"label":"k2C (0 / FR À)", "x":13, "y":1}, + {"label":"k2D (Minus / FR Right Parenthesis)", "x":14, "y":1}, + {"label":"k2E (Equals / FR Equals)", "x":15, "y":1}, + {"label":"k30 (Insert)", "x":16.5, "y":1}, + {"label":"k31 (Home)", "x":17.5, "y":1}, + {"label":"k32 (Page Up)", "x":18.5, "y":1}, + + {"label":"k40 (GUI)", "x":0, "y":2}, + {"label":"k41 (Q / FR A)", "x":1, "y":2}, + {"label":"k42 (W / FR Z)", "x":2, "y":2}, + {"label":"k43 (E)", "x":3, "y":2}, + {"label":"k44 (R)", "x":4, "y":2}, + {"label":"k45 (T)", "x":5, "y":2}, + {"label":"k46 (Shift)", "x":6, "y":2, "h":2}, + {"label":"k66 (Enter)", "x":7, "y":2, "h":2}, + {"label":"k47 (Enter)", "x":8, "y":2, "h":2}, + {"label":"k48 (Y)", "x":9, "y":2}, + {"label":"k49 (U)", "x":10, "y":2}, + {"label":"k4A (I)", "x":11, "y":2}, + {"label":"k4B (O)", "x":12, "y":2}, + {"label":"k4C (P)", "x":13, "y":2}, + {"label":"k4D (Left Bracket / FR Circumflex)", "x":14, "y":2}, + {"label":"k4E (Right Bracket / FR Dollar)", "x":15, "y":2}, + {"label":"k50 (Delete)", "x":16.5, "y":2}, + {"label":"k51 (End)", "x":17.5, "y":2}, + {"label":"k52 (Page Down)", "x":18.5, "y":2}, + {"label":"k53 (Keypad +)", "x":19.5, "y":1, "h":2}, + + {"label":"k60 (Ctrl)", "x":0, "y":3}, + {"label":"k61 (A / FR Q)", "x":1, "y":3}, + {"label":"k62 (S)", "x":2, "y":3}, + {"label":"k63 (D)", "x":3, "y":3}, + {"label":"k64 (F)", "x":4, "y":3}, + {"label":"k65 (G)", "x":5, "y":3}, + {"label":"k68 (H)", "x":9, "y":3}, + {"label":"k69 (J)", "x":10, "y":3}, + {"label":"k6A (K)", "x":11, "y":3}, + {"label":"k6B (L)", "x":12, "y":3}, + {"label":"k6C (Semicolon / FR M)", "x":13, "y":3}, + {"label":"k6D (Quote / FR Ù)", "x":14, "y":3}, + {"label":"k6E (ISO Hash / FR Asterisk)", "x":15, "y":3}, + {"label":"k70 (Keypad 1)", "x":16.5, "y":3}, + {"label":"k71 (Up)", "x":17.5, "y":3}, + {"label":"k72 (Keypad 3)", "x":18.5, "y":3}, + + {"label":"k80 (ISO Backslash / FR Less Than)", "x":0, "y":4}, + {"label":"k81 (Z / FR W)", "x":1, "y":4}, + {"label":"k82 (X)", "x":2, "y":4}, + {"label":"k83 (C)", "x":3, "y":4}, + {"label":"k84 (V)", "x":4, "y":4}, + {"label":"k85 (B)", "x":5, "y":4}, + {"label":"k86 (Space)", "x":6, "y":4, "w":2}, + {"label":"k88 (Space)", "x":8, "y":4, "w":2}, + {"label":"k89 (N)", "x":10, "y":4}, + {"label":"k8A (M / FR Comma)", "x":11, "y":4}, + {"label":"k8B (Comma / FR Semicolon)", "x":12, "y":4}, + {"label":"k8C (Period / Colon)", "x":13, "y":4}, + {"label":"k8D (Slash / FR Exclaim)", "x":14, "y":4}, + {"label":"k8E (Right Alt / FR AltGr)", "x":15, "y":4}, + {"label":"k90 (Left)", "x":16.5, "y":4}, + {"label":"k91 (Down)", "x":17.5, "y":4}, + {"label":"k92 (Right)", "x":18.5, "y":4}, + {"label":"k93 (Keypad Enter)", "x":19.5, "y":3, "h":2} + ] + } + } +} diff --git a/keyboards/handwired/reddot/keymaps/default/keymap.c b/keyboards/handwired/reddot/keymaps/default/keymap.c old mode 100755 new mode 100644 index 73aeff2252..246a03b4d7 --- a/keyboards/handwired/reddot/keymaps/default/keymap.c +++ b/keyboards/handwired/reddot/keymaps/default/keymap.c @@ -1,29 +1,22 @@ -#include "reddot.h" -#include "../../../../../quantum/keymap_extras/keymap_french.h" +#include QMK_KEYBOARD_H +#include "keymap_french.h" const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { -[0] = KEYMAP( - KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_TAB, KC_CAPS, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_FN0, KC_KP_SLASH, KC_KP_ASTERISK, KC_KP_MINUS,\ - KC_LALT, FR_AMP, FR_EACU, FR_QUOT, FR_APOS, FR_LPRN, KC_BSPACE, KC_DELETE, FR_MINS, FR_EGRV, FR_UNDS, FR_CCED, FR_AGRV, FR_RPRN, FR_EQL, KC_INSERT, KC_HOME, KC_PGUP,\ - KC_LGUI, FR_A, FR_Z, KC_E, KC_R, KC_T, KC_LSFT, KC_ENT, KC_Y, KC_U, KC_I, KC_O, KC_P, FR_CIRC, FR_DLR, KC_DELETE, KC_END, KC_PGDOWN, KC_KP_PLUS,\ - KC_LCTL, FR_Q, KC_S, KC_D, KC_F, KC_G, KC_ENT, KC_H, KC_J, KC_K, KC_L, FR_M, FR_UGRV, FR_ASTR, KC_KP_1, KC_UP, KC_KP_3,\ - FR_LESS, FR_W, KC_X, KC_C, KC_V, KC_B, KC_SPACE, KC_SPACE, KC_N, FR_COMM, FR_SCLN, FR_COLN, FR_EXLM, KC_ALGR, KC_LEFT, KC_DOWN, KC_RIGHT, KC_KP_ENTER), - - [1] = KEYMAP( - KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_TAB, KC_CAPS, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_FN0, KC_KP_SLASH, KC_KP_ASTERISK, KC_KP_MINUS,\ - KC_LALT, FR_AMP, FR_EACU, FR_QUOT, FR_APOS, FR_LPRN, KC_BSPACE, KC_DELETE, FR_MINS, FR_EGRV, FR_UNDS, FR_CCED, FR_AGRV, FR_RPRN, FR_EQL, KC_7, KC_8, KC_9,\ - KC_LGUI, FR_A, FR_Z, KC_E, KC_R, KC_T, KC_LSFT, KC_ENT, KC_Y, KC_U, KC_I, KC_O, KC_P, FR_CIRC, FR_DLR, KC_4, KC_5, KC_6, KC_KP_PLUS,\ - KC_LCTL, FR_Q, KC_S, KC_D, KC_F, KC_G, KC_ENT, KC_H, KC_J, KC_K, KC_L, FR_M, FR_UGRV, FR_ASTR, KC_1, KC_2, KC_3,\ - FR_LESS, FR_W, KC_X, KC_C, KC_V, KC_B, KC_SPACE, KC_SPACE, KC_N, FR_COMM, FR_SCLN, FR_COLN, FR_EXLM, KC_ALGR, KC_LEFT, KC_DOWN, KC_RIGHT, KC_KP_ENTER), -}; + [0] = LAYOUT( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_TAB, KC_CAPS, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, TG(1), KC_PSLS, KC_PAST, KC_PMNS, \ + KC_LALT, FR_AMP, FR_EACU, FR_QUOT, FR_APOS, FR_LPRN, KC_BSPC, KC_DEL, FR_MINS, FR_EGRV, FR_UNDS, FR_CCED, FR_AGRV, FR_RPRN, FR_EQL, KC_INS, KC_HOME, KC_PGUP, \ + KC_LGUI, FR_A, FR_Z, KC_E, KC_R, KC_T, KC_LSFT, KC_ENT, KC_ENT, KC_Y, KC_U, KC_I, KC_O, KC_P, FR_CIRC, FR_DLR, KC_DEL, KC_END, KC_PGDN, KC_PPLS, \ + KC_LCTL, FR_Q, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, FR_M, FR_UGRV, FR_ASTR, KC_P1, KC_UP, KC_P3, \ + FR_LESS, FR_W, KC_X, KC_C, KC_V, KC_B, KC_SPC, KC_SPC, KC_N, FR_COMM, FR_SCLN, FR_COLN, FR_EXLM, KC_ALGR, KC_LEFT, KC_DOWN, KC_RGHT, KC_PENT \ + ), + [1] = LAYOUT( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_TAB, KC_CAPS, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, KC_PSLS, KC_PAST, KC_PMNS, \ + KC_LALT, FR_AMP, FR_EACU, FR_QUOT, FR_APOS, FR_LPRN, KC_BSPC, KC_DEL, FR_MINS, FR_EGRV, FR_UNDS, FR_CCED, FR_AGRV, FR_RPRN, FR_EQL, KC_7, KC_8, KC_9, \ + KC_LGUI, FR_A, FR_Z, KC_E, KC_R, KC_T, KC_LSFT, KC_ENT, KC_ENT, KC_Y, KC_U, KC_I, KC_O, KC_P, FR_CIRC, FR_DLR, KC_4, KC_5, KC_6, KC_PPLS, \ + KC_LCTL, FR_Q, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, FR_M, FR_UGRV, FR_ASTR, KC_1, KC_2, KC_3, \ + FR_LESS, FR_W, KC_X, KC_C, KC_V, KC_B, KC_SPC, KC_SPC, KC_N, FR_COMM, FR_SCLN, FR_COLN, FR_EXLM, KC_ALGR, KC_LEFT, KC_DOWN, KC_RGHT, KC_PENT \ + ), -const uint16_t PROGMEM fn_actions[] = { - ACTION_LAYER_TOGGLE(1), }; - -const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) { - return MACRO_NONE; -}; - diff --git a/keyboards/handwired/reddot/readme.md b/keyboards/handwired/reddot/readme.md index 8cdbb47d66..27c8b54d60 100755 --- a/keyboards/handwired/reddot/readme.md +++ b/keyboards/handwired/reddot/readme.md @@ -1,24 +1,14 @@ -## RedDot Specific Info ## +# RedDot +An ortholinear compact fullsize keyboard configured for French AZERTY layout. -## Quantum MK Firmware +- [Layout](http://www.keyboard-layout-editor.com/##@_plate:true%3B&@_sm=cherry&sb=cherry&st=MX1A-L1xx%3B&=Esc&=F1&=F2&=F3&=F4&=F5&_w:2%3B&=Tab&=Caps%20Lock&=F6&=F7&=F8&=F9&=F10&=F11&=F12&_x:0.5%3B&=Fn&=%2F%2F&=*&=-%3B&@=Alt&=1%0A%2F&&=2%0A%C3%A9%0A%0A~&=3%0A%22%0A%0A%23&=4%0A'%0A%0A%7B&=5%0A(%0A%0A%5B&_w:2%3B&=Back&=Del&=6%0A-%0A%0A%7C&=7%0A%C3%A8%0A%0A%60&=8%0A%2F_%0A%0A%5C&=9%0A%C3%A7%0A%0A%5E&=0%0A%C3%A0%0A%0A%2F@&=%C2%B0%0A)%0A%0A%5D&=+%0A%2F=%0A%0A%7D&_x:0.5%3B&=Insert&=Home&=Page%20Up&_h:2%3B&=+%3B&@=Win&=A&=Z&=E&=R&=T&_h:2%3B&=Shift&_h:2%3B&=Enter&_h:2%3B&=Enter&=Y&=U&=I&=O&=P&=%C2%A8%0A%5E&=%C2%A3%0A$&_x:0.5%3B&=Delete&=End&=Page%20Down%3B&@=Ctrl&=Q&=S&=D&=F&=G&_x:3%3B&=H&=J&=K&=L&=M&=%25%0A%C3%B9&=%C2%B5%0A*&_x:0.5%3B&=1%0AEnd&=Up&=3%0APgDn&_h:2%3B&=Enter%3B&@=%3E%0A%3C&=W&=X&=C&=V&=B&_w:2%3B&=Space&_w:2%3B&=Space&=N&=%3F%0A,&=.%0A%2F%3B&=%2F%2F%0A%2F:&=%C2%A7%0A!&=Alt%20Gr&_x:0.5%3B&=Left&=Down&=Right) -For the full Quantum feature list, see [the parent README.md](/readme.md). +Keyboard Maintainer: [The QMK Community](https://github.com/qmk) +Hardware Supported: RedDot handwired -## Building +Make example for this keyboard (after setting up your build environment): -Download or clone the whole firmware and navigate to the keyboard/reddot folder. Once your dev env is setup, you'll be able to type `make` to generate your .hex - you can then use the Teensy Loader to program your .hex file. + make handwired/reddot:default -Depending on which keymap you would like to use, you will have to compile slightly differently. - -### Default -To build with the default keymap, simply run `make`. - -### Other Keymaps -Several version of keymap are available in advance but you are recommended to define your favorite layout yourself. To define your own keymap create file named `.c` and see keymap document (you can find in top README.md) and existent keymap files. - -To build the firmware binary hex file with a keymap just do `make` with `KEYMAP` option like: -``` -$ make KEYMAP=[default|jack|] -``` -Keymaps follow the format **__\.c__** and are stored in the `keymaps` folder. +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). diff --git a/keyboards/handwired/reddot/reddot.h b/keyboards/handwired/reddot/reddot.h index f0c4be5571..a763f2ddc3 100755 --- a/keyboards/handwired/reddot/reddot.h +++ b/keyboards/handwired/reddot/reddot.h @@ -1,20 +1,17 @@ -#ifndef REDDOT_H -#define REDDOT_H +#pragma once #include "quantum.h" -#define KEYMAP( \ - k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E, k10, k11, k12, k13, \ - k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, k2E, k30, k31, k32, \ - k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4A, k4B, k4C, k4D, k4E, k50, k51, k52, k53, \ - k60, k61, k62, k63, k64, k65, k66, k68, k69, k6A, k6B, k6C, k6D, k6E, k70, k71, k72, \ - k80, k81, k82, k83, k84, k85, k86, k88, k89, k8A, k8B, k8C, k8D, k8E, k90, k91, k92, k93\ +#define LAYOUT( \ + k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E, k10, k11, k12, k13, \ + k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, k2E, k30, k31, k32, \ + k40, k41, k42, k43, k44, k45, k46, k66, k47, k48, k49, k4A, k4B, k4C, k4D, k4E, k50, k51, k52, k53, \ + k60, k61, k62, k63, k64, k65, k68, k69, k6A, k6B, k6C, k6D, k6E, k70, k71, k72, \ + k80, k81, k82, k83, k84, k85, k86, k88, k89, k8A, k8B, k8C, k8D, k8E, k90, k91, k92, k93 \ ) { \ - { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E, k10, k11, k12, k13 }, \ - { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, k2E, k30, k31, k32, KC_NO }, \ - { k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4A, k4B, k4C, k4D, k4E, k50, k51, k52, k53 }, \ - { k60, k61, k62, k63, k64, k65, k66, KC_NO, k68, k69, k6A, k6B, k6C, k6D, k6E, k70, k71, k72, KC_NO }, \ - { k80, k81, k82, k83, k84, k85, k86, KC_NO, k88, k89, k8A, k8B, k8C, k8D, k8E, k90, k91, k92, k93 } \ + { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E, k10, k11, k12, k13 }, \ + { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, k2E, k30, k31, k32, KC_NO }, \ + { k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4A, k4B, k4C, k4D, k4E, k50, k51, k52, k53 }, \ + { k60, k61, k62, k63, k64, k65, k66, KC_NO, k68, k69, k6A, k6B, k6C, k6D, k6E, k70, k71, k72, KC_NO }, \ + { k80, k81, k82, k83, k84, k85, k86, KC_NO, k88, k89, k8A, k8B, k8C, k8D, k8E, k90, k91, k92, k93 } \ } - -#endif -- cgit v1.2.3 From 4822ad6be194f416f6c95c468e26197dd442ac52 Mon Sep 17 00:00:00 2001 From: noroadsleft <18669334+noroadsleft@users.noreply.github.com> Date: Mon, 21 Jan 2019 11:22:21 -0800 Subject: handwired/retro_refit: refactor, Configurator support and readme update (#4899) * handwired/retro_refit: refactor - retro_refit.h - updated to use #pragma once include guard - refactored layout macro to not auto-prepend KC_ to keycodes - renamed to LAYOUT (from KEYMAP) - aligned for readability - default keymap.c - now uses #include QMK_KEYBOARD_H - removed unused fn_actions and action_get_macro blocks * handwired/retro_refit: Configurator support * handwired/retro_refit: readme update Updated readme to format of current QMK template. --- keyboards/handwired/retro_refit/info.json | 95 ++++++++++++++++++++++ .../handwired/retro_refit/keymaps/default/keymap.c | 33 ++------ keyboards/handwired/retro_refit/readme.md | 72 ++++++---------- keyboards/handwired/retro_refit/retro_refit.h | 51 ++++++------ 4 files changed, 155 insertions(+), 96 deletions(-) create mode 100644 keyboards/handwired/retro_refit/info.json (limited to 'keyboards/handwired') diff --git a/keyboards/handwired/retro_refit/info.json b/keyboards/handwired/retro_refit/info.json new file mode 100644 index 0000000000..44ae97cd12 --- /dev/null +++ b/keyboards/handwired/retro_refit/info.json @@ -0,0 +1,95 @@ +{ + "keyboard_name": "handwired/retro_refit", + "url": "", + "maintainer": "qmk", + "width": 15.5, + "height": 6.5, + "layouts": { + "LAYOUT": { + "key_count": 81, + "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":"Num Lock", "x":11.5, "y":0}, + {"label":"Scroll Lock", "x":12.5, "y":0}, + {"label":"Print Screen", "x":13.5, "y":0}, + {"label":"Pause", "x":14.5, "y":0}, + {"label":"`", "x":0, "y":1.5}, + {"label":"1", "x":1, "y":1.5}, + {"label":"2", "x":2, "y":1.5}, + {"label":"3", "x":3, "y":1.5}, + {"label":"4", "x":4, "y":1.5}, + {"label":"5", "x":5, "y":1.5}, + {"label":"6", "x":6, "y":1.5}, + {"label":"7", "x":7, "y":1.5}, + {"label":"8", "x":8, "y":1.5}, + {"label":"9", "x":9, "y":1.5}, + {"label":"0", "x":10, "y":1.5}, + {"label":"-", "x":11, "y":1.5}, + {"label":"=", "x":12, "y":1.5}, + {"label":"Backspace", "x":13, "y":1.5, "w":1.5}, + {"label":"Home", "x":14.5, "y":1.5}, + {"label":"Tab", "x":0, "y":2.5, "w":1.5}, + {"label":"Q", "x":1.5, "y":2.5}, + {"label":"W", "x":2.5, "y":2.5}, + {"label":"E", "x":3.5, "y":2.5}, + {"label":"R", "x":4.5, "y":2.5}, + {"label":"T", "x":5.5, "y":2.5}, + {"label":"Y", "x":6.5, "y":2.5}, + {"label":"U", "x":7.5, "y":2.5}, + {"label":"I", "x":8.5, "y":2.5}, + {"label":"O", "x":9.5, "y":2.5}, + {"label":"P", "x":10.5, "y":2.5}, + {"label":"[", "x":11.5, "y":2.5}, + {"label":"]", "x":12.5, "y":2.5}, + {"label":"Page Up", "x":14.5, "y":2.5}, + {"label":"Ctrl", "x":0, "y":3.5, "w":1.75}, + {"label":"A", "x":1.75, "y":3.5}, + {"label":"S", "x":2.75, "y":3.5}, + {"label":"D", "x":3.75, "y":3.5}, + {"label":"F", "x":4.75, "y":3.5}, + {"label":"G", "x":5.75, "y":3.5}, + {"label":"H", "x":6.75, "y":3.5}, + {"label":"J", "x":7.75, "y":3.5}, + {"label":"K", "x":8.75, "y":3.5}, + {"label":"L", "x":9.75, "y":3.5}, + {"label":";", "x":10.75, "y":3.5}, + {"label":"'", "x":11.75, "y":3.5}, + {"label":"Enter", "x":12.75, "y":3.5, "w":1.75}, + {"label":"Page Down", "x":14.5, "y":3.5}, + {"label":"Shift", "x":0, "y":4.5, "w":2.25}, + {"label":"Z", "x":2.25, "y":4.5}, + {"label":"X", "x":3.25, "y":4.5}, + {"label":"C", "x":4.25, "y":4.5}, + {"label":"V", "x":5.25, "y":4.5}, + {"label":"B", "x":6.25, "y":4.5}, + {"label":"N", "x":7.25, "y":4.5}, + {"label":"M", "x":8.25, "y":4.5}, + {"label":",", "x":9.25, "y":4.5}, + {"label":".", "x":10.25, "y":4.5}, + {"label":"/", "x":11.25, "y":4.5}, + {"label":"Shift", "x":12.25, "y":4.5, "w":1.25}, + {"label":"Up", "x":13.5, "y":4.5}, + {"label":"End", "x":14.5, "y":4.5}, + {"label":"Alt", "x":0, "y":5.5, "w":1.25}, + {"label":"Caps Lock", "x":1.25, "y":5.5, "w":1.25}, + {"label":"\\", "x":2.5, "y":5.5}, + {"label":"Space", "x":3.5, "y":5.5, "w":7}, + {"label":"Insert", "x":10.5, "y":5.5}, + {"label":"Delete", "x":11.5, "y":5.5}, + {"label":"Left", "x":12.5, "y":5.5}, + {"label":"Down", "x":13.5, "y":5.5}, + {"label":"Right", "x":14.5, "y":5.5} + ] + } + } +} diff --git a/keyboards/handwired/retro_refit/keymaps/default/keymap.c b/keyboards/handwired/retro_refit/keymaps/default/keymap.c index a850bd5080..2f9f28478e 100644 --- a/keyboards/handwired/retro_refit/keymaps/default/keymap.c +++ b/keyboards/handwired/retro_refit/keymaps/default/keymap.c @@ -1,27 +1,12 @@ - -#include "retro_refit.h" +#include QMK_KEYBOARD_H const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { -[0] = - KEYMAP( ESC, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, NLCK, SLCK, PSCR, PAUS, \ - GRV, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, MINS, EQL, BSPC, HOME, \ - TAB, Q, W, E, R, T, Y, U, I, O, P, LBRC, RBRC, PGUP, \ - BSLS, A, S, D, F, G, H, J, K, L, SCLN, QUOT, ENT, PGDN, \ - LSFT, Z, X, C, V, B, N, M, COMM, DOT, SLSH, RSFT, UP, END, \ - LCTL, LGUI, LALT, SPC, INS, DEL, LEFT, DOWN, RGHT), -}; - -const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) -{ - // MACRODOWN only works in this function - switch(id) { - case 0: - if (record->event.pressed) { - register_code(KC_RSFT); - } else { - unregister_code(KC_RSFT); - } - break; - } - return MACRO_NONE; + [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_NLCK, KC_SLCK, KC_PSCR, KC_PAUS, \ + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_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_PGUP, \ + KC_BSLS, 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_INS, KC_DEL, KC_LEFT, KC_DOWN, KC_RGHT \ + ), }; diff --git a/keyboards/handwired/retro_refit/readme.md b/keyboards/handwired/retro_refit/readme.md index 9f10edf9fc..8dfca7b10b 100644 --- a/keyboards/handwired/retro_refit/readme.md +++ b/keyboards/handwired/retro_refit/readme.md @@ -1,60 +1,42 @@ -retro_refit keyboard firmware -====================== - -## Keyboard Info +# retro_refit The retro refit keyboard used a Teensy to replace the original controller on a 386 "laptop". -http://imgur.com/a/08Fyj +[Image Gallery](https://imgur.com/a/08Fyj) -This keyboard uses a KEYMAP macro that is a great example of using a non-standard row-column matrix. The keyboard in question had 11 rows and 8 columns, but the rows were not all horizontal, and the columns were not all vertical. For example, row 2 contained "Print Screen", "N", "M", ",", ".", "/", "Right Shift", and"Left Alt". Column 0 contained "F6", "7", "O", "'", "Q", "D", "B", "Left Alt", "Up Arrow", and "Down Arrow". +This keyboard uses a LAYOUT macro that is a great example of using a non-standard row-column matrix. The keyboard in question had 11 rows and 8 columns, but the rows were not all horizontal, and the columns were not all vertical. For example, row 2 contained "Print Screen", "N", "M", ",", ".", "/", "Right Shift", and"Left Alt". Column 0 contained "F6", "7", "O", "'", "Q", "D", "B", "Left Alt", "Up Arrow", and "Down Arrow". -The macro makes programming the keys easier and in a more straight-forward manner because it realigns the keys into a 6x15 sensible keyboard layout instead of the obtuse 11x8 matrix. Each Kxy corrisponds to a key in row x column y. +The macro makes programming the keys easier and in a more straight-forward manner because it realigns the keys into a 6x15 sensible keyboard layout instead of the obtuse 11x8 matrix. Each Kxy corresponds to a key in row x column y. ``` -#define KEYMAP( \ - K77, K05, K04, K03, K02, K01, K00, KA7, KA6, KA5, KA4, KA3, KA2, K11, K94, \ - K27, K76, K75, K74, K73, K72, K71, K70, K67, K66, K65, K64, K63, K62, KA1, \ - K61, K60, K57, K56, K55, K54, K53, K52, K51, K50, K47, K46, K45, K97, \ - K43, K42, K41, K40, K37, K36, K35, K34, K33, K32, K31, K30, K44, K87, \ - K26, K24, K23, K22, K21, K20, K17, K16, K15, K14, K13, K12, KA0, K91, \ - K10, K06, K25, K07, K86, K85, K95, K90, K93 \ +#define LAYOUT( \ + K77, K05, K04, K03, K02, K01, K00, KA7, KA6, KA5, KA4, KA3, KA2, K11, K94, \ + K27, K76, K75, K74, K73, K72, K71, K70, K67, K66, K65, K64, K63, K62, KA1, \ + K61, K60, K57, K56, K55, K54, K53, K52, K51, K50, K47, K46, K45, K97, \ + K43, K42, K41, K40, K37, K36, K35, K34, K33, K32, K31, K30, K44, K87, \ + K26, K24, K23, K22, K21, K20, K17, K16, K15, K14, K13, K12, KA0, K91, \ + K10, K06, K25, K07, K86, K85, K95, K90, K93 \ ) { \ -{ KC_##K00, KC_##K01, KC_##K02, KC_##K03, KC_##K04, KC_##K05, KC_##K06, KC_##K07, }, \ -{ KC_##K10, KC_##K11, KC_##K12, KC_##K13, KC_##K14, KC_##K15, KC_##K16, KC_##K17, }, \ -{ KC_##K20, KC_##K21, KC_##K22, KC_##K23, KC_##K24, KC_##K25, KC_##K26, KC_##K27, }, \ -{ KC_##K30, KC_##K31, KC_##K32, KC_##K33, KC_##K34, KC_##K35, KC_##K36, KC_##K37, }, \ -{ KC_##K40, KC_##K41, KC_##K42, KC_##K43, KC_##K44, KC_##K45, KC_##K46, KC_##K47, }, \ -{ KC_##K50, KC_##K51, KC_##K52, KC_##K53, KC_##K54, KC_##K55, KC_##K56, KC_##K57, }, \ -{ KC_##K60, KC_##K61, KC_##K62, KC_##K63, KC_##K64, KC_##K65, KC_##K66, KC_##K67, }, \ -{ KC_##K70, KC_##K71, KC_##K72, KC_##K73, KC_##K74, KC_##K75, KC_##K76, KC_##K77, }, \ -{ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_##K85, KC_##K86, KC_##K87, }, \ -{ KC_##K90, KC_##K91, KC_NO, KC_##K93, KC_##K94, KC_##K95, KC_NO, KC_##K97, }, \ -{ KC_##KA0, KC_##KA1, KC_##KA2, KC_##KA3, KC_##KA4, KC_##KA5, KC_##KA6, KC_##KA7, } \ + { 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 }, \ + { K50, K51, K52, K53, K54, K55, K56, K57 }, \ + { K60, K61, K62, K63, K64, K65, K66, K67 }, \ + { K70, K71, K72, K73, K74, K75, K76, K77 }, \ + { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, K85, K86, K87 }, \ + { K90, K91, KC_NO, K93, K94, K95, KC_NO, K97 }, \ + { KA0, KA1, KA2, KA3, KA4, KA5, KA6, KA7 } \ } ``` -## Quantum MK Firmware - -For the full Quantum feature list, see [the parent readme.md](/readme.md). - -## Building - -Download or clone the whole firmware and navigate to the keyboards/retro_refit folder. Once your dev env is setup, you'll be able to type `make` to generate your .hex - you can then use the Teensy Loader to program your .hex file. - -Depending on which keymap you would like to use, you will have to compile slightly differently. +Keyboard Maintainer: [The QMK Community](https://github.com/qmk) +Hardware Supported: Leading Edge D3 386 keyboard, Teensy -### Default -To build with the default keymap, simply run `make default`. +Make example for this keyboard (after setting up your build environment): -### Other Keymaps -Several version of keymap are available in advance but you are recommended to define your favorite layout yourself. To define your own keymap create file named `.c` and see keymap document (you can find in top readme.md) and existent keymap files. - -To build the firmware binary hex file with a keymap just do `make` with a keymap like this: - -``` -$ make [default|jack|] -``` + make handwired/retro_refit:default -Keymaps follow the format **__\.c__** and are stored in the `keymaps` folder. \ No newline at end of file +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). diff --git a/keyboards/handwired/retro_refit/retro_refit.h b/keyboards/handwired/retro_refit/retro_refit.h index 109acdc399..ad1c567a84 100644 --- a/keyboards/handwired/retro_refit/retro_refit.h +++ b/keyboards/handwired/retro_refit/retro_refit.h @@ -1,38 +1,35 @@ -#ifndef RETRO_REFIT_H -#define RETRO_REFIT_H +#pragma once #include "quantum.h" -// This macro is an example of using a non-standard row-column matrix. The -// keyboard in question had 11 rows and 8 columns, but the rows were not all -// horizontal, and the columns were not all vertical. For example, row 2 +// This macro is an example of using a non-standard row-column matrix. The +// keyboard in question had 11 rows and 8 columns, but the rows were not all +// horizontal, and the columns were not all vertical. For example, row 2 // contained "Print Screen", "N", "M", ",", ".", "/", "Right Shift", and -// "Left Alt". Column 0 contained "F6", "7", "O", "'", "Q", "D", "B", +// "Left Alt". Column 0 contained "F6", "7", "O", "'", "Q", "D", "B", // "Left Alt", "Up Arrow", and "Down Arrow". // // The macro makes programming the keys easier and in a more straight-forward -// manner because it realigns the keys into a 6x15 sensible keyboard layout +// manner because it realigns the keys into a 6x15 sensible keyboard layout // instead of the obtuse 11x8 matrix. -#define KEYMAP( \ - K77, K05, K04, K03, K02, K01, K00, KA7, KA6, KA5, KA4, KA3, KA2, K11, K94, \ - K27, K76, K75, K74, K73, K72, K71, K70, K67, K66, K65, K64, K63, K62, KA1, \ - K61, K60, K57, K56, K55, K54, K53, K52, K51, K50, K47, K46, K45, K97, \ - K43, K42, K41, K40, K37, K36, K35, K34, K33, K32, K31, K30, K44, K87, \ - K26, K24, K23, K22, K21, K20, K17, K16, K15, K14, K13, K12, KA0, K91, \ - K10, K06, K25, K07, K86, K85, K95, K90, K93 \ +#define LAYOUT( \ + K77, K05, K04, K03, K02, K01, K00, KA7, KA6, KA5, KA4, KA3, KA2, K11, K94, \ + K27, K76, K75, K74, K73, K72, K71, K70, K67, K66, K65, K64, K63, K62, KA1, \ + K61, K60, K57, K56, K55, K54, K53, K52, K51, K50, K47, K46, K45, K97, \ + K43, K42, K41, K40, K37, K36, K35, K34, K33, K32, K31, K30, K44, K87, \ + K26, K24, K23, K22, K21, K20, K17, K16, K15, K14, K13, K12, KA0, K91, \ + K10, K06, K25, K07, K86, K85, K95, K90, K93 \ ) { \ -{ KC_##K00, KC_##K01, KC_##K02, KC_##K03, KC_##K04, KC_##K05, KC_##K06, KC_##K07, }, \ -{ KC_##K10, KC_##K11, KC_##K12, KC_##K13, KC_##K14, KC_##K15, KC_##K16, KC_##K17, }, \ -{ KC_##K20, KC_##K21, KC_##K22, KC_##K23, KC_##K24, KC_##K25, KC_##K26, KC_##K27, }, \ -{ KC_##K30, KC_##K31, KC_##K32, KC_##K33, KC_##K34, KC_##K35, KC_##K36, KC_##K37, }, \ -{ KC_##K40, KC_##K41, KC_##K42, KC_##K43, KC_##K44, KC_##K45, KC_##K46, KC_##K47, }, \ -{ KC_##K50, KC_##K51, KC_##K52, KC_##K53, KC_##K54, KC_##K55, KC_##K56, KC_##K57, }, \ -{ KC_##K60, KC_##K61, KC_##K62, KC_##K63, KC_##K64, KC_##K65, KC_##K66, KC_##K67, }, \ -{ KC_##K70, KC_##K71, KC_##K72, KC_##K73, KC_##K74, KC_##K75, KC_##K76, KC_##K77, }, \ -{ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_##K85, KC_##K86, KC_##K87, }, \ -{ KC_##K90, KC_##K91, KC_NO, KC_##K93, KC_##K94, KC_##K95, KC_NO, KC_##K97, }, \ -{ KC_##KA0, KC_##KA1, KC_##KA2, KC_##KA3, KC_##KA4, KC_##KA5, KC_##KA6, KC_##KA7, } \ + { 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 }, \ + { K50, K51, K52, K53, K54, K55, K56, K57 }, \ + { K60, K61, K62, K63, K64, K65, K66, K67 }, \ + { K70, K71, K72, K73, K74, K75, K76, K77 }, \ + { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, K85, K86, K87 }, \ + { K90, K91, KC_NO, K93, K94, K95, KC_NO, K97 }, \ + { KA0, KA1, KA2, KA3, KA4, KA5, KA6, KA7 } \ } - -#endif \ No newline at end of file -- cgit v1.2.3 From 6b1009b7a876db1f0cc5674cfa64739139ea4098 Mon Sep 17 00:00:00 2001 From: Nikolaus Wittenstein Date: Tue, 22 Jan 2019 18:17:41 -0500 Subject: [Keyboard] Add DataHand keyboard support (#4847) --- keyboards/handwired/datahand/config.h | 87 ++++++ keyboards/handwired/datahand/datahand.h | 133 +++++++++ .../handwired/datahand/keymaps/default/keymap.c | 313 +++++++++++++++++++++ keyboards/handwired/datahand/matrix.c | 125 ++++++++ keyboards/handwired/datahand/readme.md | 15 + keyboards/handwired/datahand/rules.mk | 59 ++++ 6 files changed, 732 insertions(+) create mode 100644 keyboards/handwired/datahand/config.h create mode 100644 keyboards/handwired/datahand/datahand.h create mode 100644 keyboards/handwired/datahand/keymaps/default/keymap.c create mode 100644 keyboards/handwired/datahand/matrix.c create mode 100644 keyboards/handwired/datahand/readme.md create mode 100644 keyboards/handwired/datahand/rules.mk (limited to 'keyboards/handwired') diff --git a/keyboards/handwired/datahand/config.h b/keyboards/handwired/datahand/config.h new file mode 100644 index 0000000000..1ba8479f0a --- /dev/null +++ b/keyboards/handwired/datahand/config.h @@ -0,0 +1,87 @@ +/* Copyright 2017-2019 Nikolaus Wittenstein + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH + * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, + * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM + * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR + * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR + * PERFORMANCE OF THIS SOFTWARE. + */ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +/* Taken from the DataHand PS/2-USB adaptor. */ +#define VENDOR_ID 0x13BA +#define PRODUCT_ID 0x0017 +#define DEVICE_VER 0x0001 +#define MANUFACTURER DataHand +#define PRODUCT DataHand +#define DESCRIPTION DataHand Teensy++ 2.0 conversion + +/* key matrix size */ +#define MATRIX_ROWS 13 +#define MATRIX_COLS 4 + +#define DIODE_DIRECTION CUSTOM_MATRIX + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCING_DELAY 0 + +/* 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 + +/* + * Force NKRO + * + * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved + * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the + * makefile for this to work.) + * + * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N) + * until the next keyboard reset. + * + * NKRO may prevent your keystrokes from being detected in the BIOS, but it is + * fully operational during normal computer usage. + * + * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N) + * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by + * bootmagic, NKRO mode will always be enabled until it is toggled again during a + * power-up. + */ +#define FORCE_NKRO + +/* + * Magic Key Options + * + * Magic keys are hotkey commands that allow control over firmware functions of + * the keyboard. They are best used in combination with the HID Listen program, + * found here: https://www.pjrc.com/teensy/hid_listen.html + * + * The options below allow the magic key functionality to be changed. This is + * useful if your keyboard/keypad is missing keys and you want magic key support. + */ + +/* key combination for magic key command */ +#define IS_COMMAND() ( \ + keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \ +) + +/* + * Command/Windows key option + * + * If you define this, the thumb enter key becomes the Command/Windows key. There's still an enter key on the right + * ring finger, so this key is much better utilized as the otherwise nonexistent Command key. I think some newer + * DataHands let you remap right ring east as Command, but having it on the thumb is nicer. Comment out this define + * to use the original layout. + */ +#define DATAHAND_THUMB_RETURN_COMMAND diff --git a/keyboards/handwired/datahand/datahand.h b/keyboards/handwired/datahand/datahand.h new file mode 100644 index 0000000000..cb9a4d3e3b --- /dev/null +++ b/keyboards/handwired/datahand/datahand.h @@ -0,0 +1,133 @@ +/* Copyright 2017-2019 Nikolaus Wittenstein + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH + * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, + * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM + * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR + * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR + * PERFORMANCE OF THIS SOFTWARE. + */ + +#pragma once + +#include "quantum.h" + +/* This a shortcut to help you visually see your layout. + * The first section contains all of the arguements; the second converts the arguments into a two-dimensional array. + */ + +/* Each code is three letters + * l or r - left or right hand + * p, r, m, i, t - pinky, ring finger, middle finger, index finger, thumb + * fingers: n, s, e, w, c - north, south, east, west, and center (manual calls this "well" but we already have "west") + * thumb: p, n, c, l, u, k - pad, nail, center, lock (harder center), up, knuckle + */ +#define LAYOUT( \ + lpn, lrn, lmn, lin, rin, rmn, rrn, rpn, \ +lpw, lpc, lpe, lrw, lrc, lre, lmw, lmc, lme, liw, lic, lie, riw, ric, rie, rmw, rmc, rme, rrw, rrc, rre, rpw, rpc, rpe, \ + lps, lrs, lms, lis, ris, rms, rrs, rps, \ + ltp, ltn, rtn, rtp, \ + ltc, rtc, \ + ltl, rtl, \ + ltu, ltk, rtk, rtu) \ +{ \ + {riw, rin, lpw, lpn},\ + {ric, rie, lpc, lpe},\ + {ris, rms, lps, lrs},\ + {rmw, rmn, lrw, lrn},\ + {rmc, rme, lrc, lre},\ + {rrw, rrn, lmw, lmn},\ + {rrc, rre, lmc, lme},\ + {rrs, rps, lms, lis},\ + {rpw, rpn, liw, lin},\ + {rpc, rpe, lic, lie},\ + {rtk, rtn, ltk, ltn},\ + {rtc, rtl, ltc, ltl},\ + {rtp, rtu, ltp, ltu},\ +} + +/* Mode LEDs are active-low on Port B on the Teensy. */ +#define LED_MODE_PORT PORTB +#define LED_TENKEY (1<<3) +#define LED_FN (1<<4) +#define LED_NORMAL (1<<5) +#define LED_NAS (1<<6) + +/* Lock LEDs are active-low on Port F on the Teensy. */ +#define LED_LOCK_PORT PORTF +#define LED_CAPS_LOCK (1<<4) +#define LED_MOUSE_LOCK (1<<5) +#define LED_NUM_LOCK (1<<6) +#define LED_SCROLL_LOCK (1<<7) + + +/* Appendix: + * Table based on https://geekhack.org/index.php?topic=12212.msg2059319#msg2059319 + * Some pin assignments (e.g. for PS/2 I/O) have been fixed. + * + * Teensy Datahand 8051 pin pin 8051 Datahand Teensy + * ------ -------- ---- --- --- ---- -------- ------ + * GND Mtrx send A P1.0 1 40 VCC VCC VCC + * PB7 Mtrx send B P1.1 2 39 P0.0 LED RH NAS PB6 + * PD0 Mtrx send C P1.2 3 38 P0.1 LED RH NORM PB5 + * PD1 Mtrx send D P1.3 4 37 P0.2 LED RH FCTN PB4 + * PD2 RH rcv 0 P1.4 5 36 P0.3 LED RH 10K PB3 + * PD3 RH rcv 1 P1.5 6 35 P0.4 LED RH unused PB2 + * PD4 LH rcv 0 P1.6 7 34 P0.5 LED RH unused PE1 + * PD5 LH rcv 1 P1.7 8 33 P0.6 LED RH unused PE0 + * PD6 Reset button RST 9 32 P0.7 ? PE7 + * PD7 ? P3.0 10 31 VPP - PE6 + * PE0 ? P3.1 11 30 ALE - GND + * PE1 kbd data P3.2 12 29 PSEN - AREF + * PC0 ? P3.3 13 28 P2.7 ? PF0 + * PC1 kbd clk P3.4 14 27 P2.6 ? PF1 + * PC2 ? P3.5 15 26 P2.5 ? PF2 + * PC3 RAM P3.6 16 25 P2.4 ? PF3 + * PC4 RAM P3.7 17 24 P2.3 LED D15 LH (CAPLK) PF4 + * PC5 XTAL2 XTAL2 18 23 P2.2 LED D13 LH (MSELK) PF5 + * PC6 XTAL1 XTAL1 19 22 P2.1 LED D6 LH (NUMLK) PF6 + * PC7 GND GND 20 21 P2.0 LED D14 LH (SCRLK) PF7 + * + * JP3 Pinout + * 2 - keyboard data + * 3 - keyboard clock + * + * In order to get the Teensy to work, we need to move pin 1 to a different pin. This is + * because on the Teensy pin 1 is ground, but we need to write to pin 1 in order to read + * the keyboard matrix. An ideal pin to move it to is VPP (pin 31), because this pin tells + * the 8051 whether it should read from external or internal memory. The Teensy doesn't + * care about that. + * + * The easiest way to reassign the pin is to use standoffs. You can check out this thread: + * https://geekhack.org/index.php?topic=12212.msg235382#msg235382 for a picture of what + * this looks like. Note that in the picture the pin has been reassigned to pin 12. We + * don't want to do that because we're going to use that pin to send data over PS/2. + * + * We could if we wanted also reassign the PS/2 pins to Teensy hardware UART pins, but + * that's more work. Instead we'll just bit-bang PS/2 because it's an old, slow protocol + * (and because there's already a bit-banged PS/2 host implementation in QMK - we just + * need to add the device side). + * + * So overall, we want the following inputs and outputs: + * Outputs: + * Matrix: + * PB7 + * PD0 + * PD1 + * PE6 (moved from pin1, GND) + * LEDs: + * PB3-6 + * PF4-7 + * Inputs: + * Matrix: + * PD2-5 + * I/Os (start up as inputs): + * PS/2: + * PC1 + * PE1 + */ diff --git a/keyboards/handwired/datahand/keymaps/default/keymap.c b/keyboards/handwired/datahand/keymaps/default/keymap.c new file mode 100644 index 0000000000..8f44535594 --- /dev/null +++ b/keyboards/handwired/datahand/keymaps/default/keymap.c @@ -0,0 +1,313 @@ +/* Copyright 2017-2019 Nikolaus Wittenstein + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH + * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, + * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM + * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR + * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR + * PERFORMANCE OF THIS SOFTWARE. + */ + +#include QMK_KEYBOARD_H + +#include + +/* Datahand features not supported: + * * All online reprogramming (user settings using the reset button). + * * Program Selection features. + * * Macros. + * * Direct substitutions. + * * L/R Modf. + * * Mouse Click Lock (Function Direct Access + Mouse Button key). + * * Different mouse movement speeds with the two pointer fingers, and using both pointer fingers to move even faster. + * + * As far as I know, everything else works. + */ + +enum layer { + NORMAL, +#ifdef DATAHAND_THUMB_RETURN_COMMAND + NORMAL_THUMB_RETURN_COMMAND, +#endif + FUNCTION_MOUSE, + FUNCTION_ARROWS, + NAS, + NAS_NUMLOCK, + NAS_TENKEY, + NAS_TENKEY_NUMLOCK, + + NUM_LAYERS +}; + +enum custom_keycodes { + N = SAFE_RANGE, /* Normal */ + NS, /* NAS */ + NSL, /* NAS Lock */ + NLK, /* Numlock */ + FN, /* Function mode - needs to be able to switch to mouse or arrow layer */ + TK0, /* Ten-key off button */ + TK1, /* Ten-key on button */ + AR, /* FN arrow mode */ + MS, /* FN mouse mode */ + DZ, /* Double zero button */ +}; + +static bool mouse_enabled = true; +static bool tenkey_enabled = false; +static bool numlock_enabled = false; +static bool nas_locked = false; + +/* Declared weak so that it can easily be overridden. */ +__attribute__((weak)) const uint16_t PROGMEM keymaps[NUM_LAYERS][MATRIX_ROWS][MATRIX_COLS] = { +[NORMAL] = LAYOUT( + KC_Q, KC_W, KC_E, KC_R, KC_U, KC_I, KC_O, KC_P, +KC_DEL, KC_A, KC_LBRC, KC_ESC, KC_S, KC_B, KC_GRV, KC_D, KC_T, KC_DQT, KC_F, KC_G, KC_H, KC_J, KC_QUOT, KC_Y, KC_K, KC_COLN, KC_N, KC_L, KC_ENT, KC_RBRC, KC_SCLN, KC_BSLS, + KC_Z, KC_X, KC_C, KC_V, KC_M, KC_COMM, KC_DOT, KC_SLSH, + KC_ENT, KC_TAB, KC_BSPC, KC_SPC, + KC_LSFT, NS, + KC_CAPS, NSL, + N, KC_LCTL, KC_LALT, FN), + +#ifdef DATAHAND_THUMB_RETURN_COMMAND +[NORMAL_THUMB_RETURN_COMMAND] = LAYOUT( + _______, _______, _______, _______, _______, _______, _______, _______, +_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, + KC_LCMD, _______, _______, _______, + _______, _______, + _______, _______, + _______, _______, _______, _______), +#endif + +[FUNCTION_MOUSE] = LAYOUT( + KC_F2, KC_F4, KC_F6, KC_MS_U, KC_MS_U, KC_F8, KC_F10, KC_PGUP, +_______, KC_NO, KC_SLCK, _______, KC_BTN3, NLK, KC_BTN1, MS, KC_BTN2, KC_MS_L, KC_BTN1, KC_MS_R, KC_MS_L, KC_BTN2, KC_MS_R, KC_END, AR, KC_LSFT, KC_INS, KC_9, KC_ENT, KC_F11, KC_0, KC_F12, + KC_F1, KC_F3, KC_F5, KC_MS_D, KC_MS_D, KC_F7, KC_F9, KC_PGDN, + _______, _______, _______, _______, + _______, _______, + _______, _______, + _______, _______, _______, _______), +[FUNCTION_ARROWS] = LAYOUT( + _______, _______, _______, KC_UP, KC_UP, _______, _______, _______, +_______, _______, _______, _______, KC_LCTL, _______, _______, _______, _______, KC_LEFT, KC_HOME, KC_RGHT, KC_LEFT, KC_HOME, KC_RGHT, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, KC_DOWN, KC_DOWN, _______, _______, _______, + _______, _______, _______, _______, + _______, _______, + _______, _______, + _______, _______, _______, _______), +[NAS] = LAYOUT( + KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, +_______, KC_1, KC_TILD, _______, KC_2, NLK, KC_LABK, KC_3, KC_RABK, KC_SLSH, KC_4, KC_5, KC_6, KC_7, KC_UNDS, KC_CIRC, KC_8, KC_ENT, KC_SCLN, KC_9, KC_BSLS, TK0, KC_0, TK1, + KC_EQL, KC_X, KC_PERC, KC_MINS, KC_PLUS, KC_DOT, KC_SLSH, KC_QUES, + _______, _______, _______, _______, + _______, _______, + _______, _______, + _______, _______, _______, _______), +[NAS_NUMLOCK] = LAYOUT( + _______, _______, _______, _______, _______, KC_PAST, _______, _______, +_______, KC_KP_1, _______, _______, KC_KP_2, _______, _______, KC_KP_3, _______, KC_PSLS, KC_KP_4, KC_KP_5, KC_KP_6, KC_KP_7, _______, _______, KC_KP_8, _______, _______, KC_KP_9, KC_PENT, _______, KC_KP_0, _______, + KC_PEQL, _______, _______, KC_PMNS, KC_PPLS, _______, KC_PDOT, _______, + _______, _______, _______, _______, + _______, _______, + _______, _______, + _______, _______, _______, _______), +[NAS_TENKEY] = LAYOUT( + _______, _______, _______, KC_UP, KC_7, KC_8, KC_9, KC_ASTR, +_______, KC_QUOT, _______, _______, KC_DLR, _______, _______, KC_AMPR, _______, KC_LEFT, KC_HOME, KC_RGHT, KC_0, KC_4, DZ, KC_PLUS, KC_5, KC_MINS, KC_EQL, KC_6, KC_ENT, _______, KC_DOT, _______, + KC_LPRN, KC_RPRN, _______, KC_DOWN, KC_1, KC_2, KC_3, KC_SLSH, + _______, _______, _______, _______, + _______, _______, + _______, _______, + _______, _______, _______, _______), +[NAS_TENKEY_NUMLOCK] = LAYOUT( + _______, _______, _______, _______, KC_KP_7, KC_KP_8, KC_KP_9, KC_PAST, +_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_KP_0, KC_KP_4, _______, KC_PPLS, KC_KP_5, KC_PMNS, KC_PEQL, KC_KP_6, KC_PENT, _______, KC_PDOT, _______, + _______, _______, _______, _______, KC_KP_1, KC_KP_2, KC_KP_3, KC_PSLS, + _______, _______, _______, _______, + _______, _______, + _______, _______, + _______, _______, _______, _______), +}; + +static void lock_led_set(bool on, uint8_t led) { + if (on) { + LED_LOCK_PORT &= ~led; + } else { + LED_LOCK_PORT |= led; + } +} + +static void mode_led_set(uint8_t led) { + static const uint8_t ALL_MODE_LEDS = LED_FN | LED_NORMAL | LED_NAS | LED_TENKEY; + LED_MODE_PORT |= ALL_MODE_LEDS; + LED_MODE_PORT &= ~led; +} + +static void layer_set(bool on, uint8_t layer) { + if (on) { + layer_on(layer); + } else { + layer_off(layer); + } + + if (layer_state_is(NAS) || layer_state_is(NAS_NUMLOCK) || layer_state_is(NAS_TENKEY) || layer_state_is(NAS_TENKEY_NUMLOCK)) { + if (tenkey_enabled) { + mode_led_set(LED_NAS | LED_TENKEY); + } else { + mode_led_set(LED_NAS); + } + } else if (layer_state_is(FUNCTION_MOUSE) || layer_state_is(FUNCTION_ARROWS)) { + mode_led_set(LED_FN); + } else if (layer_state_is(NORMAL)) { + mode_led_set(LED_NORMAL); + } +} + +static void set_normal(void) { + layer_move(NORMAL); + +#ifdef DATAHAND_THUMB_RETURN_COMMAND + layer_set(true, NORMAL_THUMB_RETURN_COMMAND); +#endif + + /* Then call layer_set to update LEDs. */ + layer_set(true, NORMAL); +} + +static void set_nas(bool on) { + /* Always turn on the base NAS layer so other layers can fall through. */ + layer_set(on, NAS); + + layer_set(on && numlock_enabled, NAS_NUMLOCK); + layer_set(on && tenkey_enabled, NAS_TENKEY); + layer_set(on && tenkey_enabled && numlock_enabled, NAS_TENKEY_NUMLOCK); +} + +static void set_tenkey(bool on) { + tenkey_enabled = on; + + /* We have to be on the NAS layer in order to be able to toggle TK. + * Re-toggle it on so that we move to the right layer (and set the right LED). + */ + set_nas(true); +} + +static void toggle_numlock(void) { + numlock_enabled = !numlock_enabled; + lock_led_set(numlock_enabled, LED_NUM_LOCK); + + if (layer_state_is(NAS)) { + /* If we're already in NAS, re-set it so that we activate the numlock layer. */ + set_nas(true); + } +} + +static void set_function(void) { + /* Make sure to turn off NAS if we're entering function */ + set_nas(false); + + /* Always turn on the mouse layer so the arrow layer can fall through. */ + layer_set(true, FUNCTION_MOUSE); + layer_set(!mouse_enabled, FUNCTION_ARROWS); +} + +static void set_mouse_enabled(bool on) { + mouse_enabled = on; + + /* Re-run set_function to set our layers correctly. */ + set_function(); +} + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + bool pressed = record->event.pressed; + + switch(keycode) { + case N: + if (pressed) { + set_normal(); + } + break; + + case NS: + if (pressed) { + nas_locked = false; + } + set_nas(pressed); + break; + + case NSL: + if (pressed) { + nas_locked = true; + set_nas(true); + } + break; + + case NLK: + if (pressed) { + toggle_numlock(); + SEND_STRING(SS_DOWN(X_NUMLOCK)); + } else { + SEND_STRING(SS_UP(X_NUMLOCK)); + } + break; + + case FN: + if (pressed) { + set_function(); + } + break; + + case TK0: + if (pressed) { + set_tenkey(false); + } + break; + + case TK1: + if (pressed) { + set_tenkey(true); + } + break; + + case MS: + if (pressed) { + set_mouse_enabled(true); + } + break; + + case AR: + if (pressed) { + set_mouse_enabled(false); + } + break; + + case DZ: + if (pressed) { + SEND_STRING(SS_TAP(X_KP_0) SS_TAP(X_KP_0)); + } + break; + } + + return true; +}; + +void matrix_init_user(void) { +#ifdef DATAHAND_THUMB_RETURN_COMMAND + set_normal(); +#endif +} + +void matrix_scan_user(void) { + +} + +void led_set_user(uint8_t usb_led) { + lock_led_set(usb_led & (1< + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH + * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, + * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM + * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR + * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR + * PERFORMANCE OF THIS SOFTWARE. + */ + +#include "datahand.h" + +#include "matrix.h" +#include "action.h" + +#include +#include +#include + +static matrix_row_t matrix[MATRIX_ROWS]; + +static matrix_row_t read_cols(void); +static void select_row(uint8_t row); + +void matrix_init(void) { + /* See datahand.h for more detail on pins. */ + + /* 7 - matrix scan; 6-3 - mode LEDs */ + DDRB = 0b11111000; + + /* 1-0 - matrix scan */ + DDRD = 0b00000011; + + /* 6 - matrix scan */ + DDRE = 0b01000000; + + /* 7-4 - lock LEDs */ + DDRF = 0b11110000; + + /* Turn off the non-Normal LEDs (they're active low). */ + PORTB |= LED_TENKEY | LED_FN | LED_NAS; + + /* Turn off the lock LEDs. */ + PORTF |= LED_CAPS_LOCK | LED_NUM_LOCK | LED_SCROLL_LOCK | LED_MOUSE_LOCK; + + matrix_init_user(); +} + +uint8_t matrix_scan(void) { + for (uint8_t row = 0; row < MATRIX_ROWS; row++) { + select_row(row); + /* The default hardware works down to at least 100us, but I have a replacement + * photodiode that responds a little more slowly. Cranking it up to 1000us fixes + * shadowing issues. + */ + _delay_us(1000); + matrix[row] = read_cols(); + } + + matrix_scan_user(); + + return 1; +} + +matrix_row_t matrix_get_row(uint8_t row) { + return matrix[row]; +} + +void matrix_print(void) { + print("\nr/c 01234567\n"); + + for (uint8_t row = 0; row < MATRIX_ROWS; row++) { + phex(row); + print(": "); + print_bin_reverse8(matrix_get_row(row)); + print("\n"); + } +} + +bool process_record_kb(uint16_t keycode, keyrecord_t *record) { + return process_record_user(keycode, record); +} + +static void select_row(uint8_t row) { + /* Original 8051: P1 bits 0-3 (pins 1-4) + * Teensy++: PE0, PB7, PD0, PD1 + */ + + if (row & (1<<0)) { + PORTE |= (1<<6); + } else { + PORTE &= ~(1<<6); + } + + if (row & (1<<1)) { + PORTB |= (1<<7); + } else { + PORTB &= ~(1<<7); + } + + if (row & (1<<2)) { + PORTD |= (1<<0); + } else { + PORTD &= ~(1<<0); + } + + if (row & (1<<3)) { + PORTD |= (1<<1); + } else { + PORTD &= ~(1<<1); + } +} + +static matrix_row_t read_cols(void) { + /* Original 8051: P1 bits 4-7 (pins 5-8) + * Teensy++: PD bits 2-5 + */ + + return (PIND & 0b00111100) >> 2; +} diff --git a/keyboards/handwired/datahand/readme.md b/keyboards/handwired/datahand/readme.md new file mode 100644 index 0000000000..923cebb00e --- /dev/null +++ b/keyboards/handwired/datahand/readme.md @@ -0,0 +1,15 @@ +# DataHand + +A keyboard designed to prevent RSI. See [Wikipedia](https://en.wikipedia.org/wiki/DataHand) and [this website](http://octopup.org/computer/datahand) for more info. + +To use this firmware, you have to replace the stock microcontroller with a Teensy++ 2.0. This is relatively easy and also reversible. See the notes at the bottom of datahand.h for more info. + +Keyboard Maintainer: [Nikolaus Wittenstein](https://github.com/adzenith) +Hardware Supported: DataHand Personal or Pro II +Hardware Availability: No longer in production + +Make example for this keyboard (after setting up your build environment): + + make handwired/datahand: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). diff --git a/keyboards/handwired/datahand/rules.mk b/keyboards/handwired/datahand/rules.mk new file mode 100644 index 0000000000..59f14e17a4 --- /dev/null +++ b/keyboards/handwired/datahand/rules.mk @@ -0,0 +1,59 @@ +# Project-specific includes +SRC = matrix.c + +# MCU name +MCU = at90usb1286 + +# Processor frequency. +# This will define a symbol, F_CPU, in all source code files equal to the +# processor frequency in Hz. You can then use this symbol in your source code to +# calculate timings. Do NOT tack on a 'UL' at the end, this will be done +# automatically to create a 32-bit value in your source code. +# +# This will be an integer division of F_USB below, as it is sourced by +# F_USB after it has run through any CPU prescalers. Note that this value +# does not *change* the processor frequency - it should merely be updated to +# reflect the processor speed set externally so that the code can use accurate +# software delays. +F_CPU = 16000000 + +# +# LUFA specific +# +# Target architecture (see library "Board Types" documentation). +ARCH = AVR8 + +# Input clock frequency. +# This will define a symbol, F_USB, in all source code files equal to the +# input clock frequency (before any prescaling is performed) in Hz. This value may +# differ from F_CPU if prescaling is used on the latter, and is required as the +# raw input clock is fed directly to the PLL sections of the AVR for high speed +# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL' +# at the end, this will be done automatically to create a 32-bit value in your +# source code. +# +# If no clock division is performed on the input clock inside the AVR (via the +# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU. +F_USB = $(F_CPU) + +# Interrupt driven control endpoint task(+60) +OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT + +BOOTLOADER = halfkay + +# Build Options +BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) +MOUSEKEY_ENABLE = yes # Mouse keys(+4700) +EXTRAKEY_ENABLE = yes # Audio control and System control(+450) +CONSOLE_ENABLE = yes # Console for debug(+400) +COMMAND_ENABLE = yes # Commands for debug and configuration +NKRO_ENABLE = yes # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default +MIDI_ENABLE = no # MIDI controls +UNICODE_ENABLE = no # Unicode +BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID +AUDIO_ENABLE = no # Audio output on port C6 +CUSTOM_MATRIX = yes # We definitely have a nonstandard matrix + +# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE +SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend -- cgit v1.2.3 From b5feae07c27eb8fcac07d165091cce186e253be8 Mon Sep 17 00:00:00 2001 From: fauxpark Date: Fri, 25 Jan 2019 02:38:44 +1100 Subject: Remove unused fn_actions[] and action_function() in default keymaps (#4829) --- keyboards/handwired/traveller/keymaps/default/keymap.c | 3 --- 1 file changed, 3 deletions(-) (limited to 'keyboards/handwired') diff --git a/keyboards/handwired/traveller/keymaps/default/keymap.c b/keyboards/handwired/traveller/keymaps/default/keymap.c index 13d889ab8b..f7f08268f0 100644 --- a/keyboards/handwired/traveller/keymaps/default/keymap.c +++ b/keyboards/handwired/traveller/keymaps/default/keymap.c @@ -157,11 +157,8 @@ Right hand nav keys work pretty well chorded with the Right hand Hi Key const uint16_t PROGMEM fn_actions[] = { [_QW] = ACTION_LAYER_ON(_QW,ON_RELEASE), // return to QWERTY layer [_LW] = ACTION_LAYER_TAP_TOGGLE(_LW), // Turn on LW when holding, or tap 3 times to switch - [_HI] = ACTION_LAYER_TAP_TOGGLE(_HI), // Turn on LW when holding, or tap 3 times to switch [_NAV] = ACTION_LAYER_TOGGLE(_NAV), [_FKEYS] = ACTION_LAYER_TOGGLE(_FKEYS), - [_LWOUT] = ACTION_LAYER_OFF(_LW,ON_RELEASE), - [_HIOUT] = ACTION_LAYER_OFF(_HI,ON_RELEASE), // Functions [RGBLED_TOGGLE] = ACTION_FUNCTION(RGBLED_TOGGLE), -- cgit v1.2.3 From e611433cb5a479d84b37088e64da01b556f314fa Mon Sep 17 00:00:00 2001 From: Olivier Poitrey Date: Fri, 25 Jan 2019 12:57:10 -0800 Subject: rs: code friendly keymap for preonic, iris and my preonic clone (#4303) I worked on those keymap to simplify the use of 60% keyboards for coders. Instead of trying to mimic planck, this keymap remove raise/lower layer complexity and keep some important sign keys for coder in the upper right side pretty much the same way as they are on a full keyboard. A karabiner configuration is also provided to mimic most of the keymap features on the macbook internal keyboard for when you are forced to use it. --- keyboards/handwired/rs60/README.md | 27 +++ keyboards/handwired/rs60/config.h | 47 +++++ keyboards/handwired/rs60/keymaps/default/keymap.c | 207 +++++++++++++++++++++ keyboards/handwired/rs60/keymaps/default/readme.md | 1 + keyboards/handwired/rs60/rs60.c | 18 ++ keyboards/handwired/rs60/rs60.h | 36 ++++ keyboards/handwired/rs60/rules.mk | 61 ++++++ 7 files changed, 397 insertions(+) create mode 100644 keyboards/handwired/rs60/README.md create mode 100644 keyboards/handwired/rs60/config.h create mode 100644 keyboards/handwired/rs60/keymaps/default/keymap.c create mode 100644 keyboards/handwired/rs60/keymaps/default/readme.md create mode 100644 keyboards/handwired/rs60/rs60.c create mode 100644 keyboards/handwired/rs60/rs60.h create mode 100644 keyboards/handwired/rs60/rules.mk (limited to 'keyboards/handwired') diff --git a/keyboards/handwired/rs60/README.md b/keyboards/handwired/rs60/README.md new file mode 100644 index 0000000000..07c967e276 --- /dev/null +++ b/keyboards/handwired/rs60/README.md @@ -0,0 +1,27 @@ +# rs60: Handwired Slim Preonic Clone + +I wanted a preonic layout but with a very low profile. As Jack is still working on the Preonic PCB for Kailh Choc switches, I figured I could try to handwire one myself. It's my first custom keyboard, so I had a lot to learn. + +First I designed the case in fusion 360. I wanted to build it using acrylic, constrained myself to standard acrylic sheet thickness. + +![](https://imgur.com/NscS7Rd.jpg) + +You can download the model [here](https://a360.co/2OqiKLm). + +To test my design I 3D printed the parts. + +![](https://imgur.com/MSF7zLS.jpg) + +The result was encouraging, so I decided to build a prototype out of the printed plates using Kailh Choc brown switches. I tried to make the handwiring job as flat as possible so it can fit in my design. + +![](https://i.imgur.com/67yZx0V.jpg) +![](https://i.imgur.com/ft72Cgj.jpg) + +I designed switch plate and the middle plates so that they would be glued together. The middle plate has inserts to attach the bottom plate using m8 screws. + +![](https://i.imgur.com/GstTohI.jpg) + +The end result is not too bad, but there is a few things I would do differently. Gluing 3D printed plates wasn't a good idea. The switch layer is so thin, that it bends when all the switches are slotted. As a result, the keyboard is not entirely flat. I will replace the bottom plate by a metal one so I get more weight and rigidity. + +Even with acrylic, I think I will have the same issue. I might switch to screws + bolts that go all the way through. + diff --git a/keyboards/handwired/rs60/config.h b/keyboards/handwired/rs60/config.h new file mode 100644 index 0000000000..371150a79a --- /dev/null +++ b/keyboards/handwired/rs60/config.h @@ -0,0 +1,47 @@ +/* +Copyright 2018 QMK Contributors + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ +#pragma once + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0xFEED +#define PRODUCT_ID 0x4260 +#define DEVICE_VER 0x0001 +#define MANUFACTURER rs +#define PRODUCT rs60 +#define DESCRIPTION Preonic clone based on pro micro + +/* key matrix size */ +#define MATRIX_ROWS 5 +#define MATRIX_COLS 12 + +/* key matrix pins */ +#define MATRIX_ROW_PINS { B5, B6, B4, B2, E6 } +#define MATRIX_COL_PINS { C6, D4, D0, D1, D2, D3, F4, F5, F6, F7, B1, B3} +#define UNUSED_PINS { } + +#define QMK_ESC_OUTPUT C6 +#define QMK_ESC_INPUT B4 +#define QMK_LED B0 +// #define QMK_SPEAKER C6 + +/* COL2ROW or ROW2COL */ +#define DIODE_DIRECTION COL2ROW + +/* key combination for command */ +#define IS_COMMAND() ( \ + false \ +) diff --git a/keyboards/handwired/rs60/keymaps/default/keymap.c b/keyboards/handwired/rs60/keymaps/default/keymap.c new file mode 100644 index 0000000000..9fea769d05 --- /dev/null +++ b/keyboards/handwired/rs60/keymaps/default/keymap.c @@ -0,0 +1,207 @@ +/* Copyright 2015-2017 Jack Humbert + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +enum layers { + _QWERTY, + _COLEMAK, + _DVORAK, + _LOWER, + _RAISE, + _ADJUST +}; + +enum keycodes { + QWERTY = SAFE_RANGE, + COLEMAK, + DVORAK, + LOWER, + RAISE, +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + +/* Qwerty + * ,-----------------------------------------------------------------------------------. + * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Tab | Q | W | E | R | T | Y | U | I | O | P | Del | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | Esc | A | S | D | F | G | H | J | K | L | ; | " | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | Shift| Z | X | C | V | B | N | M | , | . | / |Enter | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Brite| Ctrl | Alt | GUI |Lower | Space |Raise | Left | Down | Up |Right | + * `-----------------------------------------------------------------------------------' + */ +[_QWERTY] = LAYOUT( \ + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, 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_DEL, \ + KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, \ + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT, \ + _______, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT \ +), + +/* Colemak + * ,-----------------------------------------------------------------------------------. + * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Tab | Q | W | F | P | G | J | L | U | Y | ; | Del | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | Esc | A | R | S | T | D | H | N | E | I | O | " | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | Shift| Z | X | C | V | B | K | M | , | . | / |Enter | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Brite| Ctrl | Alt | GUI |Lower | Space |Raise | Left | Down | Up |Right | + * `-----------------------------------------------------------------------------------' + */ +[_COLEMAK] = LAYOUT( \ + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, \ + KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_DEL, \ + KC_ESC, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT, \ + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT, \ + _______, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT \ +), + +/* Dvorak + * ,-----------------------------------------------------------------------------------. + * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Tab | " | , | . | P | Y | F | G | C | R | L | Del | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | Esc | A | O | E | U | I | D | H | T | N | S | / | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | Shift| ; | Q | J | K | X | B | M | W | V | Z |Enter | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Brite| Ctrl | Alt | GUI |Lower | Space |Raise | Left | Down | Up |Right | + * `-----------------------------------------------------------------------------------' + */ +[_DVORAK] = LAYOUT( \ + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, \ + KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_DEL, \ + KC_ESC, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_SLSH, \ + KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_ENT, \ + _______, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT \ +), + +/* Lower + * ,-----------------------------------------------------------------------------------. + * | ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | Bksp | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | Del | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | Del | F1 | F2 | F3 | F4 | F5 | F6 | _ | + | { | } | | | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | | F7 | F8 | F9 | F10 | F11 | F12 |ISO ~ |ISO | | | | | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | | | | | | | Next | Vol- | Vol+ | Play | + * `-----------------------------------------------------------------------------------' + */ +[_LOWER] = LAYOUT( \ + KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC, \ + KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_DEL, \ + KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE, \ + _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,S(KC_NUHS),S(KC_NUBS),KC_HOME, KC_END, _______, \ + _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY \ +), + +/* Raise + * ,-----------------------------------------------------------------------------------. + * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Del | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | Del | F1 | F2 | F3 | F4 | F5 | F6 | - | = | [ | ] | \ | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | | F7 | F8 | F9 | F10 | F11 | F12 |ISO # |ISO / | | | | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | | | | | | | Next | Vol- | Vol+ | Play | + * `-----------------------------------------------------------------------------------' + */ +[_RAISE] = LAYOUT( \ + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, \ + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL, \ + KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS, \ + _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_NUHS, KC_NUBS, KC_PGUP, KC_PGDN, _______, \ + _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY \ +), + +/* Adjust (Lower + Raise) + * ,-----------------------------------------------------------------------------------. + * | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | Reset| | | | | | | | | | Del | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | | | |Aud on|AudOff|AGnorm|AGswap|Qwerty|Colemk|Dvorak| | | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | |Voice-|Voice+|Mus on|MusOff|MidiOn|MidOff| | | | | | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | | | | | | | | | | | + * `-----------------------------------------------------------------------------------' + */ +[_ADJUST] = LAYOUT( \ + KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, \ + _______, RESET, DEBUG, _______, _______, _______, _______, TERM_ON, TERM_OFF,_______, _______, KC_DEL, \ + _______, _______, _______, _______, _______, AG_NORM, AG_SWAP, QWERTY, COLEMAK, DVORAK, _______, _______, \ + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \ + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \ +) +}; + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { + case QWERTY: + if (record->event.pressed) { + set_single_persistent_default_layer(_QWERTY); + } + return false; + break; + case COLEMAK: + if (record->event.pressed) { + set_single_persistent_default_layer(_COLEMAK); + } + return false; + break; + case DVORAK: + if (record->event.pressed) { + set_single_persistent_default_layer(_DVORAK); + } + return false; + break; + case LOWER: + if (record->event.pressed) { + layer_on(_LOWER); + update_tri_layer(_LOWER, _RAISE, _ADJUST); + } else { + layer_off(_LOWER); + update_tri_layer(_LOWER, _RAISE, _ADJUST); + } + return false; + break; + case RAISE: + if (record->event.pressed) { + layer_on(_RAISE); + update_tri_layer(_LOWER, _RAISE, _ADJUST); + } else { + layer_off(_RAISE); + update_tri_layer(_LOWER, _RAISE, _ADJUST); + } + return false; + break; + } + return true; +}; diff --git a/keyboards/handwired/rs60/keymaps/default/readme.md b/keyboards/handwired/rs60/keymaps/default/readme.md new file mode 100644 index 0000000000..e911968dd9 --- /dev/null +++ b/keyboards/handwired/rs60/keymaps/default/readme.md @@ -0,0 +1 @@ +# The default Preonic layout - largely based on the Planck's \ No newline at end of file diff --git a/keyboards/handwired/rs60/rs60.c b/keyboards/handwired/rs60/rs60.c new file mode 100644 index 0000000000..f748740cbe --- /dev/null +++ b/keyboards/handwired/rs60/rs60.c @@ -0,0 +1,18 @@ +/* +Copyright 2018 QMK Community + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#include "rs60.h" diff --git a/keyboards/handwired/rs60/rs60.h b/keyboards/handwired/rs60/rs60.h new file mode 100644 index 0000000000..f2113f05c3 --- /dev/null +++ b/keyboards/handwired/rs60/rs60.h @@ -0,0 +1,36 @@ +/* +Copyright 2018 QMK Community + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ +#pragma once + +#include "quantum.h" + +#define LAYOUT( \ + k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, \ + k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, \ + k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, \ + k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, \ + k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4a, k4b \ +) \ +{ \ + { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b }, \ + { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b }, \ + { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b }, \ + { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b }, \ + { k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4a, k4b } \ +} + +#define LAYOUT_ortho_5x12 LAYOUT diff --git a/keyboards/handwired/rs60/rules.mk b/keyboards/handwired/rs60/rules.mk new file mode 100644 index 0000000000..7b4ec69d0d --- /dev/null +++ b/keyboards/handwired/rs60/rules.mk @@ -0,0 +1,61 @@ +# MCU name +MCU = atmega32u4 + +# Processor frequency. +# This will define a symbol, F_CPU, in all source code files equal to the +# processor frequency in Hz. You can then use this symbol in your source code to +# calculate timings. Do NOT tack on a 'UL' at the end, this will be done +# automatically to create a 32-bit value in your source code. +# +# This will be an integer division of F_USB below, as it is sourced by +# F_USB after it has run through any CPU prescalers. Note that this value +# does not *change* the processor frequency - it should merely be updated to +# reflect the processor speed set externally so that the code can use accurate +# software delays. +F_CPU = 16000000 + +# +# LUFA specific +# +# Target architecture (see library "Board Types" documentation). +ARCH = AVR8 + +# Input clock frequency. +# This will define a symbol, F_USB, in all source code files equal to the +# input clock frequency (before any prescaling is performed) in Hz. This value may +# differ from F_CPU if prescaling is used on the latter, and is required as the +# raw input clock is fed directly to the PLL sections of the AVR for high speed +# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL' +# at the end, this will be done automatically to create a 32-bit value in your +# source code. +# +# If no clock division is performed on the input clock inside the AVR (via the +# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU. +F_USB = $(F_CPU) + +# Bootloader +BOOTLOADER = qmk-dfu + +# Interrupt driven control endpoint task(+60) +OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT + +LAYOUTS = ortho_5x12 + +# Boot Section Size in *bytes* +#OPT_DEFS += -DBOOTLOADER_SIZE=4096 + + +# Build Options +# comment out to disable the options. +# +BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) +MOUSEKEY_ENABLE = no # Mouse keys(+4700) +EXTRAKEY_ENABLE = no # Audio control and System control(+450) +CONSOLE_ENABLE = yes # Console for debug(+400) +COMMAND_ENABLE = no # Commands for debug and configuration +SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend +NKRO_ENABLE = no # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +BACKLIGHT_ENABLE = no # Custom backlighting code is used, so this should not be enabled +AUDIO_ENABLE = no # This can be enabled if a speaker is connected to the expansion port. Not compatible with RGBLIGHT below +RGBLIGHT_ENABLE = no # This can be enabled if a ws2812 strip is connected to the expansion port. + -- cgit v1.2.3 From 79b58937f41413f52ffc7b6af2149dca7a632b73 Mon Sep 17 00:00:00 2001 From: fauxpark Date: Sat, 26 Jan 2019 08:12:48 +1100 Subject: Add C(), A() and G() to match already existing S() (#4673) --- keyboards/handwired/promethium/keymaps/default/keymap.c | 1 - keyboards/handwired/promethium/keymaps/priyadi/keymap.c | 1 - keyboards/handwired/pteron/keymaps/FSund/keymap.c | 4 +--- 3 files changed, 1 insertion(+), 5 deletions(-) (limited to 'keyboards/handwired') diff --git a/keyboards/handwired/promethium/keymaps/default/keymap.c b/keyboards/handwired/promethium/keymaps/default/keymap.c index a1ca79f9a9..faae89f935 100644 --- a/keyboards/handwired/promethium/keymaps/default/keymap.c +++ b/keyboards/handwired/promethium/keymaps/default/keymap.c @@ -60,7 +60,6 @@ along with this program. If not, see . // Fillers to make layering clearer #define _______ KC_TRNS #define XXXXXXX KC_NO -#define G(x) LGUI(x) #define KC_WWWB KC_WWW_BACK #define KC_WWWF KC_WWW_FORWARD diff --git a/keyboards/handwired/promethium/keymaps/priyadi/keymap.c b/keyboards/handwired/promethium/keymaps/priyadi/keymap.c index a1ca79f9a9..faae89f935 100644 --- a/keyboards/handwired/promethium/keymaps/priyadi/keymap.c +++ b/keyboards/handwired/promethium/keymaps/priyadi/keymap.c @@ -60,7 +60,6 @@ along with this program. If not, see . // Fillers to make layering clearer #define _______ KC_TRNS #define XXXXXXX KC_NO -#define G(x) LGUI(x) #define KC_WWWB KC_WWW_BACK #define KC_WWWF KC_WWW_FORWARD diff --git a/keyboards/handwired/pteron/keymaps/FSund/keymap.c b/keyboards/handwired/pteron/keymaps/FSund/keymap.c index f34beae063..a52e842977 100644 --- a/keyboards/handwired/pteron/keymaps/FSund/keymap.c +++ b/keyboards/handwired/pteron/keymaps/FSund/keymap.c @@ -10,10 +10,8 @@ enum pteron_layers { #define LOWER MO(_LOWER) #define RAISE MO(_RAISE) -// use S() to produce shifted versions of keys -// #define S(kc) LSFT(kc) // defined by default - // alt gr +#undef G #define G(kc) RALT(kc) // custom keycodes -- cgit v1.2.3