Compare commits

...
96 Commits
Author SHA1 Message Date
즈눅 816f2f9cc2 Fix Kinetic speed condition (#12139) 2021-03-25 23:11:16 +11:00
ploopyco 666623d39a ADNS-5050 / Ploopy Nano / Ploopy Mini Trackballs (#11994)
* added adns5050 sensor code, as well as implementations for the Ploopy Mini and the Ploopy Nano

* fixed spurious scrolling issue

* recommended fixes for pr linting and cleanup
2021-03-25 23:10:55 +11:00
0eabb01e27 Minor improvements to BM68RGB (#12156)
* Minor improvements to BM68RGB

* Add grave esc and LTO support

* Move comments to end of line

* Document the use of qmk script for compiling and flashing

* Revert arrow key flags back to mod

* Update keyboards/bm68rgb/bm68rgb.c

Co-authored-by: Ryan <[email protected]>

* Update keyboards/bm68rgb/bm68rgb.c

Co-authored-by: Ryan <[email protected]>

* Remove grave escape

Co-authored-by: Ryan <[email protected]>

* Update tab spacing

Co-authored-by: Ryan <[email protected]>

* Reverted make default

Co-authored-by: Ryan <[email protected]>

* Reverted make flash

Co-authored-by: Ryan <[email protected]>

Co-authored-by: filterpaper <filterpaper@localhost>
Co-authored-by: Ryan <[email protected]>
2021-03-25 23:08:04 +11:00
Takeshi ISHII b664db3cf3 Removed unused RGBLED_TIMER_TOP and F_CPU macros from quantum/rgblight.[ch] (#12233) 2021-03-25 23:05:38 +11:00
Naoto Takai a5ecd4eb87 Make the size of MATRIX_ROW_PINS and MATRIX_ROW_PINS_RIGHT the same (#12203)
* Make the size of MATRIX_ROW_PINS and MATRIX_ROW_PINS_RIGHT the same

* Use NO_PIN instead of duplicate pin
2021-03-25 23:05:05 +11:00
f3f444c1df Add Nix Studio OXALYS80 Keyboard (#12118)
* Initial commit of OXALYS80 firmware

* Remove comments

* Add new return in info.json

* Fix pin output init for scroll lock indicator

* Update keyboards/nix_studio/oxalys80/config.h

Co-authored-by: Drashna Jaelre <[email protected]>

* Update keyboards/nix_studio/oxalys80/rules.mk

Co-authored-by: Drashna Jaelre <[email protected]>

* Update keyboards/nix_studio/oxalys80/oxalys80.c

Co-authored-by: Drashna Jaelre <[email protected]>

* Update keyboards/nix_studio/oxalys80/keymaps/default/keymap.c

Co-authored-by: Drashna Jaelre <[email protected]>

* Update keyboards/nix_studio/oxalys80/config.h

Co-authored-by: Drashna Jaelre <[email protected]>

* Update keyboards/nix_studio/oxalys80/config.h

Co-authored-by: Drashna Jaelre <[email protected]>

* Update keyboards/nix_studio/oxalys80/config.h

Co-authored-by: Drashna Jaelre <[email protected]>

* Delete keymaps config.h

* Update keyboards/nix_studio/oxalys80/config.h

Co-authored-by: Sendy Aditya Suryana <[email protected]>
Co-authored-by: Drashna Jaelre <[email protected]>
2021-03-25 23:04:02 +11:00
Takeshi ISHII 81c51ec51c [Keymap] Update keyboards/helix/pico/keymaps/mtei/keymap.c (#12188)
* update keyboards/helix/pico/keymaps/mtei/keymap.c

Stopped using the LAYOUT_kc macro. (this is response to #12160)

There is no change in the generated binary.

* small update pico/keymaps/mtei/keymap.c
2021-03-25 23:02:54 +11:00
Leon Anavi b5a12fa6d3 [Keymap] ANAVI Macro Pad 2 add git keymap (#12212)
This keymap for ANAVI Macro Pad 2 contains popular git commands
typed out and executed with a single key:

- left key: git commit -s
- right key: git push

Signed-off-by: Leon Anavi <[email protected]>
2021-03-25 23:01:45 +11:00
Albert Yandfilterpaper 29c82cfb33 Add RGB Matrix suspend wake functions to BM40 (#12246)
* Add suspend wake functions for RGB Matrix

* Add suspension RGB functions to Planck/rev6 and Preonic/rev3

* Add suspend wake to Mark 65

* Revert changes to planck and preonic

* Remove changes to The Mark65

Co-authored-by: filterpaper <filterpaper@localhost>
2021-03-25 23:01:03 +11:00
Matt WandMatt Weller 2cd684f8e0 add massdrop/alt/hlmtre keymap, add .exe to gitignore (#12191)
* add massdrop/alt/hlmtre keymap, add .exe to gitignore

* changes request in PR (license header and fix gitignore)

Co-authored-by: Matt Weller <[email protected]>
2021-03-25 22:55:01 +11:00
Blake c4d05010cb Add Daisy, a macropad with dual rotary encoders + update Scarlet readme.md (#12221)
* Daisy first commit buggy

* buggy still underglow crash

* Daisy V1

* ReadMe Updates
2021-03-25 22:53:30 +11:00
Albert Yandfilterpaper 6276f54752 Add suspend wake functions for The Mark:65's RGB Matrix (#12245)
* Add suspend wake functions for RGB Matrix

* Add USB suspend definition to config.h

Co-authored-by: filterpaper <filterpaper@localhost>
2021-03-25 22:52:53 +11:00
jakobkg 8e820cde13 Fix handling multiples of the same MIDI note (fixes bug brought up in issue #10199) (#11639)
* Fix handling multiples of the same MIDI note

* Extend MIDI note status to fix note releases
2021-03-25 22:51:57 +11:00
TerryMathews 572395ac20 TKC GodSpeed75: add RGB LED support (#12278)
* GodSpeed75: add RGB support

* GodSpeed75: minor updates

* GodSpeed75: minor updates

* GodSpeed75: restore chconf.h

* GodSpeed75: restore chconf.h

* GodSpeed75: restore chconf.h
2021-03-25 22:51:02 +11:00
peepeetee 95c74ae4ae add via support for bm68rgb (#12275)
* add via support for bm68rgb

* add newline to keymap.c
2021-03-25 22:50:17 +11:00
3fc710e0b1 Add XT65 keyboard (#11998)
* Add XT65 keyboard

* Create readme.md

* Updated readme.md and rules.mk

* Updated config.h and readme.md

* Update imgur link

* Update keyboards/kopibeng/xt65/rules.mk

Co-authored-by: Drashna Jaelre <[email protected]>

* Update keyboards/kopibeng/xt65/rules.mk

Co-authored-by: Drashna Jaelre <[email protected]>

* Update keyboards/kopibeng/xt65/config.h

Co-authored-by: Ryan <[email protected]>

* Update keyboards/kopibeng/xt65/readme.md

Co-authored-by: Ryan <[email protected]>

* Update keyboards/kopibeng/xt65/readme.md

Co-authored-by: Ryan <[email protected]>

* Update keyboards/kopibeng/xt65/rules.mk

Co-authored-by: Ryan <[email protected]>

* Update keyboards/kopibeng/xt65/rules.mk

Co-authored-by: Ryan <[email protected]>

Co-authored-by: Drashna Jaelre <[email protected]>
Co-authored-by: Ryan <[email protected]>
2021-03-25 22:49:37 +11:00
kb-elmo dd0a35273c added twelvekey (#12281)
* added twelvekey

* rename layout
2021-03-25 22:48:59 +11:00
Matteo Montemarani cf7404630e ISO Layouts fix (#12319) 2021-03-25 22:47:03 +11:00
André Silva ef872595ae update shell.nix (#12295) 2021-03-25 22:45:55 +11:00
Purdea AndreiandRyan eac9ee8d3f Improve upon the 'Caveats' section of the Layers and Mod-Tap documentation (#12306)
* Improve upon the 'Caveats' section of the Layers and Mod-Tap documentation

* Update docs/mod_tap.md

Co-authored-by: Ryan <[email protected]>

* Update docs/feature_layers.md

Co-authored-by: Ryan <[email protected]>

* Update docs/mod_tap.md

Co-authored-by: Ryan <[email protected]>

* Added a line saying that remote desktop problems may also be mitigated by defining TAP_CODE_DELAY

* Update docs/mod_tap.md

Co-authored-by: Ryan <[email protected]>

Co-authored-by: Ryan <[email protected]>
2021-03-25 22:44:28 +11:00
James Young 1d706bd77c handwired/bolek: correct key object order (#12356) 2021-03-25 22:38:52 +11:00
Zach White 3e60997edb Add a qmk format-json command that will format JSON files (#12372)
* Add a command to format json files

* change to work after rebase

* add test for qmk format-json

* add documentation for qmk format-json

* Update lib/python/qmk/cli/format/json.py
2021-03-25 22:38:10 +11:00
Wilba a74846a0db Added wilba.tech WT60-H2 (#12348)
* Added wilba.tech WT60-H2

* fix typo

* Fix error in keymap
2021-03-25 22:36:52 +11:00
Wilba 038d9118b6 Added wilba.tech WT65-G2 (#12360) 2021-03-25 22:36:24 +11:00
Wilba be771e5fd2 Added wilba.tech WT60-H3 (#12354)
* Added wilba.tech WT60-H2

* fix typo
2021-03-25 22:35:54 +11:00
Andrew-FahmyandRyan 1fbee7c316 (Re)Fixing K-type RGB lighting (#12084)
* initial rgb driver fix

* added underglow LEDs and fixed typo in RGB locations

* removed test code

* added my key maps

* updated rgb keymap to work with changes

* refactored my code to make it more maintainable and updated keymaps.

* added GPL licence

* Turned off matrix scan rate debug info

* added checks if RGB matrix is enabled to fix errors when building keymaps without RGB matrix enabled

* Apply suggestions from code review by fauxpark

Co-authored-by: Ryan <[email protected]>

* Renamed led driver file to be less ambiguous

* Renamed is31fl3733 driver files to is31fl3733-dual

Co-authored-by: Ryan <[email protected]>
2021-03-25 22:35:18 +11:00
Brandon ClaveriaandSwiftrax 8b39ae13c7 add equator (#12369)
Co-authored-by: Swiftrax <[email protected]>
2021-03-25 22:34:29 +11:00
Joel ChallisandRyan 1bb6d8de6f Fix USER_PRINT on avr/atsam (#12269)
* Fix USER_PRINT on avr/atsam

* Update tmk_core/common/arm_atsam/_print.h

Co-authored-by: Ryan <[email protected]>

Co-authored-by: Ryan <[email protected]>
2021-03-25 22:33:53 +11:00
Ryan Roden-Corrent a888057453 Fix a small typo in cli_commands.md (#12379) 2021-03-25 22:31:05 +11:00
Ryan eae7343741 Move API_SYSEX_MAX_SIZE out of config_common.h (#12302) 2021-03-25 22:30:42 +11:00
Armando MagalhãesandRyan c59fb1b477 feat(keymaps): Changes to crkbd/keymaps/armand1m layout and README.md update (#12252)
Co-authored-by: Ryan <[email protected]>
2021-03-25 18:06:30 +11:00
James Young e7cb7bc737 Roses Lite layout macro touch-up (#12357) 2021-03-25 18:05:59 +11:00
Xelus22 1ed48c774e add valor_frl_tkl info.json (#12359)
* add info.json

* remove macro keys to correct layout
2021-03-24 22:28:54 -07:00
54b80ecf9f [CI] Format code according to conventions (#12363)
* Format code according to conventions

* Update lib/python/qmk/cli/generate/api.py

* Update lib/python/qmk/cli/generate/api.py

Co-authored-by: QMK Bot <[email protected]>
Co-authored-by: Zach White <[email protected]>
2021-03-24 20:33:25 -07:00
sbuller 97a73637e0 [Keyboard] Preserve signedness from opt_encoder_handler for scroll data on ploopy devices (#12223) 2021-03-24 18:33:06 -07:00
Ryan 653ecf91c2 More Tap Dance docs improvements (#12358) 2021-03-24 19:46:22 +00:00
Joel Challis b7870ae78c Workaround for recent changes to mouse keycodes (#12367) 2021-03-24 19:38:35 +00:00
Zach White 299008be36 Add support for qmk_configurator style aliases (#11954)
* Add support for qmk_configurator style aliases

* add the keyboard aliases to the api data

* add support for a keyboard metadata file

* make flake8 happy
2021-03-24 09:26:38 -07:00
Ryan 723d9af04d Add info.json for handwired/datahand (#12320) 2021-03-24 21:12:55 +11:00
James Young 6edcbdca19 [Keyboard] YMDK YM68 (#12352)
* [Keyboard] YMDK YM68

Converted from a KBFirmware JSON file provided via the vendor's product listing.

PCB supports Backlight on B6 and RGB Underglow on E2, but the LEDs are not pre-soldered according to the PCB photos.

* update VENDOR_ID and PRODUCT_ID
2021-03-24 02:07:12 -07:00
James Young 2882ee9f55 Configurator bugfix for GMMK Pro (#12353) 2021-03-24 15:24:20 +11:00
Ryan 78149505f9 Fix Uni660 linker errors (#12341) 2021-03-24 13:03:43 +11:00
7b07ce3fef Add UC-1 keypad (#11926)
Co-authored-by: Ryan <[email protected]>
Co-authored-by: online <[email protected]>
2021-03-24 13:00:07 +11:00
Viktor Eikman d395c81606 Configurator fixes for handwired/concertina/64key (#12316)
* Fixed bug that was hiding a key in info.json.

* Improvements to presentation.
2021-03-23 11:18:19 -07:00
Danny be257b6f9f Add Sinc Rev. 2 (#12138) 2021-03-23 11:11:07 -04:00
Luca Di Bartolomeo d4a8123267 Update readme.md on quefrency (#12276)
* Update readme.md on quefrency

Fix incorrect flashing instructions

* Update keyboards/keebio/quefrency/readme.md
2021-03-23 00:00:34 -07:00
Zach White e1a7027fe8 use layout aliases when processing info.json (#12333) 2021-03-22 18:58:07 -07:00
c5b0366a25 Fix Kira80 license headers (#12303)
Co-authored-by: Ryan <[email protected]>
Co-authored-by: James Young <[email protected]>
2021-03-21 13:43:04 +11:00
James Young 217e3a59c4 Boston: correct LAYOUT macro data (#12282)
- correct macro reference
- add missing encoder position
- correct maintainer value to reference keyboard maintainer's GitHub account
- remove trailing whitespace
2021-03-20 14:53:02 +11:00
noclew 0ab88f5342 [Keyboard] Vanana, Vaguette Lite, and Waaffle (#11441)
* added Vanana / Vaguette Lite / Waaffle

* changed extra GPIO allocations of Waaffle and Vanana

* Apply suggestions from code review

changed layout name of vaguette Lite / requested by drashna

* Apply suggestions from code review

Requested keymap changes have been made.

* all changes requested by collaborators are made

* RGB config updated / keymap updated

* fixed vaguette lite info.json

* fixed vaguette lite info.json

* fixed vaguette lite info.json

* Apply suggestions from code review

request changes are made

* pre rename h

* vaguettelite reanmed to lowercases

* fixed vanana keymap

* Apply suggestions from code review

* changed Bootmagic key of VaguetteLite as suggested

* Updated via keymap of Vaguette Lite as suggested

* add vaguette lite 6.25 layout

* added vaguette lite noclew keymap

* updated vaguette lite 6.25u keymap description

* updated vanana default keymap

* updated keymap spacing

* reabased from the official repo

* Update keymap.c

fixed vaguette lite keymap

* Apply suggestions from code review

All the requested changes by a collaborator were made.

* updated info.json of Vanana and readme files of Vanana and waffle

* rename LAYOUT_waaffle to LAYOUT_ortho_5x16

Also adjusts the info.json data to put a visual gap between the extension and main PCBs.

* make rules.mk and info.json specific to rev3

Removes nckiibs/waaffle as a build target, as it redirects to the only extant revision in the repository.

* add controller board build targets

Adds build targets for Pro Micro and Elite-C builds, with appropriate defaults for each.

Running `make nckiibs/waaffle/rev3` defaults to a Pro Micro-based build.
2021-03-19 17:12:38 -07:00
James Young 8dfe37a3a3 Sirius UniGo66 touch-up (#12280)
* un-nest layout macros

* use #pragma once include guard in unigo66.h

* unify rules.mk to QMK AVR template

- remove Bootloader selection comment block
- unify Build Option header comment
- align Build Option rules and inline comments

* remove unused LAYOUT_all macro

* update readme.md to match QMK template
2021-03-19 12:36:52 -07:00
Ryan 69eca63a84 qmk doctor: Don't run udev checks under WSL (#12231) 2021-03-19 04:24:21 +11:00
Xelus22andRyan a5576f9738 [Keyboard] Add Pachi (#12132)
Co-authored-by: Ryan <[email protected]>
2021-03-19 01:25:37 +11:00
c833b77646 Fixed keymap names of Noah AVR (#12265)
Co-authored-by: Ryan <[email protected]>
Co-authored-by: Drashna Jaelre <[email protected]>
2021-03-19 00:17:21 +11:00
James Young ed446360a4 Aleblazer Zodiark touch-up (#12279) 2021-03-18 14:38:08 +11:00
github-actions[bot]andQMK Bot 9807225f90 [CI] Format code according to conventions (#12277)
Co-authored-by: QMK Bot <[email protected]>
2021-03-18 12:28:50 +11:00
Ryan 9331c22620 XT converter cleanup (#12264) 2021-03-18 11:48:09 +11:00
SalmanandDrashna Jael're cc84831cae Adding Keyboard: GMMK Pro (#12030)
* GMMK Pro QMK Firmware Code

* info.json added

* updated info.json for the unused keys

* redoing info.json

* readme for pro

* gmmk initial readme

* pipeline fix, issue with compiling gmmk.h

* gmmk pro code formatting changes

* removed rules.mk

* noci file

* Updates

* updated matrix function to match keymap

* updating the keymap layout, renaming matrix, updating layout name to LAYOUT

* fauxpark changes added

* PID VID updates

* removed chconfig and made rules.mk comments cleaner

Co-authored-by: Drashna Jael're <[email protected]>
2021-03-18 09:33:16 +11:00
f490777502 [Keyboard] Add handwired/bolek keyboard (#12234)
Co-authored-by: Drashna Jaelre <[email protected]>
Co-authored-by: Ryan <[email protected]>
2021-03-17 10:07:56 -07:00
Felix Springer 6e79767f5a [Keymap] jumper149 keymap for the dztech/dz65rgb (#12142) 2021-03-17 10:02:00 -07:00
Robert VerstandRobert Verst 3bc7f46412 [Keymap] Add userspace rverst (#12205)
Co-authored-by: Robert Verst <[email protected]>
2021-03-17 09:44:21 -07:00
8a2d3a8861 [Keyboard] Add support for ortho4exent (#11699)
Co-authored-by: Joel Challis <[email protected]>
Co-authored-by: Drashna Jaelre <[email protected]>
Co-authored-by: Ryan <[email protected]>
2021-03-16 23:50:22 -07:00
im a can what do you think lmao?andDrashna Jaelre 538194344a [Keyboard] add oled and encoder function to lck75 (#11825)
Co-authored-by: Drashna Jaelre <[email protected]>
2021-03-16 23:48:03 -07:00
Salicylic-acid3 23765332fa [Keyboard] Modification of ErgoArrows info.json (#11980)
The order of key descriptions in ErgoArrows info.json was wrong, so it has been corrected.
2021-03-16 23:47:18 -07:00
Matthew Dias 163e9b02bf [Keyboard] Add barleycorn smd keyboard (#12200) 2021-03-16 23:31:58 -07:00
devriesp 90f95de5c9 [Keyboard] add via keymap to afternoonlabs breeze keyboard (#12247) 2021-03-16 23:22:43 -07:00
kaylanm ffc4380b30 [Keyboard] Add KMAC VIA keymap (#12224) 2021-03-16 23:17:40 -07:00
James Young 314ef9df03 Pimentoso Paddino02 clean-up (#12263)
* fork rules.mk to be version-specific

* remove pimentoso/paddino02 as a keyboard target

This commit makes it so QMK API doesn't identify pimentoso/paddino02 as a build target on its own, because there's no actionable code here.

* add image to readme.md

* unify rules.mk files to QMK AVR template

- remove Bootloader selection comment block
- sort Build Option rules
- unify inline comments
2021-03-16 23:00:43 -07:00
peepeetee 563be8ca2a Add bootmagic support for hub16 and hub20 (#12257) 2021-03-17 15:57:51 +11:00
Ryan e527b375e8 TKC M0lly refactor (#12227) 2021-03-17 15:56:45 +11:00
MojitasandRyan 4e8a218d17 [Keymap] Mojito - removed layer macros (#12201)
Co-authored-by: Ryan <[email protected]>
2021-03-16 20:09:45 -07:00
peepeetee 57de02c9f2 [Keyboard] fix bm68rgb default keymap (#12199) 2021-03-16 20:05:20 -07:00
Kyle McAlpine 3c4972a53f [Keyboard] Fix issue with process_record_kb in Torn (#12189) 2021-03-16 19:49:48 -07:00
stanrc85 6af387ec6f [Keymap] stanrc85 keymap updates (#12184) 2021-03-16 19:44:13 -07:00
Gavin AustinandRyan 554b73643d [Keyboard] Added Roses Lite Support (#12173)
Co-authored-by: Ryan <[email protected]>
2021-03-16 19:23:35 -07:00
Simon Arlott e941ae3811 [Keyboard] Add YMDK NP24 (ATmega32U4 with 6 RGB LEDs) (#12120) 2021-03-16 18:39:09 -07:00
James Young f75420c209 box75: fix key positioning in info.json (#12256)
* fix key positioning for box75
2021-03-16 00:00:59 -07:00
d99806cc27 Pizza Keyboards Pizza65 addition (#11604)
* Added Pizza65 from Pizza Keyboards

Addition of Pizza65

* Update pizza65.h

* Update info.json

* Update mcuconf.h

* Update rules.mk

* Updated makefile

* Update keyboards/pizzakeyboards/pizza65/config.h

Co-authored-by: Drashna Jaelre <[email protected]>

* Update keyboards/pizzakeyboards/pizza65/config.h

Co-authored-by: Ryan <[email protected]>

* Update keyboards/pizzakeyboards/pizza65/config.h

Co-authored-by: Ryan <[email protected]>

* Update keyboards/pizzakeyboards/pizza65/keymaps/ansi_blocker_doublebs/keymap.c

Co-authored-by: Ryan <[email protected]>

* Update keyboards/pizzakeyboards/pizza65/keymaps/iso_blocker_doublebs/keymap.c

Co-authored-by: Ryan <[email protected]>

* Update keyboards/pizzakeyboards/pizza65/info.json

Co-authored-by: Ryan <[email protected]>

* Update keyboards/pizzakeyboards/pizza65/rules.mk

Co-authored-by: Ryan <[email protected]>

* Update keyboards/pizzakeyboards/pizza65/keymaps/default/keymap.c

Co-authored-by: Ryan <[email protected]>

* Update keyboards/pizzakeyboards/pizza65/keymaps/iso_blocker/keymap.c

Co-authored-by: Ryan <[email protected]>

* Update keyboards/pizzakeyboards/pizza65/keymaps/via/keymap.c

Co-authored-by: Ryan <[email protected]>

* Update keyboards/pizzakeyboards/pizza65/readme.md

Co-authored-by: Ryan <[email protected]>

* Update keyboards/pizzakeyboards/pizza65/readme.md

Co-authored-by: Ryan <[email protected]>

* Update keyboards/pizzakeyboards/pizza65/info.json

Co-authored-by: Ryan <[email protected]>

* Update keyboards/pizzakeyboards/pizza65/info.json

Co-authored-by: Ryan <[email protected]>

* Update keyboards/pizzakeyboards/pizza65/info.json

Co-authored-by: Ryan <[email protected]>

* Chibios Config migration

* Update keyboards/pizzakeyboards/pizza65/readme.md

Co-authored-by: Jonas Gessner <[email protected]>

* Update keyboards/pizzakeyboards/pizza65/readme.md

Co-authored-by: Jonas Gessner <[email protected]>

* Update keyboards/pizzakeyboards/pizza65/pizza65.h

Co-authored-by: Jonas Gessner <[email protected]>

* Update rules.mk

nk rollover activation

* conf updates

* Update keyboards/pizzakeyboards/pizza65/keymaps/iso_blocker/keymap.c

Co-authored-by: Davide Riccardo Caliendo <[email protected]>

* Update keyboards/pizzakeyboards/pizza65/keymaps/iso_blocker_doublebs/keymap.c

Co-authored-by: Davide Riccardo Caliendo <[email protected]>

* Update keymap.c

thanks to Acaban

* Update pizza65.h

update to the iso_blocker_doublebs layout macro

* Delete chconf.h

Deleting after the ChibiOS-conf migration.

* Delete config.h

Deleting after the ChibiOS-conf migration.

* Revert "Delete config.h"

This reverts commit 16d64619e68578382aca3b1475968563b662d07f.

* Delete mcuconf.h

Deleting after ChibiOS-conf migration.

* Delete halconf.h

Deleting after ChibiOS-conf migrations.

Co-authored-by: Drashna Jaelre <[email protected]>
Co-authored-by: Ryan <[email protected]>
Co-authored-by: Jonas Gessner <[email protected]>
Co-authored-by: Davide Riccardo Caliendo <[email protected]>
2021-03-16 10:09:29 +11:00
cd8497b9fb add support for Noah AVR PCB (#11563)
* add support for Noah AVR PCB

* Update info.json

* Update readme.md

* Update keyboards/kb_elmo/noah_avr/rules.mk

Co-authored-by: Ryan <[email protected]>

* Update keymap.c

* Apply suggestions from code review

Co-authored-by: Drashna Jaelre <[email protected]>

Co-authored-by: Ryan <[email protected]>
Co-authored-by: Drashna Jaelre <[email protected]>
2021-03-16 10:03:16 +11:00
James Young 469b4b21d2 Fixes for recent info.json files (#12248) 2021-03-16 07:45:39 +11:00
926389f3a7 Keyboard/grandiceps (#11933)
* Add Grandiceps keyboard

* Fix info.json

* Fix typo

* Fix typo

* cleanup format

* move mcu files to root

* Updated with PR changes

* Apply suggestions from code review

Co-authored-by: Ryan <[email protected]>

* Apply suggestions from code review

Co-authored-by: Ryan <[email protected]>

* PR issues for chibios confmigrate

* PR Changes

Co-authored-by: Thys de Wet <[email protected]>
Co-authored-by: Ryan <[email protected]>
2021-03-15 17:42:09 +00:00
James Young 52b7ebd6be M10-A refactor (#12242) 2021-03-15 19:25:00 +11:00
James Young 2e50b34c67 Add missing info.json files for keyboards (#12239)
Recent changes to QMK Configurator's API have made it so an info.json file is required for QMK Configurator to know how to render the keyboard in question.

This PR adds info.json files for keyboards that did not have them, with a few exceptions for boards whose layouts I was unable to determine.

* add info.json file for 2key2crawl

* add info.json file for 40percentclub/4x4

* add info.json file for 40percentclub/5x5

* add info.json file for 4pplet/aekiso60/rev_a

* add info.json file for 4pplet/steezy60/rev_a

* add info.json file for 6ball

* add info.json file for 7c8/framework

* add info.json file for aeboards/constellation

* add info.json file for alpine65

* add info.json file for aplyard/aplx6

* add info.json file for arch_36

* add info.json file for arisu

* add info.json file for box75

* add info.json file for butterstick

* add info.json file for four_banger

* add info.json file for geekboards/tester

* add info.json file for handwired/2x5keypad

* add info.json file for handwired/412_64

* add info.json file for handwired/42

* add info.json file for handwired/aplx2

* add info.json file for handwired/brain

* add info.json file for handwired/cans12er

* add info.json file for handwired/ck4x4

* add info.json file for handwired/d48

* add info.json file for handwired/dactyl_manuform/dmote/62key

* add info.json file for handwired/daishi

* add info.json file for handwired/hexon38

* add info.json file for handwired/jot50

* add info.json file for handwired/jotanck

* add info.json file for handwired/jotpad16

* add info.json file for handwired/k8split

* add info.json file for handwired/myskeeb

* add info.json file for handwired/nicekey

* add info.json file for handwired/onekey

* add info.json file for handwired/postageboard

* add info.json file for handwired/riblee_f401

* add info.json file for handwired/riblee_f411

* add info.json file for handwired/rs60

* add info.json file for handwired/splittest

* add info.json file for handwired/trackpoint

* add info.json file for handwired/traveller

* add info.json file for hhkb_lite_2

* add info.json file for honeycomb

* add info.json file for ivy/rev1

* add info.json file for keebio/viterbi

* add info.json file for laptreus

* add info.json file for latin47ble

* add info.json file for latin64ble

* add info.json file for launchpad/rev1

* add info.json file for lets_split_eh/eh

* add info.json file for mechmini/v1

* add info.json file for meira

* add info.json file for meishi

* add info.json file for merge/iso_macro

* add info.json file for mschwingen/modelm

* add info.json file for pabile/p20

* add info.json files for pimentoso/paddino02

rev1, rev2/left, and rev2/right

* add info.json file for rgbkb/pan

* add info.json files for runner3680

3x6, 3x7, 3x8, 4x6, 4x7, 4x8, 5x6, 5x7, and 5x8

* add info.json file for sck/gtm

* add info.json file for splitish

* add info.json file for standaside

* add info.json file for ungodly/launch_pad

* add info.json file for xelus/trinityxttkl

* Revert "add info.json file for rgbkb/pan"

This reverts commit 280b89bc6157023a621a9864f5d74d59d62bb511.

* correct maintainer for ivy/rev1
2021-03-15 01:06:55 -07:00
github-actions[bot]andQMK Bot a18e1305b3 Format code according to conventions (#12244)
Co-authored-by: QMK Bot <[email protected]>
2021-03-15 12:21:14 +11:00
xyzzandDavid Hoelscher 0779c34db8 Fix keycode mappings for via and ensure they don't change within protocol (#12130)
* Fix keycode mappings for via and ensure they don't change within protocol

* Update keycodes

* Fix broken keyboards

* added the missing keycodes found in via

* Remove invalid keycodes

Co-authored-by: David Hoelscher <[email protected]>
2021-03-15 12:19:01 +11:00
NightlyBoards 9e1d04fea7 [Keyboard] Added Adellein Keyboard/PCB (#11547) 2021-03-14 14:51:21 -07:00
yhaliaw b44bffe954 [Keymap] Add yhaliaw keymap for Planck/Rev6.1. (#11318) 2021-03-14 13:19:05 -07:00
Ryan 739925c902 Add info.json for RGBKB Pan (#12218) 2021-03-15 07:17:09 +11:00
45e6bb7add Add Cassette42 (#10562)
Co-authored-by: Drashna Jaelre <[email protected]>
Co-authored-by: Ryan <[email protected]>
2021-03-15 06:55:59 +11:00
milestogoandDrashna Jaelre 7b7689d307 [Keymap] miles2go userspace update, add functions for babblepaste library, add prime_e keybard keymap (#9196)
Co-authored-by: Drashna Jaelre <[email protected]>
2021-03-14 12:23:30 -07:00
peepeeteeandRyan aa73411c14 Update RGB matrix effects documentation (#12181)
Co-authored-by: Ryan <[email protected]>
2021-03-13 11:37:39 +11:00
b96c18c952 Hand 88 (#11963)
Co-authored-by: Drashna Jaelre <[email protected]>
Co-authored-by: Ryan <[email protected]>
2021-03-13 09:37:41 +11:00
Dan Thomas 225bff226f fix info.json layout name for boardsource/5x12 (#12145) 2021-03-13 08:57:50 +11:00
Xelus22 5d7ad69cd8 [Bugs] Fix VIA Compiles (#12186) 2021-03-12 13:50:15 -08:00
Albert Yandfilterpaper b8ad5f4249 Document LED physical location index for Planck and Preonic (#12147)
Co-authored-by: filterpaper <filterpaper@localhost>
2021-03-13 08:47:45 +11:00
Albert Yandfilterpaper 63f9e7ee86 Enable default features on VIA keymap for Lily58 (#12185)
Co-authored-by: filterpaper <filterpaper@localhost>
2021-03-12 18:43:31 +11:00
594 changed files with 27233 additions and 2290 deletions

No files matched your search

+443
View File
@@ -0,0 +1,443 @@
{
# Format for each entry:
# <alias>: {
# target: <keyboard_folder>,
# layouts: {
# <layout_alias>: <layout_target>
# }
# }
#
# Both target and layouts are optional.
'2_milk': {
target: 'spaceman/2_milk'
},
'aeboards/ext65': {
target: 'aeboards/ext65/rev1'
},
'ai03/equinox': {
target: 'ai03/equinox/rev1'
},
aleth42: {
target: 'aleth42/rev1'
},
alice: {
target: 'tgr/alice'
},
angel17: {
target: 'angel17/alpha'
},
angel64: {
target: 'angel64/alpha'
},
at101_blackheart: {
target: 'at101_bh'
},
'atom47/rev2': {
target: 'maartenwut/atom47/rev2'
},
'atom47/rev3': {
target: 'maartenwut/atom47/rev3'
},
bear_face: {
target: 'bear_face/v1'
},
'bpiphany/pegasushoof': {
target: 'bpiphany/pegasushoof/2013'
},
chavdai40: {
target: 'chavdai40/rev1'
},
'candybar/lefty': {
target: 'tkc/candybar/lefty'
},
'candybar/righty': {
target: 'tkc/candybar/righty'
},
canoe: {
target: 'percent/canoe'
},
'cmm_studio/saka68': {
target: 'cmm_studio/saka68/solder'
},
'crkbd/rev1': {
target: 'crkbd/rev1/legacy'
},
'doro67/multi': {
layouts: {
LAYOUT_ansi: 'LAYOUT_65_ansi_blocker'
}
},
'doro67/regular': {
layouts: {
LAYOUT: 'LAYOUT_65_ansi_blocker'
}
},
'doro67/rgb': {
layouts: {
LAYOUT: 'LAYOUT_65_ansi_blocker'
}
},
drakon: {
target: 'jagdpietr/drakon'
},
'dztech/dz60rgb': {
target: 'dztech/dz60rgb/v1'
},
'dztech/dz60rgb_ansi': {
target: 'dztech/dz60rgb_ansi/v1'
},
'dztech/dz60rgb_wkl': {
target: 'dztech/dz60rgb_wkl/v1'
},
'dztech/dz65rgb': {
target: 'dztech/dz65rgb/v1'
},
eek: {
target: 'eek/silk_down'
},
ergoinu: {
target: 'dm9records/ergoinu'
},
'exclusive/e85': {
target: 'exclusive/e85/hotswap'
},
gh60: {
target: 'gh60/revc'
},
'handwired/ferris': {
target: 'ferris/0_1'
},
'helix/pico/sc/back': {
target: 'helix/pico/sc'
},
'helix/pico/sc/under': {
target: 'helix/pico/sc'
},
'helix/rev2/back/oled': {
target: 'helix/rev2/back'
},
'helix/rev2/oled': {
target: 'helix/rev2'
},
'helix/rev2/oled/back': {
target: 'helix/rev2/back'
},
'helix/rev2/oled/under': {
target: 'helix/rev2/under'
},
'helix/rev2/sc/back': {
target: 'helix/rev2/sc'
},
'helix/rev2/sc/oled': {
target: 'helix/rev2/sc'
},
'helix/rev2/sc/oledback': {
target: 'helix/rev2/sc'
},
'helix/rev2/sc/oledunder': {
target: 'helix/rev2/sc'
},
'helix/rev2/sc/under': {
target: 'helix/rev2/sc'
},
'helix/rev2/under': {
target: 'helix/rev2/sc'
},
'helix/rev2/under/oled': {
target: 'helix/rev2/under'
},
id80: {
target: 'id80/ansi'
},
idb_60: {
target: 'idb/idb_60',
layouts: {
LAYOUT: 'LAYOUT_all'
}
},
jones: {
target: 'jones/v03_1'
},
katana60: {
target: 'rominronin/katana60/rev1'
},
'kbdfans/kbd67mkiirgb': {
target: 'kbdfans/kbd67/mkiirgb',
layouts: {
LAYOUT: 'LAYOUT_65_ansi_blocker'
}
},
'kbdfans/kbd67/mkiirgb': {
target: 'kbdfans/kbd67/mkiirgb/v1'
},
'keebio/dsp40': {
target: 'keebio/dsp40/rev1'
},
'keycapsss/plaid_pad': {
target: 'keycapsss/plaid_pad/rev1'
},
kudox: {
target: 'kudox/rev1'
},
'lfkeyboards/lfk78': {
target: 'lfkeyboards/lfk78/revj'
},
'lfkeyboards/smk65': {
target: 'lfkeyboards/smk65/revb'
},
'maartenwut/atom47/rev2': {
target: 'evyd13/atom47/rev2'
},
'maartenwut/atom47/rev3': {
target: 'evyd13/atom47/rev3'
},
'maartenwut/eon40': {
target: 'evyd13/eon40'
},
'maartenwut/eon65': {
target: 'evyd13/eon65'
},
'maartenwut/eon75': {
target: 'evyd13/eon75'
},
'maartenwut/eon87': {
target: 'evyd13/eon87'
},
'maartenwut/eon95': {
target: 'evyd13/eon95'
},
'maartenwut/gh80_1800': {
target: 'evyd13/gh80_1800'
},
'maartenwut/gh80_3700': {
target: 'evyd13/gh80_3700'
},
'maartenwut/minitomic': {
target: 'evyd13/minitomic'
},
'maartenwut/mx5160': {
target: 'evyd13/mx5160'
},
'maartenwut/nt660': {
target: 'evyd13/nt660'
},
'maartenwut/omrontkl': {
target: 'evyd13/omrontkl'
},
'maartenwut/plain60': {
target: 'evyd13/plain60'
},
'maartenwut/pockettype': {
target: 'evyd13/pockettype'
},
'maartenwut/quackfire': {
target: 'evyd13/quackfire'
},
'maartenwut/solheim68': {
target: 'evyd13/solheim68'
},
'maartenwut/ta65': {
target: 'evyd13/ta65'
},
'maartenwut/wasdat': {
target: 'evyd13/wasdat'
},
'maartenwut/wasdat_code': {
target: 'evyd13/wasdat_code'
},
'maartenwut/wonderland': {
target: 'evyd13/wonderland'
},
'mechlovin/hannah910': {
target: 'mechlovin/hannah910/rev1'
},
'mechlovin/adelais/rgb_led': {
target: 'mechlovin/adelais/rgb_led/rev1'
},
'mechlovin/adelais/standard_led': {
target: 'mechlovin/adelais/standard_led/rev2'
},
'mechlovin/delphine': {
target: 'mechlovin/delphine/mono_led'
},
'mechlovin/hannah60rgb': {
target: 'mechlovin/hannah60rgb/rev1'
},
'melgeek/z70ultra': {
target: 'melgeek/z70ultra/rev1'
},
'mechlovin/hannah65': {
target: 'mechlovin/hannah65/rev1'
},
model01: {
target: 'keyboardio/model01'
},
m0lly: {
target: 'tkc/m0lly'
},
'montsinger/rebound': {
target: 'montsinger/rebound/rev1'
},
nomu30: {
target: 'nomu30/rev1'
},
'noxary/268_2': {
layouts: {
LAYOUT: 'LAYOUT_65_ansi_blocker'
}
},
oddball: {
target: 'oddball/v1'
},
omnikey_blackheart: {
target: 'omnikey_bh'
},
'pabile/p20': {
target: 'pabile/p20/ver1'
},
'pancake/feather': {
target: 'spaceman/pancake/feather'
},
'pancake/promicro': {
target: 'spaceman/pancake/promicro'
},
'percent/canoe': {
layouts: {
LAYOUT_iso: 'LAYOUT_65_iso_blocker'
}
},
plaid: {
target: 'dm9records/plaid'
},
plain60: {
target: 'maartenwut/plain60'
},
'ploopyco/trackball': {
target: 'ploopyco/trackball/rev1_005'
},
polilla: {
target: 'polilla/rev1'
},
'preonic/rev1': {
layouts: {
LAYOUT_preonic_grid: 'LAYOUT_ortho_5x12'
}
},
'preonic/rev2': {
layouts: {
LAYOUT_preonic_grid: 'LAYOUT_ortho_5x12'
}
},
'preonic/rev3': {
layouts: {
LAYOUT_preonic_grid: 'LAYOUT_ortho_5x12'
}
},
'primekb/prime_l': {
target: 'primekb/prime_l/v1'
},
'primekb/prime_l_v2': {
target: 'primekb/prime_l/v2'
},
'projectkb/alice': {
target: 'projectkb/alice/rev1'
},
'rama/koyu': {
target: 'wilba_tech/rama_works_koyu'
},
'rama/m6_a': {
target: 'wilba_tech/rama_works_m6_a'
},
'rama/m6_b': {
target: 'wilba_tech/rama_works_m6_b'
},
'rama/m10_b': {
target: 'wilba_tech/rama_works_m10_b'
},
'rama/m60_a': {
target: 'wilba_tech/rama_works_m60_a'
},
'rama/u80_a': {
target: 'wilba_tech/rama_works_u80_a'
},
'ramonimbao/herringbone': {
target: 'ramonimbao/herringbone/v1'
},
'rgbkb/pan': {
target: 'rgbkb/pan/rev1/32a'
},
'rgbkb/pan/rev1': {
target: 'rgbkb/pan/rev1/32a'
},
romac: {
target: 'kingly_keys/romac'
},
ropro: {
target: 'kingly_keys/ropro'
},
satan: {
target: 'gh60/satan'
},
skog: {
target: 'percent/skog'
},
speedo: {
target: 'cozykeys/speedo/v2'
},
stoutgat: {
target: 'tkw/stoutgat/v1'
},
suihankey: {
target: 'suihankey/split/alpha'
},
ta65: {
target: 'maartenwut/ta65'
},
tartan: {
target: 'dm9records/tartan'
},
tkc1800: {
target: 'tkc/tkc1800'
},
'tkw/stoutgat/v2': {
target: 'tkw/stoutgat/v2/f411'
},
underscore33: {
target: 'underscore33/rev1'
},
vinta: {
layouts: {
LAYOUT_67_ansi: 'LAYOUT_65_ansi_blocker'
}
},
wasdat: {
target: 'maartenwut/wasdat'
},
'westfoxtrot/cypher': {
target: 'westfoxtrot/cypher/rev1'
},
'whale/sk': {
target: 'whale/sk/v3'
},
'xelus/dawn60': {
target: 'xelus/dawn60/rev1'
},
'xelus/valor': {
target: 'xelus/valor/rev1'
},
yd60mq: {
target: 'yd60mq/12led'
},
ymd75: {
target: 'ymd75/rev1'
},
z150_blackheart: {
target: 'z150_bh'
},
zeal60: {
target: 'wilba_tech/zeal60'
},
zeal65: {
target: 'wilba_tech/zeal65'
}
}
+11 -1
View File
@@ -131,6 +131,16 @@ Check your environment and report problems only:
qmk doctor -n qmk doctor -n
## `qmk format-json`
Formats a JSON file in a (mostly) human-friendly way. Will usually correctly detect the format of the JSON (info.json or keymap.json) but you can override this with `--format` if neccesary.
**Usage**:
```
qmk format-json [-f FORMAT] <json_file>
```
## `qmk info` ## `qmk info`
Displays information about keyboards and keymaps in QMK. You can use this to get information about a keyboard, show the layouts, display the underlying key matrix, or to pretty-print JSON keymaps. Displays information about keyboards and keymaps in QMK. You can use this to get information about a keyboard, show the layouts, display the underlying key matrix, or to pretty-print JSON keymaps.
@@ -170,7 +180,7 @@ qmk json2c [-o OUTPUT] filename
## `qmk c2json` ## `qmk c2json`
Creates a keymap.json from a keymap.c. Creates a keymap.json from a keymap.c.
**Note:** Parsing C source files is not easy, therefore this subcommand may not work your keymap. In some cases not using the C pre-processor helps. **Note:** Parsing C source files is not easy, therefore this subcommand may not work with your keymap. In some cases not using the C pre-processor helps.
**Usage**: **Usage**:
+1 -3
View File
@@ -19,12 +19,10 @@ These functions allow you to activate layers in various ways. Note that layers a
### Caveats :id=caveats ### Caveats :id=caveats
Currently, `LT()` and `MT()` are limited to the [Basic Keycode set](keycodes_basic.md), meaning you can't use keycodes like `LCTL()`, `KC_TILD`, or anything greater than `0xFF`. Specifically, dual function keys like `LT` and `MT` use a 16 bit keycode. 4 bits are used for the function identifier, the next 12 are divided into the parameters. Layer Tap uses 4 bits for the layer (and is why it's limited to layers 0-15, actually), while Mod Tap does the same, 4 bits for the identifier, 4 bits for which mods are used, and all of them use 8 bits for the keycode. Because of this, the keycode used is limited to `0xFF` (0-255), which are the basic keycodes only. Currently, the `layer` argument of `LT()` is limited to layers 0-15, and the `kc` argument to the [Basic Keycode set](keycodes_basic.md), meaning you can't use keycodes like `LCTL()`, `KC_TILD`, or anything greater than `0xFF`. This is because QMK uses 16-bit keycodes, of which 4 bits are used for the function identifier and 4 bits for the layer, leaving only 8 bits for the keycode.
Expanding this would be complicated, at best. Moving to a 32-bit keycode would solve a lot of this, but would double the amount of space that the keymap matrix uses. And it could potentially cause issues, too. If you need to apply modifiers to your tapped keycode, [Tap Dance](feature_tap_dance.md#example-5-using-tap-dance-for-advanced-mod-tap-and-layer-tap-keys) can be used to accomplish this. Expanding this would be complicated, at best. Moving to a 32-bit keycode would solve a lot of this, but would double the amount of space that the keymap matrix uses. And it could potentially cause issues, too. If you need to apply modifiers to your tapped keycode, [Tap Dance](feature_tap_dance.md#example-5-using-tap-dance-for-advanced-mod-tap-and-layer-tap-keys) can be used to accomplish this.
Additionally, if at least one right-handed modifier is specified in a Mod Tap or Layer Tap, it will cause all modifiers specified to become right-handed, so it is not possible to mix and match the two.
## Working with Layers :id=working-with-layers ## Working with Layers :id=working-with-layers
Care must be taken when switching layers, it's possible to lock yourself into a layer with no way to deactivate that layer (without unplugging your keyboard.) We've created some guidelines to help users avoid the most common problems. Care must be taken when switching layers, it's possible to lock yourself into a layer with no way to deactivate that layer (without unplugging your keyboard.) We've created some guidelines to help users avoid the most common problems.
+5 -3
View File
@@ -281,8 +281,10 @@ You can disable a single effect by defining `DISABLE_[EFFECT_NAME]` in your `con
|Define |Description | |Define |Description |
|-------------------------------------------------------|-----------------------------------------------| |-------------------------------------------------------|-----------------------------------------------|
|`#define DISABLE_RGB_MATRIX_SOLID_COLOR` |Disables `RGB_MATRIX_SOLID_COLOR` |
|`#define DISABLE_RGB_MATRIX_ALPHAS_MODS` |Disables `RGB_MATRIX_ALPHAS_MODS` | |`#define DISABLE_RGB_MATRIX_ALPHAS_MODS` |Disables `RGB_MATRIX_ALPHAS_MODS` |
|`#define DISABLE_RGB_MATRIX_GRADIENT_UP_DOWN` |Disables `RGB_MATRIX_GRADIENT_UP_DOWN` | |`#define DISABLE_RGB_MATRIX_GRADIENT_UP_DOWN` |Disables `RGB_MATRIX_GRADIENT_UP_DOWN` |
|`#define DISABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT` |Disables `MATRIX_GRADIENT_LEFT_RIGHT` |
|`#define DISABLE_RGB_MATRIX_BREATHING` |Disables `RGB_MATRIX_BREATHING` | |`#define DISABLE_RGB_MATRIX_BREATHING` |Disables `RGB_MATRIX_BREATHING` |
|`#define DISABLE_RGB_MATRIX_BAND_SAT` |Disables `RGB_MATRIX_BAND_SAT` | |`#define DISABLE_RGB_MATRIX_BAND_SAT` |Disables `RGB_MATRIX_BAND_SAT` |
|`#define DISABLE_RGB_MATRIX_BAND_VAL` |Disables `RGB_MATRIX_BAND_VAL` | |`#define DISABLE_RGB_MATRIX_BAND_VAL` |Disables `RGB_MATRIX_BAND_VAL` |
@@ -293,20 +295,20 @@ You can disable a single effect by defining `DISABLE_[EFFECT_NAME]` in your `con
|`#define DISABLE_RGB_MATRIX_CYCLE_ALL` |Disables `RGB_MATRIX_CYCLE_ALL` | |`#define DISABLE_RGB_MATRIX_CYCLE_ALL` |Disables `RGB_MATRIX_CYCLE_ALL` |
|`#define DISABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT` |Disables `RGB_MATRIX_CYCLE_LEFT_RIGHT` | |`#define DISABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT` |Disables `RGB_MATRIX_CYCLE_LEFT_RIGHT` |
|`#define DISABLE_RGB_MATRIX_CYCLE_UP_DOWN` |Disables `RGB_MATRIX_CYCLE_UP_DOWN` | |`#define DISABLE_RGB_MATRIX_CYCLE_UP_DOWN` |Disables `RGB_MATRIX_CYCLE_UP_DOWN` |
|`#define DISABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON` |Disables `RGB_MATRIX_RAINBOW_MOVING_CHEVRON` |
|`#define DISABLE_RGB_MATRIX_CYCLE_OUT_IN` |Disables `RGB_MATRIX_CYCLE_OUT_IN` | |`#define DISABLE_RGB_MATRIX_CYCLE_OUT_IN` |Disables `RGB_MATRIX_CYCLE_OUT_IN` |
|`#define DISABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL` |Disables `RGB_MATRIX_CYCLE_OUT_IN_DUAL` | |`#define DISABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL` |Disables `RGB_MATRIX_CYCLE_OUT_IN_DUAL` |
|`#define DISABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON` |Disables `RGB_MATRIX_RAINBOW_MOVING_CHEVRON` |
|`#define DISABLE_RGB_MATRIX_DUAL_BEACON` |Disables `RGB_MATRIX_DUAL_BEACON` |
|`#define DISABLE_RGB_MATRIX_CYCLE_PINWHEEL` |Disables `RGB_MATRIX_CYCLE_PINWHEEL` | |`#define DISABLE_RGB_MATRIX_CYCLE_PINWHEEL` |Disables `RGB_MATRIX_CYCLE_PINWHEEL` |
|`#define DISABLE_RGB_MATRIX_CYCLE_SPIRAL` |Disables `RGB_MATRIX_CYCLE_SPIRAL` | |`#define DISABLE_RGB_MATRIX_CYCLE_SPIRAL` |Disables `RGB_MATRIX_CYCLE_SPIRAL` |
|`#define DISABLE_RGB_MATRIX_DUAL_BEACON` |Disables `RGB_MATRIX_DUAL_BEACON` |
|`#define DISABLE_RGB_MATRIX_RAINBOW_BEACON` |Disables `RGB_MATRIX_RAINBOW_BEACON` | |`#define DISABLE_RGB_MATRIX_RAINBOW_BEACON` |Disables `RGB_MATRIX_RAINBOW_BEACON` |
|`#define DISABLE_RGB_MATRIX_RAINBOW_PINWHEELS` |Disables `RGB_MATRIX_RAINBOW_PINWHEELS` | |`#define DISABLE_RGB_MATRIX_RAINBOW_PINWHEELS` |Disables `RGB_MATRIX_RAINBOW_PINWHEELS` |
|`#define DISABLE_RGB_MATRIX_RAINDROPS` |Disables `RGB_MATRIX_RAINDROPS` | |`#define DISABLE_RGB_MATRIX_RAINDROPS` |Disables `RGB_MATRIX_RAINDROPS` |
|`#define DISABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS` |Disables `RGB_MATRIX_JELLYBEAN_RAINDROPS` | |`#define DISABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS` |Disables `RGB_MATRIX_JELLYBEAN_RAINDROPS` |
|`#define DISABLE_RGB_MATRIX_TYPING_HEATMAP` |Disables `RGB_MATRIX_TYPING_HEATMAP` | |`#define DISABLE_RGB_MATRIX_TYPING_HEATMAP` |Disables `RGB_MATRIX_TYPING_HEATMAP` |
|`#define DISABLE_RGB_MATRIX_DIGITAL_RAIN` |Disables `RGB_MATRIX_DIGITAL_RAIN` | |`#define DISABLE_RGB_MATRIX_DIGITAL_RAIN` |Disables `RGB_MATRIX_DIGITAL_RAIN` |
|`#define DISABLE_RGB_MATRIX_SOLID_REACTIVE` |Disables `RGB_MATRIX_SOLID_REACTIVE` |
|`#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE` |Disables `RGB_MATRIX_SOLID_REACTIVE_SIMPLE` | |`#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE` |Disables `RGB_MATRIX_SOLID_REACTIVE_SIMPLE` |
|`#define DISABLE_RGB_MATRIX_SOLID_REACTIVE` |Disables `RGB_MATRIX_SOLID_REACTIVE` |
|`#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE` |Disables `RGB_MATRIX_SOLID_REACTIVE_WIDE` | |`#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE` |Disables `RGB_MATRIX_SOLID_REACTIVE_WIDE` |
|`#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE` |Disables `RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE` | |`#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE` |Disables `RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE` |
|`#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS` |Disables `RGB_MATRIX_SOLID_REACTIVE_CROSS` | |`#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS` |Disables `RGB_MATRIX_SOLID_REACTIVE_CROSS` |
+84 -78
View File
@@ -76,7 +76,7 @@ qk_tap_dance_action_t tap_dance_actions[] = {
[TD_ESC_CAPS] = ACTION_TAP_DANCE_DOUBLE(KC_ESC, KC_CAPS), [TD_ESC_CAPS] = ACTION_TAP_DANCE_DOUBLE(KC_ESC, KC_CAPS),
}; };
// Add tap dance item in place of a key code // Add tap dance item to your keymap in place of a keycode
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// ... // ...
TD(TD_ESC_CAPS) TD(TD_ESC_CAPS)
@@ -206,20 +206,22 @@ You will need a few things that can be used for 'Quad Function Tap-Dance'.
You'll need to add these to the top of your `keymap.c` file, before your keymap. You'll need to add these to the top of your `keymap.c` file, before your keymap.
```c ```c
typedef enum {
TD_NONE,
TD_UNKNOWN,
TD_SINGLE_TAP,
TD_SINGLE_HOLD,
TD_DOUBLE_TAP,
TD_DOUBLE_HOLD,
TD_DOUBLE_SINGLE_TAP, // Send two single taps
TD_TRIPLE_TAP,
TD_TRIPLE_HOLD
} td_state_t;
typedef struct { typedef struct {
bool is_press_action; bool is_press_action;
uint8_t state; td_state_t state;
} tap; } td_tap_t;
enum {
SINGLE_TAP = 1,
SINGLE_HOLD,
DOUBLE_TAP,
DOUBLE_HOLD,
DOUBLE_SINGLE_TAP, // Send two single taps
TRIPLE_TAP,
TRIPLE_HOLD
};
// Tap dance enums // Tap dance enums
enum { enum {
@@ -227,7 +229,7 @@ enum {
SOME_OTHER_DANCE SOME_OTHER_DANCE
}; };
uint8_t cur_dance(qk_tap_dance_state_t *state); td_state_t cur_dance(qk_tap_dance_state_t *state);
// For the x tap dance. Put it here so it can be used in any keymap // For the x tap dance. Put it here so it can be used in any keymap
void x_finished(qk_tap_dance_state_t *state, void *user_data); void x_finished(qk_tap_dance_state_t *state, void *user_data);
@@ -261,61 +263,61 @@ Now, at the bottom of your `keymap.c` file, you'll need to add the following:
* Letters used in common words as a double. For example 'p' in 'pepper'. If a tap dance function existed on the * Letters used in common words as a double. For example 'p' in 'pepper'. If a tap dance function existed on the
* letter 'p', the word 'pepper' would be quite frustating to type. * letter 'p', the word 'pepper' would be quite frustating to type.
* *
* For the third point, there does exist the 'DOUBLE_SINGLE_TAP', however this is not fully tested * For the third point, there does exist the 'TD_DOUBLE_SINGLE_TAP', however this is not fully tested
* *
*/ */
uint8_t cur_dance(qk_tap_dance_state_t *state) { td_state_t cur_dance(qk_tap_dance_state_t *state) {
if (state->count == 1) { if (state->count == 1) {
if (state->interrupted || !state->pressed) return SINGLE_TAP; if (state->interrupted || !state->pressed) return TD_SINGLE_TAP;
// Key has not been interrupted, but the key is still held. Means you want to send a 'HOLD'. // Key has not been interrupted, but the key is still held. Means you want to send a 'HOLD'.
else return SINGLE_HOLD; else return TD_SINGLE_HOLD;
} else if (state->count == 2) { } else if (state->count == 2) {
// DOUBLE_SINGLE_TAP is to distinguish between typing "pepper", and actually wanting a double tap // TD_DOUBLE_SINGLE_TAP is to distinguish between typing "pepper", and actually wanting a double tap
// action when hitting 'pp'. Suggested use case for this return value is when you want to send two // action when hitting 'pp'. Suggested use case for this return value is when you want to send two
// keystrokes of the key, and not the 'double tap' action/macro. // keystrokes of the key, and not the 'double tap' action/macro.
if (state->interrupted) return DOUBLE_SINGLE_TAP; if (state->interrupted) return TD_DOUBLE_SINGLE_TAP;
else if (state->pressed) return DOUBLE_HOLD; else if (state->pressed) return TD_DOUBLE_HOLD;
else return DOUBLE_TAP; else return TD_DOUBLE_TAP;
} }
// Assumes no one is trying to type the same letter three times (at least not quickly). // Assumes no one is trying to type the same letter three times (at least not quickly).
// If your tap dance key is 'KC_W', and you want to type "www." quickly - then you will need to add // If your tap dance key is 'KC_W', and you want to type "www." quickly - then you will need to add
// an exception here to return a 'TRIPLE_SINGLE_TAP', and define that enum just like 'DOUBLE_SINGLE_TAP' // an exception here to return a 'TD_TRIPLE_SINGLE_TAP', and define that enum just like 'TD_DOUBLE_SINGLE_TAP'
if (state->count == 3) { if (state->count == 3) {
if (state->interrupted || !state->pressed) return TRIPLE_TAP; if (state->interrupted || !state->pressed) return TD_TRIPLE_TAP;
else return TRIPLE_HOLD; else return TD_TRIPLE_HOLD;
} else return 8; // Magic number. At some point this method will expand to work for more presses } else return TD_UNKNOWN;
} }
// Create an instance of 'tap' for the 'x' tap dance. // Create an instance of 'td_tap_t' for the 'x' tap dance.
static tap xtap_state = { static td_tap_t xtap_state = {
.is_press_action = true, .is_press_action = true,
.state = 0 .state = TD_NONE
}; };
void x_finished(qk_tap_dance_state_t *state, void *user_data) { void x_finished(qk_tap_dance_state_t *state, void *user_data) {
xtap_state.state = cur_dance(state); xtap_state.state = cur_dance(state);
switch (xtap_state.state) { switch (xtap_state.state) {
case SINGLE_TAP: register_code(KC_X); break; case TD_SINGLE_TAP: register_code(KC_X); break;
case SINGLE_HOLD: register_code(KC_LCTRL); break; case TD_SINGLE_HOLD: register_code(KC_LCTRL); break;
case DOUBLE_TAP: register_code(KC_ESC); break; case TD_DOUBLE_TAP: register_code(KC_ESC); break;
case DOUBLE_HOLD: register_code(KC_LALT); break; case TD_DOUBLE_HOLD: register_code(KC_LALT); break;
// Last case is for fast typing. Assuming your key is `f`: // Last case is for fast typing. Assuming your key is `f`:
// For example, when typing the word `buffer`, and you want to make sure that you send `ff` and not `Esc`. // For example, when typing the word `buffer`, and you want to make sure that you send `ff` and not `Esc`.
// In order to type `ff` when typing fast, the next character will have to be hit within the `TAPPING_TERM`, which by default is 200ms. // In order to type `ff` when typing fast, the next character will have to be hit within the `TAPPING_TERM`, which by default is 200ms.
case DOUBLE_SINGLE_TAP: tap_code(KC_X); register_code(KC_X); case TD_DOUBLE_SINGLE_TAP: tap_code(KC_X); register_code(KC_X);
} }
} }
void x_reset(qk_tap_dance_state_t *state, void *user_data) { void x_reset(qk_tap_dance_state_t *state, void *user_data) {
switch (xtap_state.state) { switch (xtap_state.state) {
case SINGLE_TAP: unregister_code(KC_X); break; case TD_SINGLE_TAP: unregister_code(KC_X); break;
case SINGLE_HOLD: unregister_code(KC_LCTRL); break; case TD_SINGLE_HOLD: unregister_code(KC_LCTRL); break;
case DOUBLE_TAP: unregister_code(KC_ESC); break; case TD_DOUBLE_TAP: unregister_code(KC_ESC); break;
case DOUBLE_HOLD: unregister_code(KC_LALT); case TD_DOUBLE_HOLD: unregister_code(KC_LALT);
case DOUBLE_SINGLE_TAP: unregister_code(KC_X); case TD_DOUBLE_SINGLE_TAP: unregister_code(KC_X);
} }
xtap_state.state = 0; xtap_state.state = TD_NONE;
} }
qk_tap_dance_action_t tap_dance_actions[] = { qk_tap_dance_action_t tap_dance_actions[] = {
@@ -343,9 +345,11 @@ enum td_keycodes {
// Define a type containing as many tapdance states as you need // Define a type containing as many tapdance states as you need
typedef enum { typedef enum {
SINGLE_TAP, TD_NONE,
SINGLE_HOLD, TD_UNKNOWN,
DOUBLE_SINGLE_TAP TD_SINGLE_TAP,
TD_SINGLE_HOLD,
TD_DOUBLE_SINGLE_TAP
} td_state_t; } td_state_t;
// Create a global instance of the tapdance state type // Create a global instance of the tapdance state type
@@ -354,7 +358,7 @@ static td_state_t td_state;
// Declare your tapdance functions: // Declare your tapdance functions:
// Function to determine the current tapdance state // Function to determine the current tapdance state
uint8_t cur_dance(qk_tap_dance_state_t *state); td_state_t cur_dance(qk_tap_dance_state_t *state);
// `finished` and `reset` functions for each tapdance keycode // `finished` and `reset` functions for each tapdance keycode
void altlp_finished(qk_tap_dance_state_t *state, void *user_data); void altlp_finished(qk_tap_dance_state_t *state, void *user_data);
@@ -365,14 +369,14 @@ Below your `LAYOUT`, define each of the tapdance functions:
```c ```c
// Determine the tapdance state to return // Determine the tapdance state to return
uint8_t cur_dance(qk_tap_dance_state_t *state) { td_state_t cur_dance(qk_tap_dance_state_t *state) {
if (state->count == 1) { if (state->count == 1) {
if (state->interrupted || !state->pressed) return SINGLE_TAP; if (state->interrupted || !state->pressed) return TD_SINGLE_TAP;
else return SINGLE_HOLD; else return TD_SINGLE_HOLD;
} }
if (state->count == 2) return DOUBLE_SINGLE_TAP; if (state->count == 2) return TD_DOUBLE_SINGLE_TAP;
else return 3; // Any number higher than the maximum state value you return above else return TD_UNKNOWN; // Any number higher than the maximum state value you return above
} }
// Handle the possible states for each tapdance keycode you define: // Handle the possible states for each tapdance keycode you define:
@@ -380,13 +384,13 @@ uint8_t cur_dance(qk_tap_dance_state_t *state) {
void altlp_finished(qk_tap_dance_state_t *state, void *user_data) { void altlp_finished(qk_tap_dance_state_t *state, void *user_data) {
td_state = cur_dance(state); td_state = cur_dance(state);
switch (td_state) { switch (td_state) {
case SINGLE_TAP: case TD_SINGLE_TAP:
register_code16(KC_LPRN); register_code16(KC_LPRN);
break; break;
case SINGLE_HOLD: case TD_SINGLE_HOLD:
register_mods(MOD_BIT(KC_LALT)); // For a layer-tap key, use `layer_on(_MY_LAYER)` here register_mods(MOD_BIT(KC_LALT)); // For a layer-tap key, use `layer_on(_MY_LAYER)` here
break; break;
case DOUBLE_SINGLE_TAP: // Allow nesting of 2 parens `((` within tapping term case TD_DOUBLE_SINGLE_TAP: // Allow nesting of 2 parens `((` within tapping term
tap_code16(KC_LPRN); tap_code16(KC_LPRN);
register_code16(KC_LPRN); register_code16(KC_LPRN);
} }
@@ -394,13 +398,13 @@ void altlp_finished(qk_tap_dance_state_t *state, void *user_data) {
void altlp_reset(qk_tap_dance_state_t *state, void *user_data) { void altlp_reset(qk_tap_dance_state_t *state, void *user_data) {
switch (td_state) { switch (td_state) {
case SINGLE_TAP: case TD_SINGLE_TAP:
unregister_code16(KC_LPRN); unregister_code16(KC_LPRN);
break; break;
case SINGLE_HOLD: case TD_SINGLE_HOLD:
unregister_mods(MOD_BIT(KC_LALT)); // For a layer-tap key, use `layer_off(_MY_LAYER)` here unregister_mods(MOD_BIT(KC_LALT)); // For a layer-tap key, use `layer_off(_MY_LAYER)` here
break; break;
case DOUBLE_SINGLE_TAP: case TD_DOUBLE_SINGLE_TAP:
unregister_code16(KC_LPRN); unregister_code16(KC_LPRN);
} }
} }
@@ -420,17 +424,19 @@ Tap Dance can be used to mimic MO(layer) and TG(layer) functionality. For this e
The first step is to include the following code towards the beginning of your `keymap.c`: The first step is to include the following code towards the beginning of your `keymap.c`:
```c ```c
// Define a type for as many tap dance states as you need
typedef enum {
TD_NONE,
TD_UNKNOWN,
TD_SINGLE_TAP,
TD_SINGLE_HOLD,
TD_DOUBLE_TAP
} td_state_t;
typedef struct { typedef struct {
bool is_press_action; bool is_press_action;
uint8_t state; td_state_t state;
} tap; } td_tap_t;
// Define a type for as many tap dance states as you need
enum {
SINGLE_TAP = 1,
SINGLE_HOLD,
DOUBLE_TAP
};
enum { enum {
QUOT_LAYR, // Our custom tap dance key; add any other tap dance keys to this enum QUOT_LAYR, // Our custom tap dance key; add any other tap dance keys to this enum
@@ -439,7 +445,7 @@ enum {
// Declare the functions to be used with your tap dance key(s) // Declare the functions to be used with your tap dance key(s)
// Function associated with all tap dances // Function associated with all tap dances
uint8_t cur_dance(qk_tap_dance_state_t *state); td_state_t cur_dance(qk_tap_dance_state_t *state);
// Functions associated with individual tap dances // Functions associated with individual tap dances
void ql_finished(qk_tap_dance_state_t *state, void *user_data); void ql_finished(qk_tap_dance_state_t *state, void *user_data);
@@ -450,31 +456,31 @@ Towards the bottom of your `keymap.c`, include the following code:
```c ```c
// Determine the current tap dance state // Determine the current tap dance state
uint8_t cur_dance(qk_tap_dance_state_t *state) { td_state_t cur_dance(qk_tap_dance_state_t *state) {
if (state->count == 1) { if (state->count == 1) {
if (!state->pressed) return SINGLE_TAP; if (!state->pressed) return TD_SINGLE_TAP;
else return SINGLE_HOLD; else return TD_SINGLE_HOLD;
} else if (state->count == 2) return DOUBLE_TAP; } else if (state->count == 2) return TD_DOUBLE_TAP;
else return 8; else return TD_UNKNOWN;
} }
// Initialize tap structure associated with example tap dance key // Initialize tap structure associated with example tap dance key
static tap ql_tap_state = { static td_tap_t ql_tap_state = {
.is_press_action = true, .is_press_action = true,
.state = 0 .state = TD_NONE
}; };
// Functions that control what our tap dance key does // Functions that control what our tap dance key does
void ql_finished(qk_tap_dance_state_t *state, void *user_data) { void ql_finished(qk_tap_dance_state_t *state, void *user_data) {
ql_tap_state.state = cur_dance(state); ql_tap_state.state = cur_dance(state);
switch (ql_tap_state.state) { switch (ql_tap_state.state) {
case SINGLE_TAP: case TD_SINGLE_TAP:
tap_code(KC_QUOT); tap_code(KC_QUOT);
break; break;
case SINGLE_HOLD: case TD_SINGLE_HOLD:
layer_on(_MY_LAYER); layer_on(_MY_LAYER);
break; break;
case DOUBLE_TAP: case TD_DOUBLE_TAP:
// Check to see if the layer is already set // Check to see if the layer is already set
if (layer_state_is(_MY_LAYER)) { if (layer_state_is(_MY_LAYER)) {
// If already set, then switch it off // If already set, then switch it off
@@ -489,10 +495,10 @@ void ql_finished(qk_tap_dance_state_t *state, void *user_data) {
void ql_reset(qk_tap_dance_state_t *state, void *user_data) { void ql_reset(qk_tap_dance_state_t *state, void *user_data) {
// If the key was held down and now is released then switch off the layer // If the key was held down and now is released then switch off the layer
if (ql_tap_state.state == SINGLE_HOLD) { if (ql_tap_state.state == TD_SINGLE_HOLD) {
layer_off(_MY_LAYER); layer_off(_MY_LAYER);
} }
ql_tap_state.state = 0; ql_tap_state.state = TD_NONE;
} }
// Associate our tap dance key with its functionality // Associate our tap dance key with its functionality
@@ -505,7 +511,7 @@ The above code is similar to that used in previous examples. The one point to no
The use of `cur_dance()` and `ql_tap_state` mirrors the above examples. The use of `cur_dance()` and `ql_tap_state` mirrors the above examples.
The `case:SINGLE_TAP` in `ql_finished` is similar to the above examples. The `SINGLE_HOLD` case works in conjunction with `ql_reset()` to switch to `_MY_LAYER` while the tap dance key is held, and to switch away from `_MY_LAYER` when the key is released. This mirrors the use of `MO(_MY_LAYER)`. The `DOUBLE_TAP` case works by checking whether `_MY_LAYER` is the active layer, and toggling it on or off accordingly. This mirrors the use of `TG(_MY_LAYER)`. The `case: TD_SINGLE_TAP` in `ql_finished` is similar to the above examples. The `TD_SINGLE_HOLD` case works in conjunction with `ql_reset()` to switch to `_MY_LAYER` while the tap dance key is held, and to switch away from `_MY_LAYER` when the key is released. This mirrors the use of `MO(_MY_LAYER)`. The `TD_DOUBLE_TAP` case works by checking whether `_MY_LAYER` is the active layer, and toggling it on or off accordingly. This mirrors the use of `TG(_MY_LAYER)`.
`tap_dance_actions[]` works similar to the above examples. Note that I used `ACTION_TAP_DANCE_FN_ADVANCED_TIME()` instead of `ACTION_TAP_DANCE_FN_ADVANCED()`. This is because I like my `TAPPING_TERM` to be short (\~175ms) for my non-tap-dance keys but find that this is too quick for me to reliably complete tap dance actions - thus the increased time of 275ms here. `tap_dance_actions[]` works similar to the above examples. Note that I used `ACTION_TAP_DANCE_FN_ADVANCED_TIME()` instead of `ACTION_TAP_DANCE_FN_ADVANCED()`. This is because I like my `TAPPING_TERM` to be short (\~175ms) for my non-tap-dance keys but find that this is too quick for me to reliably complete tap dance actions - thus the increased time of 275ms here.
+5 -3
View File
@@ -50,11 +50,13 @@ For convenience, QMK includes some Mod-Tap shortcuts to make common combinations
## Caveats ## Caveats
Unfortunately, these keycodes cannot be used in Mod-Taps or Layer-Taps, since any modifiers specified in the keycode are ignored. Currently, the `kc` argument of `MT()` is limited to the [Basic Keycode set](keycodes_basic.md), meaning you can't use keycodes like `LCTL()`, `KC_TILD`, or anything greater than `0xFF`. This is because QMK uses 16-bit keycodes, of which 3 bits are used for the function identifier, 1 bit for selecting right or left mods, and 4 bits to tell which mods are used, leaving only 8 bits for the keycode. Additionally, if at least one right-handed modifier is specified in a Mod-Tap, it will cause all modifiers specified to become right-handed, so it is not possible to mix and match the two - for example, Left Control and Right Shift would become Right Control and Right Shift.
Additionally, you may run into issues when using Remote Desktop Connection on Windows. Because these codes send shift very fast, Remote Desktop may miss the codes. Expanding this would be complicated, at best. Moving to a 32-bit keycode would solve a lot of this, but would double the amount of space that the keymap matrix uses. And it could potentially cause issues, too. If you need to apply modifiers to your tapped keycode, [Tap Dance](feature_tap_dance.md#example-5-using-tap-dance-for-advanced-mod-tap-and-layer-tap-keys) can be used to accomplish this.
To fix this, open Remote Desktop Connection, click on "Show Options", open the the "Local Resources" tab. In the keyboard section, change the drop down to "On this Computer". This will fix the issue, and allow the characters to work correctly. You may also run into issues when using Remote Desktop Connection on Windows. Because these keycodes send key events faster than a human, Remote Desktop could miss them.
To fix this, open Remote Desktop Connection, click on "Show Options", open the the "Local Resources" tab, and in the keyboard section, change the drop down to "On this Computer". This will fix the issue, and allow the characters to work correctly.
It can also be mitigated by increasing [`TAP_CODE_DELAY`](config_options.md#behaviors-that-can-be-configured).
## Other Resources ## Other Resources
+25
View File
@@ -0,0 +1,25 @@
{
"keyboard_name": "2Key2CrawlPad",
"url": "",
"maintainer": "qmk",
"width": 6.5,
"height": 2,
"layouts": {
"LAYOUT": {
"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":"K15", "x":4, "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":"K16", "x":5.5, "y":0.5}
]
}
}
}
+197
View File
@@ -0,0 +1,197 @@
{
"keyboard_name": "40percent.club 4x4",
"url": "",
"maintainer": "qmk",
"height": 4,
"width": 4,
"layouts": {
"LAYOUT_ortho_4x4": {
"layout": [
{"x":0, "y":0},
{"x":1, "y":0},
{"x":2, "y":0},
{"x":3, "y":0},
{"x":0, "y":1},
{"x":1, "y":1},
{"x":2, "y":1},
{"x":3, "y":1},
{"x":0, "y":2},
{"x":1, "y":2},
{"x":2, "y":2},
{"x":3, "y":2},
{"x":0, "y":3},
{"x":1, "y":3},
{"x":2, "y":3},
{"x":3, "y":3}
]
},
"LAYOUT_ortho_4x8": {
"layout": [
{"x":0, "y":0},
{"x":1, "y":0},
{"x":2, "y":0},
{"x":3, "y":0},
{"x":4, "y":0},
{"x":5, "y":0},
{"x":6, "y":0},
{"x":7, "y":0},
{"x":0, "y":1},
{"x":1, "y":1},
{"x":2, "y":1},
{"x":3, "y":1},
{"x":4, "y":1},
{"x":5, "y":1},
{"x":6, "y":1},
{"x":7, "y":1},
{"x":0, "y":2},
{"x":1, "y":2},
{"x":2, "y":2},
{"x":3, "y":2},
{"x":4, "y":2},
{"x":5, "y":2},
{"x":6, "y":2},
{"x":7, "y":2},
{"x":0, "y":3},
{"x":1, "y":3},
{"x":2, "y":3},
{"x":3, "y":3},
{"x":4, "y":3},
{"x":5, "y":3},
{"x":6, "y":3},
{"x":7, "y":3}
]
},
"LAYOUT_ortho_4x12": {
"layout": [
{"x":0, "y":0},
{"x":1, "y":0},
{"x":2, "y":0},
{"x":3, "y":0},
{"x":4, "y":0},
{"x":5, "y":0},
{"x":6, "y":0},
{"x":7, "y":0},
{"x":8, "y":0},
{"x":9, "y":0},
{"x":10, "y":0},
{"x":11, "y":0},
{"x":0, "y":1},
{"x":1, "y":1},
{"x":2, "y":1},
{"x":3, "y":1},
{"x":4, "y":1},
{"x":5, "y":1},
{"x":6, "y":1},
{"x":7, "y":1},
{"x":8, "y":1},
{"x":9, "y":1},
{"x":10, "y":1},
{"x":11, "y":1},
{"x":0, "y":2},
{"x":1, "y":2},
{"x":2, "y":2},
{"x":3, "y":2},
{"x":4, "y":2},
{"x":5, "y":2},
{"x":6, "y":2},
{"x":7, "y":2},
{"x":8, "y":2},
{"x":9, "y":2},
{"x":10, "y":2},
{"x":11, "y":2},
{"x":0, "y":3},
{"x":1, "y":3},
{"x":2, "y":3},
{"x":3, "y":3},
{"x":4, "y":3},
{"x":5, "y":3},
{"x":6, "y":3},
{"x":7, "y":3},
{"x":8, "y":3},
{"x":9, "y":3},
{"x":10, "y":3},
{"x":11, "y":3}
]
},
"LAYOUT_ortho_4x16": {
"layout": [
{"x":0, "y":0},
{"x":1, "y":0},
{"x":2, "y":0},
{"x":3, "y":0},
{"x":4, "y":0},
{"x":5, "y":0},
{"x":6, "y":0},
{"x":7, "y":0},
{"x":8, "y":0},
{"x":9, "y":0},
{"x":10, "y":0},
{"x":11, "y":0},
{"x":12, "y":0},
{"x":13, "y":0},
{"x":14, "y":0},
{"x":15, "y":0},
{"x":0, "y":1},
{"x":1, "y":1},
{"x":2, "y":1},
{"x":3, "y":1},
{"x":4, "y":1},
{"x":5, "y":1},
{"x":6, "y":1},
{"x":7, "y":1},
{"x":8, "y":1},
{"x":9, "y":1},
{"x":10, "y":1},
{"x":11, "y":1},
{"x":12, "y":1},
{"x":13, "y":1},
{"x":14, "y":1},
{"x":15, "y":1},
{"x":0, "y":2},
{"x":1, "y":2},
{"x":2, "y":2},
{"x":3, "y":2},
{"x":4, "y":2},
{"x":5, "y":2},
{"x":6, "y":2},
{"x":7, "y":2},
{"x":8, "y":2},
{"x":9, "y":2},
{"x":10, "y":2},
{"x":11, "y":2},
{"x":12, "y":2},
{"x":13, "y":2},
{"x":14, "y":2},
{"x":15, "y":2},
{"x":0, "y":3},
{"x":1, "y":3},
{"x":2, "y":3},
{"x":3, "y":3},
{"x":4, "y":3},
{"x":5, "y":3},
{"x":6, "y":3},
{"x":7, "y":3},
{"x":8, "y":3},
{"x":9, "y":3},
{"x":10, "y":3},
{"x":11, "y":3},
{"x":12, "y":3},
{"x":13, "y":3},
{"x":14, "y":3},
{"x":15, "y":3}
]
}
}
}
+183
View File
@@ -0,0 +1,183 @@
{
"keyboard_name": "40percent.club 4x4",
"url": "",
"maintainer": "qmk",
"height": 4,
"width": 4,
"layouts": {
"LAYOUT_ortho_5x5": {
"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},
{"x":1, "y":1},
{"x":2, "y":1},
{"x":3, "y":1},
{"x":4, "y":1},
{"x":0, "y":2},
{"x":1, "y":2},
{"x":2, "y":2},
{"x":3, "y":2},
{"x":4, "y":2},
{"x":0, "y":3},
{"x":1, "y":3},
{"x":2, "y":3},
{"x":3, "y":3},
{"x":4, "y":3},
{"x":0, "y":4},
{"x":1, "y":4},
{"x":2, "y":4},
{"x":3, "y":4},
{"x":4, "y":4}
]
},
"LAYOUT_ortho_5x10": {
"layout": [
{"x":0, "y":0},
{"x":1, "y":0},
{"x":2, "y":0},
{"x":3, "y":0},
{"x":4, "y":0},
{"x":5, "y":0},
{"x":6, "y":0},
{"x":7, "y":0},
{"x":8, "y":0},
{"x":9, "y":0},
{"x":0, "y":1},
{"x":1, "y":1},
{"x":2, "y":1},
{"x":3, "y":1},
{"x":4, "y":1},
{"x":5, "y":1},
{"x":6, "y":1},
{"x":7, "y":1},
{"x":8, "y":1},
{"x":9, "y":1},
{"x":0, "y":2},
{"x":1, "y":2},
{"x":2, "y":2},
{"x":3, "y":2},
{"x":4, "y":2},
{"x":5, "y":2},
{"x":6, "y":2},
{"x":7, "y":2},
{"x":8, "y":2},
{"x":9, "y":2},
{"x":0, "y":3},
{"x":1, "y":3},
{"x":2, "y":3},
{"x":3, "y":3},
{"x":4, "y":3},
{"x":5, "y":3},
{"x":6, "y":3},
{"x":7, "y":3},
{"x":8, "y":3},
{"x":9, "y":3},
{"x":0, "y":4},
{"x":1, "y":4},
{"x":2, "y":4},
{"x":3, "y":4},
{"x":4, "y":4},
{"x":5, "y":4},
{"x":6, "y":4},
{"x":7, "y":4},
{"x":8, "y":4},
{"x":9, "y":4}
]
},
"LAYOUT_ortho_5x15": {
"layout": [
{"x":0, "y":0},
{"x":1, "y":0},
{"x":2, "y":0},
{"x":3, "y":0},
{"x":4, "y":0},
{"x":5, "y":0},
{"x":6, "y":0},
{"x":7, "y":0},
{"x":8, "y":0},
{"x":9, "y":0},
{"x":10, "y":0},
{"x":11, "y":0},
{"x":12, "y":0},
{"x":13, "y":0},
{"x":14, "y":0},
{"x":0, "y":1},
{"x":1, "y":1},
{"x":2, "y":1},
{"x":3, "y":1},
{"x":4, "y":1},
{"x":5, "y":1},
{"x":6, "y":1},
{"x":7, "y":1},
{"x":8, "y":1},
{"x":9, "y":1},
{"x":10, "y":1},
{"x":11, "y":1},
{"x":12, "y":1},
{"x":13, "y":1},
{"x":14, "y":1},
{"x":0, "y":2},
{"x":1, "y":2},
{"x":2, "y":2},
{"x":3, "y":2},
{"x":4, "y":2},
{"x":5, "y":2},
{"x":6, "y":2},
{"x":7, "y":2},
{"x":8, "y":2},
{"x":9, "y":2},
{"x":10, "y":2},
{"x":11, "y":2},
{"x":12, "y":2},
{"x":13, "y":2},
{"x":14, "y":2},
{"x":0, "y":3},
{"x":1, "y":3},
{"x":2, "y":3},
{"x":3, "y":3},
{"x":4, "y":3},
{"x":5, "y":3},
{"x":6, "y":3},
{"x":7, "y":3},
{"x":8, "y":3},
{"x":9, "y":3},
{"x":10, "y":3},
{"x":11, "y":3},
{"x":12, "y":3},
{"x":13, "y":3},
{"x":14, "y":3},
{"x":0, "y":4},
{"x":1, "y":4},
{"x":2, "y":4},
{"x":3, "y":4},
{"x":4, "y":4},
{"x":5, "y":4},
{"x":6, "y":4},
{"x":7, "y":4},
{"x":8, "y":4},
{"x":9, "y":4},
{"x":10, "y":4},
{"x":11, "y":4},
{"x":12, "y":4},
{"x":13, "y":4},
{"x":14, "y":4}
]
}
}
}
+81
View File
@@ -0,0 +1,81 @@
{
"keyboard_name": "AEKISO60 Rev A",
"url": "",
"maintainer": "4pplet",
"width": 15,
"height": 5,
"layouts": {
"LAYOUT_all": {
"layout": [
{"x":0, "y":0, "w":1.25},
{"x":1.25, "y":0},
{"x":2.25, "y":0},
{"x":3.25, "y":0},
{"x":4.25, "y":0},
{"x":5.25, "y":0},
{"x":6.25, "y":0},
{"x":7.25, "y":0},
{"x":8.25, "y":0},
{"x":9.25, "y":0},
{"x":10.25, "y":0},
{"x":11.25, "y":0},
{"x":12.25, "y":0},
{"x":13.25, "y":0, "w":1.75},
{"x":0, "y":1, "w":1.75},
{"x":1.75, "y":1},
{"x":2.75, "y":1},
{"x":3.75, "y":1},
{"x":4.75, "y":1},
{"x":5.75, "y":1},
{"x":6.75, "y":1},
{"x":7.75, "y":1},
{"x":8.75, "y":1},
{"x":9.75, "y":1},
{"x":10.75, "y":1},
{"x":11.75, "y":1},
{"x":12.75, "y":1},
{"x":0, "y":2, "w":2},
{"x":2, "y":2},
{"x":3, "y":2},
{"x":4, "y":2},
{"x":5, "y":2},
{"x":6, "y":2},
{"x":7, "y":2},
{"x":8, "y":2},
{"x":9, "y":2},
{"x":10, "y":2},
{"x":11, "y":2},
{"x":12, "y":2},
{"x":13, "y":2},
{"x":14, "y":1, "h":2},
{"x":0, "y":3, "w":1.5},
{"x":1.5, "y":3},
{"x":2.5, "y":3},
{"x":3.5, "y":3},
{"x":4.5, "y":3},
{"x":5.5, "y":3},
{"x":6.5, "y":3},
{"x":7.5, "y":3},
{"x":8.5, "y":3},
{"x":9.5, "y":3},
{"x":10.5, "y":3},
{"x":11.5, "y":3},
{"x":12.5, "y":3, "w":1.5},
{"x":14, "y":3},
{"x":0, "y":4, "w":1.5},
{"x":1.5, "y":4, "w":1.25},
{"x":2.75, "y":4, "w":1.5},
{"x":4.25, "y":4, "w":2.75},
{"x":7, "y":4},
{"x":8, "y":4, "w":2.75},
{"x":10.75, "y":4, "w":1.5},
{"x":12.25, "y":4, "w":1.25},
{"x":13.5, "y":4, "w":1.5}
]
}
}
}
+87
View File
@@ -0,0 +1,87 @@
{
"keyboard_name": "Steezy60 Rev A",
"url": "",
"maintainer": "4pplet",
"width": 15,
"height": 5,
"layouts": {
"LAYOUT_all": {
"layout": [
{"x":0, "y":0},
{"x":1, "y":0},
{"x":2, "y":0},
{"x":3, "y":0},
{"x":4, "y":0},
{"x":5, "y":0},
{"x":6, "y":0},
{"x":7, "y":0},
{"x":8, "y":0},
{"x":9, "y":0},
{"x":10, "y":0},
{"x":11, "y":0},
{"x":12, "y":0},
{"x":13, "y":0},
{"x":14, "y":0},
{"x":0, "y":1, "w":1.5},
{"x":1.5, "y":1},
{"x":2.5, "y":1},
{"x":3.5, "y":1},
{"x":4.5, "y":1},
{"x":5.5, "y":1},
{"x":6.5, "y":1},
{"x":7.5, "y":1},
{"x":8.5, "y":1},
{"x":9.5, "y":1},
{"x":10.5, "y":1},
{"x":11.5, "y":1},
{"x":12.5, "y":1},
{"x":13.5, "y":1, "w":1.5},
{"x":0, "y":2, "w":1.75},
{"x":1.75, "y":2},
{"x":2.75, "y":2},
{"x":3.75, "y":2},
{"x":4.75, "y":2},
{"x":5.75, "y":2},
{"x":6.75, "y":2},
{"x":7.75, "y":2},
{"x":8.75, "y":2},
{"x":9.75, "y":2},
{"x":10.75, "y":2},
{"x":11.75, "y":2},
{"x":12.75, "y":2},
{"x":13.75, "y":2, "w":1.25},
{"x":0, "y":3},
{"x":1, "y":3},
{"x":2, "y":3},
{"x":3, "y":3},
{"x":4, "y":3},
{"x":5, "y":3},
{"x":6, "y":3},
{"x":7, "y":3},
{"x":8, "y":3},
{"x":9, "y":3},
{"x":10, "y":3},
{"x":11, "y":3},
{"x":12, "y":3},
{"x":13, "y":3},
{"x":14, "y":3},
{"x":0, "y":4},
{"x":1, "y":4},
{"x":2, "y":4},
{"x":3, "y":4},
{"x":4, "y":4, "w":2.25},
{"x":6.25, "y":4, "w":1.5},
{"x":7.75, "y":4, "w":2.25},
{"x":10, "y":4},
{"x":11, "y":4},
{"x":12, "y":4},
{"x":13, "y":4},
{"x":14, "y":4}
]
}
}
}
+20
View File
@@ -0,0 +1,20 @@
{
"keyboard_name": "6-Ball",
"url": "",
"maintainer": "qmk",
"width": 3,
"height": 3,
"layouts": {
"LAYOUT": {
"layout": [
{"x":0, "y":0.5},
{"x":1, "y":0},
{"x":2, "y":0.5},
{"x":0, "y":1.5},
{"x":1, "y":2},
{"x":2, "y":1.5}
]
}
}
}
+210
View File
@@ -0,0 +1,210 @@
{
"keyboard_name": "Framework",
"url": "",
"maintainer": "stevennguyen",
"width": 12,
"height": 5,
"layouts": {
"LAYOUT_ortho_5x12": {
"layout": [
{"x": 0, "y": 0},
{"x": 1, "y": 0},
{"x": 2, "y": 0},
{"x": 3, "y": 0},
{"x": 4, "y": 0},
{"x": 5, "y": 0},
{"x": 6, "y": 0},
{"x": 7, "y": 0},
{"x": 8, "y": 0},
{"x": 9, "y": 0},
{"x": 10, "y": 0},
{"x": 11, "y": 0},
{"x": 0, "y": 1},
{"x": 1, "y": 1},
{"x": 2, "y": 1},
{"x": 3, "y": 1},
{"x": 4, "y": 1},
{"x": 5, "y": 1},
{"x": 6, "y": 1},
{"x": 7, "y": 1},
{"x": 8, "y": 1},
{"x": 9, "y": 1},
{"x": 10, "y": 1},
{"x": 11, "y": 1},
{"x": 0, "y": 2},
{"x": 1, "y": 2},
{"x": 2, "y": 2},
{"x": 3, "y": 2},
{"x": 4, "y": 2},
{"x": 5, "y": 2},
{"x": 6, "y": 2},
{"x": 7, "y": 2},
{"x": 8, "y": 2},
{"x": 9, "y": 2},
{"x": 10, "y": 2},
{"x": 11, "y": 2},
{"x": 0, "y": 3},
{"x": 1, "y": 3},
{"x": 2, "y": 3},
{"x": 3, "y": 3},
{"x": 4, "y": 3},
{"x": 5, "y": 3},
{"x": 6, "y": 3},
{"x": 7, "y": 3},
{"x": 8, "y": 3},
{"x": 9, "y": 3},
{"x": 10, "y": 3},
{"x": 11, "y": 3},
{"x": 0, "y": 4},
{"x": 1, "y": 4},
{"x": 2, "y": 4},
{"x": 3, "y": 4},
{"x": 4, "y": 4},
{"x": 5, "y": 4},
{"x": 6, "y": 4},
{"x": 7, "y": 4},
{"x": 8, "y": 4},
{"x": 9, "y": 4},
{"x": 10, "y": 4},
{"x": 11, "y": 4}
]
},
"LAYOUT_ortho_5x12_1x2uC": {
"layout": [
{"x": 0, "y": 0},
{"x": 1, "y": 0},
{"x": 2, "y": 0},
{"x": 3, "y": 0},
{"x": 4, "y": 0},
{"x": 5, "y": 0},
{"x": 6, "y": 0},
{"x": 7, "y": 0},
{"x": 8, "y": 0},
{"x": 9, "y": 0},
{"x": 10, "y": 0},
{"x": 11, "y": 0},
{"x": 0, "y": 1},
{"x": 1, "y": 1},
{"x": 2, "y": 1},
{"x": 3, "y": 1},
{"x": 4, "y": 1},
{"x": 5, "y": 1},
{"x": 6, "y": 1},
{"x": 7, "y": 1},
{"x": 8, "y": 1},
{"x": 9, "y": 1},
{"x": 10, "y": 1},
{"x": 11, "y": 1},
{"x": 0, "y": 2},
{"x": 1, "y": 2},
{"x": 2, "y": 2},
{"x": 3, "y": 2},
{"x": 4, "y": 2},
{"x": 5, "y": 2},
{"x": 6, "y": 2},
{"x": 7, "y": 2},
{"x": 8, "y": 2},
{"x": 9, "y": 2},
{"x": 10, "y": 2},
{"x": 11, "y": 2},
{"x": 0, "y": 3},
{"x": 1, "y": 3},
{"x": 2, "y": 3},
{"x": 3, "y": 3},
{"x": 4, "y": 3},
{"x": 5, "y": 3},
{"x": 6, "y": 3},
{"x": 7, "y": 3},
{"x": 8, "y": 3},
{"x": 9, "y": 3},
{"x": 10, "y": 3},
{"x": 11, "y": 3},
{"x": 0, "y": 4},
{"x": 1, "y": 4},
{"x": 2, "y": 4},
{"x": 3, "y": 4},
{"x": 4, "y": 4},
{"x": 5, "y": 4, "w": 2},
{"x": 7, "y": 4},
{"x": 8, "y": 4},
{"x": 9, "y": 4},
{"x": 10, "y": 4},
{"x": 11, "y": 4}
]
},
"LAYOUT_preonic_2x2u": {
"layout": [
{"x": 0, "y": 0},
{"x": 1, "y": 0},
{"x": 2, "y": 0},
{"x": 3, "y": 0},
{"x": 4, "y": 0},
{"x": 5, "y": 0},
{"x": 6, "y": 0},
{"x": 7, "y": 0},
{"x": 8, "y": 0},
{"x": 9, "y": 0},
{"x": 10, "y": 0},
{"x": 11, "y": 0},
{"x": 0, "y": 1},
{"x": 1, "y": 1},
{"x": 2, "y": 1},
{"x": 3, "y": 1},
{"x": 4, "y": 1},
{"x": 5, "y": 1},
{"x": 6, "y": 1},
{"x": 7, "y": 1},
{"x": 8, "y": 1},
{"x": 9, "y": 1},
{"x": 10, "y": 1},
{"x": 11, "y": 1},
{"x": 0, "y": 2},
{"x": 1, "y": 2},
{"x": 2, "y": 2},
{"x": 3, "y": 2},
{"x": 4, "y": 2},
{"x": 5, "y": 2},
{"x": 6, "y": 2},
{"x": 7, "y": 2},
{"x": 8, "y": 2},
{"x": 9, "y": 2},
{"x": 10, "y": 2},
{"x": 11, "y": 2},
{"x": 0, "y": 3},
{"x": 1, "y": 3},
{"x": 2, "y": 3},
{"x": 3, "y": 3},
{"x": 4, "y": 3},
{"x": 5, "y": 3},
{"x": 6, "y": 3},
{"x": 7, "y": 3},
{"x": 8, "y": 3},
{"x": 9, "y": 3},
{"x": 10, "y": 3},
{"x": 11, "y": 3},
{"x": 0, "y": 4},
{"x": 1, "y": 4},
{"x": 2, "y": 4},
{"x": 3, "y": 4},
{"x": 4, "y": 4, "w": 2},
{"x": 6, "y": 4, "w": 2},
{"x": 8, "y": 4},
{"x": 9, "y": 4},
{"x": 10, "y": 4},
{"x": 11, "y": 4}
]
}
}
}
+2 -1
View File
@@ -1 +1,2 @@
VIA_ENABLE = yes VIA_ENABLE = yes
LEADER_ENABLE = no
@@ -0,0 +1,85 @@
{
"keyboard_name": "Constellation",
"url": "",
"maintainer": "Xelus22",
"width": 16,
"height": 5,
"layouts": {
"LAYOUT_all": {
"layout": [
{"x":0, "y":0},
{"x":1, "y":0},
{"x":2, "y":0},
{"x":3, "y":0},
{"x":4, "y":0},
{"x":5, "y":0},
{"x":6, "y":0},
{"x":7, "y":0},
{"x":8, "y":0},
{"x":9, "y":0},
{"x":10, "y":0},
{"x":11, "y":0},
{"x":12, "y":0},
{"x":13, "y":0},
{"x":14, "y":0},
{"x":15, "y":0},
{"x":0, "y":1, "w":1.5},
{"x":1.5, "y":1},
{"x":2.5, "y":1},
{"x":3.5, "y":1},
{"x":4.5, "y":1},
{"x":5.5, "y":1},
{"x":6.5, "y":1},
{"x":7.5, "y":1},
{"x":8.5, "y":1},
{"x":9.5, "y":1},
{"x":10.5, "y":1},
{"x":11.5, "y":1},
{"x":12.5, "y":1},
{"x":13.5, "y":1, "w":1.5},
{"x":15, "y":1},
{"x":0, "y":2, "w":1.75},
{"x":1.75, "y":2},
{"x":2.75, "y":2},
{"x":3.75, "y":2},
{"x":4.75, "y":2},
{"x":5.75, "y":2},
{"x":6.75, "y":2},
{"x":7.75, "y":2},
{"x":8.75, "y":2},
{"x":9.75, "y":2},
{"x":10.75, "y":2},
{"label":"\"", "x":11.75, "y":2},
{"x":12.75, "y":2, "w":2.25},
{"x":15, "y":2},
{"x":0, "y":3, "w":2.25},
{"x":2.25, "y":3},
{"x":3.25, "y":3},
{"x":4.25, "y":3},
{"x":5.25, "y":3},
{"x":6.25, "y":3},
{"x":7.25, "y":3},
{"x":8.25, "y":3},
{"x":9.25, "y":3},
{"x":10.25, "y":3},
{"x":11.25, "y":3},
{"x":12.25, "y":3, "w":1.75},
{"x":14, "y":3},
{"x":15, "y":3},
{"x":0, "y":4, "w":1.25},
{"x":1.25, "y":4, "w":1.25},
{"x":2.5, "y":4, "w":1.25},
{"x":3.75, "y":4, "w":6.25},
{"x":10, "y":4, "w":1.5},
{"x":11.5, "y":4, "w":1.5},
{"x":13, "y":4},
{"x":14, "y":4},
{"x":15, "y":4}
]
}
}
}
@@ -0,0 +1,87 @@
/* Copyright 2021 eithanshavit
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include QMK_KEYBOARD_H
enum layer_names {
_MAIN,
_LOWER,
_RAISE,
};
#define LOWER MO(_LOWER)
#define RAISE MO(_RAISE)
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_MAIN] = LAYOUT(
//┌────────┬────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┬────────┐┌────────┬────────┬────────┐
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, KC_MINS, KC_EQL, KC_GRV,
//├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤├────────┼────────┼────────┤
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_DEL, KC_LBRC, KC_RBRC, KC_BSLS,
//├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤├────────┼────────┼────────┤
KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_UP,
//├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤├────────┼────────┼────────┤
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_LEFT, KC_DOWN, KC_RIGHT,
//└────────┴────────┼────────┼────────┼────────┼────────┼────────┐ ┌────────┼────────┼────────┼────────┴────────┴────────┴────────┘└────────┴────────┴────────┘
KC_LCTL, KC_LALT, KC_LGUI, KC_SPC, KC_ENT, RAISE, LOWER, XXXXXXX
// └────────┴────────┴────────┴────────┘ └────────┴────────┴────────┴────────┘
),
[_LOWER] = LAYOUT(
//┌────────┬────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┬────────┐┌────────┬────────┬────────┐
RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MUTE, KC_VOLD, KC_VOLU,
//├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤├────────┼────────┼────────┤
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
//├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤├────────┼────────┼────────┤
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
//├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤├────────┼────────┼────────┤
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
//└────────┴────────┼────────┼────────┼────────┼────────┼────────┐ ┌────────┼────────┼────────┼────────┴────────┴────────┴────────┘└────────┴────────┴────────┘
_______, _______, _______, _______, _______, _______, _______, _______
// └────────┴────────┴────────┴────────┘ └────────┴────────┴────────┴────────┘
),
[_RAISE] = LAYOUT(
//┌────────┬────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┬────────┐┌────────┬────────┬────────┐
_______, _______, _______, _______, _______, _______, _______, KC_PEQL, KC_PSLS, KC_PAST, KC_PMNS, _______, _______, _______, _______,
//├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤├────────┼────────┼────────┤
_______, _______, _______, _______, _______, _______, _______, KC_P7, KC_P8, KC_P9, KC_PPLS, _______, _______, _______, _______,
//├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤├────────┼────────┼────────┤
_______, _______, _______, _______, _______, _______, _______, KC_P4, KC_P5, KC_P6, _______, _______, _______,
//├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤├────────┼────────┼────────┤
_______, _______, _______, _______, _______, _______, _______, KC_P1, KC_P2, KC_P3, _______, _______, _______, _______, _______,
//└────────┴────────┼────────┼────────┼────────┼────────┼────────┐ ┌────────┼────────┼────────┼────────┴────────┴────────┴────────┘└────────┴────────┴────────┘
_______, _______, _______, _______, _______, _______, KC_P0, KC_PDOT
// └────────┴────────┴────────┴────────┘ └────────┴────────┴────────┴────────┘
),
[3] = LAYOUT(
//┌────────┬────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┬────────┐┌────────┬────────┬────────┐
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
//├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤├────────┼────────┼────────┤
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
//├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤├────────┼────────┼────────┤
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
//├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤├────────┼────────┼────────┤
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
//└────────┴────────┼────────┼────────┼────────┼────────┼────────┐ ┌────────┼────────┼────────┼────────┴────────┴────────┴────────┘└────────┴────────┴────────┘
_______, _______, _______, _______, _______, _______, _______, _______
// └────────┴────────┴────────┴────────┘ └────────┴────────┴────────┴────────┘
)
};
@@ -0,0 +1,5 @@
# Default Breeze Layout + VIA support
![Breeze Layout Image](https://i.imgur.com/O8FJWD6.jpeg)
This is the default suggested layout for Breeze Split Keyboard, with VIA support.
@@ -0,0 +1,10 @@
VIA_ENABLE = yes
# LTO: link time optimization makes the build take slightly longer
# but makes the resulting .hex file smaller, which allows you to
# fit more features into smaller MCUs:
LTO_ENABLE = yes
# Support for these features make the hex file larger, but we want 'em:
MOUSEKEY_ENABLE = yes # Allow mapping of mouse control keys
EXTRAKEY_ENABLE = yes # Allow audio & system control keys
COMMAND_ENABLE = yes # Commands for debug and configuration
NKRO_ENABLE = yes # Support USB N-key roll over.
+78 -3
View File
@@ -2,11 +2,86 @@
"keyboard_name": "zodiark", "keyboard_name": "zodiark",
"url": "https://github.com/Aleblazer/qmk_firmware/tree/master/keyboards/zodiark", "url": "https://github.com/Aleblazer/qmk_firmware/tree/master/keyboards/zodiark",
"maintainer": "Aleblazer", "maintainer": "Aleblazer",
"width": 19, "width": 18,
"height": 8.48, "height": 6.25,
"layouts": { "layouts": {
"LAYOUT": { "LAYOUT": {
"layout": [{"label":"L03", "x":3, "y":0}, {"label":"R03", "x":15, "y":0}, {"label":"L02", "x":2, "y":0.125}, {"label":"L04", "x":4, "y":0.125}, {"label":"R02", "x":14, "y":0.125}, {"label":"R04", "x":16, "y":0.125}, {"label":"L05", "x":5, "y":0.25}, {"label":"R01", "x":13, "y":0.25}, {"label":"L00", "x":0, "y":0.53}, {"label":"L01", "x":1, "y":0.53}, {"label":"R05", "x":17, "y":0.53}, {"label":"R06", "x":18, "y":0.53}, {"label":"L13", "x":3, "y":1}, {"label":"R13", "x":15, "y":1}, {"label":"L12", "x":2, "y":1.125}, {"label":"L14", "x":4, "y":1.125}, {"label":"R12", "x":14, "y":1.125}, {"label":"R14", "x":16, "y":1.125}, {"label":"L15", "x":5, "y":1.25}, {"label":"R11", "x":13, "y":1.25}, {"label":"L10", "x":0, "y":1.53}, {"label":"L11", "x":1, "y":1.53}, {"label":"R15", "x":17, "y":1.53}, {"label":"R16", "x":18, "y":1.53}, {"label":"L06", "x":6, "y":1.7000000000000002}, {"label":"R00", "x":12, "y":1.7000000000000002}, {"label":"L23", "x":3, "y":2.0}, {"label":"R23", "x":15, "y":2.0}, {"label":"L22", "x":2, "y":2.125}, {"label":"L24", "x":4, "y":2.125}, {"label":"R22", "x":14, "y":2.125}, {"label":"R24", "x":16, "y":2.125}, {"label":"L25", "x":5, "y":2.25}, {"label":"R21", "x":13, "y":2.25}, {"label":"L20", "x":0, "y":2.5300000000000002}, {"label":"L21", "x":1, "y":2.5300000000000002}, {"label":"R25", "x":17, "y":2.5300000000000002}, {"label":"R26", "x":18, "y":2.5300000000000002}, {"label":"L16", "x":6, "y":2.7}, {"label":"R10", "x":12, "y":2.7}, {"label":"L33", "x":3, "y":3.0000000000000004}, {"label":"R33", "x":15, "y":3.0000000000000004}, {"label":"L32", "x":2, "y":3.1250000000000004}, {"label":"L34", "x":4, "y":3.1250000000000004}, {"label":"R32", "x":14, "y":3.1250000000000004}, {"label":"R34", "x":16, "y":3.1250000000000004}, {"label":"L35", "x":5, "y":3.2500000000000004}, {"label":"R31", "x":13, "y":3.2500000000000004}, {"label":"L30", "x":0, "y":3.5300000000000002}, {"label":"L31", "x":1, "y":3.5300000000000002}, {"label":"R35", "x":17, "y":3.5300000000000002}, {"label":"R36", "x":18, "y":3.5300000000000002}, {"label":"L43", "x":3, "y":4.0}, {"label":"R43", "x":15, "y":4.0}, {"label":"L42", "x":2, "y":4.125}, {"label":"R44", "x":16, "y":4.125}, {"label":"L44", "x":4, "y":4.13}, {"label":"R42", "x":14, "y":4.13}, {"label":"L40", "x":0, "y":4.53}, {"label":"L41", "x":1, "y":4.53}, {"label":"R45", "x":17, "y":4.53}, {"label":"R46", "x":18, "y":4.53}, {"label":"L26", "x":-0.33, "y":5.13}, {"label":"L36", "x":0.6699999999999999, "y":5.13}, {"label":"L45", "x":-0.83, "y":6.13, "w":1.5}, {"label":"L46", "x":0.67, "y":6.13}, {"label":"R30", "x":-2.1, "y":6.48}, {"label":"R20", "x":-1.1, "y":6.48}, {"label":"R40", "x":-2.1, "y":7.48}, {"label":"R41", "x":-1.1, "y":7.48, "w":1.5}] "layout": [
{"x":0, "y":0.53},
{"x":1, "y":0.53},
{"x":2, "y":0.125},
{"x":3, "y":0},
{"x":4, "y":0.125},
{"x":5, "y":0.25},
{"x":12, "y":0.25},
{"x":13, "y":0.125},
{"x":14, "y":0},
{"x":15, "y":0.125},
{"x":16, "y":0.53},
{"x":17, "y":0.53},
{"x":0, "y":1.53},
{"x":1, "y":1.53},
{"x":2, "y":1.125},
{"x":3, "y":1},
{"x":4, "y":1.125},
{"x":5, "y":1.25},
{"x":6, "y":1.7},
{"x":11, "y":1.7},
{"x":12, "y":1.25},
{"x":13, "y":1.125},
{"x":14, "y":1},
{"x":15, "y":1.125},
{"x":16, "y":1.53},
{"x":17, "y":1.53},
{"x":0, "y":2.53},
{"x":1, "y":2.53},
{"x":2, "y":2.125},
{"x":3, "y":2},
{"x":4, "y":2.125},
{"x":5, "y":2.25},
{"x":6, "y":2.7},
{"x":11, "y":2.7},
{"x":12, "y":2.25},
{"x":13, "y":2.125},
{"x":14, "y":2},
{"x":15, "y":2.125},
{"x":16, "y":2.53},
{"x":17, "y":2.53},
{"x":0, "y":3.53},
{"x":1, "y":3.53},
{"x":2, "y":3.125},
{"x":3, "y":3},
{"x":4, "y":3.125},
{"x":5, "y":3.25},
{"x":6.5, "y":4.25},
{"x":7.5, "y":4.25},
{"x":9.5, "y":4.25},
{"x":10.5, "y":4.25},
{"x":12, "y":3.25},
{"x":13, "y":3.125},
{"x":14, "y":3},
{"x":15, "y":3.125},
{"x":16, "y":3.53},
{"x":17, "y":3.53},
{"x":0, "y":4.53},
{"x":1, "y":4.53},
{"x":2, "y":4.125},
{"x":3, "y":4},
{"x":4, "y":4.125},
{"x":6, "y":5.25, "w":1.5},
{"x":7.5, "y":5.25},
{"x":9.5, "y":5.25},
{"x":10.5, "y":5.25, "w":1.5},
{"x":13, "y":4.125},
{"x":14, "y":4},
{"x":15, "y":4.125},
{"x":16, "y":4.53},
{"x":17, "y":4.53}
]
} }
} }
} }
+2 -2
View File
@@ -10,11 +10,11 @@ A split keyboard with 5x7 including a thumbcluster, encoders on each side, per k
Make example for this keyboard (after setting up your build environment): Make example for this keyboard (after setting up your build environment):
make zodiark:default make aleblazer/zodiark:default
Flashing example for this keyboard: Flashing example for this keyboard:
make zodiark:default:flash make aleblazer/zodiark:default:flash
Remove TRRS cable from halves, plug into one side, press reset button when asked. Repeat process on the other side. Remove TRRS cable from halves, plug into one side, press reset button when asked. Repeat process on the other side.
+84
View File
@@ -0,0 +1,84 @@
{
"keyboard_name": "Alpine65",
"url": "",
"maintainer": "Gondolindrim",
"width": 16.25,
"height": 5.25,
"layouts": {
"LAYOUT": {
"layout": [
{"x":0, "y":0},
{"x":1, "y":0},
{"x":2, "y":0},
{"x":3, "y":0},
{"x":4, "y":0},
{"x":5, "y":0},
{"x":6, "y":0},
{"x":7, "y":0},
{"x":8, "y":0},
{"x":9, "y":0},
{"x":10, "y":0},
{"x":11, "y":0},
{"x":12, "y":0},
{"x":13, "y":0, "w":2},
{"x":0, "y":1, "w":1.5},
{"x":1.5, "y":1},
{"x":2.5, "y":1},
{"x":3.5, "y":1},
{"x":4.5, "y":1},
{"x":5.5, "y":1},
{"x":6.5, "y":1},
{"x":7.5, "y":1},
{"x":8.5, "y":1},
{"x":9.5, "y":1},
{"x":10.5, "y":1},
{"x":11.5, "y":1},
{"x":12.5, "y":1},
{"x":13.5, "y":1, "w":1.5},
{"x":15.25, "y":1.25},
{"x":0, "y":2, "w":1.75},
{"x":1.75, "y":2},
{"x":2.75, "y":2},
{"x":3.75, "y":2},
{"x":4.75, "y":2},
{"x":5.75, "y":2},
{"x":6.75, "y":2},
{"x":7.75, "y":2},
{"x":8.75, "y":2},
{"x":9.75, "y":2},
{"x":10.75, "y":2},
{"x":11.75, "y":2},
{"x":12.75, "y":2, "w":2.25},
{"x":15.25, "y":2.25},
{"x":0, "y":3, "w":2.25},
{"x":2.25, "y":3},
{"x":3.25, "y":3},
{"x":4.25, "y":3},
{"x":5.25, "y":3},
{"x":6.25, "y":3},
{"x":7.25, "y":3},
{"x":8.25, "y":3},
{"x":9.25, "y":3},
{"x":10.25, "y":3},
{"x":11.25, "y":3},
{"x":12.25, "y":3, "w":1.75},
{"x":14.25, "y":3.25},
{"x":15.25, "y":3.25},
{"x":0, "y":4, "w":1.25},
{"x":1.25, "y":4, "w":1.25},
{"x":2.5, "y":4, "w":1.25},
{"x":3.75, "y":4, "w":6.25},
{"x":10, "y":4},
{"x":11, "y":4},
{"x":12, "y":4},
{"x":13.25, "y":4.25},
{"x":14.25, "y":4.25},
{"x":15.25, "y":4.25}
]
}
}
}
@@ -0,0 +1,48 @@
/* Copyright 2021 Leon Anavi <[email protected]>
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include QMK_KEYBOARD_H
enum custom_keycodes {
GITCOMMIT = SAFE_RANGE,
GITPUSH
};
void keyboard_post_init_user(void) {
// Set backlight to the maximum brightness
backlight_level(2);
}
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
switch (keycode) {
case GITCOMMIT:
if (record->event.pressed) {
SEND_STRING("git commit -s\n");
}
break;
case GITPUSH:
if (record->event.pressed) {
SEND_STRING("git push\n");
}
}
return true;
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = LAYOUT(
GITCOMMIT, GITPUSH
)
};
+20
View File
@@ -0,0 +1,20 @@
{
"keyboard_name": "Aplx6",
"url": "",
"maintainer": "Aplyard",
"width": 3,
"height": 2,
"layouts": {
"LAYOUT": {
"layout": [
{"x":0, "y":0},
{"x":1, "y":0},
{"x":2, "y":0},
{"x":0, "y":1},
{"x":1, "y":1},
{"x":2, "y":1}
]
}
}
}
+52
View File
@@ -0,0 +1,52 @@
{
"keyboard_name": "Arch-36",
"url": "",
"maintainer": "obosob",
"width": 14,
"height": 5.1,
"layouts": {
"LAYOUT_split_3x5_3": {
"layout": [
{"x":0, "y":1},
{"x":1, "y":0.25},
{"x":2, "y":0},
{"x":3, "y":0.375},
{"x":4, "y":0.5},
{"x":9, "y":0.5},
{"x":10, "y":0.375},
{"x":11, "y":0},
{"x":12, "y":0.25},
{"x":13, "y":1},
{"x":0, "y":2},
{"x":1, "y":1.25},
{"x":2, "y":1},
{"x":3, "y":1.375},
{"x":4, "y":1.5},
{"x":9, "y":1.5},
{"x":10, "y":1.375},
{"x":11, "y":1},
{"x":12, "y":1.25},
{"x":13, "y":2},
{"x":0, "y":3},
{"x":1, "y":2.25},
{"x":2, "y":2},
{"x":3, "y":2.375},
{"x":4, "y":2.5},
{"x":9, "y":2.5},
{"x":10, "y":2.375},
{"x":11, "y":2},
{"x":12, "y":2.25},
{"x":13, "y":3},
{"x":3.5, "y":3.5},
{"x":4.5, "y":3.7},
{"x":5.5, "y":4.1},
{"x":7.5, "y":4.1},
{"x":8.5, "y":3.7},
{"x":9.5, "y":3.5}
]
}
}
}
+84
View File
@@ -0,0 +1,84 @@
{
"keyboard_name": "Arisu",
"url": "https://github.com/FateNozomi/arisu-pcb",
"maintainer": "FateNozomi",
"width": 18.3,
"height": 5.25,
"layouts": {
"LAYOUT": {
"layout": [
{"x":0, "y":0},
{"x":1, "y":0},
{"x":2, "y":0},
{"x":3, "y":0},
{"x":4, "y":0},
{"x":5, "y":0},
{"x":6, "y":0},
{"x":9, "y":0},
{"x":10, "y":0},
{"x":11, "y":0},
{"x":12, "y":0},
{"x":13, "y":0},
{"x":14, "y":0},
{"x":15, "y":0},
{"x":16, "y":0},
{"x":17.3, "y":0},
{"x":0, "y":1, "w":1.5},
{"x":1.5, "y":1},
{"x":2.5, "y":1},
{"x":3.5, "y":1},
{"x":4.5, "y":1},
{"x":5.5, "y":1},
{"x":8.5, "y":1},
{"x":9.5, "y":1},
{"x":10.5, "y":1},
{"x":11.5, "y":1},
{"x":12.5, "y":1},
{"x":13.5, "y":1},
{"x":14.5, "y":1},
{"x":15.5, "y":1, "w":1.5},
{"x":17.3, "y":1},
{"x":0, "y":2, "w":1.75},
{"x":1.75, "y":2},
{"x":2.75, "y":2},
{"x":3.75, "y":2},
{"x":4.75, "y":2},
{"x":5.75, "y":2},
{"x":8.75, "y":2},
{"x":9.75, "y":2},
{"x":10.75, "y":2},
{"x":11.75, "y":2},
{"x":12.75, "y":2},
{"x":13.75, "y":2},
{"x":14.75, "y":2, "w":2.25},
{"x":17.3, "y":2},
{"x":0, "y":3, "w":2.25},
{"x":2.25, "y":3},
{"x":3.25, "y":3},
{"x":4.25, "y":3},
{"x":5.25, "y":3},
{"x":6.25, "y":3},
{"x":9.25, "y":3},
{"x":10.25, "y":3},
{"x":11.25, "y":3},
{"x":12.25, "y":3},
{"x":13.25, "y":3},
{"x":14.25, "y":3, "w":1.75},
{"x":16.3, "y":3.25},
{"x":0, "y":4, "w":1.5},
{"x":3.25, "y":4, "w":1.5},
{"x":4.75, "y":4, "w":2},
{"x":6.75, "y":4, "w":1.25},
{"x":8.75, "y":4, "w":2.75},
{"x":11.5, "y":4, "w":1.5},
{"x":15.3, "y":4.25},
{"x":16.3, "y":4.25},
{"x":17.3, "y":4.25}
]
}
}
}
+16
View File
@@ -0,0 +1,16 @@
/* Copyright 2021 Matthew Dias
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include "barleycorn_smd.h"
+63
View File
@@ -0,0 +1,63 @@
/* Copyright 2021 Matthew Dias
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#pragma once
#define XXX KC_NO
#include "quantum.h"
#define LAYOUT_all( \
K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K1D, K0E, K0F, K0G, K0H, \
K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K2C, K1E, K1F, K1G, K1H, \
K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2D, K2E, K2F, K2G, K2H, \
K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E, K3F, K3G, K3H, \
K40, K41, K42, K46, K4A, K4B, K4C, K4D, K4E, K4F, K4G, K4H \
) { \
{ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, K0F, K0G, K0H }, \
{ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, K1F, K1G, K1H }, \
{ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2E, K2F, K2G, K2H }, \
{ K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E, K3F, K3G, K3H }, \
{ K40, K41, K42, XXX, XXX, XXX, K46, XXX, XXX, XXX, K4A, K4B, K4C, K4D, K4E, K4F, K4G, K4H } \
}
#define LAYOUT_ansi( \
K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K1D, K0E, K0F, K0G, K0H, \
K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K2C, K1E, K1F, K1G, K1H, \
K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2D, K2E, K2F, K2G, K2H, \
K30, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E, K3F, K3G, K3H, \
K40, K41, K42, K46, K4A, K4B, K4C, K4D, K4E, K4F, K4G, K4H \
) { \
{ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, K0F, K0G, K0H }, \
{ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, K1F, K1G, K1H }, \
{ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2E, K2F, K2G, K2H }, \
{ K30, XXX, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E, K3F, K3G, K3H }, \
{ K40, K41, K42, XXX, XXX, XXX, K46, XXX, XXX, XXX, K4A, K4B, K4C, K4D, K4E, K4F, K4G, K4H } \
}
#define LAYOUT_iso( \
K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K1D, K0E, K0F, K0G, K0H, \
K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1E, K1F, K1G, K1H, \
K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2E, K2F, K2G, K2H, \
K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E, K3F, K3G, K3H, \
K40, K41, K42, K46, K4A, K4B, K4C, K4D, K4E, K4F, K4G, K4H \
) { \
{ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, K0F, K0G, K0H }, \
{ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, K1F, K1G, K1H }, \
{ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2E, K2F, K2G, K2H }, \
{ K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E, K3F, K3G, K3H }, \
{ K40, K41, K42, XXX, XXX, XXX, K46, XXX, XXX, XXX, K4A, K4B, K4C, K4D, K4E, K4F, K4G, K4H } \
}
+111
View File
@@ -0,0 +1,111 @@
/*
Copyright 2021 Matthew Dias
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#pragma once
#include "config_common.h"
#define VENDOR_ID 0x7033
#define PRODUCT_ID 0x4749
#define DEVICE_VER 0x0001
#define MANUFACTURER P3D Store
#define PRODUCT Barleycorn SMD
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 18
/*
* 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)
*
*/
/* A Custom matrix.c is used to poll the port expander C6 shows that the pins are hardwired there */
#define MATRIX_ROW_PINS { F5, F4, F1, F0, F6 }
#define MATRIX_COL_PINS { D4, D6, D7, B4, B5, B6, C6, C7, D5, D5, D5, D5, D5, D5, D5, D5, D5, D5 }
#define UNUSED_PINS
#define PORT_EXPANDER_ADDRESS 0x20
#define RGB_DI_PIN E6
#define RGBLED_NUM 15
#define RGBLIGHT_ANIMATIONS
#define RGBLIGHT_LED_MAP { 0, 1, 2, 3, 4, 6, 7, 8, 9, 10, 11, 12, 13, 14, 5 }
#define LED_CAPS_LOCK_PIN B2
#define LED_NUM_LOCK_PIN B3
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
#define USB_MAX_POWER_CONSUMPTION 400
/* 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
/*
* 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
+283
View File
@@ -0,0 +1,283 @@
{
"keyboard_name": "Barleycorn SMD",
"maintainer": "matthewdias",
"width": 19.5,
"height": 5,
"layouts": {
"LAYOUT_all": {
"layout": [
{ "label": "0,0", "x": 0, "y": 0 },
{ "label": "0,1", "x": 1, "y": 0 },
{ "label": "0,2", "x": 2, "y": 0 },
{ "label": "0,3", "x": 3, "y": 0 },
{ "label": "0,4", "x": 4, "y": 0 },
{ "label": "0,5", "x": 5, "y": 0 },
{ "label": "0,6", "x": 6, "y": 0 },
{ "label": "0,7", "x": 7, "y": 0 },
{ "label": "0,8", "x": 8, "y": 0 },
{ "label": "0,9", "x": 9, "y": 0 },
{ "label": "0,10", "x": 10, "y": 0 },
{ "label": "0,11", "x": 11, "y": 0 },
{ "label": "0,12", "x": 12, "y": 0 },
{ "label": "0,13", "x": 13, "y": 0 },
{ "label": "1,13", "x": 14, "y": 0 },
{ "label": "0,14", "x": 15.5, "y": 0 },
{ "label": "0,15", "x": 16.5, "y": 0 },
{ "label": "0,16", "x": 17.5, "y": 0 },
{ "label": "0,17", "x": 18.5, "y": 0 },
{ "label": "1,0", "x": 0, "y": 1, "w": 1.5 },
{ "label": "1,1", "x": 1.5, "y": 1 },
{ "label": "1,2", "x": 2.5, "y": 1 },
{ "label": "1,3", "x": 3.5, "y": 1 },
{ "label": "1,4", "x": 4.5, "y": 1 },
{ "label": "1,5", "x": 5.5, "y": 1 },
{ "label": "1,6", "x": 6.5, "y": 1 },
{ "label": "1,7", "x": 7.5, "y": 1 },
{ "label": "1,8", "x": 8.5, "y": 1 },
{ "label": "1,9", "x": 9.5, "y": 1 },
{ "label": "1,10", "x": 10.5, "y": 1 },
{ "label": "1,11", "x": 11.5, "y": 1 },
{ "label": "1,12", "x": 12.5, "y": 1 },
{ "label": "2,12", "x": 13.5, "y": 1, "w": 1.5 },
{ "label": "1,14", "x": 15.5, "y": 1 },
{ "label": "1,15", "x": 16.5, "y": 1 },
{ "label": "1,16", "x": 17.5, "y": 1 },
{ "label": "1,17", "x": 18.5, "y": 1 },
{ "label": "2,0", "x": 0, "y": 2, "w": 1.75 },
{ "label": "2,1", "x": 1.75, "y": 2 },
{ "label": "2,2", "x": 2.75, "y": 2 },
{ "label": "2,3", "x": 3.75, "y": 2 },
{ "label": "2,4", "x": 4.75, "y": 2 },
{ "label": "2,5", "x": 5.75, "y": 2 },
{ "label": "2,6", "x": 6.75, "y": 2 },
{ "label": "2,7", "x": 7.75, "y": 2 },
{ "label": "2,8", "x": 8.75, "y": 2 },
{ "label": "2,9", "x": 9.75, "y": 2 },
{ "label": "2,10", "x": 10.75, "y": 2 },
{ "label": "2,11", "x": 11.75, "y": 2 },
{ "label": "2,13", "x": 12.75, "y": 2, "w": 2.25 },
{ "label": "2,14", "x": 15.5, "y": 2 },
{ "label": "2,15", "x": 16.5, "y": 2 },
{ "label": "2,16", "x": 17.5, "y": 2 },
{ "label": "2,17", "x": 18.5, "y": 2 },
{ "label": "3,0", "x": 0, "y": 3, "w": 1.25 },
{ "label": "3,1", "x": 1.25, "y": 3 },
{ "label": "3,2", "x": 2.25, "y": 3 },
{ "label": "3,3", "x": 3.25, "y": 3 },
{ "label": "3,4", "x": 4.25, "y": 3 },
{ "label": "3,5", "x": 5.25, "y": 3 },
{ "label": "3,6", "x": 6.25, "y": 3 },
{ "label": "3,7", "x": 7.25, "y": 3 },
{ "label": "3,8", "x": 8.25, "y": 3 },
{ "label": "3,9", "x": 9.25, "y": 3 },
{ "label": "3,10", "x": 10.25, "y": 3 },
{ "label": "3,11", "x": 11.25, "y": 3 },
{ "label": "3,12", "x": 12.25, "y": 3, "w": 1.75 },
{ "label": "3,13", "x": 14.25, "y": 3.25 },
{ "label": "3,14", "x": 15.5, "y": 3 },
{ "label": "3,15", "x": 16.5, "y": 3 },
{ "label": "3,16", "x": 17.5, "y": 3 },
{ "label": "3,17", "x": 18.5, "y": 3 },
{ "label": "4,0", "x": 0, "y": 4, "w": 1.25 },
{ "label": "4,1", "x": 1.25, "y": 4, "w": 1.25 },
{ "label": "4,2", "x": 2.5, "y": 4, "w": 1.25 },
{ "label": "4,6", "x": 3.75, "y": 4, "w": 6.25 },
{ "label": "4,10", "x": 10, "y": 4, "w": 1.5 },
{ "label": "4,11", "x": 11.5, "y": 4, "w": 1.5 },
{ "label": "4,12", "x": 13.25, "y": 4.25 },
{ "label": "4,13", "x": 14.25, "y": 4.25 },
{ "label": "4,14", "x": 15.25, "y": 4.25 },
{ "label": "4,15", "x": 16.5, "y": 4 },
{ "label": "4,16", "x": 17.5, "y": 4 },
{ "label": "4,17", "x": 18.5, "y": 4 }
]
},
"LAYOUT_ansi": {
"layout": [
{ "label": "0,0", "x": 0, "y": 0 },
{ "label": "0,1", "x": 1, "y": 0 },
{ "label": "0,2", "x": 2, "y": 0 },
{ "label": "0,3", "x": 3, "y": 0 },
{ "label": "0,4", "x": 4, "y": 0 },
{ "label": "0,5", "x": 5, "y": 0 },
{ "label": "0,6", "x": 6, "y": 0 },
{ "label": "0,7", "x": 7, "y": 0 },
{ "label": "0,8", "x": 8, "y": 0 },
{ "label": "0,9", "x": 9, "y": 0 },
{ "label": "0,10", "x": 10, "y": 0 },
{ "label": "0,11", "x": 11, "y": 0 },
{ "label": "0,12", "x": 12, "y": 0 },
{ "label": "0,13", "x": 13, "y": 0 },
{ "label": "1,13", "x": 14, "y": 0 },
{ "label": "0,14", "x": 15.5, "y": 0 },
{ "label": "0,15", "x": 16.5, "y": 0 },
{ "label": "0,16", "x": 17.5, "y": 0 },
{ "label": "0,17", "x": 18.5, "y": 0 },
{ "label": "1,0", "x": 0, "y": 1, "w": 1.5 },
{ "label": "1,1", "x": 1.5, "y": 1 },
{ "label": "1,2", "x": 2.5, "y": 1 },
{ "label": "1,3", "x": 3.5, "y": 1 },
{ "label": "1,4", "x": 4.5, "y": 1 },
{ "label": "1,5", "x": 5.5, "y": 1 },
{ "label": "1,6", "x": 6.5, "y": 1 },
{ "label": "1,7", "x": 7.5, "y": 1 },
{ "label": "1,8", "x": 8.5, "y": 1 },
{ "label": "1,9", "x": 9.5, "y": 1 },
{ "label": "1,10", "x": 10.5, "y": 1 },
{ "label": "1,11", "x": 11.5, "y": 1 },
{ "label": "1,12", "x": 12.5, "y": 1 },
{ "label": "2,12", "x": 13.5, "y": 1, "w": 1.5 },
{ "label": "1,14", "x": 15.5, "y": 1 },
{ "label": "1,15", "x": 16.5, "y": 1 },
{ "label": "1,16", "x": 17.5, "y": 1 },
{ "label": "1,17", "x": 18.5, "y": 1 },
{ "label": "2,0", "x": 0, "y": 2, "w": 1.75 },
{ "label": "2,1", "x": 1.75, "y": 2 },
{ "label": "2,2", "x": 2.75, "y": 2 },
{ "label": "2,3", "x": 3.75, "y": 2 },
{ "label": "2,4", "x": 4.75, "y": 2 },
{ "label": "2,5", "x": 5.75, "y": 2 },
{ "label": "2,6", "x": 6.75, "y": 2 },
{ "label": "2,7", "x": 7.75, "y": 2 },
{ "label": "2,8", "x": 8.75, "y": 2 },
{ "label": "2,9", "x": 9.75, "y": 2 },
{ "label": "2,10", "x": 10.75, "y": 2 },
{ "label": "2,11", "x": 11.75, "y": 2 },
{ "label": "2,13", "x": 12.75, "y": 2, "w": 2.25 },
{ "label": "2,14", "x": 15.5, "y": 2 },
{ "label": "2,15", "x": 16.5, "y": 2 },
{ "label": "2,16", "x": 17.5, "y": 2 },
{ "label": "2,17", "x": 18.5, "y": 2 },
{ "label": "3,0", "x": 0, "y": 3, "w": 2.25 },
{ "label": "3,2", "x": 2.25, "y": 3 },
{ "label": "3,3", "x": 3.25, "y": 3 },
{ "label": "3,4", "x": 4.25, "y": 3 },
{ "label": "3,5", "x": 5.25, "y": 3 },
{ "label": "3,6", "x": 6.25, "y": 3 },
{ "label": "3,7", "x": 7.25, "y": 3 },
{ "label": "3,8", "x": 8.25, "y": 3 },
{ "label": "3,9", "x": 9.25, "y": 3 },
{ "label": "3,10", "x": 10.25, "y": 3 },
{ "label": "3,11", "x": 11.25, "y": 3 },
{ "label": "3,12", "x": 12.25, "y": 3, "w": 1.75 },
{ "label": "3,13", "x": 14.25, "y": 3.25 },
{ "label": "3,14", "x": 15.5, "y": 3 },
{ "label": "3,15", "x": 16.5, "y": 3 },
{ "label": "3,16", "x": 17.5, "y": 3 },
{ "label": "3,17", "x": 18.5, "y": 3 },
{ "label": "4,0", "x": 0, "y": 4, "w": 1.25 },
{ "label": "4,1", "x": 1.25, "y": 4, "w": 1.25 },
{ "label": "4,2", "x": 2.5, "y": 4, "w": 1.25 },
{ "label": "4,6", "x": 3.75, "y": 4, "w": 6.25 },
{ "label": "4,10", "x": 10, "y": 4, "w": 1.5 },
{ "label": "4,11", "x": 11.5, "y": 4, "w": 1.5 },
{ "label": "4,12", "x": 13.25, "y": 4.25 },
{ "label": "4,13", "x": 14.25, "y": 4.25 },
{ "label": "4,14", "x": 15.25, "y": 4.25 },
{ "label": "4,15", "x": 16.5, "y": 4 },
{ "label": "4,16", "x": 17.5, "y": 4 },
{ "label": "4,17", "x": 18.5, "y": 4 }
]
},
"LAYOUT_iso": {
"layout": [
{ "label": "0,0", "x": 0, "y": 0 },
{ "label": "0,1", "x": 1, "y": 0 },
{ "label": "0,2", "x": 2, "y": 0 },
{ "label": "0,3", "x": 3, "y": 0 },
{ "label": "0,4", "x": 4, "y": 0 },
{ "label": "0,5", "x": 5, "y": 0 },
{ "label": "0,6", "x": 6, "y": 0 },
{ "label": "0,7", "x": 7, "y": 0 },
{ "label": "0,8", "x": 8, "y": 0 },
{ "label": "0,9", "x": 9, "y": 0 },
{ "label": "0,10", "x": 10, "y": 0 },
{ "label": "0,11", "x": 11, "y": 0 },
{ "label": "0,12", "x": 12, "y": 0 },
{ "label": "0,13", "x": 13, "y": 0 },
{ "label": "1,13", "x": 14, "y": 0 },
{ "label": "0,14", "x": 15.5, "y": 0 },
{ "label": "0,15", "x": 16.5, "y": 0 },
{ "label": "0,16", "x": 17.5, "y": 0 },
{ "label": "0,17", "x": 18.5, "y": 0 },
{ "label": "1,0", "x": 0, "y": 1, "w": 1.5 },
{ "label": "1,1", "x": 1.5, "y": 1 },
{ "label": "1,2", "x": 2.5, "y": 1 },
{ "label": "1,3", "x": 3.5, "y": 1 },
{ "label": "1,4", "x": 4.5, "y": 1 },
{ "label": "1,5", "x": 5.5, "y": 1 },
{ "label": "1,6", "x": 6.5, "y": 1 },
{ "label": "1,7", "x": 7.5, "y": 1 },
{ "label": "1,8", "x": 8.5, "y": 1 },
{ "label": "1,9", "x": 9.5, "y": 1 },
{ "label": "1,10", "x": 10.5, "y": 1 },
{ "label": "1,11", "x": 11.5, "y": 1 },
{ "label": "1,12", "x": 12.5, "y": 1 },
{ "label": "1,14", "x": 15.5, "y": 1 },
{ "label": "1,15", "x": 16.5, "y": 1 },
{ "label": "1,16", "x": 17.5, "y": 1 },
{ "label": "1,17", "x": 18.5, "y": 1 },
{ "label": "2,0", "x": 0, "y": 2, "w": 1.75 },
{ "label": "2,1", "x": 1.75, "y": 2 },
{ "label": "2,2", "x": 2.75, "y": 2 },
{ "label": "2,3", "x": 3.75, "y": 2 },
{ "label": "2,4", "x": 4.75, "y": 2 },
{ "label": "2,5", "x": 5.75, "y": 2 },
{ "label": "2,6", "x": 6.75, "y": 2 },
{ "label": "2,7", "x": 7.75, "y": 2 },
{ "label": "2,8", "x": 8.75, "y": 2 },
{ "label": "2,9", "x": 9.75, "y": 2 },
{ "label": "2,10", "x": 10.75, "y": 2 },
{ "label": "2,11", "x": 11.75, "y": 2 },
{ "label": "2,12", "x": 12.75, "y": 2 },
{ "label": "2,13", "x": 13.75, "y": 1, "w": 1.25, "h": 2 },
{ "label": "2,14", "x": 15.5, "y": 2 },
{ "label": "2,15", "x": 16.5, "y": 2 },
{ "label": "2,16", "x": 17.5, "y": 2 },
{ "label": "2,17", "x": 18.5, "y": 2 },
{ "label": "3,0", "x": 0, "y": 3, "w": 1.25 },
{ "label": "3,1", "x": 1.25, "y": 3 },
{ "label": "3,2", "x": 2.25, "y": 3 },
{ "label": "3,3", "x": 3.25, "y": 3 },
{ "label": "3,4", "x": 4.25, "y": 3 },
{ "label": "3,5", "x": 5.25, "y": 3 },
{ "label": "3,6", "x": 6.25, "y": 3 },
{ "label": "3,7", "x": 7.25, "y": 3 },
{ "label": "3,8", "x": 8.25, "y": 3 },
{ "label": "3,9", "x": 9.25, "y": 3 },
{ "label": "3,10", "x": 10.25, "y": 3 },
{ "label": "3,11", "x": 11.25, "y": 3 },
{ "label": "3,12", "x": 12.25, "y": 3, "w": 1.75 },
{ "label": "3,13", "x": 14.25, "y": 3.25 },
{ "label": "3,14", "x": 15.5, "y": 3 },
{ "label": "3,15", "x": 16.5, "y": 3 },
{ "label": "3,16", "x": 17.5, "y": 3 },
{ "label": "3,17", "x": 18.5, "y": 3 },
{ "label": "4,0", "x": 0, "y": 4, "w": 1.25 },
{ "label": "4,1", "x": 1.25, "y": 4, "w": 1.25 },
{ "label": "4,2", "x": 2.5, "y": 4, "w": 1.25 },
{ "label": "4,6", "x": 3.75, "y": 4, "w": 6.25 },
{ "label": "4,10", "x": 10, "y": 4, "w": 1.5 },
{ "label": "4,11", "x": 11.5, "y": 4, "w": 1.5 },
{ "label": "4,12", "x": 13.25, "y": 4.25 },
{ "label": "4,13", "x": 14.25, "y": 4.25 },
{ "label": "4,14", "x": 15.25, "y": 4.25 },
{ "label": "4,15", "x": 16.5, "y": 4 },
{ "label": "4,16", "x": 17.5, "y": 4 },
{ "label": "4,17", "x": 18.5, "y": 4 }
]
}
}
}
@@ -0,0 +1,34 @@
/* Copyright 2021 Matthew Dias
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include QMK_KEYBOARD_H
//This is the ANSI version of the PCB
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = LAYOUT_ansi( /* Base */
KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL, KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS,
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_P7, KC_P8, KC_P9, KC_PEQL,
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_P4, KC_P5, KC_P6, KC_PPLS,
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_P1, KC_P2, KC_P3, KC_BSPC,
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT),
[1] = LAYOUT_ansi( /* FN */
KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_VOLU, KC_VOLD, KC_MUTE, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
};
@@ -0,0 +1,11 @@
# The default keymap for Barleycorn
![Layer 0](https://i.imgur.com/cU9lzz3.png)
![Layer 1](https://i.imgur.com/0G3e1K3.png)
Default layer is normal ANSI and Fn layer is used for Volume control and arrow cluster.
Alternative ANSI layouts:
![Alt Keymap](https://i.imgur.com/6uAx8jZ.png)
@@ -0,0 +1,34 @@
/* Copyright 2021 Matthew Dias
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include QMK_KEYBOARD_H
//This is the ISO version of the PCB
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = LAYOUT_iso( /* Base */
KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL, KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS,
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_P7, KC_P8, KC_P9, KC_PEQL,
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6, KC_PPLS,
KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_P1, KC_P2, KC_P3, KC_BSPC,
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT),
[1] = LAYOUT_iso( /* FN */
KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_VOLU, KC_VOLD, KC_MUTE, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
};
@@ -0,0 +1,11 @@
# The default keymap for ISO Barleycorn
![Layer 0](https://i.imgur.com/llZlVHt.png)
![Layer 1](https://i.imgur.com/hrYtMQk.png)
Default layer is normal ISO and Fn layer is used for Volume control and arrow cluster
Alternative ISO layouts:
![Alt Keymap](https://i.imgur.com/2cL0IGQ.png)
@@ -0,0 +1,48 @@
/* Copyright 2021 Matthew Dias
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include QMK_KEYBOARD_H
// This keymaps is used for VIA, it reflects the default keymap.
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = LAYOUT_all( /* Base */
KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL, KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS,
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_P7, KC_P8, KC_P9, KC_PEQL,
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_P4, KC_P5, KC_P6, KC_PPLS,
KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_P1, KC_P2, KC_P3, KC_BSPC,
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT),
[1] = LAYOUT_all( /* FN */
KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_VOLU, KC_VOLD, KC_MUTE, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
[2] = LAYOUT_all( /* Empty for dynamic keymaps */
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
[3] = LAYOUT_all( /* Empty for dynamic keymaps */
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
};
@@ -0,0 +1 @@
# Compile with this keymap to use VIA
@@ -0,0 +1 @@
VIA_ENABLE = yes
+138
View File
@@ -0,0 +1,138 @@
/*
Copyright 2021 Matthew Dias
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include <stdint.h>
#include <stdbool.h>
#include "wait.h"
#include "quantum.h"
#include "i2c_master.h"
static const pin_t row_pins[MATRIX_ROWS] = MATRIX_ROW_PINS;
static const pin_t col_pins[MATRIX_COLS] = MATRIX_COL_PINS;
static void unselect_rows(void) {
for(uint8_t x = 0; x < MATRIX_ROWS; x++) {
setPinInputHigh(row_pins[x]);
}
}
static void select_row(uint8_t row) {
setPinOutput(row_pins[row]);
writePinLow(row_pins[row]);
}
static void unselect_row(uint8_t row) {
setPinInputHigh(row_pins[row]);
}
static void init_pins(void) {
unselect_rows();
// Set I/O
uint8_t send_data[2] = { 0xFF, 0x03};
i2c_writeReg((PORT_EXPANDER_ADDRESS << 1), 0x00, &send_data[0], 2, 20);
// Set Pull-up
i2c_writeReg((PORT_EXPANDER_ADDRESS << 1), 0x0C, &send_data[0], 2, 20);
for (uint8_t x = 0; x < MATRIX_COLS; x++) {
if ( x < 8 ) {
setPinInputHigh(col_pins[x]);
}
}
}
void matrix_init_custom(void) {
// TODO: initialize hardware here
// Initialize I2C
i2c_init();
// initialize key pins
init_pins();
wait_ms(50);
}
static bool read_cols_on_row(matrix_row_t current_matrix[], uint8_t current_row) {
// Store last value of row prior to reading
matrix_row_t last_row_value = current_matrix[current_row];
// Clear data in matrix row
current_matrix[current_row] = 0;
// Select row and wait for row selecton to stabilize
select_row(current_row);
matrix_io_delay();
uint8_t port_expander_col_buffer[2];
i2c_readReg((PORT_EXPANDER_ADDRESS << 1), 0x12, &port_expander_col_buffer[0], 2, 20);
// For each col...
for(uint8_t col_index = 0; col_index < MATRIX_COLS; col_index++) {
uint8_t pin_state;
// Select the col pin to read (active low)
switch (col_index) {
case 8 :
pin_state = port_expander_col_buffer[0] & (1 << 0);
break;
case 9 :
pin_state = port_expander_col_buffer[0] & (1 << 1);
break;
case 10 :
pin_state = port_expander_col_buffer[0] & (1 << 2);
break;
case 11 :
pin_state = port_expander_col_buffer[0] & (1 << 3);
break;
case 12 :
pin_state = port_expander_col_buffer[0] & (1 << 4);
break;
case 13 :
pin_state = port_expander_col_buffer[0] & (1 << 5);
break;
case 14 :
pin_state = port_expander_col_buffer[0] & (1 << 6);
break;
case 15 :
pin_state = port_expander_col_buffer[0] & (1 << 7);
break;
case 16 :
pin_state = port_expander_col_buffer[1] & (1 << 0);
break;
case 17 :
pin_state = port_expander_col_buffer[1] & (1 << 1);
break;
default :
pin_state = readPin(col_pins[col_index]);
}
// Populate the matrix row with the state of the col pin
current_matrix[current_row] |= pin_state ? 0 : (MATRIX_ROW_SHIFTER << col_index);
}
// Unselect row
unselect_row(current_row);
return (last_row_value != current_matrix[current_row]);
}
bool matrix_scan_custom(matrix_row_t current_matrix[]) {
bool matrix_has_changed = false;
// Set row, read cols
for (uint8_t current_row = 0; current_row < MATRIX_ROWS; current_row++) {
matrix_has_changed |= read_cols_on_row(current_matrix, current_row);
}
return matrix_has_changed;
}
+19
View File
@@ -0,0 +1,19 @@
# Barleycorn SMD
![image](https://user-images.githubusercontent.com/3302524/110901245-a5679b00-82c9-11eb-8f8f-17ed6bd97332.png)
An f-row less compact 1800 keyboard with SMD components. Based on Barleycorn by Yiancar.
- Keyboard Maintainer: matthewdias
- Hardware Supported: Barleycorn SMD
- Hardware Availability: https://p3dstore.com
Make example for this keyboard (after setting up your build environment):
make barleycorn_smd:default
Flashing example for this keyboard:
make barleycorn_smd:default:flash
See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
+27
View File
@@ -0,0 +1,27 @@
# MCU name
MCU = atmega32u4
# Bootloader selection
BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
NKRO_ENABLE = no # USB Nkey Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
BLUETOOTH_ENABLE = no # Enable Bluetooth
AUDIO_ENABLE = no # Audio output
CUSTOM_MATRIX = lite
SRC += matrix.c
QUANTUM_LIB_SRC += i2c_master.c
@@ -29,3 +29,5 @@ NKRO_ENABLE = no # USB Nkey Rollover
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
OLED_DRIVER_ENABLE = yes # Disable OLED driver. OLED_DRIVER_ENABLE = yes # Disable OLED driver.
UNICODE_ENABLE = no # Unicode UNICODE_ENABLE = no # Unicode
LTO_ENABLE = yes
+11
View File
@@ -39,4 +39,15 @@ led_config_t g_led_config = {
2, 2, 2, 2, 2, 2 2, 2, 2, 2, 2, 2
} }
}; };
void suspend_power_down_kb(void) {
rgb_matrix_set_suspend_state(true);
suspend_power_down_user();
}
void suspend_wakeup_init_kb(void) {
rgb_matrix_set_suspend_state(false);
suspend_wakeup_init_user();
}
#endif #endif
+3
View File
@@ -50,3 +50,6 @@
#ifdef RGB_DI_PIN #ifdef RGB_DI_PIN
#define RGB_MATRIX_KEYPRESSES // reacts to keypresses #define RGB_MATRIX_KEYPRESSES // reacts to keypresses
#endif #endif
#ifdef RGB_MATRIX_ENABLE
# define RGB_DISABLE_WHEN_USB_SUSPENDED true // turn off effects when suspended
#endif
+12 -27
View File
@@ -26,34 +26,19 @@ led_config_t g_led_config = { {
{ 58, 59, 60, NO_LED, NO_LED, NO_LED, 61, NO_LED, NO_LED, 62, 63, 64, 65, 66, 67 } { 58, 59, 60, NO_LED, NO_LED, NO_LED, 61, NO_LED, NO_LED, 62, 63, 64, 65, 66, 67 }
}, { }, {
// LED Index to Physical Position // LED Index to Physical Position
//I have no idea how to calculate this based on a templete, nor do have a good enough ruler to measure this. { 0, 0}, { 15, 0}, { 30, 0}, { 45, 0}, { 60, 0}, { 75, 0}, { 90, 0}, {105, 0}, {120, 0}, {135, 0}, {150, 0}, {165, 0}, {180, 0}, {202, 0}, {225, 0}, // Esc, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, -, =, Backspace, Delete
// Esc, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, -, =, Backspace, Delete { 4, 16}, { 22, 16}, { 37, 16}, { 52, 16}, { 67, 16}, { 82, 16}, { 97, 16}, {112, 16}, {127, 16}, {142, 16}, {157, 16}, {172, 16}, {187, 16}, {206, 16}, {225, 16}, // Tab, Q, W, E, R, T, Y, U, I, O, P, [, ], backslash , Home
{ 0, 0 }, { 15, 0 }, { 30, 0 }, { 45, 0 }, { 60, 0 }, { 75, 0 }, { 90, 0 }, { 105, 0 }, { 120, 0 }, { 135, 0 }, { 150, 0 }, { 165, 0 }, { 180, 0 }, { 202, 0 }, { 225, 0 }, { 6, 32}, { 26, 32}, { 41, 32}, { 56, 32}, { 71, 32}, { 86, 32}, {101, 32}, {116, 32}, {131, 32}, {146, 32}, {161, 32}, {176, 32}, {201, 32}, {225, 32}, // Capslock, A, S, D, F, G, H, J, K, L, ;, ', Enter, Page up
// Tab, Q, W, E, R, T, Y, U, I, O, P, [, ], backslash , Home { 9, 48}, { 34, 48}, { 49, 48}, { 64, 48}, { 79, 48}, { 94, 48}, {109, 48}, {124, 48}, {139, 48}, {154, 48}, {169, 48}, {189, 48}, { 10, 48}, {225, 48}, // LShift, Z, X, C, V, B, N, M, ,, ., /, Shift, Up, Page Down
{ 4, 16 }, { 22, 16 }, { 37, 16 }, { 52, 16 }, { 67, 16 }, { 82, 16 }, { 97, 16 }, { 112, 16 }, { 127, 16 }, { 142, 16 }, { 157, 16 }, { 172, 16 }, { 187, 16 }, { 206, 16 }, { 225, 16 }, { 2, 64}, { 21, 64}, { 39, 64}, { 94, 64}, {148, 64}, {163, 64}, {178, 64}, {193, 64}, {208, 64}, {225, 64}, // Ctrl, GUI, Alt, Space, RAlt, FN, Ctrl, Left, Down, Right
// Capslock, A, S, D, F, G, H, J, K, L, ;, ', Enter, Page up {185, 45}, {160, 45}, {125, 45}, { 95, 45}, { 60, 45}, { 25, 45} // UNDERGLOW
{ 6, 32 }, { 26, 32 }, { 41, 32 }, { 56, 32 }, { 71, 32 }, { 86, 32 }, { 101, 32 }, { 116, 32 }, { 131, 32 }, { 146, 32 }, { 161, 32 }, { 176, 32 }, { 201, 32 }, { 225, 32 },
// LShift, Z, X, C, V, B, N, M, ,, ., /, Shift, Up, Page Down
{ 9, 48 }, { 34, 48 }, { 49, 48 }, { 64, 48 }, { 79, 48 }, { 94, 48 }, { 109, 48 }, { 124, 48 }, { 139, 48 }, { 154, 48 }, { 169, 48 }, { 189, 48 }, { 210, 48 }, { 225, 48 },
// Ctrl, GUI, Alt, Space, RAlt, FN, Ctrl, Left, Down, Right
{ 2, 64 }, { 21, 64 }, { 39, 64 }, { 94, 64 }, { 148, 64 }, { 163, 64 }, { 178, 64 }, { 193, 64 }, { 208, 64 }, { 225, 64 },
// UNDERGLOW
{ 185, 45 }, { 160, 45 }, { 125, 45 }, { 95, 45 }, { 60, 45 }, { 25, 45 }
}, { }, {
// LED Index to Flag // LED Index to Flag
//need to recheck what should be a modifier 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, // Esc, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, -, =, Backspace, Delete
1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, // Tab, Q, W, E, R, T, Y, U, I, O, P, [, ], backslash , Home
// Esc, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, -, =, Backspace, Delete 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, // Capslock, A, S, D, F, G, H, J, K, L, ;, ', Enter, Page up
1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 1, // LShift, Z, X, C, V, B, N, M, ,, ., /, Shift, Up, Page Down
// Tab, Q, W, E, R, T, Y, U, I, O, P, [, ], backslash , Home 1, 1, 1, 4, 1, 1, 1, 1, 1, 1, // Ctrl, GUI, Alt, Space, RAlt, FN, Ctrl, Left, Down, Right
1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 2, 2, 2, 2, 2, 2 // UNDERGLOW
// Capslock, A, S, D, F, G, H, J, K, L, ;, ', Enter, Page up
1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
// LShift, Z, X, C, V, B, N, M, ,, ., /, Shift, Up, Page Down
1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 1,
// Ctrl, GUI, Alt, Space, RAlt, FN, Ctrl, Left, Down, Right
1, 1, 1, 4, 1, 1, 1, 1, 1, 1,
// UNDERGLOW
2, 2, 2, 2, 2, 2
} }; } };
#endif #endif
+2 -24
View File
@@ -56,30 +56,8 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
// The number of LEDs connected // The number of LEDs connected
#define DRIVER_LED_TOTAL 74 #define DRIVER_LED_TOTAL 74
#ifdef RGB_DI_PIN #ifdef RGB_DI_PIN
#define RGBLED_NUM 74 #define RGBLED_NUM 74
//# define RGBLIGHT_HUE_STEP 8 #define RGB_MATRIX_KEYPRESSES // reacts to keypresses
//# 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
/*== customize breathing effect ==*/
/*==== (DEFAULT) use fixed table instead of exp() and sin() ====*/
//# define RGBLIGHT_BREATHE_TABLE_SIZE 256 // 256(default) or 128 or 64
/*==== use exp() and sin() ====*/
//# define RGBLIGHT_EFFECT_BREATHE_CENTER 1.85 // 1 to 2.7
//# define RGBLIGHT_EFFECT_BREATHE_MAX 255 // 0 to 255
#endif #endif
/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ /* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
+2 -2
View File
@@ -27,7 +27,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL, KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL,
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_HOME, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_HOME,
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGUP, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGUP,
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_LSFT, KC_UP, 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_PGDN,
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1),KC_RCTRL, KC_LEFT, KC_DOWN, KC_RGHT KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1),KC_RCTRL, KC_LEFT, KC_DOWN, KC_RGHT
), ),
[1] = LAYOUT_65_ansi( [1] = LAYOUT_65_ansi(
@@ -41,7 +41,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
}; };
/* /*
Templete Template
[ ] = LAYOUT_65_ansi( [ ] = LAYOUT_65_ansi(
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+55
View File
@@ -0,0 +1,55 @@
/* Copyright 2021 peepeetee
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include QMK_KEYBOARD_H
// Defines names for use in layer keycodes and the keymap
// enum layer_names {
// _BASE,
// _FN
// };
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = LAYOUT_65_ansi(
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL,
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_HOME,
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGUP,
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_LSFT, KC_UP, KC_PGDN,
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1),KC_RCTRL, KC_LEFT, KC_DOWN, KC_RGHT
),
[1] = LAYOUT_65_ansi(
KC_GRAVE, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______,
_______, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, RESET, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______
),
[2] = LAYOUT_65_ansi(
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______
),
[3] = LAYOUT_65_ansi(
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______
),
};
+1
View File
@@ -0,0 +1 @@
# The default VIA keymap for bm68rgb
+1
View File
@@ -0,0 +1 @@
VIA_ENABLE = yes
+2 -2
View File
@@ -7,7 +7,7 @@ BOOTLOADER = atmel-dfu
# Build Options # Build Options
# change yes to no to disable # change yes to no to disable
# #
BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration BOOTMAGIC_ENABLE = full # Virtual DIP switch configuration
MOUSEKEY_ENABLE = yes # Mouse keys MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug CONSOLE_ENABLE = no # Console for debug
@@ -22,6 +22,6 @@ BLUETOOTH_ENABLE = no # Enable Bluetooth
AUDIO_ENABLE = no # Audio output AUDIO_ENABLE = no # Audio output
RGB_MATRIX_ENABLE = yes RGB_MATRIX_ENABLE = yes
RGB_MATRIX_DRIVER = WS2812 RGB_MATRIX_DRIVER = WS2812
#LTO_ENABLE = yes LTO_ENABLE = yes
LAYOUTS = 65_ansi LAYOUTS = 65_ansi
+1 -1
View File
@@ -5,7 +5,7 @@
"width": 12, "width": 12,
"height": 5, "height": 5,
"layouts": { "layouts": {
"LAYOUT": { "LAYOUT_ortho_5x12": {
"layout": [ "layout": [
{ "label": "K01", "x": 0, "y": 0 }, { "label": "K01", "x": 0, "y": 0 },
{ "label": "K02", "x": 1, "y": 0 }, { "label": "K02", "x": 1, "y": 0 },
@@ -2,3 +2,4 @@ OLED_DRIVER_ENABLE = yes
VIA_ENABLE = yes VIA_ENABLE = yes
EXTRAKEY_ENABLE = yes EXTRAKEY_ENABLE = yes
RGBLIGHT_ENABLE = yes RGBLIGHT_ENABLE = yes
LTO_ENABLE = yes
+1
View File
@@ -58,6 +58,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#ifdef RGB_MATRIX_ENABLE #ifdef RGB_MATRIX_ENABLE
#define DRIVER_LED_TOTAL 24 // Number of LEDs #define DRIVER_LED_TOTAL 24 // Number of LEDs
#define RGB_MATRIX_MAXIMUM_BRIGHTNESS 200 #define RGB_MATRIX_MAXIMUM_BRIGHTNESS 200
#define RGB_DISABLE_WHEN_USB_SUSPENDED true // turn off effects when suspended
#endif #endif
/* /*
+11
View File
@@ -35,4 +35,15 @@ led_config_t g_led_config = { {
LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL,
LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL
} }; } };
void suspend_power_down_kb(void) {
rgb_matrix_set_suspend_state(true);
suspend_power_down_user();
}
void suspend_wakeup_init_kb(void) {
rgb_matrix_set_suspend_state(false);
suspend_wakeup_init_user();
}
#endif #endif
+14 -13
View File
@@ -1,12 +1,13 @@
{ {
"keyboard_name": "boston", "keyboard_name": "boston",
"url": "https://github.com/bluepylons/Boston", "url": "https://github.com/bluepylons/Boston",
"maintainer": "Pylon", "maintainer": "bluepylons",
"width": 20.5, "width": 20.5,
"height": 7.75, "height": 7.75,
"layouts": { "layouts": {
"LAYOUT": { "LAYOUT_all": {
"layout": [ "layout": [
{"label":"Encoder", "x":0, "y":0},
{"label":"P1", "x":1.5, "y":0}, {"label":"P1", "x":1.5, "y":0},
{"label":"P2", "x":2.5, "y":0}, {"label":"P2", "x":2.5, "y":0},
{"label":"P3", "x":3.5, "y":0}, {"label":"P3", "x":3.5, "y":0},
@@ -25,6 +26,7 @@
{"label":"Insert", "x":17.5, "y":0}, {"label":"Insert", "x":17.5, "y":0},
{"label":"Home", "x":18.5, "y":0}, {"label":"Home", "x":18.5, "y":0},
{"label":"PgUp", "x":19.5, "y":0}, {"label":"PgUp", "x":19.5, "y":0},
{"label":"Esc", "x":0, "y":1}, {"label":"Esc", "x":0, "y":1},
{"label":"F1", "x":1.5, "y":1}, {"label":"F1", "x":1.5, "y":1},
{"label":"F2", "x":2.5, "y":1}, {"label":"F2", "x":2.5, "y":1},
@@ -56,11 +58,11 @@
{"label":"*", "x":8, "y":2.5}, {"label":"*", "x":8, "y":2.5},
{"label":"(", "x":9, "y":2.5}, {"label":"(", "x":9, "y":2.5},
{"label":")", "x":10, "y":2.5}, {"label":")", "x":10, "y":2.5},
{"label":"_", "x":11, "y":2.5}, {"label":"_", "x":11, "y":2.5},
{"label":"+", "x":12, "y":2.5}, {"label":"+", "x":12, "y":2.5},
{"label":"Backspace", "x":13, "y":2.5}, {"label":"Backspace", "x":13, "y":2.5},
{"label":"Backspace", "x":14, "y":2.5}, {"label":"Backspace", "x":14, "y":2.5},
{"label":"P16", "x":15.25, "y":2.5}, {"label":"P16", "x":15.25, "y":2.5},
{"label":"Num Lock", "x":16.5, "y":2.5}, {"label":"Num Lock", "x":16.5, "y":2.5},
{"label":"/", "x":17.5, "y":2.5}, {"label":"/", "x":17.5, "y":2.5},
{"label":"*", "x":18.5, "y":2.5}, {"label":"*", "x":18.5, "y":2.5},
@@ -119,13 +121,12 @@
{"label":">", "x":10.25, "y":5.5}, {"label":">", "x":10.25, "y":5.5},
{"label":"?", "x":11.25, "y":5.5}, {"label":"?", "x":11.25, "y":5.5},
{"label":"Right Shift", "x":12.25, "y":5.5, "w":1.75}, {"label":"Right Shift", "x":12.25, "y":5.5, "w":1.75},
{"label":"Up", "x":14.25, "y":5.75}, {"label":"Up", "x":14.25, "y":5.75},
{"label":"1", "x":16.5, "y":5.5}, {"label":"1", "x":16.5, "y":5.5},
{"label":"2", "x":17.5, "y":5.5}, {"label":"2", "x":17.5, "y":5.5},
{"label":"3", "x":18.5, "y":5.5}, {"label":"3", "x":18.5, "y":5.5},
{"label":"Enter", "x":19.5, "y":5.5, "h":2}, {"label":"Enter", "x":19.5, "y":5.5, "h":2},
{"label":"Ctrl", "x":0, "y":6.5, "w":1.25}, {"label":"Ctrl", "x":0, "y":6.5, "w":1.25},
{"label":"OS", "x":1.25, "y":6.5, "w":1.25}, {"label":"OS", "x":1.25, "y":6.5, "w":1.25},
{"label":"Alt", "x":2.5, "y":6.5, "w":1.25}, {"label":"Alt", "x":2.5, "y":6.5, "w":1.25},
+102
View File
@@ -0,0 +1,102 @@
{
"keyboard_name": "BOX75",
"url": "",
"maintainer": "Gondolindrim",
"width": 16.25,
"height": 6.375,
"layouts": {
"LAYOUT": {
"layout": [
{"x":0, "y":0},
{"x":1.25, "y":0},
{"x":2.25, "y":0},
{"x":3.25, "y":0},
{"x":4.25, "y":0},
{"x":5.5, "y":0},
{"x":6.5, "y":0},
{"x":7.5, "y":0},
{"x":8.5, "y":0},
{"x":9.75, "y":0},
{"x":10.75, "y":0},
{"x":11.75, "y":0},
{"x":12.75, "y":0},
{"x":14, "y":0},
{"x":15.25, "y":0},
{"x":0, "y":1.25},
{"x":1, "y":1.25},
{"x":2, "y":1.25},
{"x":3, "y":1.25},
{"x":4, "y":1.25},
{"x":5, "y":1.25},
{"x":6, "y":1.25},
{"x":7, "y":1.25},
{"x":8, "y":1.25},
{"x":9, "y":1.25},
{"x":10, "y":1.25},
{"x":11, "y":1.25},
{"x":12, "y":1.25},
{"x":13, "y":1.25},
{"x":14, "y":1.25},
{"x":15.25, "y":1.25},
{"x":0, "y":2.25, "w":1.5},
{"x":1.5, "y":2.25},
{"x":2.5, "y":2.25},
{"x":3.5, "y":2.25},
{"x":4.5, "y":2.25},
{"x":5.5, "y":2.25},
{"x":6.5, "y":2.25},
{"x":7.5, "y":2.25},
{"x":8.5, "y":2.25},
{"x":9.5, "y":2.25},
{"x":10.5, "y":2.25},
{"x":11.5, "y":2.25},
{"x":12.5, "y":2.25},
{"x":13.5, "y":2.25, "w":1.5},
{"x":15.25, "y":2.25},
{"x":0, "y":3.25, "w":1.75},
{"x":1.75, "y":3.25},
{"x":2.75, "y":3.25},
{"x":3.75, "y":3.25},
{"x":4.75, "y":3.25},
{"x":5.75, "y":3.25},
{"x":6.75, "y":3.25},
{"x":7.75, "y":3.25},
{"x":8.75, "y":3.25},
{"x":9.75, "y":3.25},
{"x":10.75, "y":3.25},
{"x":11.75, "y":3.25},
{"x":12.75, "y":3.25, "w":2.25},
{"x":15.25, "y":3.25},
{"x":0, "y":4.25, "w":1.25},
{"x":1.25, "y":4.25},
{"x":2.25, "y":4.25},
{"x":3.25, "y":4.25},
{"x":4.25, "y":4.25},
{"x":5.25, "y":4.25},
{"x":6.25, "y":4.25},
{"x":7.25, "y":4.25},
{"x":8.25, "y":4.25},
{"x":9.25, "y":4.25},
{"x":10.25, "y":4.25},
{"x":11.25, "y":4.25},
{"x":12.25, "y":4.25, "w":1.75},
{"x":14.125, "y":4.375},
{"x":15.25, "y":4.25},
{"x":0, "y":5.25, "w":1.25},
{"x":1.25, "y":5.25, "w":1.25},
{"x":2.5, "y":5.25, "w":1.25},
{"x":3.75, "y":5.25, "w":6.25},
{"x":10, "y":5.25, "w":1.5},
{"x":11.5, "y":5.25, "w":1.5},
{"x":13.125, "y":5.375},
{"x":14.125, "y":5.375},
{"x":15.125, "y":5.375}
]
}
}
}
+34
View File
@@ -0,0 +1,34 @@
{
"keyboard_name": "Butter Stick",
"url": "",
"maintainer": "germ",
"width": 10,
"height": 2,
"layouts": {
"LAYOUT_butter": {
"layout": [
{"x":0, "y":0},
{"x":1, "y":0},
{"x":2, "y":0},
{"x":3, "y":0},
{"x":4, "y":0},
{"x":5, "y":0},
{"x":6, "y":0},
{"x":7, "y":0},
{"x":8, "y":0},
{"x":9, "y":0},
{"x":0, "y":1},
{"x":1, "y":1},
{"x":2, "y":1},
{"x":3, "y":1},
{"x":4, "y":1},
{"x":5, "y":1},
{"x":6, "y":1},
{"x":7, "y":1},
{"x":8, "y":1},
{"x":9, "y":1}
]
}
}
}
+16
View File
@@ -0,0 +1,16 @@
/* Copyright 2019 monksoffunk
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include "cassette42.h"
+34
View File
@@ -0,0 +1,34 @@
/* Copyright 2019 monksoffunk
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#pragma once
#include "quantum.h"
/* This 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( \
k10, k11, \
k00, k01, k02, k03\
) \
{ \
{ k00, k01, k02, k03, k10, k11 }, \
}
+233
View File
@@ -0,0 +1,233 @@
// This is the 'classic' fixed-space bitmap font for Adafruit_GFX since 1.0.
// See gfxfont.h for newer custom bitmap font info.
#include "progmem.h"
// Standard ASCII 5x7 font
static const unsigned char font[] PROGMEM = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x3E, 0x5B, 0x4F, 0x5B, 0x3E, 0x00,
0x3E, 0x6B, 0x4F, 0x6B, 0x3E, 0x00,
0x1C, 0x3E, 0x7C, 0x3E, 0x1C, 0x00,
0x18, 0x3C, 0x7E, 0x3C, 0x18, 0x00,
0x1C, 0x57, 0x7D, 0x57, 0x1C, 0x00,
0x1C, 0x5E, 0x7F, 0x5E, 0x1C, 0x00,
0x00, 0x18, 0x3C, 0x18, 0x00, 0x00,
0xFF, 0xE7, 0xC3, 0xE7, 0xFF, 0x00,
0x00, 0x18, 0x24, 0x18, 0x00, 0x00,
0xFF, 0xE7, 0xDB, 0xE7, 0xFF, 0x00,
0x30, 0x48, 0x3A, 0x06, 0x0E, 0x00,
0x26, 0x29, 0x79, 0x29, 0x26, 0x00,
0x40, 0x7F, 0x05, 0x05, 0x07, 0x00,
0x40, 0x7F, 0x05, 0x25, 0x3F, 0x00,
0x5A, 0x3C, 0xE7, 0x3C, 0x5A, 0x00,
0x7F, 0x3E, 0x1C, 0x1C, 0x08, 0x00,
0x08, 0x1C, 0x1C, 0x3E, 0x7F, 0x00,
0x14, 0x22, 0x7F, 0x22, 0x14, 0x00,
0x5F, 0x5F, 0x00, 0x5F, 0x5F, 0x00,
0x06, 0x09, 0x7F, 0x01, 0x7F, 0x00,
0x00, 0x66, 0x89, 0x95, 0x6A, 0x00,
0x60, 0x60, 0x60, 0x60, 0x60, 0x00,
0x94, 0xA2, 0xFF, 0xA2, 0x94, 0x00,
0x08, 0x04, 0x7E, 0x04, 0x08, 0x00,
0x10, 0x20, 0x7E, 0x20, 0x10, 0x00,
0x08, 0x08, 0x2A, 0x1C, 0x08, 0x00,
0x08, 0x1C, 0x2A, 0x08, 0x08, 0x00,
0x1E, 0x10, 0x10, 0x10, 0x10, 0x00,
0x0C, 0x1E, 0x0C, 0x1E, 0x0C, 0x00,
0x30, 0x38, 0x3E, 0x38, 0x30, 0x00,
0x06, 0x0E, 0x3E, 0x0E, 0x06, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x5F, 0x00, 0x00, 0x00,
0x00, 0x07, 0x00, 0x07, 0x00, 0x00,
0x14, 0x7F, 0x14, 0x7F, 0x14, 0x00,
0x24, 0x2A, 0x7F, 0x2A, 0x12, 0x00,
0x23, 0x13, 0x08, 0x64, 0x62, 0x00,
0x36, 0x49, 0x56, 0x20, 0x50, 0x00,
0x00, 0x08, 0x07, 0x03, 0x00, 0x00,
0x00, 0x1C, 0x22, 0x41, 0x00, 0x00,
0x00, 0x41, 0x22, 0x1C, 0x00, 0x00,
0x2A, 0x1C, 0x7F, 0x1C, 0x2A, 0x00,
0x08, 0x08, 0x3E, 0x08, 0x08, 0x00,
0x00, 0x80, 0x70, 0x30, 0x00, 0x00,
0x08, 0x08, 0x08, 0x08, 0x08, 0x00,
0x00, 0x00, 0x60, 0x60, 0x00, 0x00,
0x20, 0x10, 0x08, 0x04, 0x02, 0x00,
0x3E, 0x51, 0x49, 0x45, 0x3E, 0x00,
0x00, 0x42, 0x7F, 0x40, 0x00, 0x00,
0x72, 0x49, 0x49, 0x49, 0x46, 0x00,
0x21, 0x41, 0x49, 0x4D, 0x33, 0x00,
0x18, 0x14, 0x12, 0x7F, 0x10, 0x00,
0x27, 0x45, 0x45, 0x45, 0x39, 0x00,
0x3C, 0x4A, 0x49, 0x49, 0x31, 0x00,
0x41, 0x21, 0x11, 0x09, 0x07, 0x00,
0x36, 0x49, 0x49, 0x49, 0x36, 0x00,
0x46, 0x49, 0x49, 0x29, 0x1E, 0x00,
0x00, 0x00, 0x14, 0x00, 0x00, 0x00,
0x00, 0x40, 0x34, 0x00, 0x00, 0x00,
0x00, 0x08, 0x14, 0x22, 0x41, 0x00,
0x14, 0x14, 0x14, 0x14, 0x14, 0x00,
0x00, 0x41, 0x22, 0x14, 0x08, 0x00,
0x02, 0x01, 0x59, 0x09, 0x06, 0x00,
0x3E, 0x41, 0x5D, 0x59, 0x4E, 0x00,
0x7C, 0x12, 0x11, 0x12, 0x7C, 0x00,
0x7F, 0x49, 0x49, 0x49, 0x36, 0x00,
0x3E, 0x41, 0x41, 0x41, 0x22, 0x00,
0x7F, 0x41, 0x41, 0x41, 0x3E, 0x00,
0x7F, 0x49, 0x49, 0x49, 0x41, 0x00,
0x7F, 0x09, 0x09, 0x09, 0x01, 0x00,
0x3E, 0x41, 0x41, 0x51, 0x73, 0x00,
0x7F, 0x08, 0x08, 0x08, 0x7F, 0x00,
0x00, 0x41, 0x7F, 0x41, 0x00, 0x00,
0x20, 0x40, 0x41, 0x3F, 0x01, 0x00,
0x7F, 0x08, 0x14, 0x22, 0x41, 0x00,
0x7F, 0x40, 0x40, 0x40, 0x40, 0x00,
0x7F, 0x02, 0x1C, 0x02, 0x7F, 0x00,
0x7F, 0x04, 0x08, 0x10, 0x7F, 0x00,
0x3E, 0x41, 0x41, 0x41, 0x3E, 0x00,
0x7F, 0x09, 0x09, 0x09, 0x06, 0x00,
0x3E, 0x41, 0x51, 0x21, 0x5E, 0x00,
0x7F, 0x09, 0x19, 0x29, 0x46, 0x00,
0x26, 0x49, 0x49, 0x49, 0x32, 0x00,
0x03, 0x01, 0x7F, 0x01, 0x03, 0x00,
0x3F, 0x40, 0x40, 0x40, 0x3F, 0x00,
0x1F, 0x20, 0x40, 0x20, 0x1F, 0x00,
0x3F, 0x40, 0x38, 0x40, 0x3F, 0x00,
0x63, 0x14, 0x08, 0x14, 0x63, 0x00,
0x03, 0x04, 0x78, 0x04, 0x03, 0x00,
0x61, 0x59, 0x49, 0x4D, 0x43, 0x00,
0x00, 0x7F, 0x41, 0x41, 0x41, 0x00,
0x02, 0x04, 0x08, 0x10, 0x20, 0x00,
0x00, 0x41, 0x41, 0x41, 0x7F, 0x00,
0x04, 0x02, 0x01, 0x02, 0x04, 0x00,
0x40, 0x40, 0x40, 0x40, 0x40, 0x00,
0x00, 0x03, 0x07, 0x08, 0x00, 0x00,
0x20, 0x54, 0x54, 0x78, 0x40, 0x00,
0x7F, 0x28, 0x44, 0x44, 0x38, 0x00,
0x38, 0x44, 0x44, 0x44, 0x28, 0x00,
0x38, 0x44, 0x44, 0x28, 0x7F, 0x00,
0x38, 0x54, 0x54, 0x54, 0x18, 0x00,
0x00, 0x08, 0x7E, 0x09, 0x02, 0x00,
0x18, 0x24, 0x24, 0x1C, 0x38, 0x00,
0x7F, 0x08, 0x04, 0x04, 0x78, 0x00,
0x00, 0x44, 0x7D, 0x40, 0x00, 0x00,
0x20, 0x40, 0x40, 0x3D, 0x00, 0x00,
0x7F, 0x10, 0x28, 0x44, 0x00, 0x00,
0x00, 0x41, 0x7F, 0x40, 0x00, 0x00,
0x7C, 0x04, 0x78, 0x04, 0x78, 0x00,
0x7C, 0x08, 0x04, 0x04, 0x78, 0x00,
0x38, 0x44, 0x44, 0x44, 0x38, 0x00,
0x7C, 0x18, 0x24, 0x24, 0x18, 0x00,
0x18, 0x24, 0x24, 0x18, 0x7C, 0x00,
0x7C, 0x08, 0x04, 0x04, 0x08, 0x00,
0x48, 0x54, 0x54, 0x54, 0x24, 0x00,
0x04, 0x04, 0x3F, 0x44, 0x24, 0x00,
0x3C, 0x40, 0x40, 0x20, 0x7C, 0x00,
0x1C, 0x20, 0x40, 0x20, 0x1C, 0x00,
0x3C, 0x40, 0x30, 0x40, 0x3C, 0x00,
0x44, 0x28, 0x10, 0x28, 0x44, 0x00,
0x4C, 0x90, 0x90, 0x90, 0x7C, 0x00,
0x44, 0x64, 0x54, 0x4C, 0x44, 0x00,
0x00, 0x08, 0x36, 0x41, 0x00, 0x00,
0x00, 0x00, 0x77, 0x00, 0x00, 0x00,
0x00, 0x41, 0x36, 0x08, 0x00, 0x00,
0x02, 0x01, 0x02, 0x04, 0x02, 0x00,
0x3C, 0x26, 0x23, 0x26, 0x3C, 0x00,
0x00, 0x00, 0x00, 0xFE, 0x01, 0x19,
0x05, 0xC1, 0x21, 0x31, 0xD1, 0x11,
0x11, 0x11, 0x11, 0x11, 0x11, 0xD1,
0x31, 0x21, 0xC1, 0x01, 0x01, 0x01,
0xFE, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x3E, 0x3E, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0x3E, 0x3E, 0x3E,
0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE,
0x00, 0x00, 0x3E, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0x3E, 0xBE, 0xBE,
0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0x7E,
0x00, 0x00, 0xF8, 0xF8, 0xF8, 0x00,
0xF8, 0xF8, 0xF8, 0x00, 0xF8, 0xF8,
0xF8, 0xF8, 0x00, 0x00, 0x00, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE0,
0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0,
0xE0, 0xE0, 0xE0, 0x00, 0x00, 0x00,
0xC0, 0xF0, 0xFE, 0x7E, 0x1E, 0xFE,
0xFE, 0xFE, 0xFE, 0x00, 0x00, 0xF0,
0xFC, 0xFC, 0xFE, 0x1E, 0x9E, 0xFE,
0xFC, 0xFC, 0xF0, 0x00, 0x00, 0x00,
0xE0, 0xF0, 0xF0, 0xF0, 0xE0, 0xEC,
0xEE, 0xF7, 0xF3, 0x70, 0x20, 0x00,
0x7C, 0x7C, 0x7C, 0x7E, 0x00, 0x7E,
0x7E, 0x7E, 0x7F, 0x7F, 0x7F, 0x00,
0x00, 0x80, 0xC0, 0xE0, 0x7E, 0x5B,
0x4F, 0x5B, 0xFE, 0xC0, 0x00, 0x00,
0xC0, 0x00, 0xDC, 0xD7, 0xDE, 0xDE,
0xDE, 0xD7, 0xDC, 0x00, 0xC0, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x3F, 0x40, 0x60,
0x50, 0x48, 0x69, 0x4B, 0x4A, 0x4A,
0x4A, 0x4A, 0x4A, 0x4A, 0x4A, 0x4A,
0x4B, 0x69, 0x48, 0x50, 0x60, 0x40,
0x3F, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x7C, 0x7C, 0x7F, 0x7F,
0x7F, 0x3F, 0x1F, 0x00, 0x7C, 0x7C,
0x7F, 0x7F, 0x7F, 0x3F, 0x1F, 0x07,
0x00, 0x00, 0x00, 0x0F, 0x3F, 0x7F,
0x7F, 0x7F, 0x7F, 0x7C, 0x7D, 0x7D,
0x7D, 0x7D, 0x7D, 0x7D, 0x7D, 0x7C,
0x00, 0x00, 0x7B, 0x7B, 0x7B, 0x78,
0x7B, 0x7B, 0x7B, 0x78, 0x7F, 0x7F,
0x7F, 0x3F, 0x00, 0x00, 0x00, 0x7F,
0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x03,
0x03, 0x03, 0x03, 0x03, 0x03, 0x03,
0x03, 0x03, 0x03, 0x00, 0x00, 0x06,
0x07, 0x07, 0x07, 0x07, 0x00, 0x7F,
0x7F, 0x7F, 0x7F, 0x00, 0x00, 0x00,
0x41, 0x73, 0x78, 0x7E, 0x7F, 0x7F,
0x7F, 0x7B, 0x78, 0x00, 0x00, 0x00,
0x0F, 0x1F, 0x3F, 0x7F, 0x7F, 0x7F,
0x7F, 0x7F, 0x3F, 0x1E, 0x0C, 0x00,
0x1F, 0x1F, 0x1F, 0x3F, 0x00, 0x3F,
0x3F, 0x3F, 0x7F, 0x7F, 0x7F, 0x00,
0x30, 0x7B, 0x7F, 0x78, 0x30, 0x20,
0x20, 0x30, 0x78, 0x7F, 0x3B, 0x00,
0x03, 0x00, 0x0F, 0x7F, 0x0F, 0x0F,
0x0F, 0x7F, 0x0F, 0x00, 0x03, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00
};
+25
View File
@@ -0,0 +1,25 @@
#ifdef OLED_DRIVER_ENABLE
# include QMK_KEYBOARD_H
# include <stdio.h>
# include <string.h>
void render_logo(void) {
static const char PROGMEM logo[] = {0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f, 0x90, 0x91, 0x92, 0x93, 0x94, 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf, 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0};
oled_write_P(logo, false);
}
# ifdef RGBLIGHT_ENABLE
extern rgblight_config_t rgblight_config;
static char led_buf[24] = "LED state ready.\n";
rgblight_config_t rgblight_config_bak;
void update_led_status(void) {
if (rgblight_config_bak.enable != rgblight_config.enable || rgblight_config_bak.mode != rgblight_config.mode || rgblight_config_bak.hue != rgblight_config.hue || rgblight_config_bak.sat != rgblight_config.sat || rgblight_config_bak.val != rgblight_config.val) {
snprintf(led_buf, sizeof(led_buf) - 1, "%c H%2d S%2d V%2d MODE%2d", rgblight_config.enable ? '*' : '.', (uint8_t)(rgblight_config.hue / RGBLIGHT_HUE_STEP), (uint8_t)(rgblight_config.sat / RGBLIGHT_SAT_STEP), (uint8_t)(rgblight_config.val / RGBLIGHT_VAL_STEP), (uint8_t)rgblight_config.mode);
rgblight_config_bak = rgblight_config;
}
}
void render_led_status(void) { oled_write(led_buf, false); }
# endif
#endif
+22
View File
@@ -0,0 +1,22 @@
#ifdef OLED_DRIVER_ENABLE
void render_logo(void);
# define RENDER_LOGO(a) render_logo(a)
# ifdef RGBLIGHT_ENABLE
void update_led_status(void);
void render_led_status(void);
# define UPDATE_LED_STATUS() update_led_status()
# define RENDER_LED_STATUS(a) render_led_status(a)
# else
# define UPDATE_LED_STATUS()
# define RENDER_LED_STATUS(a)
# endif
#else
# define RENDER_LOGO(a)
# define UPDATE_LED_STATUS()
# define RENDER_LED_STATUS(a)
#endif
+52
View File
@@ -0,0 +1,52 @@
/*
Copyright 2019 monksoffunk
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#pragma once
#include "config_common.h"
/* USB Device descriptor parameter */
#define VENDOR_ID 0xFEED
#define PRODUCT_ID 0xCA42
#define DEVICE_VER 0x0001
#define MANUFACTURER monksoffunk
#define PRODUCT cassette42
/* key matrix size */
#define MATRIX_ROWS 1
#define MATRIX_COLS 6
#define DIRECT_PINS {{ B4, F6, F5, F4, B5, F7 }}
#define UNUSED_PINS
#define ENCODERS_PAD_A { B6, B3 }
#define ENCODERS_PAD_B { B2, B1 }
#define ENCODER_RESOLUTION 4
#define RGB_DI_PIN D3
#ifdef RGB_DI_PIN
# define RGBLED_NUM 5
# 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 */
# define RGBLIGHT_ANIMATIONS
#endif
#define OLED_FONT_H "keyboards/cassette42/common/glcdfont.c"
+12
View File
@@ -0,0 +1,12 @@
{
"keyboard_name": "cassette42",
"url": "http://www.sho-k.co.uk/tech/1246.html",
"maintainer": "monksoffunk",
"width": 4,
"height": 2.75,
"layouts": {
"LAYOUT": {
"layout": [{"x":0.5, "y":0.75}, {"x":2.5, "y":0.75}, {"x":0, "y":1.75}, {"x":1, "y":1.75}, {"x":2, "y":1.75}, {"x":3, "y":1.75}]
}
}
}
@@ -0,0 +1,174 @@
/* Copyright 2019 monksoffunk
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include QMK_KEYBOARD_H
#include "common/oled_helper.h"
// Defines the keycodes used by our macros in process_record_user
enum custom_keycodes {
RGBRST = SAFE_RANGE,
WRTROM,
};
enum layer_number {
_AUDIO = 0,
_HUE,
_SAT,
_VAL,
_MODE,
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// LAYOUT(LeftEncoder, RightEncoder, LeftSwitch, CenterLeftSwitch, CenterRightSwitch, RightSwitch)
[_AUDIO] = LAYOUT(KC_MUTE, KC_ENT, LT(_HUE, KC_MPRV), LT(_SAT, KC_MPLY), LT(_VAL, KC_MNXT), LT(_MODE, KC_SPC)),
[_HUE] = LAYOUT(RGB_TOG, RGBRST, _______, _______, RGB_HUD, RGB_HUI),
[_SAT] = LAYOUT(_______, _______, _______, _______, RGB_SAD, RGB_SAI),
[_VAL] = LAYOUT(_______, _______, RGB_VAD, RGB_VAI, _______, RGB_VAI),
[_MODE] = LAYOUT(_______, WRTROM, RGB_RMOD, RGB_MOD, RGB_MOD, _______),
};
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
switch (keycode) {
case WRTROM:
#ifdef RGBLIGHT_ENABLE
if (record->event.pressed) {
eeconfig_update_rgblight_current();
}
#endif
return false;
break;
case RGBRST:
#ifdef RGBLIGHT_ENABLE
if (record->event.pressed) {
eeconfig_update_rgblight_default();
rgblight_enable();
}
#endif
return false;
break;
}
return true;
}
#ifdef OLED_DRIVER_ENABLE
# include <stdio.h>
# include <string.h>
// assign the right code to your layers for OLED display
# define L_AUDIO 0
# define L_HUE (1 << _HUE)
# define L_SAT (1 << _SAT)
# define L_VAL (1 << _VAL)
# define L_MODE (1 << _MODE)
void render_status(void) {
render_logo();
// Define layers here, Have not worked out how to have text displayed for each layer. Copy down the number you see and add a case for it below
switch (layer_state) {
case L_AUDIO:
oled_write_P(PSTR("audio control\n"), false);
break;
case L_HUE:
oled_write_P(PSTR("rgb HUE control\n"), false);
break;
case L_SAT:
oled_write_P(PSTR("rgb SAT control\n"), false);
break;
case L_VAL:
oled_write_P(PSTR("rgb VAL control\n"), false);
break;
case L_MODE:
oled_write_P(PSTR("rgb MODE control\n"), false);
break;
default:
break;
}
UPDATE_LED_STATUS();
RENDER_LED_STATUS();
}
void oled_task_user(void) {
if (is_keyboard_master()) {
render_status();
} else {
render_logo();
}
}
#endif
void led_set_user(uint8_t usb_led) {}
void encoder_update_user(uint8_t index, bool clockwise) {
oled_on();
if (index == 0) { /* left encoder */
switch (layer_state) {
case L_AUDIO:
if (clockwise) {
tap_code(KC_VOLU);
} else {
tap_code(KC_VOLD);
}
break;
case L_HUE:
#ifdef RGBLIGHT_ENABLE
if (clockwise) {
rgblight_increase_hue_noeeprom();
} else {
rgblight_decrease_hue_noeeprom();
}
#endif
break;
case L_SAT:
#ifdef RGBLIGHT_ENABLE
if (clockwise) {
rgblight_increase_sat_noeeprom();
} else {
rgblight_decrease_sat_noeeprom();
}
#endif
break;
case L_VAL:
#ifdef RGBLIGHT_ENABLE
if (clockwise) {
rgblight_increase_val_noeeprom();
} else {
rgblight_decrease_val_noeeprom();
}
#endif
break;
case L_MODE:
#ifdef RGBLIGHT_ENABLE
if (clockwise) {
rgblight_step_noeeprom();
} else {
rgblight_step_reverse_noeeprom();
}
#endif
break;
}
} else if (index == 1) { /* right encoder */
if (clockwise) {
tap_code(KC_DOWN);
} else {
tap_code(KC_UP);
}
}
}
@@ -0,0 +1 @@
# The default keymap for cassette42
+15
View File
@@ -0,0 +1,15 @@
# Cassette42
![cassette42](https://pbs.twimg.com/media/D63q5S0UcAE9Rfj?format=jpg&name=large)
An audio control pad with 4 switches and 2 rotary encoders.
* Keyboard Maintainer: [monksoffunk](https://github.com/monksoffunk) [@monksoffunkJP](https://twitter.com/monksoffunkJP)
* Hardware Supported: Cassette 42 PCB
* Hardware Availability: [Yushakobo Shop](https://yushakobo.jp/shop/cassette42/)
Make example for this keyboard (after setting up your build environment):
make cassette42: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).
+26
View File
@@ -0,0 +1,26 @@
# MCU name
MCU = atmega32u4
# Bootloader selection
BOOTLOADER = caterina
# Build Options
# change yes to no to disable
#
BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration
MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
NKRO_ENABLE = no # USB Nkey Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
BLUETOOTH_ENABLE = no # Enable Bluetooth
AUDIO_ENABLE = no # Audio output
ENCODER_ENABLE = yes
OLED_DRIVER_ENABLE = yes
SRC += ./common/oled_helper.c
+2 -1
View File
@@ -29,7 +29,8 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/ */
#define MATRIX_ROW_PINS { C5, C4, B6, B7, C7 } #define MATRIX_ROW_PINS { C5, C4, B6, B7, C7 }
#define MATRIX_ROW_PINS_RIGHT { D3, D2, D5, D6, B0 } #define MATRIX_ROW_PINS_RIGHT { D3, D2, D5, D6, B0 }
#define MATRIX_COL_PINS { C6, B4, B3, B2, B1, B0 } /* The last three NO_PIN are dummies to make the same size as MATRIX_ROW_PINS_RIGHT. */
#define MATRIX_COL_PINS { C6, B4, B3, B2, B1, B0, NO_PIN, NO_PIN, NO_PIN }
#define MATRIX_COL_PINS_RIGHT { C7, B7, B6, B5, B4, B3, B2, C6, D4 } #define MATRIX_COL_PINS_RIGHT { C7, B7, B6, B5, B4, B3, B2, C6, D4 }
#define UNUSED_PINS #define UNUSED_PINS
+25 -38
View File
@@ -19,14 +19,14 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h" #include "config_common.h"
#define VENDOR_ID 0xFEED /* USB Device descriptor parameter */
#define PRODUCT_ID 0x6512 #define VENDOR_ID 0xFEED
#define DEVICE_VER 0x0001 #define PRODUCT_ID 0x6512
#define MANUFACTURER QMK #define DEVICE_VER 0x0001
#define PRODUCT XT keyboard converter #define MANUFACTURER QMK
#define PRODUCT XT keyboard converter
/* key matrix size */
/* matrix size */
#define MATRIX_ROWS 16 // keycode bit: 3-0 #define MATRIX_ROWS 16 // keycode bit: 3-0
#define MATRIX_COLS 8 // keycode bit: 6-4 #define MATRIX_COLS 8 // keycode bit: 6-4
@@ -36,44 +36,31 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
get_mods() == (MOD_BIT(KC_LCTRL) | MOD_BIT(KC_RSHIFT)) \ get_mods() == (MOD_BIT(KC_LCTRL) | MOD_BIT(KC_RSHIFT)) \
) )
#define XT_CLOCK_PIN D1
//#define NO_SUSPEND_POWER_DOWN #define XT_DATA_PIN D0
#define XT_RST_PIN B7
/*
* XT Pin interrupt
*/
#define XT_CLOCK_PORT PORTD
#define XT_CLOCK_PIN PIND
#define XT_CLOCK_DDR DDRD
#define XT_CLOCK_BIT 1
#define XT_DATA_PORT PORTD
#define XT_DATA_PIN PIND
#define XT_DATA_DDR DDRD
#define XT_DATA_BIT 0
#define XT_RST_PORT PORTB
#define XT_RST_PIN PINB
#define XT_RST_DDR DDRB
#define XT_RST_BIT 7
/* hard reset: low pulse for 500ms and after that HiZ for safety */ /* hard reset: low pulse for 500ms and after that HiZ for safety */
#define XT_RESET() do { \ #define XT_RESET() do { \
XT_RST_PORT &= ~(1<<XT_RST_BIT); \ writePinLow(XT_RST_PIN); \
XT_RST_DDR |= (1<<XT_RST_BIT); \ setPinOutput(XT_RST_PIN); \
_delay_ms(500); \ wait_ms(500); \
XT_RST_DDR &= ~(1<<XT_RST_BIT); \ setPinInput(XT_RST_PIN); \
} while (0) } while (0)
/* INT1 for falling edge of clock line */ /* INT1 for falling edge of clock line */
#define XT_INT_INIT() do { \ #define XT_INT_INIT() do { \
EICRA |= ((1<<ISC11) | \ EICRA |= ((1 << ISC11) | (0 << ISC10)); \
(0<<ISC10)); \
} while (0) } while (0)
/* clears flag and enables interrupt */ /* clears flag and enables interrupt */
#define XT_INT_ON() do { \ #define XT_INT_ON() do { \
EIFR |= (1<<INTF1); \ EIFR |= (1 << INTF1); \
EIMSK |= (1<<INT1); \ EIMSK |= (1 << INT1); \
} while (0) } while (0)
#define XT_INT_OFF() do { \
EIMSK &= ~(1<<INT1); \ #define XT_INT_OFF() do { \
EIMSK &= ~(1 << INT1); \
} while (0) } while (0)
#define XT_INT_VECT INT1_vect
#define XT_INT_VECT INT1_vect
+225 -225
View File
@@ -1,228 +1,228 @@
{ {
"keyboard_name": "IBM PC XT", "keyboard_name": "IBM PC XT",
"url": "", "url": "",
"maintainer": "qmk", "maintainer": "qmk",
"width": 21, "width": 21,
"height": 5, "height": 5,
"layouts": { "layouts": {
"LAYOUT_xt": { "LAYOUT_xt": {
"layout": [ "layout": [
{"label":"F1", "x":0, "y":0}, {"x": 0, "y": 0},
{"label":"F2", "x":1, "y":0}, {"x": 1, "y": 0},
{"label":"Esc", "x":2.25, "y":0}, {"x": 2.25, "y": 0},
{"label":"1", "x":3.25, "y":0}, {"x": 3.25, "y": 0},
{"label":"2", "x":4.25, "y":0}, {"x": 4.25, "y": 0},
{"label":"3", "x":5.25, "y":0}, {"x": 5.25, "y": 0},
{"label":"4", "x":6.25, "y":0}, {"x": 6.25, "y": 0},
{"label":"5", "x":7.25, "y":0}, {"x": 7.25, "y": 0},
{"label":"6", "x":8.25, "y":0}, {"x": 8.25, "y": 0},
{"label":"7", "x":9.25, "y":0}, {"x": 9.25, "y": 0},
{"label":"8", "x":10.25, "y":0}, {"x": 10.25, "y": 0},
{"label":"9", "x":11.25, "y":0}, {"x": 11.25, "y": 0},
{"label":"0", "x":12.25, "y":0}, {"x": 12.25, "y": 0},
{"label":"-", "x":13.25, "y":0}, {"x": 13.25, "y": 0},
{"label":"=", "x":14.25, "y":0}, {"x": 14.25, "y": 0},
{"label":"Backspace", "x":15.25, "y":0, "w":1.75}, {"x": 15.25, "y": 0, "w": 1.75},
{"label":"Num Lock", "x":17, "y":0, "w":2}, {"x": 17, "y": 0, "w": 2},
{"label":"Scroll Lock", "x":19, "y":0, "w":2}, {"x": 19, "y": 0, "w": 2},
{"label":"F3", "x":0, "y":1}, {"x": 0, "y": 1},
{"label":"F4", "x":1, "y":1}, {"x": 1, "y": 1},
{"label":"Tab", "x":2.25, "y":1, "w":1.5}, {"x": 2.25, "y": 1, "w": 1.5},
{"label":"Q", "x":3.75, "y":1}, {"x": 3.75, "y": 1},
{"label":"W", "x":4.75, "y":1}, {"x": 4.75, "y": 1},
{"label":"E", "x":5.75, "y":1}, {"x": 5.75, "y": 1},
{"label":"R", "x":6.75, "y":1}, {"x": 6.75, "y": 1},
{"label":"T", "x":7.75, "y":1}, {"x": 7.75, "y": 1},
{"label":"Y", "x":8.75, "y":1}, {"x": 8.75, "y": 1},
{"label":"U", "x":9.75, "y":1}, {"x": 9.75, "y": 1},
{"label":"I", "x":10.75, "y":1}, {"x": 10.75, "y": 1},
{"label":"O", "x":11.75, "y":1}, {"x": 11.75, "y": 1},
{"label":"P", "x":12.75, "y":1}, {"x": 12.75, "y": 1},
{"label":"[", "x":13.75, "y":1}, {"x": 13.75, "y": 1},
{"label":"]", "x":14.75, "y":1, "w": 1.25}, {"x": 14.75, "y": 1, "w": 1.25},
{"label":"7", "x":17, "y":1}, {"x": 17, "y": 1},
{"label":"8", "x":18, "y":1}, {"x": 18, "y": 1},
{"label":"9", "x":19, "y":1}, {"x": 19, "y": 1},
{"label":"-", "x":20, "y":1}, {"x": 20, "y": 1},
{"label":"F5", "x":0, "y":2}, {"x": 0, "y": 2},
{"label":"F6", "x":1, "y":2}, {"x": 1, "y": 2},
{"label":"Ctrl", "x":2.25, "y":2, "w":1.75}, {"x": 2.25, "y": 2, "w": 1.75},
{"label":"A", "x":4, "y":2}, {"x": 4, "y": 2},
{"label":"S", "x":5, "y":2}, {"x": 5, "y": 2},
{"label":"D", "x":6, "y":2}, {"x": 6, "y": 2},
{"label":"F", "x":7, "y":2}, {"x": 7, "y": 2},
{"label":"G", "x":8, "y":2}, {"x": 8, "y": 2},
{"label":"H", "x":9, "y":2}, {"x": 9, "y": 2},
{"label":"J", "x":10, "y":2}, {"x": 10, "y": 2},
{"label":"K", "x":11, "y":2}, {"x": 11, "y": 2},
{"label":"L", "x":12, "y":2}, {"x": 12, "y": 2},
{"label":";", "x":13, "y":2}, {"x": 13, "y": 2},
{"label":"'", "x":14, "y":2}, {"x": 14, "y": 2},
{"label":"`", "x":15, "y":2}, {"x": 15, "y": 2},
{"label":"Enter", "x":16, "y":1, "h":2}, {"x": 16, "y": 1, "h": 2},
{"label":"4", "x":17, "y":2}, {"x": 17, "y": 2},
{"label":"5", "x":18, "y":2}, {"x": 18, "y": 2},
{"label":"6", "x":19, "y":2}, {"x": 19, "y": 2},
{"label":"F7", "x":0, "y":3}, {"x": 0, "y": 3},
{"label":"F8", "x":1, "y":3}, {"x": 1, "y": 3},
{"label":"Shift", "x":2.25, "y":3, "w":1.25}, {"x": 2.25, "y": 3, "w": 1.25},
{"label":"\\", "x":3.5, "y":3}, {"x": 3.5, "y": 3},
{"label":"Z", "x":4.5, "y":3}, {"x": 4.5, "y": 3},
{"label":"X", "x":5.5, "y":3}, {"x": 5.5, "y": 3},
{"label":"C", "x":6.5, "y":3}, {"x": 6.5, "y": 3},
{"label":"V", "x":7.5, "y":3}, {"x": 7.5, "y": 3},
{"label":"B", "x":8.5, "y":3}, {"x": 8.5, "y": 3},
{"label":"N", "x":9.5, "y":3}, {"x": 9.5, "y": 3},
{"label":"M", "x":10.5, "y":3}, {"x": 10.5, "y": 3},
{"label":",", "x":11.5, "y":3}, {"x": 11.5, "y": 3},
{"label":".", "x":12.5, "y":3}, {"x": 12.5, "y": 3},
{"label":"/", "x":13.5, "y":3}, {"x": 13.5, "y": 3},
{"label":"Shift", "x":14.5, "y":3, "w":1.5}, {"x": 14.5, "y": 3, "w": 1.5},
{"label":"*", "x":16, "y":3}, {"x": 16, "y": 3},
{"label":"1", "x":17, "y":3}, {"x": 17, "y": 3},
{"label":"2", "x":18, "y":3}, {"x": 18, "y": 3},
{"label":"3", "x":19, "y":3}, {"x": 19, "y": 3},
{"label":"+", "x":20, "y":2, "h":3}, {"x": 20, "y": 2, "h": 3},
{"label":"F9", "x":0, "y":4}, {"x": 0, "y": 4},
{"label":"F10", "x":1, "y":4}, {"x": 1, "y": 4},
{"label":"Alt", "x":2.25, "y":4, "w":2}, {"x": 2.25, "y": 4, "w": 2},
{"label":"Space", "x":4.25, "y":4, "w":9.75}, {"x": 4.25, "y": 4, "w": 9.75},
{"label":"Caps Lock", "x":14, "y":4, "w":2}, {"x": 14, "y": 4, "w": 2},
{"label":"0", "x":16, "y":4, "w":2}, {"x": 16, "y": 4, "w": 2},
{"label":".", "x":18, "y":4, "w":2} {"x": 18, "y": 4, "w": 2}
] ]
}, },
"LAYOUT": { "LAYOUT": {
"layout": [ "layout": [
{"label":"F13", "x":2, "y":0}, {"x": 2, "y": 0},
{"label":"F14", "x":3, "y":0}, {"x": 3, "y": 0},
{"label":"F15", "x":4, "y":0}, {"x": 4, "y": 0},
{"label":"F16", "x":5, "y":0}, {"x": 5, "y": 0},
{"label":"F17", "x":6, "y":0}, {"x": 6, "y": 0},
{"label":"F18", "x":7, "y":0}, {"x": 7, "y": 0},
{"label":"F19", "x":8, "y":0}, {"x": 8, "y": 0},
{"label":"F20", "x":9, "y":0}, {"x": 9, "y": 0},
{"label":"F21", "x":10, "y":0}, {"x": 10, "y": 0},
{"label":"F22", "x":11, "y":0}, {"x": 11, "y": 0},
{"label":"F23", "x":12, "y":0}, {"x": 12, "y": 0},
{"label":"F24", "x":13, "y":0}, {"x": 13, "y": 0},
{"label":"Esc", "x":0, "y":1}, {"x": 0, "y": 1},
{"label":"F1", "x":2, "y":1}, {"x": 2, "y": 1},
{"label":"F2", "x":3, "y":1}, {"x": 3, "y": 1},
{"label":"F3", "x":4, "y":1}, {"x": 4, "y": 1},
{"label":"F4", "x":5, "y":1}, {"x": 5, "y": 1},
{"label":"F5", "x":6, "y":1}, {"x": 6, "y": 1},
{"label":"F6", "x":7, "y":1}, {"x": 7, "y": 1},
{"label":"F7", "x":8, "y":1}, {"x": 8, "y": 1},
{"label":"F8", "x":9, "y":1}, {"x": 9, "y": 1},
{"label":"F9", "x":10, "y":1}, {"x": 10, "y": 1},
{"label":"F10", "x":11, "y":1}, {"x": 11, "y": 1},
{"label":"F11", "x":12, "y":1}, {"x": 12, "y": 1},
{"label":"F12", "x":13, "y":1}, {"x": 13, "y": 1},
{"label":"Print Screen", "x":15.25, "y":1}, {"x": 15.25, "y": 1},
{"label":"Scroll Lock", "x":16.25, "y":1}, {"x": 16.25, "y": 1},
{"label":"Pause", "x":17.25, "y":1}, {"x": 17.25, "y": 1},
{"label":"Volume Down", "x":19.5, "y":1}, {"x": 19.5, "y": 1},
{"label":"Volume Up", "x":20.5, "y":1}, {"x": 20.5, "y": 1},
{"label":"Mute", "x":21.5, "y":1}, {"x": 21.5, "y": 1},
{"label":"`", "x":0, "y":2.5}, {"x": 0, "y": 2.5},
{"label":"1", "x":1, "y":2.5}, {"x": 1, "y": 2.5},
{"label":"2", "x":2, "y":2.5}, {"x": 2, "y": 2.5},
{"label":"3", "x":3, "y":2.5}, {"x": 3, "y": 2.5},
{"label":"4", "x":4, "y":2.5}, {"x": 4, "y": 2.5},
{"label":"5", "x":5, "y":2.5}, {"x": 5, "y": 2.5},
{"label":"6", "x":6, "y":2.5}, {"x": 6, "y": 2.5},
{"label":"7", "x":7, "y":2.5}, {"x": 7, "y": 2.5},
{"label":"8", "x":8, "y":2.5}, {"x": 8, "y": 2.5},
{"label":"9", "x":9, "y":2.5}, {"x": 9, "y": 2.5},
{"label":"0", "x":10, "y":2.5}, {"x": 10, "y": 2.5},
{"label":"-", "x":11, "y":2.5}, {"x": 11, "y": 2.5},
{"label":"=", "x":12, "y":2.5}, {"x": 12, "y": 2.5},
{"label":"JP Yen", "x":13, "y":2.5}, {"x": 13, "y": 2.5},
{"label":"Back Space", "x":14, "y":2.5}, {"x": 14, "y": 2.5},
{"label":"Insert", "x":15.25, "y":2.5}, {"x": 15.25, "y": 2.5},
{"label":"Home", "x":16.25, "y":2.5}, {"x": 16.25, "y": 2.5},
{"label":"Page Up", "x":17.25, "y":2.5}, {"x": 17.25, "y": 2.5},
{"label":"Num Lock", "x":18.5, "y":2.5}, {"x": 18.5, "y": 2.5},
{"label":"KP/", "x":19.5, "y":2.5}, {"x": 19.5, "y": 2.5},
{"label":"KP*", "x":20.5, "y":2.5}, {"x": 20.5, "y": 2.5},
{"label":"KP-", "x":21.5, "y":2.5}, {"x": 21.5, "y": 2.5},
{"label":"Tab", "x":0, "y":3.5, "w":1.5}, {"x": 0, "y": 3.5, "w": 1.5},
{"label":"Q", "x":1.5, "y":3.5}, {"x": 1.5, "y": 3.5},
{"label":"W", "x":2.5, "y":3.5}, {"x": 2.5, "y": 3.5},
{"label":"E", "x":3.5, "y":3.5}, {"x": 3.5, "y": 3.5},
{"label":"R", "x":4.5, "y":3.5}, {"x": 4.5, "y": 3.5},
{"label":"T", "x":5.5, "y":3.5}, {"x": 5.5, "y": 3.5},
{"label":"Y", "x":6.5, "y":3.5}, {"x": 6.5, "y": 3.5},
{"label":"U", "x":7.5, "y":3.5}, {"x": 7.5, "y": 3.5},
{"label":"I", "x":8.5, "y":3.5}, {"x": 8.5, "y": 3.5},
{"label":"O", "x":9.5, "y":3.5}, {"x": 9.5, "y": 3.5},
{"label":"P", "x":10.5, "y":3.5}, {"x": 10.5, "y": 3.5},
{"label":"[", "x":11.5, "y":3.5}, {"x": 11.5, "y": 3.5},
{"label":"]", "x":12.5, "y":3.5}, {"x": 12.5, "y": 3.5},
{"label":"\\", "x":13.5, "y":3.5, "w":1.5}, {"x": 13.5, "y": 3.5, "w": 1.5},
{"label":"Delete", "x":15.25, "y":3.5}, {"x": 15.25, "y": 3.5},
{"label":"End", "x":16.25, "y":3.5}, {"x": 16.25, "y": 3.5},
{"label":"Page Down", "x":17.25, "y":3.5}, {"x": 17.25, "y": 3.5},
{"label":"KP 7", "x":18.5, "y":3.5}, {"x": 18.5, "y": 3.5},
{"label":"KP 8", "x":19.5, "y":3.5}, {"x": 19.5, "y": 3.5},
{"label":"KP 9", "x":20.5, "y":3.5}, {"x": 20.5, "y": 3.5},
{"label":"KP+", "x":21.5, "y":3.5}, {"x": 21.5, "y": 3.5},
{"label":"Caps Lock", "x":0, "y":4.5, "w":1.75}, {"x": 0, "y": 4.5, "w": 1.75},
{"label":"A", "x":1.75, "y":4.5}, {"x": 1.75, "y": 4.5},
{"label":"S", "x":2.75, "y":4.5}, {"x": 2.75, "y": 4.5},
{"label":"D", "x":3.75, "y":4.5}, {"x": 3.75, "y": 4.5},
{"label":"F", "x":4.75, "y":4.5}, {"x": 4.75, "y": 4.5},
{"label":"G", "x":5.75, "y":4.5}, {"x": 5.75, "y": 4.5},
{"label":"H", "x":6.75, "y":4.5}, {"x": 6.75, "y": 4.5},
{"label":"J", "x":7.75, "y":4.5}, {"x": 7.75, "y": 4.5},
{"label":"K", "x":8.75, "y":4.5}, {"x": 8.75, "y": 4.5},
{"label":"L", "x":9.75, "y":4.5}, {"x": 9.75, "y": 4.5},
{"label":";", "x":10.75, "y":4.5}, {"x": 10.75, "y": 4.5},
{"label":"'", "x":11.75, "y":4.5}, {"x": 11.75, "y": 4.5},
{"label":"ISO #", "x":12.75, "y":4.5}, {"x": 12.75, "y": 4.5},
{"label":"Enter", "x":13.75, "y":4.5, "w":1.25}, {"x": 13.75, "y": 4.5, "w": 1.25},
{"label":"KP 4", "x":18.5, "y":4.5}, {"x": 18.5, "y": 4.5},
{"label":"KP 5", "x":19.5, "y":4.5}, {"x": 19.5, "y": 4.5},
{"label":"KP 6", "x":20.5, "y":4.5}, {"x": 20.5, "y": 4.5},
{"label":"KP ,", "x":21.5, "y":4.5}, {"x": 21.5, "y": 4.5},
{"label":"Shift", "x":0, "y":5.5, "w":1.25}, {"x": 0, "y": 5.5, "w": 1.25},
{"label":"ISO \\", "x":1.25, "y":5.5}, {"x": 1.25, "y": 5.5},
{"label":"Z", "x":2.25, "y":5.5}, {"x": 2.25, "y": 5.5},
{"label":"X", "x":3.25, "y":5.5}, {"x": 3.25, "y": 5.5},
{"label":"C", "x":4.25, "y":5.5}, {"x": 4.25, "y": 5.5},
{"label":"V", "x":5.25, "y":5.5}, {"x": 5.25, "y": 5.5},
{"label":"B", "x":6.25, "y":5.5}, {"x": 6.25, "y": 5.5},
{"label":"N", "x":7.25, "y":5.5}, {"x": 7.25, "y": 5.5},
{"label":"M", "x":8.25, "y":5.5}, {"x": 8.25, "y": 5.5},
{"label":",", "x":9.25, "y":5.5}, {"x": 9.25, "y": 5.5},
{"label":".", "x":10.25, "y":5.5}, {"x": 10.25, "y": 5.5},
{"label":"/", "x":11.25, "y":5.5}, {"x": 11.25, "y": 5.5},
{"label":"JP RO", "x":12.25, "y":5.5}, {"x": 12.25, "y": 5.5},
{"label":"Shift", "x":13.25, "y":5.5, "w":1.75}, {"x": 13.25, "y": 5.5, "w": 1.75},
{"label":"Up", "x":16.25, "y":5.5}, {"x": 16.25, "y": 5.5},
{"label":"KP 1", "x":18.5, "y":5.5}, {"x": 18.5, "y": 5.5},
{"label":"KP 2", "x":19.5, "y":5.5}, {"x": 19.5, "y": 5.5},
{"label":"KP 3", "x":20.5, "y":5.5}, {"x": 20.5, "y": 5.5},
{"label":"KP Enter", "x":21.5, "y":5.5}, {"x": 21.5, "y": 5.5},
{"label":"Ctrl", "x":0, "y":6.5, "w":1.25}, {"x": 0, "y": 6.5, "w": 1.25},
{"label":"GUI", "x":1.25, "y":6.5, "w":1.25}, {"x": 1.25, "y": 6.5, "w": 1.25},
{"label":"Alt", "x":2.5, "y":6.5, "w":1.25}, {"x": 2.5, "y": 6.5, "w": 1.25},
{"label":"Muhenkan", "x":3.75, "y":6.5, "w":1.25}, {"x": 3.75, "y": 6.5, "w": 1.25},
{"label":"Space", "x":5, "y":6.5, "w":3.25}, {"x": 5, "y": 6.5, "w": 3.25},
{"label":"Henkan", "x":8.25, "y":6.5, "w":1.25}, {"x": 8.25, "y": 6.5, "w": 1.25},
{"label":"Kana", "x":9.5, "y":6.5, "w":1.25}, {"x": 9.5, "y": 6.5, "w": 1.25},
{"label":"Alt", "x":10.75, "y":6.5}, {"x": 10.75, "y": 6.5},
{"label":"GUI", "x":11.75, "y":6.5}, {"x": 11.75, "y": 6.5},
{"label":"Menu", "x":12.75, "y":6.5}, {"x": 12.75, "y": 6.5},
{"label":"Ctrl", "x":13.75, "y":6.5, "w":1.25}, {"x": 13.75, "y": 6.5, "w": 1.25},
{"label":"Left", "x":15.25, "y":6.5}, {"x": 15.25, "y": 6.5},
{"label":"Down", "x":16.25, "y":6.5}, {"x": 16.25, "y": 6.5},
{"label":"Right", "x":17.25, "y":6.5}, {"x": 17.25, "y": 6.5},
{"label":"KP 0", "x":18.5, "y":6.5, "w":2}, {"x": 18.5, "y": 6.5, "w": 2},
{"label":"KP .", "x":20.5, "y":6.5}, {"x": 20.5, "y": 6.5},
{"label":"KP =", "x":21.5, "y":6.5} {"x": 21.5, "y": 6.5}
] ]
}
} }
}
} }
@@ -1 +0,0 @@
#pragma once
@@ -1,6 +1,5 @@
#include QMK_KEYBOARD_H #include QMK_KEYBOARD_H
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* IBM XT keyboard layout /* IBM XT keyboard layout
* ,-------. ,--------------------------------------------------------------------------. * ,-------. ,--------------------------------------------------------------------------.
@@ -15,12 +14,12 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* | F9|F10| | Alt | Space |CapsLck| 0 | . | | * | F9|F10| | Alt | Space |CapsLck| 0 | . | |
* `-------' `--------------------------------------------------------------------------' * `-------' `--------------------------------------------------------------------------'
*/ */
LAYOUT_xt( \ LAYOUT_xt(
KC_F1, KC_F2, KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS,KC_EQL, KC_BSPC, KC_NLCK, KC_SLCK, KC_F1, KC_F2, KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_NLCK, KC_SLCK,
KC_F3, KC_F4, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC,KC_RBRC, KC_P7, KC_P8, KC_P9, KC_PMNS, KC_F3, KC_F4, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_P7, KC_P8, KC_P9, KC_PMNS,
KC_F5, KC_F6, KC_LCTL,KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN,KC_QUOT,KC_GRV, KC_ENT, KC_P4, KC_P5, KC_P6, KC_F5, KC_F6, KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_GRV, KC_ENT, KC_P4, KC_P5, KC_P6,
KC_F7, KC_F8, KC_LSFT,KC_BSLS,KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM,KC_DOT, KC_SLSH,KC_RSFT,KC_PAST,KC_P1, KC_P2, KC_P3, KC_PPLS, KC_F7, KC_F8, KC_LSFT, KC_BSLS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_PAST, KC_P1, KC_P2, KC_P3, KC_PPLS,
KC_F9, KC_F10, KC_LALT, KC_SPC, KC_CAPS, KC_P0, KC_PDOT KC_F9, KC_F10, KC_LALT, KC_SPC, KC_CAPS, KC_P0, KC_PDOT
), ),
/* Extended keyboard layout /* Extended keyboard layout
@@ -43,13 +42,13 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
*/ */
/* Try this if your keyboad has exotic keys. /* Try this if your keyboad has exotic keys.
LAYOUT( LAYOUT(
KC_F13, KC_F14, KC_F15, KC_F16, KC_F17, KC_F18, KC_F19, KC_F20, KC_F21, KC_F22, KC_F23, KC_F24, KC_F13, KC_F14, KC_F15, KC_F16, KC_F17, KC_F18, KC_F19, KC_F20, KC_F21, KC_F22, KC_F23, KC_F24,
KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR,KC_SLCK,KC_PAUS, KC_VOLD,KC_VOLU,KC_MUTE, KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS, KC_VOLD, KC_VOLU, KC_MUTE,
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_JYEN,KC_BSPC, KC_INS, KC_HOME,KC_PGUP, KC_NLCK,KC_PSLS,KC_PAST,KC_PMNS, 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_JYEN, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS,
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC,KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS,
KC_CAPS,KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN,KC_QUOT, KC_NUHS,KC_ENT, KC_P4, KC_P5, KC_P6, KC_PCMM, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6, KC_PCMM,
KC_LSFT,KC_NUBS,KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM,KC_DOT, KC_SLSH, KC_RO, KC_RSFT, KC_UP, KC_P1, KC_P2, KC_P3, KC_PENT, KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RO, KC_RSFT, KC_UP, KC_P1, KC_P2, KC_P3, KC_PEQL,
KC_LCTL,KC_LGUI,KC_LALT,KC_MHEN, KC_SPC, KC_HENK,KC_KANA,KC_RALT,KC_RGUI,KC_APP, KC_RCTL, KC_LEFT,KC_DOWN,KC_RGHT, KC_P0, KC_PDOT,KC_PEQL KC_LCTL, KC_LGUI, KC_LALT, KC_MHEN, KC_SPC, KC_HENK, KC_KANA, KC_RALT, KC_RGUI, KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT
), ),
*/ */
}; };
+41 -40
View File
@@ -25,13 +25,13 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "xt.h" #include "xt.h"
#include "matrix.h" #include "matrix.h"
static void matrix_make(uint8_t code); static void matrix_make(uint8_t code);
static void matrix_break(uint8_t code); static void matrix_break(uint8_t code);
static uint8_t matrix[MATRIX_ROWS]; static uint8_t matrix[MATRIX_ROWS];
#define ROW(code) (code>>3)
#define COL(code) (code&0x07) #define ROW(code) (code >> 3)
#define COL(code) (code & 0x07)
__attribute__ ((weak)) __attribute__ ((weak))
void matrix_init_kb(void) { void matrix_init_kb(void) {
@@ -48,16 +48,16 @@ void matrix_init_user(void) {
} }
__attribute__ ((weak)) __attribute__ ((weak))
void matrix_scan_user(void) { void matrix_scan_user(void) { }
}
void matrix_init(void) void matrix_init(void) {
{
debug_enable = true; debug_enable = true;
xt_host_init(); xt_host_init();
// initialize matrix state: all keys off // initialize matrix state: all keys off
for (uint8_t i=0; i < MATRIX_ROWS; i++) matrix[i] = 0x00; for (uint8_t i = 0; i < MATRIX_ROWS; i++) {
matrix[i] = 0x00;
}
matrix_init_quantum(); matrix_init_quantum();
} }
@@ -71,7 +71,7 @@ static uint8_t move_e0code(uint8_t code) {
case 0x1C: return 0x6F; // Keypad Enter case 0x1C: return 0x6F; // Keypad Enter
case 0x35: return 0x7F; // Keypad / case 0x35: return 0x7F; // Keypad /
// Any XT keyobard with these keys? // Any XT keyboard with these keys?
// http://download.microsoft.com/download/1/6/1/161ba512-40e2-4cc9-843a-923143f3456c/translate.pdf // http://download.microsoft.com/download/1/6/1/161ba512-40e2-4cc9-843a-923143f3456c/translate.pdf
// https://download.microsoft.com/download/1/6/1/161ba512-40e2-4cc9-843a-923143f3456c/scancode.doc // https://download.microsoft.com/download/1/6/1/161ba512-40e2-4cc9-843a-923143f3456c/scancode.doc
case 0x5B: return 0x5A; // Left GUI case 0x5B: return 0x5A; // Left GUI
@@ -96,8 +96,7 @@ static uint8_t move_e0code(uint8_t code) {
return 0x00; return 0x00;
} }
uint8_t matrix_scan(void) uint8_t matrix_scan(void) {
{
static enum { static enum {
XT_STATE_INIT, XT_STATE_INIT,
XT_STATE_E0, XT_STATE_E0,
@@ -108,8 +107,13 @@ uint8_t matrix_scan(void)
} state = XT_STATE_INIT; } state = XT_STATE_INIT;
uint8_t code = xt_host_recv(); uint8_t code = xt_host_recv();
if (!code) return 0;
if (!code) {
return 0;
}
xprintf("%02X ", code); xprintf("%02X ", code);
switch (state) { switch (state) {
case XT_STATE_INIT: case XT_STATE_INIT:
switch (code) { switch (code) {
@@ -120,10 +124,11 @@ uint8_t matrix_scan(void)
state = XT_STATE_E1; state = XT_STATE_E1;
break; break;
default: default:
if (code < 0x80) if (code < 0x80) {
matrix_make(code); matrix_make(code);
else } else {
matrix_break(code & 0x7F); matrix_break(code & 0x7F);
}
break; break;
} }
break; break;
@@ -137,10 +142,11 @@ uint8_t matrix_scan(void)
state = XT_STATE_INIT; state = XT_STATE_INIT;
break; break;
default: default:
if (code < 0x80) if (code < 0x80) {
matrix_make(move_e0code(code)); matrix_make(move_e0code(code));
else } else {
matrix_break(move_e0code(code & 0x7F)); matrix_break(move_e0code(code & 0x7F));
}
state = XT_STATE_INIT; state = XT_STATE_INIT;
break; break;
} }
@@ -181,59 +187,54 @@ uint8_t matrix_scan(void)
default: default:
state = XT_STATE_INIT; state = XT_STATE_INIT;
} }
matrix_scan_quantum(); matrix_scan_quantum();
return 1; return 1;
} }
inline inline
uint8_t matrix_get_row(uint8_t row) uint8_t matrix_get_row(uint8_t row) {
{
return matrix[row]; return matrix[row];
} }
inline inline static void matrix_make(uint8_t code) {
static void matrix_make(uint8_t code)
{
if (!matrix_is_on(ROW(code), COL(code))) { if (!matrix_is_on(ROW(code), COL(code))) {
matrix[ROW(code)] |= 1<<COL(code); matrix[ROW(code)] |= 1 << COL(code);
} }
} }
inline inline static void matrix_break(uint8_t code) {
static void matrix_break(uint8_t code)
{
if (matrix_is_on(ROW(code), COL(code))) { if (matrix_is_on(ROW(code), COL(code))) {
matrix[ROW(code)] &= ~(1<<COL(code)); matrix[ROW(code)] &= ~(1 << COL(code));
} }
} }
void matrix_clear(void) void matrix_clear(void) {
{
for (uint8_t i=0; i < MATRIX_ROWS; i++) matrix[i] = 0x00; for (uint8_t i=0; i < MATRIX_ROWS; i++) matrix[i] = 0x00;
} }
bool matrix_is_on(uint8_t row, uint8_t col) bool matrix_is_on(uint8_t row, uint8_t col) {
{ return (matrix_get_row(row) & (1 << col));
return (matrix_get_row(row) & (1<<col));
} }
#if (MATRIX_COLS <= 8) #if (MATRIX_COLS <= 8)
# define print_matrix_header() print("\nr/c 01234567\n") # define print_matrix_header() print("\nr/c 01234567\n")
# define print_matrix_row(row) print_bin_reverse8(matrix_get_row(row)) # define print_matrix_row(row) print_bin_reverse8(matrix_get_row(row))
#elif (MATRIX_COLS <= 16) #elif (MATRIX_COLS <= 16)
# define print_matrix_header() print("\nr/c 0123456789ABCDEF\n") # define print_matrix_header() print("\nr/c 0123456789ABCDEF\n")
# define print_matrix_row(row) print_bin_reverse16(matrix_get_row(row)) # define print_matrix_row(row) print_bin_reverse16(matrix_get_row(row))
#elif (MATRIX_COLS <= 32) #elif (MATRIX_COLS <= 32)
# define print_matrix_header() print("\nr/c 0123456789ABCDEF0123456789ABCDEF\n") # define print_matrix_header() print("\nr/c 0123456789ABCDEF0123456789ABCDEF\n")
# define print_matrix_row(row) print_bin_reverse32(matrix_get_row(row)) # define print_matrix_row(row) print_bin_reverse32(matrix_get_row(row))
#endif #endif
void matrix_print(void) void matrix_print(void) {
{
print_matrix_header(); print_matrix_header();
for (uint8_t row = 0; row < MATRIX_ROWS; row++) { for (uint8_t row = 0; row < MATRIX_ROWS; row++) {
print_hex8(row); print(": "); print_hex8(row);
print(": ");
print_matrix_row(row); print_matrix_row(row);
print("\n"); print("\n");
} }
+16 -19
View File
@@ -2,28 +2,25 @@
MCU = atmega32u4 MCU = atmega32u4
# Bootloader selection # Bootloader selection
# Teensy halfkay
# Pro Micro caterina
# Atmel DFU atmel-dfu
# LUFA DFU lufa-dfu
# QMK DFU qmk-dfu
# ATmega32A bootloadHID
# ATmega328P USBasp
BOOTLOADER = halfkay BOOTLOADER = halfkay
# Build Options # Build Options
# comment out to disable the options. # change yes to no to disable
# #
BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration
MOUSEKEY_ENABLE = yes # Mouse keys MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration COMMAND_ENABLE = yes # Commands for debug and configuration
NKRO_ENABLE = yes # USB Nkey Rollover # Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
XT_ENABLE = yes SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
CUSTOM_MATRIX = yes # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
NKRO_ENABLE = yes # USB Nkey Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
BLUETOOTH_ENABLE = no # Enable Bluetooth
AUDIO_ENABLE = no # Audio output
XT_ENABLE = yes
CUSTOM_MATRIX = yes
SRC += matrix.c SRC += matrix.c
# Optimize size but this may cause error "relocation truncated to fit"
#EXTRALDFLAGS = -Wl,--relax
+46 -44
View File
@@ -18,6 +18,8 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "quantum.h" #include "quantum.h"
#define XXX KC_NO
/* IBM XT keyboard layout /* IBM XT keyboard layout
* ,-------. ,--------------------------------------------------------------------------. * ,-------. ,--------------------------------------------------------------------------.
* | F1| F2| |Esc| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =| BS |NumLck |ScrLck | * | F1| F2| |Esc| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =| BS |NumLck |ScrLck |
@@ -44,28 +46,28 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
* `-------' `--------------------------------------------------------------------------' * `-------' `--------------------------------------------------------------------------'
*/ */
#define LAYOUT_xt( \ #define LAYOUT_xt( \
K3B,K3C, K01,K02,K03,K04,K05,K06,K07,K08,K09,K0A,K0B,K0C,K0D,K0E, K45, K46, \ k3B, k3C, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E, k45, k46, \
K3D,K3E, K0F,K10,K11,K12,K13,K14,K15,K16,K17,K18,K19,K1A,K1B, K47,K48,K49,K4A, \ k3D, k3E, k0F, k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k47, k48, k49, k4A, \
K3F,K40, K1D,K1E,K1F,K20,K21,K22,K23,K24,K25,K26,K27,K28,K29,K1C,K4B,K4C,K4D, \ k3F, k40, k1D, k1E, k1F, k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k1C, k4B, k4C, k4D, \
K41,K42, K2A,K2B,K2C,K2D,K2E,K2F,K30,K31,K32,K33,K34,K35,K36,K37,K4F,K50,K51,K4E, \ k41, k42, k2A, k2B, k2C, k2D, k2E, k2F, k30, k31, k32, k33, k34, k35, k36, k37, k4F, k50, k51, k4E, \
K43,K44, K38, K39, K3A, K52, K53 \ k43, k44, k38, k39, k3A, k52, k53 \
) { \ ) { \
{ KC_NO, K01, K02, K03, K04, K05, K06, K07 }, \ { XXX, k01, k02, k03, k04, k05, k06, k07 }, \
{ K08, K09, K0A, K0B, K0C, K0D, K0E, K0F }, \ { k08, k09, k0A, k0B, k0C, k0D, k0E, k0F }, \
{ K10, K11, K12, K13, K14, K15, K16, K17 }, \ { k10, k11, k12, k13, k14, k15, k16, k17 }, \
{ K18, K19, K1A, K1B, K1C, K1D, K1E, K1F }, \ { k18, k19, k1A, k1B, k1C, k1D, k1E, k1F }, \
{ K20, K21, K22, K23, K24, K25, K26, K27 }, \ { k20, k21, k22, k23, k24, k25, k26, k27 }, \
{ K28, K29, K2A, K2B, K2C, K2D, K2E, K2F }, \ { k28, k29, k2A, k2B, k2C, k2D, k2E, k2F }, \
{ K30, K31, K32, K33, K34, K35, K36, K37 }, \ { k30, k31, k32, k33, k34, k35, k36, k37 }, \
{ K38, K39, K3A, K3B, K3C, K3D, K3E, K3F }, \ { k38, k39, k3A, k3B, k3C, k3D, k3E, k3F }, \
{ K40, K41, K42, K43, K44, K45, K46, K47 }, \ { k40, k41, k42, k43, k44, k45, k46, k47 }, \
{ K48, K49, K4A, K4B, K4C, K4D, K4E, K4F }, \ { k48, k49, k4A, k4B, k4C, k4D, k4E, k4F }, \
{ K50, K51, K52, K53, KC_NO, KC_NO, KC_NO, KC_NO }, \ { k50, k51, k52, k53, XXX, XXX, XXX, XXX }, \
{ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, \ { XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX }, \
{ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, \ { XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX }, \
{ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, \ { XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX }, \
{ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, \ { XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX }, \
{ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO } \ { XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX } \
} }
/* Extended keyboard layout /* Extended keyboard layout
@@ -105,28 +107,28 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
* *: special handling codes * *: special handling codes
*/ */
#define LAYOUT( \ #define LAYOUT( \
K64,K65,K66,K67,K68,K69,K6A,K6B,K6C,K6D,K6E,K76, \ k64, k65, k66, k67, k68, k69, k6A, k6B, k6C, k6D, k6E, k76, \
K01, K3B,K3C,K3D,K3E,K3F,K40,K41,K42,K43,K44,K57,K58, K54,K46,K55, K5D,K5E,K5F, \ k01, k3B, k3C, k3D, k3E, k3F, k40, k41, k42, k43, k44, k57, k58, k54, k46, k55, k5D, k5E, k5F, \
K29,K02,K03,K04,K05,K06,K07,K08,K09,K0A,K0B,K0C,K0D,K7D,K0E, K71,K74,K77, K45,K7F,K37,K4A, \ k29, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k7D, k0E, k71, k74, k77, k45, k7F, k37, k4A, \
K0F,K10,K11,K12,K13,K14,K15,K16,K17,K18,K19,K1A,K1B, K2B, K72,K75,K78, K47,K48,K49,K4E, \ k0F, k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k2B, k72, k75, k78, k47, k48, k49, k4E, \
K3A,K1E,K1F,K20,K21,K22,K23,K24,K25,K26,K27,K28, K00,K1C, K4B,K4C,K4D,K7E, \ k3A, k1E, k1F, k20, k21, k22, k23, k24, k25, k26, k27, k28, k00, k1C, k4B, k4C, k4D, k7E, \
K2A,K56,K2C,K2D,K2E,K2F,K30,K31,K32,K33,K34,K35, K73,K36, K60, K4F,K50,K51,K6F, \ k2A, k56, k2C, k2D, k2E, k2F, k30, k31, k32, k33, k34, k35, k73, k36, k60, k4F, k50, k51, k6F, \
K1D,K5A,K38,K7B, K39, K79,K70,K7C,K5B,K5C,K7A, K61,K62,K63, K52,K53,K59 \ k1D, k5A, k38, k7B, k39, k79, k70, k7C, k5B, k5C, k7A, k61, k62, k63, k52, k53, k59 \
) { \ ) { \
{ K00, K01, K02, K03, K04, K05, K06, K07 }, \ { k00, k01, k02, k03, k04, k05, k06, k07 }, \
{ K08, K09, K0A, K0B, K0C, K0D, K0E, K0F }, \ { k08, k09, k0A, k0B, k0C, k0D, k0E, k0F }, \
{ K10, K11, K12, K13, K14, K15, K16, K17 }, \ { k10, k11, k12, k13, k14, k15, k16, k17 }, \
{ K18, K19, K1A, K1B, K1C, K1D, K1E, K1F }, \ { k18, k19, k1A, k1B, k1C, k1D, k1E, k1F }, \
{ K20, K21, K22, K23, K24, K25, K26, K27 }, \ { k20, k21, k22, k23, k24, k25, k26, k27 }, \
{ K28, K29, K2A, K2B, K2C, K2D, K2E, K2F }, \ { k28, k29, k2A, k2B, k2C, k2D, k2E, k2F }, \
{ K30, K31, K32, K33, K34, K35, K36, K37 }, \ { k30, k31, k32, k33, k34, k35, k36, k37 }, \
{ K38, K39, K3A, K3B, K3C, K3D, K3E, K3F }, \ { k38, k39, k3A, k3B, k3C, k3D, k3E, k3F }, \
{ K40, K41, K42, K43, K44, K45, K46, K47 }, \ { k40, k41, k42, k43, k44, k45, k46, k47 }, \
{ K48, K49, K4A, K4B, K4C, K4D, K4E, K4F }, \ { k48, k49, k4A, k4B, k4C, k4D, k4E, k4F }, \
{ K50, K51, K52, K53, K54, K55, K56, K57 }, \ { k50, k51, k52, k53, k54, k55, k56, k57 }, \
{ K58, K59, K5A, K5B, K5C, K5D, K5E, K5F }, \ { k58, k59, k5A, k5B, k5C, k5D, k5E, k5F }, \
{ K60, K61, K62, K63, K64, K65, K66, K67 }, \ { k60, k61, k62, k63, k64, k65, k66, k67 }, \
{ K68, K69, K6A, K6B, K6C, K6D, K6E, K6F }, \ { k68, k69, k6A, k6B, k6C, k6D, k6E, k6F }, \
{ K70, K71, K72, K73, K74, K75, K76, K77 }, \ { k70, k71, k72, k73, k74, k75, k76, k77 }, \
{ K78, K79, K7A, K7B, K7C, K7D, K7E, K7F } \ { k78, k79, k7A, k7B, k7C, k7D, k7E, k7F } \
} }
@@ -45,4 +45,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define RGBLIGHT_VAL_STEP 17 #define RGBLIGHT_VAL_STEP 17
#endif #endif
#define ONESHOT_TAP_TOGGLE 3 /* Tapping this number of times holds the key until tapped once again. */
#define ONESHOT_TIMEOUT 5000 /* Time (in ms) before the one shot key is released */
#define OLED_FONT_H "keyboards/crkbd/lib/glcdfont.c" #define OLED_FONT_H "keyboards/crkbd/lib/glcdfont.c"
+39 -29
View File
@@ -19,48 +19,58 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include QMK_KEYBOARD_H #include QMK_KEYBOARD_H
enum custom_keycodes {
ARROW_FUNCTION = SAFE_RANGE
};
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
switch (keycode) {
case ARROW_FUNCTION:
if (record->event.pressed) {
SEND_STRING("() => {}");
} else {
SEND_STRING(SS_TAP(X_LEFT) SS_TAP(X_ENTER));
}
return false;
}
return true;
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = LAYOUT_split_3x6_3( [0] = LAYOUT_split_3x6_3(
//,-----------------------------------------------------. ,-----------------------------------------------------. KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, LT(1, KC_ESC), LT(2, KC_A), LT(3, KC_S), KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| OSM(MOD_LSFT), MT(MOD_LCTL, KC_Z), KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, MT(MOD_RCTL, KC_SLSH), OSM(MOD_RSFT),
LT(1, KC_ESC), LT(2, KC_A), KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_LALT, LGUI(KC_SPACE), LGUI_T(KC_SPC), MT(MOD_RSFT, KC_ENT), MO(2), KC_RALT
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
KC_LSFT, MT(MOD_LCTL, KC_Z), KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, MT(MOD_RCTL, KC_SLSH), KC_RSFT,
//|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
KC_LALT, LGUI(KC_SPACE), LGUI_T(KC_SPC), MT(MOD_RSFT, KC_ENT), LT(2, KC_BSPC), KC_RALT
//`--------------------------' '--------------------------´
), ),
[1] = LAYOUT_split_3x6_3( [1] = LAYOUT_split_3x6_3(
//,-----------------------------------------------------. ,-----------------------------------------------------. _______, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, _______,
_______, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, _______, _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT, XXXXXXX, _______,
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______, _______, _______, _______,
_______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_LEFT, KC_DOWN, KC_UP,KC_RIGHT, XXXXXXX, _______, _______, _______, _______, _______, _______, _______
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
_______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______,
//|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
_______, _______, _______, _______, _______, _______
//`--------------------------' '--------------------------´
), ),
[2] = LAYOUT_split_3x6_3( [2] = LAYOUT_split_3x6_3(
//,-----------------------------------------------------. ,-----------------------------------------------------. _______, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, _______,
_______, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, _______, _______, XXXXXXX, XXXXXXX, XXXXXXX, ARROW_FUNCTION, KC_LT, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS, KC_GRV,
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_GT, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE, KC_TILD,
_______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS, KC_GRV, _______, _______, _______, _______, _______, _______
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| ),
_______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE, KC_TILD,
//|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------| [3] = LAYOUT_split_3x6_3(
_______, _______, _______, _______, _______, _______ _______, XXXXXXX, XXXXXXX, XXXXXXX, LALT(LSFT(KC_0)), XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, LGUI(LSFT(KC_4)), XXXXXXX,
//`--------------------------' '--------------------------´ _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, LGUI(KC_MINS), LGUI(KC_PLUS), XXXXXXX, XXXXXXX, XXXXXXX,
) _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
_______, _______, _______, _______, _______, _______
),
}; };
#ifdef OLED_DRIVER_ENABLE #ifdef OLED_DRIVER_ENABLE
oled_rotation_t oled_init_user(oled_rotation_t rotation) { oled_rotation_t oled_init_user(oled_rotation_t rotation) {
if (!is_master) { if (!is_master) {
return OLED_ROTATION_180; // flips the display 180 degrees if offhand return OLED_ROTATION_180; // flips the display 180 degrees if offhand
} }
return rotation; return rotation;
} }
+30 -1
View File
@@ -1,6 +1,6 @@
# armand1m crkbd layout # armand1m crkbd layout
This is the personal layout for [@armand1m](https://github.com/armand1m) This is the personal layout for [@armand1m](https://go.d1m.dev/github)
This layout is heavily inspired in my personal Moonlander layout, optimized for my own personal usage. This layout is heavily inspired in my personal Moonlander layout, optimized for my own personal usage.
@@ -8,6 +8,35 @@ As of the date of this writing, my environment runs OS X Big Sur with yabai and
I am a huge fan of ModTaps, so this layout will contain some of those to allow for a better experience in such a small keyboard like the crkbd. I am a huge fan of ModTaps, so this layout will contain some of those to allow for a better experience in such a small keyboard like the crkbd.
## Layout
You can find `json` files for http://www.keyboard-layout-editor.com/ in the keymap folder.
Here are some screenshots for convenience:
Base Layer:<br/>
<a href="https://ibb.co/fYZw3yj"><img src="https://i.ibb.co/0j1b06H/Screen-Shot-2021-03-15-at-4-58-43-PM.png" alt="Base Layer" border="0"></a>
Numbers Layer:<br/>
<a href="https://ibb.co/30Vg1tS"><img src="https://i.ibb.co/hKr3sp2/Screen-Shot-2021-03-15-at-5-18-07-PM.png" alt="Numbers Layer" border="0"></a>
Symbols Layer:<br/>
<a href="https://ibb.co/ryCg4pS"><img src="https://i.ibb.co/q1tzkgf/Screen-Shot-2021-03-15-at-5-18-33-PM.png" alt="Symbols Layer" border="0"></a>
## Choices
Every keymap is pretty unique and tailored to suit it's main creators needs. Here are some of my choices for the keys and their explanations:
- Left thumb acts as Space when tapping but as Command when holding: this makes my life so much easier in OS X. Having command reachable all the time just feels right to me and Mod Taps help me a lot on this.
- Right thumb acts as Enter when tapping but as Right Shift when holding: this is more of an experiment. I usually use shift on my pinkies. It is an interesting feature but I often forget about it.
- Esc lives in the home row, before A. It also acts as a layer toggle to the numbers layer when held. Having the LT to the numbers layer here allows me to actually reach the number 1 pretty nicely and other numbers on the left hand pretty easily.
- Keys on the home row are used to switch to layers, so "A" goes to layer 2 when held. I started making this in the Moonlander and migrated the practice, but still sometimes I use the MO 2 on the right thumb.
- One Shot Keys are enabled for the shifts on the pinkies. If you press it twice: it will lock on shift until pressed again (pretty much like caps lock). These are handy when you're typing and just don't want to hold shift to have a capitalized word.
## Usage ## Usage
In case you have `qmk` installed: In case you have `qmk` installed:
+112
View File
@@ -0,0 +1,112 @@
/*Copyright 2021 Blake Drayson / Draytronics
Contact info@draytronics.co.uk
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#pragma once
#include "config_common.h"
#define VENDOR_ID 0x4454 //DT for DrayTronics
#define PRODUCT_ID 0x4441 //DA for Daisy
#define DEVICE_VER 0x0100 //Version 1
#define MANUFACTURER Draytronics
#define PRODUCT DAISY
/* key matrix size */
#define MATRIX_ROWS 3
#define MATRIX_COLS 4
/*
* Keyboard Matrix Assignments
*
* Change this to how you wired your keyboard
* COLS: AVR pins used for columns, left to right
* ROWS: AVR pins used for rows, top to bottom
* DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode)
* ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode)
*
*/
#define MATRIX_ROW_PINS { B0, C0, C1}
#define MATRIX_COL_PINS { C2, C3, C4, C5 }
#define UNUSED_PINS
#define ENCODERS_PAD_A { B1, D0 }
#define ENCODERS_PAD_B { B2, D1 }
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
#define TAP_CODE_DELAY 10
/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
#define DEBOUNCE 5
/* define if matrix has ghost (lacks anti-ghosting diodes) */
//#define MATRIX_HAS_GHOST
/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
#define LOCKING_SUPPORT_ENABLE
/* Locking resynchronize hack */
#define LOCKING_RESYNC_ENABLE
/* If defined, GRAVE_ESC will always act as ESC when CTRL is held.
* This is useful for the Windows task manager shortcut (ctrl+shift+esc).
*/
//#define GRAVE_ESC_CTRL_OVERRIDE
/*
* Force NKRO
*
* Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved
* state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the
* makefile for this to work.)
*
* If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N)
* until the next keyboard reset.
*
* NKRO may prevent your keystrokes from being detected in the BIOS, but it is
* fully operational during normal computer usage.
*
* For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N)
* or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by
* bootmagic, NKRO mode will always be enabled until it is toggled again during a
* power-up.
*
*/
//#define FORCE_NKRO
/*
* Feature disable options
* These options are also useful to firmware size reduction.
*/
/* disable debug print */
//#define NO_DEBUG
/* disable print */
//#define NO_PRINT
/* disable action features */
//#define NO_ACTION_LAYER
//#define NO_ACTION_TAPPING
//#define NO_ACTION_ONESHOT
/* disable these deprecated features by default */
#define NO_ACTION_MACRO
#define NO_ACTION_FUNCTION
//Underglow
#define RGB_DI_PIN D4 // Underglow led pin
#ifdef RGB_DI_PIN
#define RGBLED_NUM 4
#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
#endif
+19
View File
@@ -0,0 +1,19 @@
/*Copyright 2021 Blake Drayson / Draytronics
Contact info@draytronics.co.uk
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include "daisy.h"
+33
View File
@@ -0,0 +1,33 @@
/*Copyright 2021 Blake Drayson / Draytronics
Contact info@draytronics.co.uk
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#pragma once
#define _x_ KC_NO
#include "quantum.h"
#define LAYOUT_daisy( \
K00, K03, \
K10, K11, K12, K13, \
K20, K21, K22, K23 \
) { \
{ K00, _x_, _x_, K03, }, \
{ K10, K11, K12, K13, }, \
{ K20, K21, K22, K23, }, \
}
+25
View File
@@ -0,0 +1,25 @@
{
"keyboard_name": "Draytronics DAISY",
"url": "https://www.draytronics.co.uk/daisy",
"maintainer": "ghostseven",
"width": 4,
"height": 3,
"layouts": {
"LAYOUT": {
"layout": [
{"label":"", "x":0, "y":0},
{"label":"", "x":3, "y":0},
{"label":"", "x":0, "y":1},
{"label":"", "x":1, "y":1},
{"label":"", "x":2, "y":1},
{"label":"", "x":3, "y":1},
{"label":"", "x":0, "y":2},
{"label":"", "x":1, "y":2},
{"label":"", "x":2, "y":2},
{"label":"", "x":3, "y":1, "h":2}
]
}
}
}
@@ -0,0 +1,51 @@
/*Copyright 2021 Blake Drayson / Draytronics
Contact info@draytronics.co.uk
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include QMK_KEYBOARD_H
#define _BASE 0 // Base layer
#define _CODE 1 // Code layer
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_BASE] = LAYOUT_daisy(
KC_MUTE, KC_HOME,
MO(_CODE), KC_MPRV, KC_MNXT, KC_MPLY,
C(KC_LEFT), C(KC_UP), C(KC_DOWN), C(KC_RIGHT)
),
[_CODE] = LAYOUT_daisy(
KC_MUTE, KC_END,
_______, RGB_MOD, RGB_VAI, RGB_TOG,
G(S(KC_5)), G(A(KC_ESC)), G(KC_F), RESET
)
};
void encoder_update_user(uint8_t index, bool clockwise) {
if (index == 0) {
if (clockwise) {
tap_code(KC_VOLD);
} else {
tap_code(KC_VOLU);
}
}
else if (index == 1) {
if (clockwise) {
tap_code(KC_PGUP);
} else {
tap_code(KC_PGDN);
}
}
}
+20
View File
@@ -0,0 +1,20 @@
# DAISY
![daisy](https://www.draytronics.co.uk/wp-content/uploads/2020/12/repository-open-graph-template-1.png)
An open source macro pad with rotary encoders and under glow, designed to be easily built with (mostly) through hole components. More info / kits / PCB designs available at [draytronics.co.uk/daisy](https://www.draytronics.co.uk/daisy)
* Keyboard Maintainer: [Blake Drayson](https://github.com/ghostseven)
* Hardware Supported: DAISY PCB / ATMega328P
* Hardware Availability: [draytronics.co.uk](https://draytronics.co.uk)
Make example for this keyboard (after setting up your build environment):
make draytronics/daisy:default
Flashing example for this keyboard:
make draytronics/daisy:default:flash
See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
VIA design config file avaliable [here](https://www.draytronics.co.uk/f_daisy/draytronics_daisy_via_config.json)
+23
View File
@@ -0,0 +1,23 @@
# MCU name
MCU = atmega328p
# Bootloader selection
BOOTLOADER = USBasp
# Build Options
# change yes to no to disable
#
BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
NKRO_ENABLE = no # USB Nkey Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
BLUETOOTH_ENABLE = no # Enable Bluetooth
AUDIO_ENABLE = no # Audio output
ENCODER_ENABLE = yes # Rotary encoder support
+2 -2
View File
@@ -2,11 +2,11 @@
![scarlet](https://www.draytronics.co.uk/wp-content/uploads/2020/10/Scarlet-PCB-Compared-Combined.png) ![scarlet](https://www.draytronics.co.uk/wp-content/uploads/2020/10/Scarlet-PCB-Compared-Combined.png)
A open source 17 key numpad keyboard, designed to be easily built at home with through hole components. More info / kits / PCB designs available at [draytronics.co.uk/scarlet](draytronics.co.uk) A open source 17 key numpad keyboard, designed to be easily built at home with through hole components. More info / kits / PCB designs available at [draytronics.co.uk/scarlet](https://draytronics.co.uk)
* Keyboard Maintainer: [Blake Drayson](https://github.com/ghostseven) * Keyboard Maintainer: [Blake Drayson](https://github.com/ghostseven)
* Hardware Supported: SCARLET PCB / ATMega32A * Hardware Supported: SCARLET PCB / ATMega32A
* Hardware Availability: [draytronics.co.uk](draytronics.co.uk) * Hardware Availability: [draytronics.co.uk](https://draytronics.co.uk)
Make example for this keyboard (after setting up your build environment): Make example for this keyboard (after setting up your build environment):
@@ -0,0 +1,63 @@
/* Copyright 2021 Felix Springer
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#pragma once
#define FORCE_NKRO
#ifdef RGB_MATRIX_ENABLE
#define DISABLE_RGB_MATRIX_ALPHAS_MODS
#define DISABLE_RGB_MATRIX_GRADIENT_UP_DOWN
#define DISABLE_RGB_MATRIX_BREATHING
#define DISABLE_RGB_MATRIX_BAND_SAT
#define DISABLE_RGB_MATRIX_BAND_VAL
#define DISABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
#define DISABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
#define DISABLE_RGB_MATRIX_BAND_SPIRAL_SAT
#define DISABLE_RGB_MATRIX_BAND_SPIRAL_VAL
#define DISABLE_RGB_MATRIX_CYCLE_ALL
#define DISABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
#define DISABLE_RGB_MATRIX_CYCLE_UP_DOWN
#define DISABLE_RGB_MATRIX_CYCLE_OUT_IN
#define DISABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
#define DISABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
#define DISABLE_RGB_MATRIX_DUAL_BEACON
#define DISABLE_RGB_MATRIX_CYCLE_PINWHEEL
#define DISABLE_RGB_MATRIX_CYCLE_SPIRAL
#define DISABLE_RGB_MATRIX_RAINBOW_BEACON
#define DISABLE_RGB_MATRIX_RAINBOW_PINWHEELS
#define DISABLE_RGB_MATRIX_RAINDROPS
#define DISABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
#define DISABLE_RGB_MATRIX_TYPING_HEATMAP
#define DISABLE_RGB_MATRIX_DIGITAL_RAIN
#define DISABLE_RGB_MATRIX_SOLID_REACTIVE
#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
#define DISABLE_RGB_MATRIX_SPLASH
#define DISABLE_RGB_MATRIX_MULTISPLASH
#define DISABLE_RGB_MATRIX_SOLID_SPLASH
#define DISABLE_RGB_MATRIX_SOLID_MULTISPLASH
// Fix RGB_MATRIX_STARTUP, because RGB_MATRIX_CYCLE_ALL is disabled.
// The actual handling of RGB_EFFECTs is done in keymap.c
#undef RGB_MATRIX_STARTUP_MODE
#endif
@@ -0,0 +1,120 @@
/* Copyright 2021 Felix Springer
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include QMK_KEYBOARD_H
enum layers_user {
_QWERTY,
_AD,
_VI,
_FN,
_KB
};
enum keycodes_user {
_BASEEF = SAFE_RANGE,
_KITTEF
};
int selected_mode_user = RGB_MATRIX_CUSTOM_base_effect; // for layer_state_set_user()
bool process_record_user(uint16_t keycode, keyrecord_t * record) {
switch (keycode) {
case _BASEEF:
if (record->event.pressed) {
selected_mode_user = RGB_MATRIX_CUSTOM_base_effect;
}
return false;
case _KITTEF:
if (record->event.pressed) {
selected_mode_user = RGB_MATRIX_CUSTOM_kitt_effect;
}
return false;
default:
return true;
}
}
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_QWERTY] = LAYOUT_65_ansi(
KC_GRAVE, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_HOME,
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP,
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_ENT, KC_PGDN,
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END,
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
),
[_AD] = LAYOUT_65_ansi(
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_INS,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_HOME,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_END,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______
),
[_VI] = LAYOUT_65_ansi(
KC_ESC, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
_______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_PGUP, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
KC_ESC, XXXXXXX, XXXXXXX, KC_PGDN, XXXXXXX, XXXXXXX, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, XXXXXXX, XXXXXXX, _______, XXXXXXX,
_______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_FIND, _______, _______, XXXXXXX,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______
),
[_FN] = LAYOUT_65_ansi(
XXXXXXX, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_INS,
XXXXXXX, KC_MUTE, KC_VOLU, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_PSCR, KC_SLCK, KC_PAUS, XXXXXXX, KC_PSTE,
CTL_T(KC_CAPS), KC_BRID, KC_VOLD, KC_BRIU, XXXXXXX, XXXXXXX, TG(_AD), TG(_VI), XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_COPY,
KC_LSFT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_APP, XXXXXXX, XXXXXXX, XXXXXXX, KC_RSFT, KC_MSTP, KC_CUT,
KC_LCTL, KC_LGUI, KC_LALT, XXXXXXX, MO(_KB), XXXXXXX, KC_RCTL, KC_MPRV, KC_MPLY, KC_MNXT
),
[_KB] = LAYOUT_65_ansi(
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RGB_SPI, RGB_SPD, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RESET, XXXXXXX,
XXXXXXX, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
XXXXXXX, XXXXXXX, RGB_SAI, RGB_SAD, XXXXXXX, XXXXXXX, _BASEEF, _KITTEF, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, EEP_RST, XXXXXXX,
KC_LSFT, RGB_VAI, RGB_VAD, XXXXXXX, XXXXXXX, XXXXXXX, NK_TOGG, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_RSFT, XXXXXXX, XXXXXXX,
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX
)
/*
[_LEDS] = LAYOUT_65_ansi(
0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11 , 12 , 13 , 14 ,
15 , 16 Q, 17 W, 18 E, 19 R, 20 T, 21 Y, 22 U, 23 I, 24 O, 25 P, 26 , 27 , 28 , 29 ,
30 , 31 A, 32 S, 33 D, 34 F, 35 G, 36 H, 37 J, 38 K, 39 L, 40 , 41 , 42 , 43 ,
44 , 45 Z, 46 X, 47 C, 48 V, 49 B, 50 N, 51 M, 52 , 53 , 54 , 55 , 56 , 57 ,
58 , 59 , 60 , 61 , 62 , 63 , 64 , 65 , 66 , 67
)
*/
};
layer_state_t layer_state_set_user(layer_state_t state) {
switch (get_highest_layer(state)) {
case _QWERTY:
rgb_matrix_mode(selected_mode_user);
break;
case _AD:
if (selected_mode_user == RGB_MATRIX_CUSTOM_base_effect) {
rgb_matrix_mode(RGB_MATRIX_CUSTOM_base_ad_effect);
} else {
rgb_matrix_mode(selected_mode_user);
}
break;
case _VI:
rgb_matrix_mode(RGB_MATRIX_CUSTOM_vi_effect);
break;
case _FN:
rgb_matrix_mode(RGB_MATRIX_CUSTOM_fn_indicator);
break;
case _KB:
rgb_matrix_mode(RGB_MATRIX_CUSTOM_kb_indicator);
break;
}
return state;
}
@@ -0,0 +1,24 @@
# jumper149's DZ65RGB v2
Run commands in the root directory of this repository.
```
./bin/qmk compile && sudo dfu-programmer atmega32u4 erase && sudo dfu-programmer atmega32u4 flash ./dztech_dz65rgb_v2_jumper149.hex && sudo dfu-programmer atmega32u4 reset
```
## build
```
./bin/qmk compile
```
## flash
Use `qmk flash` or if it is broken (unknown reason) you can try this workaround.
I personally had some problems on ArchLinux, that I didn't debug any further though.
```
sudo dfu-programmer atmega32u4 erase
sudo dfu-programmer atmega32u4 flash ./dztech_dz65rgb_v2_jumper149.hex
sudo dfu-programmer atmega32u4 reset
```
@@ -0,0 +1,700 @@
/* Copyright 2021 Felix Springer
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
RGB_MATRIX_EFFECT(base_effect)
RGB_MATRIX_EFFECT(base_ad_effect)
RGB_MATRIX_EFFECT(vi_effect)
RGB_MATRIX_EFFECT(fn_indicator)
RGB_MATRIX_EFFECT(kb_indicator)
RGB_MATRIX_EFFECT(kitt_effect)
#ifdef RGB_MATRIX_CUSTOM_EFFECT_IMPLS
/*
[_LEDS] = LAYOUT_65_ansi(
0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11 , 12 , 13 , 14 ,
15 , 16 Q, 17 W, 18 E, 19 R, 20 T, 21 Y, 22 U, 23 I, 24 O, 25 P, 26 , 27 , 28 , 29 ,
30 , 31 A, 32 S, 33 D, 34 F, 35 G, 36 H, 37 J, 38 K, 39 L, 40 , 41 , 42 , 43 ,
44 , 45 Z, 46 X, 47 C, 48 V, 49 B, 50 N, 51 M, 52 , 53 , 54 , 55 , 56 , 57 ,
58 , 59 , 60 , 61 , 62 , 63 , 64 , 65 , 66 , 67
)
*/
// variable for startup animation
bool BASE_EFFECT_NOT_STARTED_YET = true;
uint8_t base_effect_startup_counter = 255;
static HSV base_effect_math(HSV hsv, uint8_t i, uint8_t time) {
if (BASE_EFFECT_NOT_STARTED_YET) {
base_effect_startup_counter = 0;
BASE_EFFECT_NOT_STARTED_YET = false;
}
// startup animation
if (base_effect_startup_counter < 255) {
// jump to correct indices for alpha keys
if (i == 0) { // only run for one key (key 0 is an arbitrary choice)
if (base_effect_startup_counter == 0) {
base_effect_startup_counter = 1;
} else if (base_effect_startup_counter == 1) {
base_effect_startup_counter = 17;
} else if (base_effect_startup_counter == 26) {
base_effect_startup_counter = 31;
} else if (base_effect_startup_counter == 40) {
base_effect_startup_counter = 45;
} else if (base_effect_startup_counter == 52) {
base_effect_startup_counter = 100;
} else if (base_effect_startup_counter == 120) {
base_effect_startup_counter = 255;
} else {
base_effect_startup_counter++;
}
}
// overwrite some highlit keys
if (3 + 39 - i < base_effect_startup_counter - 100 && i >= 36 && i <= 39) {
hsv.s = hsv.s;
} else if (3 + 39 - i < base_effect_startup_counter - 100 && i >= 31 && i <= 34) {
hsv.s = hsv.s;
// light up alpha keys
} else if (i < base_effect_startup_counter && i >= 16 && i <= 25) {
hsv.s = 0;
} else if (31 + 39 - i < base_effect_startup_counter && i >= 31 && i <= 39) {
hsv.s = 0;
} else if (i < base_effect_startup_counter && i >= 45 && i <= 51) {
hsv.s = 0;
// light up number row
} else if (12 + 1 - i < base_effect_startup_counter - 100 && i == 2) {
hsv.s = 0;
hsv.v = 1 * (hsv.v / 8);
} else if (12 + 1 - i < base_effect_startup_counter - 100 && i == 3) {
hsv.s = 0;
hsv.v = 2 * (hsv.v / 8);
} else if (12 + 1 - i < base_effect_startup_counter - 100 && i == 4) {
hsv.s = 0;
hsv.v = 3 * (hsv.v / 8);
} else if (12 + 1 - i < base_effect_startup_counter - 100 && i >= 5 && i <= 8) {
hsv.v = hsv.v;
} else if (12 + 1 - i < base_effect_startup_counter - 100 && i == 9) {
hsv.s = 0;
hsv.v = 3 * (hsv.v / 8);
} else if (12 + 1 - i < base_effect_startup_counter - 100 && i == 10) {
hsv.s = 0;
hsv.v = 2 * (hsv.v / 8);
} else if (12 + 1 - i < base_effect_startup_counter - 100 && i == 11) {
hsv.s = 0;
hsv.v = 1 * (hsv.v / 8);
// light up punctuation keys
} else if (27 + 1 - i < base_effect_startup_counter - 100 && i >= 26 && i <= 27) {
hsv.s = 0;
hsv.v = hsv.v / 8;
} else if (41 + 2 - i < base_effect_startup_counter - 100 && i >= 40 && i <= 41) {
hsv.s = 0;
hsv.v = hsv.v / 8;
} else if (54 + 3 - i < base_effect_startup_counter - 100 && i >= 52 && i <= 54) {
hsv.s = 0;
hsv.v = hsv.v / 8;
// rest
} else {
hsv.v = 0;
}
} else {
switch (i) {
// number row
case 0:
hsv.v = 0;
break;
case 1:
hsv.v = 0;
break;
case 2:
hsv.s = 0;
hsv.v = 1 * (hsv.v / 8);
break;
case 3:
hsv.s = 0;
hsv.v = 2 * (hsv.v / 8);
break;
case 4:
hsv.s = 0;
hsv.v = 3 * (hsv.v / 8);
break;
case 5:
hsv.v = hsv.v;
break;
case 6:
hsv.v = hsv.v;
break;
case 7:
hsv.v = hsv.v;
break;
case 8:
hsv.v = hsv.v;
break;
case 9:
hsv.s = 0;
hsv.v = 3 * (hsv.v / 8);
break;
case 10:
hsv.s = 0;
hsv.v = 2 * (hsv.v / 8);
break;
case 11:
hsv.s = 0;
hsv.v = 1 * (hsv.v / 8);
break;
case 12:
hsv.v = 0;
break;
// punctuation keys
case 26:
hsv.s = 0;
hsv.v = hsv.v / 8;
break;
case 27:
hsv.s = 0;
hsv.v = hsv.v / 8;
break;
case 40:
hsv.s = 0;
hsv.v = hsv.v / 8;
break;
case 41:
hsv.s = 0;
hsv.v = hsv.v / 8;
break;
case 52:
hsv.s = 0;
hsv.v = hsv.v / 8;
break;
case 53:
hsv.s = 0;
hsv.v = hsv.v / 8;
break;
case 54:
hsv.s = 0;
hsv.v = hsv.v / 8;
break;
default:
if (
(i > 15 && i <= 25) ||
(i > 30 && i <= 39) ||
(i > 44 && i <= 51)
) {
if (i > 35 && i <= 39) {
hsv.s = hsv.s;
} else if (i > 30 && i <= 34) {
hsv.s = hsv.s;
} else {
hsv.s = 0;
}
} else {
hsv.v = 0;
}
break;
}
}
return hsv;
}
bool base_effect(effect_params_t* params) {
return effect_runner_i(params, &base_effect_math);
}
static HSV base_ad_effect_math(HSV hsv, uint8_t i, uint8_t time) {
// no startup animation
if (BASE_EFFECT_NOT_STARTED_YET) {
base_effect_startup_counter = 255; // act like startup is already completed
BASE_EFFECT_NOT_STARTED_YET = false;
}
switch (i) {
// delete
case 14:
hsv.h = 0;
hsv.s = 255;
break;
// insert
case 29:
hsv.h = 255/3;
hsv.s = 255;
break;
// home
case 43:
hsv.s = 0;
break;
// end
case 57:
hsv.s = 255;
break;
default:
hsv = base_effect_math(hsv, i, time);
break;
}
return hsv;
}
bool base_ad_effect(effect_params_t* params) {
return effect_runner_i(params, &base_ad_effect_math);
}
static HSV vi_effect_math(HSV hsv, uint8_t i, uint8_t time) {
// no startup animation
if (BASE_EFFECT_NOT_STARTED_YET) {
base_effect_startup_counter = 255; // act like startup is already completed
BASE_EFFECT_NOT_STARTED_YET = false;
}
switch (i) {
// hjkl
case 36:
break;
case 37:
break;
case 38:
break;
case 39:
break;
// page up
case 22:
hsv.s = 0;
break;
// page down
case 33:
hsv.s = 0;
break;
// find
case 54:
hsv.s = 0;
break;
default:
hsv.v = 0;
break;
}
return hsv;
}
bool vi_effect(effect_params_t* params) {
return effect_runner_i(params, &vi_effect_math);
}
static HSV fn_indicator_math(HSV hsv, uint8_t i, uint8_t time) {
// cancel base effect startup
base_effect_startup_counter = 255;
switch (i) {
// F1 - F12
case 1:
hsv.h = 0 * 255 / 3;
hsv.s = 255;
break;
case 2:
hsv.h = 0 * 255 / 3;
hsv.s = 255;
break;
case 3:
hsv.h = 0 * 255 / 3;
hsv.s = 255;
break;
case 4:
hsv.h = 0 * 255 / 3;
hsv.s = 255;
break;
case 5:
hsv.h = 1 * 255 / 3;
hsv.s = 255;
break;
case 6:
hsv.h = 1 * 255 / 3;
hsv.s = 255;
break;
case 7:
hsv.h = 1 * 255 / 3;
hsv.s = 255;
break;
case 8:
hsv.h = 1 * 255 / 3;
hsv.s = 255;
break;
case 9:
hsv.h = 2 * 255 / 3;
hsv.s = 255;
break;
case 10:
hsv.h = 2 * 255 / 3;
hsv.s = 255;
break;
case 11:
hsv.h = 2 * 255 / 3;
hsv.s = 255;
break;
case 12:
hsv.h = 2 * 255 / 3;
hsv.s = 255;
break;
// delete/insert
case 13:
hsv.h = 0;
hsv.s = 255;
break;
case 14:
hsv.h = 1 * (255 / 3);
hsv.s = 255;
break;
// paste/copy/cut
case 29:
hsv.s = 0;
break;
case 43:
hsv.h = 200;
hsv.s = 255;
break;
case 57:
hsv.h = 0;
hsv.s = 255;
break;
// print/scroll/pause
case 25:
hsv.s = 0;
break;
case 26:
hsv.s = 0;
break;
case 27:
hsv.s = 0;
break;
// caps lock
case 30:
hsv.s = 0;
break;
// modifier
case 44:
hsv.s = 0;
hsv.v = hsv.v / 2;
break;
case 55:
hsv.s = 0;
hsv.v = hsv.v / 2;
break;
case 58:
hsv.s = 0;
hsv.v = hsv.v / 2;
break;
case 59:
hsv.s = 0;
hsv.v = hsv.v / 2;
break;
case 60:
hsv.s = 0;
hsv.v = hsv.v / 2;
break;
case 64:
hsv.s = 0;
hsv.v = hsv.v / 2;
break;
// volume
case 18: // mute
hsv.h = 0;
break;
case 17: // increase
hsv.s = 255;
break;
case 32: // decrease
hsv.s = 0;
break;
// brightness
case 33: // increase
hsv.s = 255;
break;
case 31: // decrease
hsv.s = 0;
break;
// media
case 65: // previous
hsv.s = 0;
break;
case 67: // next
hsv.s = 0;
break;
case 56: // stop
hsv.h = 0;
break;
case 66: // play/pause
hsv.h = 255/3;
break;
// menu
case 51:
hsv.s = 0;
break;
// toggle AD layer
case 36:
hsv.h = 0;
break;
// toggle VI layer
case 37:
hsv.h = 255/3;
break;
// KB layer
case 62:
hsv.h = time;
hsv.s = 255;
break;
// no function
default:
hsv.v = 0;
break;
}
return hsv;
}
bool fn_indicator(effect_params_t* params) {
return effect_runner_i(params, &fn_indicator_math);
}
static HSV kb_indicator_math(HSV hsv, uint8_t i, uint8_t time) {
// cancel base effect startup
base_effect_startup_counter = 255;
switch (i) {
// test HSV
case 14:
break;
case 29:
break;
case 43:
break;
case 57:
break;
case 67:
break;
// toggle RGB
case 16:
hsv.s = 0;
if (time < (255 / 2)) {
hsv.v = 255;
} else {
hsv.v = 0;
}
break;
// cycle effect
case 17:
hsv.s = 255;
hsv.v = 255;
if (time < (255 / 3)) {
hsv.h = 0;
} else if (time < (2 * 255 / 3)) {
hsv.h = 255 / 3;
} else {
hsv.h = 2 * 255 / 3;
}
break;
// adjust hue
case 18:
hsv.h = time;
hsv.s = 255;
hsv.v = 255;
break;
case 19:
hsv.h = 255 - time;
hsv.s = 255;
hsv.v = 255;
break;
// adjust saturation
case 32:
hsv.s = 255;
hsv.v = 255;
break;
case 33:
hsv.s = 0;
hsv.v = 255;
break;
// adjust value
case 45:
hsv.v = 255;
break;
case 46:
hsv.v = 63;
break;
// adjust speed
case 4:
if (((time / 8) % 2) == 0) {
hsv.v = 255;
} else {
hsv.v = 63;
}
break;
case 5:
if (((time / 16) % 2) == 0) {
hsv.v = 63;
} else {
hsv.v = 255;
}
break;
// set main effect
case 36: // BASE
hsv.s = 0;
break;
case 37: // KITT
hsv.h = 0;
hsv.s = 255;
if (time < 128) {
hsv.v = time;
} else {
hsv.v = 255 - time;
}
break;
// reset (for flashing)
case 13:
hsv.s = 0;
if (time < 16) {
hsv.v = 255 - time * 128 / 16;
} else {
hsv.v = 127;
}
break;
// reset (reinitialize EEPROM)
case 42:
hsv.s = 0;
hsv.v = 127;
break;
// shift
case 44:
hsv.s = 0;
hsv.v = 63;
break;
case 55:
hsv.s = 0;
hsv.v = 63;
break;
// no function
default:
hsv.v = 0;
}
return hsv;
}
bool kb_indicator(effect_params_t* params) {
return effect_runner_i(params, &kb_indicator_math);
}
uint8_t led_count = 7;
uint8_t led_first = 33;
static uint8_t time_to_led(uint8_t time, uint8_t led_behind) {
uint16_t led_time = led_count * time;
uint16_t step = ((2 * led_count + (led_time / 128)) - led_behind) % (2 * led_count);
uint8_t led;
if (step < led_count) {
led = step;
} else {
led = led_count - 1 - (step - led_count);
}
return led;
}
static HSV kitt_effect_math(HSV hsv, uint8_t i, uint8_t time) {
// reset base effect startup
if (i == 0) {
BASE_EFFECT_NOT_STARTED_YET = true;
}
hsv.h = 0;
hsv.s = 255;
if (i >= led_first && i < led_first + led_count) {
uint8_t j = i - led_first;
if (j == time_to_led(time, 0)) {
hsv.v = hsv.v;
} else if (j == time_to_led(time, 1)) {
hsv.v = hsv.v/2;
} else if (j == time_to_led(time, 2)) {
hsv.v = hsv.v/4;
} else if (j == time_to_led(time, 3)) {
hsv.v = hsv.v/8;
} else {
hsv.v = 0;
}
} else {
hsv.v = 0;
}
return hsv;
}
bool kitt_effect(effect_params_t* params) {
return effect_runner_i(params, &kitt_effect_math);
}
#endif // RGB_MATRIX_CUSTOM_EFFECT_IMPLS
// vim: syntax=c
@@ -0,0 +1 @@
RGB_MATRIX_CUSTOM_USER = yes
+61 -60
View File
@@ -7,81 +7,82 @@
"layouts": { "layouts": {
"LAYOUT": { "LAYOUT": {
"layout": [ "layout": [
{"label":"#", "x":3.5, "y":0},
{"label":"*", "x":12.25, "y":0},
{"label":"@", "x":2.5, "y":0.125},
{"label":"$", "x":4.5, "y":0.125},
{"label":"&", "x":11.25, "y":0.13},
{"label":"(", "x":13.25, "y":0.13},
{"label":"%", "x":5.5, "y":0.25},
{"label":"^", "x":10.25, "y":0.25},
{"label":"!", "x":1.5, "y":0.375},
{"label":"Esc", "x":0.5, "y":0.38}, {"label":"Esc", "x":0.5, "y":0.38},
{"label":")", "x":14.25, "y":0.38}, {"label":"1", "x":1.5, "y":0.375},
{"label":"2", "x":2.5, "y":0.125},
{"label":"3", "x":3.5, "y":0},
{"label":"4", "x":4.5, "y":0.125},
{"label":"5", "x":5.5, "y":0.25},
{"label":"6", "x":6.5, "y":0.5},
{"label":"5", "x":9.25, "y":0.5},
{"label":"6", "x":10.25, "y":0.25},
{"label":"7", "x":11.25, "y":0.13},
{"label":"8", "x":12.25, "y":0},
{"label":"9", "x":13.25, "y":0.13},
{"label":"0", "x":14.25, "y":0.38},
{"label":"PrtScr", "x":15.25, "y":0.38}, {"label":"PrtScr", "x":15.25, "y":0.38},
{"x":6.5, "y":0.5}, {"x":9.25, "y":0.5},
{"label":"E", "x":3.5, "y":1},
{"label":"I", "x":12.25, "y":1},
{"label":"W", "x":2.5, "y":1.125},
{"label":"R", "x":4.5, "y":1.125},
{"label":"U", "x":11.25, "y":1.13},
{"label":"O", "x":13.25, "y":1.13},
{"label":"T", "x":5.5, "y":1.25},
{"label":"Y", "x":10.25, "y":1.25},
{"label":"Q", "x":1.5, "y":1.375},
{"label":"Tab", "x":0.5, "y":1.38}, {"label":"Tab", "x":0.5, "y":1.38},
{"label":"Q", "x":1.5, "y":1.375},
{"label":"W", "x":2.5, "y":1.125},
{"label":"E", "x":3.5, "y":1},
{"label":"R", "x":4.5, "y":1.125},
{"label":"T", "x":5.5, "y":1.25},
{"label":"Y", "x":6.5, "y":1.5},
{"label":"T", "x":9.25, "y":1.5},
{"label":"Y", "x":10.25, "y":1.25},
{"label":"U", "x":11.25, "y":1.13},
{"label":"I", "x":12.25, "y":1},
{"label":"O", "x":13.25, "y":1.13},
{"label":"P", "x":14.25, "y":1.38}, {"label":"P", "x":14.25, "y":1.38},
{"label":"\u2019", "x":15.25, "y":1.38}, {"label":"[", "x":15.25, "y":1.38},
{"label":"[", "x":6.5, "y":1.5},
{"label":"]", "x":9.25, "y":1.5},
{"label":"D", "x":3.5, "y":2},
{"label":"K", "x":12.25, "y":2},
{"label":"S", "x":2.5, "y":2.125},
{"label":"F", "x":4.5, "y":2.125},
{"label":"J", "x":11.25, "y":2.13},
{"label":"L", "x":13.25, "y":2.13},
{"label":"G", "x":5.5, "y":2.25},
{"label":"H", "x":10.25, "y":2.25},
{"label":"A", "x":1.5, "y":2.375},
{"label":"Caps", "x":0.5, "y":2.38}, {"label":"Caps", "x":0.5, "y":2.38},
{"label":"A", "x":1.5, "y":2.375},
{"label":"S", "x":2.5, "y":2.125},
{"label":"D", "x":3.5, "y":2},
{"label":"F", "x":4.5, "y":2.125},
{"label":"G", "x":5.5, "y":2.25},
{"label":"H", "x":6.5, "y":2.5},
{"label":"G", "x":9.25, "y":2.5},
{"label":"H", "x":10.25, "y":2.25},
{"label":"J", "x":11.25, "y":2.13},
{"label":"K", "x":12.25, "y":2},
{"label":"L", "x":13.25, "y":2.13},
{"label":":", "x":14.25, "y":2.38}, {"label":":", "x":14.25, "y":2.38},
{"label":"Ent", "x":15.25, "y":2.38}, {"label":"Ent", "x":15.25, "y":2.38},
{"label":"(", "x":6.5, "y":2.5},
{"label":")", "x":9.25, "y":2.5},
{"label":"C", "x":3.5, "y":3},
{"label":"<", "x":12.25, "y":3},
{"label":"X", "x":2.5, "y":3.125},
{"label":"V", "x":4.5, "y":3.125},
{"label":"M", "x":11.25, "y":3.13},
{"label":">", "x":13.25, "y":3.13},
{"label":"B", "x":5.5, "y":3.25},
{"label":"N", "x":10.25, "y":3.25},
{"label":"Z", "x":1.5, "y":3.375},
{"label":"Shift", "x":0.5, "y":3.38}, {"label":"Shift", "x":0.5, "y":3.38},
{"label":"Z", "x":1.5, "y":3.375},
{"label":"X", "x":2.5, "y":3.125},
{"label":"C", "x":3.5, "y":3},
{"label":"V", "x":4.5, "y":3.125},
{"label":"B", "x":5.5, "y":3.25},
{"label":"N", "x":6.5, "y":3.5},
{"label":"B", "x":9.25, "y":3.5},
{"label":"N", "x":10.25, "y":3.25},
{"label":"M", "x":11.25, "y":3.13},
{"label":"<", "x":12.25, "y":3},
{"label":">", "x":13.25, "y":3.13},
{"label":"?", "x":14.25, "y":3.38}, {"label":"?", "x":14.25, "y":3.38},
{"label":"_", "x":15.25, "y":3.38}, {"label":"_", "x":15.25, "y":3.38},
{"x":6.5, "y":3.5}, {"label":"Ctrl", "x":0.5, "y":4.38},
{"x":9.25, "y":3.5},
{"label":"Ctrl", "x":0.5, "y":4.375},
{"label":"Win", "x":1.5, "y":4.38}, {"label":"Win", "x":1.5, "y":4.38},
{"label":"\u7121\u5909", "x":3.75, "y":4.38}, {"label":"&uarr;", "x":2.63, "y":4.51},
{"label":"Alt", "x":3.75, "y":4.38},
{"label":"Ent", "x":4.75, "y":4.38}, {"label":"Ent", "x":4.75, "y":4.38},
{"label":"Spc", "x":11, "y":4.38},
{"label":"\u5909\u63db", "x":12, "y":4.38},
{"label":"Alt", "x":14.25, "y":4.38},
{"label":"App", "x":15.25, "y":4.38},
{"label":"\u2191", "x":2.625, "y":4.505},
{"label":"\u2191", "x":13.13, "y":4.51},
{"label":"BS", "x":5.85, "y":4.6}, {"label":"BS", "x":5.85, "y":4.6},
{"label":"Del", "x":9.9, "y":4.6},
{"label":"Del", "x":6.9, "y":5.15}, {"label":"Del", "x":6.9, "y":5.15},
{"label":"BS", "x":8.85, "y":5.15}, {"label":"BS", "x":8.85, "y":5.15},
{"label":"\u2190", "x":1.625, "y":5.505}, {"label":"Del", "x":9.9, "y":4.6},
{"label":"\u2193", "x":2.625, "y":5.505}, {"label":"Spc", "x":11, "y":4.38},
{"label":"\u2192", "x":3.625, "y":5.505}, {"label":"Alt", "x":12, "y":4.38},
{"label":"\u2190", "x":12.13, "y":5.51}, {"label":"&uarr;", "x":13.13, "y":4.51},
{"label":"\u2193", "x":13.13, "y":5.51}, {"label":"Alt", "x":14.25, "y":4.38},
{"label":"\u2192", "x":14.13, "y":5.51}] {"label":"App", "x":15.25, "y":4.38},
{"label":"&larr;", "x":1.63, "y":5.51},
{"label":"&dArr;", "x":2.63, "y":5.51},
{"label":"&rarr;", "x":3.625, "y":5.51},
{"label":"&larr;", "x":12.13, "y":5.51},
{"label":"&dArr;", "x":13.13, "y":5.51},
{"label":"&rarr;", "x":14.13, "y":5.51}]
} }
} }
} }
@@ -1 +1,2 @@
VIA_ENABLE = yes VIA_ENABLE = yes
LTO_ENABLE = yes
+18
View File
@@ -0,0 +1,18 @@
{
"keyboard_name": "Four Banger",
"url": "",
"maintainer": "qmk",
"width": 2,
"height": 2,
"layouts": {
"LAYOUT_ortho_2x2": {
"layout": [
{"x":0, "y":0},
{"x":1, "y":0},
{"x":0, "y":1},
{"x":1, "y":1}
]
}
}
}
+22
View File
@@ -0,0 +1,22 @@
{
"keyboard_name": "Geekboards 8-keys macropad",
"url": "",
"maintainer": "moyi4681",
"width": 4,
"height": 2,
"layouts": {
"LAYOUT": {
"layout": [
{"x":0, "y":0},
{"x":1, "y":0},
{"x":2, "y":0},
{"x":3, "y":0},
{"x":0, "y":1},
{"x":1, "y":1},
{"x":2, "y":1},
{"x":3, "y":1}
]
}
}
}
+1 -1
View File
@@ -37,7 +37,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
[_FN2] = LAYOUT(KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, [_FN2] = LAYOUT(KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
File renamed without changes.
+46
View File
@@ -0,0 +1,46 @@
/* Copyright 2021 Glorious, LLC <[email protected]>
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#pragma once
#include "config_common.h"
/* USB Device descriptor parameter */
#define DEVICE_VER 0x0001
#define VENDOR_ID 0x320F
#define PRODUCT_ID 0x5044
#define MANUFACTURER Glorious
#define PRODUCT GMMK Pro
/* key matrix size */
#define MATRIX_ROWS 11
#define MATRIX_COLS 8
#define MATRIX_ROW_PINS { B0, B1, B2, B3, B4, B5, B6, B7, B8, B9, B10 }
#define MATRIX_COL_PINS { A0, A1, A2, A3, A4, A8, A9, A10 }
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
#define TAP_CODE_DELAY 10
#define ENCODERS_PAD_A { C15 }
#define ENCODERS_PAD_B { C14 }
/* 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
+111
View File
@@ -0,0 +1,111 @@
{
"keyboard_name": "GMMK Pro",
"url": "https://www.pcgamingrace.com/products/glorious-gmmk-pro-75-barebone-black-reservation",
"maintainer": "GloriousThrall",
"width": 16.5,
"height": 6.5,
"layouts": {
"LAYOUT": {
"layout": [
{"x":0, "y":0},
{"x":1.25, "y":0},
{"x":2.25, "y":0},
{"x":3.25, "y":0},
{"x":4.25, "y":0},
{"x":5.5, "y":0},
{"x":6.5, "y":0},
{"x":7.5, "y":0},
{"x":8.5, "y":0},
{"x":9.75, "y":0},
{"x":10.75, "y":0},
{"x":11.75, "y":0},
{"x":12.75, "y":0},
{"x":14, "y":0},
{"x":15.5, "y":0},
{"x":0, "y":1.25},
{"x":1, "y":1.25},
{"x":2, "y":1.25},
{"x":3, "y":1.25},
{"x":4, "y":1.25},
{"x":5, "y":1.25},
{"x":6, "y":1.25},
{"x":7, "y":1.25},
{"x":8, "y":1.25},
{"x":9, "y":1.25},
{"x":10, "y":1.25},
{"x":11, "y":1.25},
{"x":12, "y":1.25},
{"x":13, "y":1.25, "w":2},
{"x":15.5, "y":1.25},
{"x":0, "y":2.25, "w":1.5},
{"x":1.5, "y":2.25},
{"x":2.5, "y":2.25},
{"x":3.5, "y":2.25},
{"x":4.5, "y":2.25},
{"x":5.5, "y":2.25},
{"x":6.5, "y":2.25},
{"x":7.5, "y":2.25},
{"x":8.5, "y":2.25},
{"x":9.5, "y":2.25},
{"x":10.5, "y":2.25},
{"x":11.5, "y":2.25},
{"x":12.5, "y":2.25},
{"x":13.5, "y":2.25, "w":1.5},
{"x":15.5, "y":2.25},
{"x":0, "y":3.25, "w":1.75},
{"x":1.75, "y":3.25},
{"x":2.75, "y":3.25},
{"x":3.75, "y":3.25},
{"x":4.75, "y":3.25},
{"x":5.75, "y":3.25},
{"x":6.75, "y":3.25},
{"x":7.75, "y":3.25},
{"x":8.75, "y":3.25},
{"x":9.75, "y":3.25},
{"x":10.75, "y":3.25},
{"x":11.75, "y":3.25},
{"x":12.75, "y":3.25, "w":2.25},
{"x":15.5, "y":3.25},
{"x":0, "y":4.25, "w":2.25},
{"x":2.25, "y":4.25},
{"x":3.25, "y":4.25},
{"x":4.25, "y":4.25},
{"x":5.25, "y":4.25},
{"x":6.25, "y":4.25},
{"x":7.25, "y":4.25},
{"x":8.25, "y":4.25},
{"x":9.25, "y":4.25},
{"x":10.25, "y":4.25},
{"x":11.25, "y":4.25},
{"x":12.25, "y":4.25, "w":1.75},
{"x":14.25, "y":4.5},
{"x":15.5, "y":4.25},
{"x":0, "y":5.25, "w":1.25},
{"x":1.25, "y":5.25, "w":1.25},
{"x":2.5, "y":5.25, "w":1.25},
{"x":3.75, "y":5.25, "w":6.25},
{"x":10, "y":5.25},
{"x":11, "y":5.25},
{"x":12, "y":5.25},
{"x":13.25, "y":5.5},
{"x":14.25, "y":5.5},
{"x":15.25, "y":5.5}
]
}
}
}
@@ -0,0 +1,47 @@
/* Copyright 2021 Glorious, LLC <[email protected]>
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include QMK_KEYBOARD_H
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// ESC F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 Prt Rotary(Mute)
// ~ 1 2 3 4 5 6 7 8 9 0 - (=) BackSpc Del
// Tab Q W E R T Y U I O P [ ] \ PgUp
// Caps A S D F G H J K L ; " Enter PgDn
// Sh_L Z X C V B N M , . ? Sh_R Up End
// Ct_L Win_L Alt_L SPACE Alt_R FN Ct_R Left Down Right
[0] = LAYOUT(
KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_MUTE,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL,
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP,
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN,
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END,
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
)
};
void encoder_update_user(uint8_t index, bool clockwise) {
if (clockwise) {
tap_code(KC_VOLU);
} else {
tap_code(KC_VOLD);
}
}
Loaded 100 of 594 files, more files were not shown because too many files have changed in this diff. Show more