1
0

Compare commits

..

77 Commits

Author SHA1 Message Date
Drashna Jaelre
fdeec29636 Overhaul Unicode Common functionality (#4325)
* Standardize the Unicode EEPROM code

* Remove unicode init from process_record_* functions

* Add unicode init to where it belongs: matrix_init_quantum

* Move Unicode proccessing to unicode common

* Add audio feedback to input mode keys to drive konstantin up a wall

* Tap_code cleanup

* Update keycodes

* Update unicode documentation

* Update unicode keycodes for consistency/easier merge

* Add Audio Feedback section

* Remove Functions from feature page

And link to the file instead.  Link to specific lines later on.

* Fix spacing

Co-Authored-By: drashna <drashna@live.com>

* Because I missed it!

Co-Authored-By: drashna <drashna@live.com>

* Fix spacing

Co-Authored-By: drashna <drashna@live.com>

* SPAAAAAAAAAACing

Co-Authored-By: drashna <drashna@live.com>

* Add BSD for future compatibility

* Thought I fixed that!

Co-Authored-By: drashna <drashna@live.com>

* non-breaking

Co-Authored-By: drashna <drashna@live.com>

* Considered that

Co-Authored-By: drashna <drashna@live.com>

* Yuuup

Co-Authored-By: drashna <drashna@live.com>

* consistency

Co-Authored-By: drashna <drashna@live.com>

* white spaces .... copied from elsewhere

Co-Authored-By: drashna <drashna@live.com>

* white spaces

Co-Authored-By: drashna <drashna@live.com>

* white spaces

Co-Authored-By: drashna <drashna@live.com>

* Update keycode defines

* Fix Linux Song

* Update all of the songs

* Cleanup

* Move and update check to ensure only one unicode method is enabled

* Update quantum/quantum_keycodes.h

* Update documentation

* Wordsmithing and cleanup

* Format unicode_common (#13)

* case alignment

* process_record_unicode_common → process_unicode_common

* Move song arrays into function where they're used, align preprocessor directives

* Swap the order of UC_WIN and UC_BSD

* Update Unicode docs

* Reorder Unicode mode stuff to match the order of input mode constants

* Fix capitalization in doc subtitle

* Readd BSD and OSX_RALT songs

* Reword BSD note in docs

* Readd BSD keycode description

* Reword explanation of input on different platforms

* Steal vomindoraan's input mode documentation

Co-Authored-By: vomindoraan (vomindoraan@gmail.com)

* Willingly give Drashna the rest of my Unicode doc improvements

* Wordsmithing

Co-Authored-By: drashna <drashna@live.com>

* remove merge artifacts

* Unicode common cleanup (#17)

* Standardize the Unicode EEPROM code

* Remove unicode init from process_record_* functions

* Add unicode init to where it belongs: matrix_init_quantum

* Move Unicode proccessing to unicode common

* Add audio feedback to input mode keys to drive konstantin up a wall

* Tap_code cleanup

* Update keycodes

* Update unicode documentation

* Update unicode keycodes for consistency/easier merge

* Add Audio Feedback section

* Remove Functions from feature page

And link to the file instead.  Link to specific lines later on.

* Fix white spaces

Co-Authored-By: drashna <drashna@live.com>

* Fix spacing

Co-Authored-By: drashna <drashna@live.com>

* Because I missed it!

Co-Authored-By: drashna <drashna@live.com>

* Fix spacing

Co-Authored-By: drashna <drashna@live.com>

* SPAAAAAAAAAACing

Co-Authored-By: drashna <drashna@live.com>

* white spaces

Co-Authored-By: drashna <drashna@live.com>

* Add BSD for future compatibility

* Thought I fixed that!

Co-Authored-By: drashna <drashna@live.com>

* non-breaking

Co-Authored-By: drashna <drashna@live.com>

* Considered that

Co-Authored-By: drashna <drashna@live.com>

* Yuuup

Co-Authored-By: drashna <drashna@live.com>

* consistency

Co-Authored-By: drashna <drashna@live.com>

* white spaces .... copied from elsewhere

Co-Authored-By: drashna <drashna@live.com>

* white spaces

Co-Authored-By: drashna <drashna@live.com>

* white spaces

Co-Authored-By: drashna <drashna@live.com>

* Update keycode defines

* Fix Linux Song

* Update all of the songs

* Cleanup

* Move and update check to ensure only one unicode method is enabled

* Update quantum/quantum_keycodes.h

* Update documentation

* Wordsmithing and cleanup

* Format unicode_common (#13)

* case alignment

* process_record_unicode_common → process_unicode_common

* Move song arrays into function where they're used, align preprocessor directives

* Swap the order of UC_WIN and UC_BSD

* Update Unicode docs

* Reorder Unicode mode stuff to match the order of input mode constants

* Fix capitalization in doc subtitle

* Readd BSD and OSX_RALT songs

* Reword BSD note in docs

* Readd BSD keycode description

* Reword explanation of input on different platforms

* Steal vomindoraan's input mode documentation

Co-Authored-By: vomindoraan (vomindoraan@gmail.com)

* Willingly give Drashna the rest of my Unicode doc improvements

* Wordsmithing

Co-Authored-By: drashna <drashna@live.com>

* Rearrange process_unicode_common functions

* Make Unicode input mode constants (UC_*) an enum

* Simplify unicode_input_start/finish code

* Make the key used for WinCompose configurable

* Remove UC_OSX_RALT in favor of setting the key with UNICODE_OSX_KEY

* Update Unicode input mode doc

* Add descriptions and rearrange definitions in process_unicode_common.h

* Add registry command to Unicode docs + misc updates

* Reword an explanation in Unicode docs

* Add TODO comment

* Remove trailing whitespace

* Improve Cycling documentation

* Add Unicode Input method Cycling support (#19)

* Standardize the Unicode EEPROM code

* Remove unicode init from process_record_* functions

* Add unicode init to where it belongs: matrix_init_quantum

* Move Unicode proccessing to unicode common

* Add audio feedback to input mode keys to drive konstantin up a wall

* Tap_code cleanup

* Update keycodes

* Update unicode documentation

* Update unicode keycodes for consistency/easier merge

* Add Audio Feedback section

* Remove Functions from feature page

And link to the file instead.  Link to specific lines later on.

* Fix white spaces

Co-Authored-By: drashna <drashna@live.com>

* Fix spacing

Co-Authored-By: drashna <drashna@live.com>

* Because I missed it!

Co-Authored-By: drashna <drashna@live.com>

* Fix spacing

Co-Authored-By: drashna <drashna@live.com>

* SPAAAAAAAAAACing

Co-Authored-By: drashna <drashna@live.com>

* white spaces

Co-Authored-By: drashna <drashna@live.com>

* Add BSD for future compatibility

* Thought I fixed that!

Co-Authored-By: drashna <drashna@live.com>

* non-breaking

Co-Authored-By: drashna <drashna@live.com>

* Considered that

Co-Authored-By: drashna <drashna@live.com>

* Yuuup

Co-Authored-By: drashna <drashna@live.com>

* consistency

Co-Authored-By: drashna <drashna@live.com>

* white spaces .... copied from elsewhere

Co-Authored-By: drashna <drashna@live.com>

* white spaces

Co-Authored-By: drashna <drashna@live.com>

* white spaces

Co-Authored-By: drashna <drashna@live.com>

* Update keycode defines

* Fix Linux Song

* Update all of the songs

* Cleanup

* Move and update check to ensure only one unicode method is enabled

* Update quantum/quantum_keycodes.h

* Update documentation

* Wordsmithing and cleanup

* Format unicode_common (#13)

* case alignment

* process_record_unicode_common → process_unicode_common

* Move song arrays into function where they're used, align preprocessor directives

* Swap the order of UC_WIN and UC_BSD

* Update Unicode docs

* Reorder Unicode mode stuff to match the order of input mode constants

* Fix capitalization in doc subtitle

* Readd BSD and OSX_RALT songs

* Reword BSD note in docs

* Readd BSD keycode description

* Reword explanation of input on different platforms

* Steal vomindoraan's input mode documentation

Co-Authored-By: vomindoraan (vomindoraan@gmail.com)

* Willingly give Drashna the rest of my Unicode doc improvements

* Wordsmithing

Co-Authored-By: drashna <drashna@live.com>

* Rearrange process_unicode_common functions

* Make Unicode input mode constants (UC_*) an enum

* Simplify unicode_input_start/finish code

* Make the key used for WinCompose configurable

* Remove UC_OSX_RALT in favor of setting the key with UNICODE_OSX_KEY

* Update Unicode input mode doc

* Add descriptions and rearrange definitions in process_unicode_common.h

* Add registry command to Unicode docs + misc updates

* Reword an explanation in Unicode docs

* Add TODO comment

* Add cycle_unicode_input_mode and UNICODE_SELECTED_MODES macro

* Add an option for making cycle changes persistent

* Add debug prints to functions that change input_mode

* Use cycle_unicode_input_mode in whitefox/konstantin

* Add persist_unicode_input_mode function

* Add offset to cycle to allow stepping in reverse

* Add keycodes: UNICODE_MODE_FORWARD, UNICODE_MODE_REVERSE

Aliases: UC_MOD, UC_RMOD (respectively)

* REVERT ME: Undo changes to whitefox/konstantin to avoid conflicts

* Fix wrong constant name

* Revert "REVERT ME: Undo changes to whitefox/konstantin to avoid conflicts"

This reverts commit 42676bf251.

* Change dprintf text

* Give selected modes priority over EEPROM when !UNICODE_CYCLE_PERSIST

* Remove trailing whitespace

* Cleanup of RALT code and unicode compilation stuff

* Remove else for unicode handling
2018-12-19 08:39:24 -08:00
Danny Nguyen
40bf3a2ce9 Make readPin output a 0 or 1 when using AVR to match ChibiOS's version of readPin 2018-12-19 08:37:44 -08:00
Drashna Jaelre
3054c7bda0 Fix fc980c.h update (#4682) 2018-12-19 08:23:28 -08:00
noroadsleft
584a7a0395 Keyboard: Espectro refactor and Configurator support (#4666)
* Espectro: layout macro refactor

- updated to #pragma once method
- restructure LAYOUT_all data as block comment
  - Configurator was reading the LAYOUT_all macro even though it was commented out.
- updated all keyswitch arguments to use K<ROW><COLUMN> notation
- add LAYOUT_iso macro
- add info.json file for Configurator support

* Espectro: keymap refactor

- deleted unused MODS_CTRL_MASK definitions
- iso keymap refactored to use LAYOUT_iso macro
- default and iso keymaps refactored for readability
2018-12-18 09:16:06 -08:00
noroadsleft
8181c8dc97 FC980C: refactor and Configurator update
- fc980c.h
  - updated to #pragma once method
  - layout macro visual alignment
- info.json
  - fixed JSON ordering (keys were being assigned out-of-order)
- default keymap
  - visual alignment
  - deleted unused fn_actions block
2018-12-18 09:15:28 -08:00
Yan-Fa Li
06f1901783 Keymap: A Planck style keymap with iris flair (#4677)
* A Planck style keymap with iris flair

 - Re-arrange layers to be more planck like.
 - move backspace to right thumb
 - replace backspace with minus, more useful for coding
 - replace center keys with brackets
 - MT(MOD_LCTRL and ESCAPE)
 - Use QMK-DFU for bootloader
   - add a soft reset to keymap

* Feedback from reviewers

 - remove redundant define (noroadsleft)
 - remove unused layer switch case (drashna)
2018-12-18 09:14:56 -08:00
Matthew Lyon
e59f331268 Keymap: @mattly's planck layout (#4678) 2018-12-18 08:37:03 -08:00
Takeshi ISHII
9eedaa8802 Keymap: Changed to use LAYOUT_kc() macro instead of LAYOUT() macro for easy maintenance. (#4676) 2018-12-18 08:29:20 -08:00
Wilba
eeda99bf2e Keyboard: Initial commit of WT8-A implementation (#4674) 2018-12-18 08:28:31 -08:00
Andrew Kannan
20e134e681 Keyboard: Adding ortho60 to handwired (#4672)
* Adding ortho60 to handwired

* update to use LAYOUT_ortho_5x12

* Address PR comments about layout macros

* Add default layout to info.json for configurator

* Hack to xyverz layout until RGB branch is merged

* Fix undef RGBDIPIN in xyverz 12x5 layout

* Revert change to xvyerz's layout

* Fix typo

* Fix order

* Revert xyverz rules.mk
2018-12-18 08:26:43 -08:00
noroadsleft
398204b2a0 EKeyboard: ErgoInu Configurator fix (#4665)
* ErgoInu: Configurator update, part 1

Give each key its own line to make the file easier to debug.

* ErgoInu: Configurator update, part 2

- converted all JSON variables to lowercase (this was the bugfix)
- converted Tabs to Spaces

* ErgoInu: Configurator update, part 3

- break key data into chunks

* ErgoInu: Configurator update, part 4

Rebuilt the layout tree into a new file, taking the Y values from the original data. Copied relevant data from original file into the new file, and then overwrote the original file.
2018-12-16 00:40:46 -08:00
noroadsleft
5ec327ad99 Cospad Configurator and readme update (#4663)
* Cospad: Configurator update

- added LAYOUT_gamepad_6x4 data
  - renders as 4 rows by 6 columns visually
- fixed LAYOUT_numpad_6x4 data
  - JSON objects were in the wrong order

* Cospad: readme update

- markdown formatting fixes
- made Hardware Availability address a hyperlink
- updated Docs links
2018-12-15 13:39:34 -08:00
noroadsleft
6172e55489 Ergo42: Configurator patch (#4664)
Wasn't rendering in Configurator as intended. Updated JSON data to use alias name instead of macro name.
2018-12-15 13:39:05 -08:00
Alexander Kagno
3ec4a00bfc Per Key Leader Timing Option (#4026)
* leader changes to enable per key timing option

* Changes requested to docs for @drashna

* Changes requested by @drashna
2018-12-15 07:29:24 -08:00
noroadsleft
72bd17f290 converter/xt_usb: Configurator support (#4657) 2018-12-15 07:25:29 -08:00
noroadsleft
11439c4326 Configurator support for Sun Type 3 and Type 5 USB converters (#4656)
* Sun Type 3 USB converter: Configurator support

* Sun Type 5 USB converter: Configurator support
2018-12-15 07:25:11 -08:00
noroadsleft
ff5fcedb10 converter/palm_usb/stowaway: Configurator support (#4655) 2018-12-14 22:58:57 -08:00
noroadsleft
2527fe879f converter/ibm_5291: Configurator support and readme cleanup (#4654)
* converter/ibm_5291: Configurator support

- added layout data to info.json file
- corrected keyboard_folder value

* converter/ibm_5291: readme cleanup

- Fixed "image" url (target of link was a web page; changed markdown formatting to text link)
- Sentence capitalization fixes
- markdown formatting fixes for readability
2018-12-14 22:58:30 -08:00
noroadsleft
45591ee443 Keyboard: Chimera Ortho refactor (#4652)
* Layout macro refactor

- Renamed KC_KEYMAP to LAYOUT_kc
- Renamed KEYMAP to LAYOUT
- moved LAYOUT above LAYOUT_kc (Hoping this encourages users to use LAYOUT.)
- updated layout macro name in info.json
- white space changes for readability

* Keymap refactor: default

Default keymap now uses `#include QMK_KEYBOARD_H` and LAYOUT macro (from KC_KEYMAP/LAYOUT_kc). Keymap was also refactored to use process_record_user function instead of deprecated action_get_macro from TMK.

Also moved LONGPRESS_DELAY and LAYER_TOGGLE_DELAY definitions to config.h.

* Keymap refactor: dcompact

- Changed chimera_ortho.h include for QMK_KEYBOARD_H
- Updated layout name on keymap layers

* Coding conventions fix in default keymap

* Keymap refactor: gordon

- Changed chimera_ortho.h include for QMK_KEYBOARD_H
- Removed redundant includes of action_layer.h and process_tap_dance.h (superseded by QMK_KEYBOARD_H)
- Removed redundant definitions for KC_NO and KC_TRNS
- Updated layout name on keymap layers
2018-12-14 21:36:03 -08:00
Takeshi ISHII
8f790948e5 Refactor quantum/split_common/i2c.c, quantum/split_common/serial.c (#4522)
* add temporary compile test shell script

* Extended support of SKIP_VERSION to make invariant compile results during testing.

* build_keyboard.mk, tmk_core/rules.mk: add LIB_SRC, QUANTUM_LIB_SRC support

Support compiled object enclosed in library.

e.g.
```
LIB_SRC += xxxx.c
xxxx.c --> xxxx.o ---> xxxx.a
```

* remove 'ifdef/ifndef USE_I2C' from quantum/split_common/{i2c|serial}.c

* add SKIP_DEBUG_INFO into tmk_core/rules.mk

When SKIP_DEBUG_INFO=yes is specified, do not use the -g option at compile time.

* tmk_core/rules.mk: Library object need -fno-lto

* add SKIP_DEBUG_INFO=yes

* remove temporary compile test shell script

* add '#define SOFT_SERIAL_PIN D0' to keyboards/lets_split/rev?/config.h

* quantum/split_common/serial.c: Changed not to use USE_I2C.
2018-12-14 21:31:56 -08:00
noroadsleft
a49d98e665 Comet46: Configurator support 2018-12-14 20:04:08 -08:00
Drashna Jaelre
4f1f52b53b Add left/right EEPROM flashing for DFU (#4560) 2018-12-14 18:39:54 -08:00
Fred Silberberg
91a4a63ac7 Fix keymap build to send over remote desktop correctly. (#4651) 2018-12-14 18:39:16 -08:00
noroadsleft
039434caf9 Keyboard: Bpiphany Pegasus Hoof Refactor, Configurator support (#4649)
* Pegasus Hoof: layout macro refactor

- Renamed KEYMAP to LAYOUT
- Added LAYOUT_tkl_ansi macro
- white space changes (changed tabs for 2 spaces)

* Pegasus Hoof: keymap refactor

- updated layout macro names
- changed to #include QMK_KEYBOARD_H
- removed redundant KC_TRNS definitions
- white space changes (changed tabs to spaces)
- removed deprecated build script instructions from rules.mk files
- updated config.h to #pragma once

* Pegasus Hoof: Configurator support

* Pegasus Hoof: readme cleanup

- Reformat header and description paragraph
- Fix Hardware Availability link (was 404)
- renamed filename to lowercase

* Pegasus Hoof: add LAYOUTS = tkl_ansi to rules.mk

* Pegasus Hoof: fix LAYOUT_tkl_jis macro
2018-12-14 16:38:46 -08:00
zvecr
bb5262de07 Keyboard: Refactor fourier to use split common code (#4582)
* Refactor fourier to use split common code

* Refactor fourier to use split common code - fix handedness when not using EE_HANDS or MASTER_LEFT

* add SOFT_SERIAL_PIN config
2018-12-14 14:25:32 -08:00
zvecr
cb149650ef Keyboard: Lets split eh default keymap - Fixes for superseded default layer functionality (#4581)
* Fixes for superseded default layer functionality

* Fixes for superseded default layer functionality
2018-12-14 13:29:30 -08:00
noroadsleft
4446f86bfd Keyboard: Bpiphany Frosty Flake Refactor, Configurator support and readme cleanup (#4648)
* Frosty Flake: layout macro refactor

- frosty_flake.h updated to use #pragma once
- KEYMAP renamed to LAYOUT
- KEYMAP_TKL renamed to LAYOUT_tkl

* Frosty Flake: keymap refactor

- config.h files updated to #pragma once
- deleted deprecated build script rules from rules.mk
- keymap.c files:
  - #include QMK_KEYBOARD_H
  - updated layout macro name
  - white space changes for readability

* Frosty Flake: Configurator support

* Frosty Flake: readme cleanup

- Fixed Hardware Availability link (old link was 404)
- tiny grammar fix (colon missing on compile-and-flash instructions)
2018-12-14 13:01:04 -08:00
zvecr
306f23dc51 Document the correct path to the split keyboard EEPROM files (#4585)
* Document the correct path to the split keyboard EEPROM files

* Document the correct path to the split keyboard EEPROM files
2018-12-14 12:49:33 -08:00
patrickmt
118d5cc03f Fix macro redefinition for GNUC compilers > 6
GNUC compilers greater than version 6 already have the macro __always_inline defined. This fix checks GNUC version before defining the macro itself.
2018-12-14 12:47:17 -08:00
noroadsleft
8f02375cc6 Keyboard: B.mini EX refactor and Configurator support (#4647)
* B.mini EX: refactor

- add LAYOUT_ansi and LAYOUT_iso macros
- add ansi and iso keymaps with readme files

* B.mini EX: Configurator support
2018-12-14 11:37:26 -08:00
Takeshi ISHII
155e9310ff Make quantum/split_common/serial.[ch] configurable (#4419)
* add temporary compile test shell script

* add 'CONFIG_H += serial_backward_compatibility.h' into common_features.mk:SPLIT_KEYBOARD block

* add quantum/split_common/serial_backward_compatibility.h

SERIAL_PIN_PORT and other PIN define move to serial_backward_compatibility.h
SERIAL_BACKLIT_START move to split_util.h

* quantum/split_common/serial.c change to helix-serial.c style serial configuration

* add temporary file quantum/split_common/split-keyboards-list.txt

* add '#define SOFT_SERIAL_PIN D0' to keyboards/6lit/config.h

* add '#define SOFT_SERIAL_PIN D0' to keyboards/divergetm2/config.h

* add '#define SOFT_SERIAL_PIN D0' to keyboards/ergotravel/rev1/config.h

* add '#define SOFT_SERIAL_PIN D0' to keyboards/foobar/config.h

* add '#define SOFT_SERIAL_PIN D0' to keyboards/handwired/dactyl_manuform/config.h

* add '#define SOFT_SERIAL_PIN D0' to keyboards/handwired/qc60/config.h

* add '//#define SOFT_SERIAL_PIN D0' to keyboards/handwired/xealous/config.h

* add '#define SOFT_SERIAL_PIN D0' to keyboards/iris/rev*/config.h

* add '//#define SOFT_SERIAL_PIN D0' to keyboards/lets_split_eh/config.h

* add '#define SOFT_SERIAL_PIN D0' to keyboards/levinson/rev*/config.h

* add '#define SOFT_SERIAL_PIN D0' to keyboards/miniaxe/config.h

* add '#define SOFT_SERIAL_PIN D0' to keyboards/nyquist/rev?/config.h

* add '#define SOFT_SERIAL_PIN D0' to keyboards/quefrency/rev1/config.h

* add '#define SOFT_SERIAL_PIN D0' to keyboards/qwertyydox/config.h,keyboards/qwertyydox/rev1/config.h

* add '#define SOFT_SERIAL_PIN D0' to keyboards/redox/rev1/config.h

* add '#define SOFT_SERIAL_PIN D0' to keyboards/rorschach/rev1/config.h

* remove '#define SOFT_SERIAL_PIN D0' from quantum/split_common/serial_backward_compatibility.h

* remove temporary file quantum/split_common/split-keyboards-list.txt

* remove temporary compile test shell script

* Revert "remove temporary compile test shell script"

This reverts commit 15b0021b40.

* update quantum/split_common/compile_split_test.sh for new keyboard test

* add '#define SOFT_SERIAL_PIN D0' to keyboards/diverge3/config.h

* add '#define SOFT_SERIAL_PIN D0' to keyboards/40percentclub/25/config.h

* remove temporary compile test shell script

* update docs/config_options.md, quantum/template/avr/config.h

* fix quantum/template/avr/config.h

* fix typo  docs/config_options.md
2018-12-14 11:00:10 -08:00
Drashna Jaelre
9739d6ba0a Docs: Clarify audio keycodes (#4620)
* Clarify audio keycodes

* Spelling errors

Co-Authored-By: drashna <drashna@live.com>

* Spacing in md

Co-Authored-By: drashna <drashna@live.com>

* Fix midi link too

* Wordsmithing
2018-12-14 10:43:24 -08:00
Drashna Jaelre
161ffa0af6 Add some optimization to the Tetris keyboard (#4645) 2018-12-14 10:42:30 -08:00
Drashna Jaelre
02d44beb44 Fix up tap_code functionality (#4609)
* Add delay in Tap Code to avoid issues

I think a few people have reporting issues with it working properly, and it may be a timing issue.  The 'register_code' uses this sort of delay in some of the functions, and
this is probably why.

Adding the 100ms delay should hopefully fix any issues with it.

* Make tap_code delay configurable

* Update documentation

* Bring tap_code16 inline with changes

* Fix type for tap_code16

Bad copy-paste job

* Just use the value check for the define

* Clarify timing in docs

Co-Authored-By: drashna <drashna@live.com>

* Wordsmithing

Co-Authored-By: drashna <drashna@live.com>
2018-12-14 09:01:58 -08:00
Drashna Jaelre
80dfd34fe4 Add additional resource links (#4594)
* Add additional resource links

And fix a typo or two

* Update docs/newbs.md

Co-Authored-By: drashna <drashna@live.com>

* Wordsmithing

Co-Authored-By: drashna <drashna@live.com>
2018-12-14 07:52:11 -08:00
Drashna Jaelre
8c3054777a Docs: Remove duplicate layer block in keycodes.md (#4621)
* Docs: Remove duplicate layer block in keycodes.md

Reorder and add OSL

* remove glitch

Co-Authored-By: drashna <drashna@live.com>
2018-12-14 07:51:17 -08:00
Drashna Jaelre
6c6bbff600 Enhance documentation for Tap-Hold functions (#4628) 2018-12-14 07:37:27 -08:00
Drashna Jaelre
641bbeb41a Remove userspace info from Quad-Function Tap Dance example (#4631) 2018-12-14 07:36:38 -08:00
noroadsleft
60f9abca12 handwired/CMD60 Refactor, Configurator support and readme update (#4632)
* handwired/CMD60: refactor

- renamed layout macro KEYMAP to LAYOUT
- removed K2C, K3B and K3C locations (indications are these locations were unused in hardware)
- keymap
  - now uses #include QMK_KEYBOARD_H
  - converted keycodes to short format
  - deleted TMK fn_actions and action_get_macro blocks
  - white space changes (readability/alignment)

* handwired/CMD60: Configurator support

* handwired/CMD60: readme update

- updated to conform to current QMK template
- added image and build gallery links

* handwired/cmd60: rename all files and folders to lowercase
2018-12-14 07:33:00 -08:00
noroadsleft
25892301d4 Keymap: handwired/108key_trackpoint Configurator support and readme update (#4633)
* handwired/108key_trackpoint: Configurator support

* handwired/108key_trackpoint: readme update

- fix typo in make command
- rename file to lowercase
2018-12-14 07:32:12 -08:00
Daniel Shields
1ae07f657a Keymap: Disable audio for planck/dshields/rev6 and enable retro tapping. (#4643) 2018-12-14 07:27:54 -08:00
Drashna Jaelre
dd03ac3893 Merge pull request #4642 from noroadsleft/cf/at101_blackheart
AT101 Blackheart Configurator support and readme update
2018-12-14 07:26:33 -08:00
noroadsleft
e83c62a002 Baguette: Configurator update
The layout was right, but offset on both axes.
2018-12-14 07:25:56 -08:00
noroadsleft
48933811c5 AT101 Blackheart: readme update
- added image
- updated Docs links
2018-12-13 23:36:58 -08:00
noroadsleft
119b02c540 AT101 Blackheart: Configurator support 2018-12-13 23:33:29 -08:00
noroadsleft
388de9bc07 Keyboardio Model 01: Configurator support 2018-12-13 22:54:56 -08:00
Fredric Silberberg
89b80b79d5 Add big switch layout 2018-12-13 18:30:15 -08:00
Fredric Silberberg
9e6ee47779 Added noeeprom versions of set hue, sat, val, and step 2018-12-13 18:30:15 -08:00
Fredric Silberberg
e8f730595c Dactyl_manuform map and updates to my ergodox layout for moving to a
different location.
2018-12-13 10:24:20 -08:00
Wilba6582
cc45f62d75 Added Dynamic Keymaps to M10-B 2018-12-13 08:18:49 -08:00
noroadsleft
24b17c9619 Keyboard: handwired/maartenwut readme cleanup and Configurator support (#4624)
* handwired/maartenwut: readme cleanup

- Fixed typo (Maarten's last name was misspelled)
- Updated Docs links

* handwired/maartenwut: Configurator support
2018-12-12 17:56:29 -08:00
noroadsleft
ca39fa8222 Keyboard: handwired/kbod Refactor, Configurator support and readme update (#4623)
* handwired/kbod: refactor

- layout macro KEYMAP renamed to LAYOUT

* handwired/kbod: update config.h files to #pragma once

* handwired/kbod: Configurator support

* handwired/kbod: readme update

- updated reademe to current template
- added image
2018-12-12 16:46:13 -08:00
ishtob
2cef75cbb3 Keymap: update ishtobs hadron keymap (#4613)
* adding ishtob's keymap to hadron ver3

* update ishtob keymap

* ishtob hadron keymap update 2

* Delete readme (Case Conflict).md

* Delete readme (Case Conflict).md

* add missing FN layer to ishtob hadron keymap

* removed unused toggle keycode
2018-12-12 15:20:30 -08:00
noroadsleft
4e78d28b4b Zlant: Configurator rendering bugfix (#4622)
Configurator's API uses the available alias name, instead of the direct matrix name.
2018-12-12 15:08:33 -08:00
noroadsleft
f6c0d999b9 Puck Refactor, Configurator support and readme cleanup (#4615)
* Puck: layout macro refactor

Reformat layout macro to resemble physical keyboard layout.

* Puck: Configurator support

* Puck: readme cleanup

Markdown formatting corrections.
2018-12-12 12:46:56 -08:00
noroadsleft
baf69ee89d S7 Elephant Configurator fixes (#4614)
* S7 Elephant: Configurator bugfix, part 1

Reformatted the JSON so each key is on its own line:

This makes the keys easier to rearrange.

* S7 Elephant: Configurator bugfix, part 2

Deleted the extra key from LAYOUT_iso_1u:

JSON contents stated this layout used a split Backspace, but the matrix is configured and intended to have a 2u Backspace.

Extended the Backspace to 2u width and deleted the extra key. (This fixes the error that broke LAYOUT_iso_1u's rendering in the Configurator.)

* S7 Elephant: Configurator bugfix, part 3

Fix ISO layouts:

Noticed JSON object for Enter on ISO layouts was immediately after Right Bracket. Inspection of s7_elephant.h revealed the expected and appropriate location to be after ISO Hash.

Moved Enter key to the proper location on all ISO layouts.
2018-12-12 12:46:12 -08:00
Konstantin Đorđević
28fbf84cc5 Add standard definitions for ALGR and KC_ALGR (#4389)
* Add standard ALGR defition, remove (re)definitions from language files

* Use ALGR(kc) consistently in ALTGR(kc) aliases

* Non-Nordic keymaps should not use NO_ALGR

* Add standard KC_ALGR definition

* Update docs with ALGR and KC_ALGR

* Update SS_ALGR and ALGR_T aliases
2018-12-12 10:17:19 -08:00
noroadsleft
8b6cdd1788 handwired/numpad20 Refactor and Configurator support (#4589)
* handwired/numpad20: refactor

- layout macro no longer auto-prepends keycodes with KC_
  - keymaps for this keyboard will now compile in QMK Configurator
- keymap now uses #include QMK_KEYBOARD_H
- deleted unused fn_actions code block

* handwired/numpad20: Configurator support
2018-12-11 20:49:44 -08:00
noroadsleft
d46d304395 Preonic Configurator update (#4598)
* Preonic: refactor layout macros

Unify layout macro names across AVR and ARM.

- all layouts and matrices have moved/duplicated to their appropriate revisions
  - preonic.h now includes the appropriate header file from the selected revision
  - revision header files only contain layouts appropriate for that revision
    - Previously, all layouts were available in source for all revisions.
- removed KEYMAP layout macro alias (was unused)
- macros LAYOUT_preonic_1x2uC and LAYOUT_preonic_grid for AVR and ARM revisions
  - LAYOUT_preonic_grid has alias LAYOUT_ortho_5x12 for all revisions
- deleted LAYOUT_ortho_4x12 alias (not appropriate for this keyboard)
- ARM-based revisions have 1x2uR, 1x2uL and 2x2u matrices

* Preonic: updated revision headers to #pragma once

* Preonic: update Configurator files

Updated the Configurator files to reflect the previous changes in this branch.

- Preonic revs. 1 and 2 will use keyboards/preonic/info.json
- Preonic rev. 3 will use keyboards/preonic/rev3/info.json
  - This file will override keyboards/preonic/info.json when preonic/rev3 is selected in the Configurator.
2018-12-11 18:58:10 -05:00
Twopidee
b11c332477 Keymap: Added Drewsky DZ60 keymap (#4607)
* Added Drewsky's DZ60 Keymap

* Update keyboards/dz60/keymaps/drewsky/keymap.c

Co-Authored-By: Twopidee <42394451+Twopidee@users.noreply.github.com>
2018-12-11 14:24:17 -08:00
Skyler Lewis
200ee8e797 Keymap: Dichotomy keymap by alairock (#4608)
* dichotemy layout for alairock

* dichotemy layout for alairock

* complete overhaul

* fix suggestions
2018-12-11 12:43:56 -08:00
noroadsleft
7c63c0a950 handwired/practice60: Configurator Support and refactor (#4603)
* handwired/practice60: Configurator Support

* handwired/practice60: refactor

- layout macro rows did not have an equal number of arguments in all rows of the matrix
- white space changes for readability/alignment
2018-12-11 09:47:06 -08:00
noroadsleft
a5a46f3d36 handwired/pteron: Configurator support 2018-12-11 09:46:39 -08:00
Drashna Jaelre
fb900e2ad1 Fix macro docs to be consistent with keyboard template (#4600) 2018-12-11 09:11:35 -08:00
Wilba
930e1dfc4c Changing Zeal60/Zeal65 VID/PID to be unique (#4605) 2018-12-11 07:31:13 -08:00
Drashna Jaelre
cce19d265d Reduce compile size of KBD6x (#4599)
Disable some functionality so that it will compile under size in the QMK Configurator
2018-12-11 07:29:17 -08:00
noroadsleft
a003be1e9c handwired/pilcrow Refactor, Configurator support and readme update (#4602)
* handwired/pilcrow: refactor

- layout macro renamed from KEYMAP to LAYOUT
- keymap now uses #include QMK_KEYBOARD_H
- layers reformatted for readability
- removed unused and deprecated fn_actions and action_get_macro blocks
- keymap config.h
  - updated to use #pragma once
  - removed redundant config.h include

* handwired/pilcrow: Configurator support

* handwired/pilcrow: readme update

Updated readme.md file to use modern template formatting.
2018-12-11 00:19:55 -08:00
Peter K. Cawley
3bef186ea6 adjust install_avr function to use unzip for broader compatibility (#4596)
On a laptop with god knows what mandatory security software (Cylance?), running up-to-date Windows 10 with msys2 mingw-64, attempting to install the AVR toolkit results in the following error:

```
1 [main] 7z (13316) C:\msys32\usr\lib\p7zip\7z.exe: *** fatal error - cygheap base mismatch detected - 0x612A5410/0x2375410.
This problem is probably due to using incompatible versions of the cygwin DLL.
Search for cygwin1.dll using the Windows Start->Find/Search facility
and delete all but the most recent version.  The most recent version *should*
reside in x:\cygwin\bin, where 'x' is the drive on which you have
installed the cygwin distribution.  Rebooting is also suggested if you
are unable to find another cygwin DLL.
```

This appears to be related in some way, based on my research, to ASLR functionality in security software. Since I'm unable to override whatever is enforcing ASLR on my system, after trying several other approaches (removing other copies of msys-2.0.dll, which is what this is apparently actually referencing, rebasing that file in Windows to address 0x61000000, a few other things) I simply edited the installation shell script to use `unzip` instead of 7zip; `unzip`'s binary does not provoke a mismatch error and the installation proceeds as it should.

I'm not aware of the reason why some parts of the install script use `unzip` (e.g. `install_arm`) and others use 7zip, but it seems that for broader compatibility and sparing users on locked down machines the 120 minutes or so of futzing this took me to fix, it might be better to just use `unzip` in all cases.

Note: There is another function that uses 7zip, `extract_flip`. The line is `7z -oflip x FlipInstaller.exe`. I'm not sure what this is doing, or whether it's possible to do it with `unzip`, but it produces the same error. I haven't attempted to fix that in this PR, but it might be good to fix it for the same reason.
2018-12-10 16:15:15 -08:00
Drashna Jaelre
e5380795b9 Fix the LFKeyboards so they work with the QMK Configurator (#4591)
* Make layer_info weak so it works with QMK Configurator

* Fix lfk87 compile issue

* Add fixes for lfkpad
2018-12-10 11:38:57 -08:00
patrickmt
4a5e68f4f2 Bringing Massdrop keyboard hardware configuration to keyboard level (#4593)
MCU Pins for debugging, LED, boot tracing, and shift registers are now configurable at keyboard level.
Macros led_* replaced by DBG_LED_*
Macros m15_* replaced by DBG_1_*
Macros m27_* replaced by DBG_2_*
Macros m28_* replaced by DBG_3_*
For CTRL and ALT keyboards, debug boot tracing pin default now set to pad M27 instead of M28 since although M28 is not being used, it is technically a signal for USB port detection.
m15_print(...) renamed to dbg_print(...) to get away from hard coded port names.
dbg_print function now follows similar pattern to debug led output.
2018-12-10 11:28:06 -08:00
Michael
e99615b2ac Keyboard: Added RGB toggle and cycle to default KDB6x mapping. (#4592)
* Added RGB toggle and cycle to default mapping. This is present on layouts on 'http://qmkeyboard.cn/' but not here.

* Added addition keycodes for hue/sat/val.
2018-12-10 10:49:19 -08:00
noroadsleft
090c30212e handwired/onekey Refactor and readme update (#4590)
* handwired/onekey: refactor

- keyboard now uses a layout macro
- keymap now uses #include QMK_KEYBOARD_H

* handwired/onekey: readme update

Updated Docs links.
2018-12-10 09:22:50 -08:00
noroadsleft
753f57ee00 handwired/nicekey Refactor and readme cleanup (#4588)
* handwired/nicekey: refactor

Now uses a layout macro.

* handwired/nicekey: readme cleanup

- linked maintainer's GitHub account
- updated Docs links
2018-12-09 21:43:24 -08:00
Vyolle
fd3b0787ed Fixed lack of semi colon. (#4587) 2018-12-09 17:52:00 -08:00
Ben
16302be5ad docs typo (#4584) 2018-12-09 14:26:09 -08:00
MakotoKurauchi
b8db0b26b1 Keymap: Fixed a problem with underglow with froggy keymap (#4580) 2018-12-09 08:42:28 -08:00
zer09
614b3a0f7c Keymap: Keymap update (#4579)
* Add YREG keycode

* Add GM layer

* Set tapping term to 105

* update tapping term
2018-12-09 08:28:46 -08:00
324 changed files with 12299 additions and 3699 deletions

View File

@@ -34,6 +34,10 @@ $(error MASTER does not have a valid value(left/right))
endif
endif
ifdef SKIP_VERSION
OPT_DEFS += -DSKIP_VERSION
endif
# Determine which subfolders exist.
KEYBOARD_FOLDER_PATH_1 := $(KEYBOARD)
KEYBOARD_FOLDER_PATH_2 := $(patsubst %/,%,$(dir $(KEYBOARD_FOLDER_PATH_1)))
@@ -278,6 +282,7 @@ ifneq ("$(wildcard $(KEYMAP_PATH)/config.h)","")
endif
# # project specific files
SRC += $(patsubst %.c,%.clib,$(LIB_SRC))
SRC += $(KEYBOARD_SRC) \
$(KEYMAP_C) \
$(QUANTUM_SRC)
@@ -296,6 +301,7 @@ include $(TMK_PATH)/protocol.mk
include $(TMK_PATH)/common.mk
include bootloader.mk
SRC += $(patsubst %.c,%.clib,$(QUANTUM_LIB_SRC))
SRC += $(TMK_COMMON_SRC)
OPT_DEFS += $(TMK_COMMON_DEFS)
EXTRALDFLAGS += $(TMK_COMMON_LDFLAGS)

View File

@@ -263,9 +263,14 @@ ifneq ($(strip $(CUSTOM_MATRIX)), yes)
endif
ifeq ($(strip $(SPLIT_KEYBOARD)), yes)
SERIAL_BACKWARD_COMPAT := $(wildcard $(QUANTUM_DIR)/split_common/serial_backward_compatibility.h)
ifneq ($(SERIAL_BACKWARD_COMPAT),)
CONFIG_H += $(SERIAL_BACKWARD_COMPAT)
# $(info CONFIG_H=$(CONFIG_H))
endif
OPT_DEFS += -DSPLIT_KEYBOARD
QUANTUM_SRC += $(QUANTUM_DIR)/split_common/split_flags.c \
$(QUANTUM_DIR)/split_common/split_util.c \
$(QUANTUM_DIR)/split_common/i2c.c \
$(QUANTUM_DIR)/split_common/serial.c
$(QUANTUM_DIR)/split_common/split_util.c
QUANTUM_LIB_SRC += $(QUANTUM_DIR)/split_common/i2c.c
QUANTUM_LIB_SRC += $(QUANTUM_DIR)/split_common/serial.c
endif

View File

@@ -143,6 +143,8 @@ If you define these options you will enable the associated feature, which may in
* Breaks any Tap Toggle functionality (`TT` or the One Shot Tap Toggle)
* `#define LEADER_TIMEOUT 300`
* how long before the leader key times out
* `#define LEADER_PER_KEY_TIMING`
* sets the timer for leader key chords to run on each key press rather than overall
* `#define ONESHOT_TIMEOUT 300`
* how long before oneshot times out
* `#define ONESHOT_TAP_TOGGLE 2`
@@ -160,6 +162,8 @@ If you define these options you will enable the associated feature, which may in
* Set this to the number of combos that you're using in the [Combo](feature_combo.md) feature.
* `#define COMBO_TERM 200`
* how long for the Combo keys to be detected. Defaults to `TAPPING_TERM` if not defined.
* `#define TAP_CODE_DELAY 100`
* Sets the delay between `register_code` and `unregister_code`, if you're having issues with it registering properly (common on VUSB boards). The value is in milliseconds.
## RGB Light Configuration
@@ -192,10 +196,13 @@ Split Keyboard specific options, make sure you have 'SPLIT_KEYBOARD = yes' in yo
* `#define SPLIT_HAND_PIN B7`
* For using high/low pin to determine handedness, low = right hand, high = left hand. Replace 'B7' with the pin you are using. This is optional and you can still use the EEHANDS method or MASTER_LEFT / MASTER_RIGHT defines like the stock Let's Split uses.
* `#define USE_I2C`
* For using I2C instead of Serial (defaults to serial)
* `#define SOFT_SERIAL_PIN D0`
* When using serial, define this. `D0` or `D1`,`D2`,`D3`,`E6`.
# The `rules.mk` File
This is a [make](https://www.gnu.org/software/make/manual/make.html) file that is included by the top-level `Makefile`. It is used to set some information about the MCU that we will be compiling for as well as enabling and disabling certain features.
@@ -247,6 +254,8 @@ Use these to enable or disable building certain features. The more you have enab
* Enable the audio subsystem.
* `RGBLIGHT_ENABLE`
* Enable keyboard underlight functionality
* `LEADER_ENABLE`
* Enable leader key chording
* `MIDI_ENABLE`
* MIDI controls
* `UNICODE_ENABLE`

View File

@@ -68,7 +68,7 @@ These allow you to combine a modifier with a keycode. When pressed, the keydown
|`LGUI(kc)`|`LCMD(kc)`, `LWIN(kc)`|Hold Left GUI and press `kc` |
|`RCTL(kc)`| |Hold Right Control and press `kc` |
|`RSFT(kc)`| |Hold Right Shift and press `kc` |
|`RALT(kc)`| |Hold Right Alt and press `kc` |
|`RALT(kc)`|`ALGR(kc)` |Hold Right Alt and press `kc` |
|`RGUI(kc)`|`RCMD(kc)`, `LWIN(kc)`|Hold Right GUI and press `kc` |
|`HYPR(kc)`| |Hold Left Control, Shift, Alt and GUI and press `kc`|
|`MEH(kc)` | |Hold Left Control, Shift and Alt and press `kc` |
@@ -92,7 +92,7 @@ The modifiers this keycode and `OSM()` accept are prefixed with `MOD_`, not `KC_
|`MOD_LGUI`|Left GUI (Windows/Command/Meta key) |
|`MOD_RCTL`|Right Control |
|`MOD_RSFT`|Right Shift |
|`MOD_RALT`|Right Alt |
|`MOD_RALT`|Right Alt (AltGr) |
|`MOD_RGUI`|Right GUI (Windows/Command/Meta key) |
|`MOD_HYPR`|Hyper (Left Control, Shift, Alt and GUI)|
|`MOD_MEH` |Meh (Left Control, Shift, and Alt) |
@@ -161,8 +161,13 @@ For one shot mods, you need to call `set_oneshot_mods(MOD)` to set it, or `clear
!> If you're having issues with OSM translating over Remote Desktop Connection, this can be fixed by opening the settings, going to the "Local Resources" tap, and in the keyboard section, change the drop down to "On this Computer". This will fix the issue and allow OSM to function properly over Remote Desktop.
# Tap-Hold Configuration Options
# Permissive Hold
While Tap-Hold options are fantastic, they are not without their issues. We have tried to configure them with reasonal defaults, but that may still cause issues for some people.
These options let you modify the behavior of the Tap-Hold keys.
## Permissive Hold
As of [PR#1359](https://github.com/qmk/qmk_firmware/pull/1359/), there is a new `config.h` option:
@@ -185,7 +190,7 @@ Normally, if you do all this within the `TAPPING_TERM` (default: 200ms) this wil
?> If you have `Ignore Mod Tap Interrupt` enabled, as well, this will modify how both work. The regular key has the modifier added if the first key is released first or if both keys are held longer than the `TAPPING_TERM`.
# Ignore Mod Tap Interrupt
## Ignore Mod Tap Interrupt
To enable this setting, add this to your `config.h`:
@@ -211,7 +216,7 @@ Normally, this would send `X` (`SHIFT`+`x`). With `Ignore Mod Tap Interrupt` ena
?> If you have `Permissive Hold` enabled, as well, this will modify how both work. The regular key has the modifier added if the first key is released first or if both keys are held longer than the `TAPPING_TERM`.
# Tapping Force Hold
## Tapping Force Hold
To enable `tapping force hold`, add the following to your `config.h`:
@@ -235,7 +240,7 @@ With `TAPPING_FORCE_HOLD`, the second press will be interpreted as a Shift, allo
!> `TAPPING_FORCE_HOLD` will break anything that uses tapping toggles (Such as the `TT` layer keycode, and the One Shot Tapping Toggle).
# Retro Tapping
## Retro Tapping
To enable `retro tapping`, add the following to your `config.h`:

View File

@@ -61,9 +61,11 @@ It's advised that you wrap all audio features in `#ifdef AUDIO_ENABLE` / `#endif
The available keycodes for audio are:
* `AU_ON` - Turn audio mode on
* `AU_OFF` - Turn audio mode off
* `AU_TOG` - Toggle audio mode
* `AU_ON` - Turn Audio Feature on
* `AU_OFF` - Turn Audio Feature off
* `AU_TOG` - Toggle Audio Feature state
!> These keycodes turn all of the audio functionality on and off. Turning it off means that audio feedback, audio clicky, music mode, etc. are disabled, completely.
## ARM Audio Volume
@@ -158,7 +160,7 @@ You can configure the default, min and max frequencies, the stepping and built i
## MIDI Functionality
This is still a WIP, but check out `quantum/keymap_midi.c` to see what's happening. Enable from the Makefile.
This is still a WIP, but check out `quantum/process_keycode/process_midi.c` to see what's happening. Enable from the Makefile.
## Audio Keycodes

View File

@@ -13,7 +13,7 @@ and this to your `config.h`:
Each PAD_A/B variable defines an array so multiple encoders can be defined, e.g.:
#define ENCODERS_PAD_A { encoder1a, encoder2a }
#define ENCODERS_PAD_B { encoder1a, encoder2b }
#define ENCODERS_PAD_B { encoder1b, encoder2b }
If your encoder's clockwise directions are incorrect, you can swap the A & B pad definitions.

View File

@@ -47,3 +47,26 @@ To add support for Leader Key you simply need to add a single line to your keyma
```
LEADER_ENABLE = yes
```
## Per Key Timing on Leader keys
Rather than relying on an incredibly high timeout for long leader key strings or those of us without 200wpm typing skills, we can enable per key timing to ensure that each key pressed provides us with more time to finish our stroke. This is incredibly helpful with leader key emulation of tap dance (read: multiple taps of the same key like C, C, C).
In order to enable this, place this in your `config.h`:
```
#define LEADER_PER_KEY_TIMING
```
After this, it's recommended that you lower your `LEADER_TIMEOUT` to something less that 300ms.
```
#define LEADER_TIMEOUT 250
```
Now, something like this won't seem impossible to do without a 1000MS leader key timeout:
```
SEQ_THREE_KEYS(KC_C, KC_C, KC_C) {
SEND_STRING("Per key timing is great!!!");
}
```

View File

@@ -12,24 +12,28 @@ Here is an example `keymap.c` for a two-key keyboard:
```c
enum custom_keycodes {
MY_CUSTOM_MACRO = SAFE_RANGE
QMKBEST = SAFE_RANGE,
};
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
if (record->event.pressed) {
switch(keycode) {
case MY_CUSTOM_MACRO:
SEND_STRING("QMK is the best thing ever!"); // this is our macro!
return false;
}
}
return true;
switch (keycode) {
case QMKBEST:
if (record->event.pressed) {
// when keycode QMKBEST is pressed
SEND_STRING("QMK is the best thing ever!");
} else {
// when keycode QMKBEST is released
}
break;
}
return true;
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = {
{MY_CUSTOM_MACRO, KC_ESC}
}
[0] = {
{QMKBEST, KC_ESC}
}
};
```
@@ -37,7 +41,7 @@ What happens here is this:
We first define a new custom keycode in the range not occupied by any other keycodes.
Then we use the `process_record_user` function, which is called whenever a key is pressed or released, to check if our custom keycode has been activated.
If yes, we send the string `"QMK is the best thing ever!"` to the computer via the `SEND_STRING` macro (this is a C preprocessor macro, not to be confused with QMK macros).
We return `false` to indicate to the caller that the key press we just processed need not be processed any further.
We return `true` to indicate to the caller that the key press we just processed should continue to be processed as normal (as we didn't replace or alter the functionality).
Finally, we define the keymap so that the first button activates our macro and the second button is just an escape button.
You might want to add more than one macro.
@@ -45,28 +49,42 @@ You can do that by adding another keycode and adding another case to the switch
```c
enum custom_keycodes {
MY_CUSTOM_MACRO = SAFE_RANGE,
MY_OTHER_MACRO
QMKBEST = SAFE_RANGE,
QMKURL,
MY_OTHER_MACRO
};
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
if (record->event.pressed) {
switch(keycode) {
case MY_CUSTOM_MACRO:
SEND_STRING("QMK is the best thing ever!");
return false;
case MY_OTHER_MACRO:
SEND_STRING(SS_LCTRL("ac")); // selects all and copies
return false;
}
}
return true;
switch (keycode) {
case QMKBEST:
if (record->event.pressed) {
// when keycode QMKBEST is pressed
SEND_STRING("QMK is the best thing ever!");
} else {
// when keycode QMKBEST is released
}
break;
case QMKURL:
if (record->event.pressed) {
// when keycode QMKURL is pressed
SEND_STRING("https://qmk.fm/" SS_TAP(X_ENTER));
} else {
// when keycode QMKURL is released
}
break;
case MY_OTHER_MACRO:
if (record->event.pressed) {
SEND_STRING(SS_LCTRL("ac")); // selects all and copies
}
break;
}
return true;
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = {
{MY_CUSTOM_MACRO, MY_OTHER_MACRO}
}
[0] = {
{MY_CUSTOM_MACRO, MY_OTHER_MACRO}
}
};
```
@@ -136,21 +154,21 @@ By default QMK assumes you don't have any macros. To define your macros you crea
```c
const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) {
if (record->event.pressed) {
switch(id) {
case 0:
return MACRO(D(LSFT), T(H), U(LSFT), T(I), D(LSFT), T(1), U(LSFT), END);
case 1:
return MACRO(D(LSFT), T(B), U(LSFT), T(Y), T(E), D(LSFT), T(1), U(LSFT), END);
}
}
return MACRO_NONE;
if (record->event.pressed) {
switch(id) {
case 0:
return MACRO(D(LSFT), T(H), U(LSFT), T(I), D(LSFT), T(1), U(LSFT), END);
case 1:
return MACRO(D(LSFT), T(B), U(LSFT), T(Y), T(E), D(LSFT), T(1), U(LSFT), END);
}
}
return MACRO_NONE;
};
```
This defines two macros which will be run when the key they are assigned to is pressed. If instead you'd like them to run when the key is released you can change the if statement:
if (!record->event.pressed) {
if (!record->event.pressed) {
### Macro Commands
@@ -169,21 +187,21 @@ Use the `M()` function within your `KEYMAP()` to call a macro. For example, here
```c
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = KEYMAP(
M(0), M(1)
),
[0] = KEYMAP(
M(0), M(1)
),
};
const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) {
if (record->event.pressed) {
switch(id) {
case 0:
return MACRO(D(LSFT), T(H), U(LSFT), T(I), D(LSFT), T(1), U(LSFT), END);
case 1:
return MACRO(D(LSFT), T(B), U(LSFT), T(Y), T(E), D(LSFT), T(1), U(LSFT), END);
}
}
return MACRO_NONE;
if (record->event.pressed) {
switch(id) {
case 0:
return MACRO(D(LSFT), T(H), U(LSFT), T(I), D(LSFT), T(1), U(LSFT), END);
case 1:
return MACRO(D(LSFT), T(B), U(LSFT), T(Y), T(E), D(LSFT), T(1), U(LSFT), END);
}
}
return MACRO_NONE;
};
```
@@ -198,9 +216,9 @@ If you have a bunch of macros you want to refer to from your keymap while keepin
#define M_BYE M(1)
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = KEYMAP(
M_HI, M_BYE
),
[0] = KEYMAP(
M_HI, M_BYE
),
};
```
@@ -213,11 +231,11 @@ There are some functions you may find useful in macro-writing. Keep in mind that
This is a boolean value that can be tested to see if the switch is being pressed or released. An example of this is
```c
if (record->event.pressed) {
// on keydown
} else {
// on keyup
}
if (record->event.pressed) {
// on keydown
} else {
// on keyup
}
```
### `register_code(<kc>);`
@@ -232,6 +250,8 @@ Parallel to `register_code` function, this sends the `<kc>` keyup event to the c
This will send `register_code(<kc>)` and then `unregister_code(<kc>)`. This is useful if you want to send both the press and release events ("tap" the key, rather than hold it).
If you're having issues with taps (un)registering, you can add a delay between the register and unregister events by setting `#define TAP_CODE_DELAY 100` in your `config.h` file. The value is in milliseconds.
### `clear_keyboard();`
This will clear all mods and keys currently pressed.
@@ -250,16 +270,16 @@ This example defines a macro which sends `Ctrl-C` when pressed down, and `Ctrl-V
```c
const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) {
switch(id) {
case 0: {
if (record->event.pressed) {
return MACRO( D(LCTL), T(C), U(LCTL), END );
} else {
return MACRO( D(LCTL), T(V), U(LCTL), END );
}
break;
}
}
return MACRO_NONE;
switch(id) {
case 0: {
if (record->event.pressed) {
return MACRO( D(LCTL), T(C), U(LCTL), END );
} else {
return MACRO( D(LCTL), T(V), U(LCTL), END );
}
break;
}
}
return MACRO_NONE;
};
```

View File

@@ -161,6 +161,24 @@ If you need to change your RGB lighting in code, for example in a macro to chang
|`rgblight_sethsv(h, s, v)` |Set all LEDs to the given HSV value where `h` is between 0 and 360 and `s`/`v` are between 0 and 255 |
|`rgblight_sethsv_noeeprom(h, s, v)`|Set all LEDs to the given HSV value where `h` is between 0 and 360 and `s`/`v` are between 0 and 255 (not written to EEPROM) |
|`rgblight_sethsv_at(h, s, v, led)` |Set a single LED to the given HSV value, where `h` is between 0 and 360, `s`/`v` are between 0 and 255, and `led` is between 0 and `RGBLED_NUM` (not written to EEPROM)|
|`rgblight_toggle()` |Toggle all LEDs between on and off |
|`rgblight_toggle_noeeprom()` |Toggle all LEDs between on and off (not written to EEPROM) |
|`rgblight_step()` |Change the mode to the next RGB animation in the list of enabled RGB animations |
|`rgblight_step_noeeprom()` |Change the mode to the next RGB animation in the list of enabled RGB animations (not written to EEPROM) |
|`rgblight_step_reverse()` |Change the mode to the previous RGB animation in the list of enabled RGB animations |
|`rgblight_step_reverse_noeeprom()` |Change the mode to the previous RGB animation in the list of enabled RGB animations (not written to EEPROM) |
|`rgblight_increase_hue()` |Increase the hue for all LEDs. This wraps around at maximum hue |
|`rgblight_increase_hue_noeeprom()` |Increase the hue for all LEDs. This wraps around at maximum hue (not written to EEPROM) |
|`rgblight_decrease_hue()` |Decrease the hue for all LEDs. This wraps around at minimum hue |
|`rgblight_decrease_hue_noeeprom()` |Decrease the hue for all LEDs. This wraps around at minimum hue (not written to EEPROM) |
|`rgblight_increase_sat()` |Increase the saturation for all LEDs. This wraps around at maximum saturation |
|`rgblight_increase_sat_noeeprom()` |Increase the saturation for all LEDs. This wraps around at maximum saturation (not written to EEPROM) |
|`rgblight_decrease_sat()` |Decrease the saturation for all LEDs. This wraps around at minimum saturation |
|`rgblight_decrease_sat_noeeprom()` |Decrease the saturation for all LEDs. This wraps around at minimum saturation (not written to EEPROM) |
|`rgblight_increase_val()` |Increase the value for all LEDs. This wraps around at maximum value |
|`rgblight_increase_val_noeeprom()` |Increase the value for all LEDs. This wraps around at maximum value (not written to EEPROM) |
|`rgblight_decrease_val()` |Decrease the value for all LEDs. This wraps around at minimum value |
|`rgblight_decrease_val_noeeprom()` |Decrease the value for all LEDs. This wraps around at minimum value (not written to EEPROM) |
Additionally, [`rgblight_list.h`](https://github.com/qmk/qmk_firmware/blob/master/quantum/rgblight_list.h) defines several predefined shortcuts for various colors. Feel free to add to this list!

View File

@@ -185,29 +185,11 @@ Below is a specific example:
## Setup
You will need a few things that can be used for 'Quad Function Tap-Dance'. The suggested setup is to create a user directory for yourself. This directory will contain rules.mk `<your_name>.c` and `<your_name>.h`. This directory should be called `<your_name>`, and located in the top level `users` directory. There should already be a few examples to look at there.
You will need a few things that can be used for 'Quad Function Tap-Dance'.
### In `/qmk_firmware/users/<your_name>/rules.mk`
Put the following:
```c
TAP_DANCE_ENABLE = yes
SRC += your_name.c
```
Pretty simple. It is a nice way to keep some rules common on all your keymaps.
### In `/qmk_firmware/users/<your_name>/<your_name>.h`
You will need a few things in this file:
You'll need to add these to the top of your `keymap.c` file, before your keymap.
```c
#pragma once
#include "quantum.h"
#include "process_keycode/process_tap_dance.h"
typedef struct {
bool is_press_action;
int state;
@@ -234,18 +216,12 @@ int cur_dance (qk_tap_dance_state_t *state);
//for the x tap dance. Put it here so it can be used in any keymap
void x_finished (qk_tap_dance_state_t *state, void *user_data);
void x_reset (qk_tap_dance_state_t *state, void *user_data);
```
### In `/qmk_firmware/users/<your_name>/<your_name>.c`
And then in your user's `.c` file you implement the functions above:
Now, at the bottom of your `keymap.c` file, you'll need to add the following:
```c
#include "<your_name>.h"
#include "quantum.h"
#include "action.h"
#include "process_keycode/process_tap_dance.h"
/* Return an integer that corresponds to what kind of tap dance should be executed.
*
* How to figure out tap dance state: interrupted and pressed.
@@ -335,4 +311,6 @@ qk_tap_dance_action_t tap_dance_actions[] = {
};
```
And then simply use `TD(X_CTL)` anywhere in your keymap after including `<your_name>.h`.
And then simply use `TD(X_CTL)` anywhere in your keymap.
If you want to implement this in your userspace, then you may want to check out how [DanielGGordon](https://github.com/qmk/qmk_firmware/tree/master/users/gordon) has implemented this in their userspace.

View File

@@ -1,28 +1,28 @@
# Unicode Support
There are three Unicode keymap definition method available in QMK:
There are three Unicode keymap definition methods available in QMK:
## UNICODE_ENABLE
Supports Unicode input up to 0xFFFF. The keycode function is `UC(n)` in keymap file, where *n* is a 4 digit hexadecimal.
Supports Unicode up to `0xFFFF`. The keycode function is `UC(n)` in the keymap file, where _n_ is a 4 digit hexadecimal number.
## UNICODEMAP_ENABLE
Supports Unicode up to 0xFFFFFFFF. You need to maintain a separate mapping table `const uint32_t PROGMEM unicode_map[] = {...}` in your keymap file. The keycode function is `X(n)` where *n* is the array index of the mapping table.
Supports Unicode up to `0x10FFFF` (all possible code points). You need to maintain a separate mapping table `const uint32_t PROGMEM unicode_map[] = {...}` in your keymap file. The keycode function is `X(n)`, where _n_ is an array index into the mapping table.
And you may want to have an enum to make reference easier. So you'd want to add something like this to your keymap:
```c
enum unicode_name {
BANG, // ‽
IRONY, // ⸮
SNEK // snke 🐍
enum unicode_names {
BANG,
IRONY,
SNEK,
};
const uint32_t PROGMEM unicode_map[] = {
[BANG] = 0x0203D, // ‽
[IRONY] = 0x02E2E, // ⸮
[SNEK] = 0x1F40D // snke 🐍
[BANG] = 0x203D, // ‽
[IRONY] = 0x2E2E, // ⸮
[SNEK] = 0x1F40D, // 🐍
}:
```
@@ -30,7 +30,7 @@ Make sure that the order for both matches.
## UCIS_ENABLE
Supports Unicode up to 0xFFFFFFFF. As with `UNICODE_MAP`, you may want to maintain a mapping table in your keymap file. However, there is no keycodes for this feature, you will have to add a keycode or function to call `qk_ucis_start()`. Once you've run that, you can just type the text for your unicode, and then hit space or enter to complete it, or ESC to cancel it. And if it matches an entry in your table, it will automatically "backspace" the trigger word (from your table) and then will input the unicode sequence.
Supports Unicode up to `0x10FFFF` (all possible code points). As with `UNICODEMAP`, you may want to maintain a mapping table in your keymap file. However, there are no built-in keycodes for this feature you will have to add a keycode or function that calls `qk_ucis_start()`. Once it's been called, you can type the mnemonic for your character, then hit Space or Enter to complete it or Esc to cancel. If the mnemonic matches an entry in your table, the typed text will automatically be erased and the corresponding Unicode sequence inserted.
For instance, you would need to have a table like this in your keymap:
@@ -53,42 +53,103 @@ There are several functions that you can add to your keymap to customize the fun
* `void qk_ucis_success(uint8_t symbol_index)` - This runs when the unicode input has matched something, and has completed. Default doesn't do anything.
* `void qk_ucis_symbol_fallback (void)` - This runs if the input text doesn't match anything. The default function falls back to trying that input as a unicode code.
The default code for these are:
You can find the default implementations of these functions in [`process_ucis.c`](https://github.com/qmk/qmk_firmware/blob/master/quantum/process_keycode/process_ucis.c).
## Input Modes
Unicode input in QMK works by inputting a sequence of characters to the OS, sort of like a macro. Unfortunately, the way this is done differs for each platform. Specifically, each platform requires a different combination of keys to trigger Unicode input. Therefore, a corresponding input mode has to be set in QMK.
The following input modes are available:
* **`UC_OSX`**: Mac OS X built-in Unicode hex input. Supports code points up to `0xFFFF` (`0x10FFFF` with `UNICODEMAP`).
To enable, go to _System Preferences > Keyboard > Input Sources_, add _Unicode Hex Input_ to the list (it's under _Other_), then activate it from the input dropdown in the Menu Bar.
By default, this mode uses the left Option key (`KC_LALT`), but this can be changed by defining [`UNICODE_OSX_KEY`](#input-key-configuration) with another keycode.
* **`UC_LNX`**: Linux built-in IBus Unicode input. Supports all possible code points (`0x10FFFF`).
Enabled by default and works almost anywhere on IBus-enabled distros. Without IBus, this mode works under GTK apps, but rarely anywhere else.
* **`UC_WIN`**: _(not recommended)_ Windows built-in hex numpad Unicode input. Supports code points up to `0xFFFF`.
To enable, create a registry key under `HKEY_CURRENT_USER\Control Panel\Input Method\EnableHexNumpad` of type `REG_SZ` called `EnableHexNumpad` and set its value to `1`. This can be done from the Command Prompt by running `reg add "HKCU\Control Panel\Input Method" -v EnableHexNumpad -t REG_SZ -d 1` with administrator privileges. Afterwards, reboot.
This mode is not recommended because of reliability and compatibility issues; use the `UC_WINC` mode instead.
* **`UC_BSD`**: _(non implemented)_ Unicode input under BSD. Not implemented at this time. If you're a BSD user and want to help add support for it, please [open an issue on GitHub](https://github.com/qmk/qmk_firmware/issues).
* **`UC_WINC`**: Windows Unicode input using [WinCompose](https://github.com/samhocevar/wincompose). As of v0.8.2, supports code points up to `0xFFFFF`.
To enable, install the [latest release](https://github.com/samhocevar/wincompose/releases/latest). Once installed, WinCompose will automatically run on startup. Works reliably under all version of Windows supported by the app.
By default, this mode uses the right Alt key (`KC_RALT`), but this can be changed in the WinCompose settings and by defining [`UNICODE_WINC_KEY`](#input-key-configuration) with another keycode.
### Switching Input Modes
There are two ways to set the input mode for Unicode: by keycode or by function. Keep in mind that both methods write to persistent storage (EEPROM), and are loaded each time the keyboard starts. So once you've set it the first time, you don't need to set it again unless you want to change it, or you've reset the EEPROM settings.
You can switch the input mode at any time by using one of the following keycodes. The easiest way is to add the ones you use to your keymap.
|Keycode |Alias |Input mode |Description |
|-----------------------|---------|-------------|-----------------------------------------|
|`UNICODE_MODE_FORWARD` |`UC_MOD` | |Cycles forwards through the available modes. [(Disabled by default)](#input-method-cycling)|
|`UNICODE_MODE_REVERSE` |`UC_RMOD`| |Cycles forwards through the available modes. [(Disabled by default)](#input-method-cycling)|
|`UNICODE_MODE_OSX` |`UC_M_OS`|`UC_OSX` |Switch to Mac OS X input. |
|`UNICODE_MODE_LNX` |`UC_M_LN`|`UC_LNX` |Switch to Linux input. |
|`UNICODE_MODE_WIN` |`UC_M_WI`|`UC_WIN` |Switch to Windows input. |
|`UNICODE_MODE_BSD` |`UC_M_BS`|`UC_BSD` |Switch to BSD input (not implemented). |
|`UNICODE_MODE_WINC` |`UC_M_WC`|`UC_WINC` |Switch to Windows input using WinCompose.|
You can also switch the input mode by calling `set_unicode_input_mode(x)` in your code, where _x_ is one of the above input mode constants (e.g. `UC_LNX`). Since the function only needs to be called once, it's recommended that you do it in `eeconfig_init_user` (or a similar function). For example:
```c
void qk_ucis_start_user(void) { // outputs keyboard emoji
unicode_input_start();
register_hex(0x2328);
unicode_input_finish();
}
void qk_ucis_success(uint8_t symbol_index) {
}
void qk_ucis_symbol_fallback (void) { // falls back to manual unicode entry
for (uint8_t i = 0; i < qk_ucis_state.count - 1; i++) {
uint8_t code = qk_ucis_state.codes[i];
register_code(code);
unregister_code(code);
wait_ms(UNICODE_TYPE_DELAY);
}
void eeconfig_init_user(void) {
set_unicode_input_mode(UC_LNX);
}
```
## Unicode Input methods
### Audio Feedback
Unicode input in QMK works by inputting a sequence of characters to the OS,
sort of like macro. Unfortunately, each OS has different ideas on how Unicode is input.
If you have the [Audio feature](feature_audio.md) enabled on the board, you can set melodies to be played when you press the above keys. That way you can have some audio feedback when switching input modes.
This is the current list of Unicode input method in QMK:
For instance, you can add these definitions to your `config.h` file:
* __UC_OSX__: MacOS Unicode Hex Input support. Works only up to 0xFFFF. Disabled by default. To enable: go to System Preferences -> Keyboard -> Input Sources, and enable Unicode Hex.
* __UC_OSX_RALT__: Same as UC_OSX, but sends the Right Alt key for unicode input
* __UC_LNX__: Unicode input method under Linux. Works up to 0xFFFFF. Should work almost anywhere on ibus enabled distros. Without ibus, this works under GTK apps, but rarely anywhere else.
* __UC_WIN__: (not recommended) Windows built-in Unicode input. To enable: create registry key under `HKEY_CURRENT_USER\Control Panel\Input Method\EnableHexNumpad` of type `REG_SZ` called `EnableHexNumpad`, set its value to 1, and reboot. This method is not recommended because of reliability and compatibility issue, use WinCompose method below instead.
* __UC_WINC__: Windows Unicode input using WinCompose. Requires [WinCompose](https://github.com/samhocevar/wincompose). Works reliably under many (all?) variations of Windows.
```c
#define UNICODE_SONG_OSX COIN_SOUND
#define UNICODE_SONG_LNX UNICODE_LINUX
#define UNICODE_SONG_BSD MARIO_GAMEOVER
#define UNICODE_SONG_WIN UNICODE_WINDOWS
#define UNICODE_SONG_WINC UNICODE_WINDOWS
```
At some point, you need to call `set_unicode_input_mode(x)` to set the correct unicode method. This sets the method that is used to send the unicode, and stores it in EEPROM, so you only need to call this once.
### Additional Customization
Because Unicode is such a large and variable feature, there are a number of options that you can customize to work better on your system.
#### Start and Finish input functions
The functions for starting and finishing Unicode input on your platform can be overridden locally. Possible uses include customizing input mode behavior if you don't use the default keys, or adding extra visual/audio feedback to Unicode input.
* `void unicode_input_start(void)` This sends the initial sequence that tells your platform to enter Unicode input mode. For example, it presses Ctrl+Shift+U on Linux and holds the Option key on Mac.
* `void unicode_input_finish(void)` This is called to exit Unicode input mode, for example by pressing Space or releasing the Option key.
You can find the default implementations of these functions in [`process_unicode_common.c`](https://github.com/qmk/qmk_firmware/blob/master/quantum/process_keycode/process_unicode_common.c).
#### Input Key Configuration
Additionally, you can customize the keys used to trigger the unicode input for macOS and WinCompose by adding defines to your `config.h`
```c
#define UNICODE_OSX_KEY KC_LALT
#define UNICODE_WINC_KEY KC_RALT
```
#### Input Method Cycling
Also, you can choose which input methods are availble for cycling through. By default, this is disabled. But if you want to enabled it, then limiting it to just those modes makes sense. Note that `UNICODE_SELECTED_MODES` define is comma delimited.
```c
#define UNICODE_SELECTED_MODES UC_OSX, UC_LNX, UC_WIN, UC_BSD, UC_WINC
```
## `send_unicode_hex_string`

View File

@@ -177,7 +177,7 @@ This is a reference only. Each group of keys links to the page documenting their
|`KC_LGUI` |`KC_LCMD`, `KC_LWIN`|Left GUI (Windows/Command/Meta key) |
|`KC_RCTRL` |`KC_RCTL` |Right Control |
|`KC_RSHIFT` |`KC_RSFT` |Right Shift |
|`KC_RALT` | |Right Alt |
|`KC_RALT` |`KC_ALGR` |Right Alt (AltGr) |
|`KC_RGUI` |`KC_RCMD`, `KC_RWIN`|Right GUI (Windows/Command/Meta key) |
|`KC_SYSTEM_POWER` |`KC_PWR` |System Power Down |
|`KC_SYSTEM_SLEEP` |`KC_SLEP` |System Sleep |
@@ -226,9 +226,9 @@ This is a reference only. Each group of keys links to the page documenting their
|Key |Aliases |Description |
|----------------|---------|----------------------------------|
|`AU_ON` | |Audio mode on |
|`AU_OFF` | |Audio mode off |
|`AU_TOG` | |Toggles Audio mode |
|`AU_ON` | |Turns on Audio Feature |
|`AU_OFF` | |Turns off Audio Feature |
|`AU_TOG` | |Toggles Audio state |
|`CLICKY_TOGGLE` |`CK_TOGG`|Toggles Audio clicky mode |
|`CLICKY_UP` |`CK_UP` |Increases frequency of the clicks |
|`CLICKY_DOWN` |`CK_DOWN`|Decreases frequency of the clicks |
@@ -288,15 +288,16 @@ This is a reference only. Each group of keys links to the page documenting their
## [Layer Switching](feature_advanced_keycodes.md#switching-and-toggling-layers)
|Key |Description |
|-----------------|---------------------------------------------------------------------|
|`DF(layer)` |Switches the default layer |
|`MO(layer)` |Momentarily activates layer, switches off when you let go |
|`LM(layer, mod)` |As `MO(layer)` but with `mod` active |
|`LT(layer, kc)` |Momentarily activates layer if held, sends kc if tapped |
|`TG(layer)` |Toggles the layer (enables it if no active, and vise versa) |
|`TO(layer)` |Activates layer and deactivates all other layers |
|`TT(layer)` |Momentarily activates layer if held, toggles it if tapped repeatedly |
|Key |Description |
|----------------|----------------------------------------------------------------------------------|
|`DF(layer)` |Set the base (default) layer |
|`MO(layer)` |Momentarily turn on `layer` when pressed (requires `KC_TRNS` on destination layer)|
|`OSL(layer)` |Momentarily activates `layer` until a key is pressed. See [One Shot Keys](https://docs.qmk.fm/#/feature_advanced_keycodes?id=one-shot-keys) for details. |
|`LM(layer, mod)`|Momentarily turn on `layer` (like MO) with `mod` active as well.
|`LT(layer, kc)` |Turn on `layer` when held, `kc` when tapped |
|`TG(layer)` |Toggle `layer` on or off |
|`TO(layer)` |Turn on `layer` when pressed |
|`TT(layer)` |Normally acts like MO unless it's tapped multiple times, which toggles `layer` on |
## [Mouse Keys](feature_mouse_keys.md)
@@ -331,7 +332,7 @@ This is a reference only. Each group of keys links to the page documenting their
|`LGUI(kc)`|`LCMD(kc)`, `LWIN(kc)`|Hold Left GUI and press `kc` |
|`RCTL(kc)`| |Hold Right Control and press `kc` |
|`RSFT(kc)`| |Hold Right Shift and press `kc` |
|`RALT(kc)`| |Hold Right Alt and press `kc` |
|`RALT(kc)`|`ALGR(kc)` |Hold Right Alt and press `kc` |
|`RGUI(kc)`|`RCMD(kc)`, `LWIN(kc)`|Hold Right GUI and press `kc` |
|`HYPR(kc)`| |Hold Left Control, Shift, Alt and GUI and press `kc`|
|`MEH(kc)` | |Hold Left Control, Shift and Alt and press `kc` |
@@ -431,18 +432,6 @@ This is a reference only. Each group of keys links to the page documenting their
|`KC_RIGHT_ANGLE_BRACKET`|`KC_RABK`, `KC_GT` |`>` |
|`KC_QUESTION` |`KC_QUES` |`?` |
## [Switching and Toggling Layers](feature_advanced_keycodes.md#switching-and-toggling-layers)
|Key |Description |
|----------------|----------------------------------------------------------------------------------|
|`LT(layer, kc)` |Turn on `layer` when held, `kc` when tapped |
|`TO(layer)` |Turn on `layer` when pressed |
|`MO(layer)` |Momentarily turn on `layer` when pressed (requires `KC_TRNS` on destination layer)|
|`DF(layer)` |Set the base (default) layer |
|`TG(layer)` |Toggle `layer` on or off |
|`TT(layer)` |Normally acts like MO unless it's tapped multiple times, which toggles `layer` on |
|`LM(layer, mod)`|Momentarily turn on `layer` (like MO) with `mod` active as well. |
## [One Shot Keys](feature_advanced_keycodes.md#one-shot-keys)
|Key |Description |

View File

@@ -116,7 +116,7 @@ The basic set of keycodes are based on the [HID Keyboard/Keypad Usage Page (0x07
|`KC_LGUI` |`KC_LCMD`, `KC_LWIN`|Left GUI (Windows/Command/Meta key) |
|`KC_RCTRL` |`KC_RCTL` |Right Control |
|`KC_RSHIFT`|`KC_RSFT` |Right Shift |
|`KC_RALT` | |Right Alt |
|`KC_RALT` |`KC_ALGR` |Right Alt (AltGr) |
|`KC_RGUI` |`KC_RCMD`, `KC_RWIN`|Right GUI (Windows/Command/Meta key)|
## International

View File

@@ -6,13 +6,17 @@ Not sure if your keyboard can run QMK? If it's a mechanical keyboard you built y
## Overview
There are 5 main sections to this guide:
There are 6 main sections to this guide:
* [Getting Started](newbs_getting_started.md)
* [Building Your First Firmware](newbs_building_firmware.md)
* [Flashing Firmware](newbs_flashing.md)
* [Testing and Debugging](newbs_testing_debugging.md)
* [Best Practices](newbs_best_practices.md)
* [Git Best Practices](newbs_best_practices.md)
* [Learn More with these Resources](newbs_learn_more_resources.md)
This guide is focused on helping someone who has never compiled software before. It makes choices and recommendations based on that viewpoint. There are alternative methods for many of these procedures, and we support most of those alternatives. If you have any doubt about how to accomplish a task you can [ask us for guidance](getting_started_getting_help.md).
## Additional Resources
* [Thomas Baart's QMK Basics Blog](https://thomasbaart.nl/category/mechanical-keyboards/firmware/qmk/qmk-basics/) A user-created blog covering the basics of how to use QMK Firmware, as seen from a new user's perspective.

View File

@@ -27,6 +27,8 @@
#define DESCRIPTION A split 50 key keyboard
#define USE_SERIAL
/* serial.c configuration for split keyboard */
#define SOFT_SERIAL_PIN D0
/* Select hand configuration */
#define MASTER_LEFT

View File

@@ -28,6 +28,9 @@
#define USE_SERIAL
/* serial.c configuration for split keyboard */
#define SOFT_SERIAL_PIN D0
/* Select hand configuration */
#define MASTER_LEFT
//#define MASTER_RIGHT

View File

@@ -28,6 +28,9 @@
#define USE_SERIAL
/* serial.c configuration for split keyboard */
#define SOFT_SERIAL_PIN D0
/* Select hand configuration */
#define MASTER_LEFT
//#define MASTER_RIGHT

View File

@@ -0,0 +1,121 @@
{
"keyboard_name": "AT101 Blackheart PCB",
"keyboard_folder": "at101_blackheart",
"url": "https://deskthority.net/group-buys-f50/programmable-vintage-board-pcbs-omnikey-at101-and-z-150-t19325.html",
"maintainer": "qmk, blindassassin111",
"width": 22.5,
"height": 6.5,
"layouts": {
"LAYOUT": {
"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":"Print Screen", "x":15.25, "y":0},
{"label":"Scroll Lock", "x":16.25, "y":0},
{"label":"Pause", "x":17.25, "y":0},
{"label":"Grave", "x":0, "y":1.5},
{"label":"1", "x":1, "y":1.5},
{"label":"2", "x":2, "y":1.5},
{"label":"3", "x":3, "y":1.5},
{"label":"4", "x":4, "y":1.5},
{"label":"5", "x":5, "y":1.5},
{"label":"6", "x":6, "y":1.5},
{"label":"7", "x":7, "y":1.5},
{"label":"8", "x":8, "y":1.5},
{"label":"9", "x":9, "y":1.5},
{"label":"0", "x":10, "y":1.5},
{"label":"-", "x":11, "y":1.5},
{"label":"=", "x":12, "y":1.5},
{"label":"Backspace", "x":13, "y":1.5, "w":2},
{"label":"Insert", "x":15.25, "y":1.5},
{"label":"Home", "x":16.25, "y":1.5},
{"label":"Page Up", "x":17.25, "y":1.5},
{"label":"Num Lock", "x":18.5, "y":1.5},
{"label":"Keypad /", "x":19.5, "y":1.5},
{"label":"Keypad *", "x":20.5, "y":1.5},
{"label":"Keypad -", "x":21.5, "y":1.5},
{"label":"Tab", "x":0, "y":2.5, "w":1.5},
{"label":"Q", "x":1.5, "y":2.5},
{"label":"W", "x":2.5, "y":2.5},
{"label":"E", "x":3.5, "y":2.5},
{"label":"R", "x":4.5, "y":2.5},
{"label":"T", "x":5.5, "y":2.5},
{"label":"Y", "x":6.5, "y":2.5},
{"label":"U", "x":7.5, "y":2.5},
{"label":"I", "x":8.5, "y":2.5},
{"label":"O", "x":9.5, "y":2.5},
{"label":"P", "x":10.5, "y":2.5},
{"label":"LBracket", "x":11.5, "y":2.5},
{"label":"RBracket]", "x":12.5, "y":2.5},
{"label":"Backslash", "x":13.5, "y":2.5, "w":1.5},
{"label":"Delete", "x":15.25, "y":2.5},
{"label":"End", "x":16.25, "y":2.5},
{"label":"Page Down", "x":17.25, "y":2.5},
{"label":"Keypad 7", "x":18.5, "y":2.5},
{"label":"Keypad 8", "x":19.5, "y":2.5},
{"label":"Keypad 9", "x":20.5, "y":2.5},
{"label":"Keypad +", "x":21.5, "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":"Semicolon", "x":10.75, "y":3.5},
{"label":"Quote", "x":11.75, "y":3.5},
{"label":"Enter", "x":12.75, "y":3.5, "w":2.25},
{"label":"Keypad 4", "x":18.5, "y":3.5},
{"label":"Keypad 5", "x":19.5, "y":3.5},
{"label":"Keypad 6", "x":20.5, "y":3.5},
{"label":"Keypad =", "x":21.5, "y":3.5},
{"label":"LShift", "x":0, "y":4.5, "w":1.25},
{"label":"ISO Backslash", "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":"Comma", "x":9.25, "y":4.5},
{"label":"Period", "x":10.25, "y":4.5},
{"label":"Slash", "x":11.25, "y":4.5},
{"label":"RShift", "x":12.25, "y":4.5, "w":1.75},
{"label":"Fn", "x":14, "y":4.5},
{"label":"Up", "x":16.25, "y":4.5},
{"label":"Keypad 1", "x":18.5, "y":4.5},
{"label":"Keypad 2", "x":19.5, "y":4.5},
{"label":"Keypad 3", "x":20.5, "y":4.5},
{"label":"Keypad Enter", "x":21.5, "y":4.5, "h":2},
{"label":"LCtrl", "x":0, "y":5.5, "w":1.25},
{"label":"LGUI", "x":1.25, "y":5.5, "w":1.25},
{"label":"LAlt", "x":2.5, "y":5.5, "w":1.25},
{"label":"Space", "x":3.75, "y":5.5, "w":6.25},
{"label":"RAlt", "x":10, "y":5.5, "w":1.25},
{"label":"RGUI", "x":11.25, "y":5.5, "w":1.25},
{"label":"Menu", "x":12.5, "y":5.5, "w":1.25},
{"label":"RCtrl", "x":13.75, "y":5.5, "w":1.25},
{"label":"Left", "x":15.25, "y":5.5},
{"label":"Down", "x":16.25, "y":5.5},
{"label":"Right", "x":17.25, "y":5.5},
{"label":"Keypad 0", "x":18.5, "y":5.5, "w":2},
{"label":"Keypad .", "x":20.5, "y":5.5}
]
}
}
}

View File

@@ -1,5 +1,6 @@
AT101 Blackheart PCB
===
# AT101 Blackheart PCB
![AT101 Blackheart PCB](https://deskthority.net/resources/image/48571)
A replacement PCB for AT101 keyboards.
@@ -11,4 +12,4 @@ Make example for this keyboard (after setting up your build environment):
make at101_blackheart:default
See [build environment setup](https://docs.qmk.fm/build_environment_setup.html) then the [make instructions](https://docs.qmk.fm/make_instructions.html) for more information.
See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).

View File

@@ -1,16 +1,153 @@
{
"keyboard_name": "Baguette",
"url": "",
"maintainer": "qmk",
"bootloader": "atmel-dfu",
"width": 19.75,
"height": 6.5,
"layouts": {
"LAYOUT_ansi": {
"layout": [{"label":"~", "x":3.25, "y":1.5}, {"label":"!", "x":4.25, "y":1.5}, {"label":"@", "x":5.25, "y":1.5}, {"label":"#", "x":6.25, "y":1.5}, {"label":"$", "x":7.25, "y":1.5}, {"label":"%", "x":8.25, "y":1.5}, {"label":"^", "x":9.25, "y":1.5}, {"label":"&", "x":10.25, "y":1.5}, {"label":"*", "x":11.25, "y":1.5}, {"label":"(", "x":12.25, "y":1.5}, {"label":")", "x":13.25, "y":1.5}, {"label":"_", "x":14.25, "y":1.5}, {"label":"+", "x":15.25, "y":1.5}, {"label":"|", "x":16.25, "y":1.5}, {"label":"Del", "x":17.25, "y":1.5}, {"label":"Insert", "x":18.75, "y":1.5}, {"label":"Tab", "x":3.25, "y":2.5, "w":1.5}, {"label":"Q", "x":4.75, "y":2.5}, {"label":"W", "x":5.75, "y":2.5}, {"label":"E", "x":6.75, "y":2.5}, {"label":"R", "x":7.75, "y":2.5}, {"label":"T", "x":8.75, "y":2.5}, {"label":"Y", "x":9.75, "y":2.5}, {"label":"U", "x":10.75, "y":2.5}, {"label":"I", "x":11.75, "y":2.5}, {"label":"O", "x":12.75, "y":2.5}, {"label":"P", "x":13.75, "y":2.5}, {"label":"{", "x":14.75, "y":2.5}, {"label":"}", "x":15.75, "y":2.5}, {"label":"|", "x":16.75, "y":2.5, "w":1.5}, {"label":"Delete", "x":18.75, "y":2.5}, {"label":"Control", "x":3.25, "y":3.5, "w":1.75}, {"label":"A", "x":5, "y":3.5}, {"label":"S", "x":6, "y":3.5}, {"label":"D", "x":7, "y":3.5}, {"label":"F", "x":8, "y":3.5}, {"label":"G", "x":9, "y":3.5}, {"label":"H", "x":10, "y":3.5}, {"label":"J", "x":11, "y":3.5}, {"label":"K", "x":12, "y":3.5}, {"label":"L", "x":13, "y":3.5}, {"label":":", "x":14, "y":3.5}, {"label":"\"", "x":15, "y":3.5}, {"label":"Enter", "x":16, "y":3.5, "w":2.25}, {"x":3.25, "y":4.5, "w":1.25}, {"x":4.5, "y":4.5}, {"label":"Z", "x":5.5, "y":4.5}, {"label":"X", "x":6.5, "y":4.5}, {"label":"C", "x":7.5, "y":4.5}, {"label":"V", "x":8.5, "y":4.5}, {"label":"B", "x":9.5, "y":4.5}, {"label":"N", "x":10.5, "y":4.5}, {"label":"M", "x":11.5, "y":4.5}, {"label":"<", "x":12.5, "y":4.5}, {"label":">", "x":13.5, "y":4.5}, {"label":"?", "x":14.5, "y":4.5}, {"x":15.5, "y":4.5}, {"label":"Shift", "x":16.5, "y":4.5, "w":1.25}, {"label":"\u2191", "x":17.75, "y":4.5}, {"label":"Win", "x":4.5, "y":5.5}, {"label":"Alt", "x":5.5, "y":5.5, "w":1.25}, {"x":6.75, "y":5.5, "w":6.25}, {"label":"Ctrl", "x":13, "y":5.5, "w":1.25}, {"label":"Fn", "x":14.25, "y":5.5}, {"label":"\u2190", "x":16.75, "y":5.5}, {"label":"\u2193", "x":17.75, "y":5.5}, {"label":"\u2192", "x":18.75, "y":5.5}]
},
"LAYOUT_iso": {
"layout": [{"label":"~", "x":3.25, "y":1.5}, {"label":"!", "x":4.25, "y":1.5}, {"label":"@", "x":5.25, "y":1.5}, {"label":"#", "x":6.25, "y":1.5}, {"label":"$", "x":7.25, "y":1.5}, {"label":"%", "x":8.25, "y":1.5}, {"label":"^", "x":9.25, "y":1.5}, {"label":"&", "x":10.25, "y":1.5}, {"label":"*", "x":11.25, "y":1.5}, {"label":"(", "x":12.25, "y":1.5}, {"label":")", "x":13.25, "y":1.5}, {"label":"_", "x":14.25, "y":1.5}, {"label":"+", "x":15.25, "y":1.5}, {"label":"|", "x":16.25, "y":1.5}, {"label":"Del", "x":17.25, "y":1.5}, {"label":"Insert", "x":18.75, "y":1.5}, {"label":"Tab", "x":3.25, "y":2.5, "w":1.5}, {"label":"Q", "x":4.75, "y":2.5}, {"label":"W", "x":5.75, "y":2.5}, {"label":"E", "x":6.75, "y":2.5}, {"label":"R", "x":7.75, "y":2.5}, {"label":"T", "x":8.75, "y":2.5}, {"label":"Y", "x":9.75, "y":2.5}, {"label":"U", "x":10.75, "y":2.5}, {"label":"I", "x":11.75, "y":2.5}, {"label":"O", "x":12.75, "y":2.5}, {"label":"P", "x":13.75, "y":2.5}, {"label":"{", "x":14.75, "y":2.5}, {"label":"}", "x":15.75, "y":2.5}, {"label":"Enter", "x":17, "y":2.5, "w":1.25, "h":2}, {"label":"Delete", "x":18.75, "y":2.5}, {"label":"Control", "x":3.25, "y":3.5, "w":1.75}, {"label":"A", "x":5, "y":3.5}, {"label":"S", "x":6, "y":3.5}, {"label":"D", "x":7, "y":3.5}, {"label":"F", "x":8, "y":3.5}, {"label":"G", "x":9, "y":3.5}, {"label":"H", "x":10, "y":3.5}, {"label":"J", "x":11, "y":3.5}, {"label":"K", "x":12, "y":3.5}, {"label":"L", "x":13, "y":3.5}, {"label":":", "x":14, "y":3.5}, {"label":"\"", "x":15, "y":3.5}, {"x":16, "y":3.5}, {"x":3.25, "y":4.5, "w":1.25}, {"x":4.5, "y":4.5}, {"label":"Z", "x":5.5, "y":4.5}, {"label":"X", "x":6.5, "y":4.5}, {"label":"C", "x":7.5, "y":4.5}, {"label":"V", "x":8.5, "y":4.5}, {"label":"B", "x":9.5, "y":4.5}, {"label":"N", "x":10.5, "y":4.5}, {"label":"M", "x":11.5, "y":4.5}, {"label":"<", "x":12.5, "y":4.5}, {"label":">", "x":13.5, "y":4.5}, {"label":"?", "x":14.5, "y":4.5}, {"x":15.5, "y":4.5}, {"label":"Shift", "x":16.5, "y":4.5, "w":1.25}, {"label":"\u2191", "x":17.75, "y":4.5}, {"label":"Win", "x":4.5, "y":5.5}, {"label":"Alt", "x":5.5, "y":5.5, "w":1.25}, {"x":6.75, "y":5.5, "w":6.25}, {"label":"Ctrl", "x":13, "y":5.5, "w":1.25}, {"label":"Fn", "x":14.25, "y":5.5}, {"label":"\u2190", "x":16.75, "y":5.5}, {"label":"\u2193", "x":17.75, "y":5.5}, {"label":"\u2192", "x":18.75, "y":5.5}]
}
"keyboard_name": "Baguette",
"url": "",
"maintainer": "qmk",
"bootloader": "atmel-dfu",
"width": 16.5,
"height": 5,
"layouts": {
"LAYOUT_ansi": {
"layout": [
{"label":"`", "x":0, "y":0},
{"label":"1", "x":1, "y":0},
{"label":"2", "x":2, "y":0},
{"label":"3", "x":3, "y":0},
{"label":"4", "x":4, "y":0},
{"label":"5", "x":5, "y":0},
{"label":"6", "x":6, "y":0},
{"label":"7", "x":7, "y":0},
{"label":"8", "x":8, "y":0},
{"label":"9", "x":9, "y":0},
{"label":"0", "x":10, "y":0},
{"label":"-", "x":11, "y":0},
{"label":"=", "x":12, "y":0},
{"label":"Backspace", "x":13, "y":0},
{"label":"Backspace2", "x":14, "y":0},
{"label":"Insert", "x":15.5, "y":0},
{"label":"Tab", "x":0, "y":1, "w":1.5},
{"label":"Q", "x":1.5, "y":1},
{"label":"W", "x":2.5, "y":1},
{"label":"E", "x":3.5, "y":1},
{"label":"R", "x":4.5, "y":1},
{"label":"T", "x":5.5, "y":1},
{"label":"Y", "x":6.5, "y":1},
{"label":"U", "x":7.5, "y":1},
{"label":"I", "x":8.5, "y":1},
{"label":"O", "x":9.5, "y":1},
{"label":"P", "x":10.5, "y":1},
{"label":"[", "x":11.5, "y":1},
{"label":"]", "x":12.5, "y":1},
{"label":"\\", "x":13.5, "y":1, "w":1.5},
{"label":"Delete", "x":15.5, "y":1},
{"label":"Caps Lock", "x":0, "y":2, "w":1.75},
{"label":"A", "x":1.75, "y":2},
{"label":"S", "x":2.75, "y":2},
{"label":"D", "x":3.75, "y":2},
{"label":"F", "x":4.75, "y":2},
{"label":"G", "x":5.75, "y":2},
{"label":"H", "x":6.75, "y":2},
{"label":"J", "x":7.75, "y":2},
{"label":"K", "x":8.75, "y":2},
{"label":"L", "x":9.75, "y":2},
{"label":";", "x":10.75, "y":2},
{"label":"'", "x":11.75, "y":2},
{"label":"Enter", "x":12.75, "y":2, "w":2.25},
{"label":"Shift", "x":0, "y":3, "w":1.25},
{"label":"ISO \\", "x":1.25, "y":3},
{"label":"Z", "x":2.25, "y":3},
{"label":"X", "x":3.25, "y":3},
{"label":"C", "x":4.25, "y":3},
{"label":"V", "x":5.25, "y":3},
{"label":"B", "x":6.25, "y":3},
{"label":"N", "x":7.25, "y":3},
{"label":"M", "x":8.25, "y":3},
{"label":",", "x":9.25, "y":3},
{"label":".", "x":10.25, "y":3},
{"label":"/", "x":11.25, "y":3},
{"label":"JP RO", "x":12.25, "y":3},
{"label":"Shift", "x":13.25, "y":3, "w":1.25},
{"label":"Up", "x":14.5, "y":3},
{"label":"GUI", "x":1.25, "y":4},
{"label":"Alt", "x":2.25, "y":4, "w":1.25},
{"label":"Space", "x":3.5, "y":4, "w":6.25},
{"label":"Ctrl", "x":9.75, "y":4, "w":1.25},
{"label":"Fn", "x":11, "y":4},
{"label":"Left", "x":13.5, "y":4},
{"label":"Down", "x":14.5, "y":4},
{"label":"Right", "x":15.5, "y":4}
]
},
"LAYOUT_iso": {
"layout": [
{"label":"`", "x":0, "y":0},
{"label":"1", "x":1, "y":0},
{"label":"2", "x":2, "y":0},
{"label":"3", "x":3, "y":0},
{"label":"4", "x":4, "y":0},
{"label":"5", "x":5, "y":0},
{"label":"6", "x":6, "y":0},
{"label":"7", "x":7, "y":0},
{"label":"8", "x":8, "y":0},
{"label":"9", "x":9, "y":0},
{"label":"0", "x":10, "y":0},
{"label":"-", "x":11, "y":0},
{"label":"=", "x":12, "y":0},
{"label":"Backspace", "x":13, "y":0},
{"label":"Backspace2", "x":14, "y":0},
{"label":"Insert", "x":15.5, "y":0},
{"label":"Tab", "x":0, "y":1, "w":1.5},
{"label":"Q", "x":1.5, "y":1},
{"label":"W", "x":2.5, "y":1},
{"label":"E", "x":3.5, "y":1},
{"label":"R", "x":4.5, "y":1},
{"label":"T", "x":5.5, "y":1},
{"label":"Y", "x":6.5, "y":1},
{"label":"U", "x":7.5, "y":1},
{"label":"I", "x":8.5, "y":1},
{"label":"O", "x":9.5, "y":1},
{"label":"P", "x":10.5, "y":1},
{"label":"[", "x":11.5, "y":1},
{"label":"]", "x":12.5, "y":1},
{"label":"Delete", "x":15.5, "y":1},
{"label":"Caps Lock", "x":0, "y":2, "w":1.75},
{"label":"A", "x":1.75, "y":2},
{"label":"S", "x":2.75, "y":2},
{"label":"D", "x":3.75, "y":2},
{"label":"F", "x":4.75, "y":2},
{"label":"G", "x":5.75, "y":2},
{"label":"H", "x":6.75, "y":2},
{"label":"J", "x":7.75, "y":2},
{"label":"K", "x":8.75, "y":2},
{"label":"L", "x":9.75, "y":2},
{"label":";", "x":10.75, "y":2},
{"label":"'", "x":11.75, "y":2},
{"label":"ISO #", "x":12.75, "y":2},
{"label":"Enter", "x":13.75, "y":2, "w":1.25, "h":2},
{"label":"Shift", "x":0, "y":3, "w":1.25},
{"label":"ISO \\", "x":1.25, "y":3},
{"label":"Z", "x":2.25, "y":3},
{"label":"X", "x":3.25, "y":3},
{"label":"C", "x":4.25, "y":3},
{"label":"V", "x":5.25, "y":3},
{"label":"B", "x":6.25, "y":3},
{"label":"N", "x":7.25, "y":3},
{"label":"M", "x":8.25, "y":3},
{"label":",", "x":9.25, "y":3},
{"label":".", "x":10.25, "y":3},
{"label":"/", "x":11.25, "y":3},
{"label":"JP_RO", "x":12.25, "y":3},
{"label":"Shift", "x":13.25, "y":3, "w":1.25},
{"label":"Up", "x":14.5, "y":3},
{"label":"GUI", "x":1.25, "y":4},
{"label":"Alt", "x":2.25, "y":4, "w":1.25},
{"label":"Space", "x":3.5, "y":4, "w":6.25},
{"label":"Ctrl", "x":9.75, "y":4, "w":1.25},
{"label":"Fn", "x":11, "y":4},
{"label":"Left", "x":13.5, "y":4},
{"label":"Down", "x":14.5, "y":4},
{"label":"Right", "x":15.5, "y":4}
]
}
}
}

View File

@@ -0,0 +1,20 @@
/*
Copyright 2018 Fredric Silberberg (333fred)
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
// Long tapping term on the big switch, because it takes so long to press
#define TAPPING_TERM 500

View File

@@ -0,0 +1,123 @@
#include QMK_KEYBOARD_H
typedef enum {
SINGLE_TAP, SINGLE_HOLD, DOUBLE, TRIPLE, QUAD
} tap_dance_state_enum;
enum {
TD_KEY = 0
};
static tap_dance_state_enum tap_dance_state;
static bool tap_dance_active = false;
static uint16_t timer;
void dance_cycle(bool override_timer) {
if (tap_dance_active)
{
if (timer_elapsed(timer) > 100 || override_timer)
{
switch (tap_dance_state)
{
case SINGLE_HOLD:
{
rgblight_increase_hue_noeeprom();
break;
}
case DOUBLE:
{
rgblight_step_noeeprom();
break;
}
case TRIPLE:
{
rgblight_toggle_noeeprom();
break;
}
default:
// Not needed
break;
}
timer = timer_read();
}
}
}
void dance_finished(qk_tap_dance_state_t *state, void* user_data) {
// Determine the current state
switch (state->count)
{
case 1:
{
if (state->interrupted || state->pressed == 0) tap_dance_state = SINGLE_TAP;
else tap_dance_state = SINGLE_HOLD;
break;
}
case 2:
{
tap_dance_state = DOUBLE;
break;
}
case 3:
{
tap_dance_state = TRIPLE;
break;
}
default:
{
tap_dance_state = QUAD;
break;
}
}
switch (tap_dance_state)
{
case SINGLE_TAP:
{
// VS Build: CTRL+SHIFT+B
send_string_with_delay_P(PSTR(SS_DOWN(X_LCTRL) SS_DOWN(X_LSHIFT) "b" SS_UP(X_LSHIFT) SS_UP(X_LCTRL)), 10);
tap_dance_active = false;
break;
}
case SINGLE_HOLD:
case DOUBLE:
case TRIPLE:
{
// These are handled by the matrix_scan, which will register the appropriate rgb
// functions every scan
tap_dance_active = true;
timer = timer_read();
dance_cycle(true);
break;
}
case QUAD:
{
// Reprogram
reset_keyboard();
break;
}
}
}
void dance_reset(qk_tap_dance_state_t *state, void* user_data)
{
tap_dance_active = false;
}
qk_tap_dance_action_t tap_dance_actions[] = {
[TD_KEY] = ACTION_TAP_DANCE_FN_ADVANCED (NULL, dance_finished, dance_reset)
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = LAYOUT(TD(TD_KEY))
};
void matrix_scan_user(void) {
dance_cycle(false);
}

View File

@@ -0,0 +1,5 @@
# I'm not using things from my userpace in this one
USER_NAME = disable
RGBLIGHT_ENABLE = yes
TAP_DANCE_ENABLE = yes

View File

@@ -37,6 +37,42 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
{ K07, K17, K27, K37, K47, K57, K67, K77, KC_NO, KC_NO, KA7, KB7, KC7, KD7, KE7 } \
}
#define LAYOUT_ansi( \
K05, K25, K35, K45, K55, K06, KA6, KA7, K07, KB5, KC5, KD5, KE5, KD1, KE1, KE2, K65, K75, K85, K95, \
K04, K14, K24, K34, K44, K54, K16, KB6, KB7, K17, KA4, KB4, KC4, KE4, KD0, K64, K74, K84, K94, \
K03, K13, K23, K33, K43, K53, K26, KC6, KC7, K27, KA3, KB3, KC3, KD3, K67, K63, K73, K83, \
K02, K12, K22, K32, K42, K52, K36, KD6, KD7, K37, KA2, KB2, KD2, KE0, K62, K72, K82, K92, \
K01, K11, K21, K31, K41, K51, K46, KE6, KE7, K47, KA1, KB1, K86, K77, K61, K71, K81, \
K00, K10, K20, K56, K57, KB0, KC0, K66, K76, K96, K60, K80, K90 \
){ \
{ K00, K10, K20, KC_NO, KC_NO, KC_NO, K60, KC_NO, K80, K90, KC_NO, KB0, KC0, KD0, KE0 }, \
{ K01, K11, K21, K31, K41, K51, K61, K71, K81, KC_NO, KA1, KB1, KC_NO, KD1, KE1 }, \
{ K02, K12, K22, K32, K42, K52, K62, K72, K82, K92, KA2, KB2, KC_NO, KD2, KE2 }, \
{ K03, K13, K23, K33, K43, K53, K63, K73, K83, KC_NO, KA3, KB3, KC3, KD3, KC_NO }, \
{ K04, K14, K24, K34, K44, K54, K64, K74, K84, K94, KA4, KB4, KC4, KC_NO, KE4 }, \
{ K05, KC_NO, K25, K35, K45, K55, K65, K75, K85, K95, KC_NO, KB5, KC5, KD5, KE5 }, \
{ K06, K16, K26, K36, K46, K56, K66, K76, K86, K96, KA6, KB6, KC6, KD6, KE6 }, \
{ K07, K17, K27, K37, K47, K57, K67, K77, KC_NO, KC_NO, KA7, KB7, KC7, KD7, KE7 } \
}
#define LAYOUT_iso( \
K05, K25, K35, K45, K55, K06, KA6, KA7, K07, KB5, KC5, KD5, KE5, KD1, KE1, KE2, K65, K75, K85, K95, \
K04, K14, K24, K34, K44, K54, K16, KB6, KB7, K17, KA4, KB4, KC4, KE4, KD0, K64, K74, K84, K94, \
K03, K13, K23, K33, K43, K53, K26, KC6, KC7, K27, KA3, KB3, KC3, K67, K63, K73, K83, \
K02, K12, K22, K32, K42, K52, K36, KD6, KD7, K37, KA2, KB2, KC2, KD2, KE0, K62, K72, K82, K92, \
K01, K30, K11, K21, K31, K41, K51, K46, KE6, KE7, K47, KA1, KB1, K86, K77, K61, K71, K81, \
K00, K10, K20, K56, K57, KB0, KC0, K66, K76, K96, K60, K80, K90 \
){ \
{ K00, K10, K20, K30, KC_NO, KC_NO, K60, KC_NO, K80, K90, KC_NO, KB0, KC0, KD0, KE0 }, \
{ K01, K11, K21, K31, K41, K51, K61, K71, K81, KC_NO, KA1, KB1, KC_NO, KD1, KE1 }, \
{ K02, K12, K22, K32, K42, K52, K62, K72, K82, K92, KA2, KB2, KC2, KD2, KE2 }, \
{ K03, K13, K23, K33, K43, K53, K63, K73, K83, KC_NO, KA3, KB3, KC3, KC_NO, KC_NO }, \
{ K04, K14, K24, K34, K44, K54, K64, K74, K84, K94, KA4, KB4, KC4, KC_NO, KE4 }, \
{ K05, KC_NO, K25, K35, K45, K55, K65, K75, K85, K95, KC_NO, KB5, KC5, KD5, KE5 }, \
{ K06, K16, K26, K36, K46, K56, K66, K76, K86, K96, KA6, KB6, KC6, KD6, KE6 }, \
{ K07, K17, K27, K37, K47, K57, K67, K77, KC_NO, KC_NO, KA7, KB7, KC7, KD7, KE7 } \
}
#define LAYOUT_kc( \
K05, K25, K35, K45, K55, K06, KA6, KA7, K07, KB5, KC5, KD5, KE5, KD1, KE1, KE2, K65, K75, K85, K95, \
K04, K14, K24, K34, K44, K54, K16, KB6, KB7, K17, KA4, KB4, KC4, KE4, KD0, K64, K74, K84, K94, \

340
keyboards/bminiex/info.json Normal file
View File

@@ -0,0 +1,340 @@
{
"keyboard_name": "winkeyless.kr B.mini EX",
"keyboard_folder": "bminiex",
"url": "https://winkeyless.kr/product/b-mini-ex-x2-pcb/",
"maintainer": "qmk",
"width": 20.25,
"height": 6.25,
"layouts": {
"LAYOUT": {
"layout": [
{"label":"ESC", "x":0, "y":0},
{"label":"F1", "x":1, "y":0},
{"label":"F2", "x":2, "y":0},
{"label":"F3", "x":3, "y":0},
{"label":"F4", "x":4, "y":0},
{"label":"F5", "x":5, "y":0},
{"label":"F6", "x":6, "y":0},
{"label":"F7", "x":7, "y":0},
{"label":"F8", "x":8, "y":0},
{"label":"F9", "x":9, "y":0},
{"label":"F10", "x":10, "y":0},
{"label":"F11", "x":11, "y":0},
{"label":"F12", "x":12, "y":0},
{"label":"PSCR", "x":13, "y":0},
{"label":"HOME", "x":14, "y":0},
{"label":"END", "x":15, "y":0},
{"label":"NO", "x":16.25, "y":0},
{"label":"NO", "x":17.25, "y":0},
{"label":"NO", "x":18.25, "y":0},
{"label":"NO", "x":19.25, "y":0},
{"label":"GRV", "x":0, "y":1.25},
{"label":"1", "x":1, "y":1.25},
{"label":"2", "x":2, "y":1.25},
{"label":"3", "x":3, "y":1.25},
{"label":"4", "x":4, "y":1.25},
{"label":"5", "x":5, "y":1.25},
{"label":"6", "x":6, "y":1.25},
{"label":"7", "x":7, "y":1.25},
{"label":"8", "x":8, "y":1.25},
{"label":"9", "x":9, "y":1.25},
{"label":"0", "x":10, "y":1.25},
{"label":"MINS", "x":11, "y":1.25},
{"label":"EQL", "x":12, "y":1.25},
{"label":"BSPC", "x":13, "y":1.25, "w":2},
{"label":"DEL", "x":15, "y":1.25},
{"label":"NLCK", "x":16.25, "y":1.25},
{"label":"PSLS", "x":17.25, "y":1.25},
{"label":"PAST", "x":18.25, "y":1.25},
{"label":"PMNS", "x":19.25, "y":1.25},
{"label":"TAB", "x":0, "y":2.25, "w":1.5},
{"label":"Q", "x":1.5, "y":2.25},
{"label":"W", "x":2.5, "y":2.25},
{"label":"E", "x":3.5, "y":2.25},
{"label":"R", "x":4.5, "y":2.25},
{"label":"T", "x":5.5, "y":2.25},
{"label":"Y", "x":6.5, "y":2.25},
{"label":"U", "x":7.5, "y":2.25},
{"label":"I", "x":8.5, "y":2.25},
{"label":"O", "x":9.5, "y":2.25},
{"label":"P", "x":10.5, "y":2.25},
{"label":"LBRC", "x":11.5, "y":2.25},
{"label":"RBRC", "x":12.5, "y":2.25},
{"label":"NO", "x":13.5, "y":2.25, "w":1.5},
{"label":"INS", "x":15, "y":2.25},
{"label":"P7", "x":16.25, "y":2.25},
{"label":"P8", "x":17.25, "y":2.25},
{"label":"P9", "x":18.25, "y":2.25},
{"label":"CAPS", "x":0, "y":3.25, "w":1.75},
{"label":"A", "x":1.75, "y":3.25},
{"label":"S", "x":2.75, "y":3.25},
{"label":"D", "x":3.75, "y":3.25},
{"label":"F", "x":4.75, "y":3.25},
{"label":"G", "x":5.75, "y":3.25},
{"label":"H", "x":6.75, "y":3.25},
{"label":"J", "x":7.75, "y":3.25},
{"label":"K", "x":8.75, "y":3.25},
{"label":"L", "x":9.75, "y":3.25},
{"label":"SCLN", "x":10.75, "y":3.25},
{"label":"QUOT", "x":11.75, "y":3.25},
{"label":"NUHS", "x":12.75, "y":3.25},
{"label":"ENT", "x":13.75, "y":3.25, "w":1.25},
{"label":"PGUP", "x":15, "y":3.25},
{"label":"P4", "x":16.25, "y":3.25},
{"label":"P5", "x":17.25, "y":3.25},
{"label":"P6", "x":18.25, "y":3.25},
{"label":"PPLS", "x":19.25, "y":2.25, "h":2},
{"label":"LSFT", "x":0, "y":4.25, "w":1.25},
{"label":"NUBS", "x":1.25, "y":4.25},
{"label":"Z", "x":2.25, "y":4.25},
{"label":"X", "x":3.25, "y":4.25},
{"label":"C", "x":4.25, "y":4.25},
{"label":"V", "x":5.25, "y":4.25},
{"label":"B", "x":6.25, "y":4.25},
{"label":"N", "x":7.25, "y":4.25},
{"label":"M", "x":8.25, "y":4.25},
{"label":"COMM", "x":9.25, "y":4.25},
{"label":"DOT", "x":10.25, "y":4.25},
{"label":"SLSH", "x":11.25, "y":4.25},
{"label":"RSFT", "x":12.25, "y":4.25, "w":1.75},
{"label":"UP", "x":14, "y":4.25},
{"label":"PGDN", "x":15, "y":4.25},
{"label":"P1", "x":16.25, "y":4.25},
{"label":"P2", "x":17.25, "y":4.25},
{"label":"P3", "x":18.25, "y":4.25},
{"label":"LCTL", "x":0, "y":5.25, "w":1.25},
{"label":"LGUI", "x":1.25, "y":5.25, "w":1.25},
{"label":"LALT", "x":2.5, "y":5.25, "w":1.25},
{"label":"SPC", "x":3.75, "y":5.25, "w":6.25},
{"label":"RALT", "x":10, "y":5.25},
{"label":"APP", "x":11, "y":5.25},
{"label":"RCTL", "x":12, "y":5.25},
{"label":"LEFT", "x":13, "y":5.25},
{"label":"DOWN", "x":14, "y":5.25},
{"label":"RGHT", "x":15, "y":5.25},
{"label":"P0", "x":16.25, "y":5.25, "w":2},
{"label":"PDOT", "x":18.25, "y":5.25},
{"label":"PENT", "x":19.25, "y":4.25, "h":2}
]
},
"LAYOUT_ansi": {
"layout": [
{"label":"ESC", "x":0, "y":0},
{"label":"F1", "x":1, "y":0},
{"label":"F2", "x":2, "y":0},
{"label":"F3", "x":3, "y":0},
{"label":"F4", "x":4, "y":0},
{"label":"F5", "x":5, "y":0},
{"label":"F6", "x":6, "y":0},
{"label":"F7", "x":7, "y":0},
{"label":"F8", "x":8, "y":0},
{"label":"F9", "x":9, "y":0},
{"label":"F10", "x":10, "y":0},
{"label":"F11", "x":11, "y":0},
{"label":"F12", "x":12, "y":0},
{"label":"PSCR", "x":13, "y":0},
{"label":"HOME", "x":14, "y":0},
{"label":"END", "x":15, "y":0},
{"label":"NO", "x":16.25, "y":0},
{"label":"NO", "x":17.25, "y":0},
{"label":"NO", "x":18.25, "y":0},
{"label":"NO", "x":19.25, "y":0},
{"label":"GRV", "x":0, "y":1.25},
{"label":"1", "x":1, "y":1.25},
{"label":"2", "x":2, "y":1.25},
{"label":"3", "x":3, "y":1.25},
{"label":"4", "x":4, "y":1.25},
{"label":"5", "x":5, "y":1.25},
{"label":"6", "x":6, "y":1.25},
{"label":"7", "x":7, "y":1.25},
{"label":"8", "x":8, "y":1.25},
{"label":"9", "x":9, "y":1.25},
{"label":"0", "x":10, "y":1.25},
{"label":"MINS", "x":11, "y":1.25},
{"label":"EQL", "x":12, "y":1.25},
{"label":"BSPC", "x":13, "y":1.25, "w":2},
{"label":"DEL", "x":15, "y":1.25},
{"label":"NLCK", "x":16.25, "y":1.25},
{"label":"PSLS", "x":17.25, "y":1.25},
{"label":"PAST", "x":18.25, "y":1.25},
{"label":"PMNS", "x":19.25, "y":1.25},
{"label":"TAB", "x":0, "y":2.25, "w":1.5},
{"label":"Q", "x":1.5, "y":2.25},
{"label":"W", "x":2.5, "y":2.25},
{"label":"E", "x":3.5, "y":2.25},
{"label":"R", "x":4.5, "y":2.25},
{"label":"T", "x":5.5, "y":2.25},
{"label":"Y", "x":6.5, "y":2.25},
{"label":"U", "x":7.5, "y":2.25},
{"label":"I", "x":8.5, "y":2.25},
{"label":"O", "x":9.5, "y":2.25},
{"label":"P", "x":10.5, "y":2.25},
{"label":"LBRC", "x":11.5, "y":2.25},
{"label":"RBRC", "x":12.5, "y":2.25},
{"label":"BSLS", "x":13.5, "y":2.25, "w":1.5},
{"label":"INS", "x":15, "y":2.25},
{"label":"P7", "x":16.25, "y":2.25},
{"label":"P8", "x":17.25, "y":2.25},
{"label":"P9", "x":18.25, "y":2.25},
{"label":"CAPS", "x":0, "y":3.25, "w":1.75},
{"label":"A", "x":1.75, "y":3.25},
{"label":"S", "x":2.75, "y":3.25},
{"label":"D", "x":3.75, "y":3.25},
{"label":"F", "x":4.75, "y":3.25},
{"label":"G", "x":5.75, "y":3.25},
{"label":"H", "x":6.75, "y":3.25},
{"label":"J", "x":7.75, "y":3.25},
{"label":"K", "x":8.75, "y":3.25},
{"label":"L", "x":9.75, "y":3.25},
{"label":"SCLN", "x":10.75, "y":3.25},
{"label":"QUOT", "x":11.75, "y":3.25},
{"label":"ENT", "x":12.75, "y":3.25, "w":2.25},
{"label":"PGUP", "x":15, "y":3.25},
{"label":"P4", "x":16.25, "y":3.25},
{"label":"P5", "x":17.25, "y":3.25},
{"label":"P6", "x":18.25, "y":3.25},
{"label":"PPLS", "x":19.25, "y":2.25, "h":2},
{"label":"LSFT", "x":0, "y":4.25, "w":2.25},
{"label":"Z", "x":2.25, "y":4.25},
{"label":"X", "x":3.25, "y":4.25},
{"label":"C", "x":4.25, "y":4.25},
{"label":"V", "x":5.25, "y":4.25},
{"label":"B", "x":6.25, "y":4.25},
{"label":"N", "x":7.25, "y":4.25},
{"label":"M", "x":8.25, "y":4.25},
{"label":"COMM", "x":9.25, "y":4.25},
{"label":"DOT", "x":10.25, "y":4.25},
{"label":"SLSH", "x":11.25, "y":4.25},
{"label":"RSFT", "x":12.25, "y":4.25, "w":1.75},
{"label":"UP", "x":14, "y":4.25},
{"label":"PGDN", "x":15, "y":4.25},
{"label":"P1", "x":16.25, "y":4.25},
{"label":"P2", "x":17.25, "y":4.25},
{"label":"P3", "x":18.25, "y":4.25},
{"label":"LCTL", "x":0, "y":5.25, "w":1.25},
{"label":"LGUI", "x":1.25, "y":5.25, "w":1.25},
{"label":"LALT", "x":2.5, "y":5.25, "w":1.25},
{"label":"SPC", "x":3.75, "y":5.25, "w":6.25},
{"label":"RALT", "x":10, "y":5.25},
{"label":"APP", "x":11, "y":5.25},
{"label":"RCTL", "x":12, "y":5.25},
{"label":"LEFT", "x":13, "y":5.25},
{"label":"DOWN", "x":14, "y":5.25},
{"label":"RGHT", "x":15, "y":5.25},
{"label":"P0", "x":16.25, "y":5.25, "w":2},
{"label":"PDOT", "x":18.25, "y":5.25},
{"label":"PENT", "x":19.25, "y":4.25, "h":2}
]
},
"LAYOUT_iso": {
"layout": [
{"label":"ESC", "x":0, "y":0},
{"label":"F1", "x":1, "y":0},
{"label":"F2", "x":2, "y":0},
{"label":"F3", "x":3, "y":0},
{"label":"F4", "x":4, "y":0},
{"label":"F5", "x":5, "y":0},
{"label":"F6", "x":6, "y":0},
{"label":"F7", "x":7, "y":0},
{"label":"F8", "x":8, "y":0},
{"label":"F9", "x":9, "y":0},
{"label":"F10", "x":10, "y":0},
{"label":"F11", "x":11, "y":0},
{"label":"F12", "x":12, "y":0},
{"label":"PSCR", "x":13, "y":0},
{"label":"HOME", "x":14, "y":0},
{"label":"END", "x":15, "y":0},
{"label":"NO", "x":16.25, "y":0},
{"label":"NO", "x":17.25, "y":0},
{"label":"NO", "x":18.25, "y":0},
{"label":"NO", "x":19.25, "y":0},
{"label":"GRV", "x":0, "y":1.25},
{"label":"1", "x":1, "y":1.25},
{"label":"2", "x":2, "y":1.25},
{"label":"3", "x":3, "y":1.25},
{"label":"4", "x":4, "y":1.25},
{"label":"5", "x":5, "y":1.25},
{"label":"6", "x":6, "y":1.25},
{"label":"7", "x":7, "y":1.25},
{"label":"8", "x":8, "y":1.25},
{"label":"9", "x":9, "y":1.25},
{"label":"0", "x":10, "y":1.25},
{"label":"MINS", "x":11, "y":1.25},
{"label":"EQL", "x":12, "y":1.25},
{"label":"BSPC", "x":13, "y":1.25, "w":2},
{"label":"DEL", "x":15, "y":1.25},
{"label":"NLCK", "x":16.25, "y":1.25},
{"label":"PSLS", "x":17.25, "y":1.25},
{"label":"PAST", "x":18.25, "y":1.25},
{"label":"PMNS", "x":19.25, "y":1.25},
{"label":"TAB", "x":0, "y":2.25, "w":1.5},
{"label":"Q", "x":1.5, "y":2.25},
{"label":"W", "x":2.5, "y":2.25},
{"label":"E", "x":3.5, "y":2.25},
{"label":"R", "x":4.5, "y":2.25},
{"label":"T", "x":5.5, "y":2.25},
{"label":"Y", "x":6.5, "y":2.25},
{"label":"U", "x":7.5, "y":2.25},
{"label":"I", "x":8.5, "y":2.25},
{"label":"O", "x":9.5, "y":2.25},
{"label":"P", "x":10.5, "y":2.25},
{"label":"LBRC", "x":11.5, "y":2.25},
{"label":"RBRC", "x":12.5, "y":2.25},
{"label":"INS", "x":15, "y":2.25},
{"label":"P7", "x":16.25, "y":2.25},
{"label":"P8", "x":17.25, "y":2.25},
{"label":"P9", "x":18.25, "y":2.25},
{"label":"CAPS", "x":0, "y":3.25, "w":1.75},
{"label":"A", "x":1.75, "y":3.25},
{"label":"S", "x":2.75, "y":3.25},
{"label":"D", "x":3.75, "y":3.25},
{"label":"F", "x":4.75, "y":3.25},
{"label":"G", "x":5.75, "y":3.25},
{"label":"H", "x":6.75, "y":3.25},
{"label":"J", "x":7.75, "y":3.25},
{"label":"K", "x":8.75, "y":3.25},
{"label":"L", "x":9.75, "y":3.25},
{"label":"SCLN", "x":10.75, "y":3.25},
{"label":"QUOT", "x":11.75, "y":3.25},
{"label":"NUHS", "x":12.75, "y":3.25},
{"label":"ENT", "x":13.75, "y":2.25, "w":1.25, "h":2},
{"label":"PGUP", "x":15, "y":3.25},
{"label":"P4", "x":16.25, "y":3.25},
{"label":"P5", "x":17.25, "y":3.25},
{"label":"P6", "x":18.25, "y":3.25},
{"label":"PPLS", "x":19.25, "y":2.25, "h":2},
{"label":"LSFT", "x":0, "y":4.25, "w":1.25},
{"label":"NUBS", "x":1.25, "y":4.25},
{"label":"Z", "x":2.25, "y":4.25},
{"label":"X", "x":3.25, "y":4.25},
{"label":"C", "x":4.25, "y":4.25},
{"label":"V", "x":5.25, "y":4.25},
{"label":"B", "x":6.25, "y":4.25},
{"label":"N", "x":7.25, "y":4.25},
{"label":"M", "x":8.25, "y":4.25},
{"label":"COMM", "x":9.25, "y":4.25},
{"label":"DOT", "x":10.25, "y":4.25},
{"label":"SLSH", "x":11.25, "y":4.25},
{"label":"RSFT", "x":12.25, "y":4.25, "w":1.75},
{"label":"UP", "x":14, "y":4.25},
{"label":"PGDN", "x":15, "y":4.25},
{"label":"P1", "x":16.25, "y":4.25},
{"label":"P2", "x":17.25, "y":4.25},
{"label":"P3", "x":18.25, "y":4.25},
{"label":"LCTL", "x":0, "y":5.25, "w":1.25},
{"label":"LGUI", "x":1.25, "y":5.25, "w":1.25},
{"label":"LALT", "x":2.5, "y":5.25, "w":1.25},
{"label":"SPC", "x":3.75, "y":5.25, "w":6.25},
{"label":"RALT", "x":10, "y":5.25},
{"label":"APP", "x":11, "y":5.25},
{"label":"RCTL", "x":12, "y":5.25},
{"label":"LEFT", "x":13, "y":5.25},
{"label":"DOWN", "x":14, "y":5.25},
{"label":"RGHT", "x":15, "y":5.25},
{"label":"P0", "x":16.25, "y":5.25, "w":2},
{"label":"PDOT", "x":18.25, "y":5.25},
{"label":"PENT", "x":19.25, "y":4.25, "h":2}
]
}
}
}

View File

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

View File

@@ -0,0 +1,17 @@
# ansi
An ANSI-layout keymap based on the default.
,-------------------------------------------------------------------------------.
|Esc|F1 |F2 |F3 |F4 |F5 |F6 |F7 |F8 |F9 |F10|F11|F12|PSc|Hm |End|NO |NO |NO |NO |
|-------------------------------------------------------------------------------|
|` |1 |2 |3 |4 |5 |6 |7 |8 |9 |0 |- |= |Bksp |Del|NLck|P/|P* |P- |
|-------------------------------------------------------------------------------|
|Tab |Q |W |E |R |T |Y |U |I |O |P |[ |] |\ |Ins|P7 |P8 |P9 | |
|---------------------------------------------------------------------------|P+ |
|CapsLk|A |S |D |F |G |H |J |K |L |; |' |Enter |PgU|P4 |P5 |P6 | |
|-------------------------------------------------------------------------------|
|Shift |Z |X |C |V |B |N |M |, |. |/ |Shift |Up |PgD|P1 |P2 |P3 | |
|---------------------------------------------------------------------------|Ent|
|Ctrl|GUI |Alt |Space |Alt|App|Ctl|Lft|Dwn|Rgt|P0 |P. | |
`-------------------------------------------------------------------------------'

View File

@@ -0,0 +1,29 @@
/*
Copyright 2017 Luiz Ribeiro <luizribeiro@gmail.com>
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include QMK_KEYBOARD_H
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = LAYOUT_iso(
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_HOME, KC_END, KC_NO, KC_NO, KC_NO, KC_NO, \
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL, KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS, \
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_INS, KC_P7, KC_P8, KC_P9, \
KC_LCAP, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, KC_PGUP, KC_P4, KC_P5, KC_P6, KC_PPLS, \
KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN, KC_P1, KC_P2, KC_P3, \
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT \
)
};

View File

@@ -0,0 +1,17 @@
# iso
An ISO-layout keymap based on the default.
,-------------------------------------------------------------------------------.
|Esc|F1 |F2 |F3 |F4 |F5 |F6 |F7 |F8 |F9 |F10|F11|F12|PSc|Hm |End|NO |NO |NO |NO |
|-------------------------------------------------------------------------------|
|` |1 |2 |3 |4 |5 |6 |7 |8 |9 |0 |- |= |Bksp |Del|NLck|P/|P* |P- |
|-------------------------------------------------------------------------------|
|Tab |Q |W |E |R |T |Y |U |I |O |P |[ |] | |Ins|P7 |P8 |P9 | |
|------------------------------------------------------.Ent |---------------|P+ |
|CapsLk|A |S |D |F |G |H |J |K |L |; |' |# | |PgU|P4 |P5 |P6 | |
|-------------------------------------------------------------------------------|
|Sft |\ |Z |X |C |V |B |N |M |, |. |/ |Shift |Up |PgD|P1 |P2 |P3 | |
|---------------------------------------------------------------------------|Ent|
|Ctrl|GUI |Alt |Space |Alt|App|Ctl|Lft|Dwn|Rgt|P0 |P. | |
`-------------------------------------------------------------------------------'

View File

@@ -1,5 +1,4 @@
#ifndef FROSTY_FLAKE_H
#define FROSTY_FLAKE_H
#pragma once
#include "quantum.h"
@@ -26,7 +25,7 @@
| A4 | P2 | C6 | K6 | C0 | M3 | D0 | A1 | | O0 | K0 | L0 | | L6 | Q6 | |
`-------------------------------------------------------------------------' `--------------' `-------------------'
*/
#define KEYMAP( \
#define LAYOUT( \
KJ6, KI4, KH4, KH2, KH6, KA7, KE6, KD2, KD4, KB4, KB7, KB6, KB0, KC7, KC5, KA5, \
KJ4, KJ7, KI7, KH7, KG7, KG4, KF4, KF7, KE7, KD7, KR7, KR4, KE4, KB2, KL4, KO4, KQ4, KK1, KL1, KQ1, KQ0, \
KJ2, KJ5, KI5, KH5, KG5, KG2, KF2, KF5, KE5, KD5, KR5, KR2, KE2, KB3, KK4, KO7, KQ7, KK5, KL5, KQ5, KO5, \
@@ -66,7 +65,7 @@
`-------------------------------------------------------------------------' `--------------'
*/
#define KEYMAP_TKL( \
#define LAYOUT_tkl( \
KJ6, KI4, KH4, KH2, KH6, KA7, KE6, KD2, KD4, KB4, KB7, KB6, KB0, KC7, KC5, KA5, \
KJ4, KJ7, KI7, KH7, KG7, KG4, KF4, KF7, KE7, KD7, KR7, KR4, KE4, KB2, KL4, KO4, KQ4, \
KJ2, KJ5, KI5, KH5, KG5, KG2, KF2, KF5, KE5, KD5, KR5, KR2, KE2, KB3, KK4, KO7, KQ7, \
@@ -94,7 +93,7 @@
KI2, KJ3, KI3, KH3, KG3, KG6, KF6, KF3, KE3, KD3, KR3, KR6, KB1, \
KN2, KJ1, KI1, KH1, KG1, KG0, KF0, KF1, KE1, KD1, KR0, KN3, KO6, \
KA4, KP2, KC6, KK6, KC0, KM3, KD0, KA1, KO0, KK0, KL0 \
) KEYMAP_TKL( \
) LAYOUT_tkl( \
KJ6, KI4, KH4, KH2, KH6, KA7, KE6, KD2, KD4, KB4, KB7, KB6, KB0, KC7, KC5, KA5, \
KJ4, KJ7, KI7, KH7, KG7, KG4, KF4, KF7, KE7, KD7, KR7, KR4, KE4, KB2, KL4, KO4, KQ4, \
KJ2, KJ5, KI5, KH5, KG5, KG2, KF2, KF5, KE5, KD5, KR5, KR2, KE2, KB3, KK4, KO7, KQ7, \
@@ -103,4 +102,3 @@
KA4, KP2, KC6, KK6, KC0, KM3, KD0, KA1, KO0, KK0, KL0 \
)
#endif

View File

@@ -0,0 +1,301 @@
{
"keyboard_name": "Frosty Flake",
"url": "",
"maintainer": "qmk",
"width": 22.5,
"height": 6.5,
"layouts": {
"LAYOUT": {
"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":"Print Screen", "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":"1", "x":1, "y":1.5},
{"label":"2", "x":2, "y":1.5},
{"label":"3", "x":3, "y":1.5},
{"label":"4", "x":4, "y":1.5},
{"label":"5", "x":5, "y":1.5},
{"label":"6", "x":6, "y":1.5},
{"label":"7", "x":7, "y":1.5},
{"label":"8", "x":8, "y":1.5},
{"label":"9", "x":9, "y":1.5},
{"label":"0", "x":10, "y":1.5},
{"label":"-", "x":11, "y":1.5},
{"label":"=", "x":12, "y":1.5},
{"label":"Backspace", "x":13, "y":1.5, "w":2},
{"label":"Insert", "x":15.25, "y":1.5},
{"label":"Home", "x":16.25, "y":1.5},
{"label":"Page Up", "x":17.25, "y":1.5},
{"label":"Num Lock", "x":18.5, "y":1.5},
{"label":"/", "x":19.5, "y":1.5},
{"label":"*", "x":20.5, "y":1.5},
{"label":"-", "x":21.5, "y":1.5},
{"label":"Tab", "x":0, "y":2.5, "w":1.5},
{"label":"Q", "x":1.5, "y":2.5},
{"label":"W", "x":2.5, "y":2.5},
{"label":"E", "x":3.5, "y":2.5},
{"label":"R", "x":4.5, "y":2.5},
{"label":"T", "x":5.5, "y":2.5},
{"label":"Y", "x":6.5, "y":2.5},
{"label":"U", "x":7.5, "y":2.5},
{"label":"I", "x":8.5, "y":2.5},
{"label":"O", "x":9.5, "y":2.5},
{"label":"P", "x":10.5, "y":2.5},
{"label":"[", "x":11.5, "y":2.5},
{"label":"]", "x":12.5, "y":2.5},
{"label":"\\", "x":13.5, "y":2.5, "w":1.5},
{"label":"Delete", "x":15.25, "y":2.5},
{"label":"End", "x":16.25, "y":2.5},
{"label":"Page Down", "x":17.25, "y":2.5},
{"label":"7", "x":18.5, "y":2.5},
{"label":"8", "x":19.5, "y":2.5},
{"label":"9", "x":20.5, "y":2.5},
{"label":"+", "x":21.5, "y":2.5, "h":2},
{"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":"Enter", "x":12.75, "y":3.5, "w":2.25},
{"label":"4", "x":18.5, "y":3.5},
{"label":"5", "x":19.5, "y":3.5},
{"label":"6", "x":20.5, "y":3.5},
{"label":"Shift", "x":0, "y":4.5, "w":1.25},
{"label":"ISO \\", "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":"Up", "x":16.25, "y":4.5},
{"label":"1", "x":18.5, "y":4.5},
{"label":"2", "x":19.5, "y":4.5},
{"label":"3", "x":20.5, "y":4.5},
{"label":"Enter", "x":21.5, "y":4.5, "h":2},
{"label":"Ctrl", "x":0, "y":5.5, "w":1.25},
{"label":"GUI", "x":1.25, "y":5.5, "w":1.25},
{"label":"Alt", "x":2.5, "y":5.5, "w":1.25},
{"label":"Space", "x":3.75, "y":5.5, "w":6.25},
{"label":"Alt", "x":10, "y":5.5, "w":1.25},
{"label":"GUI", "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":"Left", "x":15.25, "y":5.5},
{"label":"Down", "x":16.25, "y":5.5},
{"label":"Right", "x":17.25, "y":5.5},
{"label":"0", "x":18.5, "y":5.5, "w":2},
{"label":".", "x":20.5, "y":5.5}
]
},
"LAYOUT_tkl": {
"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":"Print Screen", "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":"1", "x":1, "y":1.5},
{"label":"2", "x":2, "y":1.5},
{"label":"3", "x":3, "y":1.5},
{"label":"4", "x":4, "y":1.5},
{"label":"5", "x":5, "y":1.5},
{"label":"6", "x":6, "y":1.5},
{"label":"7", "x":7, "y":1.5},
{"label":"8", "x":8, "y":1.5},
{"label":"9", "x":9, "y":1.5},
{"label":"0", "x":10, "y":1.5},
{"label":"-", "x":11, "y":1.5},
{"label":"=", "x":12, "y":1.5},
{"label":"Backspace", "x":13, "y":1.5, "w":2},
{"label":"Insert", "x":15.25, "y":1.5},
{"label":"Home", "x":16.25, "y":1.5},
{"label":"Page Up", "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":"\\", "x":13.5, "y":2.5, "w":1.5},
{"label":"Delete", "x":15.25, "y":2.5},
{"label":"End", "x":16.25, "y":2.5},
{"label":"Page Down", "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":"Enter", "x":12.75, "y":3.5, "w":2.25},
{"label":"Shift", "x":0, "y":4.5, "w":1.25},
{"label":"ISO \\", "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":"Up", "x":16.25, "y":4.5},
{"label":"Ctrl", "x":0, "y":5.5, "w":1.25},
{"label":"GUI", "x":1.25, "y":5.5, "w":1.25},
{"label":"Alt", "x":2.5, "y":5.5, "w":1.25},
{"label":"Space", "x":3.75, "y":5.5, "w":6.25},
{"label":"Alt", "x":10, "y":5.5, "w":1.25},
{"label":"GUI", "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":"Left", "x":15.25, "y":5.5},
{"label":"Down", "x":16.25, "y":5.5},
{"label":"Right", "x":17.25, "y":5.5}
]
},
"LAYOUT_tkl_ansi": {
"layout": [
{"label":"Esc", "x":0, "y":0},
{"label":"F1", "x":2, "y":0},
{"label":"F2", "x":3, "y":0},
{"label":"F3", "x":4, "y":0},
{"label":"F4", "x":5, "y":0},
{"label":"F5", "x":6.5, "y":0},
{"label":"F6", "x":7.5, "y":0},
{"label":"F7", "x":8.5, "y":0},
{"label":"F8", "x":9.5, "y":0},
{"label":"F9", "x":11, "y":0},
{"label":"F10", "x":12, "y":0},
{"label":"F11", "x":13, "y":0},
{"label":"F12", "x":14, "y":0},
{"label":"Print Screen", "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":"1", "x":1, "y":1.5},
{"label":"2", "x":2, "y":1.5},
{"label":"3", "x":3, "y":1.5},
{"label":"4", "x":4, "y":1.5},
{"label":"5", "x":5, "y":1.5},
{"label":"6", "x":6, "y":1.5},
{"label":"7", "x":7, "y":1.5},
{"label":"8", "x":8, "y":1.5},
{"label":"9", "x":9, "y":1.5},
{"label":"0", "x":10, "y":1.5},
{"label":"-", "x":11, "y":1.5},
{"label":"=", "x":12, "y":1.5},
{"label":"Backspace", "x":13, "y":1.5, "w":2},
{"label":"Insert", "x":15.25, "y":1.5},
{"label":"Home", "x":16.25, "y":1.5},
{"label":"Page Up", "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":"\\", "x":13.5, "y":2.5, "w":1.5},
{"label":"Delete", "x":15.25, "y":2.5},
{"label":"End", "x":16.25, "y":2.5},
{"label":"Page Down", "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":"Enter", "x":12.75, "y":3.5, "w":2.25},
{"label":"Shift", "x":0, "y":4.5, "w":2.25},
{"label":"Z", "x":2.25, "y":4.5},
{"label":"X", "x":3.25, "y":4.5},
{"label":"C", "x":4.25, "y":4.5},
{"label":"V", "x":5.25, "y":4.5},
{"label":"B", "x":6.25, "y":4.5},
{"label":"N", "x":7.25, "y":4.5},
{"label":"M", "x":8.25, "y":4.5},
{"label":",", "x":9.25, "y":4.5},
{"label":".", "x":10.25, "y":4.5},
{"label":"/", "x":11.25, "y":4.5},
{"label":"Shift", "x":12.25, "y":4.5, "w":2.75},
{"label":"Up", "x":16.25, "y":4.5},
{"label":"Ctrl", "x":0, "y":5.5, "w":1.25},
{"label":"GUI", "x":1.25, "y":5.5, "w":1.25},
{"label":"Alt", "x":2.5, "y":5.5, "w":1.25},
{"label":"Space", "x":3.75, "y":5.5, "w":6.25},
{"label":"Alt", "x":10, "y":5.5, "w":1.25},
{"label":"GUI", "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":"Left", "x":15.25, "y":5.5},
{"label":"Down", "x":16.25, "y":5.5},
{"label":"Right", "x":17.25, "y":5.5}
]
}
}
}

View File

@@ -1,11 +1,4 @@
#define TAPPING_TERM 150 //reduce time required to register a held key
#ifndef CONFIG_USER_H
#define CONFIG_USER_H
#include "../../config.h"
#pragma once
// place overrides here
#endif
#define TAPPING_TERM 150 //reduce time required to register a held key

View File

@@ -1,9 +1,4 @@
#include "frosty_flake.h"
#include "action_layer.h"
#ifdef AUDIO_ENABLE
#include "audio.h"
#endif
#include "eeconfig.h"
#include QMK_KEYBOARD_H
enum QFR_layers {
_COLEMAK,
@@ -27,7 +22,7 @@ enum custom_macros {
};
const uint16_t PROGMEM fn_actions[] = { //ACTION_LAYER_TAP_TOGGLE requires that number of taps be defined in *config.h* - default set to 5
[0] = ACTION_LAYER_TAP_KEY(_LOWER, KC_SPC), //Hold for momentary Lower layer, Tap for Space,
[0] = ACTION_LAYER_TAP_KEY(_LOWER, KC_SPC), //Hold for momentary Lower layer, Tap for Space,
[1] = ACTION_LAYER_MOMENTARY(_MOUSE) //Hold for momentary MOUSE
};
@@ -37,12 +32,8 @@ enum custom_macros {
#define PIPE M(R_PIPE)
#define POINT M(R_POINT)
// Fillers to make layering more clear
#define _______ KC_TRNS
#define XXXXXXX KC_NO
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_COLEMAK] = KEYMAP_TKL(\
[_COLEMAK] = LAYOUT_tkl(\
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_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_LBRC, KC_RBRC,KC_BSLS, KC_DEL, KC_END, KC_PGDN, \
@@ -51,25 +42,25 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_LCTL,KC_LGUI, KC_LALT, SPC_LW, MSE, KC_RGUI, KC_APP, KC_RCTL, KC_LEFT,KC_DOWN,KC_RGHT
),
[_QWERTY] = KEYMAP_TKL(\
[_QWERTY] = LAYOUT_tkl(\
KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS, \
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, \
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, \
KC_CAPS,KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN,KC_QUOT, KC_ENT, \
KC_LSFT,KC_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, SPC_LW, MSE, KC_RGUI , KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
KC_LCTL,KC_LGUI,KC_LALT, SPC_LW, MSE, KC_RGUI , KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
),
[_DVORAK] = KEYMAP_TKL(\
[_DVORAK] = LAYOUT_tkl(\
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_QUOT,KC_COMM,KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, \
KC_BSPC,KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_QUOT, KC_ENT, \
KC_LSFT,KC_NUBS,KC_SCLN,KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_RSFT, KC_UP, \
KC_LCTL,KC_LGUI,KC_LALT, SPC_LW, MSE, KC_RGUI, KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
KC_LCTL,KC_LGUI,KC_LALT, SPC_LW, MSE, KC_RGUI, KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
),
[_LOWER] = KEYMAP_TKL(\
[_LOWER] = LAYOUT_tkl(\
RESET, _______, _______, _______, _______, KC_MPLY, KC_MSTP, KC_MPRV, KC_MNXT, _______, KC_MUTE, KC_VOLD, KC_VOLU, QWERTY, COLEMAK,DVORAK, \
KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LBRC, KC_RBRC, KC_UNDS, KC_PLUS, KC_BSPC, _______,_______,_______, \
KC_TAB, KC_PGUP, KC_HOME, KC_UP, KC_END, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_LCBR, KC_RCBR, KC_PIPE, _______,_______,_______, \
@@ -78,7 +69,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, _______, _______, _______, KC_RALT, _______, _______, _______, _______,_______,_______ \
),
[_MOUSE] = KEYMAP_TKL(\
[_MOUSE] = LAYOUT_tkl(\
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,_______,_______, \
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_DEL, _______,_______,_______, \
KC_TAB, KC_WH_U, KC_WH_L, KC_MS_U, KC_WH_R, XXXXXXX, XXXXXXX, KC_BTN3, KC_BTN4, KC_BTN5, XXXXXXX, KC_LBRC, KC_RBRC, KC_BSLS, _______,_______,_______, \
@@ -106,7 +97,7 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) {
}
return MACRO_NONE;
}
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
switch (keycode) {
case QWERTY:
@@ -126,7 +117,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
set_single_persistent_default_layer(_DVORAK);
}
return false;
break;
break;
}
return true;
}

View File

@@ -1,8 +1,3 @@
#ifndef CONFIG_USER_H
#define CONFIG_USER_H
#include "../../config.h"
#pragma once
// place overrides here
#endif

View File

@@ -1,11 +1,12 @@
#include "frosty_flake.h"
#include QMK_KEYBOARD_H
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = KEYMAP(\
KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_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_NLCK,KC_PSLS,KC_PAST,KC_PMNS, \
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P,KC_LBRC,KC_RBRC,KC_BSLS, KC_DEL, KC_END,KC_PGDN, KC_P7, KC_P8, KC_P9,KC_PPLS, \
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L,KC_SCLN,KC_QUOT, KC_ENT, KC_P4, KC_P5, KC_P6, \
KC_LSFT,KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M,KC_COMM, KC_DOT,KC_SLSH, KC_RSFT, KC_UP, KC_P1, KC_P2, KC_P3,KC_PENT, \
KC_LCTL,KC_LGUI,KC_LALT, KC_SPC, KC_RALT,KC_RGUI, KC_APP,KC_RCTL, KC_LEFT,KC_DOWN,KC_RGHT, KC_P0,KC_PDOT)
};
[0] = LAYOUT(\
KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_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_NLCK, KC_PSLS, KC_PAST, KC_PMNS, \
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS, \
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_P4, KC_P5, KC_P6, \
KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_P1, KC_P2, KC_P3, KC_PENT, \
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT \
)
};

View File

@@ -1,5 +1,5 @@
# Build Options
# change to "no" to disable the options, or define them in the Makefile in
# change to "no" to disable the options, or define them in the Makefile in
# the appropriate keymap folder that will get included automatically
#
BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
@@ -13,9 +13,5 @@ MIDI_ENABLE = no # MIDI controls
AUDIO_ENABLE = no # Audio output on port C6
UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
ifndef QUANTUM_DIR
include ../../../../Makefile
endif

View File

@@ -1,8 +1,6 @@
#ifndef CONFIG_USER_H
#define CONFIG_USER_H
#include "../../config.h"
#pragma once
// place overrides here
#define TAPPING_TERM 200
#define LEADER_TIMEOUT 800
@@ -17,7 +15,4 @@
#define MOUSEKEY_DELAY 0
#define MOUSEKEY_TIME_TO_MAX 60
#define MOUSEKEY_MAX_SPEED 7
#define MOUSEKEY_WHEEL_DELAY 0
// place overrides here
#endif
#define MOUSEKEY_WHEEL_DELAY 0

View File

@@ -1,11 +1,5 @@
#include "frosty_flake.h"
#include "action_layer.h"
#include "eeconfig.h"
#include "process_unicode.h"
#include "process_unicodemap.h"
#include "quantum.h"
#include QMK_KEYBOARD_H
#define _______ KC_TRNS
#define MAXEMOJITAPS 80
@@ -33,16 +27,16 @@ enum taps{
ALLS
};
enum unicode_name {
enum unicode_name {
EMOTIS = 1,//80, //1F60x - 1F64x
ANIMALS, //64, //1F40x - 1F43x
SYMBOLS,// = 45, //1F300 - 1F32C
FOODS,// = 87 , //1F32D -
FOODS,// = 87 , //1F32D -
ETC,// = 192, //1F44x -1F4Fx
VEHICLES,// = 83, //1F68x - 1F6Dx
SUPPLEMENT,// = 32, //1F91x-1F92x
ALCHEMY,// = 116 //1F70x - 1F773
};
enum my_macros {
@@ -102,7 +96,7 @@ const uint32_t PROGMEM unicode_map[] = {
[EMOTIS] = 0x1F600,
[ANIMALS] = 0x1F400,
[SYMBOLS] = 0x1F300,
[FOODS] = 0x1F32D,
[FOODS] = 0x1F32D,
[ETC] = 0x1F440,
[VEHICLES] = 0x1F680,
[SUPPLEMENT] = 0x1F910,
@@ -110,27 +104,30 @@ const uint32_t PROGMEM unicode_map[] = {
};
// Layouts
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = KEYMAP(\
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_NLCK,KC_PSLS,KC_PAST,KC_PMNS, \
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P,KC_LBRC,KC_RBRC,KC_BSLS, KC_DEL, KC_END,KC_PGDN, KC_P7, KC_P8, KC_P9,KC_PPLS, \
KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L,KC_SCLN,KC_QUOT, KC_ENT, KC_P4, KC_P5, KC_P6, \
KC_LSPO,KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M,KC_COMM, KC_DOT,KC_SLSH, KC_RSPC, KC_UP, KC_P1, KC_P2, KC_P3,KC_PENT, \
TD(TD_CTCPS),KC_LGUI,KC_LALT, KC_SPC, KC_LEAD,KC_RGUI, KC_APP,MO(1) , KC_LEFT,KC_DOWN,KC_RGHT, KC_P0,KC_PDOT),
[1] = KEYMAP(\
TD(ALLS), 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, TD(EMOJIS),TD(ANIMAL),TD(ETC),TD(FOODS), KC_5, KC_6, KC_7, KC_8, KC_9, KC_0,KC_MINS, KC_EQL,KC_BSPC, KC_MPRV,KC_MPLY,KC_MNXT, KC_NLCK,KC_PSLS,KC_PAST,KC_PMNS, \
KC_TAB, KC_Q, M(0), KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_UP ,KC_RBRC,KC_BSLS, KC_MUTE,KC_VOLD,KC_VOLU, KC_P7, KC_P8, KC_P9,KC_PPLS, \
KC_LCTL, M(1), M(3), M(2), KC_F, KC_G, KC_H, KC_J, KC_K, KC_L,KC_LEFT,KC_RGHT, KC_ENT, KC_P4, KC_P5, KC_P6, \
KC_LSFT,KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M,KC_COMM, KC_DOT,KC_DOWN, KC_RSFT, KC_MS_U, KC_P1, KC_P2, KC_P3,KC_PENT, \
KC_BTN1,KC_BTN3,KC_BTN2, KC_SPC, KC_RALT,KC_RGUI, TG(2),_______ , KC_MS_L,KC_MS_D,KC_MS_R, KC_P0,KC_PDOT),
[2] = KEYMAP(\
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_MPRV,KC_MPLY,KC_MNXT, KC_NLCK,KC_PSLS,KC_PAST,KC_PMNS, \
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P,KC_LBRC,KC_RBRC,KC_BSLS, KC_MUTE,KC_VOLD,KC_VOLU, KC_P7, KC_P8, KC_P9,KC_PPLS, \
KC_LCTL, KC_D, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L,KC_SCLN,KC_QUOT, KC_ENT, KC_P4, KC_P5, KC_P6, \
KC_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_MS_U, KC_P1, KC_P2, KC_P3,KC_PENT, \
KC_BTN1,KC_BTN3,KC_BTN2, KC_SPC, KC_RALT,KC_RGUI, TG(2) , KC_NO , KC_MS_L,KC_MS_D,KC_MS_R, KC_P0,KC_PDOT),
[0] = LAYOUT(\
KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_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_NLCK, KC_PSLS, KC_PAST, KC_PMNS, \
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS, \
KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_P4, KC_P5, KC_P6, \
KC_LSPO, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSPC, KC_UP, KC_P1, KC_P2, KC_P3, KC_PENT, \
TD(TD_CTCPS), KC_LGUI, KC_LALT, KC_SPC, KC_LEAD, KC_RGUI, KC_APP, MO(1), KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT \
),
[1] = LAYOUT(\
TD(ALLS), 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, TD(EMOJIS), TD(ANIMAL), TD(ETC), TD(FOODS), KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_MPRV, KC_MPLY, KC_MNXT, KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS, \
KC_TAB, KC_Q, M(0), KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_UP, KC_RBRC, KC_BSLS, KC_MUTE, KC_VOLD, KC_VOLU, KC_P7, KC_P8, KC_P9, KC_PPLS, \
KC_LCTL, M(1), M(3), M(2), KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_LEFT, KC_RGHT, KC_ENT, KC_P4, KC_P5, KC_P6, \
KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_DOWN, KC_RSFT, KC_MS_U, KC_P1, KC_P2, KC_P3, KC_PENT, \
KC_BTN1, KC_BTN3, KC_BTN2, KC_SPC, KC_RALT, KC_RGUI, TG(2), _______, KC_MS_L, KC_MS_D, KC_MS_R, KC_P0, KC_PDOT \
),
[2] = LAYOUT(\
KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_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_MPRV, KC_MPLY, KC_MNXT, KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS, \
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_MUTE, KC_VOLD, KC_VOLU, KC_P7, KC_P8, KC_P9, KC_PPLS, \
KC_LCTL, KC_D, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_P4, KC_P5, KC_P6, \
KC_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_MS_U, KC_P1, KC_P2, KC_P3, KC_PENT, \
KC_BTN1, KC_BTN3, KC_BTN2, KC_SPC, KC_RALT, KC_RGUI, TG(2), KC_NO, KC_MS_L, KC_MS_D, KC_MS_R, KC_P0, KC_PDOT \
),
};
LEADER_EXTERNS();
@@ -183,7 +180,7 @@ void cycleEmojis(qk_tap_dance_state_t *state, void *user_data) {
}
};
void cycleAnimals(qk_tap_dance_state_t *state, void *user_data) {
void cycleAnimals(qk_tap_dance_state_t *state, void *user_data) {
if(state->count == 1) {
unicode_input_start();
register_hex32(pgm_read_dword(&unicode_map[ANIMALS]));

View File

@@ -12,13 +12,9 @@ BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
MIDI_ENABLE = no # MIDI controls
AUDIO_ENABLE = no # Audio output on port C6
UNICODE_ENABLE = no # Unicode
UNICODEMAP_ENABLE = yes # unicodemap
UNICODEMAP_ENABLE = yes # unicodemap
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
TAP_DANCE_ENABLE = yes
LEADER_ENABLE = yes
ifndef QUANTUM_DIR
include ../../../../Makefile
endif

View File

@@ -1,8 +1,3 @@
#ifndef CONFIG_USER_H
#define CONFIG_USER_H
#include "../../config.h"
#pragma once
// place overrides here
#endif

View File

@@ -1,7 +1,7 @@
#include "frosty_flake.h"
#include QMK_KEYBOARD_H
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = KEYMAP_TKL(\
[0] = LAYOUT_tkl(\
KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS, \
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, \
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, \

View File

@@ -18,7 +18,7 @@ keymaps `default` (104) and `tkl` (87) for example layouts.
Keyboard Maintainer: QMK Community
Hardware Supported: Frosty Flake
Hardware Availability: https://1upkeyboards.com/qfr-frosty-flake-controller.html
Hardware Availability: [1upkeyboards](https://www.1upkeyboards.com/shop/controllers/qfr-frosty-flake-controller/)
Make example for this keyboard (after setting up your build environment):
@@ -28,7 +28,7 @@ Make example for this keyboard (after setting up your build environment):
make bpiphany/frosty_flake:default
```
To directly flash the frosty_flake after compiling use
To directly flash the frosty_flake after compiling use:
```
make bpiphany/frosty_flake:default:dfu

View File

@@ -0,0 +1,192 @@
{
"keyboard_name": "Pegasus Hoof",
"url": "",
"maintainer": "qmk",
"width": 18.25,
"height": 6.5,
"layouts": {
"LAYOUT": {
"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":"Print Screen", "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":"1", "x":1, "y":1.5},
{"label":"2", "x":2, "y":1.5},
{"label":"3", "x":3, "y":1.5},
{"label":"4", "x":4, "y":1.5},
{"label":"5", "x":5, "y":1.5},
{"label":"6", "x":6, "y":1.5},
{"label":"7", "x":7, "y":1.5},
{"label":"8", "x":8, "y":1.5},
{"label":"9", "x":9, "y":1.5},
{"label":"0", "x":10, "y":1.5},
{"label":"-", "x":11, "y":1.5},
{"label":"=", "x":12, "y":1.5},
{"label":"Backspace", "x":13, "y":1.5, "w":2},
{"label":"Insert", "x":15.25, "y":1.5},
{"label":"Home", "x":16.25, "y":1.5},
{"label":"Page Up", "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":"\\", "x":13.5, "y":2.5, "w":1.5},
{"label":"Delete", "x":15.25, "y":2.5},
{"label":"End", "x":16.25, "y":2.5},
{"label":"Page Down", "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":"Enter", "x":12.75, "y":3.5, "w":2.25},
{"label":"Shift", "x":0, "y":4.5, "w":1.25},
{"label":"ISO \\", "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":"Up", "x":16.25, "y":4.5},
{"label":"Ctrl", "x":0, "y":5.5, "w":1.25},
{"label":"GUI", "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":"AltGr", "x":10, "y":5.5, "w":1.25},
{"label":"GUI", "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":"Left", "x":15.25, "y":5.5},
{"label":"Down", "x":16.25, "y":5.5},
{"label":"Right", "x":17.25, "y":5.5}
]
},
"LAYOUT_tkl_ansi": {
"layout": [
{"label":"Esc", "x":0, "y":0},
{"label":"F1", "x":2, "y":0},
{"label":"F2", "x":3, "y":0},
{"label":"F3", "x":4, "y":0},
{"label":"F4", "x":5, "y":0},
{"label":"F5", "x":6.5, "y":0},
{"label":"F6", "x":7.5, "y":0},
{"label":"F7", "x":8.5, "y":0},
{"label":"F8", "x":9.5, "y":0},
{"label":"F9", "x":11, "y":0},
{"label":"F10", "x":12, "y":0},
{"label":"F11", "x":13, "y":0},
{"label":"F12", "x":14, "y":0},
{"label":"Print Screen", "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":"1", "x":1, "y":1.5},
{"label":"2", "x":2, "y":1.5},
{"label":"3", "x":3, "y":1.5},
{"label":"4", "x":4, "y":1.5},
{"label":"5", "x":5, "y":1.5},
{"label":"6", "x":6, "y":1.5},
{"label":"7", "x":7, "y":1.5},
{"label":"8", "x":8, "y":1.5},
{"label":"9", "x":9, "y":1.5},
{"label":"0", "x":10, "y":1.5},
{"label":"-", "x":11, "y":1.5},
{"label":"=", "x":12, "y":1.5},
{"label":"Backspace", "x":13, "y":1.5, "w":2},
{"label":"Insert", "x":15.25, "y":1.5},
{"label":"Home", "x":16.25, "y":1.5},
{"label":"Page Up", "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":"\\", "x":13.5, "y":2.5, "w":1.5},
{"label":"Delete", "x":15.25, "y":2.5},
{"label":"End", "x":16.25, "y":2.5},
{"label":"Page Down", "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":"Enter", "x":12.75, "y":3.5, "w":2.25},
{"label":"Shift", "x":0, "y":4.5, "w":2.25},
{"label":"Z", "x":2.25, "y":4.5},
{"label":"X", "x":3.25, "y":4.5},
{"label":"C", "x":4.25, "y":4.5},
{"label":"V", "x":5.25, "y":4.5},
{"label":"B", "x":6.25, "y":4.5},
{"label":"N", "x":7.25, "y":4.5},
{"label":"M", "x":8.25, "y":4.5},
{"label":",", "x":9.25, "y":4.5},
{"label":".", "x":10.25, "y":4.5},
{"label":"/", "x":11.25, "y":4.5},
{"label":"Shift", "x":12.25, "y":4.5, "w":2.75},
{"label":"Up", "x":16.25, "y":4.5},
{"label":"Ctrl", "x":0, "y":5.5, "w":1.25},
{"label":"GUI", "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":"AltGr", "x":10, "y":5.5, "w":1.25},
{"label":"GUI", "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":"Left", "x":15.25, "y":5.5},
{"label":"Down", "x":16.25, "y":5.5},
{"label":"Right", "x":17.25, "y":5.5}
]
}
}
}

View File

@@ -15,9 +15,7 @@ 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 "pegasushoof.h"
#define _______ KC_TRNS
#include QMK_KEYBOARD_H
/* Swedish keys */
#define SE_HALF KC_GRV
@@ -44,7 +42,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* Layer 0: Blowrak ISO layer, a Swedish take on Dvorak */
[KM_BLOWRAK] = KEYMAP( \
[KM_BLOWRAK] = LAYOUT( \
KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR,KC_SLCK,KC_PAUS, \
SE_HALF, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, SE_PLUS,SE_ACUT,KC_BSPC, KC_INS, KC_HOME,KC_PGUP, \
KC_TAB, SE_AO, SE_AE, SE_OE, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_COMM,SE_CIRC,SE_QUOT, KC_DEL, KC_END, KC_PGDN, \
@@ -52,7 +50,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_LSFT, SE_LTGT,KC_DOT, KC_Q, KC_J, KC_K, KC_B, KC_X, KC_M, KC_W, KC_V, KC_Z, KC_RSFT, KC_UP, \
KC_FN0, KC_LGUI,KC_LALT, KC_SPC, KC_RALT,KC_RGUI,KC_MENU,KC_FN1, KC_LEFT,KC_DOWN,KC_RGHT),
/* Layer 1: Standard ISO layer */
[KM_QWERTY] = KEYMAP( \
[KM_QWERTY] = LAYOUT( \
KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR,KC_SLCK,KC_PAUS, \
SE_HALF, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, SE_PLUS,SE_ACUT,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, SE_AO, SE_CIRC,SE_QUOT, KC_DEL, KC_END, KC_PGDN, \
@@ -60,7 +58,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_LSFT, SE_LTGT,KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM,KC_DOT, SE_MINS, KC_RSFT, KC_UP, \
KC_FN0, KC_LGUI,KC_LALT, KC_SPC, KC_RALT,KC_RGUI,KC_MENU,KC_FN1, KC_LEFT,KC_DOWN,KC_RGHT),
/* Layer 2: Media layer */
[KM_MEDIA] = KEYMAP( \
[KM_MEDIA] = LAYOUT( \
_______, _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, KC_WAKE,KC_PWR, KC_SLEP, \
_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, _______,_______,KC_VOLU, \
_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, KC_MUTE,_______,KC_VOLD, \
@@ -68,7 +66,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, _______, KC_MPLY, \
_______,_______,_______, _______, _______,_______,RESET ,_______, KC_MPRV,KC_MSTP,KC_MNXT),
/* Layer 3: Programming layer */
[KM_HAXHAX] = KEYMAP( \
[KM_HAXHAX] = LAYOUT( \
_______, _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, _______,_______,_______, \
_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, _______,_______,_______, \
_______,SE_LCBR,SE_PIPE,SE_RCBR,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, _______,_______,_______, \

View File

@@ -1,5 +1,5 @@
# Build Options
# change to "no" to disable the options, or define them in the Makefile in
# change to "no" to disable the options, or define them in the Makefile in
# the appropriate keymap folder that will get included automatically
#
BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000)
@@ -14,9 +14,4 @@ MIDI_ENABLE = no # MIDI controls
AUDIO_ENABLE = no # Audio output on port C6
UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
ifndef QUANTUM_DIR
include ../../../../Makefile
endif
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.

View File

@@ -1,11 +1,6 @@
#ifndef CONFIG_USER_H
#define CONFIG_USER_H
#include "../../config.h"
#pragma once
/* overridden settings: */
#undef PRODUCT
#define PRODUCT Pegasus Hoof Citadel
#endif

View File

@@ -14,7 +14,7 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include "pegasushoof.h"
#include QMK_KEYBOARD_H
/* Allow shortcuts for combos like RALT(KC_RBRC) that don't take up more than 7 characters: */
#define G(kc) RALT(KC_##kc)
@@ -58,7 +58,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* '------------------------------------------------------------------------' '--------------'
* NUHS = true position of KC_NUHS
*/
[DEF] = KEYMAP( \
[DEF] = LAYOUT( \
KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR,KC_SLCK,TD(AF4), \
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_NUHS, KC_DEL, KC_END, KC_PGDN, \
@@ -89,7 +89,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* '------------------------------------------------------------------------' '--------------'
*
*/
[FUN] = KEYMAP( \
[FUN] = LAYOUT( \
CTALDEL, KC_MYCM,KC_WHOM,KC_CALC,KC_MSEL,KC_MPRV,KC_MNXT,KC_MPLY,KC_MSTP,KC_MUTE,KC_VOLD,KC_VOLU,MO(RES), _______,KC_SLCK,KC_PAUS, \
_______,_______,_______,_______,_______,_______,_______,G(7), G(8), G(9), G(0), G(MINS),_______,_______, _______,_______,KC_WH_U, \
_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,G(RBRC),_______, _______,_______,KC_WH_D, \
@@ -99,7 +99,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* Layer 3: Reset layer (prevents accidental resets) */
[RES] = KEYMAP( \
[RES] = LAYOUT( \
_______, _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, _______,_______,_______, \
_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, _______,_______,_______, \
_______,_______,_______,_______,RESET, _______,_______,_______,_______,_______,_______,_______,_______,_______, _______,_______,_______, \

View File

@@ -13,10 +13,5 @@ MIDI_ENABLE = no # MIDI controls
AUDIO_ENABLE = no # Audio output on port C6
UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
TAP_DANCE_ENABLE = yes # see https://docs.qmk.fm/#/feature_tap_dance (+1000)
ifndef QUANTUM_DIR
include ../../../../Makefile
endif

View File

@@ -15,46 +15,42 @@ 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 "pegasushoof.h"
#define _______ KC_TRNS
#include QMK_KEYBOARD_H
#define KM_QWERTY 0
#define KM_MEDIA 1
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* Layer 0: Standard ISO layer */
[KM_QWERTY] = KEYMAP( \
KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR,KC_SLCK,KC_PAUS, \
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS,KC_EQL, KC_BSPC, KC_INS, KC_HOME,KC_PGUP, \
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC,KC_RBRC,KC_BSLS, KC_DEL, KC_END, KC_PGDN, \
KC_CLCK, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN,KC_QUOT, KC_ENT, \
KC_LSFT, KC_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,KC_RGUI,KC_MENU,KC_FN0, KC_LEFT,KC_DOWN,KC_RGHT),
/* Layer 1: Function layer */
[KM_MEDIA] = KEYMAP( \
_______, _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, KC_WAKE,KC_PWR, KC_SLEP, \
_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, _______,_______,KC_VOLU, \
_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, _______,_______,KC_VOLD, \
_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, _______, \
_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, _______, KC_MPLY, \
_______,_______,_______, _______, _______,_______,RESET ,_______, KC_MPRV,KC_MSTP,KC_MNXT)
};
const uint16_t PROGMEM fn_actions[] = {
[0] = ACTION_LAYER_MOMENTARY(KM_MEDIA)
/* Layer 0: Standard ISO layer */
[KM_QWERTY] = LAYOUT( \
KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS, \
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, \
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, \
KC_CLCK, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, \
KC_LSFT, KC_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, KC_RGUI, KC_MENU, MO(1), KC_LEFT, KC_DOWN, KC_RGHT \
),
/* Layer 1: Function layer */
[KM_MEDIA] = LAYOUT( \
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_WAKE, KC_PWR, KC_SLEP, \
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_VOLU, \
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_VOLD, \
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MPLY, \
_______, _______, _______, _______, _______, _______, RESET, _______, KC_MPRV, KC_MSTP, KC_MNXT \
)
};
void led_set_user(uint8_t usb_led) {
if (usb_led & (1 << USB_LED_CAPS_LOCK)) {
ph_caps_led_on();
} else {
ph_caps_led_off();
}
if (usb_led & (1 << USB_LED_CAPS_LOCK)) {
ph_caps_led_on();
} else {
ph_caps_led_off();
}
if (usb_led & (1 << USB_LED_SCROLL_LOCK)) {
ph_sclk_led_on();
} else {
ph_sclk_led_off();
}
if (usb_led & (1 << USB_LED_SCROLL_LOCK)) {
ph_sclk_led_on();
} else {
ph_sclk_led_off();
}
}

View File

@@ -1,5 +1,5 @@
# Build Options
# change to "no" to disable the options, or define them in the Makefile in
# change to "no" to disable the options, or define them in the Makefile in
# the appropriate keymap folder that will get included automatically
#
BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000)
@@ -14,9 +14,4 @@ MIDI_ENABLE = no # MIDI controls
AUDIO_ENABLE = no # Audio output on port C6
UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
ifndef QUANTUM_DIR
include ../../../../Makefile
endif
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.

View File

@@ -21,25 +21,39 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "matrix.h"
#include "quantum.h"
#define ___ KC_NO
#define LAYOUT( \
KG6, KH4, KI4, KI2, KI6, KP5, KL6, KM2, KM4, KO4, KO5, KO6, KO0, KN5, KN7, KP7, \
KG4, KG5, KH5, KI5, KJ5, KJ4, KK4, KK5, KL5, KM5, KF5, KF4, KL4, KO2, KR4, KC4, KE4, \
KG2, KG7, KH7, KI7, KJ7, KJ2, KK2, KK7, KL7, KM7, KF7, KF2, KL2, KO3, KQ4, KC5, KE5, \
KH2, KG3, KH3, KI3, KJ3, KJ6, KK6, KK3, KL3, KM3, KF3, KF6, KO1, \
KB2, KH6, KG1, KH1, KI1, KJ1, KJ0, KK0, KK1, KL1, KM1, KF0, KB3, KC6, \
KP4, KD2, KN6, KQ6, KN0, KA3, KM0, KP1, KC0, KQ0, KR0 \
) { /* 00-A 01-B 02-C 03-D 04-E 05-F 06-G 07-H 08-I 09-J 10-K 11-L 12-M 13-N 14-O 15-P 16-Q 17-R */ \
/* 0 */ { KC_NO , KC_NO , KC0 , KC_NO , KC_NO , KF0 , KC_NO , KC_NO , KC_NO , KJ0 , KK0 , KC_NO , KM0 , KN0 , KO0 , KC_NO , KQ0 , KR0 }, \
/* 1 */ { KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KG1 , KH1 , KI1 , KJ1 , KK1 , KL1 , KM1 , KC_NO , KO1 , KP1 , KC_NO , KC_NO }, \
/* 2 */ { KC_NO , KB2 , KC_NO , KD2 , KC_NO , KF2 , KG2 , KH2 , KI2 , KJ2 , KK2 , KL2 , KM2 , KC_NO , KO2 , KC_NO , KC_NO , KC_NO }, \
/* 3 */ { KA3 , KB3 , KC_NO , KC_NO , KC_NO , KF3 , KG3 , KH3 , KI3 , KJ3 , KK3 , KL3 , KM3 , KC_NO , KO3 , KC_NO , KC_NO , KC_NO }, \
/* 4 */ { KC_NO , KC_NO , KC4 , KC_NO , KE4 , KF4 , KG4 , KH4 , KI4 , KJ4 , KK4 , KL4 , KM4 , KC_NO , KO4 , KP4 , KQ4 , KR4 }, \
/* 5 */ { KC_NO , KC_NO , KC5 , KC_NO , KE5 , KF5 , KG5 , KH5 , KI5 , KJ5 , KK5 , KL5 , KM5 , KN5 , KO5 , KP5 , KC_NO , KC_NO }, \
/* 6 */ { KC_NO , KC_NO , KC6 , KC_NO , KC_NO , KF6 , KG6 , KH6 , KI6 , KJ6 , KK6 , KL6 , KC_NO , KN6 , KO6 , KC_NO , KQ6 , KC_NO }, \
/* 7 */ { KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KF7 , KG7 , KH7 , KI7 , KJ7 , KK7 , KL7 , KM7 , KN7 , KC_NO , KP7 , KC_NO , KC_NO } \
}
#define KEYMAP( \
KG6, KH4, KI4, KI2, KI6, KP5, KL6, KM2, KM4, KO4, KO5, KO6, KO0, KN5, KN7, KP7, \
KG4, KG5, KH5, KI5, KJ5, KJ4, KK4, KK5, KL5, KM5, KF5, KF4, KL4, KO2, KR4, KC4, KE4, \
KG2, KG7, KH7, KI7, KJ7, KJ2, KK2, KK7, KL7, KM7, KF7, KF2, KL2, KO3, KQ4, KC5, KE5, \
KH2, KG3, KH3, KI3, KJ3, KJ6, KK6, KK3, KL3, KM3, KF3, KF6, KO1, \
KB2, KH6, KG1, KH1, KI1, KJ1, KJ0, KK0, KK1, KL1, KM1, KF0, KB3, KC6, \
KP4, KD2, KN6, KQ6, KN0, KA3, KM0, KP1, KC0, KQ0, KR0 \
) { /* 00-A 01-B 02-C 03-D 04-E 05-F 06-G 07-H 08-I 09-J 10-K 11-L 12-M 13-N 14-O 15-P 16-Q 17-R */ \
/* 0 */ { ___ , ___ , KC0 , ___ , ___ , KF0 , ___ , ___ , ___ , KJ0 , KK0 , ___ , KM0 , KN0 , KO0 , ___ , KQ0 , KR0 }, \
/* 1 */ { ___ , ___ , ___ , ___ , ___ , ___ , KG1 , KH1 , KI1 , KJ1 , KK1 , KL1 , KM1 , ___ , KO1 , KP1 , ___ , ___ }, \
/* 2 */ { ___ , KB2 , ___ , KD2 , ___ , KF2 , KG2 , KH2 , KI2 , KJ2 , KK2 , KL2 , KM2 , ___ , KO2 , ___ , ___ , ___ }, \
/* 3 */ { KA3 , KB3 , ___ , ___ , ___ , KF3 , KG3 , KH3 , KI3 , KJ3 , KK3 , KL3 , KM3 , ___ , KO3 , ___ , ___ , ___ }, \
/* 4 */ { ___ , ___ , KC4 , ___ , KE4 , KF4 , KG4 , KH4 , KI4 , KJ4 , KK4 , KL4 , KM4 , ___ , KO4 , KP4 , KQ4 , KR4 }, \
/* 5 */ { ___ , ___ , KC5 , ___ , KE5 , KF5 , KG5 , KH5 , KI5 , KJ5 , KK5 , KL5 , KM5 , KN5 , KO5 , KP5 , ___ , ___ }, \
/* 6 */ { ___ , ___ , KC6 , ___ , ___ , KF6 , KG6 , KH6 , KI6 , KJ6 , KK6 , KL6 , ___ , KN6 , KO6 , ___ , KQ6 , ___ }, \
/* 7 */ { ___ , ___ , ___ , ___ , ___ , KF7 , KG7 , KH7 , KI7 , KJ7 , KK7 , KL7 , KM7 , KN7 , ___ , KP7 , ___ , ___ }, \
}
#define LAYOUT_tkl_ansi( \
KG6, KH4, KI4, KI2, KI6, KP5, KL6, KM2, KM4, KO4, KO5, KO6, KO0, KN5, KN7, KP7, \
KG4, KG5, KH5, KI5, KJ5, KJ4, KK4, KK5, KL5, KM5, KF5, KF4, KL4, KO2, KR4, KC4, KE4, \
KG2, KG7, KH7, KI7, KJ7, KJ2, KK2, KK7, KL7, KM7, KF7, KF2, KL2, KO3, KQ4, KC5, KE5, \
KH2, KG3, KH3, KI3, KJ3, KJ6, KK6, KK3, KL3, KM3, KF3, KF6, KO1, \
KB2, KG1, KH1, KI1, KJ1, KJ0, KK0, KK1, KL1, KM1, KF0, KB3, KC6, \
KP4, KD2, KN6, KQ6, KN0, KA3, KM0, KP1, KC0, KQ0, KR0 \
) LAYOUT( \
KG6, KH4, KI4, KI2, KI6, KP5, KL6, KM2, KM4, KO4, KO5, KO6, KO0, KN5, KN7, KP7, \
KG4, KG5, KH5, KI5, KJ5, KJ4, KK4, KK5, KL5, KM5, KF5, KF4, KL4, KO2, KR4, KC4, KE4, \
KG2, KG7, KH7, KI7, KJ7, KJ2, KK2, KK7, KL7, KM7, KF7, KF2, KL2, KO3, KQ4, KC5, KE5, \
KH2, KG3, KH3, KI3, KJ3, KJ6, KK6, KK3, KL3, KM3, KF3, KF6, KO1, \
KB2,KC_NO,KG1, KH1, KI1, KJ1, KJ0, KK0, KK1, KL1, KM1, KF0, KB3, KC6, \
KP4, KD2, KN6, KQ6, KN0, KA3, KM0, KP1, KC0, KQ0, KR0 \
)
#define LAYOUT_tkl_jis( \
KG6, KH4, KI4, KI2, KI6, KP5, KL6, KM2, KM4, KO4, KO5, KO6, KO0, KN5, KN7, KP7, \
@@ -49,14 +63,14 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
KB2, KG1, KH1, KI1, KJ1, KJ0, KK0, KK1, KL1, KM1, KF0, KL0, KB3, KC6, \
KP4, KD2, KN6, KG0, KQ6, KH0, KI0, KN0, KM0, KP1, KC0, KQ0, KR0 \
) { /* 00-A 01-B 02-C 03-D 04-E 05-F 06-G 07-H 08-I 09-J 10-K 11-L 12-M 13-N 14-O 15-P 16-Q 17-R */ \
/* 0 */ { ___ , ___ , KC0 , ___ , ___ , KF0 , KG0 , KH0 , KI0 , KJ0 , KK0 , KL0 , KM0 , KN0 , KO0 , ___ , KQ0 , KR0 }, \
/* 1 */ { ___ , ___ , ___ , ___ , ___ , ___ , KG1 , KH1 , KI1 , KJ1 , KK1 , KL1 , KM1 , ___ , KO1 , KP1 , ___ , ___ }, \
/* 2 */ { ___ , KB2 , ___ , KD2 , ___ , KF2 , KG2 , KH2 , KI2 , KJ2 , KK2 , KL2 , KM2 , ___ , KO2 , ___ , ___ , ___ }, \
/* 3 */ { ___ , KB3 , ___ , ___ , ___ , KF3 , KG3 , KH3 , KI3 , KJ3 , KK3 , KL3 , KM3 , ___ , KO3 , ___ , ___ , ___ }, \
/* 4 */ { ___ , ___ , KC4 , ___ , KE4 , KF4 , KG4 , KH4 , KI4 , KJ4 , KK4 , KL4 , KM4 , ___ , KO4 , KP4 , KQ4 , KR4 }, \
/* 5 */ { ___ , ___ , KC5 , ___ , KE5 , KF5 , KG5 , KH5 , KI5 , KJ5 , KK5 , KL5 , KM5 , KN5 , KO5 , KP5 , ___ , ___ }, \
/* 6 */ { ___ , ___ , KC6 , ___ , ___ , KF6 , KG6 , ___ , KI6 , KJ6 , KK6 , KL6 , ___ , KN6 , KO6 , ___ , KQ6 , ___ }, \
/* 7 */ { ___ , ___ , ___ , ___ , ___ , KF7 , KG7 , KH7 , KI7 , KJ7 , KK7 , KL7 , KM7 , KN7 , KO7 , KP7 , ___ , ___ }, \
/* 0 */ { KC_NO, KC_NO, KC0, KC_NO, KC_NO, KF0, KG0, KH0, KI0, KJ0, KK0, KL0, KM0, KN0, KO0, KC_NO, KQ0, KR0 }, \
/* 1 */ { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KG1, KH1, KI1, KJ1, KK1, KL1, KM1, KC_NO, KO1, KP1, KC_NO, KC_NO }, \
/* 2 */ { KC_NO, KB2, KC_NO, KD2, KC_NO, KF2, KG2, KH2, KI2, KJ2, KK2, KL2, KM2, KC_NO, KO2, KC_NO, KC_NO, KC_NO }, \
/* 3 */ { KC_NO, KB3, KC_NO, KC_NO, KC_NO, KF3, KG3, KH3, KI3, KJ3, KK3, KL3, KM3, KC_NO, KO3, KC_NO, KC_NO, KC_NO }, \
/* 4 */ { KC_NO, KC_NO, KC4, KC_NO, KE4, KF4, KG4, KH4, KI4, KJ4, KK4, KL4, KM4, KC_NO, KO4, KP4, KQ4, KR4 }, \
/* 5 */ { KC_NO, KC_NO, KC5, KC_NO, KE5, KF5, KG5, KH5, KI5, KJ5, KK5, KL5, KM5, KN5, KO5, KP5, KC_NO, KC_NO }, \
/* 6 */ { KC_NO, KC_NO, KC6, KC_NO, KC_NO, KF6, KG6, KC_NO, KI6, KJ6, KK6, KL6, KC_NO, KN6, KO6, KC_NO, KQ6, KC_NO }, \
/* 7 */ { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KF7, KG7, KH7, KI7, KJ7, KK7, KL7, KK7, KL7, KO7, KP7, KC_NO, KC_NO } \
}
inline void ph_caps_led_on(void) { DDRC |= (1<<6); PORTC &= ~(1<<6); }

View File

@@ -1,9 +1,10 @@
Pegasus Hoof Controller
===
# Pegasus Hoof Controller
A replacement controller that turns your Filco Majestouch 87/88 mechanical keyboard into a fully programmable keyboard.
Keyboard Maintainer: QMK Community
Hardware Supported: Pegasus Hoof
Hardware Availability: https://1upkeyboards.com/filco-pegasus-hoof-controller.html
Hardware Availability: [1upkeyboards](https://www.1upkeyboards.com/shop/controllers/filco-pegasus-hoof-controller/)
Make example for this keyboard (after setting up your build environment):

View File

@@ -60,8 +60,9 @@ MIDI_ENABLE = no # MIDI controls
AUDIO_ENABLE = no # Audio output on port C6
UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
LAYOUTS = tkl_ansi
CUSTOM_MATRIX = yes
SRC = matrix.c

View File

@@ -49,31 +49,32 @@
// This a shortcut to help you visually see your layout.
// The first section contains all of the arguements
// The second converts the arguments into a two-dimensional array
#define KC_KEYMAP( \
#define LAYOUT( \
k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k10, k11, k12, k13, \
k14, k15, k16, k17, k18, k19, k20, k21, k22, k23, k24, k25, k26, k27, \
k28, k29, k31, k32, k33, k34, k35, k36, k37, k38, k41, k42, k43, k44,\
k45, k46, k47, k48 \
k28, k29, k31, k32, k33, k34, k35, k36, k37, k38, k41, k42, k43, k44, \
k45, k46, k47, k48 \
) \
{ \
{ KC_##k01, KC_##k02, KC_##k03, KC_##k04, KC_##k05, KC_##k08, KC_##k09, KC_##k10, KC_##k11, KC_##k12 }, \
{ KC_##k15, KC_##k16, KC_##k17, KC_##k18, KC_##k19, KC_##k22, KC_##k23, KC_##k24, KC_##k25, KC_##k26 }, \
{ KC_##k29, KC_##k31, KC_##k32, KC_##k33, KC_##k34, KC_##k37, KC_##k38, KC_##k41, KC_##k42, KC_##k43 }, \
{ KC_NO, KC_##k06, KC_##k20, KC_##k35, KC_##k46, KC_##k47, KC_##k36, KC_##k21, KC_##k07, KC_NO }, \
{ KC_NO, KC_##k28, KC_##k14, KC_##k00, KC_##k45, KC_##k48, KC_##k13, KC_##k27, KC_##k44, KC_NO }, \
{ k01, k02, k03, k04, k05, k08, k09, k10, k11, k12 }, \
{ k15, k16, k17, k18, k19, k22, k23, k24, k25, k26 }, \
{ k29, k31, k32, k33, k34, k37, k38, k41, k42, k43 }, \
{ KC_NO, k06, k20, k35, k46, k47, k36, k21, k07, KC_NO }, \
{ KC_NO, k28, k14, k00, k45, k48, k13, k27, k44, KC_NO } \
}
#define KEYMAP( \
#define LAYOUT_kc( \
k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k10, k11, k12, k13, \
k14, k15, k16, k17, k18, k19, k20, k21, k22, k23, k24, k25, k26, k27, \
k28, k29, k31, k32, k33, k34, k35, k36, k37, k38, k41, k42, k43, k44,\
k45, k46, k47, k48 \
k28, k29, k31, k32, k33, k34, k35, k36, k37, k38, k41, k42, k43, k44, \
k45, k46, k47, k48 \
) \
{ \
{ k01, k02, k03, k04, k05, k08, k09, k10, k11, k12 }, \
{ k15, k16, k17, k18, k19, k22, k23, k24, k25, k26 }, \
{ k29, k31, k32, k33, k34, k37, k38, k41, k42, k43 }, \
{ KC_NO, k06, k20, k35, k46, k47, k36, k21, k07, KC_NO }, \
{ KC_NO, k28, k14, k00, k45, k48, k13, k27, k44, KC_NO }, \
{ KC_##k01, KC_##k02, KC_##k03, KC_##k04, KC_##k05, KC_##k08, KC_##k09, KC_##k10, KC_##k11, KC_##k12 }, \
{ KC_##k15, KC_##k16, KC_##k17, KC_##k18, KC_##k19, KC_##k22, KC_##k23, KC_##k24, KC_##k25, KC_##k26 }, \
{ KC_##k29, KC_##k31, KC_##k32, KC_##k33, KC_##k34, KC_##k37, KC_##k38, KC_##k41, KC_##k42, KC_##k43 }, \
{ KC_NO, KC_##k06, KC_##k20, KC_##k35, KC_##k46, KC_##k47, KC_##k36, KC_##k21, KC_##k07, KC_NO }, \
{ KC_NO, KC_##k28, KC_##k14, KC_##k00, KC_##k45, KC_##k48, KC_##k13, KC_##k27, KC_##k44, KC_NO } \
}
#endif

View File

@@ -1,240 +1,58 @@
{
"keyboard_name": "Chimera Ortho",
"keyboard_folder": "chimera_ortho",
"maintainer": "qmk",
"width": 15.5,
"height": 4.25,
"layouts": {
"KEYMAP": {
"LAYOUT": {
"layout": [
{
"label": "Esc",
"x": 0,
"y": 0
},
{
"label": "Q",
"x": 1,
"y": 0
},
{
"label": "W",
"x": 2,
"y": 0
},
{
"label": "E",
"x": 3,
"y": 0
},
{
"label": "R",
"x": 4,
"y": 0
},
{
"label": "T",
"x": 5,
"y": 0
},
{
"label": "{",
"x": 6,
"y": 0
},
{
"label": "}",
"x": 8.5,
"y": 0
},
{
"label": "Y",
"x": 9.5,
"y": 0
},
{
"label": "U",
"x": 10.5,
"y": 0
},
{
"label": "I",
"x": 11.5,
"y": 0
},
{
"label": "O",
"x": 12.5,
"y": 0
},
{
"label": "P",
"x": 13.5,
"y": 0
},
{
"label": "\"",
"x": 14.5,
"y": 0
},
{
"label": "Tab",
"x": 0,
"y": 1
},
{
"label": "A",
"x": 1,
"y": 1
},
{
"label": "S",
"x": 2,
"y": 1
},
{
"label": "D",
"x": 3,
"y": 1
},
{
"label": "F",
"x": 4,
"y": 1
},
{
"label": "G",
"x": 5,
"y": 1
},
{
"label": "-",
"x": 6,
"y": 1
},
{
"label": "1",
"x": 8.5,
"y": 1
},
{
"label": "H",
"x": 9.5,
"y": 1
},
{
"label": "J",
"x": 10.5,
"y": 1
},
{
"label": "K",
"x": 11.5,
"y": 1
},
{
"label": "L",
"x": 12.5,
"y": 1
},
{
"label": ";",
"x": 13.5,
"y": 1
},
{
"label": "Enter",
"x": 14.5,
"y": 1
},
{
"label": "(",
"x": 0,
"y": 2
},
{
"label": "Z",
"x": 1,
"y": 2
},
{
"label": "X",
"x": 2,
"y": 2
},
{
"label": "C",
"x": 3,
"y": 2
},
{
"label": "V",
"x": 4,
"y": 2
},
{
"label": "B",
"x": 5,
"y": 2
},
{
"label": "=",
"x": 6,
"y": 2
},
{
"label": "8",
"x": 8.5,
"y": 2
},
{
"label": "N",
"x": 9.5,
"y": 2
},
{
"label": "M",
"x": 10.5,
"y": 2
},
{
"label": ",",
"x": 11.5,
"y": 2
},
{
"label": ".",
"x": 12.5,
"y": 2
},
{
"label": "/",
"x": 13.5,
"y": 2
},
{
"label": ")",
"x": 14.5,
"y": 2
},
{
"label": "Num Layer",
"x": 4,
"y": 3.25
},
{
"label": "Back Space",
"x": 5,
"y": 3.25
},
{
"label": "Space",
"x": 9.5,
"y": 3.25
},
{
"label": "Symbol Layer",
"x": 10.5,
"y": 3.25
}
{"label": "Esc", "x": 0, "y": 0},
{"label": "Q", "x": 1, "y": 0},
{"label": "W", "x": 2, "y": 0},
{"label": "E", "x": 3, "y": 0},
{"label": "R", "x": 4, "y": 0},
{"label": "T", "x": 5, "y": 0},
{"label": "{", "x": 6, "y": 0},
{"label": "}", "x": 8.5, "y": 0},
{"label": "Y", "x": 9.5, "y": 0},
{"label": "U", "x": 10.5, "y": 0},
{"label": "I", "x": 11.5, "y": 0},
{"label": "O", "x": 12.5, "y": 0},
{"label": "P", "x": 13.5, "y": 0},
{"label": "\"", "x": 14.5, "y": 0},
{"label": "Tab", "x": 0, "y": 1},
{"label": "A", "x": 1, "y": 1},
{"label": "S", "x": 2, "y": 1},
{"label": "D", "x": 3, "y": 1},
{"label": "F", "x": 4, "y": 1},
{"label": "G", "x": 5, "y": 1},
{"label": "-", "x": 6, "y": 1},
{"label": "1", "x": 8.5, "y": 1},
{"label": "H", "x": 9.5, "y": 1},
{"label": "J", "x": 10.5, "y": 1},
{"label": "K", "x": 11.5, "y": 1},
{"label": "L", "x": 12.5, "y": 1},
{"label": ";", "x": 13.5, "y": 1},
{"label": "Enter", "x": 14.5, "y": 1},
{"label": "(", "x": 0, "y": 2},
{"label": "Z", "x": 1, "y": 2},
{"label": "X", "x": 2, "y": 2},
{"label": "C", "x": 3, "y": 2},
{"label": "V", "x": 4, "y": 2},
{"label": "B", "x": 5, "y": 2},
{"label": "=", "x": 6, "y": 2},
{"label": "8", "x": 8.5, "y": 2},
{"label": "N", "x": 9.5, "y": 2},
{"label": "M", "x": 10.5, "y": 2},
{"label": ", ", "x": 11.5, "y": 2},
{"label": ".", "x": 12.5, "y": 2},
{"label": "/", "x": 13.5, "y": 2},
{"label": ")", "x": 14.5, "y": 2},
{"label": "Num Layer", "x": 4, "y": 3.25},
{"label": "Back Space", "x": 5, "y": 3.25},
{"label": "Space", "x": 9.5, "y": 3.25},
{"label": "Symbol Layer", "x": 10.5, "y": 3.25}
]
}
}

View File

@@ -1,4 +1,4 @@
#include "chimera_ortho.h"
#include QMK_KEYBOARD_H
enum chimera_ortho_layers
{
@@ -34,7 +34,7 @@ enum chimera_ortho_layers
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_BASE] = KC_KEYMAP(
[_BASE] = LAYOUT_kc(
//,-------+-------+-------+-------+-------+-------+-------. ,-------+-------+-------+-------+-------+-------+-------.
LALT ,TAB ,QUOT ,COMM ,DOT ,P ,Y ,F ,G ,C ,R ,L ,SLSH ,FUNC
//|-------+-------+-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------+-------+-------|
@@ -46,7 +46,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
//\-------------------------------+-------+-------+-------/ \-------+-------+---------------------------------------/
),
[_NAV] = KC_KEYMAP(
[_NAV] = LAYOUT_kc(
//,-------+-------+-------+-------+-------+-------+-------. ,-------+-------+-------+-------+-------+-------+-------.
, , , , , , , ,HOME ,PGDOWN ,PGUP ,END , ,
//|-------+-------+-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------+-------+-------|
@@ -58,7 +58,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
//\-------------------------------+-------+-------+-------/ \-------+-------+---------------------------------------/
),
[_SYM] = KC_KEYMAP(
[_SYM] = LAYOUT_kc(
//,-------+-------+-------+-------+-------+-------+-------. ,-------+-------+-------+-------+-------+-------+-------.
,QUAKE ,GRAVE ,TILDE ,BSLASH ,PIPE ,LPRN ,RPRN ,7 ,8 ,9 ,SLSH ,EQUAL ,
//|-------+-------+-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------+-------+-------|
@@ -70,7 +70,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
//\-------------------------------+-------+-------+-------/ \-------+-------+---------------------------------------/
),
[_FUNC] = KC_KEYMAP(
[_FUNC] = LAYOUT_kc(
//,-------+-------+-------+-------+-------+-------+-------. ,-------+-------+-------+-------+-------+-------+-------.
,RESET ,SLEP ,MRWD ,MPLY ,MFFD , , ,F9 ,F10 ,F11 ,F12 , ,
//|-------+-------+-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------+-------+-------|
@@ -82,7 +82,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
//\-------------------------------+-------+-------+-------/ \-------+-------+---------------------------------------/
),
[_MOUSE] = KC_KEYMAP(
[_MOUSE] = LAYOUT_kc(
//,-------+-------+-------+-------+-------+-------+-------. ,-------+-------+-------+-------+-------+-------+-------.
, , , , , , , , , , , , ,
//|-------+-------+-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------+-------+-------|

View File

@@ -0,0 +1,5 @@
#pragma once
// place overrides here
#define LONGPRESS_DELAY 150
//#define LAYER_TOGGLE_DELAY 300

View File

@@ -1,20 +1,19 @@
// this is the style you want to emulate.
// This is the canonical layout file for the Quantum project. If you want to add another keyboard,
#include "chimera_ortho.h"
#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 chimera_ortho_layers
{
_QWERTY,
_CAPS,
_NUMPAD,
_SYMBOLS,
_MACROS,
_NAV
enum chimera_ortho_layers {
_QWERTY,
_CAPS,
_NUMPAD,
_SYMBOLS,
_MACROS,
_NAV
};
#define KC_NMPD TG(_NUMPAD)
@@ -27,153 +26,140 @@ enum chimera_ortho_layers
#define KC_GBRC MT(MOD_RGUI, KC_8)
#define KC_GQOT MT(MOD_LGUI, KC_QUOT)
#define KC_MESC LT(_MACROS, KC_ESC)
#define KC_INCL M(0)
#define KC_PULL M(1)
#define KC_PUSH M(2)
#define KC_SCAP M(3)
#define KC_SCOF M(4)
#define KC_CAD LALT(LCTL(KC_DEL))
#define LONGPRESS_DELAY 150
//#define LAYER_TOGGLE_DELAY 300
// Fillers to make layering more clear
#define _______ KC_TRNS
#define XXXXXXX KC_NO
#define KC_ KC_TRNS
enum custom_keycodes {
KC_INCL = SAFE_RANGE,
KC_PULL,
KC_PUSH,
KC_SCAP,
KC_SCOF
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_QWERTY] = KC_KEYMAP(
//,----+----+----+----+----+----+----. ,----+----+----+----+----+----+----.
MESC, Q , W , E , R , T ,SCTL, SCTR, Y , U , I , O , P ,QUOT,
//|----+----+----+----+----+----+----| |----+----+----+----+----+----+----|
TAB , A , S , D , F , G ,SPLT, SPRT, H , J , K , L ,SCLN,ENT ,
//|----+----+----+----+----+----+----| |----+----+----+----+----+----+----|
LSPO, Z , X , C , V , B ,SPFN, GBRC, N , M ,COMM,DOT ,SLSH,RSPC,
//|----+----+----+----+----+----+----| |----+----+----+----+----+----+----|
NMPD,BSPC, SPC ,SYMB
// \------------------+----+----+---/ \---+----+----+-------------------/
[_QWERTY] = LAYOUT(
//,-------+-------+-------+-------+-------+-------+-------. ,-------+-------+-------+-------+-------+-------+-------.
KC_MESC, KC_Q , KC_W , KC_E , KC_R , KC_T ,KC_SCTL, KC_SCTR, KC_Y , KC_U , KC_I , KC_O , KC_P ,KC_QUOT,
//|-------+-------+-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------+-------+-------|
KC_TAB , KC_A , KC_S , KC_D , KC_F , KC_G ,KC_SPLT, KC_SPRT, KC_H , KC_J , KC_K , KC_L ,KC_SCLN,KC_ENT ,
//|-------+-------+-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------+-------+-------|
KC_LSPO, KC_Z , KC_X , KC_C , KC_V , KC_B ,KC_SPFN, KC_GBRC, KC_N , KC_M ,KC_COMM,KC_DOT ,KC_SLSH,KC_RSPC,
//|-------+-------+-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------+-------+-------|
KC_NMPD,KC_BSPC, KC_SPC ,KC_SYMB
// \------------------------------+-------+-------+------/ \------+-------+-------+------------------------------/
),
[_CAPS] = KC_KEYMAP(
//,----+----+----+----+----+----+----. ,----+----+----+----+----+----+----.
, , , , , , , , , , , , , ,
//|----+----+----+----+----+----+----| |----+----+----+----+----+----+----|
, , , , , ,UNDS, , , , , ,COLN, ,
//|----+----+----+----+----+----+----| |----+----+----+----+----+----+----|
SCOF, , , , , , , , , , , , ,SCOF,
//|----+----+----+----+----+----+----| |----+----+----+----+----+----+----|
, , ,
// \------------------+----+----+---/ \---+----+----+-------------------/
[_CAPS] = LAYOUT(
//,-------+-------+-------+-------+-------+-------+-------. ,-------+-------+-------+-------+-------+-------+-------.
_______,_______,_______,_______,_______,_______,_______, _______,_______,_______,_______,_______,_______,_______,
//|-------+-------+-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------+-------+-------|
_______,_______,_______,_______,_______,_______,KC_UNDS, _______,_______,_______,_______,_______,KC_COLN,_______,
//|-------+-------+-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------+-------+-------|
KC_SCOF,_______,_______,_______,_______,_______,_______, _______,_______,_______,_______,_______,_______,KC_SCOF,
//|-------+-------+-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------+-------+-------|
_______,_______, _______,_______
// \------------------------------+-------+-------+------/ \------+-------+-------+------------------------------/
),
[_NUMPAD] = KC_KEYMAP(
//,----+----+----+----+----+----+----. ,----+----+----+----+----+----+----.
, ,COLN , , , , , , , 7 , 8 , 9 ,ASTR,MINS,
//|----+----+----+----+----+----+----| |----+----+----+----+----+----+----|
, ,DOT , , , , , , , 4 , 5 , 6 ,PLUS, ,
//|----+----+----+----+----+----+----| |----+----+----+----+----+----+----|
, , , , , , , , , 1 , 2 , 3 ,SLSH, ,
//|----+----+----+----+----+----+----| |----+----+----+----+----+----+----|
, , , 0
// \------------------+----+----+---/ \---+----+----+-------------------/
[_NUMPAD] = LAYOUT(
//,-------+-------+-------+-------+-------+-------+-------. ,-------+-------+-------+-------+-------+-------+-------.
_______,_______,KC_COLN,_______,_______,_______,_______, _______,_______, KC_7 , KC_8 , KC_9 ,KC_ASTR,KC_MINS,
//|-------+-------+-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------+-------+-------|
_______,_______,KC_DOT ,_______,_______,_______,_______, _______,_______, KC_4 , KC_5 , KC_6 ,KC_PLUS,_______,
//|-------+-------+-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------+-------+-------|
_______,_______,_______,_______,_______,_______,_______, _______,_______, KC_1 , KC_2 , KC_3 ,KC_SLSH,_______,
//|-------+-------+-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------+-------+-------|
_______,_______, _______, KC_0
// \------------------------------+-------+-------+------/ \------+-------+-------+------------------------------/
),
[_SYMBOLS] = KC_KEYMAP(
//,----+----+----+----+----+----+----. ,----+----+----+----+----+----+----.
,EXLM, AT ,HASH,DLR ,PERC, , ,CIRC,AMPR,ASTR,LPRN,RPRN,BSLS,
//|----+----+----+----+----+----+----| |----+----+----+----+----+----+----|
, F1 , F2 , F3 , F4 , F5 , , ,TILD,COLN,UNDS,LCBR,RCBR, ,
//|----+----+----+----+----+----+----| |----+----+----+----+----+----+----|
, F6 , F7 , F8 , F9 ,F10 , , ,GRV ,SCLN,MINS,LBRC,RBRC, ,
//|----+----+----+----+----+----+----| |----+----+----+----+----+----+----|
PIPE, , ,
// \------------------+----+----+---/ \---+----+----+-------------------/
[_SYMBOLS] = LAYOUT(
//,-------+-------+-------+-------+-------+-------+-------. ,-------+-------+-------+-------+-------+-------+-------.
_______,KC_EXLM, KC_AT ,KC_HASH,KC_DLR ,KC_PERC,_______, _______,KC_CIRC,KC_AMPR,KC_ASTR,KC_LPRN,KC_RPRN,KC_BSLS,
//|-------+-------+-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------+-------+-------|
_______, KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 ,_______, _______,KC_TILD,KC_COLN,KC_UNDS,KC_LCBR,KC_RCBR,_______,
//|-------+-------+-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------+-------+-------|
_______, KC_F6 , KC_F7 , KC_F8 , KC_F9 ,KC_F10 ,_______, _______,KC_GRV ,KC_SCLN,KC_MINS,KC_LBRC,KC_RBRC,_______,
//|-------+-------+-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------+-------+-------|
KC_PIPE,_______, _______,_______
// \------------------------------+-------+-------+------/ \------+-------+-------+------------------------------/
),
[_NAV] = KC_KEYMAP(
//,----+----+----+----+----+----+----. ,----+----+----+----+----+----+----.
, , , , , , , , , , UP , ,PSCR, ,
//|----+----+----+----+----+----+----| |----+----+----+----+----+----+----|
, , , , , , , , ,LEFT,DOWN,RGHT, , ,
//|----+----+----+----+----+----+----| |----+----+----+----+----+----+----|
, , , , , , , , ,PGUP,PGDN, , , ,
//|----+----+----+----+----+----+----| |----+----+----+----+----+----+----|
,DEL , ,
// \------------------+----+----+---/ \---+----+----+-------------------/
[_NAV] = LAYOUT(
//,-------+-------+-------+-------+-------+-------+-------. ,-------+-------+-------+-------+-------+-------+-------.
_______,_______,_______,_______,_______,_______,_______, _______,_______,_______, KC_UP ,_______,KC_PSCR,_______,
//|-------+-------+-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------+-------+-------|
_______,_______,_______,_______,_______,_______,_______, _______,_______,KC_LEFT,KC_DOWN,KC_RGHT,_______,_______,
//|-------+-------+-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------+-------+-------|
_______,_______,_______,_______,_______,_______,_______, _______,_______,KC_PGUP,KC_PGDN,_______,_______,_______,
//|-------+-------+-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------+-------+-------|
_______,KC_DEL , _______,_______
// \------------------------------+-------+-------+------/ \------+-------+-------+------------------------------/
),
[_MACROS] = KC_KEYMAP(
//,----+----+----+----+----+----+----. ,----+----+----+----+----+----+----.
, , , , , , , , , ,INCL, , , ,
//|----+----+----+----+----+----+----| |----+----+----+----+----+----+----|
, , ,CAD , , , , , , , , , , ,
//|----+----+----+----+----+----+----| |----+----+----+----+----+----+----|
SCAP, , , , , , , , , ,PULL,PUSH, ,SCAP,
//|----+----+----+----+----+----+----| |----+----+----+----+----+----+----|
, , ,
// \------------------+----+----+---/ \---+----+----+-------------------/
[_MACROS] = LAYOUT(
//,-------+-------+-------+-------+-------+-------+-------. ,-------+-------+-------+-------+-------+-------+-------.
_______,_______,_______,_______,_______,_______,_______, _______,_______,_______,KC_INCL,_______,_______,_______,
//|-------+-------+-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------+-------+-------|
_______,_______,_______,KC_CAD ,_______,_______,_______, _______,_______,_______,_______,_______,_______,_______,
//|-------+-------+-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------+-------+-------|
KC_SCAP,_______,_______,_______,_______,_______,_______, _______,_______,_______,KC_PULL,KC_PUSH,_______,KC_SCAP,
//|-------+-------+-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------+-------+-------|
_______,_______, _______,_______
// \------------------------------+-------+-------+------/ \------+-------+-------+------------------------------/
)
};
const uint16_t PROGMEM fn_actions[] = {
};
const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
{
switch(id) {
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
switch(keycode) {
/* include some kind of library or header */
case 0:
case KC_INCL:
if (record->event.pressed) {
SEND_STRING("#include <>");
return MACRO( T(LEFT), END);
SEND_STRING("#include <>" SS_TAP(X_LEFT));
}
break;
case 1:
return false;
case KC_PULL:
if (record->event.pressed) {
SEND_STRING("git pull");
return MACRO( T(ENT), END );
SEND_STRING("git pull" SS_TAP(X_ENTER));
}
break;
case 2:
return false;
case KC_PUSH:
if (record->event.pressed){
SEND_STRING("git push");
return MACRO( T(ENT), END );
SEND_STRING("git push" SS_TAP(X_ENTER));
}
break;
case 3:
return false;
case KC_SCAP:
if (record->event.pressed){
layer_on(_CAPS);
register_code(KC_CAPSLOCK);
unregister_code(KC_CAPSLOCK);
}
break;
case 4:
return false;
case KC_SCOF:
if (record->event.pressed){
layer_off(_CAPS);
register_code(KC_CAPSLOCK);
unregister_code(KC_CAPSLOCK);
}
break;
return false;
}
return MACRO_NONE;
return true;
};
void matrix_scan_user(void) {
uint8_t layer = biton32(layer_state);
switch (layer) {
case _QWERTY:
set_led_green;
break;
case _QWERTY:
set_led_green;
break;
case _CAPS:
set_led_white;
break;
set_led_white;
break;
case _NUMPAD:
set_led_blue;
break;
@@ -181,11 +167,11 @@ void matrix_scan_user(void) {
set_led_red;
break;
case _NAV:
set_led_magenta;
break;
set_led_magenta;
break;
case _MACROS:
set_led_cyan;
break;
set_led_cyan;
break;
default:
set_led_green;
break;

View File

@@ -1,10 +1,8 @@
// this is the style you want to emulate.
// This is the canonical layout file for the Quantum project. If you want to add another keyboard,
#include "chimera_ortho.h"
#include "action_layer.h"
#include QMK_KEYBOARD_H
#include "version.h"
#include "process_keycode/process_tap_dance.h"
#include "gordon.h"
// Each layer gets a name for readability, which is then used in the keymap matrix below.
@@ -83,11 +81,9 @@
//#define LAYER_TOGGLE_DELAY 300
// Fillers to make layering more clear
#define _______ KC_TRNS
#define XXXXXXX KC_NO
#define KC_ KC_TRNS
#define KC_ KC_TRNS
/* TODO:
/* TODO:
*
* DONE: RESET and CAD into macro layer.
* DONE: WINUP AND WINDOWN in NAV layer
@@ -113,7 +109,7 @@
* Russain layer
* Hebrew layer
* Get rid of stupid git pull and push macros.
*
*
*/
//Tap dance enums
@@ -127,14 +123,14 @@ enum {
CALC_PRINTSCREEN
};
static xtap ttt_state = {
static xtap ttt_state = {
.is_press_action = true,
.state = 0
};
//Already exists in gordon.c, shouldn't need this anymore
/*// To activate SINGLE_HOLD, you will need to hold for 200ms first.
/*// To activate SINGLE_HOLD, you will need to hold for 200ms first.
// This tap dance favors keys that are used frequently in typing like 'f'
int cur_dance (qk_tap_dance_state_t *state) {
if (state->count == 1) {
@@ -151,8 +147,8 @@ int cur_dance (qk_tap_dance_state_t *state) {
else if (state->count == 2) {
if (state->interrupted) return DOUBLE_SINGLE_TAP;
else if (state->pressed) return DOUBLE_HOLD;
else return DOUBLE_TAP;
}
else return DOUBLE_TAP;
}
else if ((state->count == 3) && ((state->interrupted) || (!state->pressed))) return TRIPLE_TAP;
else if (state->count == 3) return TRIPLE_HOLD;
else return 8; //magic number. At some point this method will expand to work for more presses
@@ -194,7 +190,7 @@ void TTT_reset (qk_tap_dance_state_t *state, void *user_data) {
qk_tap_dance_action_t tap_dance_actions[] = {
// simple tap dance
[F12ETAPS] = ACTION_TAP_DANCE_DOUBLE(KC_F12,LSFT(LCTL(KC_F10))),
[F12ETAPS] = ACTION_TAP_DANCE_DOUBLE(KC_F12,LSFT(LCTL(KC_F10))),
[CALCCOMP] = ACTION_TAP_DANCE_DOUBLE(KC_CALCULATOR, KC_MY_COMPUTER),
[CALC_PRINTSCREEN] = ACTION_TAP_DANCE_DOUBLE(KC_CALCULATOR, KC_PSCR),
[ALTF4] = ACTION_TAP_DANCE_DOUBLE(KC_F4,LALT(KC_F4)),
@@ -206,7 +202,7 @@ qk_tap_dance_action_t tap_dance_actions[] = {
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_QWERTY] = KC_KEYMAP(
[_QWERTY] = LAYOUT_kc(
//,----+----+----+----+----+----+----. ,----+----+----+----+----+----+----.
MESC, Q ,CSHW,ENAV, R , T ,SPC , CLPS, Y , U ,INAV, O , P ,TTT,
//|----+----+----+----+----+----+----| |----+----+----+----+----+----+----|
@@ -218,7 +214,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// \------------------+----+----+---/ \---+----+----+-------------------/
),
[_NUMPAD] = KC_KEYMAP(
[_NUMPAD] = LAYOUT_kc(
//,----+----+----+----+----+----+----. ,----+----+----+----+----+----+----.
, , , ,ASTR, , , , , 7 , 8 , 9 ,ASTR,/**/,
//|----+----+----+----+----+----+----| |----+----+----+----+----+----+----|
@@ -226,11 +222,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
//|----+----+----+----+----+----+----| |----+----+----+----+----+----+----|
, , , ,SLSH, , , , , 1 , 2 , 3 ,SLSH, ,
//|----+----+----+----+----+----+----| |----+----+----+----+----+----+----|
, , , 0
, , , 0
// \------------------+----+----+---/ \---+----+----+-------------------/
),
[_SYMBOLS] = KC_KEYMAP(
[_SYMBOLS] = LAYOUT_kc(
//,----+----+-----+----+----+----+----. ,----+----+----+----+----+----+----.
,EXLM, AT ,LCBR,RCBR,HASH, , ,CIRC,AMPR,ASTR,LPRN,RPRN,/**/,
//|----+----+-----+----+----+----+----| |----+----+----+----+----+----+----|
@@ -242,7 +238,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// \-------------------+----+----+---/ \---+----+----+-------------------/
),
[_FUNCTION] = KC_KEYMAP(
[_FUNCTION] = LAYOUT_kc(
//,----+----+----+----+----+----+----. ,----+----+----+----+----+----+----.
F6F7 ,F1 ,F2 ,F3 ,ALF4,F5 ,F6 , F7 ,F8 ,F9 ,F10 ,F11 ,F12 ,/**/,
//|----+----+----+----+----+----+----| |----+----+----+----+----+----+----|
@@ -250,11 +246,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
//|----+----+----+----+----+----+----| |----+----+----+----+----+----+----|
, , , , , , , , , , , , , ,
//|----+----+----+----+----+----+----| |----+----+----+----+----+----+----|
, , ,
, , ,
// \------------------+----+----+---/ \---+----+----+-------------------/
),
[_NAV] = KC_KEYMAP(
[_NAV] = LAYOUT_kc(
//,----+----+----+----+----+----+----. ,----+----+----+----+----+----+----.
, ,SNAPLEFT,/**/,SNAPRIGHT,, , , , , UP , , , ,
//|----+----+----+----+----+----+----| |----+----+----+----+----+----+----|
@@ -262,11 +258,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
//|----+----+----+----+----+----+----| |----+----+----+----+----+----+----|
, ,WORKLEFT, ,WORKRIGHT,, , , ,PGUP,PGDN, , , ,
//|----+----+----+----+----+----+----| |----+----+----+----+----+----+----|
CDEL ,DEL, ,
CDEL ,DEL, ,
// \------------------+----+----+---/ \---+----+----+-------------------/
),
[_TEXTNAV] = KC_KEYMAP(
[_TEXTNAV] = LAYOUT_kc(
//,----+----+----+----+----+----+----. ,----+----+----+----+----+----+----.
, , , , , , , , , ,/**/, , , ,
//|----+----+----+----+----+----+----| |----+----+----+----+----+----+----|
@@ -274,11 +270,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
//|----+----+----+----+----+----+----| |----+----+----+----+----+----+----|
, , , , , , , , , , , , , ,
//|----+----+----+----+----+----+----| |----+----+----+----+----+----+----|
, , ,
, , ,
// \------------------+----+----+---/ \---+----+----+-------------------/
),
[_MOUSE] = KC_KEYMAP(
[_MOUSE] = LAYOUT_kc(
//,----+----+----+----+----+----+----. ,----+----+----+----+----+----+----.
, , ,MS_UP, , , , , , , UP , , , ,/**/
//|----+----+----+----+----+----+----| |----+----+----+----+----+----+----|
@@ -286,12 +282,12 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
//|----+----+----+----+----+----+----| |----+----+----+----+----+----+----|
, , , , , , , , , , , , , ,
//|----+----+----+----+----+----+----| |----+----+----+----+----+----+----|
,MS_BTN1 ,MS_BTN2 ,
,MS_BTN1 ,MS_BTN2 ,
// \------------------+----+----+---/ \---+----+----+-------------------/
),
),
[_MACROS] = KC_KEYMAP(
[_MACROS] = LAYOUT_kc(
//,----+----+----+----+----+----+----. ,----+----+----+----+----+----+----.
/**/,RESET,SECRET_2,SECRET_3, , , ,SYSTEM_SLEEP, , ,INCL, , , ,
//|----+----+----+----+----+----+----| |----+----+----+----+----+----+----|
@@ -299,7 +295,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
//|----+----+----+----+----+----+----| |----+----+----+----+----+----+----|
SCAP, , , , , , , , , , , , ,SCAP,
//|----+----+----+----+----+----+----| |----+----+----+----+----+----+----|
, , ,
, , ,
// \------------------+----+----+---/ \---+----+----+-------------------/
)
@@ -349,11 +345,11 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
}
return MACRO_NONE;
};
void matrix_scan_user(void) {
uint8_t layer = biton32(layer_state);
switch (layer) {
case _QWERTY:
set_led_green;
@@ -381,7 +377,7 @@ void matrix_scan_user(void) {
_delay_ms(45);
set_led_blue;
_delay_ms(45);
break;
break;
default:
set_led_green;
break;

View File

@@ -0,0 +1,62 @@
{
"keyboard_name": "Comet46",
"url": "",
"maintainer": "SatT",
"width": 15,
"height": 4.9,
"layouts": {
"LAYOUT": {
"layout": [
{"label":"TAB", "x":0, "y":0.45},
{"label":"Q", "x":1, "y":0.45},
{"label":"W", "x":2, "y":0.15},
{"label":"E", "x":3, "y":0},
{"label":"R", "x":4, "y":0.30},
{"label":"T", "x":5, "y":0.45},
{"label":"Y", "x":9, "y":0.45},
{"label":"U", "x":10, "y":0.30},
{"label":"I", "x":11, "y":0},
{"label":"O", "x":12, "y":0.15},
{"label":"P", "x":13, "y":0.45},
{"label":"BSPC", "x":14, "y":0.45},
{"label":"LCTL", "x":0, "y":1.45},
{"label":"A", "x":1, "y":1.45},
{"label":"S", "x":2, "y":1.15},
{"label":"D", "x":3, "y":1},
{"label":"F", "x":4, "y":1.30},
{"label":"G", "x":5, "y":1.45},
{"label":"ESC", "x":6, "y":1},
{"label":"DEL", "x":8, "y":1},
{"label":"H", "x":9, "y":1.45},
{"label":"J", "x":10, "y":1.30},
{"label":"K", "x":11, "y":1},
{"label":"L", "x":12, "y":1.15},
{"label":"SCLN", "x":13, "y":1.45},
{"label":"QUOT", "x":14, "y":1.45},
{"label":"LSFT", "x":0, "y":2.45},
{"label":"Z", "x":1, "y":2.45},
{"label":"X", "x":2, "y":2.15},
{"label":"C", "x":3, "y":2},
{"label":"V", "x":4, "y":2.30},
{"label":"B", "x":5, "y":2.45},
{"label":"LCBR", "x":6, "y":2},
{"label":"RCBR", "x":8, "y":2},
{"label":"N", "x":9, "y":2.45},
{"label":"M", "x":10, "y":2.30},
{"label":"COMM", "x":11, "y":2},
{"label":"DOT", "x":12, "y":2.15},
{"label":"SLSH", "x":13, "y":2.45},
{"label":"RSFT", "x":14, "y":2.45},
{"label":"LGUI", "x":4, "y":3.9},
{"label":"LOWER", "x":5, "y":3.9},
{"label":"SPACE", "x":6, "y":3.4, "h":1.5},
{"label":"ENTER", "x":8, "y":3.4, "h":1.5},
{"label":"RAISE", "x":9, "y":3.9},
{"label":"LALT", "x":10, "y":3.9}
]
}
}
}

View File

@@ -1,6 +1,97 @@
{
"keyboard_name": "IBM 5291",
"keyboard_folder": "converter/5291",
"keyboard_folder": "converter/ibm_5291",
"url": "https://deskthority.net/wiki/IBM_Model_F#IBM_5291_Keyboard",
"maintainer": "listofoptions"
"maintainer": "listofoptions",
"width": 21,
"height": 5,
"layouts": {
"LAYOUT": {
"layout": [
{"label":"Sys Req", "x":0, "y":0},
{"label":"Cmd", "x":1, "y":0},
{"label":"`", "x":2.25, "y":0},
{"label":"1", "x":3.25, "y":0},
{"label":"2", "x":4.25, "y":0},
{"label":"3", "x":5.25, "y":0},
{"label":"4", "x":6.25, "y":0},
{"label":"5", "x":7.25, "y":0},
{"label":"6", "x":8.25, "y":0},
{"label":"7", "x":9.25, "y":0},
{"label":"8", "x":10.25, "y":0},
{"label":"9", "x":11.25, "y":0},
{"label":"0", "x":12.25, "y":0},
{"label":"-", "x":13.25, "y":0},
{"label":"=", "x":14.25, "y":0},
{"label":"Backspace", "x":15.25, "y":0, "w":1.75},
{"label":"Reverse Tab", "x":17, "y":0, "w":2},
{"label":"Dup", "x":19, "y":0, "w":2},
{"label":"Del", "x":0, "y":1},
{"label":"Erase Input", "x":1, "y":1},
{"label":"Tab", "x":2.25, "y":1, "w":1.5},
{"label":"Q", "x":3.75, "y":1},
{"label":"W", "x":4.75, "y":1},
{"label":"E", "x":5.75, "y":1},
{"label":"R", "x":6.75, "y":1},
{"label":"T", "x":7.75, "y":1},
{"label":"Y", "x":8.75, "y":1},
{"label":"U", "x":9.75, "y":1},
{"label":"I", "x":10.75, "y":1},
{"label":"O", "x":11.75, "y":1},
{"label":"P", "x":12.75, "y":1},
{"label":"&cent;", "x":13.75, "y":1},
{"label":"\\", "x":14.75, "y":1, "w":1.25},
{"label":"7", "x":17, "y":1},
{"label":"8", "x":18, "y":1},
{"label":"9", "x":19, "y":1},
{"label":"Field -", "x":20, "y":1},
{"label":"Print", "x":0, "y":2},
{"label":"Help", "x":1, "y":2},
{"label":"Caps Lock", "x":2.25, "y":2, "w":1.75},
{"label":"A", "x":4, "y":2},
{"label":"S", "x":5, "y":2},
{"label":"D", "x":6, "y":2},
{"label":"F", "x":7, "y":2},
{"label":"G", "x":8, "y":2},
{"label":"H", "x":9, "y":2},
{"label":"J", "x":10, "y":2},
{"label":"K", "x":11, "y":2},
{"label":"L", "x":12, "y":2},
{"label":";", "x":13, "y":2},
{"label":"'", "x":14, "y":2},
{"label":"{", "x":15, "y":2},
{"label":"Field Exit", "x":16, "y":1, "h":2},
{"label":"4", "x":17, "y":2},
{"label":"5", "x":18, "y":2},
{"label":"6", "x":19, "y":2},
{"label":"Roll Up", "x":0, "y":3},
{"label":"Roll Down", "x":1, "y":3},
{"label":"Shift", "x":2.25, "y":3, "w":1.25},
{"label":"<", "x":3.5, "y":3},
{"label":"Z", "x":4.5, "y":3},
{"label":"X", "x":5.5, "y":3},
{"label":"C", "x":6.5, "y":3},
{"label":"V", "x":7.5, "y":3},
{"label":"B", "x":8.5, "y":3},
{"label":"N", "x":9.5, "y":3},
{"label":"M", "x":10.5, "y":3},
{"label":",", "x":11.5, "y":3},
{"label":".", "x":12.5, "y":3},
{"label":"/", "x":13.5, "y":3},
{"label":"Shift", "x":14.5, "y":3, "w":1.5},
{"label":"Return", "x":16, "y":3},
{"label":"1", "x":17, "y":3},
{"label":"2", "x":18, "y":3},
{"label":"3", "x":19, "y":3},
{"label":"Field +", "x":20, "y":2, "h":3},
{"label":"Left", "x":0, "y":4},
{"label":"Right", "x":1, "y":4},
{"label":"Error Reset", "x":2.25, "y":4, "w":2},
{"label":"Space", "x":4.25, "y":4, "w":9.75},
{"label":"Enter Rec Adv", "x":14, "y":4, "w":2},
{"label":"0", "x":16, "y":4, "w":2},
{"label":".", "x":18, "y":4, "w":2}
]
}
}
}

View File

@@ -1,6 +1,6 @@
# IBM 5291 keyboard converter
![5291](https://deskthority.net/wiki/IBM_Model_F#IBM_5291_Keyboard)
[IBM 5291](https://deskthority.net/wiki/IBM_Model_F#IBM_5291_Keyboard)
A converter for the eponymous keyboard.
@@ -14,7 +14,7 @@ Make example for this keyboard (after setting up your build environment):
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).
the pinout is as follows:
The pinout is as follows:
IBM5291Cable to Pinhead14
@@ -35,7 +35,8 @@ IBM5291Cable to Pinhead14
13| Strobe
14| Out
the pins on this connector are organized ![here](https://geekhack.org/index.php?action=dlattach;topic=48950.0;attach=36759;image)
The pins on this connector are organized
![here](https://geekhack.org/index.php?action=dlattach;topic=48950.0;attach=36759;image)
IBM52912 Cable with DB15M connector
@@ -55,10 +56,11 @@ IBM52912 Cable with DB15M connector
|14 | PE
|15 | NC
the above connector is actually numbered so it should be easier to determine
The above connector is actually numbered so it should be easier to determine
where the needed connections are.
to connect to the teensy, the following are pins are needed (if you should choose not set your own):
To connect to the teensy, the following are pins are needed (if you should choose not set your own):
* PB0 -> PB6 are connected to D0 -> D6
* +5V is connected to the corresponding teensy pin
* gnd is as well, only one of the gnd pins needs to be connected though.

View File

@@ -0,0 +1,83 @@
{
"keyboard_name": "Palm Stowaway Serial",
"keyboard_folder": "converter/palm_usb/stowaway",
"url": "",
"maintainer": "qmk",
"width": 15.25,
"height": 5,
"layouts": {
"LAYOUT": {
"layout": [
{"label":"1", "x":0.5, "y":0},
{"label":"2", "x":1.5, "y":0},
{"label":"3", "x":2.5, "y":0},
{"label":"4", "x":3.5, "y":0},
{"label":"5", "x":4.5, "y":0},
{"label":"6", "x":5.5, "y":0},
{"label":"7", "x":6.5, "y":0},
{"label":"8", "x":7.5, "y":0},
{"label":"9", "x":8.5, "y":0},
{"label":"0", "x":9.5, "y":0},
{"label":"MINS", "x":10.5, "y":0},
{"label":"EQL", "x":11.5, "y":0},
{"label":"BACK", "x":12.5, "y":0, "w":1.5},
{"label":"APP0", "x":14.25, "y":1, "h":0.6875},
{"label":"TAB", "x":0, "y":1},
{"label":"Q", "x":1, "y":1},
{"label":"W", "x":2, "y":1},
{"label":"E", "x":3, "y":1},
{"label":"R", "x":4, "y":1},
{"label":"T", "x":5, "y":1},
{"label":"Y", "x":6, "y":1},
{"label":"U", "x":7, "y":1},
{"label":"I", "x":8, "y":1},
{"label":"O", "x":9, "y":1},
{"label":"P", "x":10, "y":1},
{"label":"LBRC", "x":11, "y":1},
{"label":"RBRC", "x":12, "y":1},
{"label":"BSLS", "x":13, "y":1},
{"label":"APP1", "x":14.25, "y":1.6875, "h":0.6875},
{"label":"CAPS", "x":0, "y":2, "w":1.25},
{"label":"A", "x":1.25, "y":2},
{"label":"S", "x":2.25, "y":2},
{"label":"D", "x":3.25, "y":2},
{"label":"F", "x":4.25, "y":2},
{"label":"G", "x":5.25, "y":2},
{"label":"H", "x":6.25, "y":2},
{"label":"J", "x":7.25, "y":2},
{"label":"K", "x":8.25, "y":2},
{"label":"L", "x":9.25, "y":2},
{"label":"SCLN", "x":10.25, "y":2},
{"label":"QUOT", "x":11.25, "y":2},
{"label":"ENT", "x":12.25, "y":2, "w":1.75},
{"label":"APP2", "x":14.25, "y":2.375, "h":0.6875},
{"label":"LSFT", "x":0, "y":3, "w":1.75},
{"label":"Z", "x":1.75, "y":3},
{"label":"X", "x":2.75, "y":3},
{"label":"C", "x":3.75, "y":3},
{"label":"V", "x":4.75, "y":3},
{"label":"B", "x":5.75, "y":3},
{"label":"N", "x":6.75, "y":3},
{"label":"M", "x":7.75, "y":3},
{"label":"COMM", "x":8.75, "y":3},
{"label":"DOT", "x":9.75, "y":3},
{"label":"SLSH", "x":10.75, "y":3},
{"label":"RSFT", "x":11.75, "y":3, "w":1.25},
{"label":"UP", "x":13, "y":3},
{"label":"APP3", "x":14.25, "y":3.0625, "h":0.6875},
{"label":"LCTL", "x":0, "y":4, "w":1.25},
{"label":"FN", "x":1.25, "y":4},
{"label":"LALT", "x":2.25, "y":4},
{"label":"CMD", "x":3.25, "y":4},
{"label":"SPACE", "x":4.25, "y":4, "w":3.5},
{"label":"SPACE/New", "x":7.75, "y":4},
{"label":"GRAVE", "x":8.75, "y":4},
{"label":"DONE", "x":9.75, "y":4},
{"label":"DEL", "x":10.75, "y":4, "w":1.25},
{"label":"LEFT", "x":12, "y":4},
{"label":"DOWN", "x":13, "y":4},
{"label":"RIGHT", "x":14, "y":4}
]
}
}
}

View File

@@ -0,0 +1,109 @@
{
"keyboard_name": "Sun Type 3",
"keyboard_folder": "converter/sun_usb/type3",
"url": "",
"maintainer": "qmk",
"width": 21,
"height": 6,
"layouts": {
"LAYOUT": {
"layout": [
{"label":"STOP", "x":0, "y":0},
{"label":"AGAIN", "x":1, "y":0},
{"label":"CAPS LOCK", "x":2.5, "y":0},
{"label":"F2", "x":3.5, "y":0},
{"label":"F3", "x":4.5, "y":0, "w":2},
{"label":"F4", "x":6.5, "y":0, "w":2},
{"label":"F5", "x":8.5, "y":0, "w":2},
{"label":"F6", "x":10.5, "y":0, "w":2},
{"label":"F7", "x":12.5, "y":0, "w":2},
{"label":"F8", "x":14.5, "y":0},
{"label":"F9", "x":15.5, "y":0},
{"label":"BACKSPACE", "x":16.5, "y":0},
{"label":"R1", "x":18, "y":0},
{"label":"R2", "x":19, "y":0},
{"label":"R3", "x":20, "y":0},
{"label":"PROPS", "x":0, "y":1},
{"label":"UNDO", "x":1, "y":1},
{"label":"ESC", "x":2.5, "y":1},
{"label":"1", "x":3.5, "y":1},
{"label":"2", "x":4.5, "y":1},
{"label":"3", "x":5.5, "y":1},
{"label":"4", "x":6.5, "y":1},
{"label":"5", "x":7.5, "y":1},
{"label":"6", "x":8.5, "y":1},
{"label":"7", "x":9.5, "y":1},
{"label":"8", "x":10.5, "y":1},
{"label":"9", "x":11.5, "y":1},
{"label":"0", "x":12.5, "y":1},
{"label":"MINUS", "x":13.5, "y":1},
{"label":"EQUAL", "x":14.5, "y":1},
{"label":"BACKSLASH", "x":15.5, "y":1},
{"label":"GRAVE", "x":16.5, "y":1},
{"label":"R4", "x":18, "y":1},
{"label":"R5", "x":19, "y":1},
{"label":"R6", "x":20, "y":1},
{"label":"FRONT", "x":0, "y":2},
{"label":"COPY", "x":1, "y":2},
{"label":"TAB", "x":2.5, "y":2, "w":1.5},
{"label":"Q", "x":4, "y":2},
{"label":"W", "x":5, "y":2},
{"label":"E", "x":6, "y":2},
{"label":"R", "x":7, "y":2},
{"label":"T", "x":8, "y":2},
{"label":"Y", "x":9, "y":2},
{"label":"U", "x":10, "y":2},
{"label":"I", "x":11, "y":2},
{"label":"O", "x":12, "y":2},
{"label":"P", "x":13, "y":2},
{"label":"LBRACKET", "x":14, "y":2},
{"label":"RBRACKET", "x":15, "y":2},
{"label":"DELETE", "x":16, "y":2, "w":1.5},
{"label":"R7", "x":18, "y":2},
{"label":"R8", "x":19, "y":2},
{"label":"R9", "x":20, "y":2},
{"label":"OPEN", "x":0, "y":3},
{"label":"PASTE", "x":1, "y":3},
{"label":"CONTROL", "x":2.5, "y":3, "w":1.75},
{"label":"A", "x":4.25, "y":3},
{"label":"S", "x":5.25, "y":3},
{"label":"D", "x":6.25, "y":3},
{"label":"F", "x":7.25, "y":3},
{"label":"G", "x":8.25, "y":3},
{"label":"H", "x":9.25, "y":3},
{"label":"J", "x":10.25, "y":3},
{"label":"K", "x":11.25, "y":3},
{"label":"L", "x":12.25, "y":3},
{"label":"SEMICOLON", "x":13.25, "y":3},
{"label":"QUOTE", "x":14.25, "y":3},
{"label":"RETURN", "x":15.25, "y":3, "w":2.25},
{"label":"R10", "x":18, "y":3},
{"label":"R11", "x":19, "y":3},
{"label":"R12", "x":20, "y":3},
{"label":"FIND", "x":0, "y":4},
{"label":"CUT", "x":1, "y":4},
{"label":"LSHIFT", "x":2.5, "y":4, "w":2.25},
{"label":"Z", "x":4.75, "y":4},
{"label":"X", "x":5.75, "y":4},
{"label":"C", "x":6.75, "y":4},
{"label":"V", "x":7.75, "y":4},
{"label":"B", "x":8.75, "y":4},
{"label":"N", "x":9.75, "y":4},
{"label":"M", "x":10.75, "y":4},
{"label":"COMMA", "x":11.75, "y":4},
{"label":"PERIOD", "x":12.75, "y":4},
{"label":"SLASH", "x":13.75, "y":4},
{"label":"RSHIFT", "x":14.75, "y":4, "w":1.75},
{"label":"LINE FEED", "x":16.5, "y":4},
{"label":"R13", "x":18, "y":4},
{"label":"R14", "x":19, "y":4},
{"label":"R15", "x":20, "y":4},
{"label":"CAPS", "x":2.5, "y":5, "w":1.25},
{"label":"LEFT", "x":3.75, "y":5, "w":1.5},
{"label":"SPACE", "x":5.25, "y":5, "w":9},
{"label":"RIGHT", "x":14.25, "y":5, "w":1.5},
{"label":"ALTERNATE", "x":15.75, "y":5, "w":1.75}
]
}
}
}

View File

@@ -0,0 +1,381 @@
{
"keyboard_name": "Sun Type 5",
"keyboard_folder": "converter/sun_usb/type5",
"url": "",
"maintainer": "qmk",
"width": 24.75,
"height": 7,
"layouts": {
"LAYOUT_jp_unix": {
"layout": [
{"label":"HELP", "x":0, "y":0, "w":2},
{"label":"NO", "x":2.25, "y":0},
{"label":"F1", "x":4.25, "y":0},
{"label":"F2", "x":5.25, "y":0},
{"label":"F3", "x":6.25, "y":0},
{"label":"F4", "x":7.25, "y":0},
{"label":"F5", "x":8.75, "y":0},
{"label":"F6", "x":9.75, "y":0},
{"label":"F7", "x":10.75, "y":0},
{"label":"F8", "x":11.75, "y":0},
{"label":"F9", "x":13.25, "y":0},
{"label":"F10", "x":14.25, "y":0},
{"label":"F11", "x":15.25, "y":0},
{"label":"F12", "x":16.25, "y":0},
{"label":"PRINT SCREEN", "x":17.5, "y":0},
{"label":"SCROLL LOCK", "x":18.5, "y":0},
{"label":"PAUSE", "x":19.5, "y":0},
{"label":"MUTE", "x":20.75, "y":0},
{"label":"VOLD", "x":21.75, "y":0},
{"label":"VOLU", "x":22.75, "y":0},
{"label":"PWR", "x":23.75, "y":0},
{"label":"STOP", "x":0, "y":2},
{"label":"AGAIN", "x":1, "y":2},
{"label":"ESC", "x":2.25, "y":2},
{"label":"1", "x":3.25, "y":2},
{"label":"2", "x":4.25, "y":2},
{"label":"3", "x":5.25, "y":2},
{"label":"4", "x":6.25, "y":2},
{"label":"5", "x":7.25, "y":2},
{"label":"6", "x":8.25, "y":2},
{"label":"7", "x":9.25, "y":2},
{"label":"8", "x":10.25, "y":2},
{"label":"9", "x":11.25, "y":2},
{"label":"0", "x":12.25, "y":2},
{"label":"MINUS", "x":13.25, "y":2},
{"label":"EQUAL", "x":14.25, "y":2},
{"label":"BACKSLASH", "x":15.25, "y":2},
{"label":"GRAVE", "x":16.25, "y":2},
{"label":"INSERT", "x":17.5, "y":2},
{"label":"HOME", "x":18.5, "y":2},
{"label":"PAGE UP", "x":19.5, "y":2},
{"label":"NUM LOCK", "x":20.75, "y":2},
{"label":"PSLASH", "x":21.75, "y":2},
{"label":"PASTERISK", "x":22.75, "y":2},
{"label":"PMINUS", "x":23.75, "y":2},
{"label":"MENU", "x":0, "y":3},
{"label":"UNDO", "x":1, "y":3},
{"label":"TAB", "x":2.25, "y":3, "w":1.5},
{"label":"Q", "x":3.75, "y":3},
{"label":"W", "x":4.75, "y":3},
{"label":"E", "x":5.75, "y":3},
{"label":"R", "x":6.75, "y":3},
{"label":"T", "x":7.75, "y":3},
{"label":"Y", "x":8.75, "y":3},
{"label":"U", "x":9.75, "y":3},
{"label":"I", "x":10.75, "y":3},
{"label":"O", "x":11.75, "y":3},
{"label":"P", "x":12.75, "y":3},
{"label":"LBRACKET", "x":13.75, "y":3},
{"label":"RBRACKET", "x":14.75, "y":3},
{"label":"BACKSPACE", "x":15.75, "y":3, "w":1.5},
{"label":"DELETE", "x":17.5, "y":3},
{"label":"END", "x":18.5, "y":3},
{"label":"PAGE DOWN", "x":19.5, "y":3},
{"label":"P7", "x":20.75, "y":3},
{"label":"P8", "x":21.75, "y":3},
{"label":"P9", "x":22.75, "y":3},
{"label":"PPLUS", "x":23.75, "y":3, "h":2},
{"label":"SELECT", "x":0, "y":4},
{"label":"COPY", "x":1, "y":4},
{"label":"LCTRL", "x":2.25, "y":4, "w":1.75},
{"label":"A", "x":4, "y":4},
{"label":"S", "x":5, "y":4},
{"label":"D", "x":6, "y":4},
{"label":"F", "x":7, "y":4},
{"label":"G", "x":8, "y":4},
{"label":"H", "x":9, "y":4},
{"label":"J", "x":10, "y":4},
{"label":"K", "x":11, "y":4},
{"label":"L", "x":12, "y":4},
{"label":"SEMICOLON", "x":13, "y":4},
{"label":"QUOTE", "x":14, "y":4},
{"label":"ENTER", "x":15, "y":4, "w":2.25},
{"label":"P4", "x":20.75, "y":4},
{"label":"P5", "x":21.75, "y":4},
{"label":"P6", "x":22.75, "y":4},
{"label":"EXECUTE", "x":0, "y":5},
{"label":"PASTE", "x":1, "y":5},
{"label":"LSHIFT", "x":2.25, "y":5, "w":2.25},
{"label":"Z", "x":4.5, "y":5},
{"label":"X", "x":5.5, "y":5},
{"label":"C", "x":6.5, "y":5},
{"label":"V", "x":7.5, "y":5},
{"label":"B", "x":8.5, "y":5},
{"label":"N", "x":9.5, "y":5},
{"label":"M", "x":10.5, "y":5},
{"label":"COMMA", "x":11.5, "y":5},
{"label":"PERIOD", "x":12.5, "y":5},
{"label":"SLASH", "x":13.5, "y":5},
{"label":"RSHIFT", "x":14.5, "y":5, "w":2.75},
{"label":"UP", "x":18.5, "y":5},
{"label":"P1", "x":20.75, "y":5},
{"label":"P2", "x":21.75, "y":5},
{"label":"P3", "x":22.75, "y":5},
{"label":"PENTER", "x":23.75, "y":5, "h":2},
{"label":"FIND", "x":0, "y":6},
{"label":"CUT", "x":1, "y":6},
{"label":"CAPS LOCK", "x":2.25, "y":6},
{"label":"LALT", "x":3.25, "y":6},
{"label":"LGUI", "x":4.25, "y":6},
{"label":"HENKAN", "x":5.25, "y":6, "w":1.5},
{"label":"SPACE", "x":6.75, "y":6, "w":5},
{"label":"MUHENKAN", "x":11.75, "y":6, "w":1.5},
{"label":"KANA", "x":13.25, "y":6},
{"label":"RGUI", "x":14.25, "y":6},
{"label":"APP", "x":15.25, "y":6},
{"label":"RALT", "x":16.25, "y":6},
{"label":"LEFT", "x":17.5, "y":6},
{"label":"DOWN", "x":18.5, "y":6},
{"label":"RIGHT", "x":19.5, "y":6},
{"label":"P0", "x":20.75, "y":6, "w":2},
{"label":"PDOT", "x":22.75, "y":6}
]
},
"LAYOUT_us_unix": {
"layout": [
{"label":"HELP", "x":0, "y":0, "w":2},
{"label":"NO", "x":2.25, "y":0},
{"label":"F1", "x":4.25, "y":0},
{"label":"F2", "x":5.25, "y":0},
{"label":"F3", "x":6.25, "y":0},
{"label":"F4", "x":7.25, "y":0},
{"label":"F5", "x":8.75, "y":0},
{"label":"F6", "x":9.75, "y":0},
{"label":"F7", "x":10.75, "y":0},
{"label":"F8", "x":11.75, "y":0},
{"label":"F9", "x":13.25, "y":0},
{"label":"F10", "x":14.25, "y":0},
{"label":"F11", "x":15.25, "y":0},
{"label":"F12", "x":16.25, "y":0},
{"label":"PRINT SCREEN", "x":17.5, "y":0},
{"label":"SCROLL LOCK", "x":18.5, "y":0},
{"label":"PAUSE", "x":19.5, "y":0},
{"label":"MUTE", "x":20.75, "y":0},
{"label":"VOLD", "x":21.75, "y":0},
{"label":"VOLU", "x":22.75, "y":0},
{"label":"PWR", "x":23.75, "y":0},
{"label":"STOP", "x":0, "y":2},
{"label":"AGAIN", "x":1, "y":2},
{"label":"ESC", "x":2.25, "y":2},
{"label":"1", "x":3.25, "y":2},
{"label":"2", "x":4.25, "y":2},
{"label":"3", "x":5.25, "y":2},
{"label":"4", "x":6.25, "y":2},
{"label":"5", "x":7.25, "y":2},
{"label":"6", "x":8.25, "y":2},
{"label":"7", "x":9.25, "y":2},
{"label":"8", "x":10.25, "y":2},
{"label":"9", "x":11.25, "y":2},
{"label":"0", "x":12.25, "y":2},
{"label":"MINUS", "x":13.25, "y":2},
{"label":"EQUAL", "x":14.25, "y":2},
{"label":"BACKSLASH", "x":15.25, "y":2},
{"label":"GRAVE", "x":16.25, "y":2},
{"label":"INSERT", "x":17.5, "y":2},
{"label":"HOME", "x":18.5, "y":2},
{"label":"PAGE UP", "x":19.5, "y":2},
{"label":"NUM LOCK", "x":20.75, "y":2},
{"label":"PSLASH", "x":21.75, "y":2},
{"label":"PASTERISK", "x":22.75, "y":2},
{"label":"PMINUS", "x":23.75, "y":2},
{"label":"MENU", "x":0, "y":3},
{"label":"UNDO", "x":1, "y":3},
{"label":"TAB", "x":2.25, "y":3, "w":1.5},
{"label":"Q", "x":3.75, "y":3},
{"label":"W", "x":4.75, "y":3},
{"label":"E", "x":5.75, "y":3},
{"label":"R", "x":6.75, "y":3},
{"label":"T", "x":7.75, "y":3},
{"label":"Y", "x":8.75, "y":3},
{"label":"U", "x":9.75, "y":3},
{"label":"I", "x":10.75, "y":3},
{"label":"O", "x":11.75, "y":3},
{"label":"P", "x":12.75, "y":3},
{"label":"LBRACKET", "x":13.75, "y":3},
{"label":"RBRACKET", "x":14.75, "y":3},
{"label":"BACKSPACE", "x":15.75, "y":3, "w":1.5},
{"label":"DELETE", "x":17.5, "y":3},
{"label":"END", "x":18.5, "y":3},
{"label":"PAGE DOWN", "x":19.5, "y":3},
{"label":"P7", "x":20.75, "y":3},
{"label":"P8", "x":21.75, "y":3},
{"label":"P9", "x":22.75, "y":3},
{"label":"PPLUS", "x":23.75, "y":3, "h":2},
{"label":"SELECT", "x":0, "y":4},
{"label":"COPY", "x":1, "y":4},
{"label":"LCTRL", "x":2.25, "y":4, "w":1.75},
{"label":"A", "x":4, "y":4},
{"label":"S", "x":5, "y":4},
{"label":"D", "x":6, "y":4},
{"label":"F", "x":7, "y":4},
{"label":"G", "x":8, "y":4},
{"label":"H", "x":9, "y":4},
{"label":"J", "x":10, "y":4},
{"label":"K", "x":11, "y":4},
{"label":"L", "x":12, "y":4},
{"label":"SEMICOLON", "x":13, "y":4},
{"label":"QUOTE", "x":14, "y":4},
{"label":"ENTER", "x":15, "y":4, "w":2.25},
{"label":"P4", "x":20.75, "y":4},
{"label":"P5", "x":21.75, "y":4},
{"label":"P6", "x":22.75, "y":4},
{"label":"EXECUTE", "x":0, "y":5},
{"label":"PASTE", "x":1, "y":5},
{"label":"LSHIFT", "x":2.25, "y":5, "w":2.25},
{"label":"Z", "x":4.5, "y":5},
{"label":"X", "x":5.5, "y":5},
{"label":"C", "x":6.5, "y":5},
{"label":"V", "x":7.5, "y":5},
{"label":"B", "x":8.5, "y":5},
{"label":"N", "x":9.5, "y":5},
{"label":"M", "x":10.5, "y":5},
{"label":"COMMA", "x":11.5, "y":5},
{"label":"PERIOD", "x":12.5, "y":5},
{"label":"SLASH", "x":13.5, "y":5},
{"label":"RSHIFT", "x":14.5, "y":5, "w":2.75},
{"label":"UP", "x":18.5, "y":5},
{"label":"P1", "x":20.75, "y":5},
{"label":"P2", "x":21.75, "y":5},
{"label":"P3", "x":22.75, "y":5},
{"label":"PENTER", "x":23.75, "y":5, "h":2},
{"label":"FIND", "x":0, "y":6},
{"label":"CUT", "x":1, "y":6},
{"label":"CAPS LOCK", "x":2.25, "y":6, "w":1.75},
{"label":"LALT", "x":4, "y":6},
{"label":"LGUI", "x":5, "y":6},
{"label":"SPACE", "x":6, "y":6, "w":8.25},
{"label":"RGUI", "x":14.25, "y":6},
{"label":"APP", "x":15.25, "y":6},
{"label":"RALT", "x":16.25, "y":6},
{"label":"LEFT", "x":17.5, "y":6},
{"label":"DOWN", "x":18.5, "y":6},
{"label":"RIGHT", "x":19.5, "y":6},
{"label":"P0", "x":20.75, "y":6, "w":2},
{"label":"PDOT", "x":22.75, "y":6}
]
},
"LAYOUT_ansi": {
"layout": [
{"label":"HELP", "x":0, "y":0, "w":2},
{"label":"ESC", "x":2.25, "y":0},
{"label":"F1", "x":4.25, "y":0},
{"label":"F2", "x":5.25, "y":0},
{"label":"F3", "x":6.25, "y":0},
{"label":"F4", "x":7.25, "y":0},
{"label":"F5", "x":8.75, "y":0},
{"label":"F6", "x":9.75, "y":0},
{"label":"F7", "x":10.75, "y":0},
{"label":"F8", "x":11.75, "y":0},
{"label":"F9", "x":13.25, "y":0},
{"label":"F10", "x":14.25, "y":0},
{"label":"F11", "x":15.25, "y":0},
{"label":"F12", "x":16.25, "y":0},
{"label":"PRINT SCREEN", "x":17.5, "y":0},
{"label":"SCROLL LOCK", "x":18.5, "y":0},
{"label":"PAUSE", "x":19.5, "y":0},
{"label":"MUTE", "x":20.75, "y":0},
{"label":"VOLD", "x":21.75, "y":0},
{"label":"VOLU", "x":22.75, "y":0},
{"label":"PWR", "x":23.75, "y":0},
{"label":"STOP", "x":0, "y":2},
{"label":"AGAIN", "x":1, "y":2},
{"label":"GRAVE", "x":2.25, "y":2},
{"label":"1", "x":3.25, "y":2},
{"label":"2", "x":4.25, "y":2},
{"label":"3", "x":5.25, "y":2},
{"label":"4", "x":6.25, "y":2},
{"label":"5", "x":7.25, "y":2},
{"label":"6", "x":8.25, "y":2},
{"label":"7", "x":9.25, "y":2},
{"label":"8", "x":10.25, "y":2},
{"label":"9", "x":11.25, "y":2},
{"label":"0", "x":12.25, "y":2},
{"label":"MINUS", "x":13.25, "y":2},
{"label":"EQUAL", "x":14.25, "y":2},
{"label":"BACKSPACE", "x":15.25, "y":2, "w":2},
{"label":"INSERT", "x":17.5, "y":2},
{"label":"HOME", "x":18.5, "y":2},
{"label":"PAGE UP", "x":19.5, "y":2},
{"label":"NUM LOCK", "x":20.75, "y":2},
{"label":"PSLASH", "x":21.75, "y":2},
{"label":"PASTERISK", "x":22.75, "y":2},
{"label":"PMINUS", "x":23.75, "y":2},
{"label":"MENU", "x":0, "y":3},
{"label":"UNDO", "x":1, "y":3},
{"label":"TAB", "x":2.25, "y":3, "w":1.5},
{"label":"Q", "x":3.75, "y":3},
{"label":"W", "x":4.75, "y":3},
{"label":"E", "x":5.75, "y":3},
{"label":"R", "x":6.75, "y":3},
{"label":"T", "x":7.75, "y":3},
{"label":"Y", "x":8.75, "y":3},
{"label":"U", "x":9.75, "y":3},
{"label":"I", "x":10.75, "y":3},
{"label":"O", "x":11.75, "y":3},
{"label":"P", "x":12.75, "y":3},
{"label":"LBRACKET", "x":13.75, "y":3},
{"label":"RBRACKET", "x":14.75, "y":3},
{"label":"BACKSLASH", "x":15.75, "y":3, "w":1.5},
{"label":"DELETE", "x":17.5, "y":3},
{"label":"END", "x":18.5, "y":3},
{"label":"PAGE DOWN", "x":19.5, "y":3},
{"label":"P7", "x":20.75, "y":3},
{"label":"P8", "x":21.75, "y":3},
{"label":"P9", "x":22.75, "y":3},
{"label":"PPLUS", "x":23.75, "y":3, "h":2},
{"label":"SELECT", "x":0, "y":4},
{"label":"COPY", "x":1, "y":4},
{"label":"CAPS LOCK", "x":2.25, "y":4, "w":1.75},
{"label":"A", "x":4, "y":4},
{"label":"S", "x":5, "y":4},
{"label":"D", "x":6, "y":4},
{"label":"F", "x":7, "y":4},
{"label":"G", "x":8, "y":4},
{"label":"H", "x":9, "y":4},
{"label":"J", "x":10, "y":4},
{"label":"K", "x":11, "y":4},
{"label":"L", "x":12, "y":4},
{"label":"SEMICOLON", "x":13, "y":4},
{"label":"QUOTE", "x":14, "y":4},
{"label":"ENTER", "x":15, "y":4, "w":2.25},
{"label":"P4", "x":20.75, "y":4},
{"label":"P5", "x":21.75, "y":4},
{"label":"P6", "x":22.75, "y":4},
{"label":"EXECUTE", "x":0, "y":5},
{"label":"PASTE", "x":1, "y":5},
{"label":"LSHIFT", "x":2.25, "y":5, "w":2.25},
{"label":"Z", "x":4.5, "y":5},
{"label":"X", "x":5.5, "y":5},
{"label":"C", "x":6.5, "y":5},
{"label":"V", "x":7.5, "y":5},
{"label":"B", "x":8.5, "y":5},
{"label":"N", "x":9.5, "y":5},
{"label":"M", "x":10.5, "y":5},
{"label":"COMMA", "x":11.5, "y":5},
{"label":"PERIOD", "x":12.5, "y":5},
{"label":"SLASH", "x":13.5, "y":5},
{"label":"RSHIFT", "x":14.5, "y":5, "w":2.75},
{"label":"UP", "x":18.5, "y":5},
{"label":"P1", "x":20.75, "y":5},
{"label":"P2", "x":21.75, "y":5},
{"label":"P3", "x":22.75, "y":5},
{"label":"PENTER", "x":23.75, "y":5, "h":2},
{"label":"FIND", "x":0, "y":6},
{"label":"CUT", "x":1, "y":6},
{"label":"LCTRL", "x":2.25, "y":6, "w":1.75},
{"label":"LALT", "x":4, "y":6},
{"label":"LGUI", "x":5, "y":6},
{"label":"SPACE", "x":6, "y":6, "w":8.25},
{"label":"RGUI", "x":14.25, "y":6},
{"label":"APP", "x":15.25, "y":6},
{"label":"RALT", "x":16.25, "y":6},
{"label":"LEFT", "x":17.5, "y":6},
{"label":"DOWN", "x":18.5, "y":6},
{"label":"RIGHT", "x":19.5, "y":6},
{"label":"P0", "x":20.75, "y":6, "w":2},
{"label":"PDOT", "x":22.75, "y":6}
]
}
}
}

View File

@@ -0,0 +1,229 @@
{
"keyboard_name": "IBM PC XT",
"keyboard_folder": "converter/xt_usb",
"url": "",
"maintainer": "qmk",
"width": 21,
"height": 5,
"layouts": {
"LAYOUT_xt": {
"layout": [
{"label":"F1", "x":0, "y":0},
{"label":"F2", "x":1, "y":0},
{"label":"Esc", "x":2.25, "y":0},
{"label":"1", "x":3.25, "y":0},
{"label":"2", "x":4.25, "y":0},
{"label":"3", "x":5.25, "y":0},
{"label":"4", "x":6.25, "y":0},
{"label":"5", "x":7.25, "y":0},
{"label":"6", "x":8.25, "y":0},
{"label":"7", "x":9.25, "y":0},
{"label":"8", "x":10.25, "y":0},
{"label":"9", "x":11.25, "y":0},
{"label":"0", "x":12.25, "y":0},
{"label":"-", "x":13.25, "y":0},
{"label":"=", "x":14.25, "y":0},
{"label":"Backspace", "x":15.25, "y":0, "w":1.75},
{"label":"Num Lock", "x":17, "y":0, "w":2},
{"label":"Scroll Lock", "x":19, "y":0, "w":2},
{"label":"F3", "x":0, "y":1},
{"label":"F4", "x":1, "y":1},
{"label":"Tab", "x":2.25, "y":1, "w":1.5},
{"label":"Q", "x":3.75, "y":1},
{"label":"W", "x":4.75, "y":1},
{"label":"E", "x":5.75, "y":1},
{"label":"R", "x":6.75, "y":1},
{"label":"T", "x":7.75, "y":1},
{"label":"Y", "x":8.75, "y":1},
{"label":"U", "x":9.75, "y":1},
{"label":"I", "x":10.75, "y":1},
{"label":"O", "x":11.75, "y":1},
{"label":"P", "x":12.75, "y":1},
{"label":"[", "x":13.75, "y":1},
{"label":"]", "x":14.75, "y":1},
{"label":"7", "x":17, "y":1},
{"label":"8", "x":18, "y":1},
{"label":"9", "x":19, "y":1},
{"label":"-", "x":20, "y":1},
{"label":"F5", "x":0, "y":2},
{"label":"F6", "x":1, "y":2},
{"label":"Ctrl", "x":2.25, "y":2, "w":1.75},
{"label":"A", "x":4, "y":2},
{"label":"S", "x":5, "y":2},
{"label":"D", "x":6, "y":2},
{"label":"F", "x":7, "y":2},
{"label":"G", "x":8, "y":2},
{"label":"H", "x":9, "y":2},
{"label":"J", "x":10, "y":2},
{"label":"K", "x":11, "y":2},
{"label":"L", "x":12, "y":2},
{"label":";", "x":13, "y":2},
{"label":"'", "x":14, "y":2},
{"label":"`", "x":15, "y":2},
{"label":"Enter", "x":16, "y":1, "h":2},
{"label":"4", "x":17, "y":2},
{"label":"5", "x":18, "y":2},
{"label":"6", "x":19, "y":2},
{"label":"F7", "x":0, "y":3},
{"label":"F8", "x":1, "y":3},
{"label":"Shift", "x":2.25, "y":3, "w":1.25},
{"label":"\\", "x":3.5, "y":3},
{"label":"Z", "x":4.5, "y":3},
{"label":"X", "x":5.5, "y":3},
{"label":"C", "x":6.5, "y":3},
{"label":"V", "x":7.5, "y":3},
{"label":"B", "x":8.5, "y":3},
{"label":"N", "x":9.5, "y":3},
{"label":"M", "x":10.5, "y":3},
{"label":",", "x":11.5, "y":3},
{"label":".", "x":12.5, "y":3},
{"label":"/", "x":13.5, "y":3},
{"label":"Shift", "x":14.5, "y":3, "w":1.5},
{"label":"Print Screen", "x":16, "y":3},
{"label":"1", "x":17, "y":3},
{"label":"2", "x":18, "y":3},
{"label":"3", "x":19, "y":3},
{"label":"+", "x":20, "y":2, "h":3},
{"label":"F9", "x":0, "y":4},
{"label":"F10", "x":1, "y":4},
{"label":"Alt", "x":2.25, "y":4, "w":2},
{"label":"Space", "x":4.25, "y":4, "w":9.75},
{"label":"Caps Lock", "x":14, "y":4, "w":2},
{"label":"0", "x":16, "y":4, "w":2},
{"label":".", "x":18, "y":4, "w":2}
]
},
"LAYOUT": {
"layout": [
{"label":"F13", "x":2, "y":0},
{"label":"F14", "x":3, "y":0},
{"label":"F15", "x":4, "y":0},
{"label":"F16", "x":5, "y":0},
{"label":"F17", "x":6, "y":0},
{"label":"F18", "x":7, "y":0},
{"label":"F19", "x":8, "y":0},
{"label":"F20", "x":9, "y":0},
{"label":"F21", "x":10, "y":0},
{"label":"F22", "x":11, "y":0},
{"label":"F23", "x":12, "y":0},
{"label":"F24", "x":13, "y":0},
{"label":"Esc", "x":0, "y":1},
{"label":"F1", "x":2, "y":1},
{"label":"F2", "x":3, "y":1},
{"label":"F3", "x":4, "y":1},
{"label":"F4", "x":5, "y":1},
{"label":"F5", "x":6, "y":1},
{"label":"F6", "x":7, "y":1},
{"label":"F7", "x":8, "y":1},
{"label":"F8", "x":9, "y":1},
{"label":"F9", "x":10, "y":1},
{"label":"F10", "x":11, "y":1},
{"label":"F11", "x":12, "y":1},
{"label":"F12", "x":13, "y":1},
{"label":"Print Screen", "x":15.25, "y":1},
{"label":"Scroll Lock", "x":16.25, "y":1},
{"label":"Pause", "x":17.25, "y":1},
{"label":"Volume Down", "x":19.5, "y":1},
{"label":"Volume Up", "x":20.5, "y":1},
{"label":"Mute", "x":21.5, "y":1},
{"label":"`", "x":0, "y":2.5},
{"label":"1", "x":1, "y":2.5},
{"label":"2", "x":2, "y":2.5},
{"label":"3", "x":3, "y":2.5},
{"label":"4", "x":4, "y":2.5},
{"label":"5", "x":5, "y":2.5},
{"label":"6", "x":6, "y":2.5},
{"label":"7", "x":7, "y":2.5},
{"label":"8", "x":8, "y":2.5},
{"label":"9", "x":9, "y":2.5},
{"label":"0", "x":10, "y":2.5},
{"label":"-", "x":11, "y":2.5},
{"label":"=", "x":12, "y":2.5},
{"label":"JP Yen", "x":13, "y":2.5},
{"label":"Back Space", "x":14, "y":2.5},
{"label":"Insert", "x":15.25, "y":2.5},
{"label":"Home", "x":16.25, "y":2.5},
{"label":"Page Up", "x":17.25, "y":2.5},
{"label":"Num Lock", "x":18.5, "y":2.5},
{"label":"KP/", "x":19.5, "y":2.5},
{"label":"KP*", "x":20.5, "y":2.5},
{"label":"KP-", "x":21.5, "y":2.5},
{"label":"Tab", "x":0, "y":3.5, "w":1.5},
{"label":"Q", "x":1.5, "y":3.5},
{"label":"W", "x":2.5, "y":3.5},
{"label":"E", "x":3.5, "y":3.5},
{"label":"R", "x":4.5, "y":3.5},
{"label":"T", "x":5.5, "y":3.5},
{"label":"Y", "x":6.5, "y":3.5},
{"label":"U", "x":7.5, "y":3.5},
{"label":"I", "x":8.5, "y":3.5},
{"label":"O", "x":9.5, "y":3.5},
{"label":"P", "x":10.5, "y":3.5},
{"label":"[", "x":11.5, "y":3.5},
{"label":"]", "x":12.5, "y":3.5},
{"label":"\\", "x":13.5, "y":3.5, "w":1.5},
{"label":"Delete", "x":15.25, "y":3.5},
{"label":"End", "x":16.25, "y":3.5},
{"label":"Page Down", "x":17.25, "y":3.5},
{"label":"KP 7", "x":18.5, "y":3.5},
{"label":"KP 8", "x":19.5, "y":3.5},
{"label":"KP 9", "x":20.5, "y":3.5},
{"label":"KP+", "x":21.5, "y":3.5},
{"label":"Caps Lock", "x":0, "y":4.5, "w":1.75},
{"label":"A", "x":1.75, "y":4.5},
{"label":"S", "x":2.75, "y":4.5},
{"label":"D", "x":3.75, "y":4.5},
{"label":"F", "x":4.75, "y":4.5},
{"label":"G", "x":5.75, "y":4.5},
{"label":"H", "x":6.75, "y":4.5},
{"label":"J", "x":7.75, "y":4.5},
{"label":"K", "x":8.75, "y":4.5},
{"label":"L", "x":9.75, "y":4.5},
{"label":";", "x":10.75, "y":4.5},
{"label":"'", "x":11.75, "y":4.5},
{"label":"ISO #", "x":12.75, "y":4.5},
{"label":"Enter", "x":13.75, "y":4.5, "w":1.25},
{"label":"KP 4", "x":18.5, "y":4.5},
{"label":"KP 5", "x":19.5, "y":4.5},
{"label":"KP 6", "x":20.5, "y":4.5},
{"label":"KP ,", "x":21.5, "y":4.5},
{"label":"Shift", "x":0, "y":5.5, "w":1.25},
{"label":"ISO \\", "x":1.25, "y":5.5},
{"label":"Z", "x":2.25, "y":5.5},
{"label":"X", "x":3.25, "y":5.5},
{"label":"C", "x":4.25, "y":5.5},
{"label":"V", "x":5.25, "y":5.5},
{"label":"B", "x":6.25, "y":5.5},
{"label":"N", "x":7.25, "y":5.5},
{"label":"M", "x":8.25, "y":5.5},
{"label":",", "x":9.25, "y":5.5},
{"label":".", "x":10.25, "y":5.5},
{"label":"/", "x":11.25, "y":5.5},
{"label":"JP RO", "x":12.25, "y":5.5},
{"label":"Shift", "x":13.25, "y":5.5, "w":1.75},
{"label":"Up", "x":16.25, "y":5.5},
{"label":"KP 1", "x":18.5, "y":5.5},
{"label":"KP 2", "x":19.5, "y":5.5},
{"label":"KP 3", "x":20.5, "y":5.5},
{"label":"KP Enter", "x":21.5, "y":5.5},
{"label":"Ctrl", "x":0, "y":6.5, "w":1.25},
{"label":"GUI", "x":1.25, "y":6.5, "w":1.25},
{"label":"Alt", "x":2.5, "y":6.5, "w":1.25},
{"label":"Muhenkan", "x":3.75, "y":6.5, "w":1.25},
{"label":"Space", "x":5, "y":6.5, "w":3.25},
{"label":"Henkan", "x":8.25, "y":6.5, "w":1.25},
{"label":"Kana", "x":9.5, "y":6.5, "w":1.25},
{"label":"Alt", "x":10.75, "y":6.5},
{"label":"GUI", "x":11.75, "y":6.5},
{"label":"Menu", "x":12.75, "y":6.5},
{"label":"Ctrl", "x":13.75, "y":6.5, "w":1.25},
{"label":"Left", "x":15.25, "y":6.5},
{"label":"Down", "x":16.25, "y":6.5},
{"label":"Right", "x":17.25, "y":6.5},
{"label":"KP 0", "x":18.5, "y":6.5, "w":2},
{"label":"KP .", "x":20.5, "y":6.5},
{"label":"KP =", "x":21.5, "y":6.5}
]
}
}
}

View File

@@ -1,16 +1,67 @@
{
"keyboard_name": "",
"url": "",
"maintainer": "qmk",
"width": 4,
"height": 6,
"layouts": {
"LAYOUT_numpad_6x4": {
"layout": [{"label":"Esc", "x":0, "y":0}, {"label":"Tab", "x":1, "y":0}, {"label":"Fn", "x":2, "y":0}, {"label":"Back", "x":3, "y":0}, {"label":"Num Lock", "x":0, "y":1}, {"label":"/", "x":1, "y":1}, {"label":"*", "x":2, "y":1}, {"label":"-", "x":3, "y":1}, {"label":"7", "x":0, "y":2}, {"label":"8", "x":1, "y":2}, {"label":"9", "x":2, "y":2}, {"label":"+", "x":3, "y":2, "h":2}, {"label":"4", "x":0, "y":3}, {"label":"5", "x":1, "y":3}, {"label":"6", "x":2, "y":3}, {"label":"1", "x":0, "y":4}, {"label":"2", "x":1, "y":4}, {"label":"3", "x":2, "y":4}, {"label":"Enter", "x":3, "y":4, "h":2}, {"label":"0", "x":0, "y":5, "w":2}, {"label":".", "x":2, "y":5}]
},
"keyboard_name": "Cospad",
"keyboard_folder": "cospad",
"url": "",
"maintainer": "qmk",
"width": 4,
"height": 6,
"layouts": {
"LAYOUT_numpad_6x4": {
"layout": [
{"label":"Esc", "x":0, "y":0},
{"label":"Tab", "x":1, "y":0},
{"label":"Fn", "x":2, "y":0},
{"label":"Back", "x":3, "y":0},
{"label":"Num Lock", "x":0, "y":1},
{"label":"/", "x":1, "y":1},
{"label":"*", "x":2, "y":1},
{"label":"-", "x":3, "y":1},
{"label":"7", "x":0, "y":2},
{"label":"8", "x":1, "y":2},
{"label":"9", "x":2, "y":2},
{"label":"4", "x":0, "y":3},
{"label":"5", "x":1, "y":3},
{"label":"6", "x":2, "y":3},
{"label":"+", "x":3, "y":2, "h":2},
{"label":"1", "x":0, "y":4},
{"label":"2", "x":1, "y":4},
{"label":"3", "x":2, "y":4},
{"label":"0", "x":0, "y":5, "w":2},
{"label":".", "x":2, "y":5},
{"label":"Enter", "x":3, "y":4, "h":2}
]
},
"LAYOUT_ortho_6x4": {
"layout": [{"label":"Esc", "x":0, "y":0}, {"label":"Tab", "x":1, "y":0}, {"label":"Fn", "x":2, "y":0}, {"label":"Back", "x":3, "y":0}, {"label":"Num Lock", "x":0, "y":1}, {"label":"/", "x":1, "y":1}, {"label":"*", "x":2, "y":1}, {"label":"-", "x":3, "y":1}, {"label":"7", "x":0, "y":2}, {"label":"8", "x":1, "y":2}, {"label":"9", "x":2, "y":2}, {"label":"+", "x":3, "y":2}, {"label":"4", "x":0, "y":3}, {"label":"5", "x":1, "y":3}, {"label":"6", "x":2, "y":3}, {"x":3, "y":3}, {"label":"1", "x":0, "y":4}, {"label":"2", "x":1, "y":4}, {"label":"3", "x":2, "y":4}, {"label":"Enter", "x":3, "y":4}, {"label":"0", "x":0, "y":5}, {"x":1, "y":5}, {"label":".", "x":2, "y":5}, {"x":3, "y":5}]
}
"LAYOUT_gamepad_6x4": {
"layout": [
{"label":"k00", "x":5, "y":0},
{"label":"k01", "x":5, "y":1},
{"label":"k02", "x":5, "y":2},
{"label":"k03", "x":5, "y":3},
{"label":"k10", "x":4, "y":0},
{"label":"k11", "x":4, "y":1},
{"label":"k12", "x":4, "y":2},
{"label":"k13", "x":4, "y":3},
{"label":"k20", "x":3, "y":0},
{"label":"k21", "x":3, "y":1},
{"label":"k22", "x":3, "y":2},
{"label":"k30", "x":2, "y":0},
{"label":"k31", "x":2, "y":1},
{"label":"k32", "x":2, "y":2},
{"label":"k23", "x":2, "y":3, "w":2},
{"label":"k40", "x":1, "y":0},
{"label":"k41", "x":1, "y":1},
{"label":"k42", "x":1, "y":2},
{"label":"k43", "x":1, "y":3},
{"label":"k50", "x":0, "y":0},
{"label":"k51", "x":0, "y":1},
{"label":"k52", "x":0, "y":2},
{"label":"k53", "x":0, "y":3}
]
},
"LAYOUT_ortho_6x4": {
"layout": [{"label":"Esc", "x":0, "y":0}, {"label":"Tab", "x":1, "y":0}, {"label":"Fn", "x":2, "y":0}, {"label":"Back", "x":3, "y":0}, {"label":"Num Lock", "x":0, "y":1}, {"label":"/", "x":1, "y":1}, {"label":"*", "x":2, "y":1}, {"label":"-", "x":3, "y":1}, {"label":"7", "x":0, "y":2}, {"label":"8", "x":1, "y":2}, {"label":"9", "x":2, "y":2}, {"label":"+", "x":3, "y":2}, {"label":"4", "x":0, "y":3}, {"label":"5", "x":1, "y":3}, {"label":"6", "x":2, "y":3}, {"x":3, "y":3}, {"label":"1", "x":0, "y":4}, {"label":"2", "x":1, "y":4}, {"label":"3", "x":2, "y":4}, {"label":"Enter", "x":3, "y":4}, {"label":"0", "x":0, "y":5}, {"x":1, "y":5}, {"label":".", "x":2, "y":5}, {"x":3, "y":5}]
}
}
}
}

View File

@@ -4,8 +4,8 @@ COSPAD
A DIY Keypad Kit sold by KPRepublic, runs TKG natively.
Keyboard Maintainer: QMK Community
Hardware Supported: COSPAD
Hardware Availability: https://aliexpress.com/item/cospad-Custom-Mechanical-Keyboard-Kit-up-tp-24-keys-Supports-TKG-TOOLS-Underglow-RGB-PCB-20/32818383873.html
Hardware Supported: COSPAD
Hardware Availability: [KPrepublic on Aliexpress](https://aliexpress.com/item/cospad-Custom-Mechanical-Keyboard-Kit-up-tp-24-keys-Supports-TKG-TOOLS-Underglow-RGB-PCB-20/32818383873.html)
Only supports on and off for the backlight leds, as they are not connected to a PWM pin.
@@ -18,4 +18,4 @@ Make example for this keyboard (after setting up your build environment):
make cospad:default
See [build environment setup](https://docs.qmk.fm/build_environment_setup.html) then the [make instructions](https://docs.qmk.fm/make_instructions.html) for more information.
See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).

View File

@@ -0,0 +1,196 @@
// this is the style you want to emulate.
// This is the canonical layout file for the Quantum project. If you want to add another keyboard,
#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.
#define _QWERTY 0
#define _LOWER 1
#define _RAISE 2
#define _MOUSE 8
#define _ADJUST 16
enum dichotomy_keycodes
{
QWERTY = SAFE_RANGE,
LOWER,
RAISE,
ADJUST,
MOUKEY,
MS_BTN1,
MS_BTN2,
MS_BTN3
};
#define RED_BRIGHTNESS 3
#define GREEN_BRIGHTNESS 2
#define BLUE_BRIGHTNESS 2
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_QWERTY] = LAYOUT( /* Base layout, nearly qwerty but with modifications because it's not a full keyboard. Obviously. */
KC_ESCAPE, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_ENT,
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, MOUKEY,
KC_LCTL, KC_LALT, MOUKEY, KC_RGUI, KC_RALT, KC_RCTL,
MS_BTN3, SFT_T(KC_ESCAPE), KC_LGUI, KC_BSPC, KC_SPC, RAISE, LOWER, MS_BTN3
),
[_RAISE] = LAYOUT( /* Shifted layout, small changes (because angle brackets have been moved to thumb cluster buttons) */
_______, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, _______,
_______, _______, KC_VOLD, KC_VOLU, KC_MPLY, KC_MFFD, KC_MUTE, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, _______,
_______, _______, _______, _______, _______, KC_MRWD, _______, _______, _______, KC_BSLS, KC_QUOT, _______,
_______, _______, _______, _______, _______, _______,
_______, _______, KC_LABK, _______, _______, KC_RABK, _______, _______
),
[_LOWER] = LAYOUT( /* Number layout, basically the main function layer */
_______, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, _______,
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, _______,
_______, KC_TILD, KC_GRV, KC_F13, KC_F14, KC_F15, KC_F16, KC_F7, KC_F8, KC_F9, KC_F10, _______,
_______, _______, _______, _______, _______, _______,
_______, RAISE, _______, _______, _______, _______, _______, _______
),
[_ADJUST] = LAYOUT( /* Shifted number/function layout, for per-key control. Only active when shift is held, and number is toggled or held */
_______, _______, _______, _______, _______, _______, _______, _______, KC_UP, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______
),
[_MOUSE] = LAYOUT( /* Mouse layer, including buttons for clicking. */
_______, _______, _______, _______, _______, _______, KC_VOLU, KC_HOME, KC_PGUP, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, MS_BTN1, MS_BTN2, _______, _______, _______,
_______, _______, _______, _______, _______, _______, KC_VOLD, KC_END, KC_PGDN, _______, _______, _______,
_______, _______, _______, _______, KC_UP, _______,
_______, _______, _______, _______, KC_LEFT, KC_DOWN, KC_RGHT, _______
)
}; // end keymaps block
static bool shift_held = false;
static bool shift_suspended = false;
report_mouse_t currentReport = {};
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
switch (keycode) {
case QWERTY:
if (record->event.pressed) {
set_single_persistent_default_layer(_QWERTY);
}
return false;
break;
case LOWER:
if (record->event.pressed) {
layer_on(_LOWER);
grn_led_on();
update_tri_layer(_LOWER, _RAISE, _ADJUST);
} else {
layer_off(_LOWER);
grn_led_off();
update_tri_layer(_LOWER, _RAISE, _ADJUST);
}
return false;
break;
//SHIFT is handled as LSHIFT in the general case - 'toggle' shoudl activate caps, while the layer is only active when shift is held.
case RAISE:
if (record->event.pressed) {
layer_on(_RAISE);
red_led_on();
update_tri_layer(_LOWER, _RAISE, _ADJUST);
} else {
layer_off(_RAISE);
red_led_off();
update_tri_layer(_LOWER, _RAISE, _ADJUST);
}
return false;
break;
case ADJUST:
if (record->event.pressed) {
layer_on(_ADJUST);
} else {
layer_off(_ADJUST);
}
return false;
break;
//MOUSE layer needs to be handled the same way as NUMKEY, but differently from shift
case MOUKEY:
if (record->event.pressed) {
layer_on(_MOUSE);
blu_led_on();
update_tri_layer(_LOWER, _RAISE, _ADJUST);
} else {
layer_off(_MOUSE);
blu_led_off();
update_tri_layer(_LOWER, _RAISE, _ADJUST);
}
return false;
break;
//mouse buttons, for 1-3, to update the mouse report:
case MS_BTN1:
currentReport = pointing_device_get_report();
if (record->event.pressed) {
if (shift_held && shift_suspended){
register_code(KC_LSFT);
shift_suspended = false;
}
//update mouse report here
currentReport.buttons |= MOUSE_BTN1; //MOUSE_BTN1 is a const defined in report.h
} else {
//update mouse report here
currentReport.buttons &= ~MOUSE_BTN1;
}
pointing_device_set_report(currentReport);
return false;
break;
case MS_BTN2:
currentReport = pointing_device_get_report();
if (record->event.pressed) {
if (shift_held && shift_suspended){
register_code(KC_LSFT);
shift_suspended = false;
}
//update mouse report here
currentReport.buttons |= MOUSE_BTN2; //MOUSE_BTN2 is a const defined in report.h
} else {
//update mouse report here
currentReport.buttons &= ~MOUSE_BTN2;
}
pointing_device_set_report(currentReport);
return false;
break;
case MS_BTN3:
currentReport = pointing_device_get_report();
if (record->event.pressed) {
if (shift_held && shift_suspended){
register_code(KC_LSFT);
shift_suspended = false;
}
//update mouse report here
currentReport.buttons |= MOUSE_BTN3; //MOUSE_BTN3 is a const defined in report.h
} else {
//update mouse report here
currentReport.buttons &= ~MOUSE_BTN3;
}
pointing_device_set_report(currentReport);
return false;
break;
//Additionally, if NS_ keys are in use, then shift may be held (but is
//disabled for the unshifted keycodes to be send. Check the bool and
//register shift as necessary.
// default:
// if (shift_held){
// register_code(KC_LSFT);
// }
// break;
}
return true;
};

View File

@@ -57,6 +57,9 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
#define DEBOUNCING_DELAY 5
/* serial.c configuration for split keyboard */
#define SOFT_SERIAL_PIN D0
/* define if matrix has ghost (lacks anti-ghosting diodes) */
//#define MATRIX_HAS_GHOST

View File

@@ -59,6 +59,9 @@
/* Locking resynchronize hack */
#define LOCKING_RESYNC_ENABLE
/* serial.c configuration for split keyboard */
#define SOFT_SERIAL_PIN D0
/*
* Magic Key Options
*

View File

@@ -0,0 +1,11 @@
# **DREWSKY'S DZ60 ANSI Layout**
![Imgur](https://i.imgur.com/v4zVbl7.jpg)
Layer 1 is default configuration, for the exception of the Space cadet shifts. Layer 2 is for WASD arrows and Media, which I have included both PREV and NEXT for Windows and macOS. Layer 3 is for RGB underglow. Legends in picture follow Layers. Modifier one is momentary, and the RGB layer is TT (TAP_TOGGLE)
Make example for this keyboard (after setting up your build environment):
make dz60:drewsky
See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).

View File

@@ -0,0 +1,34 @@
#include QMK_KEYBOARD_H
// Helpful defines
#define _L0 0
#define _L1 1
#define _L2 2
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_L0] = LAYOUT_60_ansi(
KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC,
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS,
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
KC_LSPO, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSPC,
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, TT(2), KC_RALT, MO(1), KC_RCTL),
[_L1] = LAYOUT_60_ansi(
KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL,
KC_NO, KC_NO, KC_UP, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_PGUP,
KC_NO, KC_LEFT, KC_DOWN, KC_RGHT, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_PGDN,
KC_NO, KC_MRWD, KC_MFFD, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
KC_MSTP, KC_VOLD, KC_VOLU, KC_MPLY, KC__VOLDOWN, KC__VOLUP, KC_TRNS, KC_NO),
[_L2] = LAYOUT_60_ansi(
KC_ESC, RGB_M_P, RGB_M_B, RGB_M_R, RGB_M_SW, RGB_M_SN, RGB_M_K, RGB_M_X, RGB_M_G, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
KC_NO, RGB_HUD, RGB_HUI, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
KC_NO, RGB_SAD, RGB_SAI, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
KC_NO, RGB_VAD, RGB_VAI, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, RGB_SPD, RGB_SPI, KC_NO,
KC_NO, KC_NO, KC_NO, RGB_TOG, KC_TRNS, KC_NO, KC_NO, DEBUG)
};

View File

@@ -5,7 +5,7 @@
"width": 15,
"height": 4,
"layouts": {
"LAYOUT_ortho_4x14": {
"LAYOUT": {
"key_count": 56,
"layout": [{"label":"L00", "x":0, "y":0}, {"label":"L01", "x":1, "y":0}, {"label":"L02", "x":2, "y":0}, {"label":"L03", "x":3, "y":0}, {"label":"L04", "x":4, "y":0}, {"label":"L05", "x":5, "y":0}, {"label":"L06", "x":6, "y":0}, {"label":"R00", "x":8, "y":0}, {"label":"R01", "x":9, "y":0}, {"label":"R02", "x":10, "y":0}, {"label":"R03", "x":11, "y":0}, {"label":"R04", "x":12, "y":0}, {"label":"R05", "x":13, "y":0}, {"label":"R06", "x":14, "y":0}, {"label":"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":"L16", "x":6, "y":1}, {"label":"R10", "x":8, "y":1}, {"label":"R11", "x":9, "y":1}, {"label":"R12", "x":10, "y":1}, {"label":"R13", "x":11, "y":1}, {"label":"R14", "x":12, "y":1}, {"label":"R15", "x":13, "y":1}, {"label":"R16", "x":14, "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":"L26", "x":6, "y":2}, {"label":"R20", "x":8, "y":2}, {"label":"R21", "x":9, "y":2}, {"label":"R22", "x":10, "y":2}, {"label":"R23", "x":11, "y":2}, {"label":"R24", "x":12, "y":2}, {"label":"R25", "x":13, "y":2}, {"label":"R26", "x":14, "y":2}, {"label":"L30", "x":0, "y":3}, {"label":"L31", "x":1, "y":3}, {"label":"L32", "x":2, "y":3}, {"label":"L33", "x":3, "y":3}, {"label":"L34", "x":4, "y":3}, {"label":"L35", "x":5, "y":3}, {"label":"L36", "x":6, "y":3}, {"label":"R30", "x":8, "y":3}, {"label":"R31", "x":9, "y":3}, {"label":"R32", "x":10, "y":3}, {"label":"R33", "x":11, "y":3}, {"label":"R34", "x":12, "y":3}, {"label":"R35", "x":13, "y":3}, {"label":"R36", "x":14, "y":3}]
}

View File

@@ -2,18 +2,85 @@
"keyboard_name": "Ergoinu",
"url": "",
"maintainer": "hsgw",
"width": 17,
"height": 6.75,
"width": 18,
"height": 5.4,
"layouts": {
"LAYOUT": {
"key_count": 64,
"layout": [
{"x": 0, "y": 0.6}, {"x": 1, "y": 0.4}, {"x": 2, "y": 0.4}, {"x": 3, "y": 0.25}, {"x": 4, "y": 0}, {"x": 5, "y": 0.25}, {"x": 6, "y": 0.4}, {"x": 10, "y": 0.4}, {"x": 11, "y": 0.25}, {"x": 12, "y": 0}, {"x": 13, "y": 0.25}, {"x": 14, "y": 0.4}, {"x": 15, "y": 0.4}, {"x": 16, "y": 0.6},
{"x": 0, "y": 1.6}, {"x": 1, "y": 1.4}, {"x": 2, "y": 1.4}, {"x": 3, "y": 1.25}, {"x": 4, "y": 1}, {"x": 5, "y": 1.25}, {"x": 6, "y": 1.4}, {"x": 10, "y": 1.4}, {"x": 11, "y": 1.25}, {"x": 12, "y": 1}, {"x": 13, "y": 1.25}, {"x": 14, "y": 1.4}, {"x": 15, "y": 1.4}, {"x": 16, "y": 1.6},
{"x": 0.25, "y": 2.6, "W":1.75}, {"x": 2, "y": 2.4}, {"x": 3, "y": 2.25}, {"x": 4, "y": 2}, {"x": 5, "y": 2.25}, {"x": 6, "y": 2.4}, {"x": 10, "y": 2.4}, {"x": 11, "y": 2.25}, {"x": 12, "y": 2}, {"x": 13, "y": 2.25}, {"x": 14, "y": 2.4}, {"x": 15, "y": 2.4}, {"x": 16, "y": 2.6},
{"x": 0.25, "y": 3.6, "W":1.75}, {"x": 2, "y": 3.4}, {"x": 3, "y": 3.25}, {"x": 4, "y": 3}, {"x": 5, "y": 3.25}, {"x": 6, "y": 3.4}, {"x": 10, "y": 3.4}, {"x": 11, "y": 3.25}, {"x": 12, "y": 3}, {"x": 13, "y": 3.25}, {"x": 14, "y": 3.4}, {"x": 15, "y": 3.4}, {"x": 16, "y": 3.6},
{"x": 3, "y": 4.25}, {"x": 4, "y": 4}, {"x": 5, "y": 4.25}, {"x": 6, "y": 4.4}, {"X":7.5, "Y":4.4, "H":1.25,"R":30, "RX":6, "RY":4.4},
{"X":8.25, "Y":4.4, "H":1.25,"R":-30, "RX":11, "RY":4.4}, {"x": 10, "y": 4.4}, {"x": 11, "y": 4.25}, {"x": 12, "y": 4}, {"x": 13, "y": 4.4}
{ "x": 0, "y": 0.6, "label": "ESC" },
{ "x": 1, "y": 0.4, "label": "1" },
{ "x": 2, "y": 0.4, "label": "2" },
{ "x": 3, "y": 0.25, "label": "3" },
{ "x": 4, "y": 0, "label": "4" },
{ "x": 5, "y": 0.25, "label": "5" },
{ "x": 6, "y": 0.4, "label": "6" },
{ "x": 11, "y": 0.4, "label": "7" },
{ "x": 12, "y": 0.25, "label": "8" },
{ "x": 13, "y": 0, "label": "9" },
{ "x": 14, "y": 0.25, "label": "0" },
{ "x": 15, "y": 0.4, "label": "MINUS" },
{ "x": 16, "y": 0.4, "label": "EQUAL" },
{ "x": 17, "y": 0.6, "label": "BACKSLASH" },
{ "x": 0, "y": 1.6, "label": "DELETE" },
{ "x": 1, "y": 1.4, "label": "TAB" },
{ "x": 2, "y": 1.4, "label": "Q" },
{ "x": 3, "y": 1.25, "label": "W" },
{ "x": 4, "y": 1, "label": "E" },
{ "x": 5, "y": 1.25, "label": "R" },
{ "x": 6, "y": 1.4, "label": "T" },
{ "x": 11, "y": 1.4, "label": "Y" },
{ "x": 12, "y": 1.25, "label": "U" },
{ "x": 13, "y": 1, "label": "I" },
{ "x": 14, "y": 1.25, "label": "O" },
{ "x": 15, "y": 1.4, "label": "P" },
{ "x": 16, "y": 1.4, "label": "LBRACKET" },
{ "x": 17, "y": 1.6, "label": "RBRACKET" },
{ "x": 0.25, "y": 2.6, "w": 1.75, "label": "LCTRL" },
{ "x": 2, "y": 2.4, "label": "A" },
{ "x": 3, "y": 2.25, "label": "S" },
{ "x": 4, "y": 2, "label": "D" },
{ "x": 5, "y": 2.25, "label": "F" },
{ "x": 6, "y": 2.4, "label": "G" },
{ "x": 11, "y": 2.4, "label": "H" },
{ "x": 12, "y": 2.25, "label": "J" },
{ "x": 13, "y": 2, "label": "K" },
{ "x": 14, "y": 2.25, "label": "L" },
{ "x": 15, "y": 2.4, "label": "SEMICOLON" },
{ "x": 16, "y": 2.4, "label": "QUOTE" },
{ "x": 17, "y": 2.6, "label": "GRAVE" },
{ "x": 0.25, "y": 3.6, "w": 1.75, "label": "LSHIFT" },
{ "x": 2, "y": 3.4, "label": "Z" },
{ "x": 3, "y": 3.25, "label": "X" },
{ "x": 4, "y": 3, "label": "C" },
{ "x": 5, "y": 3.25, "label": "V" },
{ "x": 6, "y": 3.4, "label": "B" },
{ "x": 11, "y": 3.4, "label": "N" },
{ "x": 12, "y": 3.25, "label": "M" },
{ "x": 13, "y": 3, "label": "COMMA" },
{ "x": 14, "y": 3.25, "label": "DOT" },
{ "x": 15, "y": 3.4, "label": "SLASH" },
{ "x": 16, "y": 3.4, "label": "RSHIFT" },
{ "x": 17, "y": 3.6, "label": "RSHIFT" },
{ "x": 3, "y": 4.25, "label": "MO(META)" },
{ "x": 4, "y": 4, "label": "LALT" },
{ "x": 5, "y": 4.25, "label": "LGUI" },
{ "x": 6, "y": 4.4, "label": "ENT" },
{ "x": 7, "y": 4.4, "w": 1.5, "label": "SPACE" },
{ "x": 9.5, "y": 4.4, "w": 1.5, "label": "ENTER" },
{ "x": 11, "y": 4.4, "label": "BACKSPACE" },
{ "x": 12, "y": 4.25, "label": "RGUI" },
{ "x": 13, "y": 4, "label": "RALT" },
{ "x": 14, "y": 4.25, "label": "MO(META)" }
]
}
}

View File

@@ -0,0 +1,38 @@
/*
Copyright 2017 Pierre Constantineau <jpconstantineau@gmail.com>
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#pragma once
/* Use I2C or Serial, not both */
#define USE_SERIAL
// #define USE_I2C
/* Select hand configuration */
#define MASTER_LEFT
// #define MASTER_RIGHT
// #define EE_HANDS
#undef RGBLED_NUM
#define RGBLIGHT_ANIMATIONS
#define RGBLED_NUM 12
#define RGBLIGHT_HUE_STEP 8
#define RGBLIGHT_SAT_STEP 8
#define RGBLIGHT_VAL_STEP 8

View File

@@ -0,0 +1,108 @@
#include QMK_KEYBOARD_H
extern keymap_config_t keymap_config;
#define _QWERTY 0
#define _LOWER 1
#define _RAISE 2
#define _ADJUST 16
enum custom_keycodes {
QWERTY = SAFE_RANGE,
LOWER,
RAISE,
ADJUST,
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_QWERTY] = LAYOUT(
//,---------------------+--------+--------+--------+--------+--------+--------. ,--------+--------+--------+--------+--------+--------+--------.
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_LBRC, KC_RBRC, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_MINUS,
//|---------------------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
MT(MOD_LCTL, KC_ESC), KC_A, KC_S, KC_D, KC_F, KC_G, KC_LCBR, KC_RCBR, 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_NO, KC_NO, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT,
//|---------------------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
ADJUST, ADJUST, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_BSPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT
//`---------------------+--------+--------+--------+--------+--------+--------/ \--------+--------+--------+--------+--------+--------+--------'
),
[_LOWER] = LAYOUT(
//,--------+--------+--------+--------+--------+--------+--------. ,--------+--------+--------+--------+--------+--------+--------.
KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, _______, _______, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC,
//|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, _______, _______, KC_Y, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE,
//|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
KC_CAPS, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, _______, _______, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT,
//|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
_______, _______, _______, _______, _______, _______, _______, RAISE, _______, _______, _______, _______
//`--------+--------+--------+--------+--------+--------+--------/ \--------+--------+--------+--------+--------+--------+--------'
),
[_RAISE] = LAYOUT(
//,--------+--------+--------+--------+--------+--------+--------. ,--------+--------+--------+--------+--------+--------+--------.
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, _______, _______, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL,
//|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
_______, KC_Q, KC_W, KC_E, KC_R, KC_T, _______, _______, KC_Y, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS,
//|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
_______, KC_Z, KC_X, KC_C, KC_V, KC_B, _______, _______, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT,
//|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
_______, _______, _______, _______, _______, _______, _______, RAISE, _______, _______, _______, _______
//`--------+--------+--------+--------+--------+--------+--------/ \--------+--------+--------+--------+--------+--------+--------'
),
[_ADJUST] = LAYOUT(
//,--------+--------+--------+--------+--------+--------+--------. ,--------+--------+--------+--------+--------+--------+--------.
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, RESET,
//|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
//|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
//|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
_______, _______, _______, _______, _______, _______, _______, RAISE, _______, _______, _______, _______
//`--------+--------+--------+--------+--------+--------+--------/ \--------+--------+--------+--------+--------+--------+--------'
)
};
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
switch (keycode) {
case LOWER:
if (record->event.pressed) {
layer_on(_LOWER);
update_tri_layer(_LOWER, _RAISE, _ADJUST);
} else {
layer_off(_LOWER);
update_tri_layer(_LOWER, _RAISE, _ADJUST);
}
return false;
break;
case RAISE:
if (record->event.pressed) {
layer_on(_RAISE);
update_tri_layer(_LOWER, _RAISE, _ADJUST);
} else {
layer_off(_RAISE);
update_tri_layer(_LOWER, _RAISE, _ADJUST);
}
return false;
break;
case ADJUST:
if (record->event.pressed) {
layer_on(_ADJUST);
} else {
layer_off(_ADJUST);
}
return false;
break;
}
return true;
}

View File

@@ -0,0 +1 @@
BOOTLOADER = qmk-dfu

View File

@@ -56,6 +56,9 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \
)
/* serial.c configuration for split keyboard */
#define SOFT_SERIAL_PIN D0
#define BACKLIGHT_PIN B5
#define BACKLIGHT_LEVELS 5

View File

@@ -15,77 +15,130 @@
*/
#ifndef ESPECTRO_H
#define ESPECTRO_H
#pragma once
#include "quantum.h"
//Arrow keys and 1.75u shift
/*
* Placement of every possible switch defined below.
* x2 means the diode allows two possible positions for the switch
*
* Layout:
* ┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┐
* │K00 │K01 │K02 │K03 │K04 │K60 │K61 │K62 │K63 │K05 │K06 │K07 │K08 │K72 │K09 │K0A │K0B │K0C │K7C │
* │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
* ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
* │K10 │K11 │K12 │K13 │K14 │K64 │K65 │K66 │K67 │K15 │K16 │K17 │K18 │K70 │K71 │K19 │K1A │K1B │K1C │
* │ │ │ │ │ │ │ │ │ │ │ │ │ │ │x2 │ │ │ │ │
* ├─────┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴─────┼─────┼─────┼─────┼─────┤ ┌────────┐
* │K20 │K21 │K22 │K23 │K24 │K68 │K69 │K6A │K6B │K25 │K26 │K27 │K28 │K73 │K29 │K2A │K2B │K2C │ │K38 │
* │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
* ├────────┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴────────┼─────┼─────┼─────┼─────┤ ┌───┴─┐ │
* │K30 │K31 │K32 │K33 │K34 │K6C │K75 │K76 │K77 │K35 │K36 │K37 │K38 │K39 │K3A │K3B │K3C │ │K73 │ │
* │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
* ├───────┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──────┬─────┼─────┼─────┼─────┼─────┤ └─────┴──────┘
* │K40x2 │K41 │K42 │K43 │K44 │K78 │K79 │K7A │K7B │K45 │K46 │K47 │K48 │K74 │K49 │K4A │K4B │K4C │
* │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
* ├───────┼─────┴─┬───┴───┬─┴─────┴─────┴─────┴─────┴─────┴───┬─┴───┬─┴───┬─┴───┬─────┼─────┼─────┼─────┼─────┼─────┤
* │K50 │K51 │K52 │K59 │K55 │K56 │K57 │K58 │K53 │K54 │K5A │K5B │K5C │
* │x2 │x2 │ │x3 │x3 │x2 │x2 │x2 │x2 │ │x2 │ │ │
* └───────┴───────┴───────┴───────────────────────────────────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┘
*
* Variants:
* - 2u Backspace: Delete K70 Use K71
* - 2u Num +: Delete K3C Use K2C
* - 2u Num Enter: Delete K5C Use K4C
* - ANSI Left Shift: Delete K41 Use K40
*
* ANSI Backslash and ISO Hash are the same position
* ANSI Enter and ISO Enter are the same position
* For two 1.5u modifiers on the right of the Spacebar, delete K56 and use K55 and K57
*
* Matrix:
* { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C }, \
* { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C }, \
* { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C }, \
* { 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, K4C }, \
* { K50, K51, K52, K53, K54, K55, K56, K57, K58, K59, K5A, K5B, K5C }, \
* { K60, K61, K62, K63, K64, K65, K66, K67, K68, K69, K6A, K6B, K6C }, \
* { K70, K71, K72, K73, K74, K75, K76, K77, K78, K79, K7A, K7B, K7C } \
*/
/* LAYOUT_all (Identical to LAYOUT_split_shift_and_bs)
* Every matrix position
* ,---------------------------------------------------------------------------.
* | 00| 01| 02| 03| 04| 60| 61| 62| 63| 05| 06| 07| 08| 72| 09| 0A| 0B| 0C| 7C|
* |---------------------------------------------------------------------------|
* | 10| 11| 12| 13| 14| 64| 65| 66| 67| 15| 16| 17| 18| 70| 71| 19| 1A| 1B| 1C|
* |---------------------------------------------------------------------------|
* | 20 | 21| 22| 23| 24| 68| 69| 6A| 6B| 25| 26| 27| 28| 73| 29| 2A| 2B| 2C|
* |---------------------------------------------------------------------------|
* | 30 | 31| 32| 33| 34| 6C| 75| 76| 77| 35| 36| 37| 38| 39| 3A| 3B| 3C|
* |---------------------------------------------------------------------------|
* | 40 | 41| 42| 43| 44| 78| 79| 7A| 7B| 45| 46| 47| 48| 74| 49| 4A| 4B| 4C|
* |---------------------------------------------------------------------------|
* | 50 | 51 | 52 | 59 | 55| 56| 57| 58| 53| 54| 5A| 5B| 5C|
* `---------------------------------------------------------------------------'
*/
//Arrow keys and 1.75u right shift
#define LAYOUT_default( \
K000, K001, K002, K003, K004, K600, K601, K602, K603, K005, K006, K007, K008, K702, K009, K010, K011, K012, K712, \
K100, K101, K102, K103, K104, K604, K605, K606, K607, K105, K106, K107, K108, K701, K109, K110, K111, K112, \
K200, K201, K202, K203, K204, K608, K609, K610, K611, K205, K206, K207, K208, K703, K209, K210, K211, K212, \
K300, K301, K302, K303, K304, K612, K705, K706, K707, K305, K306, K307, K308, K309, K310, K311, \
K400, K402, K403, K404, K708, K709, K710, K711, K405, K406, K407, K408, K704, K409, K410, K411, K412, \
K500, K501, K502, K509, K505, K506, K507, K508, K503, K504, K510, K511 \
K00, K01, K02, K03, K04, K60, K61, K62, K63, K05, K06, K07, K08, K72, K09, K0A, K0B, K0C, K7C, \
K10, K11, K12, K13, K14, K64, K65, K66, K67, K15, K16, K17, K18, K71, K19, K1A, K1B, K1C, \
K20, K21, K22, K23, K24, K68, K69, K6A, K6B, K25, K26, K27, K28, K73, K29, K2A, K2B, K2C, \
K30, K31, K32, K33, K34, K6C, K75, K76, K77, K35, K36, K37, K38, K39, K3A, K3B, \
K40, K42, K43, K44, K78, K79, K7A, K7B, K45, K46, K47, K48, K74, K49, K4A, K4B, K4C, \
K50, K51, K52, K59, K55, K56, K57, K58, K53, K54, K5A, K5B \
) { \
{ K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012 }, \
{ K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112 }, \
{ K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212 }, \
{ K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, KC_NO }, \
{ K400, KC_NO, K402, K403, K404, K405, K406, K407, K408, K409, K410, K411, K412 }, \
{ K500, K501, K502, K503, K504, K505, K506, K507, K508, K509, K510, K511, KC_NO }, \
{ K600, K601, K602, K603, K604, K605, K606, K607, K608, K609, K610, K611, K612 }, \
{ KC_NO, K701, K702, K703, K704, K705, K706, K707, K708, K709, K710, K711, K712 }, \
{ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C }, \
{ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C }, \
{ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C }, \
{ K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, KC_NO }, \
{ K40, KC_NO, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C }, \
{ K50, K51, K52, K53, K54, K55, K56, K57, K58, K59, K5A, K5B, KC_NO }, \
{ K60, K61, K62, K63, K64, K65, K66, K67, K68, K69, K6A, K6B, K6C }, \
{ KC_NO, K71, K72, K73, K74, K75, K76, K77, K78, K79, K7A, K7B, K7C } \
}
// Split numpad (enter, 0), split shifts (right, left), split backspace
// This is more of an example of every possible keycode placement
// This layout contains every possible keycode placement
#define LAYOUT_split_shift_and_bs( \
K000, K001, K002, K003, K004, K600, K601, K602, K603, K005, K006, K007, K008, K702, K009, K010, K011, K012, K712, \
K100, K101, K102, K103, K104, K604, K605, K606, K607, K105, K106, K107, K108, K700, K701, K109, K110, K111, K112, \
K200, K201, K202, K203, K204, K608, K609, K610, K611, K205, K206, K207, K208, K703, K209, K210, K211, K212, \
K300, K301, K302, K303, K304, K612, K705, K706, K707, K305, K306, K307, K308, K309, K310, K311, K312, \
K400, K401, K402, K403, K404, K708, K709, K710, K711, K405, K406, K407, K408, K704, K409, K410, K411, K412, \
K500, K501, K502, K509, K505, K506, K507, K508, K503, K504, K510, K511, K512 \
K00, K01, K02, K03, K04, K60, K61, K62, K63, K05, K06, K07, K08, K72, K09, K0A, K0B, K0C, K7C, \
K10, K11, K12, K13, K14, K64, K65, K66, K67, K15, K16, K17, K18, K70, K71, K19, K1A, K1B, K1C, \
K20, K21, K22, K23, K24, K68, K69, K6A, K6B, K25, K26, K27, K28, K73, K29, K2A, K2B, K2C, \
K30, K31, K32, K33, K34, K6C, K75, K76, K77, K35, K36, K37, K38, K39, K3A, K3B, K3C, \
K40, K41, K42, K43, K44, K78, K79, K7A, K7B, K45, K46, K47, K48, K74, K49, K4A, K4B, K4C, \
K50, K51, K52, K59, K55, K56, K57, K58, K53, K54, K5A, K5B, K5C \
) { \
{ K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012 }, \
{ K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112 }, \
{ K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212 }, \
{ K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312 }, \
{ K400, K401, K402, K403, K404, K405, K406, K407, K408, K409, K410, K411, K412 }, \
{ K500, K501, K502, K503, K504, K505, K506, K507, K508, K509, K510, K511, K512 }, \
{ K600, K601, K602, K603, K604, K605, K606, K607, K608, K609, K610, K611, K612 }, \
{ K701, K701, K702, K703, K704, K705, K706, K707, K708, K709, K710, K711, K712 }, \
{ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C }, \
{ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C }, \
{ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C }, \
{ 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, K4C }, \
{ K50, K51, K52, K53, K54, K55, K56, K57, K58, K59, K5A, K5B, K5C }, \
{ K60, K61, K62, K63, K64, K65, K66, K67, K68, K69, K6A, K6B, K6C }, \
{ K71, K71, K72, K73, K74, K75, K76, K77, K78, K79, K7A, K7B, K7C }, \
}
/*
Placement of every possible switch defined below.
x2 means the diode allows two possible positions for the switch
#define LAYOUT_all( \
K000, K001, K002, K003, K004, K600, K601, K602, K603, K005, K006, K007, K008, K702, K009, K010, K011, K012, K712, \
K100, K101, K102, K103, K104, K604, K605, K606, K607, K105, K106, K107, K108, K700, K701x2, K109, K110, K111, K112, \
K200, K201, K202, K203, K204, K608, K609, K610, K611, K205, K206, K207, K208, K703, K209, K210, K211, K212, \
K308, K212, \
K300, K300, K301, K302, K304, K612, K705, K706, K707, K305, K306, K307, K703, K308, K309, K310, K311, K312, \
K400x2, K401, K402, K403, K404, K708, K709, K710, K711, K405, K406, K407, K408, K408, K704, K409, K410, K411, K412, \
K412, \
K500x2, K501x2, K502, K509x3, K505x3, K506x2, K507x2, K508x2, K503x2, K504, K510x2, K511, K512 \
) { \
{ K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012 }, \
{ K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112 }, \
{ K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212 }, \
{ K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312 }, \
{ K400, K401, K402, K403, K404, K405, K406, K407, K408, K409, K410, K411, K412 }, \
{ K500, K501, K502, K503, K504, K505, K506, K507, K508, K509, K510, K511, K512 }, \
{ K600, K601, K602, K603, K604, K605, K606, K607, K608, K609, K610, K611, K612 }, \
{ K700, K701, K702, K703, K704, K705, K706, K707, K708, K709, K710, K711, K712 }, \
// ISO Layout
#define LAYOUT_iso( \
K00, K01, K02, K03, K04, K60, K61, K62, K63, K05, K06, K07, K08, K72, K09, K0A, K0B, K0C, K7C, \
K10, K11, K12, K13, K14, K64, K65, K66, K67, K15, K16, K17, K18, K71, K19, K1A, K1B, K1C, \
K20, K21, K22, K23, K24, K68, K69, K6A, K6B, K25, K26, K27, K28, K29, K2A, K2B, K2C, \
K30, K31, K32, K33, K34, K6C, K75, K76, K77, K35, K36, K37, K73, K38, K39, K3A, K3B, \
K40, K41, K42, K43, K44, K78, K79, K7A, K7B, K45, K46, K47, K48, K74, K49, K4A, K4B, K4C, \
K50, K51, K52, K59, K55, K56, K57, K58, K53, K54, K5A, K5B \
) { \
{ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C }, \
{ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C }, \
{ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C }, \
{ K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, KC_NO }, \
{ K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C }, \
{ K50, K51, K52, K53, K54, K55, K56, K57, K58, K59, K5A, K5B, KC_NO }, \
{ K60, K61, K62, K63, K64, K65, K66, K67, K68, K69, K6A, K6B, K6C }, \
{ KC_NO, K71, K72, K73, K74, K75, K76, K77, K78, K79, K7A, K7B, K7C } \
}
*/
#endif

View File

@@ -0,0 +1,347 @@
{
"keyboard_name": "Espectro",
"keyboard_folder": "espectro",
"url": "",
"maintainer": "qmk",
"width": 19,
"height": 6,
"layouts": {
"LAYOUT_default": {
"key_count": 100,
"layout": [
{"label":"ESC", "x":0, "y":0},
{"label":"F1", "x":1, "y":0},
{"label":"F2", "x":2, "y":0},
{"label":"F3", "x":3, "y":0},
{"label":"F4", "x":4, "y":0},
{"label":"F5", "x":5, "y":0},
{"label":"F6", "x":6, "y":0},
{"label":"F7", "x":7, "y":0},
{"label":"F8", "x":8, "y":0},
{"label":"F9", "x":9, "y":0},
{"label":"F10", "x":10, "y":0},
{"label":"F11", "x":11, "y":0},
{"label":"F12", "x":12, "y":0},
{"label":"PRINT SCREEN", "x":13, "y":0},
{"label":"HOME", "x":14, "y":0},
{"label":"END", "x":15, "y":0},
{"label":"PAGE UP", "x":16, "y":0},
{"label":"PAGE DOWN", "x":17, "y":0},
{"label":"DELETE", "x":18, "y":0},
{"label":"GRAVE", "x":0, "y":1},
{"label":"1", "x":1, "y":1},
{"label":"2", "x":2, "y":1},
{"label":"3", "x":3, "y":1},
{"label":"4", "x":4, "y":1},
{"label":"5", "x":5, "y":1},
{"label":"6", "x":6, "y":1},
{"label":"7", "x":7, "y":1},
{"label":"8", "x":8, "y":1},
{"label":"9", "x":9, "y":1},
{"label":"0", "x":10, "y":1},
{"label":"MINUS", "x":11, "y":1},
{"label":"EQUAL", "x":12, "y":1},
{"label":"BACKSPACE", "x":13, "y":1, "w":2},
{"label":"NUM LOCK", "x":15, "y":1},
{"label":"KEYPAD /", "x":16, "y":1},
{"label":"KEYPAD *", "x":17, "y":1},
{"label":"KEYPAD -", "x":18, "y":1},
{"label":"TAB", "x":0, "y":2, "w":1.5},
{"label":"Q", "x":1.5, "y":2},
{"label":"W", "x":2.5, "y":2},
{"label":"E", "x":3.5, "y":2},
{"label":"R", "x":4.5, "y":2},
{"label":"T", "x":5.5, "y":2},
{"label":"Y", "x":6.5, "y":2},
{"label":"U", "x":7.5, "y":2},
{"label":"I", "x":8.5, "y":2},
{"label":"O", "x":9.5, "y":2},
{"label":"P", "x":10.5, "y":2},
{"label":"LBRACKET", "x":11.5, "y":2},
{"label":"RBRACKET", "x":12.5, "y":2},
{"label":"BACKSLASH", "x":13.5, "y":2, "w":1.5},
{"label":"KEYPAD 7", "x":15, "y":2},
{"label":"KEYPAD 8", "x":16, "y":2},
{"label":"KEYPAD 9", "x":17, "y":2},
{"label":"KEYPAD +", "x":18, "y":2, "h":2},
{"label":"CAPS LOCK", "x":0, "y":3, "w":1.75},
{"label":"A", "x":1.75, "y":3},
{"label":"S", "x":2.75, "y":3},
{"label":"D", "x":3.75, "y":3},
{"label":"F", "x":4.75, "y":3},
{"label":"G", "x":5.75, "y":3},
{"label":"H", "x":6.75, "y":3},
{"label":"J", "x":7.75, "y":3},
{"label":"K", "x":8.75, "y":3},
{"label":"L", "x":9.75, "y":3},
{"label":"SEMICOLON", "x":10.75, "y":3},
{"label":"QUOTE", "x":11.75, "y":3},
{"label":"ENTER", "x":12.75, "y":3, "w":2.25},
{"label":"KEYPAD 4", "x":15, "y":3},
{"label":"KEYPAD 5", "x":16, "y":3},
{"label":"KEYPAD 6", "x":17, "y":3},
{"label":"LSHIFT", "x":0, "y":4, "w":2.25},
{"label":"Z", "x":2.25, "y":4},
{"label":"X", "x":3.25, "y":4},
{"label":"C", "x":4.25, "y":4},
{"label":"V", "x":5.25, "y":4},
{"label":"B", "x":6.25, "y":4},
{"label":"N", "x":7.25, "y":4},
{"label":"M", "x":8.25, "y":4},
{"label":"COMMA", "x":9.25, "y":4},
{"label":"PERIOD", "x":10.25, "y":4},
{"label":"SLASH", "x":11.25, "y":4},
{"label":"RSHIFT", "x":12.25, "y":4, "w":1.75},
{"label":"UP", "x":14, "y":4},
{"label":"KEYPAD 1", "x":15, "y":4},
{"label":"KEYPAD 2", "x":16, "y":4},
{"label":"KEYPAD 3", "x":17, "y":4},
{"label":"KEYPAD ENTER", "x":18, "y":4, "h":2},
{"label":"LCTRL", "x":0, "y":5, "w":1.25},
{"label":"LGUI", "x":1.25, "y":5, "w":1.25},
{"label":"LALT", "x":2.5, "y":5, "w":1.25},
{"label":"SPACE", "x":3.75, "y":5, "w":6.25},
{"label":"RALT", "x":10, "y":5},
{"label":"RCTRL", "x":11, "y":5},
{"label":"FN", "x":12, "y":5},
{"label":"LEFT", "x":13, "y":5},
{"label":"DOWN", "x":14, "y":5},
{"label":"RIGHT", "x":15, "y":5},
{"label":"KEYPAD 0", "x":16, "y":5},
{"label":"KEYPAD .", "x":17, "y":5}
]
},
"LAYOUT_split_shift_and_bs": {
"key_count": 104,
"layout": [
{"label":"ESC", "x":0, "y":0},
{"label":"F1", "x":1, "y":0},
{"label":"F2", "x":2, "y":0},
{"label":"F3", "x":3, "y":0},
{"label":"F4", "x":4, "y":0},
{"label":"F5", "x":5, "y":0},
{"label":"F6", "x":6, "y":0},
{"label":"F7", "x":7, "y":0},
{"label":"F8", "x":8, "y":0},
{"label":"F9", "x":9, "y":0},
{"label":"F10", "x":10, "y":0},
{"label":"F11", "x":11, "y":0},
{"label":"F12", "x":12, "y":0},
{"label":"PRINT SCREEN", "x":13, "y":0},
{"label":"HOME", "x":14, "y":0},
{"label":"END", "x":15, "y":0},
{"label":"PAGE UP", "x":16, "y":0},
{"label":"PAGE DOWN", "x":17, "y":0},
{"label":"DELETE", "x":18, "y":0},
{"label":"GRAVE", "x":0, "y":1},
{"label":"1", "x":1, "y":1},
{"label":"2", "x":2, "y":1},
{"label":"3", "x":3, "y":1},
{"label":"4", "x":4, "y":1},
{"label":"5", "x":5, "y":1},
{"label":"6", "x":6, "y":1},
{"label":"7", "x":7, "y":1},
{"label":"8", "x":8, "y":1},
{"label":"9", "x":9, "y":1},
{"label":"0", "x":10, "y":1},
{"label":"MINUS", "x":11, "y":1},
{"label":"EQUAL", "x":12, "y":1},
{"label":"BACKSPACE", "x":13, "y":1},
{"label":"BACKSPACE", "x":14, "y":1},
{"label":"NUM LOCK", "x":15, "y":1},
{"label":"KEYPAD /", "x":16, "y":1},
{"label":"KEYPAD *", "x":17, "y":1},
{"label":"KEYPAD -", "x":18, "y":1},
{"label":"TAB", "x":0, "y":2, "w":1.5},
{"label":"Q", "x":1.5, "y":2},
{"label":"W", "x":2.5, "y":2},
{"label":"E", "x":3.5, "y":2},
{"label":"R", "x":4.5, "y":2},
{"label":"T", "x":5.5, "y":2},
{"label":"Y", "x":6.5, "y":2},
{"label":"U", "x":7.5, "y":2},
{"label":"I", "x":8.5, "y":2},
{"label":"O", "x":9.5, "y":2},
{"label":"P", "x":10.5, "y":2},
{"label":"LBRACKET", "x":11.5, "y":2},
{"label":"RBRACKET", "x":12.5, "y":2},
{"label":"BACKSLASH", "x":13.5, "y":2, "w":1.5},
{"label":"KEYPAD 7", "x":15, "y":2},
{"label":"KEYPAD 8", "x":16, "y":2},
{"label":"KEYPAD 9", "x":17, "y":2},
{"label":"KEYPAD +", "x":18, "y":2},
{"label":"CAPS LOCK", "x":0, "y":3, "w":1.75},
{"label":"A", "x":1.75, "y":3},
{"label":"S", "x":2.75, "y":3},
{"label":"D", "x":3.75, "y":3},
{"label":"F", "x":4.75, "y":3},
{"label":"G", "x":5.75, "y":3},
{"label":"H", "x":6.75, "y":3},
{"label":"J", "x":7.75, "y":3},
{"label":"K", "x":8.75, "y":3},
{"label":"L", "x":9.75, "y":3},
{"label":"SEMICOLON", "x":10.75, "y":3},
{"label":"QUOTE", "x":11.75, "y":3},
{"label":"ENTER", "x":12.75, "y":3, "w":2.25},
{"label":"KEYPAD 4", "x":15, "y":3},
{"label":"KEYPAD 5", "x":16, "y":3},
{"label":"KEYPAD 6", "x":17, "y":3},
{"label":"KEYPAD +", "x":18, "y":3},
{"label":"LSHIFT", "x":0, "y":4, "w":1.25},
{"label":"ISO BACKSLASH", "x":1.25, "y":4},
{"label":"Z", "x":2.25, "y":4},
{"label":"X", "x":3.25, "y":4},
{"label":"C", "x":4.25, "y":4},
{"label":"V", "x":5.25, "y":4},
{"label":"B", "x":6.25, "y":4},
{"label":"N", "x":7.25, "y":4},
{"label":"M", "x":8.25, "y":4},
{"label":"COMMA", "x":9.25, "y":4},
{"label":"PERIOD", "x":10.25, "y":4},
{"label":"SLASH", "x":11.25, "y":4},
{"label":"RSHIFT", "x":12.25, "y":4, "w":1.75},
{"label":"UP", "x":14, "y":4},
{"label":"KEYPAD 1", "x":15, "y":4},
{"label":"KEYPAD 2", "x":16, "y":4},
{"label":"KEYPAD 3", "x":17, "y":4},
{"label":"KEYPAD ENTER", "x":18, "y":4},
{"label":"LCTRL", "x":0, "y":5, "w":1.25},
{"label":"LGUI", "x":1.25, "y":5, "w":1.25},
{"label":"LALT", "x":2.5, "y":5, "w":1.25},
{"label":"SPACE", "x":3.75, "y":5, "w":6.25},
{"label":"RALT", "x":10, "y":5},
{"label":"MENU", "x":11, "y":5},
{"label":"RCTRL", "x":12, "y":5},
{"label":"LEFT", "x":13, "y":5},
{"label":"DOWN", "x":14, "y":5},
{"label":"RIGHT", "x":15, "y":5},
{"label":"KEYPAD 0", "x":16, "y":5},
{"label":"KEYPAD .", "x":17, "y":5},
{"label":"KEYPAD ENTER", "x":18, "y":5}
]
},
"LAYOUT_iso": {
"key_count": 101,
"layout": [
{"label":"ESC", "x":0, "y":0},
{"label":"F1", "x":1, "y":0},
{"label":"F2", "x":2, "y":0},
{"label":"F3", "x":3, "y":0},
{"label":"F4", "x":4, "y":0},
{"label":"F5", "x":5, "y":0},
{"label":"F6", "x":6, "y":0},
{"label":"F7", "x":7, "y":0},
{"label":"F8", "x":8, "y":0},
{"label":"F9", "x":9, "y":0},
{"label":"F10", "x":10, "y":0},
{"label":"F11", "x":11, "y":0},
{"label":"F12", "x":12, "y":0},
{"label":"PRINT SCREEN", "x":13, "y":0},
{"label":"HOME", "x":14, "y":0},
{"label":"END", "x":15, "y":0},
{"label":"PAGE UP", "x":16, "y":0},
{"label":"PAGE DOWN", "x":17, "y":0},
{"label":"DELETE", "x":18, "y":0},
{"label":"GRAVE", "x":0, "y":1},
{"label":"1", "x":1, "y":1},
{"label":"2", "x":2, "y":1},
{"label":"3", "x":3, "y":1},
{"label":"4", "x":4, "y":1},
{"label":"5", "x":5, "y":1},
{"label":"6", "x":6, "y":1},
{"label":"7", "x":7, "y":1},
{"label":"8", "x":8, "y":1},
{"label":"9", "x":9, "y":1},
{"label":"0", "x":10, "y":1},
{"label":"MINUS", "x":11, "y":1},
{"label":"EQUAL", "x":12, "y":1},
{"label":"BACKSPACE", "x":13, "y":1, "w":2},
{"label":"NUM LOCK", "x":15, "y":1},
{"label":"KEYPAD /", "x":16, "y":1},
{"label":"KEYPAD *", "x":17, "y":1},
{"label":"KEYPAD -", "x":18, "y":1},
{"label":"TAB", "x":0, "y":2, "w":1.5},
{"label":"Q", "x":1.5, "y":2},
{"label":"W", "x":2.5, "y":2},
{"label":"E", "x":3.5, "y":2},
{"label":"R", "x":4.5, "y":2},
{"label":"T", "x":5.5, "y":2},
{"label":"Y", "x":6.5, "y":2},
{"label":"U", "x":7.5, "y":2},
{"label":"I", "x":8.5, "y":2},
{"label":"O", "x":9.5, "y":2},
{"label":"P", "x":10.5, "y":2},
{"label":"LBRACKET", "x":11.5, "y":2},
{"label":"RBRACKET", "x":12.5, "y":2},
{"label":"KEYPAD 7", "x":15, "y":2},
{"label":"KEYPAD 8", "x":16, "y":2},
{"label":"KEYPAD 9", "x":17, "y":2},
{"label":"KEYPAD +", "x":18, "y":2, "h":2},
{"label":"CAPS LOCK", "x":0, "y":3, "w":1.75},
{"label":"A", "x":1.75, "y":3},
{"label":"S", "x":2.75, "y":3},
{"label":"D", "x":3.75, "y":3},
{"label":"F", "x":4.75, "y":3},
{"label":"G", "x":5.75, "y":3},
{"label":"H", "x":6.75, "y":3},
{"label":"J", "x":7.75, "y":3},
{"label":"K", "x":8.75, "y":3},
{"label":"L", "x":9.75, "y":3},
{"label":"SEMICOLON", "x":10.75, "y":3},
{"label":"QUOTE", "x":11.75, "y":3},
{"label":"ISO HASH", "x":12.75, "y":3},
{"label":"ENTER", "x":13.75, "y":2, "w":1.25, "h":2},
{"label":"KEYPAD 4", "x":15, "y":3},
{"label":"KEYPAD 5", "x":16, "y":3},
{"label":"KEYPAD 6", "x":17, "y":3},
{"label":"LSHIFT", "x":0, "y":4, "w":1.25},
{"label":"ISO BACKSLASH", "x":1.25, "y":4},
{"label":"Z", "x":2.25, "y":4},
{"label":"X", "x":3.25, "y":4},
{"label":"C", "x":4.25, "y":4},
{"label":"V", "x":5.25, "y":4},
{"label":"B", "x":6.25, "y":4},
{"label":"N", "x":7.25, "y":4},
{"label":"M", "x":8.25, "y":4},
{"label":"COMMA", "x":9.25, "y":4},
{"label":"PERIOD", "x":10.25, "y":4},
{"label":"SLASH", "x":11.25, "y":4},
{"label":"RSHIFT", "x":12.25, "y":4, "w":1.75},
{"label":"UP", "x":14, "y":4},
{"label":"KEYPAD 1", "x":15, "y":4},
{"label":"KEYPAD 2", "x":16, "y":4},
{"label":"KEYPAD 3", "x":17, "y":4},
{"label":"KEYPAD ENTER", "x":18, "y":4, "h":2},
{"label":"LCTRL", "x":0, "y":5, "w":1.25},
{"label":"LGUI", "x":1.25, "y":5, "w":1.25},
{"label":"LALT", "x":2.5, "y":5, "w":1.25},
{"label":"SPACE", "x":3.75, "y":5, "w":6.25},
{"label":"RALT", "x":10, "y":5},
{"label":"MENU", "x":11, "y":5},
{"label":"RCTRL", "x":12, "y":5},
{"label":"LEFT", "x":13, "y":5},
{"label":"DOWN", "x":14, "y":5},
{"label":"RIGHT", "x":15, "y":5},
{"label":"KEYPAD 0", "x":16, "y":5},
{"label":"KEYPAD .", "x":17, "y":5}
]
}
}
}

View File

@@ -16,7 +16,6 @@
#include QMK_KEYBOARD_H
#define MODS_CTRL_MASK (MOD_BIT(KC_LSHIFT)|MOD_BIT(KC_RSHIFT))
#define _BL 0 //Base layer
#define _FN1 1 //Function layer
@@ -26,7 +25,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* BL
____________________________________________________________________________________________________________________________________________________________________________
| | | | | | | | | | | | | | | | | | | |
| ESC | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 | P SCN | HOME | END | P UP | P DOWN | DEL |
| ESC | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 | DEL | PRT SC | SCR LK | PAUSE | P UP | P DOWN |
|________|________|________|________|________|________|________|________|________|________|________|________|________|________|________|________|________|________|________|
| | | | | | | | | | | | | | BACK | NUM | | | |
| ~` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | _ - | = + | SPACE | LOCK | / | * | - |
@@ -46,12 +45,12 @@ ________________________________________________________________________________
*/
[_BL] = LAYOUT_default(
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_DEL, KC_PSCR, KC_SLCK, KC_PAUS, KC_PGUP, KC_PGDN,
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_NLCK, KC_PSLS, KC_PAST, KC_PMNS,
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_P7, KC_P8, KC_P9, KC_PPLS,
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_P4, KC_P5, KC_P6,
KC_LSPO, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSPC, KC_UP, KC_P1, KC_P2, KC_P3, KC_PENT,
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RCTL, MO(1), KC_LEFT, KC_DOWN, KC_RIGHT, KC_P0, KC_PDOT
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_DEL, KC_PSCR, KC_SLCK, KC_PAUS, KC_PGUP, KC_PGDN, \
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_NLCK, KC_PSLS, KC_PAST, KC_PMNS, \
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_P7, KC_P8, KC_P9, KC_PPLS, \
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_P4, KC_P5, KC_P6, \
KC_LSPO, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSPC, KC_UP, KC_P1, KC_P2, KC_P3, KC_PENT, \
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RCTL, MO(1), KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT \
),
/* FN_1
@@ -60,7 +59,7 @@ ________________________________________________________________________________
| RESET | | | | | | | | | | | | | MUTE | DOWN | UP | TRACK | HOME | END |
|________|________|________|________|________|________|________|________|________|________|________|________|________|________|________|________|________|________|________|
| | RGB | RGB | RGB | RGB | RGB | RGB | RGB | RGB | | | | | | | | | |
| | TOGGLE | MODE |INCREASE|DECREASE| HUE | HUE | SAT | | | | | | DELETE | | | | |
| | TOGGLE | MODE |INCREASE|DECREASE| HUE | HUE | SAT | SAT | | | | | DELETE | | | | |
|________|________|________|________|________|INCREASE|DECREASE|INCREASE|DECREASE|________|________|________|________|_________________|________|________|________|________|
| | BACK | BACK | | | | | | | | | | | | | | | |
| | LIGHT | LIGHT | | | | | | | | | | | | | | | |
@@ -77,12 +76,12 @@ ________________________________________________________________________________
*/
[_FN1] = LAYOUT_default(
RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MUTE, KC_VOLD, KC_VOLU, KC_MNXT, KC_HOME, KC_END,
_______, RGB_TOG, RGB_MOD, RGB_VAI, RGB_VAD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, _______, _______, _______, _______, KC_DEL, _______, _______, _______, _______,
_______, BL_TOGG, BL_INC, BL_DEC, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MUTE, KC_VOLD, KC_VOLU, KC_MNXT, KC_HOME, KC_END, \
_______, RGB_TOG, RGB_MOD, RGB_VAI, RGB_VAD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, _______, _______, _______, _______, KC_DEL, _______, _______, _______, _______, \
_______, BL_TOGG, BL_INC, BL_DEC, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \
),
};

View File

@@ -44,13 +44,13 @@ ________________________________________________________________________________
|__________|__________|__________|________________________________________________________|________|________|________|________|________|________|________|________|________|
*/
[_BL] = LAYOUT_split_shift_and_bs(
KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_PSCR, KC_HOME, KC_END, KC_PGUP, KC_PGDN,
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_NO, KC_BSPC, KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS,
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_NUHS, KC_P7, KC_P8, KC_P9, KC_PPLS,
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_NO, KC_P4, KC_P5, KC_P6,
KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_P1, KC_P2, KC_P3, KC_PENT,
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RCTL, MO(1), KC_LEFT, KC_DOWN, KC_RIGHT, KC_P0, KC_PDOT, KC_NO
[_BL] = LAYOUT_iso(
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_DEL, KC_PSCR, KC_HOME, KC_END, KC_PGUP, KC_PGDN, \
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_NLCK, KC_PSLS, KC_PAST, KC_PMNS, \
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_P7, KC_P8, KC_P9, KC_PPLS, \
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6, \
KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_P1, KC_P2, KC_P3, KC_PENT, \
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RCTL, MO(1), KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT \
),
/* FN_1
@@ -59,7 +59,7 @@ ________________________________________________________________________________
| RESET | | | | | | | | | | | | | MUTE | DOWN | UP | TRACK | HOME | END |
|________|________|________|________|________|________|________|________|________|________|________|________|________|________|________|________|________|________|________|
| | RGB | RGB | RGB | RGB | RGB | RGB | RGB | RGB | | | | | | | | | |
| | TOGGLE | MODE |INCREASE|DECREASE| HUE | HUE | SAT | | | | | | DELETE | | | | |
| | TOGGLE | MODE |INCREASE|DECREASE| HUE | HUE | SAT | SAT | | | | | DELETE | | | | |
|________|________|________|________|________|INCREASE|DECREASE|INCREASE|DECREASE|________|________|________|________|_________________|________|________|________|________|
| | BACK | BACK | | | | | | | | | | | | | | | |
| | LIGHT | LIGHT | | | | | | | | | | | | | | | |
@@ -75,13 +75,13 @@ ________________________________________________________________________________
|__________|__________|__________|________________________________________________________|________|________|________|________|________|________|________|________|________|
*/
[_FN1] = LAYOUT_split_shift_and_bs(
RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MUTE, KC_VOLD, KC_VOLU, KC_MNXT, KC_HOME, KC_END,
_______, RGB_TOG, RGB_MOD, RGB_VAI, RGB_VAD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, _______, _______, _______, _______, _______, KC_DEL, _______, _______, _______, _______,
_______, BL_TOGG, BL_INC, BL_DEC, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
[_FN1] = LAYOUT_iso(
RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MUTE, KC_VOLD, KC_VOLU, KC_MNXT, KC_HOME, KC_END, \
_______, RGB_TOG, RGB_MOD, RGB_VAI, RGB_VAD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, _______, _______, _______, _______, KC_DEL, _______, _______, _______, _______, \
_______, BL_TOGG, BL_INC, BL_DEC, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \
),
};

View File

@@ -17,7 +17,6 @@
#include QMK_KEYBOARD_H
#define MODS_CTRL_MASK (MOD_BIT(KC_LSHIFT)|MOD_BIT(KC_RSHIFT))
#define _QWERTY 0 //BASE layer
#define _FUNCTION 1 //Function layer

View File

@@ -15,7 +15,6 @@
#include QMK_KEYBOARD_H
#define MODS_CTRL_MASK (MOD_BIT(KC_LSHIFT)|MOD_BIT(KC_RSHIFT))
#define _BL 0 //Base layer
#define _FN1 1 //Function layer

View File

@@ -14,11 +14,9 @@ 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/>.
*/
#ifndef FC980C_H
#define FC980C_H
#pragma once
#include "quantum.h"
// #include "quantum_keycodes.h"
/*
----------------------------------------------------------------------------------------------------------------------
@@ -37,42 +35,31 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
----------------------------------------------------------------------------------------------------------------------
*/
#define LAYOUT( \
K0D, K2D, K5D, K3D, K6D, K7D, K7F, K7E, K7C, K72, K71, K70, K73, K74, K76, K77, K75, \
K0A, K69, K59, K58, K5B, K6F, K5F, K5E, K6C, K5C, K52, K51, K50, K55, K54, K56, K57, K65, \
K6A, K39, K68, K6B, K3B, K3F, K6E, K3E, K3C, K62, K61, K60, K33, K53, K64, K66, K67, K25, \
K3A, K29, K38, K28, K2B, K2F, K2E, K2C, K1C, K32, K31, K20, K63, K24, K26, K27, \
K2A, K18, K08, K1B, K0B, K1F, K1E, K0E, K22, K11, K21, K30, K34, K14, K16, K17, K15, \
K1A, K09, K19, K0F, K02, K01, K10, K00, K04, K06, K07, K05) \
{ \
{K00, K01, K02, KC_NO, K04, K05, K06, K07, \
K08, K09, K0A, K0B, KC_NO, K0D, K0E, K0F}, \
{K10, K11, KC_NO, KC_NO, K14, K15, K16, K17, \
K18, K19, K1A, K1B, K1C, KC_NO, K1E, K1F}, \
{K20, K21, K22, KC_NO, K24, K25, K26, K27, \
K28, K29, K2A, K2B, K2C, K2D, K2E, K2F}, \
{K30, K31, K32, K33, K34, KC_NO, KC_NO, KC_NO, \
K38, K39, K3A, K3B, K3C, K3D, K3E, K3F}, \
{KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, \
KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO}, \
{K50, K51, K52, K53, K54, K55, K56, K57, \
K58, K59, KC_NO, K5B, K5C, K5D, K5E, K5F}, \
{K60, K61, K62, K63, K64, K65, K66, K67, \
K68, K69, K6A, K6B, K6C, K6D, K6E, K6F}, \
{ \
K70, K71, K72, K73, K74, K75, K76, K77, \
KC_NO, KC_NO, KC_NO, KC_NO, K7C, K7D, K7E, K7F \
} \
}
#define LAYOUT( \
K0D, K2D, K5D, K3D, K6D, K7D, K7F, K7E, K7C, K72, K71, K70, K73, K74, K76, K77, K75, \
K0A, K69, K59, K58, K5B, K6F, K5F, K5E, K6C, K5C, K52, K51, K50, K55, K54, K56, K57, K65, \
K6A, K39, K68, K6B, K3B, K3F, K6E, K3E, K3C, K62, K61, K60, K33, K53, K64, K66, K67, K25, \
K3A, K29, K38, K28, K2B, K2F, K2E, K2C, K1C, K32, K31, K20, K63, K24, K26, K27, \
K2A, K18, K08, K1B, K0B, K1F, K1E, K0E, K22, K11, K21, K30, K34, K14, K16, K17, K15, \
K1A, K09, K19, K0F, K02, K01, K10, K00, K04, K06, K07, K05 \
) { \
{ K00, K01, K02, KC_NO, K04, K05, K06, K07, K08, K09, K0A, K0B, KC_NO, K0D, K0E, K0F }, \
{ K10, K11, KC_NO, KC_NO, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, KC_NO, K1E, K1F }, \
{ K20, K21, K22, KC_NO, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2E, K2F }, \
{ K30, K31, K32, K33, K34, KC_NO, KC_NO, KC_NO, K38, K39, K3A, K3B, K3C, K3D, K3E, K3F }, \
{ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, \
{ K50, K51, K52, K53, K54, K55, K56, K57, K58, K59, KC_NO, K5B, K5C, K5D, K5E, K5F }, \
{ K60, K61, K62, K63, K64, K65, K66, K67, K68, K69, K6A, K6B, K6C, K6D, K6E, K6F }, \
{ K70, K71, K72, K73, K74, K75, K76, K77, KC_NO, KC_NO, KC_NO, KC_NO, K7C, K7D, K7E, K7F } \
}
/*
LAYOUT(
_______, _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, _______,_______,_______,_______,
_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, _______,_______,_______,_______,
_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, _______,_______,_______,_______,
_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, _______, _______,_______,_______,
_______, _______,_______,_______,_______,_______,_______,_______,_______,_______,_______, _______, _______, _______,_______,_______,_______,
_______,_______,_______, _______, _______,_______,_______, _______,_______,_______, _______,_______
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \
)
*/
#endif

View File

@@ -6,105 +6,106 @@
"height": 6.75,
"layouts": {
"LAYOUT": {
"key_count": 98,
"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": "Delete", "x": 15.5, "y": 0 },
{ "label": "Insert", "x": 16.5, "y": 0 },
{ "label": "Pg Up", "x": 17.5, "y": 0 },
{ "label": "Pg Dn", "x": 18.5, "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": "Num Lock", "x": 15.5, "y": 1.5 },
{ "label": "/", "x": 16.5, "y": 1.5 },
{ "label": "*", "x": 17.5, "y": 1.5 },
{ "label": "-", "x": 18.5, "y": 1.5 },
{ "label": "Tab", "x": 0, "y": 2.5, "w": 1.5 },
{ "label": "Q", "x": 1.5, "y": 2.5 },
{ "label": "W", "x": 2.5, "y": 2.5 },
{ "label": "E", "x": 3.5, "y": 2.5 },
{ "label": "R", "x": 4.5, "y": 2.5 },
{ "label": "T", "x": 5.5, "y": 2.5 },
{ "label": "Y", "x": 6.5, "y": 2.5 },
{ "label": "U", "x": 7.5, "y": 2.5 },
{ "label": "I", "x": 8.5, "y": 2.5 },
{ "label": "O", "x": 9.5, "y": 2.5 },
{ "label": "P", "x": 10.5, "y": 2.5 },
{ "label": "{", "x": 11.5, "y": 2.5 },
{ "label": "}", "x": 12.5, "y": 2.5 },
{ "label": "|", "x": 13.5, "y": 2.5, "w": 1.5 },
{ "label": "7", "x": 15.5, "y": 2.5 },
{ "label": "8", "x": 16.5, "y": 2.5 },
{ "label": "9", "x": 17.5, "y": 2.5 },
{ "label": "+", "x": 18.5, "y": 2.5, "h": 2 },
{ "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": "Enter", "x": 12.75, "y": 3.5, "w": 2.25 },
{ "label": "4", "x": 15.5, "y": 3.5 },
{ "label": "5", "x": 16.5, "y": 3.5 },
{ "label": "6", "x": 17.5, "y": 3.5 },
{ "label": "Shift", "x": 0, "y": 4.5, "w": 2.25 },
{ "label": "Z", "x": 2.25, "y": 4.5 },
{ "label": "X", "x": 3.25, "y": 4.5 },
{ "label": "C", "x": 4.25, "y": 4.5 },
{ "label": "V", "x": 5.25, "y": 4.5 },
{ "label": "B", "x": 6.25, "y": 4.5 },
{ "label": "N", "x": 7.25, "y": 4.5 },
{ "label": "M", "x": 8.25, "y": 4.5 },
{ "label": "<", "x": 9.25, "y": 4.5 },
{ "label": ">", "x": 10.25, "y": 4.5 },
{ "label": "?", "x": 11.25, "y": 4.5 },
{ "label": "Shift", "x": 12.25, "y": 4.5, "w": 1.75 },
{ "label": "1", "x": 15.5, "y": 4.5 },
{ "label": "2", "x": 16.5, "y": 4.5 },
{ "label": "3", "x": 17.5, "y": 4.5 },
{ "label": "Enter", "x": 18.5, "y": 4.5, "h": 2 },
{ "label": "\u2191", "x": 14.25, "y": 4.75 },
{ "label": "Ctrl", "x": 0, "y": 5.5, "w": 1.25 },
{ "label": "Win", "x": 1.25, "y": 5.5 },
{ "label": "Alt", "x": 2.25, "y": 5.5, "w": 1.25 },
{ "x": 3.5, "y": 5.5, "w": 6 },
{ "label": "Alt", "x": 9.5, "y": 5.5, "w": 1.25 },
{ "label": "Ctrl", "x": 10.75, "y": 5.5 },
{ "label": "Fn", "x": 11.75, "y": 5.5, "w": 1.25 },
{ "label": "0", "x": 16.5, "y": 5.5 },
{ "label": ".", "x": 17.5, "y": 5.5 },
{ "label": "\u2190", "x": 13.25, "y": 5.75 },
{ "label": "\u2193", "x": 14.25, "y": 5.75 },
{ "label": "\u2192", "x": 15.25, "y": 5.75 }
{"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":"Delete", "x":15.5, "y":0},
{"label":"Insert", "x":16.5, "y":0},
{"label":"Page Up", "x":17.5, "y":0},
{"label":"Page Down", "x":18.5, "y":0},
{"label":"`", "x":0, "y":1.5},
{"label":"1", "x":1, "y":1.5},
{"label":"2", "x":2, "y":1.5},
{"label":"3", "x":3, "y":1.5},
{"label":"4", "x":4, "y":1.5},
{"label":"5", "x":5, "y":1.5},
{"label":"6", "x":6, "y":1.5},
{"label":"7", "x":7, "y":1.5},
{"label":"8", "x":8, "y":1.5},
{"label":"9", "x":9, "y":1.5},
{"label":"0", "x":10, "y":1.5},
{"label":"-", "x":11, "y":1.5},
{"label":"=", "x":12, "y":1.5},
{"label":"Backspace", "x":13, "y":1.5, "w":2},
{"label":"Num Lock", "x":15.5, "y":1.5},
{"label":"/", "x":16.5, "y":1.5},
{"label":"*", "x":17.5, "y":1.5},
{"label":"-", "x":18.5, "y":1.5},
{"label":"Tab", "x":0, "y":2.5, "w":1.5},
{"label":"Q", "x":1.5, "y":2.5},
{"label":"W", "x":2.5, "y":2.5},
{"label":"E", "x":3.5, "y":2.5},
{"label":"R", "x":4.5, "y":2.5},
{"label":"T", "x":5.5, "y":2.5},
{"label":"Y", "x":6.5, "y":2.5},
{"label":"U", "x":7.5, "y":2.5},
{"label":"I", "x":8.5, "y":2.5},
{"label":"O", "x":9.5, "y":2.5},
{"label":"P", "x":10.5, "y":2.5},
{"label":"[", "x":11.5, "y":2.5},
{"label":"]", "x":12.5, "y":2.5},
{"label":"\\", "x":13.5, "y":2.5, "w":1.5},
{"label":"7", "x":15.5, "y":2.5},
{"label":"8", "x":16.5, "y":2.5},
{"label":"9", "x":17.5, "y":2.5},
{"label":"+", "x":18.5, "y":2.5, "h":2},
{"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":"Enter", "x":12.75, "y":3.5, "w":2.25},
{"label":"4", "x":15.5, "y":3.5},
{"label":"5", "x":16.5, "y":3.5},
{"label":"6", "x":17.5, "y":3.5},
{"label":"Shift", "x":0, "y":4.5, "w":2.25},
{"label":"Z", "x":2.25, "y":4.5},
{"label":"X", "x":3.25, "y":4.5},
{"label":"C", "x":4.25, "y":4.5},
{"label":"V", "x":5.25, "y":4.5},
{"label":"B", "x":6.25, "y":4.5},
{"label":"N", "x":7.25, "y":4.5},
{"label":"M", "x":8.25, "y":4.5},
{"label":",", "x":9.25, "y":4.5},
{"label":".", "x":10.25, "y":4.5},
{"label":"/", "x":11.25, "y":4.5},
{"label":"Shift", "x":12.25, "y":4.5, "w":1.75},
{"label":"Up", "x":14.25, "y":4.75},
{"label":"1", "x":15.5, "y":4.5},
{"label":"2", "x":16.5, "y":4.5},
{"label":"3", "x":17.5, "y":4.5},
{"label":"Enter", "x":18.5, "y":4.5, "h":2},
{"label":"Ctrl", "x":0, "y":5.5, "w":1.25},
{"label":"Win", "x":1.25, "y":5.5},
{"label":"Alt", "x":2.25, "y":5.5, "w":1.25},
{"label":"Space", "x":3.5, "y":5.5, "w":6},
{"label":"Alt", "x":9.5, "y":5.5, "w":1.25},
{"label":"Ctrl", "x":10.75, "y":5.5},
{"label":"Fn", "x":11.75, "y":5.5, "w":1.25},
{"label":"Left", "x":13.25, "y":5.75},
{"label":"Down", "x":14.25, "y":5.75},
{"label":"Right", "x":15.25, "y":5.75},
{"label":"0", "x":16.5, "y":5.5},
{"label":".", "x":17.5, "y":5.5}
]
}
}

View File

@@ -16,13 +16,6 @@ You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef CONFIG_H
#define CONFIG_H
#pragma once
#include "config_common.h"
#ifdef SUBPROJECT_rev1
#include "rev1/config.h"
#endif
#endif

View File

@@ -1,12 +1,11 @@
#ifndef FOURIER_H
#define FOURIER_H
#include "quantum.h"
#pragma once
#ifdef KEYBOARD_fourier_rev1
#include "rev1.h"
#endif
#include "quantum.h"
// Used to create a keymap using only KC_ prefixed keys
#define LAYOUT_kc( \
LA1, LA2, LA3, LA4, LA5, LA6, RA1, RA2, RA3, RA4, RA5, RA6, RA7, \
@@ -20,4 +19,3 @@
KC_##LC1, KC_##LC2, KC_##LC3, KC_##LC4, KC_##LC5, KC_##LC6, KC_##RC1, KC_##RC3, KC_##RC4, KC_##RC5, KC_##RC6, KC_##RC7, \
KC_##LD1, KC_##LD2, KC_##LD3, KC_##LD4, KC_##LD5, KC_##RD1, KC_##RD4, KC_##RD5, KC_##RD6, KC_##RD7 \
)
#endif

View File

@@ -1,162 +0,0 @@
#include <util/twi.h>
#include <avr/io.h>
#include <stdlib.h>
#include <avr/interrupt.h>
#include <util/twi.h>
#include <stdbool.h>
#include "i2c.h"
#ifdef USE_I2C
// Limits the amount of we wait for any one i2c transaction.
// Since were running SCL line 100kHz (=> 10μs/bit), and each transactions is
// 9 bits, a single transaction will take around 90μs to complete.
//
// (F_CPU/SCL_CLOCK) => # of μC cycles to transfer a bit
// poll loop takes at least 8 clock cycles to execute
#define I2C_LOOP_TIMEOUT (9+1)*(F_CPU/SCL_CLOCK)/8
#define BUFFER_POS_INC() (slave_buffer_pos = (slave_buffer_pos+1)%SLAVE_BUFFER_SIZE)
volatile uint8_t i2c_slave_buffer[SLAVE_BUFFER_SIZE];
static volatile uint8_t slave_buffer_pos;
static volatile bool slave_has_register_set = false;
// Wait for an i2c operation to finish
inline static
void i2c_delay(void) {
uint16_t lim = 0;
while(!(TWCR & (1<<TWINT)) && lim < I2C_LOOP_TIMEOUT)
lim++;
// easier way, but will wait slightly longer
// _delay_us(100);
}
// Setup twi to run at 100kHz
void i2c_master_init(void) {
// no prescaler
TWSR = 0;
// Set TWI clock frequency to SCL_CLOCK. Need TWBR>10.
// Check datasheets for more info.
TWBR = ((F_CPU/SCL_CLOCK)-16)/2;
}
// Start a transaction with the given i2c slave address. The direction of the
// transfer is set with I2C_READ and I2C_WRITE.
// returns: 0 => success
// 1 => error
uint8_t i2c_master_start(uint8_t address) {
TWCR = (1<<TWINT) | (1<<TWEN) | (1<<TWSTA);
i2c_delay();
// check that we started successfully
if ( (TW_STATUS != TW_START) && (TW_STATUS != TW_REP_START))
return 1;
TWDR = address;
TWCR = (1<<TWINT) | (1<<TWEN);
i2c_delay();
if ( (TW_STATUS != TW_MT_SLA_ACK) && (TW_STATUS != TW_MR_SLA_ACK) )
return 1; // slave did not acknowledge
else
return 0; // success
}
// Finish the i2c transaction.
void i2c_master_stop(void) {
TWCR = (1<<TWINT) | (1<<TWEN) | (1<<TWSTO);
uint16_t lim = 0;
while(!(TWCR & (1<<TWSTO)) && lim < I2C_LOOP_TIMEOUT)
lim++;
}
// Write one byte to the i2c slave.
// returns 0 => slave ACK
// 1 => slave NACK
uint8_t i2c_master_write(uint8_t data) {
TWDR = data;
TWCR = (1<<TWINT) | (1<<TWEN);
i2c_delay();
// check if the slave acknowledged us
return (TW_STATUS == TW_MT_DATA_ACK) ? 0 : 1;
}
// Read one byte from the i2c slave. If ack=1 the slave is acknowledged,
// if ack=0 the acknowledge bit is not set.
// returns: byte read from i2c device
uint8_t i2c_master_read(int ack) {
TWCR = (1<<TWINT) | (1<<TWEN) | (ack<<TWEA);
i2c_delay();
return TWDR;
}
void i2c_reset_state(void) {
TWCR = 0;
}
void i2c_slave_init(uint8_t address) {
TWAR = address << 0; // slave i2c address
// TWEN - twi enable
// TWEA - enable address acknowledgement
// TWINT - twi interrupt flag
// TWIE - enable the twi interrupt
TWCR = (1<<TWIE) | (1<<TWEA) | (1<<TWINT) | (1<<TWEN);
}
ISR(TWI_vect);
ISR(TWI_vect) {
uint8_t ack = 1;
switch(TW_STATUS) {
case TW_SR_SLA_ACK:
// this device has been addressed as a slave receiver
slave_has_register_set = false;
break;
case TW_SR_DATA_ACK:
// this device has received data as a slave receiver
// The first byte that we receive in this transaction sets the location
// of the read/write location of the slaves memory that it exposes over
// i2c. After that, bytes will be written at slave_buffer_pos, incrementing
// slave_buffer_pos after each write.
if(!slave_has_register_set) {
slave_buffer_pos = TWDR;
// don't acknowledge the master if this memory loctaion is out of bounds
if ( slave_buffer_pos >= SLAVE_BUFFER_SIZE ) {
ack = 0;
slave_buffer_pos = 0;
}
slave_has_register_set = true;
} else {
i2c_slave_buffer[slave_buffer_pos] = TWDR;
BUFFER_POS_INC();
}
break;
case TW_ST_SLA_ACK:
case TW_ST_DATA_ACK:
// master has addressed this device as a slave transmitter and is
// requesting data.
TWDR = i2c_slave_buffer[slave_buffer_pos];
BUFFER_POS_INC();
break;
case TW_BUS_ERROR: // something went wrong, reset twi state
TWCR = 0;
default:
break;
}
// Reset everything, so we are ready for the next TWI interrupt
TWCR |= (1<<TWIE) | (1<<TWINT) | (ack<<TWEA) | (1<<TWEN);
}
#endif

View File

@@ -1,49 +0,0 @@
#ifndef I2C_H
#define I2C_H
#include <stdint.h>
#ifndef F_CPU
#define F_CPU 16000000UL
#endif
#define I2C_READ 1
#define I2C_WRITE 0
#define I2C_ACK 1
#define I2C_NACK 0
#define SLAVE_BUFFER_SIZE 0x10
// i2c SCL clock frequency
#define SCL_CLOCK 400000L
extern volatile uint8_t i2c_slave_buffer[SLAVE_BUFFER_SIZE];
void i2c_master_init(void);
uint8_t i2c_master_start(uint8_t address);
void i2c_master_stop(void);
uint8_t i2c_master_write(uint8_t data);
uint8_t i2c_master_read(int);
void i2c_reset_state(void);
void i2c_slave_init(uint8_t address);
static inline unsigned char i2c_start_read(unsigned char addr) {
return i2c_master_start((addr << 1) | I2C_READ);
}
static inline unsigned char i2c_start_write(unsigned char addr) {
return i2c_master_start((addr << 1) | I2C_WRITE);
}
// from SSD1306 scrips
extern unsigned char i2c_rep_start(unsigned char addr);
extern void i2c_start_wait(unsigned char addr);
extern unsigned char i2c_readAck(void);
extern unsigned char i2c_readNak(void);
extern unsigned char i2c_read(unsigned char ack);
#define i2c_read(ack) (ack) ? i2c_readAck() : i2c_readNak();
#endif

View File

@@ -18,14 +18,8 @@ You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef CONFIG_USER_H
#define CONFIG_USER_H
#include "config_common.h"
#pragma once
/* Use I2C or Serial, not both */
#define USE_SERIAL
// #define USE_I2C
#endif

View File

@@ -1,7 +1,5 @@
#include QMK_KEYBOARD_H
extern keymap_config_t keymap_config;
// 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
@@ -14,8 +12,6 @@ enum custom_keycodes {
QWERTY = SAFE_RANGE,
};
#define _______ KC_TRNS
#define XXXXXXX KC_NO
#define KC_FN1 MO(_FN1)
#define KC_FN2 MO(_FN2)
#define KC_SPFN1 LT(_FN1, KC_SPACE)

View File

@@ -1,3 +0,0 @@
ifndef QUANTUM_DIR
include ../../../../Makefile
endif

View File

@@ -1,467 +0,0 @@
/*
Copyright 2012 Jun Wako <wakojun@gmail.com>
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
/*
* scan matrix
*/
#include <stdint.h>
#include <stdbool.h>
#include <avr/io.h>
#include "wait.h"
#include "print.h"
#include "debug.h"
#include "util.h"
#include "matrix.h"
#include "split_util.h"
#include "pro_micro.h"
#include "config.h"
#include "timer.h"
#include "backlight.h"
#ifdef USE_I2C
# include "i2c.h"
#else // USE_SERIAL
# include "serial.h"
#endif
#ifndef DEBOUNCING_DELAY
# define DEBOUNCING_DELAY 5
#endif
#if (DEBOUNCING_DELAY > 0)
static uint16_t debouncing_time;
static bool debouncing = false;
#endif
#if (MATRIX_COLS <= 8)
# define print_matrix_header() print("\nr/c 01234567\n")
# define print_matrix_row(row) print_bin_reverse8(matrix_get_row(row))
# define matrix_bitpop(i) bitpop(matrix[i])
# define ROW_SHIFTER ((uint8_t)1)
#else
# error "Currently only supports 8 COLS"
#endif
static matrix_row_t matrix_debouncing[MATRIX_ROWS];
#define ERROR_DISCONNECT_COUNT 5
#define SERIAL_LED_ADDR 0x00
#define ROWS_PER_HAND (MATRIX_ROWS/2)
static uint8_t error_count = 0;
static const uint8_t row_pins[MATRIX_ROWS] = MATRIX_ROW_PINS;
static const uint8_t col_pins[MATRIX_COLS] = MATRIX_COL_PINS;
/* matrix state(1:on, 0:off) */
static matrix_row_t matrix[MATRIX_ROWS];
static matrix_row_t matrix_debouncing[MATRIX_ROWS];
#if (DIODE_DIRECTION == COL2ROW)
static void init_cols(void);
static bool read_cols_on_row(matrix_row_t current_matrix[], uint8_t current_row);
static void unselect_rows(void);
static void select_row(uint8_t row);
static void unselect_row(uint8_t row);
#elif (DIODE_DIRECTION == ROW2COL)
static void init_rows(void);
static bool read_rows_on_col(matrix_row_t current_matrix[], uint8_t current_col);
static void unselect_cols(void);
static void unselect_col(uint8_t col);
static void select_col(uint8_t col);
#endif
__attribute__ ((weak))
void matrix_init_kb(void) {
matrix_init_user();
}
__attribute__ ((weak))
void matrix_scan_kb(void) {
matrix_scan_user();
}
__attribute__ ((weak))
void matrix_init_user(void) {
}
__attribute__ ((weak))
void matrix_scan_user(void) {
}
inline
uint8_t matrix_rows(void)
{
return MATRIX_ROWS;
}
inline
uint8_t matrix_cols(void)
{
return MATRIX_COLS;
}
void matrix_init(void)
{
debug_enable = true;
debug_matrix = true;
debug_mouse = true;
// initialize row and col
unselect_rows();
init_cols();
TX_RX_LED_INIT;
// initialize matrix state: all keys off
for (uint8_t i=0; i < MATRIX_ROWS; i++) {
matrix[i] = 0;
matrix_debouncing[i] = 0;
}
matrix_init_quantum();
}
uint8_t _matrix_scan(void)
{
int offset = isLeftHand ? 0 : (ROWS_PER_HAND);
#if (DIODE_DIRECTION == COL2ROW)
// Set row, read cols
for (uint8_t current_row = 0; current_row < ROWS_PER_HAND; current_row++) {
# if (DEBOUNCING_DELAY > 0)
bool matrix_changed = read_cols_on_row(matrix_debouncing+offset, current_row);
if (matrix_changed) {
debouncing = true;
debouncing_time = timer_read();
}
# else
read_cols_on_row(matrix+offset, current_row);
# endif
}
#elif (DIODE_DIRECTION == ROW2COL)
// Set col, read rows
for (uint8_t current_col = 0; current_col < MATRIX_COLS; current_col++) {
# if (DEBOUNCING_DELAY > 0)
bool matrix_changed = read_rows_on_col(matrix_debouncing+offset, current_col);
if (matrix_changed) {
debouncing = true;
debouncing_time = timer_read();
}
# else
read_rows_on_col(matrix+offset, current_col);
# endif
}
#endif
# if (DEBOUNCING_DELAY > 0)
if (debouncing && (timer_elapsed(debouncing_time) > DEBOUNCING_DELAY)) {
for (uint8_t i = 0; i < ROWS_PER_HAND; i++) {
matrix[i+offset] = matrix_debouncing[i+offset];
}
debouncing = false;
}
# endif
return 1;
}
#ifdef USE_I2C
// Get rows from other half over i2c
int i2c_transaction(void) {
int slaveOffset = (isLeftHand) ? (ROWS_PER_HAND) : 0;
int err = i2c_master_start(SLAVE_I2C_ADDRESS + I2C_WRITE);
if (err) goto i2c_error;
// start of matrix stored at 0x00
err = i2c_master_write(0x00);
if (err) goto i2c_error;
// Start read
err = i2c_master_start(SLAVE_I2C_ADDRESS + I2C_READ);
if (err) goto i2c_error;
if (!err) {
int i;
for (i = 0; i < ROWS_PER_HAND-1; ++i) {
matrix[slaveOffset+i] = i2c_master_read(I2C_ACK);
}
matrix[slaveOffset+i] = i2c_master_read(I2C_NACK);
i2c_master_stop();
} else {
i2c_error: // the cable is disconnceted, or something else went wrong
i2c_reset_state();
return err;
}
return 0;
}
#else // USE_SERIAL
int serial_transaction(void) {
int slaveOffset = (isLeftHand) ? (ROWS_PER_HAND) : 0;
if (serial_update_buffers()) {
return 1;
}
for (int i = 0; i < ROWS_PER_HAND; ++i) {
matrix[slaveOffset+i] = serial_slave_buffer[i];
}
#ifdef BACKLIGHT_ENABLE
// Write backlight level for slave to read
serial_master_buffer[SERIAL_LED_ADDR] = get_backlight_level();
#endif
return 0;
}
#endif
uint8_t matrix_scan(void)
{
uint8_t ret = _matrix_scan();
#ifdef USE_I2C
if( i2c_transaction() ) {
#else // USE_SERIAL
if( serial_transaction() ) {
#endif
// turn on the indicator led when halves are disconnected
TXLED1;
error_count++;
if (error_count > ERROR_DISCONNECT_COUNT) {
// reset other half if disconnected
int slaveOffset = (isLeftHand) ? (ROWS_PER_HAND) : 0;
for (int i = 0; i < ROWS_PER_HAND; ++i) {
matrix[slaveOffset+i] = 0;
}
}
} else {
// turn off the indicator led on no error
TXLED0;
error_count = 0;
}
matrix_scan_quantum();
return ret;
}
void matrix_slave_scan(void) {
_matrix_scan();
int offset = (isLeftHand) ? 0 : ROWS_PER_HAND;
#ifdef USE_I2C
for (int i = 0; i < ROWS_PER_HAND; ++i) {
i2c_slave_buffer[i] = matrix[offset+i];
}
#else // USE_SERIAL
for (int i = 0; i < ROWS_PER_HAND; ++i) {
serial_slave_buffer[i] = matrix[offset+i];
}
#ifdef BACKLIGHT_ENABLE
// Read backlight level sent from master and update level on slave
backlight_set(serial_master_buffer[SERIAL_LED_ADDR]);
#endif
#endif
}
bool matrix_is_modified(void)
{
if (debouncing) return false;
return true;
}
inline
bool matrix_is_on(uint8_t row, uint8_t col)
{
return (matrix[row] & ((matrix_row_t)1<<col));
}
inline
matrix_row_t matrix_get_row(uint8_t row)
{
return matrix[row];
}
void matrix_print(void)
{
print("\nr/c 0123456789ABCDEF\n");
for (uint8_t row = 0; row < MATRIX_ROWS; row++) {
phex(row); print(": ");
pbin_reverse16(matrix_get_row(row));
print("\n");
}
}
uint8_t matrix_key_count(void)
{
uint8_t count = 0;
for (uint8_t i = 0; i < MATRIX_ROWS; i++) {
count += bitpop16(matrix[i]);
}
return count;
}
#if (DIODE_DIRECTION == COL2ROW)
static void init_cols(void)
{
for(uint8_t x = 0; x < MATRIX_COLS; x++) {
uint8_t pin = col_pins[x];
_SFR_IO8((pin >> 4) + 1) &= ~_BV(pin & 0xF); // IN
_SFR_IO8((pin >> 4) + 2) |= _BV(pin & 0xF); // HI
}
}
static bool read_cols_on_row(matrix_row_t current_matrix[], uint8_t current_row)
{
// Store last value of row prior to reading
matrix_row_t last_row_value = current_matrix[current_row];
// Clear data in matrix row
current_matrix[current_row] = 0;
// Select row and wait for row selecton to stabilize
select_row(current_row);
wait_us(30);
// For each col...
for(uint8_t col_index = 0; col_index < MATRIX_COLS; col_index++) {
// Select the col pin to read (active low)
uint8_t pin = col_pins[col_index];
uint8_t pin_state = (_SFR_IO8(pin >> 4) & _BV(pin & 0xF));
// Populate the matrix row with the state of the col pin
current_matrix[current_row] |= pin_state ? 0 : (ROW_SHIFTER << col_index);
}
// Unselect row
unselect_row(current_row);
return (last_row_value != current_matrix[current_row]);
}
static void select_row(uint8_t row)
{
uint8_t pin = row_pins[row];
_SFR_IO8((pin >> 4) + 1) |= _BV(pin & 0xF); // OUT
_SFR_IO8((pin >> 4) + 2) &= ~_BV(pin & 0xF); // LOW
}
static void unselect_row(uint8_t row)
{
uint8_t pin = row_pins[row];
_SFR_IO8((pin >> 4) + 1) &= ~_BV(pin & 0xF); // IN
_SFR_IO8((pin >> 4) + 2) |= _BV(pin & 0xF); // HI
}
static void unselect_rows(void)
{
for(uint8_t x = 0; x < ROWS_PER_HAND; x++) {
uint8_t pin = row_pins[x];
_SFR_IO8((pin >> 4) + 1) &= ~_BV(pin & 0xF); // IN
_SFR_IO8((pin >> 4) + 2) |= _BV(pin & 0xF); // HI
}
}
#elif (DIODE_DIRECTION == ROW2COL)
static void init_rows(void)
{
for(uint8_t x = 0; x < ROWS_PER_HAND; x++) {
uint8_t pin = row_pins[x];
_SFR_IO8((pin >> 4) + 1) &= ~_BV(pin & 0xF); // IN
_SFR_IO8((pin >> 4) + 2) |= _BV(pin & 0xF); // HI
}
}
static bool read_rows_on_col(matrix_row_t current_matrix[], uint8_t current_col)
{
bool matrix_changed = false;
// Select col and wait for col selecton to stabilize
select_col(current_col);
wait_us(30);
// For each row...
for(uint8_t row_index = 0; row_index < ROWS_PER_HAND; row_index++)
{
// Store last value of row prior to reading
matrix_row_t last_row_value = current_matrix[row_index];
// Check row pin state
if ((_SFR_IO8(row_pins[row_index] >> 4) & _BV(row_pins[row_index] & 0xF)) == 0)
{
// Pin LO, set col bit
current_matrix[row_index] |= (ROW_SHIFTER << current_col);
}
else
{
// Pin HI, clear col bit
current_matrix[row_index] &= ~(ROW_SHIFTER << current_col);
}
// Determine if the matrix changed state
if ((last_row_value != current_matrix[row_index]) && !(matrix_changed))
{
matrix_changed = true;
}
}
// Unselect col
unselect_col(current_col);
return matrix_changed;
}
static void select_col(uint8_t col)
{
uint8_t pin = col_pins[col];
_SFR_IO8((pin >> 4) + 1) |= _BV(pin & 0xF); // OUT
_SFR_IO8((pin >> 4) + 2) &= ~_BV(pin & 0xF); // LOW
}
static void unselect_col(uint8_t col)
{
uint8_t pin = col_pins[col];
_SFR_IO8((pin >> 4) + 1) &= ~_BV(pin & 0xF); // IN
_SFR_IO8((pin >> 4) + 2) |= _BV(pin & 0xF); // HI
}
static void unselect_cols(void)
{
for(uint8_t x = 0; x < MATRIX_COLS; x++) {
uint8_t pin = col_pins[x];
_SFR_IO8((pin >> 4) + 1) &= ~_BV(pin & 0xF); // IN
_SFR_IO8((pin >> 4) + 2) |= _BV(pin & 0xF); // HI
}
}
#endif

View File

@@ -16,10 +16,7 @@ You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef REV1_CONFIG_H
#define REV1_CONFIG_H
#include "../config.h"
#pragma once
/* USB Device descriptor parameter */
#define VENDOR_ID 0xCB10
@@ -38,6 +35,11 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define MATRIX_ROW_PINS { F4, D7, E6, B4 }
#define MATRIX_COL_PINS { F5, F6, F7, B1, B3, B2, B6 }
/* Split Defines */
#define SPLIT_HAND_PIN D2
/* serial.c configuration for split keyboard */
#define SOFT_SERIAL_PIN D0
/* define if matrix has ghost */
//#define MATRIX_HAS_GHOST
@@ -56,7 +58,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
/* ws2812 RGB LED */
#define RGB_DI_PIN D3
#define RGBLIGHT_ANIMATIONS
#define RGBLED_NUM 14 // Number of LEDs
@@ -77,6 +78,3 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
//#define NO_ACTION_ONESHOT
//#define NO_ACTION_MACRO
//#define NO_ACTION_FUNCTION
#endif

View File

@@ -1,7 +1,5 @@
#include "fourier.h"
void matrix_init_kb(void) {
matrix_init_user();
};

View File

@@ -1,19 +1,8 @@
#ifndef REV1_H
#define REV1_H
#include "../fourier.h"
#pragma once
#include "fourier.h"
#include "quantum.h"
#ifdef USE_I2C
#include <stddef.h>
#ifdef __AVR__
#include <avr/io.h>
#include <avr/interrupt.h>
#endif
#endif
#define LAYOUT( \
LA1, LA2, LA3, LA4, LA5, LA6, RA1, RA2, RA3, RA4, RA5, RA6, RA7, \
LB1, LB2, LB3, LB4, LB5, LB6, RB1, RB2, RB3, RB4, RB5, RB7, \
@@ -30,5 +19,3 @@
{ RC1, KC_NO, RC3, RC4, RC5, RC6, RC7}, \
{ RD1, KC_NO, KC_NO, RD4, RD5, RD6, RD7} \
}
#endif

View File

@@ -1,10 +1,4 @@
SRC += matrix.c \
i2c.c \
split_util.c \
serial.c
# MCU name
#MCU = at90usb1287
MCU = atmega32u4
# Processor frequency.
@@ -41,7 +35,7 @@ F_USB = $(F_CPU)
# Bootloader
# This definition is optional, and if your keyboard supports multiple bootloaders of
# different sizes, comment this out, and the correct address will be loaded
# different sizes, comment this out, and the correct address will be loaded
# automatically (+60). See bootloader.mk for all options.
BOOTLOADER = caterina
@@ -63,12 +57,12 @@ MIDI_ENABLE = no # MIDI controls
AUDIO_ENABLE = no # Audio output on port C6
UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight.
RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight.
SUBPROJECT_rev1 = yes
USE_I2C = yes
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
CUSTOM_MATRIX = yes
SPLIT_KEYBOARD = yes
DEFAULT_FOLDER = fourier/rev1

View File

@@ -1,228 +0,0 @@
/*
* WARNING: be careful changing this code, it is very timing dependent
*/
#ifndef F_CPU
#define F_CPU 16000000
#endif
#include <avr/io.h>
#include <avr/interrupt.h>
#include <util/delay.h>
#include <stdbool.h>
#include "serial.h"
#ifndef USE_I2C
// Serial pulse period in microseconds. Its probably a bad idea to lower this
// value.
#define SERIAL_DELAY 24
uint8_t volatile serial_slave_buffer[SERIAL_SLAVE_BUFFER_LENGTH] = {0};
uint8_t volatile serial_master_buffer[SERIAL_MASTER_BUFFER_LENGTH] = {0};
#define SLAVE_DATA_CORRUPT (1<<0)
volatile uint8_t status = 0;
inline static
void serial_delay(void) {
_delay_us(SERIAL_DELAY);
}
inline static
void serial_output(void) {
SERIAL_PIN_DDR |= SERIAL_PIN_MASK;
}
// make the serial pin an input with pull-up resistor
inline static
void serial_input(void) {
SERIAL_PIN_DDR &= ~SERIAL_PIN_MASK;
SERIAL_PIN_PORT |= SERIAL_PIN_MASK;
}
inline static
uint8_t serial_read_pin(void) {
return !!(SERIAL_PIN_INPUT & SERIAL_PIN_MASK);
}
inline static
void serial_low(void) {
SERIAL_PIN_PORT &= ~SERIAL_PIN_MASK;
}
inline static
void serial_high(void) {
SERIAL_PIN_PORT |= SERIAL_PIN_MASK;
}
void serial_master_init(void) {
serial_output();
serial_high();
}
void serial_slave_init(void) {
serial_input();
// Enable INT0
EIMSK |= _BV(INT0);
// Trigger on falling edge of INT0
EICRA &= ~(_BV(ISC00) | _BV(ISC01));
}
// Used by the master to synchronize timing with the slave.
static
void sync_recv(void) {
serial_input();
// This shouldn't hang if the slave disconnects because the
// serial line will float to high if the slave does disconnect.
while (!serial_read_pin());
serial_delay();
}
// Used by the slave to send a synchronization signal to the master.
static
void sync_send(void) {
serial_output();
serial_low();
serial_delay();
serial_high();
}
// Reads a byte from the serial line
static
uint8_t serial_read_byte(void) {
uint8_t byte = 0;
serial_input();
for ( uint8_t i = 0; i < 8; ++i) {
byte = (byte << 1) | serial_read_pin();
serial_delay();
_delay_us(1);
}
return byte;
}
// Sends a byte with MSB ordering
static
void serial_write_byte(uint8_t data) {
uint8_t b = 8;
serial_output();
while( b-- ) {
if(data & (1 << b)) {
serial_high();
} else {
serial_low();
}
serial_delay();
}
}
// interrupt handle to be used by the slave device
ISR(SERIAL_PIN_INTERRUPT) {
sync_send();
uint8_t checksum = 0;
for (int i = 0; i < SERIAL_SLAVE_BUFFER_LENGTH; ++i) {
serial_write_byte(serial_slave_buffer[i]);
sync_send();
checksum += serial_slave_buffer[i];
}
serial_write_byte(checksum);
sync_send();
// wait for the sync to finish sending
serial_delay();
// read the middle of pulses
_delay_us(SERIAL_DELAY/2);
uint8_t checksum_computed = 0;
for (int i = 0; i < SERIAL_MASTER_BUFFER_LENGTH; ++i) {
serial_master_buffer[i] = serial_read_byte();
sync_send();
checksum_computed += serial_master_buffer[i];
}
uint8_t checksum_received = serial_read_byte();
sync_send();
serial_input(); // end transaction
if ( checksum_computed != checksum_received ) {
status |= SLAVE_DATA_CORRUPT;
} else {
status &= ~SLAVE_DATA_CORRUPT;
}
}
inline
bool serial_slave_DATA_CORRUPT(void) {
return status & SLAVE_DATA_CORRUPT;
}
// Copies the serial_slave_buffer to the master and sends the
// serial_master_buffer to the slave.
//
// Returns:
// 0 => no error
// 1 => slave did not respond
int serial_update_buffers(void) {
// this code is very time dependent, so we need to disable interrupts
cli();
// signal to the slave that we want to start a transaction
serial_output();
serial_low();
_delay_us(1);
// wait for the slaves response
serial_input();
serial_high();
_delay_us(SERIAL_DELAY);
// check if the slave is present
if (serial_read_pin()) {
// slave failed to pull the line low, assume not present
sei();
return 1;
}
// if the slave is present syncronize with it
sync_recv();
uint8_t checksum_computed = 0;
// receive data from the slave
for (int i = 0; i < SERIAL_SLAVE_BUFFER_LENGTH; ++i) {
serial_slave_buffer[i] = serial_read_byte();
sync_recv();
checksum_computed += serial_slave_buffer[i];
}
uint8_t checksum_received = serial_read_byte();
sync_recv();
if (checksum_computed != checksum_received) {
sei();
return 1;
}
uint8_t checksum = 0;
// send data to the slave
for (int i = 0; i < SERIAL_MASTER_BUFFER_LENGTH; ++i) {
serial_write_byte(serial_master_buffer[i]);
sync_recv();
checksum += serial_master_buffer[i];
}
serial_write_byte(checksum);
sync_recv();
// always, release the line when not in use
serial_output();
serial_high();
sei();
return 0;
}
#endif

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