Compare commits

...
52 Commits
Author SHA1 Message Date
Nick Brassel 101990139f Disable VIA protocol's EEPROM reset and bootloader jump commands (#11892)
* Disable VIA protocol's EEPROM reset and bootloader jump commands, and allow for reinstation through #define.

* Removed at Wilba's suggestion.
2021-02-14 11:20:57 +11:00
Al Cutter 8af7e5ea81 Add basic ISO {Win,Mac} layouts for Durgod/K320 (#11778)
* Add default ISO Windows layout for Durgod/K320

* Duplicate default_iso to default_iso_mac

Swap the L{GUI,ALT} keys to match the mac layout, and remove the
windows key lock functionality.

* Remove windows-key lock in default_iso

* Fixup wonky macro layout inherited from ansi keymap
2021-02-13 12:05:53 -05:00
github-actions[bot]andQMK Bot 4f598ee9fb Format code according to conventions (#11879)
Co-authored-by: QMK Bot <[email protected]>
2021-02-13 10:05:17 +00:00
Ryan a716517705 Fix line endings for geminate60.[ch] (#11878) 2021-02-12 22:35:32 -05:00
c2b0bd2a0a [Keyboard] Update MOJO75 to support multi version (#11790)
* Add Z70Ultra which is a Hotsawp RGB 65% keyboard

* Update keyboards/melgeek/z70ultra/z70ultra.h

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

* Update keyboards/melgeek/z70ultra/keymaps/default/keymap.c

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

* Update keyboards/melgeek/z70ultra/keymaps/via/keymap.c

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

* Update keyboards/melgeek/z70ultra/z70ultra.c

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

* Update keyboards/melgeek/z70ultra/readme.md

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

* Update keyboards/melgeek/z70ultra/rev1/rules.mk

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

* Update keyboards/melgeek/z70ultra/z70ultra.c

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

* Update keyboards/melgeek/z70ultra/z70ultra.c

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

* Update keyboards/melgeek/z70ultra/z70ultra.c

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

* Update keyboards/melgeek/z70ultra/z70ultra.h

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

* Update readme.md

* Update info.json

update the name of layout to consistent the keyboard.

* Update keyboards/melgeek/z70ultra/z70ultra.c

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

* Update keyboards/melgeek/z70ultra/z70ultra.c

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

* Update keyboards/melgeek/z70ultra/info.json

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

* Update keyboards/melgeek/z70ultra/keymaps/default/keymap.c

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

* Update keyboards/melgeek/z70ultra/keymaps/via/keymap.c

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

* Add Z70Ultra

* Support Z70Ultra
  [Modified] info.json to support two different layouts
  [Add]      rules.mk to support default folder

* Update keyboards/melgeek/z70ultra/rev1/rules.mk

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

* Update keyboards/melgeek/z70ultra/config.h

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

* remove excessive arguments from LAYOUT_split_space

* Update keyboards/melgeek/z70ultra/info.json

Co-authored-by: James Young <[email protected]>

* Update keyboards/melgeek/z70ultra/info.json

Co-authored-by: James Young <[email protected]>

* Update keyboards/melgeek/z70ultra/keymaps/default/keymap.c

Co-authored-by: James Young <[email protected]>

* Update keyboards/melgeek/z70ultra/z70ultra.h

Co-authored-by: James Young <[email protected]>

* Update keyboards/melgeek/z70ultra/z70ultra.h

Co-authored-by: James Young <[email protected]>

* Update keyboards/melgeek/z70ultra/keymaps/via/keymap.c

Co-authored-by: James Young <[email protected]>

* Update keyboards/melgeek/z70ultra/keymaps/default/keymap.c

Co-authored-by: James Young <[email protected]>

* Update keyboards/melgeek/z70ultra/rev1/rules.mk

Co-authored-by: James Young <[email protected]>

* Update keyboards/melgeek/z70ultra/keymaps/via/keymap.c

Co-authored-by: James Young <[email protected]>

* Update keyboards/melgeek/z70ultra/keymaps/default/keymap.c

Co-authored-by: James Young <[email protected]>

* Update keyboards/melgeek/z70ultra/keymaps/via/keymap.c

Co-authored-by: James Young <[email protected]>

* Update keyboards/melgeek/z70ultra/keymaps/via/keymap.c

Co-authored-by: James Young <[email protected]>

* Use macro replace with the literal for CS & SW

* Update keyboards/melgeek/z70ultra/z70ultra.c

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

* [Keyboard]  Support MJ61 which is a 60% ANSI STD Hotswap RGB keyboard

* Update keyboards/melgeek/mj61/mj61.c

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

* Update keyboards/melgeek/mj61/mj61.c

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

* [Keyboard] MJ61 Add license header for files and the link for readme

* Update keyboards/melgeek/mj61/readme.md

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

* Update keyboards/melgeek/mj61/rev1/config.h

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

* Update keyboards/melgeek/mj61/rev1/rules.mk

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

* Update keyboards/melgeek/mj61/mj61.c

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

* Update keyboards/melgeek/mj61/mj61.c

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

* Add GPL for files

* Update keymaps/default/keymap.c

* Update keymaps/via/keymap.c

* Update keyboards/melgeek/z70ultra/z70ultra.c

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

* Update keyboards/melgeek/z70ultra/z70ultra.c

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

* [Keyboard] Update MOJO75 to support multi version and Update the LED's
ID of RGB Matrix

Co-authored-by: Ryan <[email protected]>
Co-authored-by: James Young <[email protected]>
Co-authored-by: Drashna Jaelre <[email protected]>
2021-02-12 21:34:34 -05:00
James Young 6e74abc643 [Keyboard] tunks/ergo33: define RGBLight config at kb level (#11855) 2021-02-12 16:59:10 -08:00
Carlos bf1c40d682 [Docs] Add EEP_RST keycode to "Wiping the EEPROM" section (#11830) 2021-02-12 15:56:36 -08:00
548b874a16 [Keyboard] geminate60 keyboard (#11670)
Co-authored-by: Drashna Jaelre <[email protected]>
Co-authored-by: Ryan <[email protected]>
2021-02-12 14:54:37 -08:00
Brian MarshandBrian Marsh 519032c61b Adding custom keymap for Quark keyboard (#11744)
* adding pezhore keymap

* Adding sarcasm/irony mark, unicode emoji

* removing numpad layer enum

Co-authored-by: Brian Marsh <[email protected]>
2021-02-12 15:51:23 -05:00
Stuart FongandDrashna Jaelre bedb72b0bc Add stuartfong1 Planck Layout (#11814)
* Add files via upload

* Update readme.md

* Update readme.md

* Add GPL2+ compatible license header to config.h

* Update keyboards/planck/keymaps/stuartfong1/keymap.c

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

Co-authored-by: Drashna Jaelre <[email protected]>
2021-02-12 14:15:38 -05:00
Christian Gurholt 22368ee49e Rename ki folder to kifinnsson (#11853)
In preparation for migrating keymaps to userspace
2021-02-12 13:46:27 -05:00
Timothy Beck 3f71bc8e79 added dear_vehicle_owner meme keymap to planck keyboard (#11478)
* added default as a starting point

* added readme per guidelines

* made necessary changed to keymap to follow guidelines

* changed debounce mode for more smooth usage at the cost of mem

* increased polling interval

* Revert "made necessary changed to keymap to follow guidelines"
yikes! I modified the WRONG directory. reverted.
This reverts commit 8ba3d97af538796d765c47b48537dbcf55c3dbc1.

* reverted commit that modified file in incorrect directory. modified intended file.

* added license tp config.h
2021-02-12 13:43:52 -05:00
550359a4b4 [Keyboard] Add bastyl mini keyboard (#11782)
Co-authored-by: Drashna Jaelre <[email protected]>
Co-authored-by: James Young <[email protected]>
Co-authored-by: NullSense <[email protected]>
2021-02-11 18:33:50 -08:00
bc74027f39 [Keyboard] Fix noxary Product IDs (#11771)
Co-authored-by: Drashna Jaelre <[email protected]>
Co-authored-by: Ruari <[email protected]>
2021-02-11 17:02:28 -08:00
068e11f7e2 [Keyboard] Support MJ65 - a 65% RGB Hotswap keyboard (#11764)
Co-authored-by: Ryan <[email protected]>
Co-authored-by: James Young <[email protected]>
Co-authored-by: Drashna Jaelre <[email protected]>
2021-02-11 16:56:07 -08:00
Kyle McCreery 6a5f29208e [Docs] Update feature_haptic_feedback.md (#11859)
Arduino playground link to wiring diagram no longer works. Changed the link to point to the correct Adafruit hosted diagram pdf.
2021-02-11 10:53:55 -08:00
James Young 5a73558a21 [Keymap] add noroadsleft userspace; add and update keymaps (#11686) 2021-02-10 20:17:42 +01:00
Joschua Gandert 4b2ab84c71 [Keymap] Added german_gaming keymap for hidtech/bastyl (#11446)
* Added german_gaming keymap for hidtech/bastyl

* Apply suggestions from code review

* Added missing brace
2021-02-10 11:05:20 -08:00
stanrc85 7ef4aba52c Userspace updates (#11841)
* enable LTO for smaller firmware size

* delete since this was added to userspace rules.mk

* readme updates and new images

* Add -j to compile and flash commands in userpsace

* Enable NKRO

* Enable NKRO, VIA, LTO by default

* Stanrc85-ansi readme update

* Stanrc85-alice readme

* quick RGB layer indicator fix in keymap
2021-02-10 09:21:46 -05:00
Spaceman 0aed8746be [Keyboard] Add keyboard yun65 (#11714) 2021-02-09 21:18:53 -08:00
Mike Tsao 872f656c3b [Keyboard] Add sowbug/68keys and sowbug/ansi_tkl (#11589) 2021-02-09 20:45:42 -08:00
LSChyi fb9f619d89 Play Keyboard Helen 80: fix matrix mapping (#11585) 2021-02-09 17:58:59 -08:00
Konstantin Shpits 955eb58af5 Fix VENDOR_ID for ymd67 (#11838) 2021-02-10 09:40:16 +11:00
Nicolas Schodet 7d5902752e [Keyboard] Add Splitty keyboard (#11613) 2021-02-09 09:10:54 -08:00
Jay Greco 4107856b70 Simplify NIBBLE encoder code and clean up keymaps (#11808)
* Simplify encoder code and clean up keymaps.

-Removed overly complex VIA encoder code. It wasn't adding any value and was confusing users who were trying to customize encoder functionality on VIA keymaps.
-Replaced KC_TILDE with KC_HOME in all keymaps, as KC_TILDE sends a left shift, which was confusing some folks as they tested their build.
-Move layer names to enum

* Change encoder_update_kb to encoder_update_user per PR feedback
2021-02-09 14:50:16 +00:00
Sergey Vlasov 627ceebef3 ws2812: Fix number of nops for AVR at 8 MHz (#9559)
* ws2812: Fix number of nops for AVR at 8 MHz

When trying to calculate the number of nops for AVR running at 8 MHz,
the value of `w3` is expected to be negative; however, because `F_CPU`
is defined in tmk_core/avr.mk with the `UL` suffix, the preprocessor
performs its calculations using `unsigned long`, getting a very large
positive number instead of the expected negative number; this then
results in generating code with a huge number of nops.  Fix the broken
calculations by performing a comparison before subtraction, so that the
unsigned number wraparound does not occur.

The keyboard which triggers the problem is `handwired/promethium`; the
buggy code silently compiles, but the resulting timings would be
completely wrong.

* ws2812: Clean up the code after the 8 MHz fix

Remove old code which was unsuccessfully trying to clamp negative w1, w2
and w3 values to 0, and set w1_nops, w2_nops and w3_nops directly.
2021-02-09 08:33:04 +11:00
Ryan d2f204c1e3 Fix RGBLIGHT_LIMIT_VAL typo (#11826) 2021-02-08 20:12:33 +11:00
Joel Challis 99bffc2a21 Migrate some tmk_core files to quantum (#11791)
* Migrate some tmk_core files to quantum

* Fix build errors
2021-02-07 23:16:15 +00:00
yfuku 7e82879553 via support for bat43 (#11729)
* via support for bat43

* add adjust layer for via
2021-02-07 22:52:19 +00:00
Xelus22 4d8161cff5 [Update] Allow APM32 on TrinityXTtkl (#11715)
* amp32  initial change

* fix spacing
2021-02-07 22:35:20 +00:00
Joel Challis ccc9c43161 Allow flash/compile to accept relative json paths (#11767)
* Allow flash/compile to accept relative paths

* Review suggestions

* Review comments

* Put back exists check otherwise stdin fails

* fix lint
2021-02-07 21:02:51 +00:00
fc29c7a589 Add DSP40 (#11579)
Co-authored-by: Drashna Jaelre <[email protected]>
Co-authored-by: Ryan <[email protected]>
2021-02-07 15:49:16 -05:00
Ryan 5d5cbb877d Rework I2C driver docs (#11658) 2021-02-08 07:45:59 +11:00
DannyandRyan 0355cd0f72 [Keyboard] Add The Stick keyboard (#11745)
Co-authored-by: Ryan <[email protected]>
2021-02-07 10:56:43 -08:00
moritz-john 9d1d875a95 [Docs] Update isp_flashing_guide.md (#11777)
Added wiring for USBasp and changed the order of the documentation accordingly
2021-02-07 10:48:34 -08:00
George Petri 13c562e154 [Keymap] Update keymap for keebio/nyquist (#11734) 2021-02-07 09:58:23 -08:00
Chris M c1aeec9635 [Keymap] Shadyproject/bfo9000 (#11753) 2021-02-07 09:44:59 -08:00
Juno Nguyen a4368da849 [Keymap] Update community ortholinear 4x12 keymap: junonum (#11757) 2021-02-07 09:42:25 -08:00
stanrc85 65db45c475 [Keyboard] Add my keymap for Mark65 (#11717) 2021-02-07 09:26:39 -08:00
Salicylic-acid3andDrashna Jaelre 74145dc7ae [Keyboard] Add nknl7jp keyboard (#11591)
* Add nknl7jp keyboard

A 73 keys JIS Layout split keyboard.
Salicylic-acid3

* Keymap Update

Fixed default keymap.

* Update keyboards/nknl7jp/keymaps/salicylic/keymap.c

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

* Update keyboards/nknl7jp/keymaps/salicylic/keymap.c

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

* Update keyboards/nknl7jp/keymaps/salicylic/keymap.c

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

* Update keyboards/nknl7jp/keymaps/salicylic/keymap.c

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

Co-authored-by: Drashna Jaelre <[email protected]>
2021-02-07 09:09:24 -08:00
Salicylic-acid3andDrashna Jaelre 60d76d6733 [Keyboard] Add nknl7en keyboard (#11590)
* Add nknl7en keyboard

A 70 keys ANSI Layout split keyboard.
Salicylic-acid3

* Update readme.md

The name, photo, and link were wrong, so they have been corrected.

* Update keyboards/nknl7en/keymaps/salicylic/keymap.c

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

* Update keyboards/nknl7en/keymaps/salicylic/keymap.c

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

* Update keyboards/nknl7en/keymaps/salicylic/keymap.c

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

* Update keyboards/nknl7en/keymaps/salicylic/keymap.c

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

Co-authored-by: Drashna Jaelre <[email protected]>
2021-02-07 09:06:59 -08:00
Salicylic-acid3 72b0f494e7 [Keyboard] Add ergoarrows keyboard (#11592)
A 76 keys Ergo Layout split keyboard.
Salicylic-acid3
2021-02-07 09:04:29 -08:00
2e6bd97585 [Keyboard] Add Hi-Tek AIM-65 keyboard (#11623)
* Add Hi-Tek AIM-65 keyboard

* Add bootloader selection

* Update keyboards/handwired/aim65/readme.md

Co-authored-by: Joel Challis <[email protected]>

* Update keyboards/handwired/aim65/rules.mk

Co-authored-by: Joel Challis <[email protected]>

* Update keyboard image

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

* Update keyboards/handwired/aim65/rules.mk

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

* Update keyboards/handwired/aim65/keymaps/bonnee/keymap.c

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

* Update keyboards/handwired/aim65/keymaps/default/keymap.c

Fix indentation

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

* Update keyboards/handwired/aim65/keymaps/default/keymap.c

Fix indentation

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

* Update keyboards/handwired/aim65/keymaps/bonnee/keymap.c

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

* Update keyboards/handwired/aim65/readme.md

Co-authored-by: James Young <[email protected]>

* Update keyboards/handwired/aim65/keymaps/bonnee/keymap.c

Co-authored-by: James Young <[email protected]>

* Update keyboards/handwired/aim65/keymaps/bonnee/keymap.c

Co-authored-by: James Young <[email protected]>

* Update keyboards/handwired/aim65/keymaps/default/keymap.c

Co-authored-by: James Young <[email protected]>

* Update keyboards/handwired/aim65/config.h

Co-authored-by: James Young <[email protected]>

Co-authored-by: Joel Challis <[email protected]>
Co-authored-by: Ryan <[email protected]>
Co-authored-by: Drashna Jaelre <[email protected]>
Co-authored-by: James Young <[email protected]>
2021-02-07 08:59:15 -08:00
k.bigwheelandJames Young 784a9cdca4 [Keyboard] Add earth_rover keyboard (#11405)
* Just ./util/new_keyboard.sh earth_rover

* Update readme.md

* Create key layout

* Setup config.h

* Add default keymap

* Fix pins

* Update flash command

* Write info.json

* Add reset instruction

* Change bootloader setting

* Format new C files

* Empty commit for kicking CI

* Update keyboards/earth_rover/config.h

Co-authored-by: James Young <[email protected]>

* Update keyboards/earth_rover/keymaps/default/keymap.c

Co-authored-by: James Young <[email protected]>

* Update readme.md

* Update keyboards/earth_rover/readme.md

Co-authored-by: James Young <[email protected]>

Co-authored-by: James Young <[email protected]>
2021-02-07 08:56:27 -08:00
3d01794b12 [Keyboard] Whale 75 (#11486)
* initial commit

* various fixes

* minor formatting fixes

* fixed typo in config

* switched underglow from bitbang to pwm

* fixed indicator leds not working

* improved comment syntax

* fixed matrix

* remove outdated indicator custom code

Co-authored-by: Joel Challis <[email protected]>

* add new indicator definitions

Co-authored-by: Joel Challis <[email protected]>

* removed duplicate define for underglow pin

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

* removed unneeded lines

* fixed readme to fit template

* added picture to readme

* fixed readme formatting

Co-authored-by: Joel Challis <[email protected]>
Co-authored-by: Drashna Jaelre <[email protected]>
2021-02-07 08:54:23 -08:00
Xelus22 53f17113c1 [Keyboard] VIA fix firmware sizes (#11770) 2021-02-06 13:04:01 -08:00
Felix Jen 66775a3391 Fixed pin assignment on KBD8X Hotswap by Lucid (#11807) 2021-02-07 02:53:49 +11:00
Ryan 9b874d5071 Manual formatting fix for serial_uart.c (#11806) 2021-02-06 14:15:30 +00:00
Joel Challis 0e8cef28d2 [CI] Auto Formatting - Swap from direct commit to PR (#11229)
* Swap from direct commit to PR

* Fix up
2021-02-06 12:55:50 +00:00
Atsushi Morimoto 31675c614e [Keyboard] add info.json of Sparrow62 (#11740)
* add info.json for QMK Configurator

* Apply suggestions from code review

fix space, enter and align x
2021-02-06 02:18:21 -08:00
Ryan 5ea92a9c1c Serial refactor (#11521) 2021-02-06 09:20:48 +11:00
im a can what do you think lmao?andJoel Challis 464eb7137d update lck75 json file (#11798)
* update lck75 json

* Create info.json

* wrong json file extension

* updated layout height and width in json

* Update info.json

* reverted changes from last update to json

an error was made

* Update info.json

found an extra key in the kle raw data

* Changed product ID

* Update keyboards/lck75/info.json

understood

Co-authored-by: Joel Challis <[email protected]>

Co-authored-by: Joel Challis <[email protected]>
2021-02-05 19:42:36 +00:00
342 changed files with 15517 additions and 2141 deletions

No files matched your search

+12 -6
View File
@@ -28,10 +28,16 @@ jobs:
bin/qmk pyformat bin/qmk pyformat
bin/qmk fileformat bin/qmk fileformat
- name: Commit files - name: Become QMK Bot
uses: stefanzweifel/git-auto-commit-action@v4 run: |
git config user.name 'QMK Bot'
git config user.email '[email protected]'
- name: Create Pull Request
uses: peter-evans/create-pull-request@v3
with: with:
commit_message: Format code according to conventions for $GITHUB_SHA delete-branch: true
commit_user_name: QMK Bot author: QMK Bot <[email protected]>
commit_user_email: [email protected] committer: QMK Bot <[email protected]>
commit_author: QMK Bot <[email protected]> commit-message: Format code according to conventions
title: '[CI] Format code according to conventions'
+6
View File
@@ -17,6 +17,7 @@ SERIAL_PATH := $(QUANTUM_PATH)/serial_link
QUANTUM_SRC += \ QUANTUM_SRC += \
$(QUANTUM_DIR)/quantum.c \ $(QUANTUM_DIR)/quantum.c \
$(QUANTUM_DIR)/bitwise.c \
$(QUANTUM_DIR)/led.c \ $(QUANTUM_DIR)/led.c \
$(QUANTUM_DIR)/keymap_common.c \ $(QUANTUM_DIR)/keymap_common.c \
$(QUANTUM_DIR)/keycode_config.c $(QUANTUM_DIR)/keycode_config.c
@@ -36,6 +37,11 @@ ifeq ($(strip $(API_SYSEX_ENABLE)), yes)
SRC += $(QUANTUM_DIR)/api.c SRC += $(QUANTUM_DIR)/api.c
endif endif
ifeq ($(strip $(COMMAND_ENABLE)), yes)
SRC += $(QUANTUM_DIR)/command.c
OPT_DEFS += -DCOMMAND_ENABLE
endif
ifeq ($(strip $(AUDIO_ENABLE)), yes) ifeq ($(strip $(AUDIO_ENABLE)), yes)
OPT_DEFS += -DAUDIO_ENABLE OPT_DEFS += -DAUDIO_ENABLE
MUSIC_ENABLE = yes MUSIC_ENABLE = yes
+1 -1
View File
@@ -39,7 +39,7 @@ Not all keycodes below will work depending on which haptic mechanism you have ch
First you will need a build a circuit to drive the solenoid through a mosfet as most MCU will not be able to provide the current needed to drive the coil in the solenoid. First you will need a build a circuit to drive the solenoid through a mosfet as most MCU will not be able to provide the current needed to drive the coil in the solenoid.
[Wiring diagram provided by Adafruit](https://playground.arduino.cc/uploads/Learning/solenoid_driver.pdf) [Wiring diagram provided by Adafruit](https://cdn-shop.adafruit.com/product-files/412/solenoid_driver.pdf)
| Settings | Default | Description | | Settings | Default | Description |
+213 -109
View File
@@ -2,132 +2,236 @@
The I2C Master drivers used in QMK have a set of common functions to allow portability between MCUs. The I2C Master drivers used in QMK have a set of common functions to allow portability between MCUs.
## An important note on I2C Addresses :id=note-on-i2c-addresses ## I2C Addressing :id=note-on-i2c-addresses
All of the addresses expected by this driver should be pushed to the upper 7 bits of the address byte. Setting All of the addresses expected by this driver should be pushed to the upper 7 bits of the address byte. Setting
the lower bit (indicating read/write) will be done by the respective functions. Almost all I2C addresses listed the lower bit (indicating read/write) will be done by the respective functions. Almost all I2C addresses listed
on datasheets and the internet will be represented as 7 bits occupying the lower 7 bits and will need to be on datasheets and the internet will be represented as 7 bits occupying the lower 7 bits and will need to be
shifted to the left (more significant) by one bit. This is easy to do via the bitwise shift operator `<< 1`. shifted to the left (more significant) by one bit. This is easy to do via the bitwise shift operator `<< 1`.
You can either do this on each call to the functions below, or once in your definition of the address. For example if your device has an address of `0x18`: You can either do this on each call to the functions below, or once in your definition of the address. For example, if your device has an address of `0x18`:
`#define MY_I2C_ADDRESS (0x18 << 1)` ```c
#define MY_I2C_ADDRESS (0x18 << 1)
```
See https://www.robot-electronics.co.uk/i2c-tutorial for more information about I2C addressing and other technical details. See https://www.robot-electronics.co.uk/i2c-tutorial for more information about I2C addressing and other technical details.
## Available functions :id=available-functions ## AVR Configuration :id=avr-configuration
|Function |Description | The following defines can be used to configure the I2C master driver:
|------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|`void i2c_init(void);` |Initializes the I2C driver. This function should be called once before any transaction is initiated. |
|`i2c_status_t i2c_start(uint8_t address, uint16_t timeout);` |Starts an I2C transaction. Address is the 7-bit slave address without the direction bit. |
|`i2c_status_t i2c_transmit(uint8_t address, uint8_t* data, uint16_t length, uint16_t timeout);` |Transmit data over I2C. Address is the 7-bit slave address without the direction. Returns status of transaction. |
|`i2c_status_t i2c_receive(uint8_t address, uint8_t* data, uint16_t length, uint16_t timeout);` |Receive data over I2C. Address is the 7-bit slave address without the direction. Saves number of bytes specified by `length` in `data` array. Returns status of transaction. |
|`i2c_status_t i2c_writeReg(uint8_t devaddr, uint8_t regaddr, uint8_t* data, uint16_t length, uint16_t timeout);` |Same as the `i2c_transmit` function but `regaddr` sets where in the slave the data will be written. |
|`i2c_status_t i2c_readReg(uint8_t devaddr, uint8_t regaddr, uint8_t* data, uint16_t length, uint16_t timeout);` |Same as the `i2c_receive` function but `regaddr` sets from where in the slave the data will be read. |
|`i2c_status_t i2c_stop(void);` |Ends an I2C transaction. |
### Function Return :id=function-return |`config.h` Override|Description |Default |
|-------------------|---------------------|--------|
|`F_SCL` |Clock frequency in Hz|`400000`|
All the above functions, except `void i2c_init(void);` return the following truth table: No further setup is required - just connect the `SDA` and `SCL` pins of your I2C devices to the matching pins on the MCU:
|Return Constant |Value|Description | |MCU |`SCL`|`SDA`|
|--------------------|-----|--------------------------------| |------------------|-----|-----|
|`I2C_STATUS_SUCCESS`|0 |Operation executed successfully.| |ATmega16/32U4 |`D0` |`D1` |
|`I2C_STATUS_ERROR` |-1 |Operation failed. | |AT90USB64/128 |`D0` |`D1` |
|`I2C_STATUS_TIMEOUT`|-2 |Operation timed out. | |ATmega32A |`C0` |`C1` |
|ATmega328/P |`C5` |`C4` |
?> The ATmega16/32U2 does not possess I2C functionality, and so cannot use this driver.
## AVR :id=avr ## ChibiOS/ARM Configuration :id=arm-configuration
### Configuration :id=avr-configuration You'll need to determine which pins can be used for I2C -- a an example, STM32 parts generally have multiple I2C peripherals, labeled I2C1, I2C2, I2C3 etc.
The following defines can be used to configure the I2C master driver. To enable I2C, modify your board's `halconf.h` to enable I2C:
|Variable |Description |Default|
|------------------|---------------------------------------------------|-------|
|`F_SCL` |Clock frequency in Hz |400KHz |
AVRs usually have set GPIO which turn into I2C pins, therefore no further configuration is required.
## ARM :id=arm
For ARM the Chibios I2C HAL driver is under the hood.
This section assumes an STM32 MCU.
### Configuration :id=arm-configuration
The configuration for ARM MCUs can be quite complex as often there are multiple I2C drivers which can be assigned to a variety of ports.
Firstly the `mcuconf.h` file must be setup to enable the necessary hardware drivers.
|Variable |Description |Default|
|------------------------------|------------------------------------------------------------------------------------|-------|
|`#STM32_I2C_USE_XXX` |Enable/Disable the hardware driver XXX (each driver should be explicitly listed) |FALSE |
|`#STM32_I2C_BUSY_TIMEOUT` |Time in ms until the I2C command is aborted if no response is received |50 |
|`#STM32_I2C_XXX_IRQ_PRIORITY` |Interrupt priority for hardware driver XXX (THIS IS AN EXPERT SETTING) |10 |
|`#STM32_I2C_USE_DMA` |Enable/Disable the ability of the MCU to offload the data transfer to the DMA unit |TRUE |
|`#STM32_I2C_XXX_DMA_PRIORITY` |Priority of DMA unit for hardware driver XXX (THIS IS AN EXPERT SETTING) |1 |
Secondly, in the `halconf.h` file, `#define HAL_USE_I2C` must be set to `TRUE`. This allows ChibiOS to load its I2C driver.
Lastly, we need to assign the correct GPIO pins depending on the I2C hardware driver we want to use.
By default the I2C1 hardware driver is assumed to be used. If another hardware driver is used, `#define I2C_DRIVER I2CDX` should be added to the `config.h` file with X being the number of hardware driver used. For example is I2C3 is enabled, the `config.h` file should contain `#define I2C_DRIVER I2CD3`. This aligns the QMK I2C driver with the Chibios I2C driver.
STM32 MCUs allows a variety of pins to be configured as I2C pins depending on the hardware driver used. By default B6 and B7 are set to I2C. You can use these defines to set your i2c pins:
| Variable | Description | Default |
|--------------------------|----------------------------------------------------------------------------------------------|---------|
| `I2C1_SCL_BANK` | The bank of pins (`GPIOA`, `GPIOB`, `GPIOC`) to use for SCL | `GPIOB` |
| `I2C1_SDA_BANK` | The bank of pins (`GPIOA`, `GPIOB`, `GPIOC`) to use for SDA | `GPIOB` |
| `I2C1_SCL` | The pin number for the SCL pin (0-15) | `6` |
| `I2C1_SDA` | The pin number for the SDA pin (0-15) | `7` |
| `I2C1_BANK` (deprecated) | The bank of pins (`GPIOA`, `GPIOB`, `GPIOC`), superceded by `I2C1_SCL_BANK`, `I2C1_SDA_BANK` | `GPIOB` |
The ChibiOS I2C driver configuration depends on STM32 MCU:
STM32F1xx, STM32F2xx, STM32F4xx, STM32L0xx and STM32L1xx use I2Cv1;
STM32F0xx, STM32F3xx, STM32F7xx and STM32L4xx use I2Cv2;
#### I2Cv1 :id=i2cv1
STM32 MCUs allow for different clock and duty parameters when configuring I2Cv1. These can be modified using the following parameters, using <https://www.playembedded.org/blog/stm32-i2c-chibios/#I2Cv1_configuration_structure> as a reference:
| Variable | Default |
|--------------------|------------------|
| `I2C1_OPMODE` | `OPMODE_I2C` |
| `I2C1_CLOCK_SPEED` | `100000` |
| `I2C1_DUTY_CYCLE` | `STD_DUTY_CYCLE` |
#### I2Cv2 :id=i2cv2
STM32 MCUs allow for different timing parameters when configuring I2Cv2. These can be modified using the following parameters, using <https://www.st.com/en/embedded-software/stsw-stm32126.html> as a reference:
| Variable | Default |
|-----------------------|---------|
| `I2C1_TIMINGR_PRESC` | `15U` |
| `I2C1_TIMINGR_SCLDEL` | `4U` |
| `I2C1_TIMINGR_SDADEL` | `2U` |
| `I2C1_TIMINGR_SCLH` | `15U` |
| `I2C1_TIMINGR_SCLL` | `21U` |
STM32 MCUs allow for different "alternate function" modes when configuring GPIO pins. These are required to switch the pins used to I2Cv2 mode. See the respective datasheet for the appropriate values for your MCU.
| Variable | Default |
|---------------------|---------|
| `I2C1_SCL_PAL_MODE` | `4` |
| `I2C1_SDA_PAL_MODE` | `4` |
#### Other :id=other
You can also overload the `void i2c_init(void)` function, which has a weak attribute. If you do this the configuration variables above will not be used. Please consult the datasheet of your MCU for the available GPIO configurations. The following is an example initialization function:
```c ```c
void i2c_init(void) #define HAL_USE_I2C TRUE
{ ```
setPinInput(B6); // Try releasing special pins for a short time
setPinInput(B7);
wait_ms(10); // Wait for the release to happen
palSetPadMode(GPIOB, 6, PAL_MODE_ALTERNATE(4) | PAL_STM32_OTYPE_OPENDRAIN | PAL_STM32_PUPDR_PULLUP); // Set B6 to I2C function Then, modify your board's `mcuconf.h` to enable the peripheral you've chosen, for example:
palSetPadMode(GPIOB, 7, PAL_MODE_ALTERNATE(4) | PAL_STM32_OTYPE_OPENDRAIN | PAL_STM32_PUPDR_PULLUP); // Set B7 to I2C function
```c
#undef STM32_I2C_USE_I2C2
#define STM32_I2C_USE_I2C2 TRUE
```
|`mcuconf.h` Setting |Description |Default|
|----------------------------|----------------------------------------------------------------------------------|-------|
|`STM32_I2C_BUSY_TIMEOUT` |Time in milliseconds until the I2C command is aborted if no response is received |`50` |
|`STM32_I2C_XXX_IRQ_PRIORITY`|Interrupt priority for hardware driver XXX (THIS IS AN EXPERT SETTING) |`10` |
|`STM32_I2C_USE_DMA` |Enable/Disable the ability of the MCU to offload the data transfer to the DMA unit|`TRUE` |
|`STM32_I2C_XXX_DMA_PRIORITY`|Priority of DMA unit for hardware driver XXX (THIS IS AN EXPERT SETTING) |`1` |
Configuration-wise, you'll need to set up the peripheral as per your MCU's datasheet -- the defaults match the pins for a Proton-C, i.e. STM32F303.
|`config.h` Overrride |Description |Default|
|------------------------|-------------------------------------------------------------------------------------------|-------|
|`I2C_DRIVER` |I2C peripheral to use - I2C1 -> `I2CD1`, I2C2 -> `I2CD2` etc. |`I2CD1`|
|`I2C1_BANK` (deprecated)|The bank of pins (`GPIOA`, `GPIOB`, `GPIOC`), superseded by `I2C1_SCL_BANK`/`I2C1_SDA_BANK`|`GPIOB`|
|`I2C1_SCL_BANK` |The bank of pins (`GPIOA`, `GPIOB`, `GPIOC`) to use for SCL |`GPIOB`|
|`I2C1_SCL` |The pin number for SCL (0-15) |`6` |
|`I2C1_SCL_PAL_MODE` |The alternate function mode for SCL |`4` |
|`I2C1_SDA_BANK` |The bank of pins (`GPIOA`, `GPIOB`, `GPIOC`) to use for SDA |`GPIOB`|
|`I2C1_SDA` |The pin number for SDA (0-15) |`7` |
|`I2C1_SDA_PAL_MODE` |The alternate function mode for SDA |`4` |
The following configuration values depend on the specific MCU in use.
### I2Cv1 :id=i2cv1
* STM32F1xx
* STM32F2xx
* STM32F4xx
* STM32L0xx
* STM32L1xx
See [this page](https://www.playembedded.org/blog/stm32-i2c-chibios/#7_I2Cv1_configuration_structure) for the I2Cv1 configuration structure.
|`config.h` Override|Default |
|-------------------|----------------|
|`I2C1_OPMODE` |`OPMODE_I2C` |
|`I2C1_CLOCK_SPEED` |`100000` |
|`I2C1_DUTY_CYCLE` |`STD_DUTY_CYCLE`|
### I2Cv2 :id=i2cv2
* STM32F0xx
* STM32F3xx
* STM32F7xx
* STM32L4xx
See [this page](https://www.playembedded.org/blog/stm32-i2c-chibios/#8_I2Cv2_I2Cv3_configuration_structure) for the I2Cv2 configuration structure.
|`config.h` Override |Default|
|---------------------|-------|
|`I2C1_TIMINGR_PRESC` |`0U` |
|`I2C1_TIMINGR_SCLDEL`|`7U` |
|`I2C1_TIMINGR_SDADEL`|`0U` |
|`I2C1_TIMINGR_SCLH` |`38U` |
|`I2C1_TIMINGR_SCLL` |`129U` |
## Functions :id=functions
### `void i2c_init(void)`
Initialize the I2C driver. This function must be called only once, before any of the below functions can be called.
This function is weakly defined, meaning it can be overridden if necessary for your particular use case:
```c
void i2c_init(void) {
setPinInput(B6); // Try releasing special pins for a short time
setPinInput(B7);
wait_ms(10); // Wait for the release to happen
palSetPadMode(GPIOB, 6, PAL_MODE_ALTERNATE(4) | PAL_STM32_OTYPE_OPENDRAIN | PAL_STM32_PUPDR_PULLUP); // Set B6 to I2C function
palSetPadMode(GPIOB, 7, PAL_MODE_ALTERNATE(4) | PAL_STM32_OTYPE_OPENDRAIN | PAL_STM32_PUPDR_PULLUP); // Set B7 to I2C function
} }
``` ```
---
### `i2c_status_t i2c_start(uint8_t address, uint16_t timeout)`
Start an I2C transaction.
#### Arguments
- `uint8_t address`
The 7-bit I2C address of the device (ie. without the read/write bit - this will be set automatically).
- `uint16_t timeout`
The time in milliseconds to wait for a response from the target device.
#### Return Value
`I2C_STATUS_TIMEOUT` if the timeout period elapses, `I2C_STATUS_ERROR` if some other error occurs, otherwise `I2C_STATUS_SUCCESS`.
---
### `i2c_status_t i2c_transmit(uint8_t address, uint8_t *data, uint16_t length, uint16_t timeout)`
Send multiple bytes to the selected I2C device.
#### Arguments
- `uint8_t address`
The 7-bit I2C address of the device.
- `uint8_t *data`
A pointer to the data to transmit.
- `uint16_t length`
The number of bytes to write. Take care not to overrun the length of `data`.
- `uint16_t timeout`
The time in milliseconds to wait for a response from the target device.
#### Return Value
`I2C_STATUS_TIMEOUT` if the timeout period elapses, `I2C_STATUS_ERROR` if some other error occurs, otherwise `I2C_STATUS_SUCCESS`.
---
### `i2c_status_t i2c_receive(uint8_t address, uint8_t* data, uint16_t length, uint16_t timeout)`
Receive multiple bytes from the selected SPI device.
#### Arguments
- `uint8_t address`
The 7-bit I2C address of the device.
- `uint8_t *data`
A pointer to the buffer to read into.
- `uint16_t length`
The number of bytes to read. Take care not to overrun the length of `data`.
- `uint16_t timeout`
The time in milliseconds to wait for a response from the target device.
#### Return Value
`I2C_STATUS_TIMEOUT` if the timeout period elapses, `I2C_STATUS_ERROR` if some other error occurs, otherwise `I2C_STATUS_SUCCESS`.
---
### `i2c_status_t i2c_writeReg(uint8_t devaddr, uint8_t regaddr, uint8_t* data, uint16_t length, uint16_t timeout)`
Writes to a register on the I2C device.
#### Arguments
- `uint8_t devaddr`
The 7-bit I2C address of the device.
- `uint8_t regaddr`
The register address to write to.
- `uint8_t *data`
A pointer to the data to transmit.
- `uint16_t length`
The number of bytes to write. Take care not to overrun the length of `data`.
- `uint16_t timeout`
The time in milliseconds to wait for a response from the target device.
#### Return Value
`I2C_STATUS_TIMEOUT` if the timeout period elapses, `I2C_STATUS_ERROR` if some other error occurs, otherwise `I2C_STATUS_SUCCESS`.
---
### `i2c_status_t i2c_readReg(uint8_t devaddr, uint8_t regaddr, uint8_t* data, uint16_t length, uint16_t timeout)`
Reads from a register on the I2C device.
#### Arguments
- `uint8_t devaddr`
The 7-bit I2C address of the device.
- `uint8_t regaddr`
The register address to read from.
- `uint16_t length`
The number of bytes to read. Take care not to overrun the length of `data`.
- `uint16_t timeout`
The time in milliseconds to wait for a response from the target device.
#### Return Value
`I2C_STATUS_TIMEOUT` if the timeout period elapses, `I2C_STATUS_ERROR` if some other error occurs, otherwise `I2C_STATUS_SUCCESS`.
---
### `i2c_status_t i2c_stop(void)`
Stop the current I2C transaction.
+10
View File
@@ -45,6 +45,7 @@ You'll need one of the following to actually perform the ISP flashing (followed
* [SparkFun PocketAVR](https://www.sparkfun.com/products/9825) - (USB Tiny) * [SparkFun PocketAVR](https://www.sparkfun.com/products/9825) - (USB Tiny)
* [USBtinyISP AVR Programmer Kit](https://www.adafruit.com/product/46) - (USB Tiny) * [USBtinyISP AVR Programmer Kit](https://www.adafruit.com/product/46) - (USB Tiny)
* [USBasp](https://www.fischl.de/usbasp/) - (usbasp)
* [Teensy 2.0](https://www.pjrc.com/store/teensy.html) - (avrisp) * [Teensy 2.0](https://www.pjrc.com/store/teensy.html) - (avrisp)
* [Pro Micro](https://www.sparkfun.com/products/12640) - (avrisp) * [Pro Micro](https://www.sparkfun.com/products/12640) - (avrisp)
* [Bus Pirate](https://www.adafruit.com/product/237) - (buspirate) * [Bus Pirate](https://www.adafruit.com/product/237) - (buspirate)
@@ -82,6 +83,15 @@ This is pretty straight-forward - we'll be connecting like-things to like-things
PocketAVR VCC <-> Keyboard VCC PocketAVR VCC <-> Keyboard VCC
PocketAVR GND <-> Keyboard GND PocketAVR GND <-> Keyboard GND
### USBasp
USBasp RST <-> Keyboard RESET
USBasp SCLK <-> Keyboard B1 (SCLK)
USBasp MOSI <-> Keyboard B2 (MOSI)
USBasp MISO <-> Keyboard B3 (MISO)
USBasp VCC <-> Keyboard VCC
USBasp GND <-> Keyboard GND
### Teensy 2.0 ### Teensy 2.0
Teensy B0 <-> Keyboard RESET Teensy B0 <-> Keyboard RESET
+1 -1
View File
@@ -93,7 +93,7 @@ And to do so, add `reset_keyboard()` to your function or macro, and this will re
## Wiping the EEPROM (Persistent Storage) ## Wiping the EEPROM (Persistent Storage)
If you're having issues with Audio, RGB Underglow, backlighting or keys acting weird, then you can reset the EEPROM (persistent setting storage). Bootmagic is one way to do this, but if that isn't enabled, then you can use a custom macro to do so. If you're having issues with Audio, RGB Underglow, backlighting or keys acting weird, then you can reset the EEPROM (persistent setting storage). To force an EEPROM reset, use the [`EEP_RST` keycode](quantum_keycodes.md) or [Bootmagic](feature_bootmagic.md) functionality. If neither of those are an option, then you can use a custom macro to do so.
To wipe the EEPROM, run `eeconfig_init()` from your function or macro to reset most of the settings to default. To wipe the EEPROM, run `eeconfig_init()` from your function or macro to reset most of the settings to default.
+27 -15
View File
@@ -8,7 +8,7 @@ No special setup is required - just connect the `SS`, `SCK`, `MOSI` and `MISO` p
|MCU |`SS`|`SCK`|`MOSI`|`MISO`| |MCU |`SS`|`SCK`|`MOSI`|`MISO`|
|---------------|----|-----|------|------| |---------------|----|-----|------|------|
|ATMega16/32U2/4|`B0`|`B1` |`B2` |`B3` | |ATmega16/32U2/4|`B0`|`B1` |`B2` |`B3` |
|AT90USB64/128 |`B0`|`B1` |`B2` |`B3` | |AT90USB64/128 |`B0`|`B1` |`B2` |`B3` |
|ATmega32A |`B4`|`B7` |`B5` |`B6` | |ATmega32A |`B4`|`B7` |`B5` |`B6` |
|ATmega328/P |`B2`|`B5` |`B3` |`B4` | |ATmega328/P |`B2`|`B5` |`B3` |`B4` |
@@ -20,22 +20,34 @@ You may use more than one slave select pin, not just the `SS` pin. This is usefu
You'll need to determine which pins can be used for SPI -- as an example, STM32 parts generally have multiple SPI peripherals, labeled SPI1, SPI2, SPI3 etc. You'll need to determine which pins can be used for SPI -- as an example, STM32 parts generally have multiple SPI peripherals, labeled SPI1, SPI2, SPI3 etc.
To enable SPI, modify your board's `halconf.h` to enable SPI - both `HAL_USE_SPI` and `SPI_USE_WAIT` should be `TRUE`, and `SPI_SELECT_MODE` should be `SPI_SELECT_MODE_PAD`. To enable SPI, modify your board's `halconf.h` to enable SPI:
Then, modify your board's `mcuconf.h` to enable the SPI peripheral you've chosen -- in the case of using SPI2, modify `STM32_SPI_USE_SPI2` to be `TRUE`.
As per the AVR configuration, you may select any other standard GPIO as a slave select pin, and can be supplied to `spi_start()`. ```c
#define HAL_USE_SPI TRUE
#define SPI_USE_WAIT TRUE
#define SPI_SELECT_MODE SPI_SELECT_MODE_PAD
```
Then, modify your board's `mcuconf.h` to enable the peripheral you've chosen, for example:
```c
#undef STM32_SPI_USE_SPI2
#define STM32_SPI_USE_SPI2 TRUE
```
Configuration-wise, you'll need to set up the peripheral as per your MCU's datasheet -- the defaults match the pins for a Proton-C, i.e. STM32F303. Configuration-wise, you'll need to set up the peripheral as per your MCU's datasheet -- the defaults match the pins for a Proton-C, i.e. STM32F303.
`config.h` override | Description | Default Value |`config.h` Override|Description |Default|
----------------------------|---------------------------------------------------------------|-------------- |-------------------|-------------------------------------------------------------|-------|
`#define SPI_DRIVER` | SPI peripheral to use - SPI1 => `SPID1`, SPI2 => `SPID2` etc. | `SPID2` |`SPI_DRIVER` |SPI peripheral to use - SPI1 -> `SPID1`, SPI2 -> `SPID2` etc.|`SPID2`|
`#define SPI_SCK_PIN` | The pin to use for the SCK | `B13` |`SPI_SCK_PIN` |The pin to use for SCK |`B13` |
`#define SPI_SCK_PAL_MODE` | The alternate function mode for the SCK pin | `5` |`SPI_SCK_PAL_MODE` |The alternate function mode for SCK |`5` |
`#define SPI_MOSI_PIN` | The pin to use for the MOSI | `B15` |`SPI_MOSI_PIN` |The pin to use for MOSI |`B15` |
`#define SPI_MOSI_PAL_MODE` | The alternate function mode for the MOSI pin | `5` |`SPI_MOSI_PAL_MODE`|The alternate function mode for MOSI |`5` |
`#define SPI_MISO_PIN` | The pin to use for the MISO | `B14` |`SPI_MISO_PIN` |The pin to use for MISO |`B14` |
`#define SPI_MISO_PAL_MODE` | The alternate function mode for the MISO pin | `5` |`SPI_MISO_PAL_MODE`|The alternate function mode for MISO |`5` |
As per the AVR configuration, you may choose any other standard GPIO as a slave select pin, which should be supplied to `spi_start()`.
## Functions ## Functions
@@ -112,7 +124,7 @@ Send multiple bytes to the selected SPI device.
#### Return Value #### Return Value
`SPI_STATUS_TIMEOUT` if the timeout period elapses, `SPI_STATUS_SUCCESS` on success, or `SPI_STATUS_ERROR` otherwise. `SPI_STATUS_TIMEOUT` if the timeout period elapses, `SPI_STATUS_ERROR` if some other error occurs, otherwise `SPI_STATUS_SUCCESS`.
--- ---
@@ -129,7 +141,7 @@ Receive multiple bytes from the selected SPI device.
#### Return Value #### Return Value
`SPI_STATUS_TIMEOUT` if the internal transmission timeout period elapses, `SPI_STATUS_SUCCESS` on success, or `SPI_STATUS_ERROR` otherwise. `SPI_STATUS_TIMEOUT` if the timeout period elapses, `SPI_STATUS_ERROR` if some other error occurs, otherwise `SPI_STATUS_SUCCESS`.
--- ---
+17 -21
View File
@@ -67,19 +67,27 @@ void ws2812_setleds(LED_TYPE *ledarray, uint16_t number_of_leds) {
#define w_onecycles (((F_CPU / 1000) * w_onepulse + 500000) / 1000000) #define w_onecycles (((F_CPU / 1000) * w_onepulse + 500000) / 1000000)
#define w_totalcycles (((F_CPU / 1000) * w_totalperiod + 500000) / 1000000) #define w_totalcycles (((F_CPU / 1000) * w_totalperiod + 500000) / 1000000)
// w1 - nops between rising edge and falling edge - low // w1_nops - nops between rising edge and falling edge - low
#define w1 (w_zerocycles - w_fixedlow) #if w_zerocycles >= w_fixedlow
// w2 nops between fe low and fe high # define w1_nops (w_zerocycles - w_fixedlow)
#define w2 (w_onecycles - w_fixedhigh - w1)
// w3 nops to complete loop
#define w3 (w_totalcycles - w_fixedtotal - w1 - w2)
#if w1 > 0
# define w1_nops w1
#else #else
# define w1_nops 0 # define w1_nops 0
#endif #endif
// w2_nops - nops between fe low and fe high
#if w_onecycles >= (w_fixedhigh + w1_nops)
# define w2_nops (w_onecycles - w_fixedhigh - w1_nops)
#else
# define w2_nops 0
#endif
// w3_nops - nops to complete loop
#if w_totalcycles >= (w_fixedtotal + w1_nops + w2_nops)
# define w3_nops (w_totalcycles - w_fixedtotal - w1_nops - w2_nops)
#else
# define w3_nops 0
#endif
// The only critical timing parameter is the minimum pulse length of the "0" // The only critical timing parameter is the minimum pulse length of the "0"
// Warn or throw error if this timing can not be met with current F_CPU settings. // Warn or throw error if this timing can not be met with current F_CPU settings.
#define w_lowtime ((w1_nops + w_fixedlow) * 1000000) / (F_CPU / 1000) #define w_lowtime ((w1_nops + w_fixedlow) * 1000000) / (F_CPU / 1000)
@@ -90,18 +98,6 @@ void ws2812_setleds(LED_TYPE *ledarray, uint16_t number_of_leds) {
# warning "Please consider a higher clockspeed, if possible" # warning "Please consider a higher clockspeed, if possible"
#endif #endif
#if w2 > 0
# define w2_nops w2
#else
# define w2_nops 0
#endif
#if w3 > 0
# define w3_nops w3
#else
# define w3_nops 0
#endif
#define w_nop1 "nop \n\t" #define w_nop1 "nop \n\t"
#define w_nop2 "rjmp .+0 \n\t" #define w_nop2 "rjmp .+0 \n\t"
#define w_nop4 w_nop2 w_nop2 #define w_nop4 w_nop2 w_nop2
-22
View File
@@ -54,25 +54,3 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
/* Enable GNAP matrix serial output */ /* Enable GNAP matrix serial output */
#define GNAP_ENABLE #define GNAP_ENABLE
/* USART configuration */
#ifdef __AVR_ATmega32U4__
# define SERIAL_UART_BAUD 9600
# define SERIAL_UART_DATA UDR1
# define SERIAL_UART_UBRR (F_CPU / (16UL * SERIAL_UART_BAUD) - 1)
# define SERIAL_UART_RXD_VECT USART1_RX_vect
# define SERIAL_UART_TXD_READY (UCSR1A & _BV(UDRE1))
# define SERIAL_UART_INIT() do { \
/* baud rate */ \
UBRR1L = SERIAL_UART_UBRR; \
/* baud rate */ \
UBRR1H = SERIAL_UART_UBRR >> 8; \
/* enable TX */ \
UCSR1B = _BV(TXEN1); \
/* 8-bit data */ \
UCSR1C = _BV(UCSZ11) | _BV(UCSZ10); \
sei(); \
} while(0)
# else
# error "USART configuration is needed."
#endif
-3
View File
@@ -1,3 +0,0 @@
#pragma once
#include "common/matrix.h"
+1 -1
View File
@@ -1,6 +1,6 @@
#pragma once #pragma once
#include "common/matrix.h" #include "matrix.h"
#define ROWS_PER_HAND (MATRIX_ROWS/2) #define ROWS_PER_HAND (MATRIX_ROWS/2)
+1 -1
View File
@@ -53,7 +53,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define RGB_DI_PIN B15 #define RGB_DI_PIN B15
#define RGBLED_NUM 68 #define RGBLED_NUM 68
#define RGBLIGT_LIMIT_VAL 200 #define RGBLIGHT_LIMIT_VAL 200
#define RGBLIGHT_SLEEP #define RGBLIGHT_SLEEP
#define RGBLIGHT_ANIMATIONS #define RGBLIGHT_ANIMATIONS
@@ -0,0 +1,18 @@
/*
* Copyright 2021 Quentin LEBASTARD <[email protected]>
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include "bastylmini.h"
@@ -0,0 +1,37 @@
/*
* Copyright 2021 Quentin LEBASTARD <[email protected]>
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#pragma once
#include "quantum.h"
#define LAYOUT_split_3x6_3( \
k00, k01, k02, k03, k04, k05, k45, k44, k43, k42, k41, k40, \
k10, k11, k12, k13, k14, k15, k55, k54, k53, k52, k51, k50, \
k20, k21, k22, k23, k24, k25, k65, k64, k63, k62, k61, k60, \
k33, k34, k31, k71, k74, k73 \
)\
{\
{ k00, k01, k02, k03, k04, k05 }, \
{ k10, k11, k12, k13, k14, k15 }, \
{ k20, k21, k22, k23, k24, k25 }, \
{ KC_NO, k31, KC_NO, k33, k34, KC_NO }, \
{ k40, k41, k42, k43, k44, k45 }, \
{ k50, k51, k52, k53, k54, k55 }, \
{ k60, k61, k62, k63, k64, k65 }, \
{ KC_NO, k71, KC_NO, k73, k74, KC_NO }, \
}
+47
View File
@@ -0,0 +1,47 @@
/*
* Copyright 2021 Quentin LEBASTARD <[email protected]>
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#pragma once
#include "config_common.h"
#define VENDOR_ID 0xA8F8
#define PRODUCT_ID 0x1828
#define DEVICE_VER 0x0001
#define MANUFACTURER Bastard Keyboards
#define PRODUCT Bastyl Mini
#define MATRIX_ROWS 8
#define MATRIX_COLS 6
#define RGBLIGHT_LIMIT_VAL 180
#define MATRIX_ROW_PINS { B5, F7, F6, B6 }
#define MATRIX_COL_PINS { B4, E6, C6, B1, B3, B2 }
#define DIODE_DIRECTION ROW2COL
#define RGB_DI_PIN D2
#define RGBLED_NUM 42
#define RGBLED_SPLIT { 21, 21 }
#define RGBLIGHT_ANIMATIONS
#define DEBOUNCE 5
#define SOFT_SERIAL_PIN D0
#define LOCKING_SUPPORT_ENABLE
#define LOCKING_RESYNC_ENABLE
#define F_SCL 400000L
#define USB_POLLING_INTERVAL_MS 1
#define MASTER_RIGHT
+55
View File
@@ -0,0 +1,55 @@
{
"keyboard_name": "Bastyl Mini",
"url": "https://www.bastardkb.com",
"maintainer": "Quentin Lebastard",
"width": 17,
"height": 4,
"layouts": {
"LAYOUT_split_3x6_3": {
"layout": [
{"label":"L00", "x":0, "y":0},
{"label":"L01", "x":1, "y":0},
{"label":"L02", "x":2, "y":0},
{"label":"L03", "x":3, "y":0},
{"label":"L04", "x":4, "y":0},
{"label":"L05", "x":5, "y":0},
{"label":"R00", "x":11, "y":0},
{"label":"R01", "x":12, "y":0},
{"label":"R02", "x":13, "y":0},
{"label":"R03", "x":14, "y":0},
{"label":"R04", "x":15, "y":0},
{"label":"R05", "x":16, "y":0},
{"label":"L10", "x":0, "y":1},
{"label":"L11", "x":1, "y":1},
{"label":"L12", "x":2, "y":1},
{"label":"L13", "x":3, "y":1},
{"label":"L14", "x":4, "y":1},
{"label":"L15", "x":5, "y":1},
{"label":"R10", "x":11, "y":1},
{"label":"R11", "x":12, "y":1},
{"label":"R12", "x":13, "y":1},
{"label":"R13", "x":14, "y":1},
{"label":"R14", "x":15, "y":1},
{"label":"R15", "x":16, "y":1},
{"label":"L20", "x":0, "y":2},
{"label":"L21", "x":1, "y":2},
{"label":"L22", "x":2, "y":2},
{"label":"L23", "x":3, "y":2},
{"label":"L24", "x":4, "y":2},
{"label":"L25", "x":5, "y":2},
{"label":"R20", "x":11, "y":2},
{"label":"R21", "x":12, "y":2},
{"label":"R22", "x":13, "y":2},
{"label":"R23", "x":14, "y":2},
{"label":"R24", "x":15, "y":2},
{"label":"R25", "x":16, "y":2},
{"label":"L33", "x":5, "y":3},
{"label":"L34", "x":6, "y":3},
{"label":"L31", "x":7, "y":3},
{"label":"R33", "x":9, "y":3},
{"label":"R34", "x":10, "y":3},
{"label":"R31", "x":11, "y":3}
]
}
}
}
@@ -0,0 +1,70 @@
/*
* Copyright 2021 Quentin LEBASTARD <[email protected]>
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include QMK_KEYBOARD_H
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = LAYOUT_split_3x6_3(
//,-----------------------------------------------------. ,-----------------------------------------------------.
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
KC_LCTL, 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_ESC,
//|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
KC_LGUI, KC_SPC , MO(1), MO(2), KC_ENT , KC_RALT
//`--------------------------' `--------------------------'
),
[1] = LAYOUT_split_3x6_3(
//,-----------------------------------------------------. ,-----------------------------------------------------.
KC_TAB, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC,
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
KC_LCTL, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_LEFT, KC_DOWN, KC_UP,KC_RIGHT, XXXXXXX, XXXXXXX,
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
KC_LSFT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
//|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
KC_LGUI, KC_SPC, _______, MO(3), KC_ENT, KC_RALT
//`--------------------------' `--------------------------'
),
[2] = LAYOUT_split_3x6_3(
//,-----------------------------------------------------. ,-----------------------------------------------------.
KC_TAB, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC,
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
KC_LCTL, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS, KC_GRV,
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
KC_LSFT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE, KC_TILD,
//|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
KC_LGUI, KC_SPC, MO(3), _______, KC_ENT, KC_RALT
//`--------------------------' `--------------------------'
),
[3] = LAYOUT_split_3x6_3(
//,-----------------------------------------------------. ,-----------------------------------------------------.
RESET, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
RGB_TOG, RGB_HUI, RGB_SAI, RGB_VAI, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
RGB_MOD, RGB_HUD, RGB_SAD, RGB_VAD, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
//|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
KC_LGUI, KC_SPC, _______, _______, KC_ENT, KC_RALT
//`--------------------------' `--------------------------'
)
};
+15
View File
@@ -0,0 +1,15 @@
# Bastyl Mini
A split, compact ergonomic keyboard.
* Keyboard Maintainer: [BastardKb](https://github.com/Bastardkb/)
* Hardware Supported: elite-C V4
* Hardware Availability: [Bastardkb.com](https://bastardkb.com/)
Make example for this keyboard (after setting up your build environment):
make bastardkb/bastylmini: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).
See the [keyboard build instructions](http://docs.bastardkb.com/)
+31
View File
@@ -0,0 +1,31 @@
# 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
SPLIT_KEYBOARD = yes
TAP_DANCE_ENABLE = no
LTO_ENABLE = yes
AUDIO_SUPPORTED = no
RGB_MATRIX_SUPPORTED = no
RGBLIGHT_SUPPORTED = yes
LAYOUTS = split_3x6_3
+2 -2
View File
@@ -20,8 +20,8 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h" #include "config_common.h"
/* USB Device descriptor parameter */ /* USB Device descriptor parameter */
#define VENDOR_ID 0xFEED #define VENDOR_ID 0x5946 // YF
#define PRODUCT_ID 0x1070 #define PRODUCT_ID 0x0002
#define DEVICE_VER 0x0001 #define DEVICE_VER 0x0001
#define MANUFACTURER yfuku #define MANUFACTURER yfuku
#define PRODUCT bat43 #define PRODUCT bat43
+58
View File
@@ -0,0 +1,58 @@
/* Copyright 2020 yfuku
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include QMK_KEYBOARD_H
// Defines names for use in layer keycodes and the keymap
enum layer_names {
_BASE,
_LOWER,
_RAISE,
_ADJUST
};
#define L_SPC LT(_LOWER, KC_SPC)
#define R_ENT LT(_RAISE, KC_ENT)
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_BASE] = LAYOUT(
KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_MINS,
KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_BSPC, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_RSFT,
KC_LCTL, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RCTL,
KC_LGUI, KC_LANG2,L_SPC, R_ENT, KC_LANG1,KC_RALT,
KC_A, KC_B, KC_C, KC_D, KC_E
),
[_LOWER] = LAYOUT(
_______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_EQL, KC_PLUS, KC_ASTR, KC_PERC, _______,
_______, KC_1, KC_2, KC_3, KC_4, KC_5, _______, KC_6, KC_7, KC_8, KC_9, KC_0, _______,
_______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______, _______, _______, _______,
_______, _______, _______, KC_DEL, _______, _______,
_______, _______, _______, _______, _______
),
[_RAISE] = LAYOUT(
_______, KC_BSLS, KC_EXLM, KC_AMPR, KC_PIPE, XXXXXXX, XXXXXXX, KC_EQL, KC_PLUS, KC_ASTR, KC_PERC, _______,
_______, KC_HASH, KC_GRV, KC_DQT, KC_QUOT, KC_TILD, _______, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_DLR, _______,
_______, XXXXXXX, XXXXXXX, KC_LCBR, KC_LBRC, KC_LPRN, KC_RPRN, KC_RBRC, KC_RCBR, KC_AT, KC_CIRC, _______,
_______, _______, KC_BSPC, _______, _______, _______,
_______, _______, _______, _______, _______
),
[_ADJUST] = LAYOUT(
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______
),
};
+1
View File
@@ -0,0 +1 @@
# The default keymap for bat43
+1
View File
@@ -0,0 +1 @@
VIA_ENABLE = yes
@@ -0,0 +1,97 @@
/* Copyright 2020 Stanrc85
*
* 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 "stanrc85.h"
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* Base */
[_QWERTY] = LAYOUT_all(
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_BSPC, KC_MPLY,
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, CA_SCLN,
KC_CTLE, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, CA_QUOT,
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_LCTL, KC_LGUI, KC_LALT, LT_SPCF, LT_SPCF, LT_SPCF, TD_TWIN, MO(_FN2_60), KC_GRV, KC_LEFT, KC_DOWN, KC_RGHT
),
[_DEFAULT] = LAYOUT_all(
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_BSPC, KC_MPLY,
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, CA_SCLN,
KC_CTLE, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, CA_QUOT,
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_LCTL, KC_LGUI, KC_LALT, LT_SPCF, LT_SPCF, LT_SPCF, TD_TWIN, MO(_FN2_60), KC_GRV, KC_LEFT, KC_DOWN, KC_RGHT
),
[_FN1_60] = LAYOUT_all(
KC_TILD, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_DEL, _______,
_______, _______, CA_QUOT, KC_VOLU, CA_SCLN, _______, _______, KC_HOME, KC_UP, KC_END, KC_PSCR, _______, _______, KC_INS, _______,
KC_CAPS, _______, KC_MUTE, KC_VOLD, KC_MPLY, _______, _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______,
_______, _______, KC_RDP, _______, _______, _______, _______, _______, KC_WBAK, KC_WFWD, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
),
[_FN2_60] = LAYOUT_all(
RGB_TOG, RGB_MOD, RGB_VAD, RGB_VAI, RGB_SAI, RGB_HUD, RGB_HUI, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MAKE, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, TG(_DEFAULT)
)
};
void rgb_matrix_indicators_user(void) {
uint8_t layer = get_highest_layer(layer_state);
switch (layer) {
case _FN1_60:
rgb_matrix_set_color(10, 0, 0, 255);
break;
case _FN2_60:
rgb_matrix_set_color(10, 255, 255, 255);
break;
case _DEFAULT:
rgb_matrix_set_color(10, 0, 255, 0);
break;
default:
break;
}
if (host_keyboard_led_state().caps_lock) {
rgb_matrix_set_color(10, 255, 0, 0);
}
}
void matrix_init_kb(void){
#ifdef RGB_MATRIX_ENABLE
g_led_config = (led_config_t){ {
// Key Matrix to LED Index
{ 10 , 10 , 9 , 9 , 8 , 7 , 7 , 6 , 5 , 5 , 4 , 3 , 3 , 2 , 1 , 1 },
{ NO_LED, 11 , NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, 0 , 1 },
{ NO_LED, 12 , NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, 23 , 1 },
{ NO_LED, 13 , 14 , NO_LED, 15 , 16 , NO_LED, 17 , 18 , NO_LED, 19 , 20 , NO_LED, 21 , 22 , NO_LED },
{ NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED },
}, {
// LED Index to Physical Position
{224, 42}, {224, 21}, {209, 21}, {179, 21}, {164, 21}, {134, 21}, {119, 21}, {89, 21}, {74, 21}, {45, 21}, {30, 21}, {30, 42},
{30, 64}, {30, 85}, {45, 85}, {74, 85}, {89, 85}, {119, 85}, {134, 85}, {164, 85}, {179, 85}, {209, 85}, {224, 85}, {224, 64}
}, {
// LED Index to Flag
LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL,
LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL,
LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL
} };
#endif
matrix_init_user();
}
-5
View File
@@ -1,9 +1,5 @@
#include "centromere.h" #include "centromere.h"
void uart_init(void) {
SERIAL_UART_INIT();
}
void led_init(void) { void led_init(void) {
#if MCU == atmega32u2 #if MCU == atmega32u2
setPinOutput(C4); // Set red LED pin as output setPinOutput(C4); // Set red LED pin as output
@@ -32,7 +28,6 @@ void matrix_init_kb(void) {
// put your keyboard start-up code here // put your keyboard start-up code here
// runs once when the firmware starts up // runs once when the firmware starts up
matrix_init_user(); matrix_init_user();
uart_init();
led_init(); led_init();
} }
+5 -13
View File
@@ -59,17 +59,9 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
//UART settings for communication with the RF microcontroller //UART settings for communication with the RF microcontroller
#define SERIAL_UART_BAUD 500000 #define SERIAL_UART_BAUD 500000
#define SERIAL_UART_DATA UDR1
#define SERIAL_UART_UBRR (F_CPU / (16UL * SERIAL_UART_BAUD) - 1)
#define SERIAL_UART_TXD_READY (UCSR1A & _BV(UDRE1))
#define SERIAL_UART_RXD_PRESENT (UCSR1A & _BV(RXC1)) #define SERIAL_UART_RXD_PRESENT (UCSR1A & _BV(RXC1))
#define SERIAL_UART_INIT() do { \ #define SERIAL_UART_INIT_CUSTOM \
/* baud rate */ \ /* enable TX and RX */ \
UBRR1L = SERIAL_UART_UBRR; \ UCSR1B = _BV(TXEN1) | _BV(RXEN1); \
/* baud rate */ \ /* 8-bit data */ \
UBRR1H = SERIAL_UART_UBRR >> 8; \ UCSR1C = _BV(UCSZ11) | _BV(UCSZ10);
/* enable TX and RX */ \
UCSR1B = _BV(TXEN1) | _BV(RXEN1); \
/* 8-bit data */ \
UCSR1C = _BV(UCSZ11) | _BV(UCSZ10); \
} while(0)
+2 -2
View File
@@ -26,6 +26,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "util.h" #include "util.h"
#include "matrix.h" #include "matrix.h"
#include "timer.h" #include "timer.h"
#include "protocol/serial.h"
#if (MATRIX_COLS <= 8) #if (MATRIX_COLS <= 8)
# define print_matrix_header() print("\nr/c 01234567\n") # define print_matrix_header() print("\nr/c 01234567\n")
@@ -79,12 +80,11 @@ uint8_t matrix_cols(void) {
void matrix_init(void) { void matrix_init(void) {
matrix_init_quantum(); matrix_init_quantum();
serial_init();
} }
uint8_t matrix_scan(void) uint8_t matrix_scan(void)
{ {
SERIAL_UART_INIT();
uint32_t timeout = 0; uint32_t timeout = 0;
//the s character requests the RF remote slave to send the matrix information //the s character requests the RF remote slave to send the matrix information
+1 -8
View File
@@ -31,14 +31,7 @@ MIDI_ENABLE = no # MIDI controls
UNICODE_ENABLE = yes # Unicode UNICODE_ENABLE = yes # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
USB = /dev/ttyACM0
# upload: build
# $(CENTROMERE_UPLOAD_COMMAND)
OPT_DEFS += -DCENTROMERE_PROMICRO
# # project specific files # # project specific files
SRC = matrix.c SRC += matrix.c serial_uart.c
LAYOUTS = split_3x5_3 split_3x6_3 LAYOUTS = split_3x5_3 split_3x6_3
-15
View File
@@ -1,9 +1,5 @@
#include "chimera_ergo.h" #include "chimera_ergo.h"
void uart_init(void) {
SERIAL_UART_INIT();
}
void led_init(void) { void led_init(void) {
DDRD |= (1<<1); DDRD |= (1<<1);
PORTD |= (1<<1); PORTD |= (1<<1);
@@ -16,16 +12,5 @@ void matrix_init_kb(void) {
// put your keyboard start-up code here // put your keyboard start-up code here
// runs once when the firmware starts up // runs once when the firmware starts up
matrix_init_user(); matrix_init_user();
uart_init();
led_init(); led_init();
} }
void matrix_scan_kb(void) {
// put your looping keyboard code here
// runs every cycle (a lot)
matrix_scan_user();
}
void led_set_kb(uint8_t usb_led) {
}
+5 -13
View File
@@ -60,19 +60,11 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
//UART settings for communication with the RF microcontroller //UART settings for communication with the RF microcontroller
#define SERIAL_UART_BAUD 1000000 #define SERIAL_UART_BAUD 1000000
#define SERIAL_UART_DATA UDR1
#define SERIAL_UART_UBRR (F_CPU / (16UL * SERIAL_UART_BAUD) - 1)
#define SERIAL_UART_TXD_READY (UCSR1A & _BV(UDRE1))
#define SERIAL_UART_RXD_PRESENT (UCSR1A & _BV(RXC1)) #define SERIAL_UART_RXD_PRESENT (UCSR1A & _BV(RXC1))
#define SERIAL_UART_INIT() do { \ #define SERIAL_UART_INIT_CUSTOM \
/* baud rate */ \ /* enable TX and RX */ \
UBRR1L = SERIAL_UART_UBRR; \ UCSR1B = _BV(TXEN1) | _BV(RXEN1); \
/* baud rate */ \ /* 8-bit data */ \
UBRR1H = SERIAL_UART_UBRR >> 8; \ UCSR1C = _BV(UCSZ11) | _BV(UCSZ10);
/* enable TX and RX */ \
UCSR1B = _BV(TXEN1) | _BV(RXEN1); \
/* 8-bit data */ \
UCSR1C = _BV(UCSZ11) | _BV(UCSZ10); \
} while(0)
#endif #endif
+2 -2
View File
@@ -26,6 +26,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "util.h" #include "util.h"
#include "matrix.h" #include "matrix.h"
#include "timer.h" #include "timer.h"
#include "protocol/serial.h"
#if (MATRIX_COLS <= 8) #if (MATRIX_COLS <= 8)
# define print_matrix_header() print("\nr/c 01234567\n") # define print_matrix_header() print("\nr/c 01234567\n")
@@ -88,12 +89,11 @@ uint8_t matrix_cols(void) {
void matrix_init(void) { void matrix_init(void) {
matrix_init_quantum(); matrix_init_quantum();
serial_init();
} }
uint8_t matrix_scan(void) uint8_t matrix_scan(void)
{ {
SERIAL_UART_INIT();
uint32_t timeout = 0; uint32_t timeout = 0;
//the s character requests the RF slave to send the matrix //the s character requests the RF slave to send the matrix
+1 -8
View File
@@ -28,12 +28,5 @@ NKRO_ENABLE = yes # USB Nkey Rollover - not yet supported in LUFA
UNICODE_ENABLE = YES # Unicode UNICODE_ENABLE = YES # Unicode
# BLUETOOTH_ENABLE = yes # Enable Bluetooth with the Adafruit EZ-Key HID # BLUETOOTH_ENABLE = yes # Enable Bluetooth with the Adafruit EZ-Key HID
OPT_DEFS += -DCHIMERA_ERGO_PROMICRO
CHIMERA_ERGO_UPLOAD_COMMAND = while [ ! -r $(USB) ]; do sleep 1; done; \
avrdude -p $(MCU) -c avr109 -U flash:w:$(TARGET).hex -P $(USB)
# # project specific files # # project specific files
SRC = matrix.c SRC += matrix.c serial_uart.c
USB = /dev/ttyACM0
-15
View File
@@ -1,9 +1,5 @@
#include "chimera_ls.h" #include "chimera_ls.h"
void uart_init(void) {
SERIAL_UART_INIT();
}
void led_init(void) { void led_init(void) {
DDRD |= (1<<1); DDRD |= (1<<1);
PORTD |= (1<<1); PORTD |= (1<<1);
@@ -16,16 +12,5 @@ void matrix_init_kb(void) {
// put your keyboard start-up code here // put your keyboard start-up code here
// runs once when the firmware starts up // runs once when the firmware starts up
matrix_init_user(); matrix_init_user();
uart_init();
led_init(); led_init();
} }
void matrix_scan_kb(void) {
// put your looping keyboard code here
// runs every cycle (a lot)
matrix_scan_user();
}
void led_set_kb(uint8_t usb_led) {
}
+5 -13
View File
@@ -60,19 +60,11 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
//UART settings for communication with the RF microcontroller //UART settings for communication with the RF microcontroller
#define SERIAL_UART_BAUD 1000000 #define SERIAL_UART_BAUD 1000000
#define SERIAL_UART_DATA UDR1
#define SERIAL_UART_UBRR (F_CPU / (16UL * SERIAL_UART_BAUD) - 1)
#define SERIAL_UART_TXD_READY (UCSR1A & _BV(UDRE1))
#define SERIAL_UART_RXD_PRESENT (UCSR1A & _BV(RXC1)) #define SERIAL_UART_RXD_PRESENT (UCSR1A & _BV(RXC1))
#define SERIAL_UART_INIT() do { \ #define SERIAL_UART_INIT_CUSTOM \
/* baud rate */ \ /* enable TX and RX */ \
UBRR1L = SERIAL_UART_UBRR; \ UCSR1B = _BV(TXEN1) | _BV(RXEN1); \
/* baud rate */ \ /* 8-bit data */ \
UBRR1H = SERIAL_UART_UBRR >> 8; \ UCSR1C = _BV(UCSZ11) | _BV(UCSZ10);
/* enable TX and RX */ \
UCSR1B = _BV(TXEN1) | _BV(RXEN1); \
/* 8-bit data */ \
UCSR1C = _BV(UCSZ11) | _BV(UCSZ10); \
} while(0)
#endif #endif
+2 -2
View File
@@ -26,6 +26,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "util.h" #include "util.h"
#include "matrix.h" #include "matrix.h"
#include "timer.h" #include "timer.h"
#include "protocol/serial.h"
#if (MATRIX_COLS <= 8) #if (MATRIX_COLS <= 8)
# define print_matrix_header() print("\nr/c 01234567\n") # define print_matrix_header() print("\nr/c 01234567\n")
@@ -92,12 +93,11 @@ uint8_t matrix_cols(void) {
void matrix_init(void) { void matrix_init(void) {
matrix_init_quantum(); matrix_init_quantum();
serial_init();
} }
uint8_t matrix_scan(void) uint8_t matrix_scan(void)
{ {
SERIAL_UART_INIT();
uint32_t timeout = 0; uint32_t timeout = 0;
//the s character requests the RF slave to send the matrix //the s character requests the RF slave to send the matrix
+1 -7
View File
@@ -28,14 +28,8 @@ NKRO_ENABLE = yes # USB Nkey Rollover - not yet supported in LUFA
UNICODE_ENABLE = YES # Unicode UNICODE_ENABLE = YES # Unicode
# BLUETOOTH_ENABLE = yes # Enable Bluetooth with the Adafruit EZ-Key HID # BLUETOOTH_ENABLE = yes # Enable Bluetooth with the Adafruit EZ-Key HID
USB = /dev/ttyACM0
OPT_DEFS += -DCHIMERA_LS_PROMICRO
CHIMERA_LS_UPLOAD_COMMAND = while [ ! -r $(USB) ]; do sleep 1; done; \
avrdude -p $(MCU) -c avr109 -U flash:w:$(TARGET).hex -P $(USB)
# project specific files # project specific files
SRC = matrix.c SRC += matrix.c serial_uart.c
LAYOUTS = ortho_4x12 LAYOUTS = ortho_4x12
-15
View File
@@ -1,9 +1,5 @@
#include "chimera_ortho.h" #include "chimera_ortho.h"
void uart_init(void) {
SERIAL_UART_INIT();
}
void led_init(void) { void led_init(void) {
DDRD |= (1<<1); DDRD |= (1<<1);
PORTD |= (1<<1); PORTD |= (1<<1);
@@ -16,16 +12,5 @@ void matrix_init_kb(void) {
// put your keyboard start-up code here // put your keyboard start-up code here
// runs once when the firmware starts up // runs once when the firmware starts up
matrix_init_user(); matrix_init_user();
uart_init();
led_init(); led_init();
} }
void matrix_scan_kb(void) {
// put your looping keyboard code here
// runs every cycle (a lot)
matrix_scan_user();
}
void led_set_kb(uint8_t usb_led) {
}
+5 -13
View File
@@ -60,19 +60,11 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
//UART settings for communication with the RF microcontroller //UART settings for communication with the RF microcontroller
#define SERIAL_UART_BAUD 1000000 #define SERIAL_UART_BAUD 1000000
#define SERIAL_UART_DATA UDR1
#define SERIAL_UART_UBRR (F_CPU / (16UL * SERIAL_UART_BAUD) - 1)
#define SERIAL_UART_TXD_READY (UCSR1A & _BV(UDRE1))
#define SERIAL_UART_RXD_PRESENT (UCSR1A & _BV(RXC1)) #define SERIAL_UART_RXD_PRESENT (UCSR1A & _BV(RXC1))
#define SERIAL_UART_INIT() do { \ #define SERIAL_UART_INIT_CUSTOM \
/* baud rate */ \ /* enable TX and RX */ \
UBRR1L = SERIAL_UART_UBRR; \ UCSR1B = _BV(TXEN1) | _BV(RXEN1); \
/* baud rate */ \ /* 8-bit data */ \
UBRR1H = SERIAL_UART_UBRR >> 8; \ UCSR1C = _BV(UCSZ11) | _BV(UCSZ10);
/* enable TX and RX */ \
UCSR1B = _BV(TXEN1) | _BV(RXEN1); \
/* 8-bit data */ \
UCSR1C = _BV(UCSZ11) | _BV(UCSZ10); \
} while(0)
#endif #endif
+2 -2
View File
@@ -26,6 +26,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "util.h" #include "util.h"
#include "matrix.h" #include "matrix.h"
#include "timer.h" #include "timer.h"
#include "protocol/serial.h"
#if (MATRIX_COLS <= 8) #if (MATRIX_COLS <= 8)
# define print_matrix_header() print("\nr/c 01234567\n") # define print_matrix_header() print("\nr/c 01234567\n")
@@ -78,12 +79,11 @@ uint8_t matrix_cols(void) {
void matrix_init(void) { void matrix_init(void) {
matrix_init_quantum(); matrix_init_quantum();
serial_init();
} }
uint8_t matrix_scan(void) uint8_t matrix_scan(void)
{ {
SERIAL_UART_INIT();
uint32_t timeout = 0; uint32_t timeout = 0;
//the s character requests the RF slave to send the matrix //the s character requests the RF slave to send the matrix
+1 -7
View File
@@ -28,11 +28,5 @@ NKRO_ENABLE = yes # USB Nkey Rollover - not yet supported in LUFA
UNICODE_ENABLE = YES # Unicode UNICODE_ENABLE = YES # Unicode
# BLUETOOTH_ENABLE = yes # Enable Bluetooth with the Adafruit EZ-Key HID # BLUETOOTH_ENABLE = yes # Enable Bluetooth with the Adafruit EZ-Key HID
USB = /dev/ttyACM0
OPT_DEFS += -DCHIMERA_ORTHO_PROMICRO
CHIMERA_ORTHO_UPLOAD_COMMAND = while [ ! -r $(USB) ]; do sleep 1; done; \
avrdude -p $(MCU) -c avr109 -U flash:w:$(TARGET).hex -P $(USB)
# project specific files # project specific files
SRC = matrix.c SRC += matrix.c serial_uart.c
@@ -1,9 +1,5 @@
#include "chimera_ortho_plus.h" #include "chimera_ortho_plus.h"
void uart_init(void) {
SERIAL_UART_INIT();
}
void led_init(void) { void led_init(void) {
setPinOutput(D1); setPinOutput(D1);
setPinOutput(F4); setPinOutput(F4);
@@ -18,6 +14,5 @@ void matrix_init_kb(void) {
// put your keyboard start-up code here // put your keyboard start-up code here
// runs once when the firmware starts up // runs once when the firmware starts up
matrix_init_user(); matrix_init_user();
uart_init();
led_init(); led_init();
} }
+5 -13
View File
@@ -59,17 +59,9 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
//UART settings for communication with the RF microcontroller //UART settings for communication with the RF microcontroller
#define SERIAL_UART_BAUD 1000000 #define SERIAL_UART_BAUD 1000000
#define SERIAL_UART_DATA UDR1
#define SERIAL_UART_UBRR (F_CPU / (16UL * SERIAL_UART_BAUD) - 1)
#define SERIAL_UART_TXD_READY (UCSR1A & _BV(UDRE1))
#define SERIAL_UART_RXD_PRESENT (UCSR1A & _BV(RXC1)) #define SERIAL_UART_RXD_PRESENT (UCSR1A & _BV(RXC1))
#define SERIAL_UART_INIT() do { \ #define SERIAL_UART_INIT_CUSTOM \
/* baud rate */ \ /* enable TX and RX */ \
UBRR1L = SERIAL_UART_UBRR; \ UCSR1B = _BV(TXEN1) | _BV(RXEN1); \
/* baud rate */ \ /* 8-bit data */ \
UBRR1H = SERIAL_UART_UBRR >> 8; \ UCSR1C = _BV(UCSZ11) | _BV(UCSZ10);
/* enable TX and RX */ \
UCSR1B = _BV(TXEN1) | _BV(RXEN1); \
/* 8-bit data */ \
UCSR1C = _BV(UCSZ11) | _BV(UCSZ10); \
} while(0)
+2 -2
View File
@@ -26,6 +26,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "util.h" #include "util.h"
#include "matrix.h" #include "matrix.h"
#include "timer.h" #include "timer.h"
#include "protocol/serial.h"
#if (MATRIX_COLS <= 8) #if (MATRIX_COLS <= 8)
# define print_matrix_header() print("\nr/c 01234567\n") # define print_matrix_header() print("\nr/c 01234567\n")
@@ -78,12 +79,11 @@ uint8_t matrix_cols(void) {
void matrix_init(void) { void matrix_init(void) {
matrix_init_quantum(); matrix_init_quantum();
serial_init();
} }
uint8_t matrix_scan(void) uint8_t matrix_scan(void)
{ {
SERIAL_UART_INIT();
uint32_t timeout = 0; uint32_t timeout = 0;
//the s character requests the RF slave to send the matrix //the s character requests the RF slave to send the matrix
+1 -1
View File
@@ -33,4 +33,4 @@ UNICODE_ENABLE = yes
CUSTOM_MATRIX = yes CUSTOM_MATRIX = yes
# project specific files # project specific files
SRC = matrix.c SRC += matrix.c serial_uart.c
+1 -1
View File
@@ -53,7 +53,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define RGB_DI_PIN B15 #define RGB_DI_PIN B15
#define RGBLED_NUM 16 #define RGBLED_NUM 16
#define RGBLIGT_LIMIT_VAL 200 #define RGBLIGHT_LIMIT_VAL 200
#define RGBLIGHT_SLEEP #define RGBLIGHT_SLEEP
#define RGBLIGHT_ANIMATIONS #define RGBLIGHT_ANIMATIONS
-21
View File
@@ -1,22 +1 @@
#include "comet46.h" #include "comet46.h"
void uart_init(void) {
SERIAL_UART_INIT();
}
void matrix_init_kb(void) {
// put your keyboard start-up code here
// runs once when the firmware starts up
matrix_init_user();
uart_init();
}
void matrix_scan_kb(void) {
// put your looping keyboard code here
// runs every cycle (a lot)
matrix_scan_user();
}
void led_set_kb(uint8_t usb_led) {
}
+5 -13
View File
@@ -66,19 +66,11 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
//UART settings for communication with the RF microcontroller //UART settings for communication with the RF microcontroller
#define SERIAL_UART_BAUD 1000000 #define SERIAL_UART_BAUD 1000000
#define SERIAL_UART_DATA UDR1
#define SERIAL_UART_UBRR (F_CPU / (16UL * SERIAL_UART_BAUD) - 1)
#define SERIAL_UART_TXD_READY (UCSR1A & _BV(UDRE1))
#define SERIAL_UART_RXD_PRESENT (UCSR1A & _BV(RXC1)) #define SERIAL_UART_RXD_PRESENT (UCSR1A & _BV(RXC1))
#define SERIAL_UART_INIT() do { \ #define SERIAL_UART_INIT_CUSTOM \
/* baud rate */ \ /* enable TX and RX */ \
UBRR1L = SERIAL_UART_UBRR; \ UCSR1B = _BV(TXEN1) | _BV(RXEN1); \
/* baud rate */ \ /* 8-bit data */ \
UBRR1H = SERIAL_UART_UBRR >> 8; \ UCSR1C = _BV(UCSZ11) | _BV(UCSZ10);
/* enable TX and RX */ \
UCSR1B = _BV(TXEN1) | _BV(RXEN1); \
/* 8-bit data */ \
UCSR1C = _BV(UCSZ11) | _BV(UCSZ10); \
} while(0)
#endif #endif
+2 -2
View File
@@ -26,6 +26,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "util.h" #include "util.h"
#include "matrix.h" #include "matrix.h"
#include "timer.h" #include "timer.h"
#include "protocol/serial.h"
#if (MATRIX_COLS <= 8) #if (MATRIX_COLS <= 8)
# define print_matrix_header() print("\nr/c 01234567\n") # define print_matrix_header() print("\nr/c 01234567\n")
@@ -78,12 +79,11 @@ uint8_t matrix_cols(void) {
void matrix_init(void) { void matrix_init(void) {
matrix_init_quantum(); matrix_init_quantum();
serial_init();
} }
uint8_t matrix_scan(void) uint8_t matrix_scan(void)
{ {
SERIAL_UART_INIT();
uint32_t timeout = 0; uint32_t timeout = 0;
//the s character requests the RF slave to send the matrix //the s character requests the RF slave to send the matrix
+2 -2
View File
@@ -28,8 +28,8 @@ NKRO_ENABLE = yes # USB Nkey Rollover - not yet supported in LUFA
UNICODE_ENABLE = YES # Unicode UNICODE_ENABLE = YES # Unicode
# BLUETOOTH_ENABLE = yes # Enable Bluetooth with the Adafruit EZ-Key HID # BLUETOOTH_ENABLE = yes # Enable Bluetooth with the Adafruit EZ-Key HID
USB = /dev/ttyACM0
# project specific files # project specific files
SRC += matrix.c \ SRC += matrix.c \
i2c.c \ i2c.c \
ssd1306.c ssd1306.c \
serial_uart.c
+5 -13
View File
@@ -60,19 +60,11 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
//UART settings for communication with the RF microcontroller //UART settings for communication with the RF microcontroller
#define SERIAL_UART_BAUD 1000000 #define SERIAL_UART_BAUD 1000000
#define SERIAL_UART_DATA UDR1
#define SERIAL_UART_UBRR (F_CPU / (16UL * SERIAL_UART_BAUD) - 1)
#define SERIAL_UART_TXD_READY (UCSR1A & _BV(UDRE1))
#define SERIAL_UART_RXD_PRESENT (UCSR1A & _BV(RXC1)) #define SERIAL_UART_RXD_PRESENT (UCSR1A & _BV(RXC1))
#define SERIAL_UART_INIT() do { \ #define SERIAL_UART_INIT_CUSTOM \
/* baud rate */ \ /* enable TX and RX */ \
UBRR1L = SERIAL_UART_UBRR; \ UCSR1B = _BV(TXEN1) | _BV(RXEN1); \
/* baud rate */ \ /* 8-bit data */ \
UBRR1H = SERIAL_UART_UBRR >> 8; \ UCSR1C = _BV(UCSZ11) | _BV(UCSZ10);
/* enable TX and RX */ \
UCSR1B = _BV(TXEN1) | _BV(RXEN1); \
/* 8-bit data */ \
UCSR1C = _BV(UCSZ11) | _BV(UCSZ10); \
} while(0)
#endif #endif
-16
View File
@@ -1,12 +1,7 @@
#include "dichotomy.h" #include "dichotomy.h"
void uart_init(void) {
SERIAL_UART_INIT();
}
void pointing_device_task(void){ void pointing_device_task(void){
/*report_mouse_t currentReport = {}; /*report_mouse_t currentReport = {};
SERIAL_UART_INIT();
uint32_t timeout = 0; uint32_t timeout = 0;
//the m character requests the RF slave to send the mouse report //the m character requests the RF slave to send the mouse report
@@ -77,16 +72,5 @@ void matrix_init_kb(void) {
// put your keyboard start-up code here // put your keyboard start-up code here
// runs once when the firmware starts up // runs once when the firmware starts up
matrix_init_user(); matrix_init_user();
uart_init();
led_init(); led_init();
} }
void matrix_scan_kb(void) {
// put your looping keyboard code here
// runs every cycle (a lot)
matrix_scan_user();
}
void led_set_kb(uint8_t usb_led) {
}
+2 -1
View File
@@ -29,6 +29,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "dichotomy.h" #include "dichotomy.h"
#include "pointing_device.h" #include "pointing_device.h"
#include "report.h" #include "report.h"
#include "protocol/serial.h"
#if (MATRIX_COLS <= 8) #if (MATRIX_COLS <= 8)
# define print_matrix_header() print("\nr/c 01234567\n") # define print_matrix_header() print("\nr/c 01234567\n")
@@ -93,11 +94,11 @@ uint8_t matrix_cols(void) {
void matrix_init(void) { void matrix_init(void) {
matrix_init_quantum(); matrix_init_quantum();
serial_init();
} }
uint8_t matrix_scan(void) uint8_t matrix_scan(void)
{ {
SERIAL_UART_INIT();
//xprintf("\r\nTRYING TO SCAN"); //xprintf("\r\nTRYING TO SCAN");
uint32_t timeout = 0; uint32_t timeout = 0;
+1 -10
View File
@@ -29,14 +29,5 @@ NKRO_ENABLE = yes # USB Nkey Rollover - not yet supported in LUFA
UNICODE_ENABLE = YES # Unicode UNICODE_ENABLE = YES # Unicode
# BLUETOOTH_ENABLE = yes # Enable Bluetooth with the Adafruit EZ-Key HID # BLUETOOTH_ENABLE = yes # Enable Bluetooth with the Adafruit EZ-Key HID
USB = /dev/ttyACM0
OPT_DEFS += -DDICHOTOMY_PROMICRO
DICHOTOMY_UPLOAD_COMMAND = while [ ! -r $(USB) ]; do sleep 1; done; \
avrdude -p $(MCU) -c avr109 -U flash:w:$(TARGET).hex -P $(USB)
# # project specific files # # project specific files
SRC = matrix.c SRC += matrix.c serial_uart.c
#upload: build
# $(DICHOTOMY_UPLOAD_COMMAND)
+458
View File
@@ -457,6 +457,464 @@
"y": 5.5 "y": 5.5
} }
] ]
},
"LAYOUT_tkl_iso": {
"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.5
},
{
"label": "!",
"x": 1,
"y": 1.5
},
{
"label": "@",
"x": 2,
"y": 1.5
},
{
"label": "#",
"x": 3,
"y": 1.5
},
{
"label": "$",
"x": 4,
"y": 1.5
},
{
"label": "%",
"x": 5,
"y": 1.5
},
{
"label": "^",
"x": 6,
"y": 1.5
},
{
"label": "&",
"x": 7,
"y": 1.5
},
{
"label": "*",
"x": 8,
"y": 1.5
},
{
"label": "(",
"x": 9,
"y": 1.5
},
{
"label": ")",
"x": 10,
"y": 1.5
},
{
"label": "_",
"x": 11,
"y": 1.5
},
{
"label": "+",
"x": 12,
"y": 1.5
},
{
"label": "Backspace",
"x": 13,
"y": 1.5,
"w": 2
},
{
"label": "Insert",
"x": 15.25,
"y": 1.5
},
{
"label": "Home",
"x": 16.25,
"y": 1.5
},
{
"label": "PgUp",
"x": 17.25,
"y": 1.5
},
{
"label": "Tab",
"x": 0,
"y": 2.5,
"w": 1.5
},
{
"label": "Q",
"x": 1.5,
"y": 2.5
},
{
"label": "W",
"x": 2.5,
"y": 2.5
},
{
"label": "E",
"x": 3.5,
"y": 2.5
},
{
"label": "R",
"x": 4.5,
"y": 2.5
},
{
"label": "T",
"x": 5.5,
"y": 2.5
},
{
"label": "Y",
"x": 6.5,
"y": 2.5
},
{
"label": "U",
"x": 7.5,
"y": 2.5
},
{
"label": "I",
"x": 8.5,
"y": 2.5
},
{
"label": "O",
"x": 9.5,
"y": 2.5
},
{
"label": "P",
"x": 10.5,
"y": 2.5
},
{
"label": "{",
"x": 11.5,
"y": 2.5
},
{
"label": "}",
"x": 12.5,
"y": 2.5
},
{
"label": "Enter",
"x": 13.75,
"y": 2.5,
"w": 1.25,
"h": 2
},
{
"label": "Delete",
"x": 15.25,
"y": 2.5
},
{
"label": "End",
"x": 16.25,
"y": 2.5
},
{
"label": "PgDn",
"x": 17.25,
"y": 2.5
},
{
"label": "Caps Lock",
"x": 0,
"y": 3.5,
"w": 1.75
},
{
"label": "A",
"x": 1.75,
"y": 3.5
},
{
"label": "S",
"x": 2.75,
"y": 3.5
},
{
"label": "D",
"x": 3.75,
"y": 3.5
},
{
"label": "F",
"x": 4.75,
"y": 3.5
},
{
"label": "G",
"x": 5.75,
"y": 3.5
},
{
"label": "H",
"x": 6.75,
"y": 3.5
},
{
"label": "J",
"x": 7.75,
"y": 3.5
},
{
"label": "K",
"x": 8.75,
"y": 3.5
},
{
"label": "L",
"x": 9.75,
"y": 3.5
},
{
"label": ":",
"x": 10.75,
"y": 3.5
},
{
"label": "\"",
"x": 11.75,
"y": 3.5
},
{
"label": "#",
"x": 12.75,
"y": 3.5
},
{
"label": "Shift",
"x": 0,
"y": 4.5,
"w": 1.25
},
{
"label": "\\",
"x": 1.25,
"y": 4.5
},
{
"label": "Z",
"x": 2.25,
"y": 4.5
},
{
"label": "X",
"x": 3.25,
"y": 4.5
},
{
"label": "C",
"x": 4.25,
"y": 4.5
},
{
"label": "V",
"x": 5.25,
"y": 4.5
},
{
"label": "B",
"x": 6.25,
"y": 4.5
},
{
"label": "N",
"x": 7.25,
"y": 4.5
},
{
"label": "M",
"x": 8.25,
"y": 4.5
},
{
"label": "<",
"x": 9.25,
"y": 4.5
},
{
"label": ">",
"x": 10.25,
"y": 4.5
},
{
"label": "?",
"x": 11.25,
"y": 4.5
},
{
"label": "Shift",
"x": 12.25,
"y": 4.5,
"w": 2.75
},
{
"label": "\u2191",
"x": 16.25,
"y": 4.5
},
{
"label": "Ctrl",
"x": 0,
"y": 5.5,
"w": 1.25
},
{
"label": "Win",
"x": 1.25,
"y": 5.5,
"w": 1.25
},
{
"label": "Alt",
"x": 2.5,
"y": 5.5,
"w": 1.25
},
{
"x": 3.75,
"y": 5.5,
"w": 6.25
},
{
"label": "Alt",
"x": 10,
"y": 5.5,
"w": 1.25
},
{
"label": "Fn",
"x": 11.25,
"y": 5.5,
"w": 1.25
},
{
"label": "Menu",
"x": 12.5,
"y": 5.5,
"w": 1.25
},
{
"label": "Ctrl",
"x": 13.75,
"y": 5.5,
"w": 1.25
},
{
"label": "\u2190",
"x": 15.25,
"y": 5.5
},
{
"label": "\u2193",
"x": 16.25,
"y": 5.5
},
{
"label": "\u2192",
"x": 17.25,
"y": 5.5
}
]
} }
} }
} }
+18
View File
@@ -42,3 +42,21 @@ void on_all_leds(void);
{ K50, K51, K52, XXX, XXX, XXX, K56, XXX, XXX, XXX, K5A, K5B, K5C, K5D, K5E, K5F }, \ { K50, K51, K52, XXX, XXX, XXX, K56, XXX, XXX, XXX, K5A, K5B, K5C, K5D, K5E, K5F }, \
{ XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, K6F } \ { XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, K6F } \
} }
// This a shortcut to help you visually see your layout.
#define LAYOUT_tkl_iso( \
K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, K0F, \
K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1E, K2E, K2F, K1F, \
K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K4E, K3D, K3E, K3F, \
K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, \
K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4D, K4F, \
K50, K51, K52, K56, K5A, K5B, K5C, K5D, K5E, K5F, K6F \
) { \
{ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, K0F }, \
{ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, XXX, K1E, K1F }, \
{ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, XXX, K2E, K2F }, \
{ K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E, K3F }, \
{ K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, XXX, K4D, K4E, K4F }, \
{ K50, K51, K52, XXX, XXX, XXX, K56, XXX, XXX, XXX, K5A, K5B, K5C, K5D, K5E, K5F }, \
{ XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, K6F } \
}
@@ -0,0 +1,72 @@
/* Copyright 2021 kuenhlee and Don Kjer
*
* 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
// Layer shorthand
enum _layer {
_BASE,
_FUNC
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* Keymap _BASE: Base Layer (Default Layer)
* ,-----------------------------------------------------------. ,--------------.
* |Esc |f1| f2| f3| f4| | f5| f6| f7| f8| | f9|f10|f11|f12| |Prnt|ScLk|Paus|
* |-----------------------------------------------------------| |--------------|
* | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0| - | = |Backsp | | Ins|Home|PgUp|
* |-----------------------------------------------------------| |--------------|
* |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]| | | Del| End|PgDn|
* |------------------------------------------------------ Ret | `--------------'
* |CAPS | A| S| D| F| G| H| J| K| L| ;| '| #| |
* |-----------------------------------------------------------| ,----.
* |Shift| \| Z| X| C| V| B| N| M| ,| .| /|Shift | | Up |
* |-----------------------------------------------------------| ,-------------.
* |Ctrl|Gui |Alt | Space |Alt | Fn |App |Ctrl| |Lft| Dn |Rig |
* `-----------------------------------------------------------' `-------------'
*/
[_BASE] = LAYOUT_tkl_iso( /* Base Layer */
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_ENT, 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_NUHS,
KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(_FUNC),KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
),
/* Keymap _FUNC: Function Layer
* ,-----------------------------------------------------------. ,--------------.
* | |Play|Stop|Prev|Next| |Mute|Vol+|Vol-| | | | | | | | | | |
* |-----------------------------------------------------------| |--------------|
* | | | | | | | | | | | | | | | | | | |
* |-----------------------------------------------------------| |--------------|
* | | | | | | | | | | | | | | | | | | |
* |------------------------------------------------------- | `--------------'
* | | | | | | | | | | | | | | |
* |-----------------------------------------------------------| ,----.
* | | | | | | | | | | | | | | | |
* |-----------------------------------------------------------| ,-------------.
* | | | | | |Func | | | | | | |
* `-----------------------------------------------------------' `-------------'
*/
[_FUNC] = LAYOUT_tkl_iso( /* Function Layer */
_______, KC_MPLY, KC_MSTP, KC_MRWD, KC_MFFD, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
)
};
@@ -0,0 +1,7 @@
# The ISO keymap for Durgod Taurus K320.
Layer 0 : Standard ISO 88 Keys TKL layout (Windows)
Layer 1 : Media control and Windows lock key
- Reusing Durgod's Original Media Control for Fn + F1 ~ Fn + F7
@@ -0,0 +1,71 @@
/* Copyright 2021 kuenhlee and Don Kjer
*
* 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
// Layer shorthand
enum _layer {
_BASE,
_FUNC
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* Keymap _BASE: Base Layer (Default Layer)
* ,-----------------------------------------------------------. ,--------------.
* |Esc |f1| f2| f3| f4| | f5| f6| f7| f8| | f9|f10|f11|f12| |Prnt|ScLk|Paus|
* |-----------------------------------------------------------| |--------------|
* | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0| - | = |Backsp | | Ins|Home|PgUp|
* |-----------------------------------------------------------| |--------------|
* |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]| | | Del| End|PgDn|
* |------------------------------------------------------ Ret | `--------------'
* |CAPS | A| S| D| F| G| H| J| K| L| ;| '| #| |
* |-----------------------------------------------------------| ,----.
* |Shift| \| Z| X| C| V| B| N| M| ,| .| /|Shift | | Up |
* |-----------------------------------------------------------| ,-------------.
* |Ctrl|Alt |Gui | Space |Alt | Fn |App |Ctrl| |Lft| Dn |Rig |
* `-----------------------------------------------------------' `-------------'
*/
[_BASE] = LAYOUT_tkl_iso( /* Base Layer */
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_ENT, 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_NUHS,
KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
KC_LCTL, KC_LALT, KC_LGUI, KC_SPC, KC_RALT, MO(_FUNC),KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
),
/* Keymap _FUNC: Function Layer
* ,-----------------------------------------------------------. ,--------------.
* | |Play|Stop|Prev|Next| |Mute|Vol+|Vol-| | | | | | | | | | |
* |-----------------------------------------------------------| |--------------|
* | | | | | | | | | | | | | | | | | | |
* |-----------------------------------------------------------| |--------------|
* | | | | | | | | | | | | | | | | | | |
* |------------------------------------------------------- | `--------------'
* | | | | | | | | | | | | | | |
* |-----------------------------------------------------------| ,----.
* | | | | | | | | | | | | | | | |
* |-----------------------------------------------------------| ,-------------.
* | | | | | |Func | | | | | | |
* `-----------------------------------------------------------' `-------------'
*/
[_FUNC] = LAYOUT_tkl_iso( /* Function Layer */
_______, KC_MPLY, KC_MSTP, KC_MRWD, KC_MFFD, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
)
};
@@ -0,0 +1,6 @@
# The ISO (Mac) keymap for Durgod Taurus K320.
Layer 0 : Standard ISO 88 Keys TKL layout (Mac)
Layer 1 : Media control
- Reusing Durgod's Original Media Control for Fn + F1 ~ Fn + F7
+1 -1
View File
@@ -24,4 +24,4 @@ RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
BLUETOOTH_ENABLE = no # Enable Bluetooth BLUETOOTH_ENABLE = no # Enable Bluetooth
AUDIO_ENABLE = no # Audio output AUDIO_ENABLE = no # Audio output
LAYOUTS = tkl_ansi LAYOUTS = tkl_ansi tkl_iso
+114
View File
@@ -0,0 +1,114 @@
/*
Copyright 2020 k.bigwheel
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 0xEE11
#define DEVICE_VER 0x0001
#define MANUFACTURER k.bigwheel
#define PRODUCT earth_rover
/* 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, C6, D7, E6 }
#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
/* 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
+17
View File
@@ -0,0 +1,17 @@
/* Copyright 2020 k.bigwheel
*
* 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 "earth_rover.h"
+41
View File
@@ -0,0 +1,41 @@
/* Copyright 2020 k.bigwheel
*
* 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.
*/
// clang-format off
#define LAYOUT( \
k00, k01, \
k10, k12, k13, k14, \
k20, k22, k23, k24, \
k30, k32, k33, k34 \
) { \
{ KC_NO, k00, k01, KC_NO }, \
{ k10, k12, k13, k14 }, \
{ k20, k22, k23, k24 }, \
{ k30, k32, k33, k34 }, \
}
// clang-format on
+30
View File
@@ -0,0 +1,30 @@
{
"keyboard_name": "earth_rover",
"url": "https://github.com/bigwheel/earth_rover",
"maintainer": "k.bigwheel",
"width": 4,
"height": 4,
"layouts": {
"LAYOUT": {
"layout": [
{"label": "k10", "x": 1.25, "y": 0},
{"label": "k20", "x": 2.25, "y": 0},
{"label": "k01", "x": 0, "y": 1.25},
{"label": "k11", "x": 1.25, "y": 1.25},
{"label": "k21", "x": 2.25, "y": 1.25},
{"label": "k31", "x": 3.5, "y": 1.25},
{"label": "k02", "x": 0, "y": 2.25},
{"label": "k12", "x": 1.25, "y": 2.25},
{"label": "k22", "x": 2.25, "y": 2.25},
{"label": "k32", "x": 3.5, "y": 2.25},
{"label": "k03", "x": 0, "y": 3.25},
{"label": "k13", "x": 1.25, "y": 3.25},
{"label": "k23", "x": 2.25, "y": 3.25},
{"label": "k33", "x": 3.5, "y": 3.25}
]
}
}
}
@@ -0,0 +1,31 @@
/* Copyright 2020 k.bigwheel
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include QMK_KEYBOARD_H
// Defines names for use in layer keycodes and the keymap
enum layer_names { _BASE };
// clang-format off
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* Base */
[_BASE] = LAYOUT(
KC_A, KC_B,
KC_C, KC_D, KC_E, KC_F,
KC_G, KC_H, KC_I, KC_J,
KC_K, KC_L, KC_M, KC_N
)
};
// clang-format on
@@ -0,0 +1 @@
# The default keymap for earth_rover
+22
View File
@@ -0,0 +1,22 @@
# earth_rover
![earth_rover](https://pbs.twimg.com/media/Eqh29nYUUAA-9NE?format=jpg)
Mechanical warm, or just cubic macro pad.
* Keyboard Maintainer: [k.bigwheel](https://github.com/bigwheel)
* Build Guide: [bigwheel/earth\_rover](https://github.com/bigwheel/earth_rover)
* Hardware Supported: [無限の可能性 \| MxLEDBitPCB](https://swanmatch.github.io/MxLEDBitPCB/), Pro Micro
* Hardware Availability: [魔界鍵盤製作所 \- BOOTH](https://swanmatch.booth.pm/), [Pro Micro (コンスルー付き) \| 遊舎工房](https://yushakobo.jp/shop/promicro-spring-pinheader/)
Make example for this keyboard (after setting up your build environment):
make earth_rover:default
Reset Pro Micro by reset button on ProMicroSocket (Red LED must light).
Flashing example for this keyboard:
make earth_rover: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).
+22
View File
@@ -0,0 +1,22 @@
# MCU name
MCU = atmega32u4
# Bootloader selection
BOOTLOADER = caterina
# Build Options
# change yes to no to disable
#
BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
NKRO_ENABLE = no # USB Nkey Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
BLUETOOTH_ENABLE = no # Enable Bluetooth
AUDIO_ENABLE = no # Audio output
+84
View File
@@ -0,0 +1,84 @@
/*
Copyright 2021 Salicylic_Acid
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#pragma once
#include "config_common.h"
/* USB Device descriptor parameter */
#define VENDOR_ID 0x04D8
#define PRODUCT_ID 0xEA54
#define DEVICE_VER 0x0001
#define MANUFACTURER Salicylic_Acid
#define PRODUCT ergoarrows
/* key matrix size */
#define MATRIX_ROWS 12
#define MATRIX_COLS 7
// wiring of each half
#define MATRIX_ROW_PINS { D4, C6, D7, E6, B4, B5 }
#define MATRIX_COL_PINS { F4, F5, F6, F7, B1, B3, B2 }
#define DIODE_DIRECTION COL2ROW
/* Set 0 if debouncing isn't needed */
#define DEBOUNCE 5
/* serial.c configuration for split keyboard */
#define SOFT_SERIAL_PIN D0
#define SPLIT_HAND_PIN B6
/* 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
/* ws2812 RGB LED */
#define RGB_DI_PIN D3
#ifndef RGBLED_NUM
#define RGBLED_NUM 86
#define RGBLIGHT_SPLIT
#define RGBLED_SPLIT { 43, 43 }
#endif
#define RGBLIGHT_ANIMATIONS
#ifndef IOS_DEVICE_ENABLE
#define RGBLIGHT_LIMIT_VAL 90
#define RGBLIGHT_VAL_STEP 17
#else
#define RGBLIGHT_LIMIT_VAL 30
#define RGBLIGHT_VAL_STEP 4
#endif
#define RGBLIGHT_HUE_STEP 10
#define RGBLIGHT_SAT_STEP 17
#if defined(RGBLIGHT_ENABLE) && !defined(IOS_DEVICE_ENABLE)
// USB_MAX_POWER_CONSUMPTION value for naked48 keyboard
// 120 RGBoff, OLEDoff
// 120 OLED
// 330 RGB 6
// 300 RGB 32
// 310 OLED & RGB 32
#define USB_MAX_POWER_CONSUMPTION 400
#else
// fix iPhone and iPad power adapter issue
// iOS device need lessthan 100
#define USB_MAX_POWER_CONSUMPTION 100
#endif
+18
View File
@@ -0,0 +1,18 @@
/*
Copyright 2021 Salicylic_Acid
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 "ergoarrows.h"
+59
View File
@@ -0,0 +1,59 @@
/*
Copyright 2021 Salicylic_Acid
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"
/*
* ,------------------------------------------ ------------------------------------------.
* | L00 | L01 | L02 | L03 | L04 | L05 | L06 | | R06 | R05 | R04 | R03 | R02 | R01 | R00 |
* |------------------------------------------ ------------------------------------------+
* | L10 | L11 | L12 | L13 | L14 | L15 | L16 | | R16 | R15 | R14 | R13 | R12 | R11 | R10 |
* |------------------------------------------ ------------------------------------------+
* | L20 | L21 | L22 | L23 | L24 | L25 | L26 | | R26 | R25 | R24 | R23 | R22 | R21 | R20 |
* |------------------------------------------ ------------------------------------------+
* | L30 | L31 | L32 | L33 | L34 | L35 | L36 | | R36 | R35 | R34 | R33 | R32 | R31 | R30 |
* |------------------------------------------ ------------------------------------------+
* | L40 | L41 | L42 | L43 | L44 | L45 | L46 | | R46 | R45 | R44 | R43 | R42 | R41 | R40 |
* |------------------------------------------ ------------------------------------------+
* | L51 | L52 | L53 | | R53 | R52 | R51 |
* ------------------- ------------------'
*/
#define LAYOUT( \
L00, L01, L02, L03, L04, L05, L06, R06, R05, R04, R03, R02, R01, R00, \
L10, L11, L12, L13, L14, L15, L16, R16, R15, R14, R13, R12, R11, R10, \
L20, L21, L22, L23, L24, L25, L26, R26, R25, R24, R23, R22, R21, R20, \
L30, L31, L32, L33, L34, L35, L36, R36, R35, R34, R33, R32, R31, R30, \
L40, L41, L42, L43, L44, L45, L46, R46, R45, R44, R43, R42, R41, R40, \
L51, L52, L53, R53, R52, R51 \
) \
{ \
{ 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, L36 }, \
{ L40, L41, L42, L43, L44, L45, L46 }, \
{KC_NO, L51, L52, L53, KC_NO, KC_NO, KC_NO }, \
{ R00, R01, R02, R03, R04, R05, R06 }, \
{ R10, R11, R12, R13, R14, R15, R16 }, \
{ R20, R21, R22, R23, R24, R25, R26 }, \
{ R30, R31, R32, R33, R34, R35, R36 }, \
{ R40, R41, R42, R43, R44, R45, R46 }, \
{KC_NO, R51, R52, R53, KC_NO, KC_NO, KC_NO } \
}
+87
View File
@@ -0,0 +1,87 @@
{
"keyboard_name": "ergoarrows",
"url": "https://salicylic-acid3.hatenablog.com/",
"maintainer": "Salicylic_acid3",
"width": 16.25,
"height": 6.51,
"layouts": {
"LAYOUT": {
"layout": [
{"label":"#", "x":3.5, "y":0},
{"label":"*", "x":12.25, "y":0},
{"label":"@", "x":2.5, "y":0.125},
{"label":"$", "x":4.5, "y":0.125},
{"label":"&", "x":11.25, "y":0.13},
{"label":"(", "x":13.25, "y":0.13},
{"label":"%", "x":5.5, "y":0.25},
{"label":"^", "x":10.25, "y":0.25},
{"label":"!", "x":1.5, "y":0.375},
{"label":"Esc", "x":0.5, "y":0.38},
{"label":")", "x":14.25, "y":0.38},
{"label":"PrtScr", "x":15.25, "y":0.38},
{"x":6.5, "y":0.5}, {"x":9.25, "y":0.5},
{"label":"E", "x":3.5, "y":1},
{"label":"I", "x":12.25, "y":1},
{"label":"W", "x":2.5, "y":1.125},
{"label":"R", "x":4.5, "y":1.125},
{"label":"U", "x":11.25, "y":1.13},
{"label":"O", "x":13.25, "y":1.13},
{"label":"T", "x":5.5, "y":1.25},
{"label":"Y", "x":10.25, "y":1.25},
{"label":"Q", "x":1.5, "y":1.375},
{"label":"Tab", "x":0.5, "y":1.38},
{"label":"P", "x":14.25, "y":1.38},
{"label":"\u2019", "x":15.25, "y":1.38},
{"label":"[", "x":6.5, "y":1.5},
{"label":"]", "x":9.25, "y":1.5},
{"label":"D", "x":3.5, "y":2},
{"label":"K", "x":12.25, "y":2},
{"label":"S", "x":2.5, "y":2.125},
{"label":"F", "x":4.5, "y":2.125},
{"label":"J", "x":11.25, "y":2.13},
{"label":"L", "x":13.25, "y":2.13},
{"label":"G", "x":5.5, "y":2.25},
{"label":"H", "x":10.25, "y":2.25},
{"label":"A", "x":1.5, "y":2.375},
{"label":"Caps", "x":0.5, "y":2.38},
{"label":":", "x":14.25, "y":2.38},
{"label":"Ent", "x":15.25, "y":2.38},
{"label":"(", "x":6.5, "y":2.5},
{"label":")", "x":9.25, "y":2.5},
{"label":"C", "x":3.5, "y":3},
{"label":"<", "x":12.25, "y":3},
{"label":"X", "x":2.5, "y":3.125},
{"label":"V", "x":4.5, "y":3.125},
{"label":"M", "x":11.25, "y":3.13},
{"label":">", "x":13.25, "y":3.13},
{"label":"B", "x":5.5, "y":3.25},
{"label":"N", "x":10.25, "y":3.25},
{"label":"Z", "x":1.5, "y":3.375},
{"label":"Shift", "x":0.5, "y":3.38},
{"label":"?", "x":14.25, "y":3.38},
{"label":"_", "x":15.25, "y":3.38},
{"x":6.5, "y":3.5},
{"x":9.25, "y":3.5},
{"label":"Ctrl", "x":0.5, "y":4.375},
{"label":"Win", "x":1.5, "y":4.38},
{"label":"\u7121\u5909", "x":3.75, "y":4.38},
{"label":"Ent", "x":4.75, "y":4.38},
{"label":"Spc", "x":11, "y":4.38},
{"label":"\u5909\u63db", "x":12, "y":4.38},
{"label":"Alt", "x":14.25, "y":4.38},
{"label":"App", "x":15.25, "y":4.38},
{"label":"\u2191", "x":2.625, "y":4.505},
{"label":"\u2191", "x":13.13, "y":4.51},
{"label":"BS", "x":5.85, "y":4.6},
{"label":"Del", "x":9.9, "y":4.6},
{"label":"Del", "x":6.9, "y":5.15},
{"label":"BS", "x":8.85, "y":5.15},
{"label":"\u2190", "x":1.625, "y":5.505},
{"label":"\u2193", "x":2.625, "y":5.505},
{"label":"\u2192", "x":3.625, "y":5.505},
{"label":"\u2190", "x":12.13, "y":5.51},
{"label":"\u2193", "x":13.13, "y":5.51},
{"label":"\u2192", "x":14.13, "y":5.51}]
}
}
}
@@ -1,4 +1,4 @@
/* Copyright 2020 Jay Greco /* Copyright 2021 Salicylic_acid3
* *
* This program is free software: you can redistribute it and/or modify * 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 * it under the terms of the GNU General Public License as published by
@@ -13,9 +13,10 @@
* You should have received a copy of the GNU General Public License * You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>. * along with this program. If not, see <http://www.gnu.org/licenses/>.
*/ */
// Custom config starts after VIA's EEPROM usage,
// dynamic keymaps start after this. #pragma once
// Custom config Usage:
// 1 for enabled encoder modes (1 byte) /* Select hand configuration */
// 6 for 3x custom encoder settings, left, right, and press (18 bytes)
#define VIA_EEPROM_CUSTOM_CONFIG_SIZE 19 #define TAPPING_FORCE_HOLD
#define TAPPING_TERM 180
@@ -0,0 +1,61 @@
/*
Copyright 2021 Salicylic_Acid
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
// 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 layer_number {
_QWERTY = 0,
_FN,
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_QWERTY] = LAYOUT(
//,--------------------------------------------------------------| |--------------------------------------------------------------.
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, 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_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS,
//|--------+--------+--------+--------+--------+-----------------| |--------+--------+--------+--------+--------+--------+--------|
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_ENT,
//|--------+--------+--------+--------+--------+-----------------| |--------+--------+--------+--------+--------+--------+--------|
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
//|--------+--------+--------+--------+--------+-----------------| |--------+--------+--------+--------+--------+--------+--------|
KC_LCTRL, KC_LGUI, KC_UP, KC_LALT, KC_SPC, KC_BSPC, KC_DEL, KC_BSPC, KC_DEL, KC_SPC, KC_RALT, KC_UP, KC_APP, MO(_FN),
//|--------+--------+--------+--------+--------+-----------------| |--------+--------+--------+--------+--------+--------+--------|
KC_LEFT, KC_DOWN, KC_RGHT, KC_LEFT, KC_DOWN, KC_RGHT
//|--------------------------------------------------------------| |--------------------------------------------------------------'
),
[_FN] = LAYOUT(
//,--------------------------------------------------------------| |--------------------------------------------------------------.
KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR,
//|--------+--------+--------+--------+--------+-----------------| |--------+--------+--------+--------+--------+--------+--------|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_PSCR, KC_SLCK, KC_LBRC, KC_RBRC,
//|--------+--------+--------+--------+--------+-----------------| |--------+--------+--------+--------+--------+--------+--------|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_HOME, KC_PGUP, KC_QUOT, _______,
//|--------+--------+--------+--------+--------+-----------------| |--------+--------+--------+--------+--------+--------+--------|
_______, RGB_TOG, RGB_MOD, _______, RGB_SAD, RGB_SAI, _______, _______, _______, _______, KC_END, KC_PGDN, _______, _______,
//|--------+--------+--------+--------+--------+-----------------| |--------+--------+--------+--------+--------+--------+--------|
_______, RGB_VAD, KC_VOLU, RGB_VAI, RGB_HUD, RGB_HUI, _______, _______, _______, _______, _______, _______, _______, MO(_FN),
//|--------+--------+--------+--------+--------+-----------------| |--------+--------+--------+--------+--------+--------+--------|
KC_MPRV, KC_VOLD, KC_MNXT, _______, _______, _______
//|--------------------------------------------------------------| |--------------------------------------------------------------'
)
};
@@ -0,0 +1,22 @@
/* Copyright 2021 Salicylic_acid3
*
* 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
/* Select hand configuration */
#define TAPPING_FORCE_HOLD
#define TAPPING_TERM 180
@@ -0,0 +1,101 @@
/*
Copyright 2021 Salicylic_Acid
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include QMK_KEYBOARD_H
#include "keymap_jp.h"
// 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 layer_number {
_QWERTY = 0,
_LOWER,
_RAISE,
_ADJUST,
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_QWERTY] = LAYOUT(
//,--------------------------------------------------------------| |--------------------------------------------------------------.
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, 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_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS,
//|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
KC_LCTRL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_G, KC_H, KC_J, KC_K, KC_L, JP_MINS, KC_ENT,
//|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, JP_SLSH, JP_BSLS,
//|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
LALT_T(KC_ZKHK),KC_LGUI, KC_UP, KC_MHEN,LT(_LOWER,KC_ENT),KC_BSPC,KC_DEL,KC_BSPC,KC_DEL,LT(_RAISE,KC_SPC),KC_HENK,KC_UP,KC_RSFT, KC_APP,
//|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
KC_LEFT, KC_DOWN, KC_RGHT, KC_LEFT, KC_DOWN, KC_RGHT
//|--------------------------------------------------------------| |--------------------------------------------------------------'
),
[_LOWER] = LAYOUT(
//,--------------------------------------------------------------| |--------------------------------------------------------------.
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR,
//|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
JP_DQUO, JP_EXLM, JP_QUES, JP_LBRC, JP_RBRC, JP_TILD, _______, _______, KC_P6, KC_P7, KC_P8, KC_P9, JP_ASTR, JP_SLSH,
//|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
JP_QUOT, JP_HASH, JP_DQT, JP_LPRN, JP_RPRN, JP_AT, _______, _______, XXXXXXX, KC_P4, KC_P5, KC_P6, JP_MINS, JP_EQL,
//|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
JP_CIRC, JP_PERC, JP_AMPR, JP_SCLN, JP_COLN, JP_PIPE, _______, _______, KC_P0, KC_P1, KC_P2, KC_P3, JP_PLUS, _______,
//|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
_______, _______, _______, _______,MO(_LOWER),_______,_______, _______, _______,MO(_RAISE),JP_DOT, _______, _______, _______,
//|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
_______, _______, _______, _______, _______, _______
//|--------------------------------------------------------------| |--------------------------------------------------------------'
),
[_RAISE] = LAYOUT(
//,--------------------------------------------------------------| |--------------------------------------------------------------.
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR,
//|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
KC_TAB, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, XXXXXXX, XXXXXXX, XXXXXXX, KC_UP, XXXXXXX, XXXXXXX, XXXXXXX,
//|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
LCTL_T(KC_F11),XXXXXXX, KC_F2, KC_F3, KC_F4, KC_F5, _______, XXXXXXX, XXXXXXX, KC_LEFT, KC_DOWN,KC_RIGHT, XXXXXXX, XXXXXXX,
//|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
SFT_T(KC_F12), KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
//|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
_______, _______, KC_VOLU, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
//|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
KC_MPRV, KC_VOLD, KC_MNXT, _______, _______, _______
//|--------------------------------------------------------------| |--------------------------------------------------------------'
),
[_ADJUST] = 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, RGB_TOG, RGB_MOD, XXXXXXX,LCA(KC_DEL),LALT(KC_PSCR),KC_PSCR,
//|--------+--------+--------+--------+--------+-----------------| |--------+--------+--------+--------+--------+--------+--------|
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RGB_VAD, RGB_VAI, RGB_HUD, RGB_HUI, RGB_SAD, RGB_SAI,
//|--------+--------+--------+--------+--------+-----------------| |--------+--------+--------+--------+--------+--------+--------|
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______, RESET, XXXXXXX, XXXXXXX, XXXXXXX, _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
//|--------+--------+--------+--------+--------+-----------------| |--------+--------+--------+--------+--------+--------+--------|
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX
//|--------------------------------------------------------------| |--------------------------------------------------------------'
)
};
layer_state_t layer_state_set_user(layer_state_t state) {
state = update_tri_layer_state(state, _RAISE, _LOWER, _ADJUST);
return state;
}
+22
View File
@@ -0,0 +1,22 @@
/* Copyright 2021 Salicylic_acid3
*
* 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
/* Select hand configuration */
#define TAPPING_FORCE_HOLD
#define TAPPING_TERM 180
+88
View File
@@ -0,0 +1,88 @@
/*
Copyright 2021 Salicylic_Acid
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
// 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.
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = LAYOUT(
//,--------------------------------------------------------------| |--------------------------------------------------------------.
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, 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_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS,
//|--------+--------+--------+--------+--------+-----------------| |--------+--------+--------+--------+--------+--------+--------|
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_ENT,
//|--------+--------+--------+--------+--------+-----------------| |--------+--------+--------+--------+--------+--------+--------|
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
//|--------+--------+--------+--------+--------+-----------------| |--------+--------+--------+--------+--------+--------+--------|
KC_LCTRL, KC_LGUI, KC_UP, KC_LALT, KC_SPC, KC_BSPC, KC_DEL, KC_BSPC, KC_DEL, KC_SPC, KC_RALT, KC_UP, KC_APP, MO(1),
//|--------+--------+--------+--------+--------+-----------------| |--------+--------+--------+--------+--------+--------+--------|
KC_LEFT, KC_DOWN, KC_RGHT, KC_LEFT, KC_DOWN, KC_RGHT
//|--------------------------------------------------------------| |--------------------------------------------------------------'
),
[1] = LAYOUT(
//,--------------------------------------------------------------| |--------------------------------------------------------------.
KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR,
//|--------+--------+--------+--------+--------+-----------------| |--------+--------+--------+--------+--------+--------+--------|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_PSCR, KC_SLCK, KC_LBRC, KC_RBRC,
//|--------+--------+--------+--------+--------+-----------------| |--------+--------+--------+--------+--------+--------+--------|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_HOME, KC_PGUP, KC_QUOT, _______,
//|--------+--------+--------+--------+--------+-----------------| |--------+--------+--------+--------+--------+--------+--------|
_______, RGB_TOG, RGB_MOD, _______, RGB_SAD, RGB_SAI, _______, _______, _______, _______, KC_END, KC_PGDN, _______, _______,
//|--------+--------+--------+--------+--------+-----------------| |--------+--------+--------+--------+--------+--------+--------|
_______, RGB_VAD, KC_VOLU, RGB_VAI, RGB_HUD, RGB_HUI, _______, _______, _______, _______, _______, _______, _______, _______,
//|--------+--------+--------+--------+--------+-----------------| |--------+--------+--------+--------+--------+--------+--------|
KC_MPRV, KC_VOLD, KC_MNXT, _______, _______, _______
//|--------------------------------------------------------------| |--------------------------------------------------------------'
),
[2] = 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, 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
//|--------------------------------------------------------------| |--------------------------------------------------------------'
),
[2] = 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, 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
//|--------------------------------------------------------------| |--------------------------------------------------------------'
)
};
@@ -0,0 +1 @@
VIA_ENABLE = yes
+17
View File
@@ -0,0 +1,17 @@
# ergoarrows
![ergoarrows](https://cdn-ak.f.st-hatena.com/images/fotolife/S/Salicylic_acid3/20210117/20210117011553.png)
This is 76 keys Custom keyboard.
* Keyboard Maintainer: [Salicylic_acid3](https://github.com/Salicylic-acid3)
* Hardware Supported: nknl7 PCB, Pro Micro
* Hardware Availability: [PCB & Case Data](https://github.com/Salicylic-acid3/PCB_Data), [Booth Shop](https://salicylic-acid3.booth.pm/items/2681816)
Make example for this keyboard (after setting up your build environment):
make ergoarrows: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).
[Build guide](https://salicylic-acid3.hatenablog.com/entry/ergo-arrows-build-guide)
+24
View File
@@ -0,0 +1,24 @@
# MCU name
MCU = atmega32u4
# Bootloader selection
BOOTLOADER = caterina
# Build Options
# change yes to no to disable
#
BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
NKRO_ENABLE = no # USB Nkey Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
BLUETOOTH_ENABLE = no # Enable Bluetooth
AUDIO_ENABLE = no # Audio output
SPLIT_KEYBOARD = yes
+1 -1
View File
@@ -53,7 +53,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define RGB_DI_PIN B15 #define RGB_DI_PIN B15
#define RGBLED_NUM 16 #define RGBLED_NUM 16
#define RGBLIGT_LIMIT_VAL 200 #define RGBLIGHT_LIMIT_VAL 200
#define RGBLIGHT_SLEEP #define RGBLIGHT_SLEEP
#define RGBLIGHT_ANIMATIONS #define RGBLIGHT_ANIMATIONS
+21
View File
@@ -0,0 +1,21 @@
/* Copyright 2020 Weirdo
*
* 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 3 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/>.
*/
// Need to override the SysTick timer to use TIM3 -- this is a 16-bit timer on F303
// so we need to change resolution and frequency to match.
#define CH_CFG_ST_RESOLUTION 16
#define CH_CFG_ST_FREQUENCY 10000
#include_next "chconf.h"
+52
View File
@@ -0,0 +1,52 @@
/* Copyright 2020 Weirdo
*
* 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 0x7764
#define PRODUCT_ID 0x676D
#define DEVICE_VER 0x0001
#define MANUFACTURER Weirdo
#define PRODUCT Geminate60
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 15
#define MATRIX_ROW_PINS { A9, A10, B10, B11, B15}
#define MATRIX_COL_PINS { A8, B14, B13, B12, B1, B0, A7 , A1 , A15, B3, B4, B5, B6, B7, B8}
#define DIODE_DIRECTION ROW2COL
#define DEBOUNCE 5
#define RGB_DI_PIN A6
#define RGBLED_NUM 1
//#define RGBLIGHT_DISABLE_KEYCODES
/* 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
+16
View File
@@ -0,0 +1,16 @@
/* Copyright 2020 Weirdo
*
* 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 "geminate60.h"
+30
View File
@@ -0,0 +1,30 @@
/*
Copyright 2020 Weirdo
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( \
K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K010, K011, K012, K013, K014, \
K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K110, K111, K112, K113, \
K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K210, K211, K212, K213, \
K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K310, K311, K312, K313, \
K40, K41, K42, K46, K410, K411, K412, K413 ) \
{ \
{K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K010, K011, K012, K013, K014}, \
{K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K110, K111, K112, K113 }, \
{K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K210, K211, K212, K213 }, \
{K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K310, K311, K312, K313 }, \
{K40, K41, K42, K46, K410, K411, K412, K413 } \
}
+524
View File
@@ -0,0 +1,524 @@
/*
ChibiOS - Copyright (C) 2006..2018 Giovanni Di Sirio
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
/**
* @file templates/halconf.h
* @brief HAL configuration header.
* @details HAL configuration file, this file allows to enable or disable the
* various device drivers from your application. You may also use
* this file in order to override the device drivers default settings.
*
* @addtogroup HAL_CONF
* @{
*/
#ifndef HALCONF_H
# define HALCONF_H
# define _CHIBIOS_HAL_CONF_
# define _CHIBIOS_HAL_CONF_VER_7_0_
# include "mcuconf.h"
/**
* @brief Enables the PAL subsystem.
*/
# if !defined(HAL_USE_PAL) || defined(__DOXYGEN__)
# define HAL_USE_PAL TRUE
# endif
/**
* @brief Enables the ADC subsystem.
*/
# if !defined(HAL_USE_ADC) || defined(__DOXYGEN__)
# define HAL_USE_ADC FALSE
# endif
/**
* @brief Enables the CAN subsystem.
*/
# if !defined(HAL_USE_CAN) || defined(__DOXYGEN__)
# define HAL_USE_CAN FALSE
# endif
/**
* @brief Enables the cryptographic subsystem.
*/
# if !defined(HAL_USE_CRY) || defined(__DOXYGEN__)
# define HAL_USE_CRY FALSE
# endif
/**
* @brief Enables the DAC subsystem.
*/
# if !defined(HAL_USE_DAC) || defined(__DOXYGEN__)
# define HAL_USE_DAC TRUE
# endif
/**
* @brief Enables the GPT subsystem.
*/
# if !defined(HAL_USE_GPT) || defined(__DOXYGEN__)
# define HAL_USE_GPT TRUE
# endif
/**
* @brief Enables the I2C subsystem.
*/
# if !defined(HAL_USE_I2C) || defined(__DOXYGEN__)
# define HAL_USE_I2C TRUE
# endif
/**
* @brief Enables the I2S subsystem.
*/
# if !defined(HAL_USE_I2S) || defined(__DOXYGEN__)
# define HAL_USE_I2S FALSE
# endif
/**
* @brief Enables the ICU subsystem.
*/
# if !defined(HAL_USE_ICU) || defined(__DOXYGEN__)
# define HAL_USE_ICU FALSE
# endif
/**
* @brief Enables the MAC subsystem.
*/
# if !defined(HAL_USE_MAC) || defined(__DOXYGEN__)
# define HAL_USE_MAC FALSE
# endif
/**
* @brief Enables the MMC_SPI subsystem.
*/
# if !defined(HAL_USE_MMC_SPI) || defined(__DOXYGEN__)
# define HAL_USE_MMC_SPI FALSE
# endif
/**
* @brief Enables the PWM subsystem.
*/
# if !defined(HAL_USE_PWM) || defined(__DOXYGEN__)
# define HAL_USE_PWM TRUE
# endif
/**
* @brief Enables the RTC subsystem.
*/
# if !defined(HAL_USE_RTC) || defined(__DOXYGEN__)
# define HAL_USE_RTC FALSE
# endif
/**
* @brief Enables the SDC subsystem.
*/
# if !defined(HAL_USE_SDC) || defined(__DOXYGEN__)
# define HAL_USE_SDC FALSE
# endif
/**
* @brief Enables the SERIAL subsystem.
*/
# if !defined(HAL_USE_SERIAL) || defined(__DOXYGEN__)
# define HAL_USE_SERIAL FALSE
# endif
/**
* @brief Enables the SERIAL over USB subsystem.
*/
# if !defined(HAL_USE_SERIAL_USB) || defined(__DOXYGEN__)
# define HAL_USE_SERIAL_USB TRUE
# endif
/**
* @brief Enables the SIO subsystem.
*/
# if !defined(HAL_USE_SIO) || defined(__DOXYGEN__)
# define HAL_USE_SIO FALSE
# endif
/**
* @brief Enables the SPI subsystem.
*/
# if !defined(HAL_USE_SPI) || defined(__DOXYGEN__)
# define HAL_USE_SPI TRUE
# endif
/**
* @brief Enables the TRNG subsystem.
*/
# if !defined(HAL_USE_TRNG) || defined(__DOXYGEN__)
# define HAL_USE_TRNG FALSE
# endif
/**
* @brief Enables the UART subsystem.
*/
# if !defined(HAL_USE_UART) || defined(__DOXYGEN__)
# define HAL_USE_UART FALSE
# endif
/**
* @brief Enables the USB subsystem.
*/
# if !defined(HAL_USE_USB) || defined(__DOXYGEN__)
# define HAL_USE_USB TRUE
# endif
/**
* @brief Enables the WDG subsystem.
*/
# if !defined(HAL_USE_WDG) || defined(__DOXYGEN__)
# define HAL_USE_WDG FALSE
# endif
/**
* @brief Enables the WSPI subsystem.
*/
# if !defined(HAL_USE_WSPI) || defined(__DOXYGEN__)
# define HAL_USE_WSPI FALSE
# endif
/*===========================================================================*/
/* PAL driver related settings. */
/*===========================================================================*/
/**
* @brief Enables synchronous APIs.
* @note Disabling this option saves both code and data space.
*/
# if !defined(PAL_USE_CALLBACKS) || defined(__DOXYGEN__)
# define PAL_USE_CALLBACKS TRUE
# endif
/**
* @brief Enables synchronous APIs.
* @note Disabling this option saves both code and data space.
*/
# if !defined(PAL_USE_WAIT) || defined(__DOXYGEN__)
# define PAL_USE_WAIT TRUE
# endif
/*===========================================================================*/
/* ADC driver related settings. */
/*===========================================================================*/
/**
* @brief Enables synchronous APIs.
* @note Disabling this option saves both code and data space.
*/
# if !defined(ADC_USE_WAIT) || defined(__DOXYGEN__)
# define ADC_USE_WAIT TRUE
# endif
/**
* @brief Enables the @p adcAcquireBus() and @p adcReleaseBus() APIs.
* @note Disabling this option saves both code and data space.
*/
# if !defined(ADC_USE_MUTUAL_EXCLUSION) || defined(__DOXYGEN__)
# define ADC_USE_MUTUAL_EXCLUSION TRUE
# endif
/*===========================================================================*/
/* CAN driver related settings. */
/*===========================================================================*/
/**
* @brief Sleep mode related APIs inclusion switch.
*/
# if !defined(CAN_USE_SLEEP_MODE) || defined(__DOXYGEN__)
# define CAN_USE_SLEEP_MODE TRUE
# endif
/**
* @brief Enforces the driver to use direct callbacks rather than OSAL events.
*/
# if !defined(CAN_ENFORCE_USE_CALLBACKS) || defined(__DOXYGEN__)
# define CAN_ENFORCE_USE_CALLBACKS FALSE
# endif
/*===========================================================================*/
/* CRY driver related settings. */
/*===========================================================================*/
/**
* @brief Enables the SW fall-back of the cryptographic driver.
* @details When enabled, this option, activates a fall-back software
* implementation for algorithms not supported by the underlying
* hardware.
* @note Fall-back implementations may not be present for all algorithms.
*/
# if !defined(HAL_CRY_USE_FALLBACK) || defined(__DOXYGEN__)
# define HAL_CRY_USE_FALLBACK FALSE
# endif
/**
* @brief Makes the driver forcibly use the fall-back implementations.
*/
# if !defined(HAL_CRY_ENFORCE_FALLBACK) || defined(__DOXYGEN__)
# define HAL_CRY_ENFORCE_FALLBACK FALSE
# endif
/*===========================================================================*/
/* DAC driver related settings. */
/*===========================================================================*/
/**
* @brief Enables synchronous APIs.
* @note Disabling this option saves both code and data space.
*/
# if !defined(DAC_USE_WAIT) || defined(__DOXYGEN__)
# define DAC_USE_WAIT TRUE
# endif
/**
* @brief Enables the @p dacAcquireBus() and @p dacReleaseBus() APIs.
* @note Disabling this option saves both code and data space.
*/
# if !defined(DAC_USE_MUTUAL_EXCLUSION) || defined(__DOXYGEN__)
# define DAC_USE_MUTUAL_EXCLUSION TRUE
# endif
/*===========================================================================*/
/* I2C driver related settings. */
/*===========================================================================*/
/**
* @brief Enables the mutual exclusion APIs on the I2C bus.
*/
# if !defined(I2C_USE_MUTUAL_EXCLUSION) || defined(__DOXYGEN__)
# define I2C_USE_MUTUAL_EXCLUSION TRUE
# endif
/*===========================================================================*/
/* MAC driver related settings. */
/*===========================================================================*/
/**
* @brief Enables the zero-copy API.
*/
# if !defined(MAC_USE_ZERO_COPY) || defined(__DOXYGEN__)
# define MAC_USE_ZERO_COPY FALSE
# endif
/**
* @brief Enables an event sources for incoming packets.
*/
# if !defined(MAC_USE_EVENTS) || defined(__DOXYGEN__)
# define MAC_USE_EVENTS TRUE
# endif
/*===========================================================================*/
/* MMC_SPI driver related settings. */
/*===========================================================================*/
/**
* @brief Delays insertions.
* @details If enabled this options inserts delays into the MMC waiting
* routines releasing some extra CPU time for the threads with
* lower priority, this may slow down the driver a bit however.
* This option is recommended also if the SPI driver does not
* use a DMA channel and heavily loads the CPU.
*/
# if !defined(MMC_NICE_WAITING) || defined(__DOXYGEN__)
# define MMC_NICE_WAITING TRUE
# endif
/*===========================================================================*/
/* SDC driver related settings. */
/*===========================================================================*/
/**
* @brief Number of initialization attempts before rejecting the card.
* @note Attempts are performed at 10mS intervals.
*/
# if !defined(SDC_INIT_RETRY) || defined(__DOXYGEN__)
# define SDC_INIT_RETRY 100
# endif
/**
* @brief Include support for MMC cards.
* @note MMC support is not yet implemented so this option must be kept
* at @p FALSE.
*/
# if !defined(SDC_MMC_SUPPORT) || defined(__DOXYGEN__)
# define SDC_MMC_SUPPORT FALSE
# endif
/**
* @brief Delays insertions.
* @details If enabled this options inserts delays into the MMC waiting
* routines releasing some extra CPU time for the threads with
* lower priority, this may slow down the driver a bit however.
*/
# if !defined(SDC_NICE_WAITING) || defined(__DOXYGEN__)
# define SDC_NICE_WAITING TRUE
# endif
/**
* @brief OCR initialization constant for V20 cards.
*/
# if !defined(SDC_INIT_OCR_V20) || defined(__DOXYGEN__)
# define SDC_INIT_OCR_V20 0x50FF8000U
# endif
/**
* @brief OCR initialization constant for non-V20 cards.
*/
# if !defined(SDC_INIT_OCR) || defined(__DOXYGEN__)
# define SDC_INIT_OCR 0x80100000U
# endif
/*===========================================================================*/
/* SERIAL driver related settings. */
/*===========================================================================*/
/**
* @brief Default bit rate.
* @details Configuration parameter, this is the baud rate selected for the
* default configuration.
*/
# if !defined(SERIAL_DEFAULT_BITRATE) || defined(__DOXYGEN__)
# define SERIAL_DEFAULT_BITRATE 38400
# endif
/**
* @brief Serial buffers size.
* @details Configuration parameter, you can change the depth of the queue
* buffers depending on the requirements of your application.
* @note The default is 16 bytes for both the transmission and receive
* buffers.
*/
# if !defined(SERIAL_BUFFERS_SIZE) || defined(__DOXYGEN__)
# define SERIAL_BUFFERS_SIZE 16
# endif
/*===========================================================================*/
/* SERIAL_USB driver related setting. */
/*===========================================================================*/
/**
* @brief Serial over USB buffers size.
* @details Configuration parameter, the buffer size must be a multiple of
* the USB data endpoint maximum packet size.
* @note The default is 256 bytes for both the transmission and receive
* buffers.
*/
# if !defined(SERIAL_USB_BUFFERS_SIZE) || defined(__DOXYGEN__)
# define SERIAL_USB_BUFFERS_SIZE 1
# endif
/**
* @brief Serial over USB number of buffers.
* @note The default is 2 buffers.
*/
# if !defined(SERIAL_USB_BUFFERS_NUMBER) || defined(__DOXYGEN__)
# define SERIAL_USB_BUFFERS_NUMBER 2
# endif
/*===========================================================================*/
/* SPI driver related settings. */
/*===========================================================================*/
/**
* @brief Enables synchronous APIs.
* @note Disabling this option saves both code and data space.
*/
# if !defined(SPI_USE_WAIT) || defined(__DOXYGEN__)
# define SPI_USE_WAIT TRUE
# endif
/**
* @brief Enables circular transfers APIs.
* @note Disabling this option saves both code and data space.
*/
# if !defined(SPI_USE_CIRCULAR) || defined(__DOXYGEN__)
# define SPI_USE_CIRCULAR FALSE
# endif
/**
* @brief Enables the @p spiAcquireBus() and @p spiReleaseBus() APIs.
* @note Disabling this option saves both code and data space.
*/
# if !defined(SPI_USE_MUTUAL_EXCLUSION) || defined(__DOXYGEN__)
# define SPI_USE_MUTUAL_EXCLUSION TRUE
# endif
/**
* @brief Handling method for SPI CS line.
* @note Disabling this option saves both code and data space.
*/
# if !defined(SPI_SELECT_MODE) || defined(__DOXYGEN__)
# define SPI_SELECT_MODE SPI_SELECT_MODE_PAD
# endif
/*===========================================================================*/
/* UART driver related settings. */
/*===========================================================================*/
/**
* @brief Enables synchronous APIs.
* @note Disabling this option saves both code and data space.
*/
# if !defined(UART_USE_WAIT) || defined(__DOXYGEN__)
# define UART_USE_WAIT FALSE
# endif
/**
* @brief Enables the @p uartAcquireBus() and @p uartReleaseBus() APIs.
* @note Disabling this option saves both code and data space.
*/
# if !defined(UART_USE_MUTUAL_EXCLUSION) || defined(__DOXYGEN__)
# define UART_USE_MUTUAL_EXCLUSION FALSE
# endif
/*===========================================================================*/
/* USB driver related settings. */
/*===========================================================================*/
/**
* @brief Enables synchronous APIs.
* @note Disabling this option saves both code and data space.
*/
# if !defined(USB_USE_WAIT) || defined(__DOXYGEN__)
# define USB_USE_WAIT TRUE
# endif
/*===========================================================================*/
/* WSPI driver related settings. */
/*===========================================================================*/
/**
* @brief Enables synchronous APIs.
* @note Disabling this option saves both code and data space.
*/
# if !defined(WSPI_USE_WAIT) || defined(__DOXYGEN__)
# define WSPI_USE_WAIT TRUE
# endif
/**
* @brief Enables the @p wspiAcquireBus() and @p wspiReleaseBus() APIs.
* @note Disabling this option saves both code and data space.
*/
# if !defined(WSPI_USE_MUTUAL_EXCLUSION) || defined(__DOXYGEN__)
# define WSPI_USE_MUTUAL_EXCLUSION TRUE
# endif
#endif /* HALCONF_H */
/** @} */
+79
View File
@@ -0,0 +1,79 @@
{
"keyboard_name": "geminate60",
"url": "",
"maintainer": "qmk",
"width": 15,
"height": 5,
"layouts": {
"LAYOUT": {
"layout": [
{"label":"K00", "x":0, "y":0},
{"label":"K01", "x":1, "y":0},
{"label":"K02", "x":2, "y":0},
{"label":"K0", "x":3, "y":0},
{"label":"K04", "x":4, "y":0},
{"label":"K05", "x":5, "y":0},
{"label":"K06", "x":6, "y":0},
{"label":"K07", "x":7, "y":0},
{"label":"K08", "x":8, "y":0},
{"label":"K09", "x":9, "y":0},
{"label":"K010", "x":10, "y":0},
{"label":"K011", "x":11, "y":0},
{"label":"K012", "x":12, "y":0},
{"label":"K013", "x":13, "y":0},
{"label":"K014", "x":14, "y":0},
{"label":"K10", "x":0, "y":1, "w":1.5},
{"label":"K11", "x":1.5, "y":1},
{"label":"K12", "x":2.5, "y":1},
{"label":"K13", "x":3.5, "y":1},
{"label":"K14", "x":4.5, "y":1},
{"label":"K15", "x":5.5, "y":1},
{"label":"K16", "x":6.5, "y":1},
{"label":"K17", "x":7.5, "y":1},
{"label":"K18", "x":8.5, "y":1},
{"label":"K19", "x":9.5, "y":1},
{"label":"K110", "x":10.5, "y":1},
{"label":"K111", "x":11.5, "y":1},
{"label":"K112", "x":12.5, "y":1},
{"label":"K113", "x":13.5, "y":1, "w":1.5},
{"label":"K20", "x":0, "y":2, "w":1.75},
{"label":"K21", "x":1.75, "y":2},
{"label":"K22", "x":2.75, "y":2},
{"label":"K23", "x":3.75, "y":2},
{"label":"K24", "x":4.75, "y":2},
{"label":"K25", "x":5.75, "y":2},
{"label":"K26", "x":6.75, "y":2},
{"label":"K27", "x":7.75, "y":2},
{"label":"K28", "x":8.75, "y":2},
{"label":"K29", "x":9.75, "y":2},
{"label":"K210", "x":10.75, "y":2},
{"label":"K211", "x":11.75, "y":2},
{"label":"K212", "x":12.75, "y":2},
{"label":"K213", "x":13.75, "y":2, "w":1.25},
{"label":"K30", "x":0, "y":3, "w":1.25},
{"label":"K31", "x":1.25, "y":3},
{"label":"K32", "x":2.25, "y":3},
{"label":"K33", "x":3.25, "y":3},
{"label":"K34", "x":4.25, "y":3},
{"label":"K35", "x":5.25, "y":3},
{"label":"K36", "x":6.25, "y":3},
{"label":"K37", "x":7.25, "y":3},
{"label":"K38", "x":8.25, "y":3},
{"label":"K39", "x":9.25, "y":3},
{"label":"K310", "x":10.25, "y":3},
{"label":"K311", "x":11.25, "y":3},
{"label":"K312", "x":12.25, "y":3, "w":1.75},
{"label":"K313", "x":14, "y":3},
{"label":"K40", "x":0, "y":4, "w":1.25},
{"label":"K41", "x":1.25, "y":4, "w":1.25},
{"label":"K42", "x":2.5, "y":4, "w":1.25},
{"label":"K46", "x":3.75, "y":4, "w":6.25},
{"label":"K410", "x":10, "y":4, "w":1.25},
{"label":"K411", "x":11.25, "y":4, "w":1.25},
{"label":"K412", "x":12.5, "y":4, "w":1.25},
{"label":"K413", "x":13.75, "y":4, "w":1.25}
]
}
}
,"meta": "https://noroadsleft.github.io/kbf_qmk_converter/"
}
@@ -0,0 +1,50 @@
/* Copyright 2020 Weirdo
*
* 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
// [Keymaps] -----------------------------------------------------------------//
enum layer_names {
_BASE,
_FN
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_BASE] = LAYOUT(KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_BSPC,
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS,
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_BSLS, KC_ENT,
KC_LSFT, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMMA, KC_DOT, KC_SLSH, KC_RSFT, MO(1),
KC_LCTL, KC_LWIN, KC_LALT,KC_SPACE, KC_RALT, KC_RALT, KC_RWIN, KC_RCTL),
[_FN] = LAYOUT(KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_DEL,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_UP, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_LEFT, KC_DOWN, KC_RIGHT), //
};
bool led_update_user(led_t led_state) {
if(led_state.caps_lock){
rgblight_setrgb_at(192, 192, 192, 0);
}else{
rgblight_setrgb_at(0, 0, 0, 0);
}
return true;
}
+58
View File
@@ -0,0 +1,58 @@
/* Copyright 2020 Weirdo
*
* 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
// [Keymaps] -----------------------------------------------------------------//
enum layer_names { _BASE, _FN ,_FN1 ,_FN2 };
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_BASE] = LAYOUT(KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_BSPC,
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS,
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_BSLS, KC_ENT,
KC_LSFT, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMMA, KC_DOT, KC_SLSH, KC_RSFT, MO(1),
KC_LCTL, KC_LWIN, KC_LALT, KC_SPACE, KC_RALT, KC_RALT, KC_RWIN, KC_RCTL),
[_FN] = LAYOUT(KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_DEL,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_UP, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_LEFT, KC_DOWN, KC_RIGHT), //
[_FN1] = LAYOUT(KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,),
[_FN2] = LAYOUT(KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
};
bool led_update_user(led_t led_state) {
if(led_state.caps_lock){
rgblight_setrgb_at(192, 192, 192, 0);
}else{
rgblight_setrgb_at(0, 0, 0, 0);
}
return true;
}
@@ -0,0 +1 @@
VIA_ENABLE = yes
+15
View File
@@ -0,0 +1,15 @@
# Geminate60
![Geminate60](https://www.hualigs.cn/image/600d9391f16d7.jpg)
A 60% keyboard based on STM32f303
* Keyboard Maintainer: [Weirdo](https://weirdo-f.github.io)(https://github.com/1248314361)
* Hardware Supported: Geminate60
* Hardware Availability: Not yet
Make example for this keyboard (after setting up your build environment):
make geminate60: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).
+21
View File
@@ -0,0 +1,21 @@
# MCU name
MCU = STM32F303
# Build Options
# change yes to no to disable
#
BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration
MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = 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
#LAYOUTS = ortho_5x15
+17
View File
@@ -0,0 +1,17 @@
/* Copyright 2021 Matteo Bonora
*
* 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 "aim65.h"
+36
View File
@@ -0,0 +1,36 @@
/* Copyright 2021 Matteo Bonora
*
* 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( \
K62, K71, K61, K74, K64, K75, K65, K76, K66, K77, K67, K72, K53, \
K52, K42, K51, K41, K54, K44, K55, K45, K56, K46, K57, K47, K22, K40, \
K60, K31, K21, K34, K24, K35, K25, K36, K26, K37, K27, K33, K12, K23,\
K70, K01, K11, K04, K14, K05, K15, K06, K16, K07, K17, K20, \
K00 \
) { \
{ K00, K01, KC_NO, KC_NO, K04, K05, K06, K07 }, \
{ KC_NO, K11, K12, KC_NO, K14, K15, K16, K17 }, \
{ K20, K21, K22, K23, K24, K25, K26, K27 }, \
{ KC_NO, K31, KC_NO, K33, K34, K35, K36, K37 }, \
{ K40, K41, K42, KC_NO, K44, K45, K46, K47 }, \
{ KC_NO, K51, K52, K53, K54, K55, K56, K57 }, \
{ K60, K61, K62, KC_NO, K64, K65, K66, K67 }, \
{ K70, K71, K72, KC_NO, K74, K75, K76, K77 }, \
}
+48
View File
@@ -0,0 +1,48 @@
/* Copyright 2021 Matteo Bonora
*
* 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 0x0F34
#define DEVICE_VER 0x0001
#define MANUFACTURER Hi-Tek
#define PRODUCT AIM-65
/* key matrix size */
#define MATRIX_ROWS 8
#define MATRIX_COLS 8
/*
* 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 { D0, D4, D7, E6, B4, B5, B3, B1 }
#define MATRIX_COL_PINS { D1, C6, B6, B2, F7, F6, F5, F4 }
#define DIODE_DIRECTION COL2ROW
#define LED_CAPS_LOCK_PIN B0
#define LED_PIN_ON_STATE 0
+68
View File
@@ -0,0 +1,68 @@
{
"keyboard_name": "Hi-Tek AIM-65",
"url": "https://github.com/Bonnee/aim-65_keyboard",
"maintainer": "bonnee",
"width": 15.25,
"height": 5,
"layouts": {
"LAYOUT": {
"layout": [
{"label":"K62 (B3,B6)", "x":1, "y":0},
{"label":"K71 (B1,C6)", "x":2, "y":0},
{"label":"K61 (B3,C6)", "x":3, "y":0},
{"label":"K74 (B1,F7)", "x":4, "y":0},
{"label":"K64 (B3,F7)", "x":5, "y":0},
{"label":"K75 (B1,F6)", "x":6, "y":0},
{"label":"K65 (B3,F6)", "x":7, "y":0},
{"label":"K76 (B1,F5)", "x":8, "y":0},
{"label":"K66 (B3,F5)", "x":9, "y":0},
{"label":"K77 (B1,F4)", "x":10, "y":0},
{"label":"K67 (B3,F4)", "x":11, "y":0},
{"label":"K72 (B1,B6)", "x":12, "y":0},
{"label":"K53 (B5,B2)", "x":13, "y":0},
{"label":"K52 (B5,B6)", "x":0, "y":1, "w":1.5},
{"label":"K42 (B4,B6)", "x":1.5, "y":1},
{"label":"K51 (B5,C6)", "x":2.5, "y":1},
{"label":"K41 (B4,C6)", "x":3.5, "y":1},
{"label":"K54 (B5,F7)", "x":4.5, "y":1},
{"label":"K44 (B4,F7)", "x":5.5, "y":1},
{"label":"K55 (B5,F6)", "x":6.5, "y":1},
{"label":"K45 (B4,F6)", "x":7.5, "y":1},
{"label":"K56 (B5,F5)", "x":8.5, "y":1},
{"label":"K46 (B4,F5)", "x":9.5, "y":1},
{"label":"K57 (B5,F4)", "x":10.5, "y":1},
{"label":"K47 (B4,F4)", "x":11.5, "y":1},
{"label":"K22 (D7,B6)", "x":12.5, "y":1},
{"label":"K40 (B4,D1)", "x":13.5, "y":1},
{"label":"K60 (B3,D1)", "x":0.75, "y":2},
{"label":"K31 (E6,C6)", "x":1.75, "y":2},
{"label":"K21 (D7,C6)", "x":2.75, "y":2},
{"label":"K34 (E6,F7)", "x":3.75, "y":2},
{"label":"K24 (D7,F7)", "x":4.75, "y":2},
{"label":"K35 (E6,F6)", "x":5.75, "y":2},
{"label":"K25 (D7,F6)", "x":6.75, "y":2},
{"label":"K36 (E6,F5)", "x":7.75, "y":2},
{"label":"K26 (D7,F5)", "x":8.75, "y":2},
{"label":"K37 (E6,F4)", "x":9.75, "y":2},
{"label":"K27 (D7,F4)", "x":10.75, "y":2},
{"label":"K33 (E6,B2)", "x":11.75, "y":2},
{"label":"K12 (D4,B6)", "x":12.75, "y":2},
{"label":"K23 (D7,B2)", "x":13.75, "y":2, "w":1.5},
{"label":"K70 (B1,D1)", "x":0.75, "y":3, "w":1.5},
{"label":"K01 (D0,C6)", "x":2.25, "y":3},
{"label":"K11 (D4,C6)", "x":3.25, "y":3},
{"label":"K04 (D0,F7)", "x":4.25, "y":3},
{"label":"K14 (D4,F7)", "x":5.25, "y":3},
{"label":"K05 (D0,F6)", "x":6.25, "y":3},
{"label":"K15 (D4,F6)", "x":7.25, "y":3},
{"label":"K06 (D0,F5)", "x":8.25, "y":3},
{"label":"K16 (D4,F5)", "x":9.25, "y":3},
{"label":"K07 (D0,F4)", "x":10.25, "y":3},
{"label":"K17 (D4,F4)", "x":11.25, "y":3},
{"label":"K20 (D7,D1)", "x":12.25, "y":3, "w":1.5},
{"label":"K00 (D0,D1)", "x":3.25, "y":4, "w":8}
]
}
}
}
@@ -0,0 +1,42 @@
/* Copyright 2021 Matteo Bonora
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include QMK_KEYBOARD_H
#define CTESC LCTL_T(KC_ESC)
enum layer_names {
BL,
FL
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[BL] = LAYOUT(
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_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_RGUI,
CTESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_BSLS, KC_ENT,
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
LT(FL, KC_SPC)
),
[FL] = LAYOUT(
KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL,
KC_TAB, _______, _______, _______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______
)
};
@@ -0,0 +1,27 @@
/* Copyright 2021 Matteo Bonora
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include QMK_KEYBOARD_H
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
LAYOUT(
KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_SCLN, KC_F3, KC_PSCR,
KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_MINS, KC_F2,KC_RETURN,
KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_AT, KC_F1, KC_DEL,
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_SPC
)
};
+27
View File
@@ -0,0 +1,27 @@
# Hi-Tek AIM-65
![Hi-Tek AIM-65 Keyboard](https://imgur.com/7Gam1f2l.jpg)
The keboard assembly that came with the Rockwell AIM-65, a microcomputer from the '70s [Wikipedia article](https://en.wikipedia.org/wiki/AIM-65)
The controller is a Pro Micro handwired to the original connector. [This](https://github.com/Bonnee/aim-65_keyboard) repo collects 3D models for the case, schematics for the matrix and pics.
* Keyboard Maintainer: [Matteo Bonora](https://github.com/bonnee)
* Hardware Supported: Pro Micro
The default layout is useless on a modern computer, you can use it as a base for your own though.
Make example for this keyboard (after setting up your build environment):
make handwired/aim65:default
Flashing example for this keyboard:
make handwired/aim65:default:flash
To reset the board into bootloader mode, do one of the following:
* Double-tap the Reset switch mounted on the Pro Micro
* Hold the spacebar while connecting the USB cable (also erases persistent settings)
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).
Loaded 100 of 342 files, more files were not shown because too many files have changed in this diff. Show more