Compare commits

..

39 Commits

Author SHA1 Message Date
Drashna Jaelre
810eafad12 Fix Tap-Hold Configs (#11127)
* Add proper prototypes for Tap-Hold Per Key functions

* Fix handwired/tennie default keymap

* Remove unneeded references

* Fix tapping term per key check in space cadet

* Pre-emptive fix for tap dance

* Fix marksard/leftover30

* Replace hard coded tapping term with define
2021-01-04 16:37:20 -08:00
fauxpark
c38fe49242 Update MXSS custom rgblight and fix compilation error 2021-01-04 16:27:16 -08:00
YangPiCui
d1e10a067b [Keyboard] Add handwired/evk (#11034)
* Add the Ergonomic Vertical Keyboards

* generic update

* Update readme.md

* Update readme.md

* Update readme.md

* Update info.json

* put into handwired

* Update readme.md

* Update readme.md

* i

* Change copy author from RedForty to Yang Cui

* add version 1.3

* rename keyboard version

* Update config.h

* j

* h

* fix bugs

* Update config.h

* Update config.h

* Update keymap.c

* update default keymap

* Update keymap.c

* Add handwired/evk

* Add handwired/evk

* Update v1_3.c

* Update keyboards/handwired/evk/v1_3/config.h

Co-authored-by: Drashna Jaelre <drashna@live.com>

* Update keyboards/handwired/evk/v1_3/rules.mk

Co-authored-by: Drashna Jaelre <drashna@live.com>

* Update keyboards/handwired/evk/v1_3/v1_3.c

Co-authored-by: Drashna Jaelre <drashna@live.com>

* Update config.h

* Commit change requests from the pull request

* remove copy right

* Update v1_3.c

* Update v1_3.c

* Update keyboards/handwired/evk/v1_3/config.h

Co-authored-by: James Young <18669334+noroadsleft@users.noreply.github.com>

* Update keyboards/handwired/evk/v1_3/rules.mk

Co-authored-by: James Young <18669334+noroadsleft@users.noreply.github.com>

* Update keyboards/handwired/evk/v1_3/rules.mk

Co-authored-by: James Young <18669334+noroadsleft@users.noreply.github.com>

* Update keyboards/handwired/evk/v1_3/info.json

Co-authored-by: James Young <18669334+noroadsleft@users.noreply.github.com>

* Update keyboards/handwired/evk/info.json

Co-authored-by: James Young <18669334+noroadsleft@users.noreply.github.com>

* Update info.json

* change all names to YangPiCui

* Update keyboards/handwired/evk/v1_3/keymaps/default/keymap.c

Co-authored-by: Ryan <fauxpark@gmail.com>

* Update keyboards/handwired/evk/v1_3/readme.md

Co-authored-by: Ryan <fauxpark@gmail.com>

* Update keyboards/handwired/evk/v1_3/config.h

Co-authored-by: Ryan <fauxpark@gmail.com>

* Delete config.h

Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: James Young <18669334+noroadsleft@users.noreply.github.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
2021-01-04 10:58:36 -08:00
Ryan
acec174fde Homebrew install: ignore pinned formulae in brew upgrade (#11423) 2021-01-03 20:30:59 +00:00
Joel Elkins
070240f212 arm_atsam: Use PROGRAM_CMD for :flash target if set (#11424) 2021-01-04 07:30:22 +11:00
Ryan
f3ac792c09 Align ChibiOS spi_master behaviour with AVR (#11404)
* Align ChibiOS spi_master behaviour with AVR

* Rollback `spi_transmit()` and `spi_receive()` to preserve DMA
2021-01-03 14:53:53 +11:00
Joshua Diamond
b3de903a3d Fix broken Lighting Layers when RGBLIGHT_MAX_LAYERS > 16 (#11406)
* fix incorrect bit math when RGBLIGHT_MAX_LAYERS > 16

* with 1UL cast is not needed

* ...but just casting works and is even more efficient

* cformat
2021-01-02 13:42:48 -08:00
Zach White
c07543133a Return the make exit code for qmk compile and flash (#11402) 2021-01-02 17:27:35 +00:00
Felix Jen
2e9d091960 [Keyboard] Added LDK65 based off BKS65 (#11335) 2021-01-02 00:46:25 -08:00
npspears
13efa8290e Update quark pin config (#11398) 2021-01-02 12:38:50 +11:00
Michael Overman
988715910c [Docs] Fix typo in hand_wire.md (#11297) 2021-01-01 17:36:17 -08:00
Felix Jen
8da9219c16 [Keyboard] Added Phantom Solder PCB and KBD8X HS PCB Variants (#11282)
* Added config for phantom solder all layout via only

* fixed matrix def

* Added KBD8X

* changed info name

* lowercase instances of LAYOUT_ALL and edited rules.mk

* edited kbd8x results

* fixed kbd8x rules

* removed trailing comma in kbd8x info

* Update keyboards/lucid/kbd8x_hs/config.h

Co-authored-by: Joel Challis <git@zvecr.com>

* Update keyboards/lucid/kbd8x_hs/kbd8x_hs.h

Co-authored-by: Joel Challis <git@zvecr.com>

* Update keyboards/lucid/kbd8x_hs/readme.md

Co-authored-by: Joel Challis <git@zvecr.com>

* Update keyboards/lucid/kbd8x_hs/rules.mk

Co-authored-by: Joel Challis <git@zvecr.com>

* Update keyboards/lucid/phantom_solder/info.json

Co-authored-by: Joel Challis <git@zvecr.com>

* Update keyboards/lucid/phantom_solder/readme.md

Co-authored-by: Joel Challis <git@zvecr.com>

* Update keyboards/lucid/phantom_solder/rules.mk

Co-authored-by: Joel Challis <git@zvecr.com>

* Fixed info.json key mismatch

Co-authored-by: Joel Challis <git@zvecr.com>
2021-01-01 16:44:45 -08:00
smssmssms
d321cb3f8b [Keyboard] Pos78 update (#11274)
* Added LED hardware pin numbers

CAPS and NUM lock LEDs

* Added "LED_PIN_ON_STATE 1"

* Make MATRIX_ROW/COL pins match reality
2021-01-01 15:27:13 -08:00
gkeyboard
8ed9eb9c7f [Keyboard] Add GKB-M16 Macro Pad (#11262)
* Add GKB-M16 Macro Pad

Add GKB-M16 (gkb_m16) Macro Pad under gkeyboard

* Update keyboards/gkeyboard/gkb_m16/config.h

Co-authored-by: Joel Challis <git@zvecr.com>

* Update keyboards/gkeyboard/gkb_m16/keymaps/via/keymap.c

Co-authored-by: Joel Challis <git@zvecr.com>

* Update keyboards/gkeyboard/gkb_m16/info.json

Co-authored-by: Ryan <fauxpark@gmail.com>

* Update keyboards/gkeyboard/gkb_m16/keymaps/default/keymap.c

Co-authored-by: Ryan <fauxpark@gmail.com>

Co-authored-by: Joel Challis <git@zvecr.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
2021-01-01 15:26:00 -08:00
Kyle McCreery
1d2a9a1cdb [Keyboard] New Keyboard - Mercutio (#11214)
* Initial commit on new clean branch. Testing out functionality of oled and encoder for default features.

* Cleaned up the initial push and removed the fancy keymap until the extra features and functionality can be tested and made more user friendly.

* Cleaned up the readme some more, compiled and tested both default and via keymaps, and did another round of checks to prepare for starting the PR.

* Cleaning up the keymap to meet expected formatting in a couple places and also adding in the TAP_CODE_DELAY after newly encoutnered encoder issues and inconsistencies.

* Apply suggestions from code review

Co-authored-by: Joel Challis <git@zvecr.com>

* Update keyboards/mechwild/mercutio/readme.md

Co-authored-by: Ryan <fauxpark@gmail.com>

* Fixing json syntax.

* Update keyboards/mechwild/mercutio/rules.mk

Co-authored-by: Ryan <fauxpark@gmail.com>

Co-authored-by: Joel Challis <git@zvecr.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
2021-01-01 15:16:00 -08:00
Ross Montsinger
fcd921f3aa [Keyboard] Rebound, adding files for VIA compat (#11193)
* changes for via

* add manu to product name

* remove manu from product value

* remove description

* i m licensed
2021-01-01 15:05:02 -08:00
MURAOKA Taro
e11d3d524d speed up list_keyboards.sh 2021-01-01 10:08:32 -08:00
Ryan
c01a8b030e O4L 5x12 refactor (#11392)
* O4L 5x12 refactor

* Remove config.h
2021-01-01 16:32:21 +00:00
Ryan
b5fc6f0682 Fix rart4x4 info.json (#11390) 2021-01-01 14:58:55 +00:00
s-maurice
08fdf086b7 Fix typo in hand wiring guide (#11388)
ridid -> rigid
2021-01-01 14:57:02 +00:00
Ryan
aab056a4a6 Manta60 refactor (#11378) 2021-01-02 00:52:49 +11:00
Joel Challis
565a038a3d Fix layout ortho_4x12 macro for montsinger/rebound/rev4 (#11382) 2021-01-01 13:42:36 +00:00
Ryan
53e9213a22 Quark refactor (#11377) 2021-01-01 05:04:00 +11:00
Joel Challis
a68d289fa5 Manually run formatting CI process (#11375) 2021-01-01 03:50:32 +11:00
npspears
4ef4347543 Quark PCB for Planck/Preonic (#11206)
* Quark PCB for Planck/Preonic

Quark provides alternate bottom row layouts for both the OLKB Planck and Preonic

* Rename rules.mk.txt to rules.mk

* added Tapping Toggle

removed tapping toggle from keymap level

* Update info.json

took out } as requested

* update config.h

added GPL2+ license and #pragma once

* update info.json again

cleaned up syntax

* Apply suggestions from code review

Co-authored-by: Drashna Jaelre <drashna@live.com>

* update config.h

added GPL2+ License

* Update info.json - and again

fixed it - oops

Co-authored-by: Drashna Jaelre <drashna@live.com>
2020-12-31 10:00:08 -05:00
Chas
028d2c91dc Fixed typo in readme.md (#11333)
* Fixed typo in readme.md

censor -> sensor

* Censor -> Sensor in the Ploopy Trackball Readme
2020-12-31 14:53:06 +00:00
Álvaro A. Volpato
9f690c94b8 Change PRODUCT_ID descriptors for M80S and M80H (#11371)
* Change PRODUCT_ID descriptors for M80S and M80H

* Update config.h

* Update config.h

* Update config.h

* Remove PRODUCT_ID from root config.h
2020-12-31 12:58:59 +00:00
Takeshi ISHII
6169b47e82 Add target 'check-md5' to build_keyboard.mk (#11338)
* Add target 'build-for-compare' to `build_keyboard.mk`

The `build-for-compare` target provides an easy way to check the md5 checksum of the generated binary.

You can easily see if there is any change in the generated binaries between the two versions, as in the example below.

```
$ git checkout 0.11.0
M	build_keyboard.mk
M	tmk_core/rules.mk
Note: checking out '0.11.0'.
HEAD is now at c66df1664 2020 November 28 Breaking Changes Update (#11053)

$ make helix:all:build-for-compare | grep ^MD5
MD5 (.build/helix_rev2_default.hex) = 5c3606562c944bb4d18832e601b45d4a
MD5 (.build/helix_rev2_edvorakjp.hex) = 9e43d13d389d518ba7e99cd7337e28d6
MD5 (.build/helix_rev2_five_rows.hex) = 8bcb61c2fd5d237c2997f2fa007d4934
MD5 (.build/helix_rev2_five_rows_jis.hex) = b97cd818d52f73ca2d4e78c86d90a791
MD5 (.build/helix_rev2_froggy.hex) = c492172364188f4e2918b10bf0f3a0a6
MD5 (.build/helix_rev2_froggy_106.hex) = b0861fd735a8f81881a8c02730641a2b
MD5 (.build/helix_rev2_led_test.hex) = 5c97d982a5da5cfb3dacb28a8934b81d
MD5 (.build/helix_rev2_xulkal.hex) = 01f603dc46bcf9094d7e106831d8f5b1
MD5 (.build/helix_rev2_yshrsmz.hex) = 5a008bca2d0c5790a151c02834c529ba

$ git checkout 0.11.1
M	build_keyboard.mk
M	tmk_core/rules.mk
Previous HEAD position was c66df1664 2020 November 28 Breaking Changes Update (#11053)
HEAD is now at cc08e3082 nix-shell: add milc dependency (#11086)

$ make helix:all:build-for-compare | grep ^MD5
MD5 (.build/helix_rev2_default.hex) = 5c3606562c944bb4d18832e601b45d4a
MD5 (.build/helix_rev2_edvorakjp.hex) = 9e43d13d389d518ba7e99cd7337e28d6
MD5 (.build/helix_rev2_five_rows.hex) = 8bcb61c2fd5d237c2997f2fa007d4934
MD5 (.build/helix_rev2_five_rows_jis.hex) = b97cd818d52f73ca2d4e78c86d90a791
MD5 (.build/helix_rev2_froggy.hex) = c492172364188f4e2918b10bf0f3a0a6
MD5 (.build/helix_rev2_froggy_106.hex) = b0861fd735a8f81881a8c02730641a2b
MD5 (.build/helix_rev2_led_test.hex) = 5c97d982a5da5cfb3dacb28a8934b81d
MD5 (.build/helix_rev2_xulkal.hex) = d848383adfd7463b138c6da179cf1436
MD5 (.build/helix_rev2_yshrsmz.hex) = 5a008bca2d0c5790a151c02834c529ba
```

* make builds reproducable by default

* update build_keyboard.mk: remove 'build-for-compare' target

* GNU make (3.81) on macOS 10.14(Mojave) does not have the 'undefine' directive.

* Adopted fauxpark's suggestion.

* Update tmk_core/rules.mk

Co-authored-by: Ryan <fauxpark@gmail.com>

* update tmk_core/rules.mk

* fix tmk_core/rules.mk

Co-authored-by: Zach White <skullydazed@gmail.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
2020-12-31 15:20:56 +09:00
Ryan
10096fc42e Zadig docs: add APM32 device name (#11356) 2020-12-30 16:35:06 +00:00
Nick Blyumberg
5e5ee3f8de Correct encoder pins on BDN9v2 (#11357)
* Update config.h

Wrong pin used for the left encoder, should be A4

* Update config.h

Added a media keys fix as well
2020-12-30 16:34:40 +00:00
Ryan
7071900407 Missed a couple more #pragma onces (#11351) 2020-12-30 15:44:53 +00:00
Reibl János Dániel
6f6e28b4c7 Add Arch / Manjaro section for Linux setup instructions (#10509) 2020-12-30 15:02:24 +01:00
Ryan
411b92e206 Remove useless wait in AVR suspend code (#11352) 2020-12-30 20:58:57 +11:00
Enoch
1aa8a3b424 [Keymap] Yd60mq add 64 key layout (#11207)
* 64 key layout

* add license

* add license

add name
2020-12-30 01:06:02 -08:00
Maurizio Porrato
0f5f6a6a75 Add libusb-devel dependency for fedora (#11287)
On fedora 33, libusb-devel is required to build BootloadHID
2020-12-30 15:12:02 +11:00
swampmonster
a038b712d0 [Keyboard] Add support to Kyria for the 2x2u layout (#11227)
* Adding support for the 2 x 2u layout.

This adds a macro to support the 2 x 2u layout which facilitates
a cleaner looking layout configuration for the people using it.

* Update keyboards/kyria/kyria.h

Co-authored-by: Drashna Jaelre <drashna@live.com>

Co-authored-by: swampmonster <>
Co-authored-by: Drashna Jaelre <drashna@live.com>
2020-12-29 19:55:40 -08:00
André Cruz
ca8df55858 Added mac variant of portuguese keymap extras (#11260)
* Added mac variant of portuguese keymap

This keymap is very similar to the existing portuguese keymap, but
some symbols are moved around.

Apply suggestions from code review

Corrected whitespace and implemented some suggested changes.

Co-authored-by: Ryan <fauxpark@gmail.com>

Converted some spaces to nbsp

Added sendstring ISO version

* Apply suggestions from code review

Added suggestions from code review

Co-authored-by: Ryan <fauxpark@gmail.com>

* Replaced space with nbsp

* Corrected 2 chars in ascii_to_shift_lut

{ and } require shift

Co-authored-by: Ryan <fauxpark@gmail.com>
2020-12-29 19:40:58 -08:00
ReFil
fda514bbd7 [Keyboard] Polarity works CRBN support (#11107)
* Initial CRBN compatibility

Updated readme.md too

* formatting tweaks to meet requirements

* Update crbn.c

* Create readme.md

* Required fixes and licence header

* Fixes

* Apply suggestions from code review

Co-authored-by: Ryan <fauxpark@gmail.com>

* Update keyboards/crbn/rules.mk

Co-authored-by: Ryan <fauxpark@gmail.com>

* Update keyboards/readme.md

Co-authored-by: Ryan <fauxpark@gmail.com>

* Update crbn.c

* Update keyboards/crbn/crbn.c

Co-authored-by: Drashna Jaelre <drashna@live.com>

* Licence headers

* Create info.json

* Apply suggestions from code review

Co-authored-by: Ryan <fauxpark@gmail.com>

* Configurator support

* Update keymap.c

* Update keymap.c

Co-authored-by: Ryan <fauxpark@gmail.com>
Co-authored-by: Drashna Jaelre <drashna@live.com>
2020-12-29 19:26:16 -08:00
Joshua Diamond
c9156b50d9 [Keymap] spidey3 keymap for DMQDesign Spin (#11194)
* My first cut at firmware for te DMQDesign Spin

* Turn off underglow when computer sleeps

* dmqdesigns spin - a little more refined keymap now

* a few more refinements for spin

* missing key up event for CH_CPNL and CH_ASST

* better naming for keymap

* cformat

* Apply suggestions from code review

Co-authored-by: Drashna Jaelre <drashna@live.com>

* Old #include habits die hard... :)

Co-authored-by: Ryan <fauxpark@gmail.com>

Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
2020-12-29 19:21:44 -08:00
158 changed files with 6446 additions and 1273 deletions

View File

@@ -368,6 +368,7 @@ endif
build: elf cpfirmware
check-size: build
check-md5: build
objs-size: build
include show_options.mk

View File

@@ -71,7 +71,7 @@ The device name here is the name that appears in Zadig, and may not be what the
|`caterina` |Arduino Micro |`2A03:0037` |usbser |
|`bootloadHID`|HIDBoot |`16C0:05DF` |HidUsb |
|`USBasp` |USBasp |`16C0:05DC` |libusbK|
|`apm32-dfu` |??? |`314B:0106` |WinUSB |
|`apm32-dfu` |APM32 DFU ISP Mode |`314B:0106` |WinUSB |
|`stm32-dfu` |STM32 BOOTLOADER |`0483:DF11` |WinUSB |
|`kiibohd` |Kiibohd DFU Bootloader |`1C11:B007` |WinUSB |
|`stm32duino` |Maple 003 |`1EAF:0003` |WinUSB |

View File

@@ -78,7 +78,7 @@ Established materials and techniques include:
| Short lengths of wire | [u/xicolinguada's ortho build](https://www.reddit.com/r/MechanicalKeyboards/comments/c39k4f/my_first_hand_wired_keyboard_its_not_perfect_but/) | Easier to strip the wire | More difficult to place | ![individual wire lengths](https://i.imgur.com/mBe5vkL.jpg)
| Magnet/Enamelled wire | [Brett Kosinski's handwired alpha](http://blog.b-ark.ca/Blog-2019-01-27) and [fknraiden's custom board](https://geekhack.org/index.php?topic=74223.0) | Can be directly soldered onto (insulation burns off with heat) | Appearance? | ![Magnet wire](https://i.imgur.com/b4b7KDb.jpg)
| Bending the legs of the diodes for the rows | [Matt3o's Brownfox](https://deskthority.net/viewtopic.php?f=7&t=6050) | Fewer solder joints required | Uninsulated | ![Bent diode legs](https://i.imgur.com/aTnG8TV.jpg)
| Using ridid wiring (e.g. brass tube) | [u/d_stilgar's invisible hardline](https://www.reddit.com/r/MechanicalKeyboards/comments/8aw5j2/invisible_hardline_keyboard_progress_update_april/) and [u/jonasfasler's first attempt](https://www.reddit.com/r/MechanicalKeyboards/comments/de1jyv/my_first_attempt_at_handwiring_a_keyboard/) | Very pretty | More difficult. No physical insulation | ![Hardline hand wire](https://i.imgur.com/CnASmPo.jpg)
| Using rigid wiring (e.g. brass tube) | [u/d_stilgar's invisible hardline](https://www.reddit.com/r/MechanicalKeyboards/comments/8aw5j2/invisible_hardline_keyboard_progress_update_april/) and [u/jonasfasler's first attempt](https://www.reddit.com/r/MechanicalKeyboards/comments/de1jyv/my_first_attempt_at_handwiring_a_keyboard/) | Very pretty | More difficult. No physical insulation | ![Hardline hand wire](https://i.imgur.com/CnASmPo.jpg)
| Bare wire with insulation added after (e.g. kapton tape) | [Matt3o's 65% on his website](https://matt3o.com/hand-wiring-a-custom-keyboard/) | Easier (no wire stripping required) | Not as attractive | ![Bare wire](https://i.imgur.com/AvXZShD.jpg)
| Copper tape | [ManuForm Dactyl](https://github.com/tshort/dactyl-keyboard) | Very easy | Only really works when your plate/case aligns with the bottom of your switches | ![Copper tape](https://i.imgur.com/RFyNMlL.jpg)
@@ -121,7 +121,7 @@ Letting the diode rest, grab your solder, and touch both it and the soldering ir
The smoke that the rosin releases is harmful, so be careful not to breath it or get it in your eyes/face.
After soldering things in place, it may be helpful to blow on the joint to push the smoke away from your face, and cool the solder quicker. You should see the solder develop a matte (not shiny) surface as it solidifies. Keep in mind that it will still be very hot afterwards, and will take a couple minutes to be cool to touch. Blow on it will accelerate this process.
After soldering things in place, it may be helpful to blow on the joint to push the smoke away from your face, and cool the solder quicker. You should see the solder develop a matte (not shiny) surface as it solidifies. Keep in mind that it will still be very hot afterwards, and will take a couple minutes to be cool to touch. Blowing on it will accelerate this process.
When the first diode is complete, the next one will need to be soldered to both the keyswitch, and the previous diode at the new elbow. That will look something like this:

View File

@@ -51,6 +51,7 @@ HID Keyboard/Keypad usage ページでは 256 未満の usage が定義されて
| Norwegian | `keymap_norwegian.h` |
| Polish | `keymap_polish.h` |
| Portuguese | `keymap_portuguese.h` |
| Portuguese (macOS, ISO) | `keymap_portuguese_osx_iso.h` |
| Portuguese (Brazil) | `keymap_br_abnt2.h` |
| Romanian | `keymap_romanian.h` |
| Russian* | `keymap_russian.h` |

View File

@@ -93,7 +93,15 @@ Install the QMK CLI by running:
python3 -m pip install --user qmk
On Arch-based distros you can also try the `qmk` package from AUR (**NOTE**: this package is maintained by a community member, and at the time of writing marks some dependencies as optional that should not be):
#### Community Packages
These packages are maintained by community members, so may not be up to date or completely functional. If you encounter problems, please report them to their respective maintainers.
On Arch-based distros you can install the CLI from the official repositories (NOTE: at the time of writing this package marks some dependencies as optional that should not be):
sudo pacman -S qmk
You can also try the `qmk` package from AUR:
yay -S qmk

View File

@@ -46,6 +46,7 @@ To use these, simply `#include` the corresponding [header file](https://github.c
|Norwegian |`keymap_norwegian.h` |
|Polish |`keymap_polish.h` |
|Portuguese |`keymap_portuguese.h` |
|Portuguese (macOS, ISO) |`keymap_portuguese_osx_iso.h` |
|Portuguese (Brazil) |`keymap_br_abnt2.h` |
|Romanian |`keymap_romanian.h` |
|Russian* |`keymap_russian.h` |

View File

@@ -115,11 +115,17 @@ bool spi_start(pin_t slavePin, bool lsbFirst, uint8_t mode, uint16_t divisor) {
return true;
}
spi_status_t spi_write(uint8_t data) { return spi_transmit(&data, 1); }
spi_status_t spi_write(uint8_t data) {
uint8_t rxData;
spiExchange(&SPI_DRIVER, 1, &data, &rxData);
return rxData;
}
spi_status_t spi_read(void) {
uint8_t data = 0;
spi_receive(&data, 1);
spiReceive(&SPI_DRIVER, 1, &data);
return data;
}

54
keyboards/crbn/config.h Normal file
View File

@@ -0,0 +1,54 @@
/* Copyright 2020 Harry Herring
*
* 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 0x726F
#define PRODUCT_ID 0x0002
#define DEVICE_VER 0x0001
#define MANUFACTURER Polarity Works
#define PRODUCT CRBN
/* key matrix size */
#define MATRIX_ROWS 4
#define MATRIX_COLS 12
/* key matrix pins */
#define MATRIX_ROW_PINS { B3, B1, F7, F6 }
#define MATRIX_COL_PINS { D3, D2, D1, D0, D4, C6, D7, E6, B4, B5, B6, B2 }
#define UNUSED_PINS
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
/*Rotary Encoder Pins*/
#define ENCODERS_PAD_A { F5 }
#define ENCODERS_PAD_B { F4 }
/*Sets the number of pulses per increment*/
#define ENCODER_RESOLUTION 2
/* Set 0 if debouncing isn't needed */
#define DEBOUNCE 5
/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
#define LOCKING_SUPPORT_ENABLE
/* Locking resynchronize hack */
#define LOCKING_RESYNC_ENABLE

24
keyboards/crbn/crbn.c Normal file
View File

@@ -0,0 +1,24 @@
/* Copyright 2020 Harry Herring
*
* 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 "crbn.h"
/* Encoder setting. only one encoder despite 4 possible spots */
__attribute__((weak)) void encoder_update_user(uint8_t index, bool clockwise) {
if (clockwise) {
tap_code(KC_VOLU);
} else {
tap_code(KC_VOLD);
}
}

42
keyboards/crbn/crbn.h Normal file
View File

@@ -0,0 +1,42 @@
/* Copyright 2020 Harry Herring
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#pragma once
#include "quantum.h"
#define LAYOUT_crbn_1x2u( \
K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, \
K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, \
K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, \
K300, K301, K302, K303, K304, K305, K307, K308, K309, K310, K311 \
) { \
{ K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011 }, \
{ K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111 }, \
{ K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211 }, \
{ K300, K301, K302, K303, K304, K305, KC_NO, K307, K308, K309, K310, K311 } \
}
#define LAYOUT_crbn_2x2u( \
K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, \
K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, \
K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, \
K300, K301, K302, K303, K304, K307, K308, K309, K310, K311 \
) { \
{ K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011 }, \
{ K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111 }, \
{ K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211 }, \
{ K300, K301, K302, K303, K304, KC_NO, KC_NO, K307, K308, K309, K310, K311 } \
}

109
keyboards/crbn/info.json Normal file
View File

@@ -0,0 +1,109 @@
{
"keyboard_name": "CRBN",
"keyboard_folder": "crbn",
"url": "polarityworks.com",
"maintainer": "qmk",
"width": 12,
"height": 4,
"layouts": {
"LAYOUT_crbn_1x2u": {
"layout": [
{ "w": 1, "x": 0, "y": 0 },
{ "w": 1, "x": 1, "y": 0 },
{ "w": 1, "x": 2, "y": 0 },
{ "w": 1, "x": 3, "y": 0 },
{ "w": 1, "x": 4, "y": 0 },
{ "w": 1, "x": 5, "y": 0 },
{ "w": 1, "x": 6, "y": 0 },
{ "w": 1, "x": 7, "y": 0 },
{ "w": 1, "x": 8, "y": 0 },
{ "w": 1, "x": 9, "y": 0 },
{ "w": 1, "x": 10, "y": 0 },
{ "w": 1, "x": 11, "y": 0 },
{ "w": 1, "x": 0, "y": 1 },
{ "w": 1, "x": 1, "y": 1 },
{ "w": 1, "x": 2, "y": 1 },
{ "w": 1, "x": 3, "y": 1 },
{ "w": 1, "x": 4, "y": 1 },
{ "w": 1, "x": 5, "y": 1 },
{ "w": 1, "x": 6, "y": 1 },
{ "w": 1, "x": 7, "y": 1 },
{ "w": 1, "x": 8, "y": 1 },
{ "w": 1, "x": 9, "y": 1 },
{ "w": 1, "x": 10, "y": 1 },
{ "w": 1, "x": 11, "y": 1 },
{ "w": 1, "x": 0, "y": 2 },
{ "w": 1, "x": 1, "y": 2 },
{ "w": 1, "x": 2, "y": 2 },
{ "w": 1, "x": 3, "y": 2 },
{ "w": 1, "x": 4, "y": 2 },
{ "w": 1, "x": 5, "y": 2 },
{ "w": 1, "x": 6, "y": 2 },
{ "w": 1, "x": 7, "y": 2 },
{ "w": 1, "x": 8, "y": 2 },
{ "w": 1, "x": 9, "y": 2 },
{ "w": 1, "x": 10, "y": 2 },
{ "w": 1, "x": 11, "y": 2 },
{ "w": 1, "x": 0, "y": 3 },
{ "w": 1, "x": 1, "y": 3 },
{ "w": 1, "x": 2, "y": 3 },
{ "w": 1, "x": 3, "y": 3 },
{ "w": 1, "x": 4, "y": 3 },
{ "w": 2, "x": 5, "y": 3 },
{ "w": 1, "x": 7, "y": 3 },
{ "w": 1, "x": 8, "y": 3 },
{ "w": 1, "x": 9, "y": 3 },
{ "w": 1, "x": 10, "y": 3 },
{ "w": 1, "x": 11, "y": 3 } ]
},
"LAYOUT_crbn_2x2u": {
"layout": [
{ "w": 1, "x": 0, "y": 0 },
{ "w": 1, "x": 1, "y": 0 },
{ "w": 1, "x": 2, "y": 0 },
{ "w": 1, "x": 3, "y": 0 },
{ "w": 1, "x": 4, "y": 0 },
{ "w": 1, "x": 5, "y": 0 },
{ "w": 1, "x": 6, "y": 0 },
{ "w": 1, "x": 7, "y": 0 },
{ "w": 1, "x": 8, "y": 0 },
{ "w": 1, "x": 9, "y": 0 },
{ "w": 1, "x": 10, "y": 0 },
{ "w": 1, "x": 11, "y": 0 },
{ "w": 1, "x": 0, "y": 1 },
{ "w": 1, "x": 1, "y": 1 },
{ "w": 1, "x": 2, "y": 1 },
{ "w": 1, "x": 3, "y": 1 },
{ "w": 1, "x": 4, "y": 1 },
{ "w": 1, "x": 5, "y": 1 },
{ "w": 1, "x": 6, "y": 1 },
{ "w": 1, "x": 7, "y": 1 },
{ "w": 1, "x": 8, "y": 1 },
{ "w": 1, "x": 9, "y": 1 },
{ "w": 1, "x": 10, "y": 1 },
{ "w": 1, "x": 11, "y": 1 },
{ "w": 1, "x": 0, "y": 2 },
{ "w": 1, "x": 1, "y": 2 },
{ "w": 1, "x": 2, "y": 2 },
{ "w": 1, "x": 3, "y": 2 },
{ "w": 1, "x": 4, "y": 2 },
{ "w": 1, "x": 5, "y": 2 },
{ "w": 1, "x": 6, "y": 2 },
{ "w": 1, "x": 7, "y": 2 },
{ "w": 1, "x": 8, "y": 2 },
{ "w": 1, "x": 9, "y": 2 },
{ "w": 1, "x": 10, "y": 2 },
{ "w": 1, "x": 11, "y": 2 },
{ "w": 1, "x": 0, "y": 3 },
{ "w": 1, "x": 1, "y": 3 },
{ "w": 1, "x": 2, "y": 3 },
{ "w": 1, "x": 3, "y": 3 },
{ "w": 2, "x": 4, "y": 3 },
{ "w": 2, "x": 6, "y": 3 },
{ "w": 1, "x": 8, "y": 3 },
{ "w": 1, "x": 9, "y": 3 },
{ "w": 1, "x": 10, "y": 3 },
{ "w": 1, "x": 11, "y": 3 } ]
}
}
}

View File

@@ -0,0 +1,45 @@
/* Copyright 2020 Harry Herring
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include QMK_KEYBOARD_H
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
LAYOUT_crbn_1x2u(
KC_ESC, 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_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT,
MO(3), KC_LCTL, KC_LALT, KC_LGUI, MO(1), KC_SPC, MO(2), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT),
LAYOUT_crbn_1x2u(
KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_TRNS,
KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE,
KC_TRNS, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, LSFT(KC_NUHS), LSFT(KC_NUBS), KC_HOME, KC_END, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY),
LAYOUT_crbn_1x2u(
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_TRNS,
KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS,
KC_TRNS, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_NUHS, KC_NUBS, KC_PGUP, KC_PGDN, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY),
LAYOUT_crbn_1x2u(
RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
};

19
keyboards/crbn/readme.md Normal file
View File

@@ -0,0 +1,19 @@
# CRBN
A compact 40% (12x4) ortholinear keyboard kit made by Polarity Works and sold by keygem
* Keyboard Maintainer: [ReFil](https://github.com/ReFil)
* Hardware Supported: CRBN kit with a pro micro
* Hardware Availability: [Keygem](https://keygem.store/collections/group-buys/products/group-buy-featherlight-40-kit)
Support for this keyboard is available in the Polarity Works [discord](https://discord.gg/NysAH3Gser)
Make example for this keyboard (after setting up your build environment):
make crbn:default
Flashing example for this keyboard:
make crbn: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).

23
keyboards/crbn/rules.mk Normal file
View File

@@ -0,0 +1,23 @@
# MCU name
MCU = atmega32u4
# Bootloader selection
BOOTLOADER = caterina
# Build Options
# change yes to no to disable
#
BOOTMAGIC_ENABLE = full # Virtual DIP switch configuration
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
NKRO_ENABLE = yes # USB Nkey Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
BLUETOOTH_ENABLE = no # Enable Bluetooth
AUDIO_ENABLE = no # Audio output
ENCODER_ENABLE = yes

View File

@@ -0,0 +1,42 @@
/* Copyright 2019-2020 DMQ Design
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#pragma once
#define RGBLIGHT_HUE_STEP 8
// place overrides here
#define NO_ACTION_ONESHOT
#undef LOCKING_SUPPORT_ENABLE
#define LAYER_STATE_8BIT
#define MAX_LAYER 4
#undef RGBLIGHT_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_STATIC_GRADIENT
#define RGBLIGHT_EFFECT_ALTERNATING
#define RGBLIGHT_EFFECT_TWINKLE
#define RGBLIGHT_SLEEP
#define RGBLIGHT_LAYERS
#define RGBLIGHT_LAYER_BLINK
#define RGBLIGHT_LAYERS_OVERRIDE_RGB_OFF

View File

@@ -0,0 +1,237 @@
/* Copyright 2020 Joshua Moses Diamond
*
* 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 "version.h"
#include <stdlib.h>
#define RGB_LAYER_ACK_DURATION 500
enum layers { _MACRO, _NUMPAD, _RGB, _FN };
enum layer_base {
LAYER_BASE = _MACRO,
LAYER_BASE_END = _FN + 1,
};
enum custom_keycodes {
HELLO = SAFE_RANGE,
CH_CPNL, // AL Control Panel
CH_ASST, // AL Context-aware Desktop Assistant
CH_SUSP, // Suspend
};
// clang-format off
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_MACRO] = LAYOUT(
A(S(KC_N)), HELLO, CH_SUSP, TO(_MACRO),
KC_MPRV, KC_MPLY, KC_MNXT, TO(_NUMPAD),
C(A(KC_COMM)), KC_F5, C(A(KC_DOT)), TO(_RGB),
MO(_FN), CH_ASST, CH_CPNL),
[_NUMPAD] = LAYOUT(
KC_KP_7, KC_KP_8, KC_KP_9, KC_TRNS,
KC_KP_4, KC_KP_5, KC_KP_6, KC_TRNS,
KC_KP_1, KC_KP_2, KC_KP_3, KC_TRNS,
KC_KP_0, KC_PDOT, KC_PENT),
[_RGB] = LAYOUT(
RGB_HUI, RGB_SAI, RGB_VAI, KC_TRNS,
RGB_HUD, RGB_SAD, RGB_VAD, KC_TRNS,
RGB_SPD, RGB_SPI, KC_NO, KC_TRNS,
RGB_RMOD, RGB_TOG, RGB_MOD),
[_FN] = LAYOUT(
KC_TRNS, DEBUG, RESET, KC_TRNS,
KC_NO, KC_NO, EEP_RST, KC_TRNS,
KC_NO, KC_NO, KC_NO, KC_TRNS,
KC_NO, KC_NO, KC_NO),
};
// clang-format on
typedef enum layer_ack {
ACK_NO = 0,
ACK_YES,
ACK_MEH,
} layer_ack_t;
#define LAYER_OFFSET 0
const rgblight_segment_t PROGMEM _macro_layer[] = RGBLIGHT_LAYER_SEGMENTS({0, 1, HSV_TEAL});
const rgblight_segment_t PROGMEM _numpad_layer[] = RGBLIGHT_LAYER_SEGMENTS({1, 1, HSV_TEAL});
const rgblight_segment_t PROGMEM _rgb_layer[] = RGBLIGHT_LAYER_SEGMENTS({2, 1, HSV_TEAL});
const rgblight_segment_t PROGMEM _fn_layer[] = RGBLIGHT_LAYER_SEGMENTS({0, 3, HSV_PURPLE});
#define ACK_OFFSET 4
const rgblight_segment_t PROGMEM _no_layer[] = RGBLIGHT_LAYER_SEGMENTS({0, 3, HSV_RED});
const rgblight_segment_t PROGMEM _yes_layer[] = RGBLIGHT_LAYER_SEGMENTS({0, 3, HSV_GREEN});
const rgblight_segment_t PROGMEM _meh_layer[] = RGBLIGHT_LAYER_SEGMENTS({0, 3, HSV_YELLOW});
// clang-format on
const rgblight_segment_t *const PROGMEM _rgb_layers[] = {
[LAYER_OFFSET + 0] = _macro_layer,
[LAYER_OFFSET + 1] = _numpad_layer,
[LAYER_OFFSET + 2] = _rgb_layer,
[LAYER_OFFSET + 3] = _fn_layer,
[ACK_OFFSET + ACK_NO] = _no_layer,
[ACK_OFFSET + ACK_YES] = _yes_layer,
[ACK_OFFSET + ACK_MEH] = _meh_layer,
[ACK_OFFSET + ACK_MEH + 1] = NULL
};
// clang-format off
const uint8_t PROGMEM _n_rgb_layers = sizeof(_rgb_layers) / sizeof(_rgb_layers[0]) - 1;
void clear_rgb_layers(void) {
dprint("clear_rgb_layers()\n");
for (uint8_t i = 0; i < _n_rgb_layers; i++) {
rgblight_set_layer_state(i, false);
}
}
void do_rgb_layers(layer_state_t state, uint8_t start, uint8_t end) {
dprintf("start=%u, end=%u, LAYER_OFFSET=%u\n", start, end, LAYER_OFFSET);
for (uint8_t i = start; i < end; i++) {
bool is_on = layer_state_cmp(state, i);
uint8_t rl = LAYER_OFFSET + i;
dprintf("layer[%u]=%u, rl=%u\n", i, is_on, rl);
rgblight_set_layer_state(rl, is_on);
}
}
layer_state_t layer_state_set_user(layer_state_t state) {
do_rgb_layers(state, LAYER_BASE, LAYER_BASE_END);
return state;
}
void rgb_layer_ack(layer_ack_t n) {
uint8_t layer = ACK_OFFSET + n;
dprintf("rgb_layer_ack(%u) ==> %u\n", n, layer);
rgblight_blink_layer(layer, RGB_LAYER_ACK_DURATION);
}
void rgb_layer_ack_yn(bool yn) { rgb_layer_ack(yn ? ACK_YES : ACK_NO); }
void keyboard_post_init_user(void) {
// Enable the LED layers
rgblight_layers = _rgb_layers;
do_rgb_layers(layer_state, LAYER_BASE, LAYER_BASE_END);
}
void shutdown_user() {
clear_rgb_layers();
rgblight_enable();
rgblight_mode_noeeprom(RGBLIGHT_MODE_STATIC_LIGHT);
rgblight_sethsv_noeeprom(HSV_RED);
}
void spidey_glow(void) {
rgblight_enable();
rgblight_mode(RGBLIGHT_MODE_RAINBOW_MOOD);
rgblight_sethsv(255, 230, 128);
}
void eeconfig_init_user(void) { spidey_glow(); }
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
if (record->event.pressed) {
switch (keycode) {
// Re-implement this here, but fix the persistence!
case DEBUG:
if (!debug_enable) {
debug_enable = 1;
} else if (!debug_keyboard) {
debug_keyboard = 1;
} else if (!debug_matrix) {
debug_matrix = 1;
} else {
debug_enable = 0;
debug_keyboard = 0;
debug_matrix = 0;
}
uprintf("DEBUG: enable=%u, keyboard=%u, matrix=%u\n", debug_enable, debug_keyboard, debug_matrix);
uprintln(QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION ", Built on: " QMK_BUILDDATE);
eeconfig_update_debug(debug_config.raw);
return false;
// clang-format off
case CH_CPNL: host_consumer_send(AL_CONTROL_PANEL); return false;
case CH_ASST: host_consumer_send(AL_ASSISTANT); return false;
case CH_SUSP: tap_code16(LGUI(LSFT(KC_L))); return true;
case HELLO: SEND_STRING("Hello, world!"); return true;
// clang-format on
}
} else {
switch (keycode) {
case CH_CPNL:
case CH_ASST:
host_consumer_send(0);
return false;
}
}
return true;
};
void post_process_record_user(uint16_t keycode, keyrecord_t *record) {
switch (keycode) {
// Acks follow...
case DEBUG:
rgb_layer_ack_yn(debug_enable);
break;
case RGB_TOG:
rgb_layer_ack_yn(rgblight_is_enabled());
break;
}
}
void encoder_update_user(uint8_t index, bool clockwise) {
switch (get_highest_layer(layer_state)) {
case _RGB:
if (index == 0) {
if (clockwise) {
rgblight_increase_hue();
} else {
rgblight_decrease_hue();
}
} else if (index == 1) {
if (clockwise) {
rgblight_increase_sat();
} else {
rgblight_decrease_sat();
}
} else if (index == 2) {
if (clockwise) {
rgblight_increase_val();
} else {
rgblight_decrease_val();
}
}
break;
default:
if (index == 0) {
tap_code16(C(S(clockwise ? KC_EQL : KC_MINS)));
} else if (index == 1) {
tap_code16(C(clockwise ? KC_EQL : KC_MINS));
} else if (index == 2) {
tap_code(clockwise ? KC_VOLU : KC_VOLD);
}
break;
}
}

View File

@@ -0,0 +1 @@
spidey3 keymap for spin keypad

View File

@@ -0,0 +1,7 @@
MOUSEKEY_ENABLE = no
MIDI_ENABLE = no
BOOTMAGIC_ENABLE = lite
LTO_ENABLE = yes
CONSOLE_ENABLE = yes # Console for debug
GRAVE_ESC_ENABLE = no

View File

@@ -0,0 +1,105 @@
/*
Copyright 2020 <me@homedrop.org>
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 0x7074 // FJLabs
#define PRODUCT_ID 0x0002 // LDK65
#define DEVICE_VER 0x0001 // Version 1
#define MANUFACTURER FJLabs
#define PRODUCT LDK65
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 15
/*
* 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)
*
*/
// Checked with Eagle Schematic
#define MATRIX_ROW_PINS { F4, F1, F7, F6, F5 }
#define MATRIX_COL_PINS { F0, B1, B2, B3, B7, D0, D1, D2, D3, D5, D7, B4, B5, B6, C6 }
#define UNUSED_PINS
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
#define DEBOUNCE 5
/* define if matrix has ghost (lacks anti-ghosting diodes) */
//#define MATRIX_HAS_GHOST
/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
#define LOCKING_SUPPORT_ENABLE
/* Locking resynchronize hack */
#define LOCKING_RESYNC_ENABLE
/* Define Indicator LED's */
#define LED_CAPS_LOCK_PIN C7
/* Define less important options */
/*
* 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

View File

@@ -0,0 +1,85 @@
{
"keyboard_name": "LDK65",
"url": "https://www.bolsakeyboardsupply.com",
"maintainer": "FJLabs",
"width": 16,
"height": 5,
"layouts": {
"LAYOUT_65_ansi": {
"layout": [
{"x": 0, "y": 0},
{"x": 1, "y": 0},
{"x": 2, "y": 0},
{"x": 3, "y": 0},
{"x": 4, "y": 0},
{"x": 5, "y": 0},
{"x": 6, "y": 0},
{"x": 7, "y": 0},
{"x": 8, "y": 0},
{"x": 9, "y": 0},
{"x": 10, "y": 0},
{"x": 11, "y": 0},
{"x": 12, "y": 0},
{"x": 13, "y": 0, "w": 2},
{"x": 15, "y": 0},
{"x": 0, "y": 1, "w": 1.5},
{"x": 1.5, "y": 1},
{"x": 2.5, "y": 1},
{"x": 3.5, "y": 1},
{"x": 4.5, "y": 1},
{"x": 5.5, "y": 1},
{"x": 6.5, "y": 1},
{"x": 7.5, "y": 1},
{"x": 8.5, "y": 1},
{"x": 9.5, "y": 1},
{"x": 10.5, "y": 1},
{"x": 11.5, "y": 1},
{"x": 12.5, "y": 1},
{"x": 13.5, "y": 1, "w": 1.5},
{"x": 15, "y": 1},
{"x": 0, "y": 2, "w": 1.75},
{"x": 1.75, "y": 2},
{"x": 2.75, "y": 2},
{"x": 3.75, "y": 2},
{"x": 4.75, "y": 2},
{"x": 5.75, "y": 2},
{"x": 6.75, "y": 2},
{"x": 7.75, "y": 2},
{"x": 8.75, "y": 2},
{"x": 9.75, "y": 2},
{"x": 10.75, "y": 2},
{"x": 11.75, "y": 2},
{"x": 12.75, "y": 2, "w": 2.25},
{"x": 15, "y": 2},
{"x": 0, "y": 3, "w": 2.25},
{"x": 2.25, "y": 3},
{"x": 3.25, "y": 3},
{"x": 4.25, "y": 3},
{"x": 5.25, "y": 3},
{"x": 6.25, "y": 3},
{"x": 7.25, "y": 3},
{"x": 8.25, "y": 3},
{"x": 9.25, "y": 3},
{"x": 10.25, "y": 3},
{"x": 11.25, "y": 3},
{"x": 12.25, "y": 3, "w": 1.75},
{"x": 14, "y": 3},
{"x": 15, "y": 3},
{"x": 0, "y": 4, "w": 1.25},
{"x": 1.25, "y": 4, "w": 1.25},
{"x": 2.5, "y": 4, "w": 1.25},
{"x": 3.75, "y": 4, "w": 6.25},
{"x": 10, "y": 4},
{"x": 11, "y": 4},
{"x": 12, "y": 4},
{"x": 13, "y": 4},
{"x": 14, "y": 4},
{"x": 15, "y": 4}
]
}
}
}

View File

@@ -0,0 +1,39 @@
/*
Copyright 2020 <me@homedrop.org>
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 {
_LAYER0,
_LAYER1,
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_LAYER0] = LAYOUT_65_ansi(
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_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_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, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
),
[_LAYER1] = LAYOUT_65_ansi(
KC_GESC, 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_HOME,
KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUSE, RESET, KC_PGUP,
KC_TRNS, RGB_SPI, RGB_SPD, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PGDN,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, NK_TOGG, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_AUDIO_VOL_UP, KC_AUDIO_MUTE,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MEDIA_PREV_TRACK, KC_AUDIO_VOL_DOWN, KC_MEDIA_NEXT_TRACK
)
};

View File

@@ -0,0 +1,58 @@
/*
Copyright 2020 <me@homedrop.org>
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 {
_LAYER0,
_LAYER1,
_LAYER2,
_LAYER3,
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_LAYER0] = LAYOUT_65_ansi(
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_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_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, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
),
[_LAYER1] = LAYOUT_65_ansi(
KC_GESC, 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_HOME,
KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUSE, RESET, KC_PGUP,
KC_TRNS, RGB_SPI, RGB_SPD, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PGDN,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, NK_TOGG, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_AUDIO_VOL_UP, KC_AUDIO_MUTE,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MEDIA_PREV_TRACK, KC_AUDIO_VOL_DOWN, KC_MEDIA_NEXT_TRACK
),
[_LAYER2] = LAYOUT_65_ansi(
KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
),
[_LAYER3] = LAYOUT_65_ansi(
KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
),
};

View File

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

View File

@@ -0,0 +1,14 @@
/*
Copyright 2020 <me@homedrop.org>
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 "ldk65.h"

View File

@@ -0,0 +1,32 @@
/*
Copyright 2020 <me@homedrop.org>
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"
/* BKS65 Keymap Definitions */
#define LAYOUT_65_ansi( \
K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, \
K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, \
K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2E, \
K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3D, K3E, \
K40, K41, K42, K45, K49, K4A, K4B, K4C, K4D, K4E \
) { \
{ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E }, \
{ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E }, \
{ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, KC_NO, K2E }, \
{ K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, KC_NO, K3D, K3E }, \
{ K40, K41, K42, KC_NO, KC_NO, K45, KC_NO, KC_NO, KC_NO, K49, K4A, K4B, K4C, K4D, K4E } \
}

View File

@@ -0,0 +1,19 @@
# bolsa65
The following is the QMK Firmware for the [BolsaKeyboardSupply](https://www.bolsakeyboardsupply.com) LDK65 PCB. The LDK65 is a tray-mount board that fits PCB's compatible with the Tofu65 including the BKS65.
The PCB will feature:
* Kailh Hotswap sockets
* QMK & VIA compatibility
* Some cool bolsa branding
---
* Keyboard Maintainer: FJLabs
* Hardware Supported: LDK65
Make example for this keyboard (after setting up your build environment):
make fjlabs/ldk65: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).

View File

@@ -0,0 +1,28 @@
# MCU name
MCU = atmega32u4
# Processor frequency
F_CPU = 8000000
# 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 = yes # Commands for debug and configuration
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
NKRO_ENABLE = yes # USB Nkey Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
BLUETOOTH_ENABLE = no # Enable Bluetooth
AUDIO_ENABLE = no # Audio output
KEYBOARD_LOCK_ENABLE = yes
LAYOUTS = 65_ansi

View File

@@ -0,0 +1,151 @@
/*
Copyright 2020 gkeyboard
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 0x474B // "GK"
#define PRODUCT_ID 0x4201
#define DEVICE_VER 0x0001
#define MANUFACTURER gkeyboard
#define PRODUCT GKB-M16
/* key matrix size */
#define MATRIX_ROWS 4
#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 { D4, D5, D6, D7 }
#define MATRIX_COL_PINS { F4, F5, F6, F7 }
#define UNUSED_PINS
/* COL2ROW, ROW2COL */
#define DIODE_DIRECTION COL2ROW
/*
* Split Keyboard specific options, make sure you have 'SPLIT_KEYBOARD = yes' in your rules.mk, and define SOFT_SERIAL_PIN.
*/
//#define SOFT_SERIAL_PIN D0 // or D1, D2, D3, E6
//#define LED_NUM_LOCK_PIN B0
//#define LED_CAPS_LOCK_PIN B1
//#define LED_SCROLL_LOCK_PIN B2
//#define LED_COMPOSE_PIN B3
//#define LED_KANA_PIN B4
//#define BACKLIGHT_PIN B7
//#define BACKLIGHT_LEVELS 3
//#define BACKLIGHT_BREATHING
#define RGB_DI_PIN F1
#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
/*== 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
/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
#define DEBOUNCE 5
/* define if matrix has ghost (lacks anti-ghosting diodes) */
//#define MATRIX_HAS_GHOST
/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
#define LOCKING_SUPPORT_ENABLE
/* Locking resynchronize hack */
#define LOCKING_RESYNC_ENABLE
/* If defined, GRAVE_ESC will always act as ESC when CTRL is held.
* This is useful for the Windows task manager shortcut (ctrl+shift+esc).
*/
//#define GRAVE_ESC_CTRL_OVERRIDE
/*
* Force NKRO
*
* Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved
* state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the
* makefile for this to work.)
*
* If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N)
* until the next keyboard reset.
*
* NKRO may prevent your keystrokes from being detected in the BIOS, but it is
* fully operational during normal computer usage.
*
* For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N)
* or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by
* bootmagic, NKRO mode will always be enabled until it is toggled again during a
* power-up.
*
*/
//#define FORCE_NKRO
/*
* Feature disable options
* These options are also useful to firmware size reduction.
*/
/* disable debug print */
//#define NO_DEBUG
/* disable print */
//#define NO_PRINT
/* disable action features */
//#define NO_ACTION_LAYER
//#define NO_ACTION_TAPPING
//#define NO_ACTION_ONESHOT
/* disable these deprecated features by default */
#define NO_ACTION_MACRO
#define NO_ACTION_FUNCTION
/* Bootmagic Lite key configuration */
//#define BOOTMAGIC_LITE_ROW 0
//#define BOOTMAGIC_LITE_COLUMN 0

View File

@@ -0,0 +1,17 @@
/* Copyright 2020 gkeyboard
*
* 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 "gkb_m16.h"

View File

@@ -0,0 +1,40 @@
/* Copyright 2020 gkeyboard
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#pragma once
#include "quantum.h"
/* This is a shortcut to help you visually see your layout.
*
* The first section contains all of the arguments representing the physical
* layout of the board and position of the keys.
*
* The second converts the arguments into a two-dimensional array which
* represents the switch matrix.
*/
#define LAYOUT_ortho_4x4( \
K01, K02, K03, K04, \
K11, K12, K13, K14, \
K21, K22, K23, K24, \
K31, K32, K33, K34 \
) \
{ \
{ K01, K02, K03, K04 }, \
{ K11, K12, K13, K14 }, \
{ K21, K22, K23, K24 }, \
{ K31, K32, K33, K34 } \
}

View File

@@ -0,0 +1,29 @@
{
"keyboard_name": "gkb_m16",
"url": "",
"maintainer": "gkeyboard",
"width": 4,
"height": 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}
]
}
}
}

View File

@@ -0,0 +1,73 @@
/* Copyright 2020 gkeyboard
*
* 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 {
_BASE = 0,
_FN1,
_FN2,
};
// Defines the keycodes used by our macros in process_record_user
enum custom_keycodes {
QMKBEST = SAFE_RANGE,
QMKURL
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_BASE] = LAYOUT_ortho_4x4(
KC_PGUP, KC_HOME, KC_UP, KC_END ,
KC_PGDN, KC_LEFT, KC_DOWN, KC_RGHT,
MO(_FN2), KC_VOLU, KC_MPLY, KC_MPRV,
MO(_FN1), KC_VOLD, KC_MUTE, KC_MNXT
),
[_FN1] = LAYOUT_ortho_4x4(
KC_ESC, KC_P7, KC_P8, KC_P9,
KC_TAB, KC_P4, KC_P5, KC_P6,
KC_ENT, KC_P1, KC_P2, KC_P3,
_______, KC_P0, KC_P0, KC_DOT
),
[_FN2] = LAYOUT_ortho_4x4(
RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI,
RGB_RMOD, RGB_HUD, RGB_SAD, RGB_VAD,
_______, _______, _______, RESET,
RGB_TOG, _______, QMKBEST, QMKURL
)
};
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
switch (keycode) {
case QMKBEST:
if (record->event.pressed) {
// when keycode QMKBEST is pressed
SEND_STRING("QMK is the best thing ever!");
} else {
// when keycode QMKBEST is released
}
break;
case QMKURL:
if (record->event.pressed) {
// when keycode QMKURL is pressed
SEND_STRING("https://qmk.fm/\n");
} else {
// when keycode QMKURL is released
}
break;
}
return true;
}

View File

@@ -0,0 +1 @@
# The default keymap for GKB-M16

View File

@@ -0,0 +1,44 @@
/* Copyright 2020 gkeyboard
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include QMK_KEYBOARD_H
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = LAYOUT_ortho_4x4(
KC_PGUP, KC_HOME, KC_UP, KC_END ,
KC_PGDN, KC_LEFT, KC_DOWN, KC_RGHT,
KC_DOT, KC_VOLU, KC_MPLY, KC_MPRV,
MO(1), KC_VOLD, KC_MUTE, KC_MNXT
),
[1] = LAYOUT_ortho_4x4(
RESET, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
),
[2] = LAYOUT_ortho_4x4(
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
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_ortho_4x4(
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
)
};

View File

@@ -0,0 +1 @@
# Via keymap for GKB-M16

View File

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

View File

@@ -0,0 +1,19 @@
# GKB-M16
![GKB-M16](https://i.imgur.com/LP5I5ZQ.png)
4x4 Custom Macro Pad, with USB Type-C, RGB underglow.
* Keyboard Maintainer: [gkeyboard](https://github.com/gkeyboard)
* Hardware Supported: GKB-M16 PCB
* Hardware Availability: http://www.mltelectronic.com
Make example for this keyboard (after setting up your build environment):
make gkeyboard/gkb_m16:default
Flashing example for this keyboard:
make gkeyboard/gkb_m16: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).

View File

@@ -0,0 +1,22 @@
# 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 = yes # USB Nkey Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
BLUETOOTH_ENABLE = no # Enable Bluetooth
AUDIO_ENABLE = no # Audio output

View File

@@ -0,0 +1,4 @@
{
"manufacturer": "YangPiCui",
"maintainer": "YangPiCui"
}

View File

@@ -0,0 +1,6 @@
# [Ergonomic Vertical Keyboard (EVK)](https://github.com/YangPiCui/ErgonomicVerticalKeyboard)
The Ergonomic Vertical Keyboard (EVK) deletes our humpback.
* Maintainer: [YangPiCui](https://github.com/YangPiCui)
* Hardware Availability: Upon Custom Ordering

View File

@@ -0,0 +1,148 @@
/*
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 0x0000
#define DEVICE_VER 0x0001
#define MANUFACTURER Yang Cui
#define PRODUCT evk v1_3
/* key matrix size */
#define MATRIX_ROWS 6
#define MATRIX_COLS 16
/*
* Keyboard Matrix Assignments
*
* Change this to how you wired your keyboard
* COLS: AVR pins used for columns, left to right
* ROWS: AVR pins used for rows, top to bottom
* DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode)
* ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode)
*
*/
#define MATRIX_ROW_PINS \
{ B0, B1, B2, B3, B7, D0 }
#define MATRIX_COL_PINS \
{ D1, D2, D3, C6, C7, F0, F1, F4, F5, F6, F7, B6, B5, B4, D7, D6 }
#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION ROW2COL // the current flows into the rows and then out of the columns
/* define whiche Pins to use for the status LEDs*/
#define LED_CAPS_LOCK_PIN D4
/*
* Split Keyboard specific options, make sure you have 'SPLIT_KEYBOARD = yes' in your rules.mk, and define SOFT_SERIAL_PIN.
*/
// #define SOFT_SERIAL_PIN D2 // or D1, D2, D3, E6
// #define BACKLIGHT_PIN B7
// #define BACKLIGHT_BREATHING
// #define BACKLIGHT_LEVELS 3
// #define RGB_DI_PIN E2
// #ifdef RGB_DI_PIN
// #define RGBLED_NUM 16
// #define RGBLIGHT_HUE_STEP 8
// #define RGBLIGHT_SAT_STEP 8
// #define RGBLIGHT_VAL_STEP 8
// #define RGBLIGHT_LIMIT_VAL 255 /* The maximum brightness level */
// #define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */
// /*== all animations enable ==*/
// #define RGBLIGHT_ANIMATIONS
// /*== or choose animations ==*/
// #define RGBLIGHT_EFFECT_BREATHING
// #define RGBLIGHT_EFFECT_RAINBOW_MOOD
// #define RGBLIGHT_EFFECT_RAINBOW_SWIRL
// #define RGBLIGHT_EFFECT_SNAKE
// #define RGBLIGHT_EFFECT_KNIGHT
// #define RGBLIGHT_EFFECT_CHRISTMAS
// #define RGBLIGHT_EFFECT_STATIC_GRADIENT
// #define RGBLIGHT_EFFECT_RGB_TEST
// #define RGBLIGHT_EFFECT_ALTERNATING
// /*== 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
/* 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 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
/* Bootmagic Lite key configuration */
// #define BOOTMAGIC_LITE_ROW 0
// #define BOOTMAGIC_LITE_COLUMN 0

View File

@@ -0,0 +1,101 @@
{
"keyboard_name": "Ergonomic Vertical Keyboard (EVK) version 1.3 with Teensy 2.0",
"url": "https://github.com/YangPiCui/ErgonomicVerticalKeyboard",
"maintainer": "YangPiCui",
"width": 22.75,
"height": 7.5,
"layouts": {
"LAYOUT": {
"layout": [
{"label":"k0A", "x":0, "y":0.5, "w":1.25, "h":1.25},
{"label":"k0B", "x":1.25, "y":0.25, "w":1.25, "h":1.25},
{"label":"k0C", "x":2.5, "y":0, "w":1.25, "h":1.25},
{"label":"k0D", "x":3.75, "y":0.25, "w":1.25, "h":1.25},
{"label":"k0E", "x":5, "y":0.25, "w":1.25, "h":1.25},
{"label":"k0F", "x":6.25, "y":0.25, "w":1.25, "h":1.25},
{"label":"k0G", "x":8.75, "y":0.25, "w":1.25, "h":1.25},
{"label":"k0H", "x":10, "y":0.25, "w":1.25, "h":1.25},
{"label":"k0I", "x":11.25, "y":0.25, "w":1.25, "h":1.25},
{"label":"k0J", "x":12.5, "y":0.25, "w":1.25, "h":1.25},
{"label":"k0K", "x":15.25, "y":0.25, "w":1.25, "h":1.25},
{"label":"k0L", "x":16.5, "y":0.25, "w":1.25, "h":1.25},
{"label":"k0M", "x":17.75, "y":0.25, "w":1.25, "h":1.25},
{"label":"k0N", "x":19, "y":0, "w":1.25, "h":1.25},
{"label":"k0O", "x":20.25, "y":0.25, "w":1.25, "h":1.25},
{"label":"k0P", "x":21.5, "y":0.5, "w":1.25, "h":1.25},
{"label":"k1A", "x":0, "y":1.75, "w":1.25, "h":1.25},
{"label":"k1B", "x":1.25, "y":1.5, "w":1.25, "h":1.25},
{"label":"k1C", "x":2.5, "y":1.25, "w":1.25, "h":1.25},
{"label":"k1D", "x":3.75, "y":1.5, "w":1.25, "h":1.25},
{"label":"k1E", "x":5, "y":1.5, "w":1.25, "h":1.25},
{"label":"k1F", "x":6.25, "y":1.5, "w":1.25, "h":1.25},
{"label":"k1G", "x":8.75, "y":1.5, "w":1.25, "h":1.25},
{"label":"k1H", "x":10, "y":1.5, "w":1.25, "h":1.25},
{"label":"k1I", "x":11.25, "y":1.5, "w":1.25, "h":1.25},
{"label":"k1J", "x":12.5, "y":1.5, "w":1.25, "h":1.25},
{"label":"k1K", "x":15.25, "y":1.5, "w":1.25, "h":1.25},
{"label":"k1L", "x":16.5, "y":1.5, "w":1.25, "h":1.25},
{"label":"k1M", "x":17.75, "y":1.5, "w":1.25, "h":1.25},
{"label":"k1N", "x":19, "y":1.25, "w":1.25, "h":1.25},
{"label":"k1O", "x":20.25, "y":1.5, "w":1.25, "h":1.25},
{"label":"k1P", "x":21.5, "y":1.75, "w":1.25, "h":1.25},
{"label":"k2A", "x":0, "y":3, "w":1.25, "h":1.25},
{"label":"k2B", "x":1.25, "y":2.75, "w":1.25, "h":1.25},
{"label":"k2C", "x":2.5, "y":2.5, "w":1.25, "h":1.25},
{"label":"k2D", "x":3.75, "y":2.75, "w":1.25, "h":1.25},
{"label":"k2E", "x":5, "y":2.75, "w":1.25, "h":1.25},
{"label":"k2F", "x":6.25, "y":2.75, "w":1.25, "h":1.25},
{"label":"k2G", "x":8.75, "y":2.75, "w":1.25, "h":1.25},
{"label":"k2H", "x":10, "y":2.75, "w":1.25, "h":1.25},
{"label":"k2I", "x":11.25, "y":2.75, "w":1.25, "h":1.25},
{"label":"k2J", "x":12.5, "y":2.75, "w":1.25, "h":1.25},
{"label":"k2K", "x":15.25, "y":2.75, "w":1.25, "h":1.25},
{"label":"k2L", "x":16.5, "y":2.75, "w":1.25, "h":1.25},
{"label":"k2M", "x":17.75, "y":2.75, "w":1.25, "h":1.25},
{"label":"k2N", "x":19, "y":2.5, "w":1.25, "h":1.25},
{"label":"k2O", "x":20.25, "y":2.75, "w":1.25, "h":1.25},
{"label":"k2P", "x":21.5, "y":3, "w":1.25, "h":1.25},
{"label":"k3A", "x":0, "y":4.25, "w":1.25, "h":1.25},
{"label":"k3B", "x":1.25, "y":4, "w":1.25, "h":1.25},
{"label":"k3C", "x":2.5, "y":3.75, "w":1.25, "h":1.25},
{"label":"k3D", "x":3.75, "y":4, "w":1.25, "h":1.25},
{"label":"k3E", "x":5, "y":4, "w":1.25, "h":1.25},
{"label":"k3F", "x":6.75, "y":4.5, "w":1.25, "h":1.25},
{"label":"k3G", "x":8.75, "y":4, "w":1.25, "h":1.25},
{"label":"k3H", "x":10, "y":4, "w":1.25, "h":1.25},
{"label":"k3I", "x":11.25, "y":4, "w":1.25, "h":1.25},
{"label":"k3J", "x":12.5, "y":4, "w":1.25, "h":1.25},
{"label":"k3K", "x":14.75, "y":4.5, "w":1.25, "h":1.25},
{"label":"k3L", "x":16.5, "y":4, "w":1.25, "h":1.25},
{"label":"k3M", "x":17.75, "y":4, "w":1.25, "h":1.25},
{"label":"k3N", "x":19, "y":3.75, "w":1.25, "h":1.25},
{"label":"k3O", "x":20.25, "y":4, "w":1.25, "h":1.25},
{"label":"k3P", "x":21.5, "y":4.25, "w":1.25, "h":1.25},
{"label":"k4A", "x":0, "y":5.5, "w":1.25, "h":1.25},
{"label":"k4B", "x":1.25, "y":5.25, "w":1.25, "h":1.25},
{"label":"k4C", "x":2.5, "y":5, "w":1.25, "h":1.25},
{"label":"k4D", "x":3.75, "y":5.25, "w":1.25, "h":1.25},
{"label":"k4E", "x":5.5, "y":5.75, "w":1.25, "h":1.25},
{"label":"k4F", "x":6.75, "y":5.75, "w":1.25, "h":1.25},
{"label":"k4G", "x":8.75, "y":5.25, "w":1.25, "h":1.25},
{"label":"k4H", "x":10, "y":5.25, "w":1.25, "h":1.25},
{"label":"k4I", "x":11.25, "y":5.25, "w":1.25, "h":1.25},
{"label":"k4J", "x":12.5, "y":5.25, "w":1.25, "h":1.25},
{"label":"k4K", "x":14.75, "y":5.75, "w":1.25, "h":1.25},
{"label":"k4L", "x":16, "y":5.75, "w":1.25, "h":1.25},
{"label":"k4M", "x":17.75, "y":5.25, "w":1.25, "h":1.25},
{"label":"k4N", "x":19, "y":5, "w":1.25, "h":1.25},
{"label":"k4O", "x":20.25, "y":5.25, "w":1.25, "h":1.25},
{"label":"k4P", "x":21.5, "y":5.5, "w":1.25, "h":1.25},
{"label":"k5B", "x":1.25, "y":6.5, "w":1.25, "h":1.25},
{"label":"k5C", "x":2.5, "y":6.25, "w":1.25, "h":1.25},
{"label":"k5G", "x":8.75, "y":6.5, "w":1.25, "h":1.25},
{"label":"k5H", "x":10, "y":6.5, "w":1.25, "h":1.25},
{"label":"k5I", "x":11.25, "y":6.5, "w":1.25, "h":1.25},
{"label":"k5J", "x":12.5, "y":6.5, "w":1.25, "h":1.25},
{"label":"k5N", "x":19, "y":6.25, "w":1.25, "h":1.25},
{"label":"k5O", "x":20.25, "y":6.5, "w":1.25, "h":1.25}
]
}
}
}

View File

@@ -0,0 +1,34 @@
/*
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include QMK_KEYBOARD_H
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = LAYOUT(/* Base Layer (0th Layer) - default Layout */
KC_1, KC_2, KC_3, KC_4, KC_5, KC_ESC, TG(1), KC_PSCR, KC_INS, KC_APP, KC_CAPS, KC_6, KC_7, KC_8, KC_9, KC_0,
KC_Q, KC_H, KC_R, KC_F, KC_X, KC_LBRC, KC_F1, KC_F2, KC_F3, KC_F4, KC_RBRC, KC_BSPC, KC_Y, KC_O, KC_U, KC_J,
KC_L, KC_S, KC_N, KC_T, KC_D, KC_END, KC_F5, KC_F6, KC_F7, KC_F8, KC_DEL, KC_P, KC_I, KC_A, KC_E, KC_K,
KC_Z, KC_M, KC_C, KC_V, KC_B, KC_LCTL, KC_F9, KC_F10, KC_F11, KC_F12, KC_RCTL, KC_W, KC_G, KC_COMM, KC_DOT, KC_ENT,
KC_LALT, KC_MINS, KC_EQL, KC_TAB, KC_SPC, KC_LGUI, KC_HOME, KC_UP, KC_END, KC_PGUP, KC_RGUI, KC_SPC, KC_QUOT, KC_SCLN, KC_SLSH, KC_RALT,
KC_LSFT, KC_GRV, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN, KC_BSLS, KC_RSFT
),
[1] = LAYOUT(/* 1st Layer - Numpad Keys */
_______, _______, _______, _______, _______, _______, _______, KC_SLCK, KC_PAUS, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, KC_PSLS, KC_PAST, KC_PMNS, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, KC_P7, KC_P8, KC_P9, KC_PPLS, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, KC_P4, KC_P5, KC_P6, KC_PPLS, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, KC_P1, KC_P2, KC_P3, KC_PEQL, _______, _______, _______, _______, _______, _______,
_______, _______, KC_P0, KC_P0, KC_PDOT, KC_PENT, _______, _______
)
};

View File

@@ -0,0 +1 @@
# The default keymap for this version of the EVK

View File

@@ -0,0 +1,10 @@
# [Ergonomic Vertical Keyboard (EVK)](https://github.com/YangPiCui/ErgonomicVerticalKeyboard) version 1.3 with Teensy 2.0
* Keyboard Maintainer: [YangPiCui](https://github.com/YangPiCui)
* Hardware Supported: Ergonomic Vertical Keyboard (EVK) version 1.3 with Teensy 2.0
Make example for this keyboard (after setting up your build environment):
make handwired/evk/v1_3: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).

View File

@@ -0,0 +1,22 @@
# MCU name
MCU = atmega32u4
# Bootloader selection
BOOTLOADER = halfkay
# Build Options
# change yes to no to disable
#
BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
NKRO_ENABLE = no # USB Nkey Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
BLUETOOTH_ENABLE = no # Enable Bluetooth
AUDIO_ENABLE = no # Audio output

View File

@@ -0,0 +1,58 @@
/*
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 "v1_3.h"
// Optional override functions below.
// You can leave any or all of these undefined.
// These are only required if you want to perform custom actions.
// For reference, visit https://docs.qmk.fm/#/custom_quantum_functions?id=layer-change-code
// keyboard start-up codes
// runs once when the firmware starts up
void matrix_init_kb(void) {
// Set the LEDs pins
setPinOutput(D5); // Layer 1 Status LED
matrix_init_user();
}
// looping keyboard codes
// runs every cycle (a lot)
/*void matrix_scan_kb(void) {
matrix_scan_user();
}*/
// per-action keyboard codes
// runs for every key-press action, just before processing by the firmware
/*bool process_record_kb(uint16_t keycode, keyrecord_t *record) {
return process_record_user(keycode, record);
}*/
// Set LED based on layer
__attribute__((weak)) layer_state_t layer_state_set_user(layer_state_t state) {
writePin(D5, layer_state_cmp(state, 1));
return state;
}
bool led_update_kb(led_t led_state) {
bool res = led_update_user(led_state);
if (res) {
// writePin sets the pin high for 1 and low for 0.
writePin(D4, led_state.caps_lock);
}
return res;
}

View File

@@ -0,0 +1,43 @@
/*
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#pragma once
#include "quantum.h"
#define XXX KC_NO
/* 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(\
k0A, k0B, k0C, k0D, k0E, k0F, k0G, k0H, k0I, k0J, k0K, k0L, k0M, k0N, k0O, k0P, \
k1A, k1B, k1C, k1D, k1E, k1F, k1G, k1H, k1I, k1J, k1K, k1L, k1M, k1N, k1O, k1P, \
k2A, k2B, k2C, k2D, k2E, k2F, k2G, k2H, k2I, k2J, k2K, k2L, k2M, k2N, k2O, k2P, \
k3A, k3B, k3C, k3D, k3E, k3F, k3G, k3H, k3I, k3J, k3K, k3L, k3M, k3N, k3O, k3P, \
k4A, k4B, k4C, k4D, k4E, k4F, k4G, k4H, k4I, k4J, k4K, k4L, k4M, k4N, k4O, k4P, \
k5B, k5C, k5G, k5H, k5I, k5J, k5N, k5O \
) { \
{ k0A, k0B, k0C, k0D, k0E, k0F, k0G, k0H, k0I, k0J, k0K, k0L, k0M, k0N, k0O, k0P }, \
{ k1A, k1B, k1C, k1D, k1E, k1F, k1G, k1H, k1I, k1J, k1K, k1L, k1M, k1N, k1O, k1P }, \
{ k2A, k2B, k2C, k2D, k2E, k2F, k2G, k2H, k2I, k2J, k2K, k2L, k2M, k2N, k2O, k2P }, \
{ k3A, k3B, k3C, k3D, k3E, k3F, k3G, k3H, k3I, k3J, k3K, k3L, k3M, k3N, k3O, k3P }, \
{ k4A, k4B, k4C, k4D, k4E, k4F, k4G, k4H, k4I, k4J, k4K, k4L, k4M, k4N, k4O, k4P }, \
{ XXX, k5B, k5C, XXX, XXX, XXX, k5G, k5H, k5I, k5J, XXX, XXX, XXX, k5N, k5O, XXX } \
}

View File

@@ -17,3 +17,4 @@
#pragma once
// place overrides here
#define TAPPING_TOGGLE 2

View File

@@ -15,9 +15,6 @@
*/
#include QMK_KEYBOARD_H
#define TAPPING_TOGGLE 2
// Layer names
#define base 0
#define shrek 1

View File

@@ -40,7 +40,8 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
// Left, Right, Middle
#define ENCODERS_PAD_A { A8, B3, A10 }
#define ENCODERS_PAD_B { B11, A15, A9 }
#define ENCODERS_PAD_B { A4, A15, A9 }
#define TAP_CODE_DELAY 10
#define RGB_DI_PIN B15
#ifdef RGB_DI_PIN

View File

@@ -3,41 +3,122 @@
#include "config_common.h"
/* USB Device descriptor parameter */
#define VENDOR_ID 0x7983
#define PRODUCT_ID 0x0512
#define DEVICE_VER 0x0001
#define MANUFACTURER Keycapsss
#define PRODUCT O4L:5x12
#define DESCRIPTION A 60 key ortholinear keyboard
#define VENDOR_ID 0x7983
#define PRODUCT_ID 0x0512
#define DEVICE_VER 0x0001
#define MANUFACTURER Keycapsss
#define PRODUCT O4L:5x12
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 12
/* key matrix pins */
/*
* 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 { F7, B1, B3, B2, B6 }
#define MATRIX_COL_PINS { B5, B4, E6, D7, C6, D4, D0, D1, D2, F6, F5, F4 }
#define UNUSED_PINS
/* COL2ROW or ROW2COL */
/* COL2ROW, ROW2COL */
#define DIODE_DIRECTION COL2ROW
/* WS2812 RGB LED */
#define RGB_DI_PIN D3
//#define BACKLIGHT_PIN B7
//#define BACKLIGHT_LEVELS 3
//#define BACKLIGHT_BREATHING
#define RGB_DI_PIN D3
#ifdef RGB_DI_PIN
#define RGBLIGHT_ANIMATIONS
#define RGBLED_NUM 12 // Number of LEDs
#define RGBLIGHT_HUE_STEP 4
#define RGBLIGHT_SAT_STEP 4
#define RGBLIGHT_VAL_STEP 4
# define RGBLED_NUM 12
# define RGBLIGHT_HUE_STEP 4
# define RGBLIGHT_SAT_STEP 4
# define RGBLIGHT_VAL_STEP 4
//# 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
/* Set 0 if debouncing isn't needed */
/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
#define DEBOUNCE 5
/* define if matrix has ghost (lacks anti-ghosting diodes) */
//#define MATRIX_HAS_GHOST
/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
#define LOCKING_SUPPORT_ENABLE
/* Locking resynchronize hack */
#define LOCKING_RESYNC_ENABLE
/* If defined, GRAVE_ESC will always act as ESC when CTRL is held.
* This is useful for the Windows task manager shortcut (ctrl+shift+esc).
*/
//#define GRAVE_ESC_CTRL_OVERRIDE
/*
* Force NKRO
*
* Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved
* state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the
* makefile for this to work.)
*
* If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N)
* until the next keyboard reset.
*
* NKRO may prevent your keystrokes from being detected in the BIOS, but it is
* fully operational during normal computer usage.
*
* For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N)
* or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by
* bootmagic, NKRO mode will always be enabled until it is toggled again during a
* power-up.
*
*/
//#define FORCE_NKRO
/*
* Feature disable options
* These options are also useful to firmware size reduction.
*/
/* disable debug print */
//#define NO_DEBUG
/* disable print */
//#define NO_PRINT
/* disable action features */
//#define NO_ACTION_LAYER
//#define NO_ACTION_TAPPING
//#define NO_ACTION_ONESHOT
/* disable these deprecated features by default */
#define NO_ACTION_MACRO
#define NO_ACTION_FUNCTION
/* Bootmagic Lite key configuration */
//#define BOOTMAGIC_LITE_ROW 0
//#define BOOTMAGIC_LITE_COLUMN 0

View File

@@ -7,195 +7,204 @@
"height": 5,
"layouts": {
"LAYOUT_ortho_5x12": {
"key_count": 60,
"layout": [
{"w": 1, "x": 0, "y": 0},
{"w": 1, "x": 1, "y": 0},
{"w": 1, "x": 2, "y": 0},
{"w": 1, "x": 3, "y": 0},
{"w": 1, "x": 4, "y": 0},
{"w": 1, "x": 5, "y": 0},
{"w": 1, "x": 6, "y": 0},
{"w": 1, "x": 7, "y": 0},
{"w": 1, "x": 8, "y": 0},
{"w": 1, "x": 9, "y": 0},
{"w": 1, "x": 10, "y": 0},
{"w": 1, "x": 11, "y": 0},
{"w": 1, "x": 0, "y": 1},
{"w": 1, "x": 1, "y": 1},
{"w": 1, "x": 2, "y": 1},
{"w": 1, "x": 3, "y": 1},
{"w": 1, "x": 4, "y": 1},
{"w": 1, "x": 5, "y": 1},
{"w": 1, "x": 6, "y": 1},
{"w": 1, "x": 7, "y": 1},
{"w": 1, "x": 8, "y": 1},
{"w": 1, "x": 9, "y": 1},
{"w": 1, "x": 10, "y": 1},
{"w": 1, "x": 11, "y": 1},
{"w": 1, "x": 0, "y": 2},
{"w": 1, "x": 1, "y": 2},
{"w": 1, "x": 2, "y": 2},
{"w": 1, "x": 3, "y": 2},
{"w": 1, "x": 4, "y": 2},
{"w": 1, "x": 5, "y": 2},
{"w": 1, "x": 6, "y": 2},
{"w": 1, "x": 7, "y": 2},
{"w": 1, "x": 8, "y": 2},
{"w": 1, "x": 9, "y": 2},
{"w": 1, "x": 10, "y": 2},
{"w": 1, "x": 11, "y": 2},
{"w": 1, "x": 0, "y": 3},
{"w": 1, "x": 1, "y": 3},
{"w": 1, "x": 2, "y": 3},
{"w": 1, "x": 3, "y": 3},
{"w": 1, "x": 4, "y": 3},
{"w": 1, "x": 5, "y": 3},
{"w": 1, "x": 6, "y": 3},
{"w": 1, "x": 7, "y": 3},
{"w": 1, "x": 8, "y": 3},
{"w": 1, "x": 9, "y": 3},
{"w": 1, "x": 10, "y": 3},
{"w": 1, "x": 11, "y": 3},
{"w": 1, "x": 0, "y": 4},
{"w": 1, "x": 1, "y": 4},
{"w": 1, "x": 2, "y": 4},
{"w": 1, "x": 3, "y": 4},
{"w": 1, "x": 4, "y": 4},
{"w": 1, "x": 5, "y": 4},
{"w": 1, "x": 6, "y": 4},
{"w": 1, "x": 7, "y": 4},
{"w": 1, "x": 8, "y": 4},
{"w": 1, "x": 9, "y": 4},
{"w": 1, "x": 10, "y": 4},
{"w": 1, "x": 11, "y": 4}
{"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": {
"key_count": 59,
"layout": [
{"w": 1, "x": 0, "y": 0},
{"w": 1, "x": 1, "y": 0},
{"w": 1, "x": 2, "y": 0},
{"w": 1, "x": 3, "y": 0},
{"w": 1, "x": 4, "y": 0},
{"w": 1, "x": 5, "y": 0},
{"w": 1, "x": 6, "y": 0},
{"w": 1, "x": 7, "y": 0},
{"w": 1, "x": 8, "y": 0},
{"w": 1, "x": 9, "y": 0},
{"w": 1, "x": 10, "y": 0},
{"w": 1, "x": 11, "y": 0},
{"w": 1, "x": 0, "y": 1},
{"w": 1, "x": 1, "y": 1},
{"w": 1, "x": 2, "y": 1},
{"w": 1, "x": 3, "y": 1},
{"w": 1, "x": 4, "y": 1},
{"w": 1, "x": 5, "y": 1},
{"w": 1, "x": 6, "y": 1},
{"w": 1, "x": 7, "y": 1},
{"w": 1, "x": 8, "y": 1},
{"w": 1, "x": 9, "y": 1},
{"w": 1, "x": 10, "y": 1},
{"w": 1, "x": 11, "y": 1},
{"w": 1, "x": 0, "y": 2},
{"w": 1, "x": 1, "y": 2},
{"w": 1, "x": 2, "y": 2},
{"w": 1, "x": 3, "y": 2},
{"w": 1, "x": 4, "y": 2},
{"w": 1, "x": 5, "y": 2},
{"w": 1, "x": 6, "y": 2},
{"w": 1, "x": 7, "y": 2},
{"w": 1, "x": 8, "y": 2},
{"w": 1, "x": 9, "y": 2},
{"w": 1, "x": 10, "y": 2},
{"w": 1, "x": 11, "y": 2},
{"w": 1, "x": 0, "y": 3},
{"w": 1, "x": 1, "y": 3},
{"w": 1, "x": 2, "y": 3},
{"w": 1, "x": 3, "y": 3},
{"w": 1, "x": 4, "y": 3},
{"w": 1, "x": 5, "y": 3},
{"w": 1, "x": 6, "y": 3},
{"w": 1, "x": 7, "y": 3},
{"w": 1, "x": 8, "y": 3},
{"w": 1, "x": 9, "y": 3},
{"w": 1, "x": 10, "y": 3},
{"w": 1, "x": 11, "y": 3},
{"w": 1, "x": 0, "y": 4},
{"w": 1, "x": 1, "y": 4},
{"w": 1, "x": 2, "y": 4},
{"w": 1, "x": 3, "y": 4},
{"w": 1, "x": 4, "y": 4},
{"w": 2, "x": 5, "y": 4},
{"w": 1, "x": 7, "y": 4},
{"w": 1, "x": 8, "y": 4},
{"w": 1, "x": 9, "y": 4},
{"w": 1, "x": 10, "y": 4},
{"w": 1, "x": 11, "y": 4}
{"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_ortho_5x12_2x2u": {
"key_count": 58,
"layout": [
{"w": 1, "x": 0, "y": 0},
{"w": 1, "x": 1, "y": 0},
{"w": 1, "x": 2, "y": 0},
{"w": 1, "x": 3, "y": 0},
{"w": 1, "x": 4, "y": 0},
{"w": 1, "x": 5, "y": 0},
{"w": 1, "x": 6, "y": 0},
{"w": 1, "x": 7, "y": 0},
{"w": 1, "x": 8, "y": 0},
{"w": 1, "x": 9, "y": 0},
{"w": 1, "x": 10, "y": 0},
{"w": 1, "x": 11, "y": 0},
{"w": 1, "x": 0, "y": 1},
{"w": 1, "x": 1, "y": 1},
{"w": 1, "x": 2, "y": 1},
{"w": 1, "x": 3, "y": 1},
{"w": 1, "x": 4, "y": 1},
{"w": 1, "x": 5, "y": 1},
{"w": 1, "x": 6, "y": 1},
{"w": 1, "x": 7, "y": 1},
{"w": 1, "x": 8, "y": 1},
{"w": 1, "x": 9, "y": 1},
{"w": 1, "x": 10, "y": 1},
{"w": 1, "x": 11, "y": 1},
{"w": 1, "x": 0, "y": 2},
{"w": 1, "x": 1, "y": 2},
{"w": 1, "x": 2, "y": 2},
{"w": 1, "x": 3, "y": 2},
{"w": 1, "x": 4, "y": 2},
{"w": 1, "x": 5, "y": 2},
{"w": 1, "x": 6, "y": 2},
{"w": 1, "x": 7, "y": 2},
{"w": 1, "x": 8, "y": 2},
{"w": 1, "x": 9, "y": 2},
{"w": 1, "x": 10, "y": 2},
{"w": 1, "x": 11, "y": 2},
{"w": 1, "x": 0, "y": 3},
{"w": 1, "x": 1, "y": 3},
{"w": 1, "x": 2, "y": 3},
{"w": 1, "x": 3, "y": 3},
{"w": 1, "x": 4, "y": 3},
{"w": 1, "x": 5, "y": 3},
{"w": 1, "x": 6, "y": 3},
{"w": 1, "x": 7, "y": 3},
{"w": 1, "x": 8, "y": 3},
{"w": 1, "x": 9, "y": 3},
{"w": 1, "x": 10, "y": 3},
{"w": 1, "x": 11, "y": 3},
{"w": 1, "x": 0, "y": 4},
{"w": 1, "x": 1, "y": 4},
{"w": 1, "x": 2, "y": 4},
{"w": 1, "x": 3, "y": 4},
{"w": 2, "x": 4, "y": 4},
{"w": 2, "x": 6, "y": 4},
{"w": 1, "x": 8, "y": 4},
{"w": 1, "x": 9, "y": 4},
{"w": 1, "x": 10, "y": 4},
{"w": 1, "x": 11, "y": 4}
{"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}
]
}
}

View File

@@ -1,3 +0,0 @@
#pragma once
// place overrides here

View File

@@ -1,83 +1,73 @@
#include QMK_KEYBOARD_H
// Each layer gets a name for readability, which is then used in the keymap matrix below.
// The underscores don't mean anything - you can have a layer called STUFF or any other name.
// Layer names don't all need to be of the same length, obviously, and you can also skip them
// entirely and just use numbers.
enum o4l5x12_layers {
_QWERTY,
_LOWER
enum layer_names {
_QWERTY,
_LOWER
};
// Layers get their own keys. These are defined to make them not mess up
// the grid.
enum o4l5x12_keycodes {
QWERTY = SAFE_RANGE,
LOWER
enum custom_keycodes {
QWERTY = SAFE_RANGE,
LOWER
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* Qwerty
* ,-----------------------------------------------------------------------------------.
* | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = |
* |------+------+------+------+------+------+------+------+------+------+------+------|
* | ESC | Q | W | E | R | T | Y | U | I | O | P | BSPC |
* |------+------+------+------+------+-------------+------+------+------+------+------|
* | Tab | A | S | D | F | G | H | J | K | L | ; | " |
* |------+------+------+------+------+------|------+------+------+------+------+------|
* | Shift| Z | X | C | V | B | N | M | , | . | / |Enter |
* |------+------+------+------+------+------+------+------+------+------+------+------|
* | Ctrl | Alt | GUI |Lower | Enter | Space | Left | Down | Up |Right |
* `-----------------------------------------------------------------------------------'
*/
[_QWERTY] = LAYOUT_ortho_5x12_2x2u(
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_GESC, 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_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT,
KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_ENT, KC_SPC, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT
),
/* Qwerty
* ,-----------------------------------------------------------------------------------.
* | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = |
* |------+------+------+------+------+------+------+------+------+------+------+------|
* | ESC | Q | W | E | R | T | Y | U | I | O | P | BSPC |
* |------+------+------+------+------+-------------+------+------+------+------+------|
* | Tab | A | S | D | F | G | H | J | K | L | ; | " |
* |------+------+------+------+------+------|------+------+------+------+------+------|
* | Shift| Z | X | C | V | B | N | M | , | . | / |Enter |
* |------+------+------+------+------+------+------+------+------+------+------+------|
* | Ctrl | Alt | GUI |Lower | Enter | Space | Left | Down | Up |Right |
* `-----------------------------------------------------------------------------------'
*/
[_QWERTY] = LAYOUT_ortho_5x12_2x2u(
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_GESC, 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_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT,
KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_ENT, KC_SPC, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT
),
/* Lower
* ,-----------------------------------------------------------------------------------.
* | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 |
* |------+------+------+------+------+-------------+------+------+------+------+------|
* | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | | Del |
* |------+------+------+------+------+-------------+------+------+------+------+------|
* |RGBPLA| { | [ | ( | | | ) | ] | } | | | | |
* |------+------+------+------+------+------|------+------+------+------+------+------|
* |RGBMOD| | | | | | | | | | | |
* |------+------+------+------+------+------+------+------+------+------+------+------|
* |UGlow | Reset| | | | | Next | Vol- | Vol+ | Play |
* `-----------------------------------------------------------------------------------'
*/
[_LOWER] = LAYOUT_ortho_5x12_2x2u(
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_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, _______, KC_DEL,
RGB_M_P, KC_LCBR, KC_LBRC, KC_LPRN, KC_SLSH, KC_BSLS, KC_RPRN, KC_RBRC, KC_RCBR, _______, _______, KC_PIPE,
RGB_MOD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
RGB_TOG, RESET, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY
),
/* Lower
* ,-----------------------------------------------------------------------------------.
* | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 |
* |------+------+------+------+------+-------------+------+------+------+------+------|
* | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | | Del |
* |------+------+------+------+------+-------------+------+------+------+------+------|
* |RGBPLA| { | [ | ( | | | ) | ] | } | | | | |
* |------+------+------+------+------+------|------+------+------+------+------+------|
* |RGBMOD| | | | | | | | | | | |
* |------+------+------+------+------+------+------+------+------+------+------+------|
* |UGlow | Reset| | | | | Next | Vol- | Vol+ | Play |
* `-----------------------------------------------------------------------------------'
*/
[_LOWER] = LAYOUT_ortho_5x12_2x2u(
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_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, _______, KC_DEL,
RGB_M_P, KC_LCBR, KC_LBRC, KC_LPRN, KC_SLSH, KC_BSLS, KC_RPRN, KC_RBRC, KC_RCBR, _______, _______, KC_PIPE,
RGB_MOD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
RGB_TOG, RESET, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY
)
};
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
switch (keycode) {
switch (keycode) {
case QWERTY:
if (record->event.pressed) {
set_single_persistent_default_layer(_QWERTY);
}
return false;
break;
if (record->event.pressed) {
set_single_persistent_default_layer(_QWERTY);
}
return false;
case LOWER:
if (record->event.pressed) {
layer_on(_LOWER);
} else {
layer_off(_LOWER);
}
return false;
break;
}
if (record->event.pressed) {
layer_on(_LOWER);
} else {
layer_off(_LOWER);
}
return false;
}
return true;
};

View File

@@ -1,3 +0,0 @@
#pragma once
// place overrides here

View File

@@ -1,140 +1,129 @@
#include QMK_KEYBOARD_H
// Each layer gets a name for readability, which is then used in the keymap matrix below.
// The underscores don't mean anything - you can have a layer called STUFF or any other name.
// Layer names don't all need to be of the same length, obviously, and you can also skip them
// entirely and just use numbers.
enum preonic_layers {
_QWERTY,
_LOWER,
_RAISE,
_ADJUST
enum layer_names {
_QWERTY,
_LOWER,
_RAISE,
_ADJUST
};
// Layers get their own keys. These are defined to make them not mess up
// the grid.
enum preonic_keycodes {
QWERTY = SAFE_RANGE,
LOWER,
RAISE
enum custom_keycodes {
QWERTY = SAFE_RANGE,
LOWER,
RAISE
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* Qwerty (Preonic Layer Style)
* ,-----------------------------------------------------------------------------------.
* | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp |
* |------+------+------+------+------+------+------+------+------+------+------+------|
* | Tab | Q | W | E | R | T | Y | U | I | O | P | Del |
* |------+------+------+------+------+-------------+------+------+------+------+------|
* | Esc | A | S | D | F | G | H | J | K | L | ; | " |
* |------+------+------+------+------+------|------+------+------+------+------+------|
* | Shift| Z | X | C | V | B | N | M | , | . | / |Enter |
* |------+------+------+------+------+------+------+------+------+------+------+------|
* | | Ctrl | Alt | GUI |Lower |Space |Space |Raise | Left | Down | Up |Right |
* `-----------------------------------------------------------------------------------'
*/
[_QWERTY] = LAYOUT_ortho_5x12(
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC,
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_DEL,
KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT,
RGB_TOG, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT
),
/* Qwerty (Preonic Layer Style)
* ,-----------------------------------------------------------------------------------.
* | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp |
* |------+------+------+------+------+------+------+------+------+------+------+------|
* | Tab | Q | W | E | R | T | Y | U | I | O | P | Del |
* |------+------+------+------+------+-------------+------+------+------+------+------|
* | Esc | A | S | D | F | G | H | J | K | L | ; | " |
* |------+------+------+------+------+------|------+------+------+------+------+------|
* | Shift| Z | X | C | V | B | N | M | , | . | / |Enter |
* |------+------+------+------+------+------+------+------+------+------+------+------|
* | | Ctrl | Alt | GUI |Lower |Space |Space |Raise | Left | Down | Up |Right |
* `-----------------------------------------------------------------------------------'
*/
[_QWERTY] = LAYOUT_ortho_5x12(
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC,
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_DEL,
KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT,
RGB_TOG, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT
),
/* Lower (Preonic Layer Style)
* ,-----------------------------------------------------------------------------------.
* | ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | Bksp |
* |------+------+------+------+------+-------------+------+------+------+------+------|
* | ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | Del |
* |------+------+------+------+------+-------------+------+------+------+------+------|
* | Del | F1 | F2 | F3 | F4 | F5 | F6 | _ | + | { | } | | |
* |------+------+------+------+------+------|------+------+------+------+------+------|
* | | F7 | F8 | F9 | F10 | F11 | F12 |ISO ~ |ISO | | | | |
* |------+------+------+------+------+------+------+------+------+------+------+------|
* | | | | | | | | | Next | Vol- | Vol+ | Play |
* `-----------------------------------------------------------------------------------'
*/
[_LOWER] = LAYOUT_ortho_5x12(
KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC,
KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_DEL,
KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE,
_______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, S(KC_NUHS), S(KC_NUBS), KC_HOME, KC_END, _______,
_______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY
),
/* Lower (Preonic Layer Style)
* ,-----------------------------------------------------------------------------------.
* | ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | Bksp |
* |------+------+------+------+------+-------------+------+------+------+------+------|
* | ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | Del |
* |------+------+------+------+------+-------------+------+------+------+------+------|
* | Del | F1 | F2 | F3 | F4 | F5 | F6 | _ | + | { | } | | |
* |------+------+------+------+------+------|------+------+------+------+------+------|
* | | F7 | F8 | F9 | F10 | F11 | F12 |ISO ~ |ISO | | | | |
* |------+------+------+------+------+------+------+------+------+------+------+------|
* | | | | | | | | | Next | Vol- | Vol+ | Play |
* `-----------------------------------------------------------------------------------'
*/
[_LOWER] = LAYOUT_ortho_5x12(
KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC,
KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_DEL,
KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE,
_______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,S(KC_NUHS),S(KC_NUBS),KC_HOME, KC_END, _______,
_______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY
),
/* Raise (Preonic Layer Style)
* ,-----------------------------------------------------------------------------------.
* | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp |
* |------+------+------+------+------+------+------+------+------+------+------+------|
* | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Del |
* |------+------+------+------+------+-------------+------+------+------+------+------|
* | Del | F1 | F2 | F3 | F4 | F5 | F6 | - | = | [ | ] | \ |
* |------+------+------+------+------+------|------+------+------+------+------+------|
* | | F7 | F8 | F9 | F10 | F11 | F12 |ISO # |ISO / | | | |
* |------+------+------+------+------+------+------+------+------+------+------+------|
* | | | | | | | | | Next | Vol- | Vol+ | Play |
* `-----------------------------------------------------------------------------------'
*/
[_RAISE] = LAYOUT_ortho_5x12(
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL,
KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS,
_______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_NUHS, KC_NUBS, KC_PGUP, KC_PGDN, _______,
_______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY
),
/* Adjust (Lower + Raise) (Preonic Layer Style)
* ,-----------------------------------------------------------------------------------.
* | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 |
* |------+------+------+------+------+------+------+------+------+------+------+------|
* | | Reset| | | | | | | | | | Del |
* |------+------+------+------+------+-------------+------+------+------+------+------|
* | | | |Aud on|AudOff|AGnorm|AGswap|Qwerty| | | | |
* |------+------+------+------+------+------|------+------+------+------+------+------|
* | |Voice-|Voice+|Mus on|MusOff|MidiOn|MidOff| | | | | |
* |------+------+------+------+------+------+------+------+------+------+------+------|
* | | | | | | | | | | | | |
* `-----------------------------------------------------------------------------------'
*/
[_ADJUST] = LAYOUT_ortho_5x12(
KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,
_______, RESET, DEBUG, _______, _______, _______, _______, TERM_ON, TERM_OFF,_______, _______, KC_DEL,
_______, _______, MU_MOD, AU_ON, AU_OFF, AG_NORM, AG_SWAP, QWERTY, _______, _______, _______, _______,
_______, MUV_DE, MUV_IN, MU_ON, MU_OFF, MI_ON, MI_OFF, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
)
/* Raise (Preonic Layer Style)
* ,-----------------------------------------------------------------------------------.
* | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp |
* |------+------+------+------+------+------+------+------+------+------+------+------|
* | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Del |
* |------+------+------+------+------+-------------+------+------+------+------+------|
* | Del | F1 | F2 | F3 | F4 | F5 | F6 | - | = | [ | ] | \ |
* |------+------+------+------+------+------|------+------+------+------+------+------|
* | | F7 | F8 | F9 | F10 | F11 | F12 |ISO # |ISO / | | | |
* |------+------+------+------+------+------+------+------+------+------+------+------|
* | | | | | | | | | Next | Vol- | Vol+ | Play |
* `-----------------------------------------------------------------------------------'
*/
[_RAISE] = LAYOUT_ortho_5x12(
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL,
KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS,
_______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_NUHS, KC_NUBS, KC_PGUP, KC_PGDN, _______,
_______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY
),
/* Adjust (Lower + Raise) (Preonic Layer Style)
* ,-----------------------------------------------------------------------------------.
* | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 |
* |------+------+------+------+------+------+------+------+------+------+------+------|
* | | Reset| | | | | | | | | | Del |
* |------+------+------+------+------+-------------+------+------+------+------+------|
* | | | |Aud on|AudOff|AGnorm|AGswap|Qwerty| | | | |
* |------+------+------+------+------+------|------+------+------+------+------+------|
* | |Voice-|Voice+|Mus on|MusOff|MidiOn|MidOff| | | | | |
* |------+------+------+------+------+------+------+------+------+------+------+------|
* | | | | | | | | | | | | |
* `-----------------------------------------------------------------------------------'
*/
[_ADJUST] = LAYOUT_ortho_5x12(
KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,
_______, RESET, DEBUG, _______, _______, _______, _______, TERM_ON, TERM_OFF,_______, _______, KC_DEL,
_______, _______, MU_MOD, AU_ON, AU_OFF, AG_NORM, AG_SWAP, QWERTY, _______, _______, _______, _______,
_______, MUV_DE, MUV_IN, MU_ON, MU_OFF, MI_ON, MI_OFF, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
)
};
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
switch (keycode) {
switch (keycode) {
case QWERTY:
if (record->event.pressed) {
set_single_persistent_default_layer(_QWERTY);
}
return false;
break;
if (record->event.pressed) {
set_single_persistent_default_layer(_QWERTY);
}
return false;
case LOWER:
if (record->event.pressed) {
layer_on(_LOWER);
update_tri_layer(_LOWER, _RAISE, _ADJUST);
} else {
layer_off(_LOWER);
update_tri_layer(_LOWER, _RAISE, _ADJUST);
}
return false;
break;
if (record->event.pressed) {
layer_on(_LOWER);
update_tri_layer(_LOWER, _RAISE, _ADJUST);
} else {
layer_off(_LOWER);
update_tri_layer(_LOWER, _RAISE, _ADJUST);
}
return false;
case RAISE:
if (record->event.pressed) {
layer_on(_RAISE);
update_tri_layer(_LOWER, _RAISE, _ADJUST);
} else {
layer_off(_RAISE);
update_tri_layer(_LOWER, _RAISE, _ADJUST);
}
return false;
break;
}
if (record->event.pressed) {
layer_on(_RAISE);
update_tri_layer(_LOWER, _RAISE, _ADJUST);
} else {
layer_off(_RAISE);
update_tri_layer(_LOWER, _RAISE, _ADJUST);
}
return false;
}
return true;
};

View File

@@ -4,47 +4,44 @@
#define XXX KC_NO
#define LAYOUT_ortho_5x12( \
k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, \
k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, \
k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, \
k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, \
k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4a, k4b \
) \
{ \
{ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b }, \
{ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, }, \
{ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b }, \
{ k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, }, \
{ k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4a, k4b } \
}
#define LAYOUT_ortho_5x12( \
k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, \
k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, \
k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, \
k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, \
k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4A, k4B \
) { \
{ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B }, \
{ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B }, \
{ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B }, \
{ k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B }, \
{ k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4A, k4B } \
}
#define LAYOUT_ortho_5x12_1x2uC( \
k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, \
k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, \
k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, \
k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, \
k40, k41, k42, k43, k44, k45, k47, k48, k49, k4a, k4b \
) \
{ \
{ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b }, \
{ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, }, \
{ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b }, \
{ k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, }, \
{ k40, k41, k42, k43, k44, k45, XXX, k47, k48, k49, k4a, k4b } \
}
#define LAYOUT_ortho_5x12_1x2uC( \
k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, \
k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, \
k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, \
k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, \
k40, k41, k42, k43, k44, k45, k47, k48, k49, k4A, k4B \
) { \
{ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B }, \
{ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B }, \
{ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B }, \
{ k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B }, \
{ k40, k41, k42, k43, k44, k45, XXX, k47, k48, k49, k4A, k4B } \
}
#define LAYOUT_ortho_5x12_2x2u( \
k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, \
k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, \
k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, \
k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, \
k40, k41, k42, k43, k44, k46, k48, k49, k4a, k4b \
) \
{ \
{ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b }, \
{ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, }, \
{ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b }, \
{ k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, }, \
{ k40, k41, k42, k43, k44, XXX, k46, XXX, k48, k49, k4a, k4b } \
}
#define LAYOUT_ortho_5x12_2x2u( \
k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, \
k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, \
k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, \
k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, \
k40, k41, k42, k43, k44, k46, k48, k49, k4A, k4B \
) { \
{ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B }, \
{ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B }, \
{ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B }, \
{ k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B }, \
{ k40, k41, k42, k43, k44, XXX, k46, XXX, k48, k49, k4A, k4B } \
}

View File

@@ -2,7 +2,7 @@
A ortholinear 5x12 keyboard made and sold by Keycapsss. [More info at Keycapsss.com](https://keycapsss.com).
<img src="https://i.imgur.com/5p8rDme.jpg" height="500px">
![o4l_5x12](https://i.imgur.com/5p8rDmel.jpg)
## Features:
@@ -14,18 +14,16 @@ A ortholinear 5x12 keyboard made and sold by Keycapsss. [More info at Keycapsss.
---
- Keyboard Maintainer: BenRoe [GitHub](https://github.com/BenRoe) / [Twitter](https://twitter.com/ben_roe)
- Hardware Supported: Pro Micro
- Hardware Availability: [Keycapsss.com](https://keycapsss.com)
* Keyboard Maintainer: BenRoe [GitHub](https://github.com/BenRoe) / [Twitter](https://twitter.com/ben_roe)
* Hardware Supported: Pro Micro
* Hardware Availability: [Keycapsss.com](https://keycapsss.com)
Make firmware .hex for this keyboard (after setting up your build environment):
Make example for this keyboard (after setting up your build environment):
make keycapsss/o4l_5x12:default
Example of flashing this keyboard (or use [QMK Toolbox](https://github.com/qmk/qmk_toolbox)):
Flashing example for this keyboard:
make keycapsss/o4l_5x12:default:avrdude
make keycapsss/o4l_5x12: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).

View File

@@ -2,26 +2,23 @@
MCU = atmega32u4
# Bootloader selection
# Teensy halfkay
# Pro Micro caterina
# Atmel DFU atmel-dfu
# LUFA DFU lufa-dfu
# QMK DFU qmk-dfu
# ATmega32A bootloadHID
# ATmega328P USBasp
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 = yes # Commands for debug and configuration
NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
MIDI_ENABLE = no # MIDI controls
AUDIO_ENABLE = no # Audio output on port C6
UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight.
# 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
LAYOUTS = ortho_5x12

View File

@@ -63,3 +63,20 @@
{ R32, R33, R34, R35, R36, R37, R38, R39 }, \
{ R45, R46, R47, R48, R49, KC_NO, KC_NO, KC_NO }, \
}
#define LAYOUT_split_3x6_5( \
L00, L01, L02, L03, L04, L05, R06, R07, R08, R09, R10, R11, \
L12, L13, L14, L15, L16, L17, R18, R19, R20, R21, R22, R23, \
L24, L25, L26, L27, L28, L29, R34, R35, R36, R37, R38, R39, \
L40, L41, L42, L43, L44, R45, R46, R47, R48, R49 \
) \
{ \
{ KC_NO, KC_NO, L05, L04, L03, L02, L01, L00 }, \
{ KC_NO, KC_NO, L17, L16, L15, L14, L13, L12 }, \
{ KC_NO, KC_NO, L29, L28, L27, L26, L25, L24 }, \
{ L44, L43, L42, L41, L40, KC_NO, KC_NO, KC_NO }, \
{ KC_NO, KC_NO, R06, R07, R08, R09, R10, R11 }, \
{ KC_NO, KC_NO, R18, R19, R20, R21, R22, R23 }, \
{ KC_NO, KC_NO, R34, R35, R36, R37, R38, R39 }, \
{ R45, R46, R47, R48, R49, KC_NO, KC_NO, KC_NO }, \
}

View File

@@ -0,0 +1,105 @@
/*
Copyright 2020 <hello@lucidkb.com>
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#pragma once
#include "config_common.h"
/* USB Device descriptor parameter */
#define VENDOR_ID 0x7667 // Lucid
#define PRODUCT_ID 0x0003 // KBD8X Hotswap PCB's
#define DEVICE_VER 0x0001 // Version 1
#define MANUFACTURER Lucid
#define PRODUCT KBD8X_HS
/* key matrix size */
#define MATRIX_ROWS 6
#define MATRIX_COLS 17
/*
* 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)
*/
// Checked with Eagle Schematic
#define MATRIX_ROW_PINS { B4, B5, B6, C0, E1, E0 }
#define MATRIX_COL_PINS { F2, F3, F4, F5, F6, F7, A0, A1, A2, A3, A4, A5, A6, A7, D5, D7, D7 }
#define UNUSED_PINS
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
#define DEBOUNCE 5
/* define if matrix has ghost (lacks anti-ghosting diodes) */
//#define MATRIX_HAS_GHOST
/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
#define LOCKING_SUPPORT_ENABLE
/* Locking resynchronize hack */
#define LOCKING_RESYNC_ENABLE
/* Define Indicator LED's */
#define LED_CAPS_LOCK_PIN B7
/* Define less important options */
/*
* 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

View File

@@ -0,0 +1,298 @@
{
"keyboard_name": "KBD8X Hotswap PCB's",
"url": "http://www.lucidkb.com",
"maintainer": "Lucid",
"width": 18.25,
"height": 6.25,
"layouts": {
"LAYOUT_tkl_ansi": {
"layout": [
{"label":"Esc", "x":0, "y":0},
{"label":"F1", "x":2, "y":0},
{"label":"F2", "x":3, "y":0},
{"label":"F3", "x":4, "y":0},
{"label":"F4", "x":5, "y":0},
{"label":"F5", "x":6.5, "y":0},
{"label":"F6", "x":7.5, "y":0},
{"label":"F7", "x":8.5, "y":0},
{"label":"F8", "x":9.5, "y":0},
{"label":"F9", "x":11, "y":0},
{"label":"F10", "x":12, "y":0},
{"label":"F11", "x":13, "y":0},
{"label":"F12", "x":14, "y":0},
{"label":"PrtSc", "x":15.25, "y":0},
{"label":"Scroll Lock", "x":16.25, "y":0},
{"label":"Pause", "x":17.25, "y":0},
{"label":"~", "x":0, "y":1.25},
{"label":"!", "x":1, "y":1.25},
{"label":"@", "x":2, "y":1.25},
{"label":"#", "x":3, "y":1.25},
{"label":"$", "x":4, "y":1.25},
{"label":"%", "x":5, "y":1.25},
{"label":"^", "x":6, "y":1.25},
{"label":"&", "x":7, "y":1.25},
{"label":"*", "x":8, "y":1.25},
{"label":"(", "x":9, "y":1.25},
{"label":")", "x":10, "y":1.25},
{"label":"_", "x":11, "y":1.25},
{"label":"+", "x":12, "y":1.25},
{"label":"Back Space", "x":13, "y":1.25, "w": 2},
{"label":"Insert", "x":15.25, "y":1.25},
{"label":"Home", "x":16.25, "y":1.25},
{"label":"PgUp", "x":17.25, "y":1.25},
{"label":"Tab", "x":0, "y":2.25, "w":1.5},
{"label":"Q", "x":1.5, "y":2.25},
{"label":"W", "x":2.5, "y":2.25},
{"label":"E", "x":3.5, "y":2.25},
{"label":"R", "x":4.5, "y":2.25},
{"label":"T", "x":5.5, "y":2.25},
{"label":"Y", "x":6.5, "y":2.25},
{"label":"U", "x":7.5, "y":2.25},
{"label":"I", "x":8.5, "y":2.25},
{"label":"O", "x":9.5, "y":2.25},
{"label":"P", "x":10.5, "y":2.25},
{"label":"{", "x":11.5, "y":2.25},
{"label":"}", "x":12.5, "y":2.25},
{"label":"|", "x":13.5, "y":2.25, "w":1.5},
{"label":"Delete", "x":15.25, "y":2.25},
{"label":"End", "x":16.25, "y":2.25},
{"label":"PgDn", "x":17.25, "y":2.25},
{"label":"Caps Lock", "x":0, "y":3.25, "w":1.75},
{"label":"A", "x":1.75, "y":3.25},
{"label":"S", "x":2.75, "y":3.25},
{"label":"D", "x":3.75, "y":3.25},
{"label":"F", "x":4.75, "y":3.25},
{"label":"G", "x":5.75, "y":3.25},
{"label":"H", "x":6.75, "y":3.25},
{"label":"J", "x":7.75, "y":3.25},
{"label":"K", "x":8.75, "y":3.25},
{"label":"L", "x":9.75, "y":3.25},
{"label":":", "x":10.75, "y":3.25},
{"label":"SQ", "x":11.75, "y":3.25},
{"label":"Enter", "x":12.75, "y":3.25, "w":2.25},
{"label":"Shift", "x":0, "y":4.25, "w":2.25},
{"label":"Z", "x":2.25, "y":4.25},
{"label":"X", "x":3.25, "y":4.25},
{"label":"C", "x":4.25, "y":4.25},
{"label":"V", "x":5.25, "y":4.25},
{"label":"B", "x":6.25, "y":4.25},
{"label":"N", "x":7.25, "y":4.25},
{"label":"M", "x":8.25, "y":4.25},
{"label":"<", "x":9.25, "y":4.25},
{"label":">", "x":10.25, "y":4.25},
{"label":"?", "x":11.25, "y":4.25},
{"label":"Shift", "x":12.25, "y":4.25, "w":2.75},
{"label":"\u2191", "x":16.25, "y":4.25},
{"label":"Ctrl", "x":0, "y":5.25, "w":1.25},
{"label":"Win", "x":1.25, "y":5.25, "w":1.25},
{"label":"Alt", "x":2.5, "y":5.25, "w":1.25},
{"x":3.75, "y":5.25, "w":6.25},
{"label":"Alt", "x":10, "y":5.25, "w":1.25},
{"label":"Win", "x":11.25, "y":5.25, "w":1.25},
{"label":"Menu", "x":12.5, "y":5.25, "w":1.25},
{"label":"Ctrl", "x":13.75, "y":5.25, "w":1.25},
{"label":"\u2190", "x":15.25, "y":5.25},
{"label":"\u2193", "x":16.25, "y":5.25},
{"label":"\u2192", "x":17.25, "y":5.25}
]
},
"LAYOUT_tkl_ansi_7u": {
"layout": [
{"label":"Esc", "x":0, "y":0},
{"label":"F1", "x":2, "y":0},
{"label":"F2", "x":3, "y":0},
{"label":"F3", "x":4, "y":0},
{"label":"F4", "x":5, "y":0},
{"label":"F5", "x":6.5, "y":0},
{"label":"F6", "x":7.5, "y":0},
{"label":"F7", "x":8.5, "y":0},
{"label":"F8", "x":9.5, "y":0},
{"label":"F9", "x":11, "y":0},
{"label":"F10", "x":12, "y":0},
{"label":"F11", "x":13, "y":0},
{"label":"F12", "x":14, "y":0},
{"label":"PrtSc", "x":15.25, "y":0},
{"label":"Scroll Lock", "x":16.25, "y":0},
{"label":"Pause", "x":17.25, "y":0},
{"label":"~", "x":0, "y":1.25},
{"label":"!", "x":1, "y":1.25},
{"label":"@", "x":2, "y":1.25},
{"label":"#", "x":3, "y":1.25},
{"label":"$", "x":4, "y":1.25},
{"label":"%", "x":5, "y":1.25},
{"label":"^", "x":6, "y":1.25},
{"label":"&", "x":7, "y":1.25},
{"label":"*", "x":8, "y":1.25},
{"label":"(", "x":9, "y":1.25},
{"label":")", "x":10, "y":1.25},
{"label":"_", "x":11, "y":1.25},
{"label":"+", "x":12, "y":1.25},
{"label":"Back Space", "x":13, "y":1.25, "w": 2},
{"label":"Insert", "x":15.25, "y":1.25},
{"label":"Home", "x":16.25, "y":1.25},
{"label":"PgUp", "x":17.25, "y":1.25},
{"label":"Tab", "x":0, "y":2.25, "w":1.5},
{"label":"Q", "x":1.5, "y":2.25},
{"label":"W", "x":2.5, "y":2.25},
{"label":"E", "x":3.5, "y":2.25},
{"label":"R", "x":4.5, "y":2.25},
{"label":"T", "x":5.5, "y":2.25},
{"label":"Y", "x":6.5, "y":2.25},
{"label":"U", "x":7.5, "y":2.25},
{"label":"I", "x":8.5, "y":2.25},
{"label":"O", "x":9.5, "y":2.25},
{"label":"P", "x":10.5, "y":2.25},
{"label":"{", "x":11.5, "y":2.25},
{"label":"}", "x":12.5, "y":2.25},
{"label":"|", "x":13.5, "y":2.25, "w":1.5},
{"label":"Delete", "x":15.25, "y":2.25},
{"label":"End", "x":16.25, "y":2.25},
{"label":"PgDn", "x":17.25, "y":2.25},
{"label":"Caps Lock", "x":0, "y":3.25, "w":1.75},
{"label":"A", "x":1.75, "y":3.25},
{"label":"S", "x":2.75, "y":3.25},
{"label":"D", "x":3.75, "y":3.25},
{"label":"F", "x":4.75, "y":3.25},
{"label":"G", "x":5.75, "y":3.25},
{"label":"H", "x":6.75, "y":3.25},
{"label":"J", "x":7.75, "y":3.25},
{"label":"K", "x":8.75, "y":3.25},
{"label":"L", "x":9.75, "y":3.25},
{"label":":", "x":10.75, "y":3.25},
{"label":"SQ", "x":11.75, "y":3.25},
{"label":"Enter", "x":12.75, "y":3.25, "w":2.25},
{"label":"Shift", "x":0, "y":4.25, "w":2.25},
{"label":"Z", "x":2.25, "y":4.25},
{"label":"X", "x":3.25, "y":4.25},
{"label":"C", "x":4.25, "y":4.25},
{"label":"V", "x":5.25, "y":4.25},
{"label":"B", "x":6.25, "y":4.25},
{"label":"N", "x":7.25, "y":4.25},
{"label":"M", "x":8.25, "y":4.25},
{"label":"<", "x":9.25, "y":4.25},
{"label":">", "x":10.25, "y":4.25},
{"label":"?", "x":11.25, "y":4.25},
{"label":"Shift", "x":12.25, "y":4.25, "w":2.75},
{"label":"\u2191", "x":16.25, "y":4.25},
{"label":"Ctrl", "x":0, "y":5.25, "w":1.5},
{"label":"Win", "x":1.5, "y":5.25},
{"label":"Alt", "x":2.5, "y":5.25, "w":1.5},
{"x":4, "y":5.25, "w":7},
{"label":"Alt", "x":11, "y":5.25, "w":1.5},
{"label":"Win", "x":12.5, "y":5.25, "w":1},
{"label":"Ctrl", "x":13.5, "y":5.25, "w":1.5},
{"label":"\u2190", "x":15.25, "y":5.25},
{"label":"\u2193", "x":16.25, "y":5.25},
{"label":"\u2192", "x":17.25, "y":5.25}
]
},
"LAYOUT_tkl_all": {
"layout": [
{"label":"Esc", "x":0, "y":0},
{"label":"F1", "x":2, "y":0},
{"label":"F2", "x":3, "y":0},
{"label":"F3", "x":4, "y":0},
{"label":"F4", "x":5, "y":0},
{"label":"F5", "x":6.5, "y":0},
{"label":"F6", "x":7.5, "y":0},
{"label":"F7", "x":8.5, "y":0},
{"label":"F8", "x":9.5, "y":0},
{"label":"F9", "x":11, "y":0},
{"label":"F10", "x":12, "y":0},
{"label":"F11", "x":13, "y":0},
{"label":"F12", "x":14, "y":0},
{"label":"PrtSc", "x":15.25, "y":0},
{"label":"Scroll Lock", "x":16.25, "y":0},
{"label":"Pause", "x":17.25, "y":0},
{"label":"~", "x":0, "y":1.25},
{"label":"!", "x":1, "y":1.25},
{"label":"@", "x":2, "y":1.25},
{"label":"#", "x":3, "y":1.25},
{"label":"$", "x":4, "y":1.25},
{"label":"%", "x":5, "y":1.25},
{"label":"^", "x":6, "y":1.25},
{"label":"&", "x":7, "y":1.25},
{"label":"*", "x":8, "y":1.25},
{"label":"(", "x":9, "y":1.25},
{"label":")", "x":10, "y":1.25},
{"label":"_", "x":11, "y":1.25},
{"label":"+", "x":12, "y":1.25},
{"label":"Back Space", "x":13, "y":1.25, "w": 2},
{"label":"Insert", "x":15.25, "y":1.25},
{"label":"Home", "x":16.25, "y":1.25},
{"label":"PgUp", "x":17.25, "y":1.25},
{"label":"Tab", "x":0, "y":2.25, "w":1.5},
{"label":"Q", "x":1.5, "y":2.25},
{"label":"W", "x":2.5, "y":2.25},
{"label":"E", "x":3.5, "y":2.25},
{"label":"R", "x":4.5, "y":2.25},
{"label":"T", "x":5.5, "y":2.25},
{"label":"Y", "x":6.5, "y":2.25},
{"label":"U", "x":7.5, "y":2.25},
{"label":"I", "x":8.5, "y":2.25},
{"label":"O", "x":9.5, "y":2.25},
{"label":"P", "x":10.5, "y":2.25},
{"label":"{", "x":11.5, "y":2.25},
{"label":"}", "x":12.5, "y":2.25},
{"label":"|", "x":13.5, "y":2.25, "w":1.5},
{"label":"Delete", "x":15.25, "y":2.25},
{"label":"End", "x":16.25, "y":2.25},
{"label":"PgDn", "x":17.25, "y":2.25},
{"label":"Caps Lock", "x":0, "y":3.25, "w":1.75},
{"label":"A", "x":1.75, "y":3.25},
{"label":"S", "x":2.75, "y":3.25},
{"label":"D", "x":3.75, "y":3.25},
{"label":"F", "x":4.75, "y":3.25},
{"label":"G", "x":5.75, "y":3.25},
{"label":"H", "x":6.75, "y":3.25},
{"label":"J", "x":7.75, "y":3.25},
{"label":"K", "x":8.75, "y":3.25},
{"label":"L", "x":9.75, "y":3.25},
{"label":":", "x":10.75, "y":3.25},
{"label":"SQ", "x":11.75, "y":3.25},
{"label":"Enter", "x":12.75, "y":3.25, "w":2.25},
{"label":"Shift", "x":0, "y":4.25, "w":2.25},
{"label":"Z", "x":2.25, "y":4.25},
{"label":"X", "x":3.25, "y":4.25},
{"label":"C", "x":4.25, "y":4.25},
{"label":"V", "x":5.25, "y":4.25},
{"label":"B", "x":6.25, "y":4.25},
{"label":"N", "x":7.25, "y":4.25},
{"label":"M", "x":8.25, "y":4.25},
{"label":"<", "x":9.25, "y":4.25},
{"label":">", "x":10.25, "y":4.25},
{"label":"?", "x":11.25, "y":4.25},
{"label":"Shift", "x":12.25, "y":4.25, "w":2.75},
{"label":"\u2191", "x":16.25, "y":4.25},
{"label":"Ctrl", "x":0, "y":5.25, "w":1.25},
{"label":"Win", "x":1.25, "y":5.25, "w":1.25},
{"label":"Alt", "x":2.5, "y":5.25, "w":1.25},
{"x":3.75, "y":5.25, "w":6.25},
{"label":"Alt", "x":10, "y":5.25, "w":1.25},
{"label":"Win", "x":11.25, "y":5.25, "w":1.25},
{"label":"Menu", "x":12.5, "y":5.25, "w":1.25},
{"label":"Ctrl", "x":13.75, "y":5.25, "w":1.25},
{"label":"\u2190", "x":15.25, "y":5.25},
{"label":"\u2193", "x":16.25, "y":5.25},
{"label":"\u2192", "x":17.25, "y":5.25}
]
}
}
}

View File

@@ -0,0 +1,67 @@
/*
Copyright 2020 <hello@lucidkb.com>
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#pragma once
#include "quantum.h"
/* === TKL ANSI w/ 6.25U Space === */
#define LAYOUT_tkl_ansi( \
K00, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, K0F, K0G, \
K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, K1F, K1G, \
K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2E, K2F, K2G, \
K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3D, \
K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4C, K4F, \
K50, K51, K52, K55, K59, K5A, K5B, K5D, K5E, K5F, K5G \
) { \
{ K00, KC_NO, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, K0F, K0G }, \
{ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, K1F, K1G }, \
{ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2E, K2F, K2G }, \
{ K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, KC_NO, K3D, KC_NO, KC_NO, KC_NO }, \
{ K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, KC_NO, K4C, KC_NO, KC_NO, K4F, KC_NO }, \
{ K50, K51, K52, KC_NO, KC_NO, K55, KC_NO, KC_NO, KC_NO, K59, K5A, K5B, KC_NO, K5D, K5E, K5F, K5G } \
}
/* === TKL ANSI w/ 7U Space === */
#define LAYOUT_tkl_ansi_7u( \
K00, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, K0F, K0G, \
K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, K1F, K1G, \
K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2E, K2F, K2G, \
K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3D, \
K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4C, K4F, \
K50, K51, K52, K55, K5A, K5B, K5D, K5E, K5F, K5G \
) { \
{ K00, KC_NO, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, K0F, K0G }, \
{ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, K1F, K1G }, \
{ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2E, K2F, K2G }, \
{ K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, KC_NO, K3D, KC_NO, KC_NO, KC_NO }, \
{ K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, KC_NO, K4C, KC_NO, KC_NO, K4F, KC_NO }, \
{ K50, K51, K52, KC_NO, KC_NO, K55, KC_NO, KC_NO, KC_NO, KC_NO, K5A, K5B, KC_NO, K5D, K5E, K5F, K5G } \
}
/* === All used matrix spots populated === */
#define LAYOUT_tkl_all( \
K00, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, K0F, K0G, \
K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, K1F, K1G, \
K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2E, K2F, K2G, \
K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3D, \
K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4C, K4F, \
K50, K51, K52, K55, K59, K5A, K5B, K5D, K5E, K5F, K5G \
) { \
{ K00, KC_NO, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, K0F, K0G }, \
{ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, K1F, K1G }, \
{ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2E, K2F, K2G }, \
{ K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, KC_NO, K3D, KC_NO, KC_NO, KC_NO }, \
{ K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, KC_NO, K4C, KC_NO, KC_NO, K4F, KC_NO }, \
{ K50, K51, K52, KC_NO, KC_NO, K55, KC_NO, KC_NO, KC_NO, K59, K5A, K5B, KC_NO, K5D, K5E, K5F, K5G } \
}

View File

@@ -0,0 +1,14 @@
/*
Copyright 2020 <hello@lucidkb.com>
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include "kbd8x_hs.h"

View File

@@ -0,0 +1,41 @@
/*
Copyright 2020 <hello@lucidkb.com>
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include QMK_KEYBOARD_H
enum layers {
_LAYER0,
_LAYER1,
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_LAYER0] = LAYOUT_tkl_ansi(
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_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_INS, KC_HOME, KC_PGUP,
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_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_MENU, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
),
[_LAYER1] = LAYOUT_tkl_ansi(
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
)
};

View File

@@ -0,0 +1,41 @@
/*
Copyright 2020 <hello@lucidkb.com>
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include QMK_KEYBOARD_H
enum layers {
_LAYER0,
_LAYER1,
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_LAYER0] = LAYOUT_tkl_ansi_7u(
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_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_INS, KC_HOME, KC_PGUP,
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_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
),
[_LAYER1] = LAYOUT_tkl_ansi_7u(
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
)
};

View File

@@ -0,0 +1,61 @@
/*
Copyright 2020 <hello@lucidkb.org>
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 {
_LAYER0,
_LAYER1,
_LAYER2,
_LAYER3,
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_LAYER0] = LAYOUT_tkl_all(
KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
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_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_MENU, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
),
[_LAYER1] = LAYOUT_tkl_all(
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
),
[_LAYER2] = LAYOUT_tkl_all(
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
),
[_LAYER3] = LAYOUT_tkl_all(
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
)
};

View File

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

View File

@@ -0,0 +1,11 @@
# KBD8X Replacement Hotswap PCB by Lucid
The following is the QMK Firmware for the KBD8X Replacement Hotswap PCB by [LucidKB](http://www.lucidkb.cm).
* Keyboard Maintainer: Lucid
* Hardware Supported: KBD8X_HS
Make example for this keyboard (after setting up your build environment):
make lucid/kbd8x_hs: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).

View File

@@ -0,0 +1,26 @@
# MCU name
MCU = at90usb646
# Processor frequency
F_CPU = 8000000
# 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 = yes # Commands for debug and configuration
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
NKRO_ENABLE = yes # USB Nkey Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
BLUETOOTH_ENABLE = no # Enable Bluetooth
AUDIO_ENABLE = no # Audio output
KEYBOARD_LOCK_ENABLE = yes

View File

@@ -0,0 +1,105 @@
/*
Copyright 2020 <hello@lucidkb.com>
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#pragma once
#include "config_common.h"
/* USB Device descriptor parameter */
#define VENDOR_ID 0x7667 // Lucid
#define PRODUCT_ID 0x0002 // Phantom_Solder
#define DEVICE_VER 0x0001 // Version 1
#define MANUFACTURER Lucid
#define PRODUCT Phantom
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 15
/*
* 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)
*/
// Checked with Eagle Schematic
#define MATRIX_ROW_PINS { F4, F1, F7, F6, F5 }
#define MATRIX_COL_PINS { F0, B1, B2, B3, B7, D0, D1, D2, D3, D5, D7, B4, B5, B6, C6 }
#define UNUSED_PINS
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
#define DEBOUNCE 5
/* define if matrix has ghost (lacks anti-ghosting diodes) */
//#define MATRIX_HAS_GHOST
/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
#define LOCKING_SUPPORT_ENABLE
/* Locking resynchronize hack */
#define LOCKING_RESYNC_ENABLE
/* Define Indicator LED's */
#define LED_CAPS_LOCK_PIN C7
/* Define less important options */
/*
* 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

View File

@@ -0,0 +1,88 @@
{
"keyboard_name": "Phantom Solder",
"url": "http://www.lucidkb.com",
"maintainer": "Lucid",
"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},
{"x": 11.75, "y": 2},
{"x": 12.75, "y": 2, "w": 2.25},
{"x": 15, "y": 2},
{"x": 0, "y": 3, "w": 1.25},
{"x": 1.25, "y": 3},
{"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": 2.25},
{"x": 6, "y": 4, "w": 1.25},
{"x": 7.25, "y": 4, "w": 2.75},
{"x": 10, "y": 4, "w": 1.25},
{"x": 11.25, "y":4, "w": 1.25},
{"x": 13, "y": 4},
{"x": 14, "y": 4},
{"x": 15, "y": 4}
]
}
}
}

View File

@@ -0,0 +1,39 @@
/*
Copyright 2020 <hello@lucidkb.com>
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include QMK_KEYBOARD_H
enum layers {
_LAYER0,
_LAYER1,
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_LAYER0] = LAYOUT_all(
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_GRV,
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_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_DEL, KC_PGDN,
KC_LSFT, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END,
KC_LCTL, KC_LALT, KC_LGUI, KC_SPC, KC_SPC, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT
),
[_LAYER1] = LAYOUT_all(
KC_GESC, 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_BSPC, KC_DEL,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUSE, RESET, KC_PGUP,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PGDN,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, NK_TOGG, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_AUDIO_VOL_UP, KC_AUDIO_MUTE,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MEDIA_PREV_TRACK, KC_AUDIO_VOL_DOWN, KC_MEDIA_NEXT_TRACK
)
};

View File

@@ -0,0 +1,58 @@
/*
Copyright 2020 <hello@lucidkb.org>
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 {
_LAYER0,
_LAYER1,
_LAYER2,
_LAYER3,
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_LAYER0] = LAYOUT_all(
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_GRV,
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_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_DEL, KC_PGDN,
KC_LSFT, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END,
KC_LCTL, KC_LALT, KC_LGUI, KC_SPC, KC_SPC, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT
),
[_LAYER1] = LAYOUT_all(
KC_GESC, 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_BSPC, KC_DEL,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUSE, RESET, KC_PGUP,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PGDN,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, NK_TOGG, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_AUDIO_VOL_UP, KC_AUDIO_MUTE,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MEDIA_PREV_TRACK, KC_AUDIO_VOL_DOWN, KC_MEDIA_NEXT_TRACK
),
[_LAYER2] = LAYOUT_all(
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
),
[_LAYER3] = LAYOUT_all(
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
)
};

View File

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

View File

@@ -0,0 +1,14 @@
/*
Copyright 2020 <hello@lucidkb.com>
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include "phantom_solder.h"

View File

@@ -0,0 +1,32 @@
/*
Copyright 2020 <hello@lucidkb.com>
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#pragma once
#include "quantum.h"
/* Phantom Keymap Definitions */
#define LAYOUT_all( \
K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, \
K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, \
K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2E, \
K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E, \
K40, K41, K42, K43, K46, K48, K49, K4A, K4C, K4D, K4E \
) { \
{ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E }, \
{ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E }, \
{ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2E }, \
{ K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E }, \
{ K40, K41, K42, K43, KC_NO, KC_NO, K46, KC_NO, K48, K49, K4A, KC_NO, K4C, K4D, K4E } \
}

View File

@@ -0,0 +1,11 @@
# Phantom Solder PCB by Lucid
The following is the QMK Firmware for the Phantom *Solder* PCB for [LucidKB](http://www.lucidkb.cm).
* Keyboard Maintainer: Lucid
* Hardware Supported: Phantom
Make example for this keyboard (after setting up your build environment):
make lucid/phantom_solder: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).

View File

@@ -0,0 +1,26 @@
# MCU name
MCU = atmega32u4
# Processor frequency
F_CPU = 8000000
# 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 = yes # Commands for debug and configuration
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
NKRO_ENABLE = yes # USB Nkey Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
BLUETOOTH_ENABLE = no # Enable Bluetooth
AUDIO_ENABLE = no # Audio output
KEYBOARD_LOCK_ENABLE = yes

View File

@@ -20,12 +20,11 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
/* USB Device descriptor parameter */
#define VENDOR_ID 0xFEED
#define PRODUCT_ID 0x991D
#define DEVICE_VER 0x0001
#define VENDOR_ID 0xFEED
#define PRODUCT_ID 0x991D
#define DEVICE_VER 0x0001
#define MANUFACTURER kamonanban
#define PRODUCT manta60
#define DESCRIPTION A split keyboard with 27 ortholinear keys and 5-7 thumb/little finger keys
#define PRODUCT manta60
/* key matrix size */
#define MATRIX_ROWS 10
@@ -45,7 +44,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define MATRIX_COL_PINS { F4, F5, F6, F7, B1, B3, B2 }
#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
/* COL2ROW, ROW2COL */
#define DIODE_DIRECTION COL2ROW
/*
@@ -54,50 +53,45 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define SOFT_SERIAL_PIN D2
#define SELECT_SOFT_SERIAL_SPEED 1
#define RGBLIGHT_SPLIT
#define RGB_DI_PIN D3
#ifdef RGBLIGHT_ENABLE
#define RGBLED_NUM 68 // Number of LEDs
#define RGBLED_SPLIT { 34, 34 }
#endif
#ifdef RGB_DI_PIN
#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
# define RGBLED_NUM 68
# define RGBLIGHT_SPLIT
# define RGBLED_SPLIT { 34, 34 }
# define RGBLIGHT_HUE_STEP 8
# define RGBLIGHT_SAT_STEP 8
# ifndef IOS_DEVICE_ENABLE
# define RGBLIGHT_VAL_STEP 16
# define RGBLIGHT_LIMIT_VAL 128 /* The maximum brightness level */
# else
# define RGBLIGHT_VAL_STEP 4
# define RGBLIGHT_LIMIT_VAL 32 /* The maximum brightness level */
# endif
//# 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
#ifndef IOS_DEVICE_ENABLE
/* The maximum brightness level */
#define RGBLIGHT_LIMIT_VAL 128
#define RGBLIGHT_VAL_STEP 16
#else
#define RGBLIGHT_LIMIT_VAL 32
#define RGBLIGHT_VAL_STEP 4
#endif
#define RGBLIGHT_HUE_STEP 8
#define RGBLIGHT_SAT_STEP 8
#if defined(RGBLIGHT_ENABLE) && !defined(IOS_DEVICE_ENABLE)
#define USB_MAX_POWER_CONSUMPTION 400
# define USB_MAX_POWER_CONSUMPTION 400
#else
#define USB_MAX_POWER_CONSUMPTION 100
# define USB_MAX_POWER_CONSUMPTION 100
#endif
/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
@@ -111,6 +105,32 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
/* 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.
@@ -126,5 +146,11 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
//#define NO_ACTION_LAYER
//#define NO_ACTION_TAPPING
//#define NO_ACTION_ONESHOT
//#define NO_ACTION_MACRO
//#define NO_ACTION_FUNCTION
/* disable these deprecated features by default */
#define NO_ACTION_MACRO
#define NO_ACTION_FUNCTION
/* Bootmagic Lite key configuration */
//#define BOOTMAGIC_LITE_ROW 0
//#define BOOTMAGIC_LITE_COLUMN 0

View File

@@ -7,74 +7,85 @@
"layouts": {
"LAYOUT": {
"layout": [
{"label":"Esc", "x":0, "y":0},
{"label":"!", "x":1, "y":0},
{"label":"@", "x":2, "y":0},
{"label":"#", "x":3, "y":0},
{"label":"$", "x":4, "y":0},
{"label":"%", "x":5, "y":0},
{"label":"=", "x":6, "y":0},
{"label":"-", "x":10, "y":0},
{"label":"^", "x":11, "y":0},
{"label":"&", "x":12, "y":0},
{"label":"*", "x":13, "y":0},
{"label":"(", "x":14, "y":0},
{"label":")", "x":15, "y":0},
{"label":"\\", "x":16, "y":0},
{"label":"-", "x":0, "y":1},
{"label":"Q", "x":1, "y":1},
{"label":"W", "x":2, "y":1},
{"label":"E", "x":3, "y":1},
{"label":"R", "x":4, "y":1},
{"label":"T", "x":5, "y":1},
{"label":"[", "x":6, "y":1},
{"label":"]", "x":10, "y":1},
{"label":"Y", "x":11, "y":1},
{"label":"U", "x":12, "y":1},
{"label":"I", "x":13, "y":1},
{"label":"O", "x":14, "y":1},
{"label":"P", "x":15, "y":1},
{"label":"@", "x":16, "y":1},
{"label":"Tab", "x":0, "y":2},
{"label":"A", "x":1, "y":2},
{"label":"S", "x":2, "y":2},
{"label":"D", "x":3, "y":2},
{"label":"F", "x":4, "y":2},
{"label":"G", "x":5, "y":2},
{"label":",", "x":6, "y":2},
{"label":".", "x":10, "y":2},
{"label":"H", "x":11, "y":2},
{"label":"J", "x":12, "y":2},
{"label":"K", "x":13, "y":2},
{"label":"L", "x":14, "y":2},
{"label":"UP", "x":15, "y":2},
{"label":";", "x":16, "y":2},
{"label":"Shft", "x":0, "y":3},
{"label":"Z", "x":1, "y":3},
{"label":"X", "x":2, "y":3},
{"label":"C", "x":3, "y":3},
{"label":"V", "x":4, "y":3},
{"label":"Alt", "x":5, "y":3},
{"label":"B", "x":11, "y":3},
{"label":"N", "x":12, "y":3},
{"label":"M", "x":13, "y":3},
{"label":"LEFT", "x":14, "y":3},
{"label":"DOWN", "x":15, "y":3},
{"label":"RIGHT", "x":16, "y":3},
{"label":"LOWER", "x":0, "y":4},
{"x":1, "y":4},
{"label":"Alt", "x":4, "y":4},
{"label":"Ctrl", "x":5, "y":4.25},
{"label":"SPC", "x":6, "y":3.5, "h":2},
{"label":"cmd", "x":7, "y":3.5},
{"label":"Enter", "x":7, "y":4.5},
{"label":"BS", "x":9, "y":4.5},
{"label":"DEL", "x":9, "y":3.5},
{"label":"SPC", "x":10, "y":3.5, "h":2},
{"label":"Ctrl", "x":11, "y":4.25},
{"label":"Alt", "x":12, "y":4},
{"x":15, "y":4},
{"label":"RAISE", "x":16, "y":4}
{"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": 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": 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": 10, "y": 1},
{"x": 11, "y": 1},
{"x": 12, "y": 1},
{"x": 13, "y": 1},
{"x": 14, "y": 1},
{"x": 15, "y": 1},
{"x": 16, "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": 10, "y": 2},
{"x": 11, "y": 2},
{"x": 12, "y": 2},
{"x": 13, "y": 2},
{"x": 14, "y": 2},
{"x": 15, "y": 2},
{"x": 16, "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": 11, "y": 3},
{"x": 12, "y": 3},
{"x": 13, "y": 3},
{"x": 14, "y": 3},
{"x": 15, "y": 3},
{"x": 16, "y": 3},
{"x": 0, "y": 4},
{"x": 1, "y": 4},
{"x": 4, "y": 4},
{"x": 5, "y": 4.25},
{"x": 6, "y": 3.5, "h": 2},
{"x": 7, "y": 3.5},
{"x": 7, "y": 4.5},
{"x": 9, "y": 4.5},
{"x": 9, "y": 3.5},
{"x": 10, "y": 3.5, "h": 2},
{"x": 11, "y": 4.25},
{"x": 12, "y": 4},
{"x": 15, "y": 4},
{"x": 16, "y": 4}
]
}
}

View File

@@ -17,5 +17,3 @@
#pragma once
#define RGBLIGHT_SLEEP
// place overrides here

View File

@@ -13,119 +13,91 @@
* 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_number {
_BASE = 0,
_LOWER,
_RAISE,
_ADJUST,
enum layer_names {
_BASE = 0,
_LOWER,
_RAISE,
_ADJUST
};
// Defines the keycodes used by our macros in process_record_user
enum custom_keycodes {
LOWER = SAFE_RANGE,
RAISE,
ADJUST
LOWER = SAFE_RANGE,
RAISE,
ADJUST
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_BASE] = LAYOUT(
//,---------------------------------------------------------------------.,---------------------------------------------------------------------.
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_EQL, KC_MINS, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSLS,
//|---------+---------+---------+---------+---------+---------+---------|\---------+---------+---------+---------+---------+---------+---------|
KC_GRV, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_LBRC, KC_RBRC, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_AT,
//|---------+---------+---------+---------+---------+---------+---------|\---------+---------+---------+---------+---------+---------+---------|
KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_COMM, KC_DOT, KC_H, KC_J, KC_K, KC_L, KC_UP, KC_SCLN,
//|---------+---------+---------+---------+---------+---------+---------|\---------+---------+---------+---------+---------+---------+---------|
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_SLSH, KC_B, KC_N, KC_M, KC_LEFT, KC_DOWN, KC_RGHT,
//|---------+---------+---------+---------+---------+---------+---------|\---------+---------+---------+---------+---------+---------+---------|
LOWER, XXXXXXX, KC_LALT, KC_LCTRL, KC_SPC, KC_LGUI, KC_ENT, KC_BSPC, KC_DEL, KC_SPC, KC_RCTRL, KC_RALT, XXXXXXX, RAISE
//`---------+----------/\-------+---------+---------+---------+---------/\---------+---------+---------+---------+---------/\--------+----------'
),
[_BASE] = LAYOUT(
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_EQL, KC_MINS, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSLS,
KC_GRV, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_LBRC, KC_RBRC, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_AT,
KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_COMM, KC_DOT, KC_H, KC_J, KC_K, KC_L, KC_UP, KC_SCLN,
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_SLSH, KC_B, KC_N, KC_M, KC_LEFT, KC_DOWN, KC_RGHT,
LOWER, XXXXXXX, KC_LALT, KC_LCTL, KC_SPC, KC_LGUI, KC_ENT, KC_BSPC, KC_DEL, KC_SPC, KC_RCTL, KC_RALT, XXXXXXX, RAISE
),
[_LOWER] = LAYOUT(
//,---------------------------------------------------------------------.,---------------------------------------------------------------------.
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, XXXXXXX, XXXXXXX, XXXXXXX, KC_MINS, KC_EQL, KC_JYEN, KC_LBRC, KC_RBRC,
//|---------+---------+---------+---------+---------+---------+---------|\---------+---------+---------+---------+---------+---------+---------|
_______, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_SCLN, KC_QUOT, KC_BSLS,
//|---------+---------+---------+---------+---------+---------+---------|\---------+---------+---------+---------+---------+---------+---------|
_______, KC_F11, KC_F12, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_COMM, KC_DOT, KC_SLSH, XXXXXXX,
//|---------+---------+---------+---------+---------+---------+---------|\---------+---------+---------+---------+---------+---------+---------|
_______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
//|---------+---------+---------+---------+---------+---------+---------|\---------+---------+---------+---------+---------+---------+---------|
LOWER, XXXXXXX, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, XXXXXXX, RAISE
//`---------+----------/\-------+---------+---------+---------+---------/\---------+---------+---------+---------+---------/\--------+----------'
),
[_LOWER] = LAYOUT(
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, XXXXXXX, XXXXXXX, XXXXXXX, KC_MINS, KC_EQL, KC_JYEN, KC_LBRC, KC_RBRC,
_______, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_SCLN, KC_QUOT, KC_BSLS,
_______, KC_F11, KC_F12, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_COMM, KC_DOT, KC_SLSH, XXXXXXX,
_______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
LOWER, XXXXXXX, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, XXXXXXX, RAISE
),
[_RAISE] = LAYOUT(
//,---------------------------------------------------------------------.,---------------------------------------------------------------------.
_______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
//|---------+---------+---------+---------+---------+---------+---------|\---------+---------+---------+---------+---------+---------+---------|
_______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
//|---------+---------+---------+---------+---------+---------+---------|\---------+---------+---------+---------+---------+---------+---------|
_______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
//|---------+---------+---------+---------+---------+---------+---------|\---------+---------+---------+---------+---------+---------+---------|
_______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
//|---------+---------+---------+---------+---------+---------+---------|\---------+---------+---------+---------+---------+---------+---------|
LOWER, XXXXXXX, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, XXXXXXX, RAISE
//`---------+----------/\-------+---------+---------+---------+---------/\---------+---------+---------+---------+---------/\--------+----------'
),
[_RAISE] = LAYOUT(
_______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
_______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
_______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
_______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
LOWER, XXXXXXX, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, XXXXXXX, RAISE
),
[_ADJUST] = LAYOUT(
//,---------------------------------------------------------------------.,---------------------------------------------------------------------.
_______, RGB_TOG, XXXXXXX, XXXXXXX, XXXXXXX, RGB_M_R, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RESET,
//|---------+---------+---------+---------+---------+---------+---------|\---------+---------+---------+---------+---------+---------+---------|
_______, RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, RGB_M_SN, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
//|---------+---------+---------+---------+---------+---------+---------|\---------+---------+---------+---------+---------+---------+---------|
_______, RGB_M_T, RGB_HUD, RGB_SAD, RGB_VAD, RGB_M_K, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
//|---------+---------+---------+---------+---------+---------+---------|\---------+---------+---------+---------+---------+---------+---------|
_______, RGB_M_P, XXXXXXX, XXXXXXX, XXXXXXX, RGB_M_SW, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
//|---------+---------+---------+---------+---------+---------+---------|\---------+---------+---------+---------+---------+---------+---------|
LOWER, XXXXXXX, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, XXXXXXX, RAISE
//`---------+----------/\-------+---------+---------+---------+---------/\---------+---------+---------+---------+---------/\--------+----------'
)
[_ADJUST] = LAYOUT(
_______, RGB_TOG, XXXXXXX, XXXXXXX, XXXXXXX, RGB_M_R, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RESET,
_______, RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, RGB_M_SN,XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
_______, RGB_M_T, RGB_HUD, RGB_SAD, RGB_VAD, RGB_M_K, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
_______, RGB_M_P, XXXXXXX, XXXXXXX, XXXXXXX, RGB_M_SW, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
LOWER, XXXXXXX, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, XXXXXXX, RAISE
)
};
static inline void update_tri_layer_RGB(uint8_t layer1, uint8_t layer2, uint8_t layer3) {
if (IS_LAYER_ON(layer1) && IS_LAYER_ON(layer2)) {
layer_on(layer3);
} else {
layer_off(layer3);
}
if (IS_LAYER_ON(layer1) && IS_LAYER_ON(layer2)) {
layer_on(layer3);
} else {
layer_off(layer3);
}
}
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
switch (keycode) {
case LOWER:
if (record->event.pressed) {
layer_on(_LOWER);
update_tri_layer_RGB(_LOWER, _RAISE, _ADJUST);
} else {
layer_off(_LOWER);
update_tri_layer_RGB(_LOWER, _RAISE, _ADJUST);
}
return false;
break;
case RAISE:
if (record->event.pressed) {
layer_on(_RAISE);
update_tri_layer_RGB(_LOWER, _RAISE, _ADJUST);
} else {
layer_off(_RAISE);
update_tri_layer_RGB(_LOWER, _RAISE, _ADJUST);
}
return false;
break;
case ADJUST:
if (record->event.pressed) {
layer_on(_ADJUST);
} else {
layer_off(_ADJUST);
switch (keycode) {
case LOWER:
if (record->event.pressed) {
layer_on(_LOWER);
update_tri_layer_RGB(_LOWER, _RAISE, _ADJUST);
} else {
layer_off(_LOWER);
update_tri_layer_RGB(_LOWER, _RAISE, _ADJUST);
}
return false;
case RAISE:
if (record->event.pressed) {
layer_on(_RAISE);
update_tri_layer_RGB(_LOWER, _RAISE, _ADJUST);
} else {
layer_off(_RAISE);
update_tri_layer_RGB(_LOWER, _RAISE, _ADJUST);
}
return false;
case ADJUST:
if (record->event.pressed) {
layer_on(_ADJUST);
} else {
layer_off(_ADJUST);
}
return false;
}
return false;
break;
}
return true;
return true;
}

View File

@@ -1 +1,17 @@
/* Copyright 2020 kamonanban
*
* 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 "manta60.h"

View File

@@ -18,28 +18,23 @@
#include "quantum.h"
/* This is a shortcut to help you visually see your layout.
* The first section contains all of the arguments representing the physical
* layout of the board and position of the keys.
* The second converts the arguments into a two-dimensional array which
* represents the switch matrix.
*/
#define LAYOUT( \
L00, L01, L02, L03, L04, L05, L06, R00, R01, R02, R03, R04, R05, R06, \
L10, L11, L12, L13, L14, L15, L16, R10, R11, R12, R13, R14, R15, R16, \
L20, L21, L22, L23, L24, L25, L26, R20, R21, R22, R23, R24, R25, R26, \
L30, L31, L32, L33, L34, L35, R30, R31, R32, R33, R34, R35, \
L40, L41, L42, L43, L44, L45, L46, R40, R41, R42, R43, R44, R45, R46 \
) \
{ \
{ L00, L01, L02, L03, L04, L05, L06 }, \
{ L10, L11, L12, L13, L14, L15, L16 }, \
{ L20, L21, L22, L23, L24, L25, L26 }, \
{ L30, L31, L32, L33, L34, L35, KC_NO}, \
{ L40, L41, L42, L43, L44, L45, L46 }, \
{ R06, R05, R04, R03, R02, R01, R00 }, \
{ R16, R15, R14, R13, R12, R11, R10 }, \
{ R26, R25, R24, R23, R22, R21, R20 }, \
{ R35, R34, R33, R32, R31, R30, KC_NO } , \
{ R46, R45, R44, R43, R42, R41, R40 } \
}
#define XXX KC_NO
#define LAYOUT( \
L00, L01, L02, L03, L04, L05, L06, R00, R01, R02, R03, R04, R05, R06, \
L10, L11, L12, L13, L14, L15, L16, R10, R11, R12, R13, R14, R15, R16, \
L20, L21, L22, L23, L24, L25, L26, R20, R21, R22, R23, R24, R25, R26, \
L30, L31, L32, L33, L34, L35, R30, R31, R32, R33, R34, R35, \
L40, L41, L42, L43, L44, L45, L46, R40, R41, R42, R43, R44, R45, R46 \
) { \
{ L00, L01, L02, L03, L04, L05, L06 }, \
{ L10, L11, L12, L13, L14, L15, L16 }, \
{ L20, L21, L22, L23, L24, L25, L26 }, \
{ L30, L31, L32, L33, L34, L35, XXX }, \
{ L40, L41, L42, L43, L44, L45, L46 }, \
{ R06, R05, R04, R03, R02, R01, R00 }, \
{ R16, R15, R14, R13, R12, R11, R10 }, \
{ R26, R25, R24, R23, R22, R21, R20 }, \
{ R35, R34, R33, R32, R31, R30, XXX }, \
{ R46, R45, R44, R43, R42, R41, R40 } \
}

View File

@@ -1,6 +1,6 @@
# manta60
![manta60](https://github.com/KamoNanban/Manta60/blob/master/documents/_image/manta60_1.jpg)
![manta60](https://i.imgur.com/vkNC8prl.jpg)
A split keyboard with 27 ortholinear keys and 5-7 thumb/little finger keys
@@ -12,4 +12,8 @@ Make example for this keyboard (after setting up your build environment):
make manta60:default
Flashing example for this keyboard:
make manta60: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).

View File

@@ -2,37 +2,27 @@
MCU = atmega32u4
# Bootloader selection
# Teensy halfkay
# Pro Micro caterina
# Atmel DFU atmel-dfu
# LUFA DFU lufa-dfu
# QMK DFU qmk-dfu
# ATmega32A bootloadHID
# ATmega328P USBasp
BOOTLOADER = caterina
# Build Options
# change yes to no to disable
#
BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration
BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = no # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
EXTRAKEY_ENABLE = no # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
NKRO_ENABLE = no # USB Nkey Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
MIDI_ENABLE = no # MIDI support
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
AUDIO_ENABLE = no # Audio output on port C6
FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
BLUETOOTH_ENABLE = no # Enable Bluetooth
AUDIO_ENABLE = no # Audio output
SPLIT_KEYBOARD = yes
IOS_DEVICE_ENABLE = no # connect to IOS device (iPad,iPhone)
IOS_DEVICE_ENABLE = no # connect to IOS device (iPad, iPhone)
ifeq ($(strip $(IOS_DEVICE_ENABLE)), yes)
OPT_DEFS += -DIOS_DEVICE_ENABLE

View File

@@ -99,7 +99,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
)
};
uint16_t get_tapping_term(uint16_t keycode) {
uint16_t get_tapping_term(uint16_t keycode, keyrecord_t *record) {
switch (keycode) {
case KC_SPRA:
return TAPPING_LAYER_TERM;

View File

@@ -0,0 +1,56 @@
/* Copyright 2020 Kyle McCreery
*
* 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 0x6D77 // mw = "MechWild"
#define PRODUCT_ID 0x1703
#define DEVICE_VER 0x0100
#define MANUFACTURER MechWild
#define PRODUCT Mercutio
/* key matrix size */
#define MATRIX_ROWS 7
#define MATRIX_COLS 7
/* key matrix pins */
#define MATRIX_ROW_PINS { D0, D1, D4, C3, C0, C1, C2}
#define MATRIX_COL_PINS { B0, D7, D6, D5, B1, B2, B3}
#define UNUSED_PINS
/* encoder pins */
#define ENCODERS_PAD_A { B4 }
#define ENCODERS_PAD_B { B5 }
/* encoder resolution */
#define ENCODER_RESOLUTION 2
#define TAP_CODE_DELAY 10
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
/* Set 0 if debouncing isn't needed */
#define DEBOUNCE 5
/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
#define LOCKING_SUPPORT_ENABLE
/* Locking resynchronize hack */
#define LOCKING_RESYNC_ENABLE

View File

@@ -0,0 +1,12 @@
{
"keyboard_name": "MechWild Mercutio",
"url": "mechwild.com",
"maintainer": "kylemccreery",
"width": 12,
"height": 5,
"layouts": {
"LAYOUT_all": {
"layout": [{"label":"encoder", "x":12, "y":0}, {"label":"1.5u", "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}, {"label":"1.5u", "x":11.5, "y":1, "w":1.5}, {"label":"1.75u", "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":"1.25u", "x":11.75, "y":2, "w":1.25}, {"label":"1.25u", "x":0, "y":3, "w":1.25}, {"x":1.25, "y":3}, {"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}, {"label":"1.75u", "x":11.25, "y":3, "w":1.75},{"label":"1.25u", "x":0, "y":4, "w":1.25}, {"label":"1u", "x":1.25, "y":4}, {"label":"1.25u", "x":2.25, "y":4, "w":1.25}, {"label":"2.25u", "x":3.5, "y":4, "w":2.25}, {"label":"1u", "x":5.75, "y":4}, {"label":"2.75u", "x":6.75, "y":4, "w":2.75}, {"label":"1.25u", "x":9.5, "y":4, "w":1.25}, {"label":"1u", "x":10.75, "y":4}, {"label":"1.25u", "x":11.75, "y":4, "w":1.25}]
}
}
}

View File

@@ -0,0 +1,20 @@
/* Copyright 2020 Kyle McCreery
*
* 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 custom font */
#define OLED_FONT_H "keyboards/mechwild/mercutio/lib/mercutiofont.c"

View File

@@ -0,0 +1,81 @@
/* Copyright 2020 Kyle McCreery
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include QMK_KEYBOARD_H
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = LAYOUT_all(
KC_MUTE,
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
MO(1), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_QUOT, KC_ENT,
KC_LSFT, KC_SLSH, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_RSFT,
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_RALT, MO(2), KC_RCTL ),
[1] = LAYOUT_all(
KC_TRNS,
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL,
KC_TRNS, KC_TRNS, KC_GRV, KC_BSLS, KC_TRNS, KC_TRNS, KC_TRNS, KC_LBRC, KC_RBRC, KC_SCLN, KC_TRNS, KC_QUOT,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MINS, KC_EQL, KC_SLSH, KC_UP,
KC_TRNS, KC_TRNS, KC_TRNS, KC_HOME, KC_TRNS, KC_END, KC_LEFT, KC_DOWN, KC_RIGHT ),
[2] = LAYOUT_all(
KC_TRNS,
KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_TRNS,
KC_CAPS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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(
KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS )
};
#ifdef ENCODER_ENABLE
void encoder_update_user(uint8_t index, bool clockwise) {
switch (index) {
case 0:
if (clockwise) {
tap_code(KC_VOLU);
} else {
tap_code(KC_VOLD);
}
break;
}
}
#endif
#ifdef OLED_DRIVER_ENABLE
oled_rotation_t oled_init_user(oled_rotation_t rotation) {
return OLED_ROTATION_180; // flips the display 180 degrees if offhand
}
static void render_name(void) {
static const char PROGMEM mercutio_name[] = {
0xB6, 0xB6, 0xB6, 0xB6, 0xB6, 0xB6, 0xB6, 0xB6, 0xB6, 0xB6, 0xB6, 0xB6, 0xB6, 0xB6, 0xB6, 0x95, 0xB5, 0x96, 0xD5, 0xB6, 0xB6,
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,
0xC0, 0xC1, 0xC2, 0xC3, 0xC4, 0xC5, 0xC6, 0xC7, 0xC8, 0xC9, 0xCA, 0xCB, 0xCC, 0xCD, 0xCE, 0xCF, 0xD0, 0xD1, 0xD2, 0xD3, 0xD4, 0x00
};
oled_write_P(mercutio_name, false);
}
void oled_task_user(void) {
render_name();
}
#endif

View File

@@ -0,0 +1,20 @@
/* Copyright 2020 Kyle McCreery
*
* 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 custom font */
#define OLED_FONT_H "keyboards/mechwild/mercutio/lib/mercutiofont.c"

View File

@@ -0,0 +1,81 @@
/* Copyright 2020 Kyle McCreery
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include QMK_KEYBOARD_H
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = LAYOUT_all(
KC_MUTE,
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
MO(1), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_QUOT, KC_ENT,
KC_LSFT, KC_SLSH, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_RSFT,
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_RALT, MO(2), KC_RCTL ),
[1] = LAYOUT_all(
KC_TRNS,
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL,
KC_TRNS, KC_TRNS, KC_GRV, KC_BSLS, KC_TRNS, KC_TRNS, KC_TRNS, KC_LBRC, KC_RBRC, KC_SCLN, KC_TRNS, KC_QUOT,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MINS, KC_EQL, KC_SLSH, KC_UP,
KC_TRNS, KC_TRNS, KC_TRNS, KC_HOME, KC_TRNS, KC_END, KC_LEFT, KC_DOWN, KC_RIGHT ),
[2] = LAYOUT_all(
KC_TRNS,
KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_TRNS,
KC_CAPS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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(
KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS )
};
#ifdef ENCODER_ENABLE
void encoder_update_user(uint8_t index, bool clockwise) {
switch (index) {
case 0:
if (clockwise) {
tap_code(KC_VOLU);
} else {
tap_code(KC_VOLD);
}
break;
}
}
#endif
#ifdef OLED_DRIVER_ENABLE
oled_rotation_t oled_init_user(oled_rotation_t rotation) {
return OLED_ROTATION_180; // flips the display 180 degrees if offhand
}
static void render_name(void) {
static const char PROGMEM mercutio_name[] = {
0xB6, 0xB6, 0xB6, 0xB6, 0xB6, 0xB6, 0xB6, 0xB6, 0xB6, 0xB6, 0xB6, 0xB6, 0xB6, 0xB6, 0xB6, 0x95, 0xB5, 0x96, 0xD5, 0xB6, 0xB6,
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,
0xC0, 0xC1, 0xC2, 0xC3, 0xC4, 0xC5, 0xC6, 0xC7, 0xC8, 0xC9, 0xCA, 0xCB, 0xCC, 0xCD, 0xCE, 0xCF, 0xD0, 0xD1, 0xD2, 0xD3, 0xD4, 0x00
};
oled_write_P(mercutio_name, false);
}
void oled_task_user(void) {
render_name();
}
#endif

View File

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

View File

@@ -0,0 +1,244 @@
/* Copyright 2020 Kyle McCreery
*
* 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 "progmem.h"
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, 0x7E, 0x00,
0x38, 0x54, 0x54, 0x54, 0x18, 0x00,
0x00, 0x08, 0x7E, 0x09, 0x02, 0x00,
0x18, 0x24, 0x24, 0x1C, 0x78, 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, 0x00, 0x00, 0x80,
0xC0, 0xE0, 0xF0, 0xF0, 0x30, 0x00,
0x00, 0xC0, 0x60, 0xF0, 0xF0, 0xF0,
0x30, 0x00, 0x80, 0xC0, 0x20, 0xF0,
0xF0, 0xF0, 0x20, 0x00, 0x00, 0x00,
0x00, 0x00, 0x80, 0xC0, 0xE0, 0x70,
0x30, 0x18, 0xB8, 0xF8, 0xF0, 0x00,
0x00, 0x00, 0x00, 0x00, 0xDC, 0x7E,
0x3F, 0xBE, 0xF0, 0xF0, 0xE0, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x80,
0xC0, 0xE0, 0x70, 0x10, 0x18, 0x18,
0xF8, 0xF0, 0x60, 0x00, 0x00, 0x00,
0x00, 0xC0, 0x60, 0xF0, 0xF8, 0xF8,
0x30, 0x00, 0x00, 0x00, 0x80, 0xE0,
0xF0, 0xF8, 0xF8, 0x30, 0x00, 0x00,
0x00, 0x00, 0x80, 0xE0, 0xF0, 0xFC,
0xFF, 0x3F, 0x0F, 0x01, 0x00, 0x00,
0x00, 0x80, 0xC0, 0xE0, 0xF0, 0xF8,
0x78, 0x00, 0x00, 0x00, 0x00, 0x00,
0x80, 0xC0, 0x60, 0x30, 0x90, 0x40,
0x20, 0x30, 0x70, 0xE0, 0xC0, 0x00,
0x00, 0x40, 0x40, 0x40, 0x40, 0x40,
0x40, 0x40, 0x40, 0x40, 0x40, 0x40,
0x00, 0x00, 0x00, 0xE0, 0xFE, 0xFF,
0xFE, 0xF8, 0xC0, 0x00, 0x00, 0x00,
0x00, 0x00, 0xE0, 0xFC, 0xFF, 0xFE,
0xF0, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x01, 0x3E,
0xE0, 0x80, 0x70, 0x0E, 0x01, 0x00,
0x00, 0x00, 0x00, 0x07, 0x3C, 0xE0,
0x80, 0x78, 0x07, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x18, 0x0C, 0x06, 0xC3, 0xF9,
0xFE, 0x3F, 0xC7, 0x71, 0x18, 0x06,
0xC3, 0xF0, 0x7C, 0x1F, 0xC7, 0x71,
0x18, 0x06, 0xC3, 0xF8, 0xFE, 0x3F,
0x0F, 0x01, 0x80, 0xC0, 0xF0, 0xF8,
0xFE, 0xDF, 0x47, 0x63, 0x60, 0x30,
0x38, 0x1E, 0x0F, 0x07, 0x81, 0x40,
0x20, 0x18, 0x06, 0x03, 0x81, 0xF0,
0xFC, 0x7F, 0x1F, 0x07, 0x80, 0xC0,
0xE0, 0xF8, 0xFC, 0x3E, 0x0F, 0x03,
0x01, 0x00, 0x00, 0x00, 0x00, 0x03,
0x01, 0x80, 0x60, 0x10, 0x08, 0x06,
0xE3, 0xFC, 0xFF, 0x3F, 0x07, 0x01,
0xC0, 0x30, 0x8C, 0xE3, 0xFF, 0x7F,
0x1F, 0x03, 0x80, 0xC0, 0x30, 0x18,
0x8C, 0xE3, 0xF9, 0xFF, 0x3F, 0x07,
0x01, 0x80, 0xC0, 0x30, 0x18, 0x0C,
0xC3, 0xF1, 0xFC, 0x7F, 0x0F, 0x03,
0x80, 0xC0, 0xF0, 0xFC, 0xFE, 0x3F,
0x07, 0x01, 0x00, 0x3E, 0xC1, 0x80,
0x80, 0xE0, 0xFC, 0x3F, 0x8F, 0x40,
0x40, 0xC0, 0xF0, 0xFC, 0x7E, 0x4E,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0xF8, 0xFF, 0xFF, 0x1F,
0x07, 0x1F, 0xFF, 0xFE, 0xF0, 0xC0,
0xF8, 0xFF, 0x7F, 0x0F, 0x07, 0x7F,
0xFF, 0xFE, 0xFC, 0x04, 0x04, 0x78,
0x80, 0x00, 0x00, 0x00, 0xC0, 0x38,
0x0C, 0x1C, 0x60, 0x80, 0x00, 0x00,
0x00, 0xF0, 0x0C, 0x04, 0xF4, 0x1C,
0x80, 0xC0, 0xFC, 0xE6, 0xC3, 0xC1,
0xC1, 0xC3, 0xE6, 0xFC, 0xC0, 0x80,
0x00, 0x00, 0x38, 0x3F, 0x3F, 0x1F,
0x07, 0x03, 0x00, 0x00, 0x38, 0x3E,
0x3F, 0x1F, 0x0E, 0x03, 0x00, 0x00,
0x30, 0x7F, 0x7F, 0x3F, 0x19, 0x0C,
0x06, 0x03, 0x01, 0x0F, 0x1F, 0x3F,
0x71, 0x60, 0x60, 0x70, 0x30, 0x18,
0x08, 0x04, 0x02, 0x01, 0x00, 0x00,
0x00, 0x00, 0x38, 0x7E, 0x7F, 0x3F,
0x3B, 0x18, 0x04, 0x03, 0x01, 0x00,
0x0F, 0x1F, 0x31, 0x20, 0x20, 0x20,
0x20, 0x10, 0x18, 0x08, 0x04, 0x02,
0x01, 0x00, 0x00, 0x00, 0x1C, 0x3F,
0x7F, 0x7F, 0x31, 0x18, 0x06, 0x03,
0x18, 0x3E, 0x3F, 0x3F, 0x1B, 0x08,
0x04, 0x02, 0x01, 0x00, 0x00, 0x1E,
0x3F, 0x3F, 0x3F, 0x10, 0x08, 0x04,
0x02, 0x01, 0x00, 0x00, 0x18, 0x3E,
0x3F, 0x3F, 0x19, 0x0C, 0x06, 0x03,
0x01, 0x00, 0x0F, 0x1F, 0x31, 0x60,
0x60, 0x60, 0x30, 0x18, 0x1C, 0x0F,
0x07, 0x03, 0x01, 0x01, 0x00, 0x00,
0x00, 0x18, 0x3C, 0x3C, 0x1C, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x1F, 0x1F, 0x1F, 0x07, 0x00,
0x00, 0x00, 0x00, 0x03, 0x1F, 0x1F,
0x0F, 0x01, 0x00, 0x00, 0x00, 0x00,
0x07, 0x1F, 0x1F, 0x1E, 0xF8, 0x00,
0x0F, 0x70, 0x30, 0x0E, 0xC1, 0x38,
0x07, 0x0E, 0x70, 0x83, 0x1C, 0x60,
0x1E, 0x03, 0xC0, 0x3E, 0x01, 0x00,
0x3F, 0x7F, 0xFF, 0xFF, 0xF9, 0xC0,
0xC0, 0xF9, 0xFF, 0xFF, 0x7F, 0x3F,
};

View File

@@ -0,0 +1,18 @@
/* Copyright 2020 Kyle McCreery
*
* 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 "mercutio.h"

View File

@@ -0,0 +1,40 @@
/* Copyright 2020 Kyle McCreery
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#pragma once
#include "quantum.h"
#define ___ KC_NO
#define LAYOUT_all( \
KEN, \
K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, \
K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, \
K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, \
K30, K31, K32, K34, K36, K37, K39, K3A, K3B \
) { \
{ K00, K01, K02, K03, K04, K05, K06 }, \
{ K10, K11, K12, K13, K14, K15, K16 }, \
{ K20, K21, K3B, K23, K24, K25, K26 }, \
{ K30, K32, K3A, K39, K34, K36, K37 }, \
{ ___, K1A, KEN, K0A, K09, K08, K07 }, \
{ ___, K31, K0B, K1B, K19, K18, K17 }, \
{ ___, K22, K2B, K2A, K29, K28, K27 } \
}

View File

@@ -0,0 +1,24 @@
# Mercutio
![Mercutio](https://i.imgur.com/23J9GqXl.jpg)
A through-hole 40% keyboard kit featuring an encoder and oled display.
* Keyboard Maintainer: [Kyle McCreery](https://github.com/kylemccreery)
* Hardware Supported: Mercutio v1.0
* Hardware Availability: [Mercutio on MechWild](https://mechwild.com/product/mercutio/)
Make example for this keyboard (after setting up your build environment):
make mechwild/mercutio:default
## Bootloader
Uses usbasploader, which has been preflashed on the atmega328p before being shipped to you. The usbasploader build available on [hsgw's repository](https://github.com/hsgw/USBaspLoader/tree/plaid) will work if you need to flash a new and unprepared replacement microcontroller. To flash this onto your fresh atmega328p, you will need to use the provided ISP headers and an external ISP programmer.
In order to put the board into bootloader mode you must first hold the boot button (labeled BOOT) and while holding the boot button, press the reset button (labeled RESET) and release it. Wait for another second, then release the boot button as well. The microcontroller will now be in bootloader mode if the bootloader is present and prepared correctly. Continue to flash as you normally would from this point (ie. QMK Toolbox). If you have autoflash enabled on QMK Toolbox, it will do it automatically now. Reset the board once more in order to use the new firmware (you can do this by unplugging and replugging it or by pressing and releasing the reset button.)
By default, Mercutio firmware has bootmagic enabled (lite). This means that instead of holding or pressing either of the small buttons, you are able to unplug the Mercutio, hold the top left button (tab), plug the Mercutio back in, and then release the top left button (tab). This will work the same to put the Mercutio into bootloader mode. For more information, see the [bootmagic feature page](https://beta.docs.qmk.fm/using-qmk/hardware-features/feature_bootmagic). Reset the board once more in order to use the new firmware (you can do this by unplugging and replugging it or by pressing and releasing the reset button.)
See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).

Some files were not shown because too many files have changed in this diff Show More