Compare commits

...

173 Commits

Author SHA1 Message Date
852d94f4e6 add keys 2018-11-26 10:35:42 -05:00
1c87b97dd6 merge 2018-11-23 13:24:32 -05:00
3dd6d53942 ergodox: update algernon's layout to v1.12
This is the final version of my layout.

Overall changes
===============

* Updated to work with QMK master.

Miscellaneous
=============

* The `😂` symbol can be entered with UCIS.
* `LEAD r` now inputs `Right Alt`.

Signed-off-by: Gergely Nagy <me@gergo.csillger.hu>
2018-11-22 13:31:30 -08:00
2943d19ecd Keymap: Clone layout for Massdrop's xd75 (#4461)
* Added default75. No lighting.

* Added default75. No lighting.

* Update keyboards/idobo/keymaps/default75/config.h

Co-Authored-By: griffinmilton3 <griffinmilton3@gmail.com>

* Update keyboards/idobo/keymaps/default75/config.h

Co-Authored-By: griffinmilton3 <griffinmilton3@gmail.com>

* Update keyboards/idobo/keymaps/default75/config.h

Co-Authored-By: griffinmilton3 <griffinmilton3@gmail.com>

* Update keyboards/idobo/keymaps/default75/config.h

Co-Authored-By: griffinmilton3 <griffinmilton3@gmail.com>

* Fixes for pull request

* Updated keyboard declartion structure
2018-11-22 10:15:46 -08:00
48262bdce0 Merge pull request #4454 from trunneml/improveddebounce
Adaptive debounce logic
2018-11-22 10:51:20 -05:00
b7dd415c97 Merge pull request #4458 from drashna/ergodox_ez_matrix_fix
Fix Ergodox EZ Matrix scan
2018-11-22 10:50:20 -05:00
87f06e7297 Fix raw hid define for chibios (#4460) 2018-11-21 15:12:40 -08:00
2f34252278 Keymap: Update keymap to match latest changes to Wilba's firmware. (#4432)
* Fix firmware to work with latest Wilba changes (i.e. dynamic keymap) and M60a.

* Get back RGB Backlight codes.

* More tweaks.

* Update users/talljoe/rules.mk

Co-Authored-By: Talljoe <jwasson+github@gmail.com>
2018-11-21 13:18:18 -08:00
8837b9d99e Fix row 11 2018-11-21 07:49:28 -08:00
1485098443 Merge pull request #4453 from drashna/fix_ucis
Fix UCIS code
2018-11-20 15:17:43 -05:00
303fa4ec33 Keyboard: Add Handwired 108 Key with Trackpoint (#4448)
* Include both base keyboards

* Merge the keymap

* Merge the configs

* Add wiring diagram for clarity of documentation

* Merge rules

* Merge keyboard sources

* Change names to compile

* Update documentation to suit

* Add qwerty layout to 108keyTrackpoint

* Separate the dvorak standard layout from a media focused one

* Update documentation to reflect new keymaps

* [style] Add empty lines at ends of files

* [style] Meet current QMK style guide

* Bring READEME closer to the QMK template

* [style] Change all "108keyTrackpoint" to "108key_trackpoint"

* [style] Use "LAYOUT" instead of "KEYMAP"

QMK terminology has changed

Co-Authored-By: mkem114 <20897849+mkem114@users.noreply.github.com>

* Add two spaces after maintainer in README

This is required to render properly

Co-Authored-By: mkem114 <20897849+mkem114@users.noreply.github.com>

* Remove redundant line

"PREVENT_STUCK_MODIFIERS" is default on for QMK

Co-Authored-By: mkem114 <20897849+mkem114@users.noreply.github.com>

* Change include of keymaps to use QMK_KEYBOARD_H

This includes automatically

* Update make rules to match template

* Change from KC_MENU to KC_APP

The button functionality actually wanted is the context menu key

* [style] Change "dvorakMedia" to "dvorak_media"

* Update README to reflect minor changes
2018-11-20 10:11:23 -08:00
93c0362552 Update Levinson readme to support elite-c (#4445)
* init - updated levinson readme to support elite-c

* updated readme per PR comment

* added trailing spaces to lines 6 7 8

* updated readme bootloader instructions

* updated readme

* updated readme
2018-11-20 10:07:20 -08:00
ad91454574 Adaptive debounce logic
The debounce filtering reports a key/switch change directly, without any extra delay. After that the debounce logic will filter all further changes, until the key/switch reports the same state for the given count of scans.
So a perfect switch will get a short debounce period and a bad key will get a much longer debounce period. The result is an adaptive debouncing period for each switch.

This value defines how often the same key/switch state has to be detected in successive reads until the next key state can be reported.
In other words this value defines the minimum debouncing period for a switch.
2018-11-20 15:55:35 +01:00
385de70e4d Merge pull request #4442 from drashna/ergodox_ez_glow_configurable
Make Ergodox EZ Glow's rgb matrix user configurable
2018-11-19 20:01:22 -05:00
26156e84e8 Fix UCIS code
Revert code change that broke UCIS due to bad suggestions
2018-11-19 16:37:49 -08:00
f03fd95000 Fix permanently on capslock led on Atom47 (#4452) 2018-11-19 12:15:16 -08:00
9e0f68a652 Delete readme.md 2018-11-18 17:51:00 -08:00
e0690096f8 Fix my community layouts (#4449)
* fix formatting of keymap

* update readme with boards I currently own

* made the wrong assumption that every board would use the same space for backspace

* update readme with boards I currently own
2018-11-18 15:20:21 -08:00
4d66df5091 Add default glow board 2018-11-18 08:59:52 -08:00
223b3d2be7 Fix i2c_master.d listed more than once warning 2018-11-18 08:57:51 -08:00
bdd41715af Make Ergodox EZ Glow's rgb matrix user configurable 2018-11-18 08:45:24 -08:00
504bf11769 Allows disabling rgb effects in userspace (#4422)
* Allows disabling animations in user space

* Describe disabling effects in the docs

* Allows disabling individual reactive modes

* Adds the list ode defines
2018-11-18 08:24:41 -08:00
de173e344e Satan: add LAYOUT_60_ansi_split_rshift to info.json (#4441) 2018-11-18 08:23:51 -08:00
31298be2b1 Add personal zvecr dz60 keymap (#4443)
* Add Configurator support for dz60 ansi split space

* Add keymap and fix layout macro
2018-11-18 07:53:33 -08:00
9ee2991c3d Default JIS TKL keymap for Pegasus Hoof (#4446)
* Add TKL JIS layout for Pegasus Hoof

Tested with a JIS Majestouch 2 TKL

* Add default_jis keymap for Pegasus Hoof

* Remove unnecessary keycode definition

* Remove legacy fn_actions in favor of MO(1)

* Remove unnecessary build directive
2018-11-18 07:52:53 -08:00
667e0962eb Update to my keymaps and userspace (#4447)
* fix to prime o keymap

* changed ortho keymaps

* added some symbols to lower layer

* set lower to be a higher layer than raise

* added split layout option with center numpad to prime_o keymap

* added some gaming functionality

* added alt f4 ortho keymaps and userspace

* fixed small error
2018-11-18 07:52:14 -08:00
d9453a93f3 Updating Boy_314's XD75 Layout (#4440)
* fixed arrow keys and left control

* added right shift

* latest version

* reverted arrow keys

* edited readme

* added osu layer

* updated osu layout

* updated osu layout

* added full arrow keys to osu layout

* in case i mess up creating macros

* added the best meme key in the world

* added plover steno layer

* updated boy314 layout

* removed unused layers

* added boy314 xd75 layout, inspired by preonic layout

* added boy314 xd75 layout, inspired by preonic layout

* version 2 of boy314's xd75 layout

* added readme notes

* updated readme for boy314 xd75 layout

* qwerty support, brackets on bottom row, caps lock underglow

* fixed readme/

* small changes to allow merging

* minor changes to format

* fixed up default readme

* added numpad and tweaked bottom row
2018-11-16 14:47:06 -08:00
774bee6426 Moved ep40 to ep/40 for easier adding of next ep keyboard (#4439)
* add initial ep40 files

* fixed issues

* updated keymap

* Added media control

* Update keyboards/handwired/ep40/rules.mk

Co-Authored-By: e11i0t23 <32494740+e11i0t23@users.noreply.github.com>

* Fixed requested changes

* Fixed more requested changes

* Added delete key to layor 1

* Updated defualt keympap to have a Backspace mod del key

* removed place holder

Co-Authored-By: e11i0t23 <32494740+e11i0t23@users.noreply.github.com>

* removed obsolete code

Co-Authored-By: e11i0t23 <32494740+e11i0t23@users.noreply.github.com>

* Moved ep40 to ep/40

* Fixed file names for moved code

* Fixed readme
2018-11-16 11:31:44 -08:00
defcfb4953 Update whitefox/konstantin keymap (#4436)
* Add more spacing in keymaps

* Enable link-time optimization

* Disable deprecated TMK actions, change spacing in config.h

* Remove unrelated rules.mk options
2018-11-16 08:55:37 -08:00
b49f37dce9 Unify 68keys with mf68 (#4435)
* Move 68keys keymap to mf68 folder

* Remove 68keys keyboard now its been migrated to mf68 keymap

* Migrate 68keys build config to mf68 keymap overrides
2018-11-16 08:35:04 -08:00
09813793be Add configurator support for luddite (#4434) 2018-11-16 07:37:15 -08:00
39bd760faf Use a single endpoint for HID reports (#3951)
* Unify multiple HID interfaces into one

This reduces the number of USB endpoints required, which frees them up
for other things.

NKRO and EXTRAKEY always use the shared endpoint.

By default, MOUSEKEY also uses it. This means it won't work as a Boot
Procotol mouse in some BIOSes, etc. If you really think your
keyboard needs to work as a mouse in your BIOS, set
MOUSE_SHARED_EP = no in your rules.mk.

By default, the core keyboard does not use the shared endpoint, as not
all BIOSes are standards compliant and that's one place you don't want
to find out your keyboard doesn't work.. If you are really confident,
you can set KEYBOARD_SHARED_EP = yes to use the shared endpoint here
too.

* unify endpoints: ChibiOS protocol implementation

* fixup: missing #ifdef EXTRAKEY_ENABLEs

broke build on AVR with EXTRAKEY disabled

* endpoints: restore error when too many endpoints required

* lufa: wait up to 10ms to send keyboard input

This avoids packets being dropped when two reports are sent in quick
succession (eg. releasing a dual role key).

* endpoints: fix compile on ARM_ATSAM

* endpoint: ARM_ATSAM fixes

No longer use wrong or unexpected endpoint IDs

* endpoints: accommodate VUSB protocol

V-USB has its own, understandably simple ideas about the report formats.
It already blasts the mouse and extrakeys through one endpoint with
report IDs. We just stay out of its way.

* endpoints: document new endpoint configuration options

* endpoints: respect keyboard_report->mods in NKRO

The caller(s) of host_keyboard_send expect to be able to just drop
modifiers in the mods field and not worry about whether NKRO is in use.
This is a good thing. So we just shift it over if needs be.

* endpoints: report.c: update for new keyboard_report format
2018-11-15 22:22:05 -08:00
46cf8cc9b3 Configurator support for Octagon V2 75_ansi (#4426) 2018-11-14 18:37:53 -08:00
daf08f40f2 serial.c update (#4423) 2018-11-14 18:36:53 -08:00
d8f090e559 Docs: Supporting a keyboard in the QMK Configurator (#4396)
* Docs: Configurator Support

* Minor updates

* Updated keyboard.h example to use #pragma once

per @drashna
https://github.com/qmk/qmk_firmware/pull/4396#discussion_r232140934

* Add link to doc under Reference section

Added to _sidebar.md and _summary.md

* Changed doc title; minor tweaks

Re-titled the doc as "Supporting Your Keyboard in QMK Configurator".
Made some minor changes to the keyboard.h examples.

* Added tags object to JSON example
2018-11-14 18:32:28 -08:00
a034602651 adding block def to ishtob's userspace (#4427) 2018-11-14 09:22:16 -08:00
0cda2f43e2 Backlight status functions (#4259)
* add functions to set specific backlight state

* add function to query backlight state

* update documentation with new backlight functions

* Update tmk_core/common/backlight.c

Co-Authored-By: codyd51 <phillip.ennen@gmail.com>

* Update tmk_core/common/backlight.h

Co-Authored-By: codyd51 <phillip.ennen@gmail.com>

* update docs for is_backlight_enabled() name change
2018-11-14 07:45:46 -08:00
f7fcba329d Fixed Unicode Support heading (#4425)
Previously, Unicode Support heading appeared as the last row in the Swap Hands table.
2018-11-14 07:33:46 -08:00
e10a602e7b Keymap: Finex Redox keymap (#4418)
* Added FiNeX custom Redox Layout, first commit.

* updated readme

* removed old code
2018-11-13 14:44:50 -08:00
991686203c converter/m0110_usb Configurator support and readme cleanup (#4421)
* Apple M0110 USB converter: readme cleanup

* Apple M0110 USB converter: Configurator support
2018-11-13 14:20:42 -08:00
911b2d0756 Docs: Fix descriptions of KC_INT1 and KC_INT3 2018-11-13 12:27:33 -08:00
4609d68ddc Keyboard: Add 412 64 Model 00 keyboard. (#4400)
* Add 412-64 keyboard firmware

It's pretty barebones for now, but the Model 00 is also a pretty barebones machine. Model 01 won't be better, but plenty of pins exist for things like LEDs on Model 02.

* MANU/PROD ID changes.

Changed around the MANUFACTURER and PRODUCT IDs to be more polite when viewed in qmk toolbox.

* Fixing PROD again.

For the love of all that is good and holy, that was ugly. This new one looks better. This stuff matters to me for some reason.

* Yep, updating MANU again.

There we go. That's better - From my name to my "design firm".

* Update keyboards/412_64/keymaps/default/keymap.c

Co-Authored-By: FateEverywhere <41215461+FateEverywhere@users.noreply.github.com>

* Update keyboards/412_64/rules.mk

Co-Authored-By: FateEverywhere <41215461+FateEverywhere@users.noreply.github.com>

* Update keyboards/412_64/rules.mk

Co-Authored-By: FateEverywhere <41215461+FateEverywhere@users.noreply.github.com>

* Update keyboards/412_64/rules.mk

Co-Authored-By: FateEverywhere <41215461+FateEverywhere@users.noreply.github.com>

* Update keyboards/412_64/rules.mk

Co-Authored-By: FateEverywhere <41215461+FateEverywhere@users.noreply.github.com>
2018-11-13 08:38:48 -08:00
2dea540afb Refactoring M6-A, M6-B, Zeal60, Zeal65, WT60-A, WT65-A, WT80-A (#4417)
* Refactored M6-B to use Zeal60 RGB backlight code

* Fixed M6-B LED co-ordinates

* Minor changes to RGB config for Zeal65

* Added dynamic keymaps to WT80-A, WT60-A, WT-80A, U80-A
2018-11-13 08:31:25 -08:00
caa293a8f7 Remove duplicate row from Available functions table in i2c_driver doc (#4416) 2018-11-13 08:27:46 -08:00
7e87532ec2 converter/ibm_terminal Refactor and Configurator support (#4414)
* IBM Terminal converter: layout macro refactor

- Renamed KEYMAP to LAYOUT
- Renamed KEYMAP_101 to LAYOUT_101
- minor matrix array fixes

* IBM Terminal converter: default keymap refactor

- Updated layout macro names
- Updated to #include QMK_KEYBOARD_H
- config.h updated to use #pragma once

* IBM Terminal converter: priyadi keymap refactor

- Updated layout macro names
- Updated to #include QMK_KEYBOARD_H
- Removed redundant KC_TRNS and KC_NO defines
- config.h updated to use #pragma once

* IBM Terminal converter: Configurator support

* IBM Terminal converter: readme cleanup

Updated markdown formatting.

* IBM Terminal converter: readme rename

Renamed file to fully lowercase.
2018-11-13 08:26:55 -08:00
709bf386f4 Update Practice60 to use MT feature and revise system ticks (#4413)
* Update Practice60 to use MT feature and revise system tics

* Increase system tick frequency

10,000 instead of 10,000
2018-11-12 22:03:48 -08:00
9b28dc8488 KBDFans KBD67 Support (#4412)
* initial commit for kbd67 keyboard

* add in a standard matrix

* get the correct matrix for layout_all

* add a layout_65_ansi LAYOUT macro

* get a default keymap in

* add caps lock led support

* fix formatting of my name in the comments

* add QMK Configurator support

* turn on bootmagic
2018-11-12 21:46:34 -08:00
2dc14d1cb3 Fixed incorrect link to feature_combo.md in features.md docs file. Was linked to feature_combos.md, but _sidebar.md, _summary.md, and config_options.md all link to feature_combo.md. Assuming that it should not be pluralized. (#4411) 2018-11-12 16:46:01 -08:00
e653cc198e The "Practice60" Board, Blue Pill powered (#4407)
* Starting point for blue pill based practice60

* Changes

* add

* try raw bin no botloader

* swap back to bootloader version

* edit

* Remove debug LED flash

* Disable JTAG to open up B3 and B4

* Add led backlight support (no breathing yet)

* Update matrix for correctness

* RGB Underglow working in a very simple state

* not as bright

* Move to handwired

* revert ChibiOS_Test changes

* Changes based on PR comments

* Address PR comments v2

* Move files
2018-11-12 16:31:22 -08:00
599b21b9f4 convert to unix line-endings [skip ci] 2018-11-12 20:51:24 +00:00
2b3473455c Change hex file permission to 644 from 755 2018-11-12 12:30:51 -08:00
d0f8e1babe modify quantum/template/avr/config.h: add rgblight effect configurations 2018-11-12 12:23:12 -08:00
2b7decbaeb Fix up screen off timer of helix (#4347)
* Fix up screen off timer of helix

* Fix Up ScreenOffInterval exceeded uint16_t

* Fix Up never waking up once screen off if in case of matrix are not dirty

* Changing referenIng incorrect constant name

* OLED_ENABLED => SSD1306OLED

* Improve internal processing of process_record_kb()

* Use the return value of process_record_gfx()

* Move a include statement into #ifdef block

Move   #include "ssd1306.h` statement into #ifdef block

* Move process_record_kbI()

Move process_record_kb() from helix.c to rev1.c/rev2.c/pico.c

* Move process_record_kb()
2018-11-12 12:20:50 -08:00
aa03049015 Fix up screen off timer of crkbd (#4346)
* fix about screen off timer

* Fix Up ScreenOffInterval exceeded uint16_t

* Fix Up never waking up once screen off if in case of matrix are not dirty.

* Revert "fix about screen off timer"

This reverts commit 3d175f2340.

* Fix up screen off timer of crkbd

* Fix Up ScreenOffInterval exceeded uint16_t

* Fix Up never waking up once screen off if in case of matrix are not dirty.

* Fix up screen off timer of helix

* Fix Up ScreenOffInterval exceeded uint16_t

* Fix Up never waking up once screen off if in case of matrix are not dirty

* Revert "Fix up screen off timer of helix"

This reverts commit f0efb82443.

* Improve internal processing of process_record_kb()

* Use the return value of process_record_gfx()

* Fix a indent

Fix a indent
2018-11-12 12:19:29 -08:00
b1e74aee43 Make sure that avr-gcc@7 gets linked into the path on MacOS. 2018-11-12 12:16:43 -08:00
2509039abf Add missing arm gcc compiler for openSUSE 15.0 and Tumbleweed. 2018-11-12 12:16:10 -08:00
b26ccf9a2f Add rules.mk to ortho_4x12/buswerks keymap (#4405)
* Added buswerks keymap

* cleaned up comments on buswerks keymap

* Added buswerks keymap readme.md

* Fixed spelling in buswerks readme.md

* Removed unnecessary includes, changed process_record_user to now use set_single_persistent_default_layer(), removed deprecated functions, and moved the audio ifdef block to config.h

* Changed buswerks ortho_4x12 layout to accommodate 'MIT' layout

* Updated README.md to reflect layout changes

* update buswerks keymap

* add buswerks tragicforce68 keymap
2018-11-12 12:04:12 -08:00
b173c05cc2 Tidy 40percentclub boards (#4403)
* Remove unnecessary re-definitions for XXXXXXX and _______

* Update 6lit to use KC_NO in layout macros

* Update rules.mk to follow current template

* Remove use of deprecated function action_get_macro - unused and contents were from old template

* Remove use of deprecated function action_get_macro - all code was commented out

* Remove use of deprecated function action_get_macro - convert macro to use process_record_user

* Convert keymap to consistent use of _______

* fix use of old style header guards

* Swap KC_NO for XXXXXXX macro since the swap to the macro for KC_TRANS

* Resolve use of ?= in rules.mk files

* Remove duplication of rules.mk and config.h in gherkin mjt keymap

* Remove unnecessary #includes

* Align layout macros so foobar can use gherkin keymaps

* Align 6lit layout macros with foobar

* Remove ifndef QUANTUM_DIR from keymaps
2018-11-12 12:02:28 -08:00
746005acba Keyboard: Initial 25 port (#4394)
* Initial 25 port

* Initial 25 port - fix info.json and hand_swap_config

* Review comments - fix layout macros, copyright comments, and duplicated use of layering macros
2018-11-12 12:00:45 -08:00
b49fd46eaa Add support for slackware distribution (linux_install.sh) (#4369)
* Add support for slackware distribution (linux_install.sh)

The required packages are not provided by the official repository. The packages
need to be installed from slackbuilds.org either manually or with the help of
third party tools like sbotools.

* Modify linux_install.sh according to code review

Modifies the Slackware section of the linux_install.sh script based on the
suggestions from the code review.

* Modify utils/linux_install.sh according to suggestions
2018-11-12 11:58:07 -08:00
6274980e61 Improve new_project script (#4373)
* Improve new_project script

 - use git user.name if available to replace the boilerplate name in
   files we generate
 - fix shellshock warnings

* Test for git repo

Suggestion by @skullydazed

* Fix shellshock warning

* Incorporate feedback from reviewers

 - thanks @vomindoraan
 - use a heredoc instead of echo for console
 - factor out common paths
2018-11-11 19:54:10 -08:00
4083614023 I2C driver docs (#4298)
* I2C driver docs

- Added I2C driver docs.
- Changed arm master i2c driver to have a weak i2c_init as it is impossible to account for all possible port configuration in the STM32 world.

* Update docs/i2c_driver.md

Co-Authored-By: yiancar <yiangosyiangou@cytanet.com.cy>

* Update docs/i2c_driver.md

Co-Authored-By: yiancar <yiangosyiangou@cytanet.com.cy>

* Update docs/i2c_driver.md

Co-Authored-By: yiancar <yiangosyiangou@cytanet.com.cy>

* Update docs/i2c_driver.md

Co-Authored-By: yiancar <yiangosyiangou@cytanet.com.cy>

* GPIO release fix
2018-11-10 15:26:39 -05:00
3ba242cc3f Keymap for random key presses for the scrabblepad (#4356)
* Random key presses for scrabblepad

* Fix keymap code comments

* Remove unused methods as per code review
2018-11-10 08:22:36 -08:00
b3853e7d40 Keymap: Add default keymap from web for 1up60hse (#4351) 2018-11-10 08:21:24 -08:00
d6184be67a IDOBO Keyboard Support (75Keys Aluminum Keyboard) (#4401)
* initial commit

* put my name everywhere

* get the switch matrix correct

* add a basic keymap

* use a better LAYOUT macro

* update readme

* Add QMK Configurator support
2018-11-09 12:15:37 -08:00
519ce723fb Added support for backlight on diverge3 , and added a UK iso layout (#4392)
* Added support for backlight , and a UK iso layout

Added support for backlight , and a UK iso layout. Now uses the SPLIT_KEYBOARD #define rather than relying on lets split

* Update keyboards/diverge3/keymaps/isoUK/keymap.c

Co-Authored-By: mcmadhatter <mcmadhatter@hotmail.com>

* Update keyboards/diverge3/keymaps/isoUK/keymap.c

Co-Authored-By: mcmadhatter <mcmadhatter@hotmail.com>

* Simplified the lower layer

Simplified the lower layer

* dir rename to snake case

dir rename to snake case

* changed dir case

changed dir case

* Update keyboards/diverge3/rules.mk

Co-Authored-By: mcmadhatter <mcmadhatter@hotmail.com>

* Update keyboards/diverge3/keymaps/iso_uk/config.h

Co-Authored-By: mcmadhatter <mcmadhatter@hotmail.com>

* Update keyboards/diverge3/config.h

Co-Authored-By: mcmadhatter <mcmadhatter@hotmail.com>

* Update keyboards/diverge3/keymaps/iso_uk/keymap.c

Co-Authored-By: mcmadhatter <mcmadhatter@hotmail.com>

* Update keyboards/diverge3/keymaps/iso_uk/keymap.c

Co-Authored-By: mcmadhatter <mcmadhatter@hotmail.com>

* Update keyboards/diverge3/keymaps/iso_uk/keymap.c

Co-Authored-By: mcmadhatter <mcmadhatter@hotmail.com>

* Update keyboards/diverge3/config.h

Co-Authored-By: mcmadhatter <mcmadhatter@hotmail.com>

* Update keyboards/diverge3/keymaps/iso_uk/config.h

Co-Authored-By: mcmadhatter <mcmadhatter@hotmail.com>

* Update keyboards/diverge3/keymaps/iso_uk/config.h

Co-Authored-By: mcmadhatter <mcmadhatter@hotmail.com>

* Update keyboards/diverge3/keymaps/iso_uk/config.h

Co-Authored-By: mcmadhatter <mcmadhatter@hotmail.com>

* aligned and tidyied up

aligned and tidyied up
2018-11-09 11:16:08 -08:00
6ae409dd55 Add my new ANSI layout dz60 setup (#4397)
* minor additions to alps64 and dz60

* Rename crd keymap to represent 2u lshift layout

* Add crd's new ANSI layout dz60 with preferred layers
2018-11-09 08:49:29 -08:00
fa2183a64a Keymap: dlg's tada68 keymap (#4289)
* dlg's keymap

* fix list order

* remove cruft

* pragma

Co-Authored-By: dlgoodr <dlg@dsrw.org>

* turn on bootmagic, enable swapping ` and Esc while I figure out which compromise is least bad
2018-11-08 17:01:16 -08:00
73883425a5 relocate 40percent.club boards to new parent folder (#4380)
* Initial move of 40percent.club boards to common parent folder.

* Refactor readme files to be consistent

* Refactor readme files to be consistent - fix make command examples.

* Refactor readme files to be consistent - align readme filenames.

* Refactor readme files to be consistent - fix repo url.

* Disable Community keymap builds as they are currently failing due to missing functionality

* Move more of 40percent.club boards to common parent folder.

* Refactor readme files to be consistent - align readme filenames.

* Refactor readme files to be consistent - fix make command examples.
2018-11-08 15:17:41 -08:00
ef84bd9799 Keyboard: Add 30wer config and keymap (#4386)
* Preliminary 30wer firmware. Not tested on real board yet.

* Added a layer to default 30wer keymap.

* Wrote readme for 30wer.

* Added 30wer info.json.
2018-11-08 15:12:42 -08:00
5eb69ca224 Keyboard: fix ifdef for crkbd's default/keymap.c
undef SSD1306OLED should not kill entire process_record_user() function.
2018-11-08 06:45:09 -08:00
ba76fcfb8b Add Layout-b for GH60 satan (#4123)
* Add Layout-b for GH60 satan

* Update layout, toggle for colemak layout

* Rename layout, replace function with KC_GESC

* Update Layer order, Readme

* Remove unnecessary code

* Add backspace in extend layer
2018-11-07 21:39:29 -08:00
945dd946ab Fix misspelled make option, format rules.mk files (#4382) 2018-11-07 09:29:57 -08:00
94f58322ac Configurable Rainbow Swirl range (#4376)
* Configurable Rainbow Swirl range

This allows tweaking of the rainbow effect to
 get different effects on keyboards with varied
 LED layouts. We found the value 1950 works on
 the RGBKB.net Sol to get a cool striped effect
 across the keyboard.

* Document RGBLIGHT_RAINBOW_SWIRL_RANGE

* Better wording for the documentation
2018-11-07 08:25:18 -08:00
a30dd2bb17 Add xd75/billypython keymap (#4381)
* Add xd75/billypython keymap

* Expand rules.mk

(cherry picked from commit 806fee94ae3a21b6ca7a34624101349b57d41b75)

* Expand billypython's rules.mk

* Remove unused stuff in whitefox/billypython
2018-11-06 17:04:02 -08:00
fc477a1ee7 Add Tragicforce 68 layout for split backspace and add configurator layouts (#4378) 2018-11-06 13:13:58 -08:00
f01a80968b Port over Noxary 268.2 from Rosakiin's Noxary Firmware (#4354)
* port over 268.2 from Noxary Firmware

* rename files

* update readme

* put rozakiin's ame in more places

* add configurator support

* Update keyboards/noxary/268_2/n268_2.c

Co-Authored-By: mechmerlin <30334081+mechmerlin@users.noreply.github.com>

* Update keyboards/noxary/268_2/keymaps/default/keymap.c

Co-Authored-By: mechmerlin <30334081+mechmerlin@users.noreply.github.com>

* rename 268_2 keyboard files
2018-11-06 12:35:08 -08:00
3dec80b774 Improve wording, punctuation and capitalization in newbs_getting_started guide (#4342)
* Improve wording, punctuation and capitalization in newbs_getting_started guide

Also add some links

* Update example build command output

Co-Authored-By: vomindoraan <vomindoraan@gmail.com>

* Replace occurrences of "layout" with "keymap"

Co-Authored-By: MechMerlin <30334081+mechmerlin@users.noreply.github.com>

* Explicitly instruct users to open an MSYS2 MinGW 64-bit terminal

* MSYS2 Console → MSYS2 MinGW

* Replace thin spaces with regular spaces
2018-11-06 12:21:44 -08:00
a5d22424f4 Commit my DZ60 keymap (#4375)
* default mechmerlin keymap initial commit

* fix up the keymap

* cleanup keymap

* add rgb sleep functionality

* add the beginning of a readme

* fix that compile error

* fixup formatting

* spruce up that readme

* add RGB lighting controls to _CL layer

* update readme

* set rgb underglow color

* update readme

* fix formatting
2018-11-06 12:04:25 -08:00
29dd664589 Add whitefox/billypython keymap (#4374)
* Add keyboards/whitefox/keymaps/billypython

Cloned from vomindoraan/qmk_firmware

* Customize keymap for Linux
2018-11-06 12:03:33 -08:00
a91f439aec Helix-serial.c configuration improvement (#4370)
The new simple API can be selected.

Previous version, can select two way.
  * use old API (compatible with let's split serial.c)
  * use new API (multi-type transaction)

This version, can select three way.
  * use old API (compatible with let's split serial.c)
  * use new API (single-type transaction)
  * use new API (multi-type transaction)

There is no change in the code generated by this change.
2018-11-06 12:02:30 -08:00
8f5ac39fb9 separated all my changes into separate files, working on generalizing my relativity macros. (#4368)
* Updating to my local changes.

* Added auto-complete for joins.

* Added lights to imply current state better
2018-11-06 12:01:18 -08:00
f8d8005835 Zinc : Update to latest serial.c #4278 (#4361)
* Add Zinc keyboard

* Fix photo

* Fix readme.md

* Fix RGB LED init of monks/keymap.c

* Fix default keymap and readme.jp

* Fix change DEFS of RGB ANIMATIONS to LED_ANIMATIONS

* Add EOL

* Use serial_config_simpleapi.h

* Fix comment char

* Fix error handling in split_scomm.c : mtei works

* Fix keymaps

* Remove DISABLE_LEADER definition

* Remove pro_micro.h

* Add 2 spaces after Hardware name

* Fix keymaps
  - remove audio codes
  - change LAYOUT to LAYOUT_ortho_4X12
  - change "persistent_default_layer_set" to core function

* Use the Community Layouts feature
  -  with some clean up

* Update latest serial.c #4278
2018-11-06 12:00:02 -08:00
63e212c0b7 Add localized LED flash effect on keypress to Massdrop ALT (#4340) 2018-11-06 11:54:53 -08:00
388df5359b Fix Spacing issue in makefile that breaks Terminal config 2018-11-06 11:31:40 -05:00
1b3ac77fec mapdev's Espectro layout (#4366)
* Add mapdev layout to espectro

* Add mapdev layout to espectro

* - Update MO

Co-Authored-By: tcatkins99 <tatkins@beitzanddaigh.com>
2018-11-06 08:06:50 -08:00
73e634482e command.h include was not set correctly 2018-11-06 00:40:30 -05:00
40313cfa3b Fix Terminal feature on ChibiOS 2018-11-06 00:40:02 -05:00
ec34b53864 Fixe line endings 2018-11-06 00:39:37 -05:00
4a033641df Update Features page to reflect all of the features linked in the sidebar/summary 2018-11-06 00:38:54 -05:00
26a201e687 fix example to reflect caveat 2018-11-06 00:38:44 -05:00
6e44f94f21 Add EEPROM_RESET keycode to core code (#4234)
* Add EEPROM Reset keycode

* Add keycode to docs

* Move EEPROM Reset code to the end of the enum

* Cleanup and naming change
2018-11-06 00:38:18 -05:00
f2101cfb6a Update to drashna keymaps (#4365)
* Consistency fixes and more eeprom defaults

* Handle setting Unicode mode on eeprom reset better

* Unicode EEPROM hack

* Re-enable permissive hold and ignore mod tap

* Set unicode input mode

* More unicode stuff

* more haaaaaacks

* Attempted RGB Cleanup

* Fix compiler issue

* Add GitLab CI config for personal compiling

* Add avr gcc version to GitLab CI script

* Add rgblight init to matrix init
2018-11-06 00:36:26 -05:00
6729265625 Clarify the Mod Tap defines in documentation (#4352)
* Fix up Mod Tap settings keys

* Change link names

* permissive hold wordsmith

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

* ignore mod tap wordsmithing

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

* grammar fix

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

* wordsmithing

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

* word smithing

Co-Authored-By: drashna <drashna@live.com>
2018-11-06 00:35:16 -05:00
4636f0f623 Remove ALTG(kc) as it's misleading and is not actually AltGr (#4338)
* Remove ALTG(kc) as it's misleading and is not actually AltGr

* Add temporary alias for ALGR in keyboards/planck/keymaps/pevecyan/keymap.c
2018-11-06 00:34:54 -05:00
5729380530 Keyboard: Initial 6lit port (#4355)
* Initial 6lit port

* Pull request review changes

* Switch to bootmagic lite
2018-11-05 19:01:13 -08:00
a3bb8c05c9 Keyboard: Initial foobar port (#4367) 2018-11-05 19:00:54 -08:00
a49d0a1e83 Keyboard: Add Nyquist Rev 3 (#4287)
* Add Nyquist Rev 3

* Switch to split_common
2018-11-05 11:00:38 -08:00
a95fc388fd Redox: move curly brackets one row down. (#4364)
In #4258, the 2 curly brackets were inadvertently moved one row up. This fixes that.
2018-11-05 06:04:52 -08:00
d1d5f20078 Update whitefox/konstantin keymap (#4363)
* Use Magic+Esc for entering bootloader mode

* Expand rules.mk

* Improve FN_RCTL tap dance

* Avoid one-line if statements

* Add PROGMEM to keymaps definition

* td_fn_rctl_* → td_fn_rctrl_*

* Fix FN_RCTL tap dance bug when count is 4, 8, 12 etc.

* Add ACTION_TAP_DANCE_DOUBLE_MODS

* Rearrange/rename keycode defines

* Use RAL_RGU and RCT_RSF in keymaps

* Replace keymap ASCII art with box drawing characters

* Add FN_FNLK and use it

* Set Unicode input mode in eeconfig_init_user instead of matrix_init_user
2018-11-05 06:04:14 -08:00
f2fda1bd56 Keymap update Adding RGB underglow controls. (#4358)
* Update userspace with common config.h

* Add my dz60, satan and xd75 keyboard keymaps

* Fixing executable bits changed during last upstream merge

* Cleanup unnecessary files and defines

* Remove unnecessary defines from userspace config

* Add underglow controls to dz60 function layer

* Fixing merge conflicts

* Fixing exectable bits changed during merge
2018-11-05 00:05:48 -08:00
f28a4e39fc Fix Espectro build (#4353)
After further testing and feedback from others, the bottom row matrix was incorrect.  Also RGB number was incorrect (I was tired when building this, really shouldn't do that).
2018-11-04 16:00:33 -08:00
756d92c1a0 Keyboard: Update the serial.c of crkbd based on the helix-serial.c (#4349) 2018-11-04 10:46:26 -08:00
e9fd42df71 converter/adb_usb Configurator support and adb_usb.h cleanup (#4348)
* converter/adb_usb: Configurator support

Note: LAYOUT_ext_ansi has a blank space between the Spacebar and the
Right Alt/Option key when loaded in the Configurator. This is
deliberate.

Stock Apple Extended Keyboards and AEK IIs send the scan code for Left
Command when either Command key is used. (This is noted already in the
readme.) That being the case, the Command keys cannot be assigned to
different functions. Whichever keycode is placed on Left Command will be
used for both Command keys.

* converter/adb_usb: adb_usb.h cleanup

- replaced KEYMAP_COMMON_H with ADB_USB_H
- white space changes for visual alignment in LAYOUT_ext_ansi macro
2018-11-04 09:32:42 -08:00
3946ea2141 Keyboard: adding Espectro (#4343)
* added Espectro

Added Espectro keyboard from MechKeys.ca

* Update keyboards/espectro/config.h

Co-Authored-By: TurboMech <32869044+TurboMech@users.noreply.github.com>

* Update keyboards/espectro/config.h

Co-Authored-By: TurboMech <32869044+TurboMech@users.noreply.github.com>

* Update keyboards/espectro/config.h

Co-Authored-By: TurboMech <32869044+TurboMech@users.noreply.github.com>

* Update keyboards/espectro/espectro.c

Co-Authored-By: TurboMech <32869044+TurboMech@users.noreply.github.com>

* Update keyboards/espectro/espectro.c

Co-Authored-By: TurboMech <32869044+TurboMech@users.noreply.github.com>

* Update keyboards/espectro/espectro.c

Co-Authored-By: TurboMech <32869044+TurboMech@users.noreply.github.com>

* Update keyboards/espectro/espectro.c

Co-Authored-By: TurboMech <32869044+TurboMech@users.noreply.github.com>

* Update keyboards/espectro/espectro.c

Co-Authored-By: TurboMech <32869044+TurboMech@users.noreply.github.com>

* Update keyboards/espectro/espectro.h

Co-Authored-By: TurboMech <32869044+TurboMech@users.noreply.github.com>

* Update keyboards/espectro/espectro.h

Co-Authored-By: TurboMech <32869044+TurboMech@users.noreply.github.com>

* Update keyboards/espectro/espectro.h

Co-Authored-By: TurboMech <32869044+TurboMech@users.noreply.github.com>

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

Co-Authored-By: TurboMech <32869044+TurboMech@users.noreply.github.com>

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

Co-Authored-By: TurboMech <32869044+TurboMech@users.noreply.github.com>

* Update keyboards/espectro/keymaps/mac/config.h

Co-Authored-By: TurboMech <32869044+TurboMech@users.noreply.github.com>

* Update keyboards/espectro/keymaps/mac/config.h

Co-Authored-By: TurboMech <32869044+TurboMech@users.noreply.github.com>

* Update keyboards/espectro/keymaps/mac/config.h

Co-Authored-By: TurboMech <32869044+TurboMech@users.noreply.github.com>

* Update keyboards/espectro/keymaps/mac/config.h

Co-Authored-By: TurboMech <32869044+TurboMech@users.noreply.github.com>

* Update keyboards/espectro/keymaps/mac/keymap.c

Co-Authored-By: TurboMech <32869044+TurboMech@users.noreply.github.com>

* Update keyboards/espectro/keymaps/mac/keymap.c

Co-Authored-By: TurboMech <32869044+TurboMech@users.noreply.github.com>

* Update keyboards/espectro/keymaps/mac/keymap.c

Co-Authored-By: TurboMech <32869044+TurboMech@users.noreply.github.com>

* Update keyboards/espectro/keymaps/mac/keymap.c

Co-Authored-By: TurboMech <32869044+TurboMech@users.noreply.github.com>

* Update keyboards/espectro/keymaps/mac/keymap.c

Co-Authored-By: TurboMech <32869044+TurboMech@users.noreply.github.com>

* Update keyboards/espectro/keymaps/mac/keymap.c

Co-Authored-By: TurboMech <32869044+TurboMech@users.noreply.github.com>

* Update keyboards/espectro/keymaps/mac/keymap.c

Co-Authored-By: TurboMech <32869044+TurboMech@users.noreply.github.com>

* Update keyboards/espectro/keymaps/mac/keymap.c

Co-Authored-By: TurboMech <32869044+TurboMech@users.noreply.github.com>

* Update keyboards/espectro/keymaps/mac/keymap.c

Co-Authored-By: TurboMech <32869044+TurboMech@users.noreply.github.com>

* Update keyboards/espectro/keymaps/mac/keymap.c

Co-Authored-By: TurboMech <32869044+TurboMech@users.noreply.github.com>

* Update keyboards/espectro/readme.md

Co-Authored-By: TurboMech <32869044+TurboMech@users.noreply.github.com>

* Update keyboards/espectro/readme.md

Co-Authored-By: TurboMech <32869044+TurboMech@users.noreply.github.com>

* Update keyboards/espectro/readme.md

Co-Authored-By: TurboMech <32869044+TurboMech@users.noreply.github.com>

* Update keyboards/espectro/readme.md

Co-Authored-By: TurboMech <32869044+TurboMech@users.noreply.github.com>

* Update keyboards/espectro/rules.mk

Co-Authored-By: TurboMech <32869044+TurboMech@users.noreply.github.com>

* Update keyboards/espectro/rules.mk

Co-Authored-By: TurboMech <32869044+TurboMech@users.noreply.github.com>

* Update keyboards/espectro/rules.mk

Co-Authored-By: TurboMech <32869044+TurboMech@users.noreply.github.com>

* Update keyboards/espectro/rules.mk

Co-Authored-By: TurboMech <32869044+TurboMech@users.noreply.github.com>

* Update keyboards/espectro/rules.mk

Co-Authored-By: TurboMech <32869044+TurboMech@users.noreply.github.com>

* Update keyboards/espectro/rules.mk

Co-Authored-By: TurboMech <32869044+TurboMech@users.noreply.github.com>

* Update keyboards/espectro/rules.mk

Co-Authored-By: TurboMech <32869044+TurboMech@users.noreply.github.com>

* Update keyboards/espectro/rules.mk

Co-Authored-By: TurboMech <32869044+TurboMech@users.noreply.github.com>

* Update keyboards/espectro/rules.mk

Co-Authored-By: TurboMech <32869044+TurboMech@users.noreply.github.com>

* Update keyboards/espectro/rules.mk

Co-Authored-By: TurboMech <32869044+TurboMech@users.noreply.github.com>

* Update keyboards/espectro/rules.mk

Co-Authored-By: TurboMech <32869044+TurboMech@users.noreply.github.com>

* fixing Espectro pull request

* fixing macros in mac keymap
2018-11-04 07:39:58 -08:00
b5d7bb6154 converter/usb_usb Refactor and Configurator support (#4345)
* converter/usb_usb: layout macro refactor

- KEYMAP_ALL renamed to LAYOUT_all
- KEYMAP renamed to LAYOUT_ansi
- KEYMAP_ISO renamed to LAYOUT_iso
- KEYMAP_JIS renamed to LAYOUT_jis

* converter/usb_usb: keymap refactor

- all keymaps now use #include QMK_KEYBOARD_H
- layout macro names updated
- removed deprecated TMK macro/function code

* Add info.json file for Configurator support
2018-11-03 23:57:42 -07:00
60ed0b7c30 Keyboard: Port over the x268 Noxary Firmware (#4339)
* port over Rozakiin https://github.com/Rozakiin/Noxary_Firmware/tree/master/noxary_x268

* rename LAYOUT to LAYOUT_65_ansi default layout

* add configurator support

* add community layout support

* put Rozakiin's name everywhere

* update readme

* problems with the 65_ansi keymap to be diagnosed later
2018-11-03 15:09:32 -07:00
80c04b2919 5x5bt (#4333)
* got bluetooth working

* get rid of description on bluetooth

* get rid of commented code used for testing

* Update config.h
2018-11-03 10:39:40 -07:00
BK
bdc72740cb Add distro support for sabayon (#4320)
* Add distro support for sabayon

Sabayon is a gentoo based distro with a different package manager. Does
not need any use flags or masking for the required packages.

* Add missing backslash

* Put echo string in quotes, remove extra newline

* Order gentoo/sabayon packages alphabetically.
2018-11-03 10:38:37 -07:00
292a87ad04 Instructions on how to flash via STM32 bootloader (#4316)
* Add instructions on flashing ARM keyboards with default STM32 bootloader

* fixed typo; added note suggestion to step 4
2018-11-03 13:08:05 -04:00
0633eb0273 Increasing square wave buffer to max volume. (#4296)
* Increasing square wave buffer to max volume.

* Using range designated initializers for square waves; defining DAC_SAMPLE_MAX.
2018-11-03 12:22:57 -04:00
cd544e10a9 Keymap: Fixed poor layout of EP40 default keymap (#4330)
* add initial ep40 files

* fixed issues

* updated keymap

* Added media control

* Update keyboards/handwired/ep40/rules.mk

Co-Authored-By: e11i0t23 <32494740+e11i0t23@users.noreply.github.com>

* Fixed requested changes

* Fixed more requested changes

* Added delete key to layor 1

* Updated defualt keympap to have a Backspace mod del key

* removed place holder

Co-Authored-By: e11i0t23 <32494740+e11i0t23@users.noreply.github.com>

* removed obsolete code

Co-Authored-By: e11i0t23 <32494740+e11i0t23@users.noreply.github.com>
2018-11-02 16:41:26 -07:00
6dec3550e0 Niu keymap (#4273)
* Add modified planck layout

* Update rules
2018-11-02 14:48:44 -07:00
cec203ea80 USB Suspend for arm_atsam protocol
Rewrote USB state tracking for implementation of suspend state.
Updated suspend.c in entirety.
Main subtasks (generally hardware related) are now run prior to keyboard task.
2018-11-02 14:33:07 -07:00
563fe23e53 Fix CTRL/ALT keyboard does not wake computer from sleep
Fix for Massdrop CTRL and ALT keyboards not waking computer from sleep
2018-11-02 14:33:07 -07:00
f1529e74c4 Remove old declaration
Co-Authored-By: nooges <nooges@users.noreply.github.com>
2018-11-02 14:31:29 -07:00
a5fa75fcb3 Move disable JTAG code from keyboard_init to keyboard_setup
This way all split keyboards are using that code instead of just those using split_common with the fix
2018-11-02 14:31:29 -07:00
5779ffb59a Set the executable bit for sh scripts under util. 2018-11-02 13:42:05 -04:00
34112dac36 Adds the Proton C base project (#4224)
* adds proton c base

* fixes custom matrix include

* adds readme.md

* usable pins, readme update
2018-11-02 12:44:57 -04:00
15f6278aa6 Add support for Atmega32A to pin declarations and universal matrix (#4015)
* add computed pins from mcu type

* update for atmega32a

* doc typo

* add atmega16 chips, link to references

* remove avr include from config

* exclude assembler in config.h includes

* consolodate options, add 646

* fix typo in pindef
2018-11-02 12:31:40 -04:00
5909d8aef1 Keyboard: Add MiniAxe (#4314)
* Add a new keyboard MiniAxe.

* Fix readme foramt.

Co-Authored-By: ka2hiro <ka2hiro@curlybracket.co.jp>

* Fix readme format.

Co-Authored-By: ka2hiro <ka2hiro@curlybracket.co.jp>

* Remove unnecessary keycode aliases.

* Remove unnecessary param.

Co-Authored-By: ka2hiro <ka2hiro@curlybracket.co.jp>
2018-11-01 22:55:29 -07:00
6eb7501eb0 Four Banger: Clean Up Indentation (#4322)
Make indentation consistent and match project standards
2018-11-01 22:21:28 -07:00
7a22da9f05 Update rules.mk for Vinta (#4317)
changed dfu args to exit to application mode after flashing
2018-11-01 17:28:01 -07:00
e08266129e Keymap: port atreus layout to levinson keyboard (#4285)
* Keymap: port atreus layout to levinson keyboard

* fix (mostly deprecation) issues after review
2018-11-01 17:26:43 -07:00
153d1ecfcc Keymap: add jyh levinson keymaps (#4284)
* Keymap: add jyh levinson keymaps

remove tap dance number keys due to sluggish responses

simplify I2C configuration

reverse hyper and meh positions

reduce tapping term to allow fast typing with mod tap space keys

remove Alt hold on right space key. too many false touches.

add vim-style arrows (hjkl) on asdf; semicolon/quote on raise

correct documentation string for jyh levinson layout

add alternative levinson layout for jyh

more inspiration from atreus keyboard. keeps shift in the expected
places. reduces number of layers. puts numpad layout easily
accessible. places important keys on palms and meta keys on top
corners for xmonad.

correct layer switching in jyh2 levinson layout

I was getting stuck on the numpad layer because the numpad hold key
was remapped once the layer was activated. Bad idea. Minor other
refinements.

use curly bracket { instead of brace [ on raise layer

add RGB keys on adjust layer

bootmagic key is confusing. turn it off.

try out permissive hold setting to make mod-tap better

remove hold for right control on quote key. too many mistakes

turn off permissive hold. it was causing unexpected behavior

enable rgb underglow animations

add make it pink/blue key to levinson layout

prevent stuck modifiers in jyh2 levinson keymap

* fix up deprecated code after code review

* remove PREVENT_STUCK_MODIFIERS because it is default

Co-Authored-By: yamad <jyamada1@gmail.com>
2018-11-01 16:52:47 -07:00
99740c670a Add some more useful features to my alps64 AEK layout (#4312)
* Add mod-tap to right mods and shift

* Add del to fn1 layer and add fn2 layer for media and pcb debug
2018-10-31 22:27:57 -07:00
f63c0b7844 Add pointer(?) to disable_JTAG to prevent compiler errors (#4310) 2018-10-31 15:14:59 -07:00
bd6d6d93f2 Update iris 3 (#4307)
* Fix incorrect LED pin assignment

* Strip out extra newline
2018-10-31 14:43:39 -07:00
5630ad7604 Added JTAG disable code to the split_common (#4309)
Added JTAG disable code to the split_common slave code since the slave never calls keyboard_init(). In the future the slave should likely be modified to call keyboard_init() in some way, but without calling any of the unnecessary USB initialization code.
2018-10-31 14:42:15 -07:00
75d657b525 Configurator info.json fix for XD87 2018-10-31 13:18:44 -07:00
d147cf5ece Add support for planck/rev6 to dshields keymap. (#4304) 2018-10-31 07:07:34 -07:00
685cec47bb Configurator info.json fix for KBD19x
The info.json had a random backslash, which invalidated the JSON structure. This commit fixes that issue.
2018-10-30 17:47:24 -07:00
426c18b8c6 Keyboard: add ep40 qmk support (#4291)
* add initial ep40 files

* fixed issues

* updated keymap

* Added media control

* Update keyboards/handwired/ep40/rules.mk

Co-Authored-By: e11i0t23 <32494740+e11i0t23@users.noreply.github.com>

* Fixed requested changes

* Fixed more requested changes
2018-10-30 14:55:22 -07:00
7fc9170ea7 Add crd's AEK layout for ALPS64 board (#4292) 2018-10-30 09:10:53 -07:00
7373d5b394 Update feature_bootmagic.md (#4290)
Fix typo
2018-10-30 08:37:08 -07:00
31ff5f219d Move grave to top layer (caps is esc) (#4288) 2018-10-30 08:22:25 -07:00
9315172190 helix serial.c: Add the version of gcc used for adjustment to the comment. 2018-10-29 22:25:48 -07:00
a9c5e75437 Planck keyboard layout update (#4279)
* Personal dz60 keymap

* Replacing unused macros

Co-Authored-By: pevecyan <pevecyan@users.noreply.github.com>

* Fixes on keymap

* Planck keyboard layout update
2018-10-29 22:21:07 -07:00
34f102de7d Keyboard: Vinta (#4283)
* added initial config files for vinta

* added readme

* changed product id and device ver

* fixed keymap illustration

* updated rules.mk to enable more commands

* removed a bunch of pre-code text; changed some grammar woopsies

* removed bootmagic lite

* updated developer's note

* updated readme.md
2018-10-29 22:00:40 -07:00
1fa6c1d818 Make linux_install.sh work with openSUSE Leap 15.0 (#4218) 2018-10-29 13:48:24 -07:00
1e96346f28 Keymap: Added personal Contra layout. (#4235)
* Added personal Contra layout.

* Update keyboards/contra/keymaps/bramver/rules.mk

Co-Authored-By: BramVer <bramvereertbrugghen@live.be>

* Update keyboards/contra/keymaps/bramver/keymap.c

Co-Authored-By: BramVer <bramvereertbrugghen@live.be>

* Update keyboards/contra/keymaps/bramver/keymap.c

Co-Authored-By: BramVer <bramvereertbrugghen@live.be>

* Reformatted layers to use the layout format.
2018-10-29 10:45:17 -07:00
6a629e5d0d Keyboard: add support for kbd19x (#4272)
* 60_ansi keymap for DZ60

* 60_ansi keymap for DZ60

Amend author

* 60_ansi keymap for DZ60

* Merge new phantom layout from dev branch

* Initial util/new_project files

* Progress checkpoint (compiles, but untested)

* Progress snapshot, still working on layout graphics

* Add layer images

* Tidy up formatting

* First cut at info.json for kbd19x default layout

* Add default keymap

* add all-keys layout

* clean up documentation

* Update keyboards/kbd19x/info.json

Co-Authored-By: jshuf <44121348+jshuf@users.noreply.github.com>

* Update keyboards/kbd19x/rules.mk

Co-Authored-By: jshuf <44121348+jshuf@users.noreply.github.com>

* Change layout name from default to ansi
2018-10-29 10:33:07 -07:00
cd23984afc Fix undefined reference to console_printf for CTRL and ALT keyboards
Fix undefined reference to `console_printf` for CTRL and ALT keyboards when enabling CONSOLE_ENABLE
2018-10-29 10:26:30 -07:00
cd87a8a323 fixed broken linebreak in fedora part, and indentation in arch-part 2018-10-29 07:17:22 -07:00
d63fb6f716 helix serial.c: add some comment 2018-10-28 10:39:08 -07:00
8517f8a660 Helix serial.c re-adjust compiler depend value of delay (#4269)
* Helix serial.c add debug code

* re-adjust READ_WRITE_WIDTH_ADJUST values

* re-adjust READ_WRITE_START_ADJUST values

* re-adjust TID_SEND_ADJUST value

* Helix serial.c: remove debug code
2018-10-28 10:12:44 -07:00
c60a312ba9 Further unify old iris keymap 2018-10-28 08:44:58 -07:00
b9811fd7e7 Make old keymap super compatible 2018-10-28 08:44:58 -07:00
0f086e4889 Add Alternate DVORAK layout 2018-10-28 08:44:58 -07:00
214241853a Fix Bootmagic_lite function 2018-10-28 08:44:58 -07:00
9d27bb512f Fix userspace config.h 2018-10-28 08:44:58 -07:00
d29a61e9ce Add Bootmagic Lite for now 2018-10-28 08:44:58 -07:00
ba7a1e8976 Update old iris config 2018-10-28 08:44:58 -07:00
7b3ead0133 Remove 'return false' in macros since it's not needed
And it produces better handling overall.
2018-10-28 08:44:58 -07:00
4df74f6058 Minor updates to keymaps 2018-10-28 08:44:58 -07:00
796bce5ab2 Cleanup KC_MAKE command 2018-10-28 08:44:58 -07:00
6ed925103f Change user EEPROM defaults 2018-10-28 08:44:58 -07:00
76b5ac621d Update to Corne Keyboard (crkbd) keymap 2018-10-28 08:44:58 -07:00
2776b9ee90 Update readme for userspace 2018-10-28 08:44:58 -07:00
3d15038dd4 Make RGB init write to eeprom once 2018-10-28 08:44:58 -07:00
2abb29402a Keymap: Updates to guidoism layout (#4262)
* Initial commit of guidoism

* created movement layer

* movement layer works!

* removed unnecessary layers

* moved enter key up and recreated caps lock

* cleaned up

* num pad

* checkpoint

* checkpoint

* checkpoint

* Added num pad

* changed max power draw so i can use this on ipad

* move around quotes

* added tri layer for a homed numpad

* moved layout to new style

* Update readme.md

* Update readme.md

* Update readme.md

* Update readme.md

* added keys to unicode conversion

* removed adjust layer since its not used anymore

* moved esc to seperate key

* tweaked python

* checkpoint

* new code put into function

* new code put into function

* cleanup

* cleanup

* new code works perfect

* removed old code

* removed old code

* generate_c.py now replaces code within keymap.c

* added function layer

* updated readme

* updated readme

* updated readme

* updates readme

* updates readme

* updates readme

* Tweaks based on CR

* Remove old guidoism

* Use MO(_FUNCTION) directly
2018-10-28 08:29:37 -07:00
4ffcacd920 Add Bootmagic Lite to QMK (#4215)
* Preliminary additon of bootmagic lite functionality

* Cleanup code

* Clean up bootmagic code

* Add documentation and clean up code

* Make 'lite' an option for BOOTMAGIC_ENABLE

* Update Templates with note about Bootmagic Lite option

* Detect Debounce variable

* Make sure debounce is a non-zero number

* Capitalize Bootmagic

* Capitalize bootmagic

* Update wording

* Re-add EEPROM reset, by popular demand

And add eeprom-less version to drashna userspace for his sanity

* Fix spacing

* Set BOOTMAGIC_ENABLE to use full/lite/off

And default yes to "full" for compatibility

* Add Bootmagic lite info to templates

* Remove text from makefiles

* Cleanup of makefile

* mention yes in bootmagic docs

* Wordsmitthing the docs

* Fix white spaces

* Readd default bootmagic setting, because it's necessary
2018-10-27 14:53:50 -04:00
5be438f03d Keymap: update keymap transmogrified (#4241)
* layer locked breathing, layer changed brighter leds

* move config for tapping term into config.h

* Respect LED off even with layer indicators, add readme and update config
to new standard

* update Readme with note about both sides of board being required to flash
2018-10-27 09:41:17 -07:00
9ea0103520 Keyboard: Redox keymaps refactoring (#4258)
* Reconfigured keymap macro to resemble physical layout

* Updated italian keymap

* Added RGB controls

* Updated default keymap

* Updated german layout

* Updated jeherve keymap

* Changed include guards to pragmas

* Changed include guards to pragmas in keymaps

* Update readme

* Fixed unused include

* Fixed indentation
2018-10-27 09:40:28 -07:00
569545a78f Keymap: Personal dz60 keymap (#4251)
* Personal dz60 keymap

* Replacing unused macros

Co-Authored-By: pevecyan <pevecyan@users.noreply.github.com>

* Fixes on keymap
2018-10-27 08:30:47 -07:00
2da8522154 Keymap: add my planck rev 5 layout (#4085) 2018-10-27 08:29:34 -07:00
6916c0d728 Redox Wireless configurator support (#4256) 2018-10-27 08:23:12 -07:00
23cd9f4dee Keyboard: Add new keyboard Zinc (#4245)
* Add Zinc keyboard

* Fix photo

* Fix readme.md

* Fix RGB LED init of monks/keymap.c

* Fix default keymap and readme.jp

* Fix change DEFS of RGB ANIMATIONS to LED_ANIMATIONS

* Add EOL

* Use serial_config_simpleapi.h

* Fix comment char

* Fix error handling in split_scomm.c : mtei works

* Fix keymaps

* Remove DISABLE_LEADER definition

* Remove pro_micro.h

* Add 2 spaces after Hardware name

* Fix keymaps
  - remove audio codes
  - change LAYOUT to LAYOUT_ortho_4X12
  - change "persistent_default_layer_set" to core function

* Use the Community Layouts feature
  -  with some clean up
2018-10-26 21:23:49 -07:00
d9ef323f8a start of mcu selection 2018-10-24 16:10:13 -04:00
57b21c037c initial proton coversion, no pin mapping 2018-10-23 23:57:54 -04:00
fd3c1aa909 adds readme.md 2018-10-23 20:38:50 -04:00
3d50a2867b fixes custom matrix include 2018-10-23 20:35:17 -04:00
0836e47e33 adds proton c base 2018-10-23 20:35:04 -04:00
699 changed files with 29958 additions and 6157 deletions

View File

@ -16,6 +16,7 @@ include common.mk
KEYBOARD_FILESAFE := $(subst /,_,$(KEYBOARD))
TARGET ?= $(KEYBOARD_FILESAFE)_$(KEYMAP)
KEYBOARD_OUTPUT := $(BUILD_DIR)/obj_$(KEYBOARD_FILESAFE)
STM32_PATH := quantum/stm32
# Force expansion
TARGET := $(TARGET)
@ -68,6 +69,7 @@ ifneq ("$(wildcard $(KEYBOARD_PATH_1)/)","")
KEYBOARD_PATHS += $(KEYBOARD_PATH_1)
endif
# Pull in rules.mk files from all our subfolders
ifneq ("$(wildcard $(KEYBOARD_PATH_5)/rules.mk)","")
include $(KEYBOARD_PATH_5)/rules.mk
@ -85,6 +87,19 @@ ifneq ("$(wildcard $(KEYBOARD_PATH_1)/rules.mk)","")
include $(KEYBOARD_PATH_1)/rules.mk
endif
ifeq ($(strip $(PROTON)), yes)
OPT_DEFS += -DPROTON_CONVERSION
include $(STM32_PATH)/proton_c.mk
endif
include quantum/mcu_selection.mk
ifdef MCU_FAMILY
OPT_DEFS += -DQMK_STM32
KEYBOARD_PATHS += $(STM32_PATH)
endif
# Find all the C source files to be compiled in subfolders.
KEYBOARD_SRC :=

View File

@ -213,6 +213,7 @@ endif
ifeq ($(strip $(TERMINAL_ENABLE)), yes)
SRC += $(QUANTUM_DIR)/process_keycode/process_terminal.c
OPT_DEFS += -DTERMINAL_ENABLE
OPT_DEFS += -DUSER_PRINT
endif
ifeq ($(strip $(USB_HID_ENABLE)), yes)
@ -244,7 +245,7 @@ QUANTUM_SRC:= \
$(QUANTUM_DIR)/keymap_common.c \
$(QUANTUM_DIR)/keycode_config.c
ifndef CUSTOM_MATRIX
ifneq ($(strip $(CUSTOM_MATRIX)), yes)
ifeq ($(strip $(SPLIT_KEYBOARD)), yes)
QUANTUM_SRC += $(QUANTUM_DIR)/split_common/matrix.c
else

View File

@ -39,6 +39,7 @@
* [Glossary](reference_glossary.md)
* [Unit Testing](unit_testing.md)
* [Useful Functions](ref_functions.md)
* [Configurator Support](reference_configurator_support.md)
* [Features](features.md)
* [Basic Keycodes](keycodes_basic.md)
@ -79,6 +80,7 @@
* [Hand Wiring Guide](hand_wire.md)
* [ISP Flashing Guide](isp_flashing_guide.md)
* [ARM Debugging Guide](arm_debugging.md)
* [I2C Driver](i2c_driver.md)
* For a Deeper Understanding
* [How Keyboards Work](how_keyboards_work.md)

View File

@ -39,6 +39,7 @@
* [Glossary](reference_glossary.md)
* [Unit Testing](unit_testing.md)
* [Useful Functions](ref_functions.md)
* [Configurator Support](reference_configurator_support.md)
* [Features](features.md)
* [Basic Keycodes](keycodes_basic.md)
@ -79,6 +80,7 @@
* [Hand Wiring Guide](hand_wire.md)
* [ISP Flashing Guide](isp_flashing_guide.md)
* [ARM Debugging Guide](arm_debugging.md)
* [I2C Driver](i2c_driver.md)
* For a Deeper Understanding
* [How Keyboards Work](how_keyboards_work.md)

View File

@ -132,14 +132,15 @@ If you define these options you will enable the associated feature, which may in
* `#define TAPPING_TOGGLE 2`
* how many taps before triggering the toggle
* `#define PERMISSIVE_HOLD`
* makes tap and hold keys work better for fast typers who don't want tapping term set above 500
* makes tap and hold keys trigger the hold if another key is pressed before releasing, even if it hasn't hit the `TAPPING_TERM`
* See [Permissive Hold](feature_advanced_keycodes.md#permissive-hold) for details
* `#define IGNORE_MOD_TAP_INTERRUPT`
* makes it possible to do rolling combos (zx) with keys that convert to other keys on hold
* See [Mod tap interrupt](feature_advanced_keycodes.md#mod-tap-interrupt) for details
* makes it possible to do rolling combos (zx) with keys that convert to other keys on hold, by enforcing the `TAPPING_TERM` for both keys.
* See [Mod tap interrupt](feature_advanced_keycodes.md#ignore-mod-tap-interrupt) for details
* `#define TAPPING_FORCE_HOLD`
* makes it possible to use a dual role key as modifier shortly after having been tapped
* See [Hold after tap](feature_advanced_keycodes.md#hold-after-tap)
* See [Hold after tap](feature_advanced_keycodes.md#tapping-force-hold)
* 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 ONESHOT_TIMEOUT 300`
@ -260,3 +261,32 @@ Use these to enable or disable building certain features. The more you have enab
* Forces the keyboard to wait for a USB connection to be established before it starts up
* `NO_USB_STARTUP_CHECK`
* Disables usb suspend check after keyboard startup. Usually the keyboard waits for the host to wake it up before any tasks are performed. This is useful for split keyboards as one half will not get a wakeup call but must send commands to the master.
## USB Endpoint Limitations
In order to provide services over USB, QMK has to use USB endpoints.
These are a finite resource: each microcontroller has only a certain number.
This limits what features can be enabled together.
If the available endpoints are exceeded, a build error is thrown.
The following features can require separate endpoints:
* `MOUSEKEY_ENABLE`
* `EXTRAKEY_ENABLE`
* `CONSOLE_ENABLE`
* `NKRO_ENABLE`
* `MIDI_ENABLE`
* `RAW_ENABLE`
* `VIRTSER_ENABLE`
In order to improve utilisation of the endpoints, the HID features can be combined to use a single endpoint.
By default, `MOUSEKEY`, `EXTRAKEY`, and `NKRO` are combined into a single endpoint.
The base keyboard functionality can also be combined into the endpoint,
by setting `KEYBOARD_SHARED_EP = yes`.
This frees up one more endpoint,
but it can prevent the keyboard working in some BIOSes,
as they do not implement Boot Keyboard protocol switching.
Combining the mouse also breaks Boot Mouse compatibility.
The mouse can be uncombined by setting `MOUSE_SHARED_EP = no` if this functionality is required.

View File

@ -126,5 +126,5 @@ For now, you need to rollback avr-gcc to 7 in brew.
```
brew uninstall --force avr-gcc
brew install avr-gcc@7
brew link avr-gcc@7
brew link --force avr-gcc@7
```

View File

@ -73,7 +73,6 @@ These allow you to combine a modifier with a keycode. When pressed, the keydown
|`HYPR(kc)`| |Hold Left Control, Shift, Alt and GUI and press `kc`|
|`MEH(kc)` | |Hold Left Control, Shift and Alt and press `kc` |
|`LCAG(kc)`| |Hold Left Control, Alt and GUI and press `kc` |
|`ALTG(kc)`| |Hold Right Control and Alt and press `kc` |
|`SGUI(kc)`|`SCMD(kc)`, `SWIN(kc)`|Hold Left Shift and GUI and press `kc` |
|`LCA(kc)` | |Hold Left Control and Alt and press `kc` |
@ -171,30 +170,56 @@ As of [PR#1359](https://github.com/qmk/qmk_firmware/pull/1359/), there is a new
#define PERMISSIVE_HOLD
```
This makes it easier for fast typists to use dual-function keys. Without this, if you let go of a held key inside the tapping term, it won't register.
This makes tap and hold keys (like Mod Tap) work better for fast typist, or for high `TAPPING_TERM` settings.
Example: (Tapping Term = 200ms)
If you press a Mod Tap key, tap another key (press and release) and then release the Mod Tap key, all within the tapping term, it will output the "tapping" function for both keys.
- SHFT_T(KC_A) Down
- KC_X Down
- KC_X Up
- SHFT_T(KC_A) Up
For Instance:
With defaults, if above is typed within tapping term, this will emit `ax`. With permissive hold, if above is typed within tapping term, this will emit `X` (so, Shift+X).
- `SHFT_T(KC_A)` Down
- `KC_X` Down
- `KC_X` Up
- `SHFT_T(KC_A)` Up
# Mod tap interrupt
Normally, if you do all this within the `TAPPING_TERM` (default: 200ms) this will be registered as `ax` by the firmware and host system. With permissive hold enabled, this modifies how this is handled by considering the Mod Tap keys as a Mod if another key is tapped, and would registered as `X` (`SHIFT`+`x`).
When a dual role key used for a modifier is quickly followed by another keys, it is interpreted as held even before the tapping term elapsed. This is a problem if a key is used for example inside a rolling combo because the second key will be pressed before the first key is released.
?> 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`.
For example, when trying to type the rolling combo "zx" and z being configured to send Ctrl when hold, z rapidly followed by x actually sends Ctrl-x. That's bad.
# Ignore Mod Tap Interrupt
You can disable this behavior by defining `IGNORE_MOD_TAP_INTERRUPT` in `config.h`.
To enable this setting, add this to your `config.h`:
Note that this only concerns modifiers and not layer switching keys.
```c
#define IGNORE_MOD_TAP_INTERRUPT
```
# Hold after tap
Similar to Permissive Hold, this alters how the firmware processes input for fast typist. If you press a Mod Tap key, press another key, release the Mod Tap key, and then release the normal key, it would normally output the "tapping" function for both keys. This may not be desirable for rolling combo keys.
When the user holds a key after tap, this repeats the tapped key rather to hold a modifier key. This allows to use auto repeat for the tapped key. If you prefer to hold a modifier instead, define `TAPPING_FORCE_HOLD` in `config.h`.
Setting `Ignore Mod Tap Interrupt` requires holding both keys for the `TAPPING_TERM` to trigger the hold function (the mod).
For Instance:
- `SHFT_T(KC_A)` Down
- `KC_X` Down
- `SHFT_T(KC_A)` Up
- `KC_X` Up
Normally, this would send `X` (`SHIFT`+`x`). With `Ignore Mod Tap Interrupt` enabled, holding both keys are required for the `TAPPING_TERM` to register the hold action. A quick tap will output `ax` in this case, while a hold on both will still output `X` (`SHIFT`+`x`).
?> __Note__: This only concerns modifiers and not layer switching keys.
?> 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
To enable `tapping force hold`, add the following to your `config.h`:
```c
#define TAPPING_FORCE_HOLD
```
When the user holds a key after tap, this repeats the tapped key rather to hold a modifier key. This allows to use auto repeat for the tapped key.
Example:
@ -212,6 +237,12 @@ With `TAPPING_FORCE_HOLD`, the second press will be interpreted as a Shift, allo
# Retro Tapping
To enable `retro tapping`, add the following to your `config.h`:
```c
#define RETRO_TAPPING
```
Holding and releasing a dual function key without pressing another key will result in nothing happening. With retro tapping enabled, releasing the key without pressing another will send the original keycode even if it is outside the tapping term.
For instance, holding and releasing `LT(2, KC_SPACE)` without hitting another key will result in nothing happening. With `RETRO_TAPPING` defined in your `config.h`, it will send `KC_SPACE`.
For instance, holding and releasing `LT(2, KC_SPACE)` without hitting another key will result in nothing happening. With this enabled, it will send `KC_SPACE` instead.

View File

@ -54,14 +54,17 @@ In this handler, the value of an incrementing counter is mapped onto a precomput
## Backlight Functions
|Function |Description |
|----------|----------------------------------------------------------|
|`backlight_toggle()` |Turn the backlight on or off |
|`backlight_step()` |Cycle through backlight levels |
|`backlight_increase()` |Increase the backlight level |
|`backlight_decrease()` |Decrease the backlight level |
|`backlight_level(x)` |Sets the backlight level to specified level |
|`get_backlight_level()`|Return the current backlight level |
|Function |Description |
|----------|-----------------------------------------------------------|
|`backlight_toggle()` |Turn the backlight on or off |
|`backlight_enable()` |Turn the backlight on |
|`backlight_disable()` |Turn the backlight off |
|`backlight_step()` |Cycle through backlight levels |
|`backlight_increase()` |Increase the backlight level |
|`backlight_decrease()` |Decrease the backlight level |
|`backlight_level(x)` |Sets the backlight level to specified level |
|`get_backlight_level()` |Return the current backlight level |
|`is_backlight_enabled()`|Return whether the backlight is currently on |
### Backlight Breathing Functions

View File

@ -11,7 +11,15 @@ There are three separate but related features that allow you to change the behav
On some keyboards Bootmagic is disabled by default. If this is the case, it must be explicitly enabled in your `rules.mk` with:
```make
BOOTMAGIC_ENABLE = yes
BOOTMAGIC_ENABLE = full
```
?> You may see `yes` being used in place of `full`, and this is okay. However, `yes` is deprecated, and ideally `full` (or `lite`) should be used instead.
Additionally, you can use [Bootmagic Lite](#bootmagic-lite) (a scaled down, very basic version of Bootmagic) by adding the following to your `rules.mk` file:
```make
BOOTMAGIC_ENABLE = lite
```
## Hotkeys
@ -99,3 +107,45 @@ If you would like to change the hotkey assignments for Bootmagic, `#define` thes
|`BOOTMAGIC_KEY_DEFAULT_LAYER_5` |`KC_5` |Make layer 5 the default layer |
|`BOOTMAGIC_KEY_DEFAULT_LAYER_6` |`KC_6` |Make layer 6 the default layer |
|`BOOTMAGIC_KEY_DEFAULT_LAYER_7` |`KC_7` |Make layer 7 the default layer |
# Bootmagic Lite
In addition to the full blown Bootmagic feature, is the Bootmagic Lite feature that only handles jumping into the bootloader. This is great for boards that don't have a physical reset button but you need a way to jump into the bootloader, and don't want to deal with the headache that Bootmagic can cause.
To enable this version of Bootmagic, you need to enable it in your `rules.mk` with:
```make
BOOTMAGIC_ENABLE = lite
```
Additionally, you may want to specify which key to use. This is especially useful for keyboards that have unusual matrices. To do so, you need to specify the row and column of the key that you want to use. Add these entries to your `config.h` file:
```c
#define BOOTMAGIC_LITE_ROW 0
#define BOOTMAGIC_LITE_COLUMN 1
```
By default, these are set to 0 and 0, which is usually the "ESC" key on a majority of keyboards.
And to trigger the bootloader, you hold this key down when plugging the keyboard in. Just the single key.
## Advanced Bootmagic Lite
The `bootmagic_lite` function is defined weakly, so that you can replace this in your code, if you need. A great example of this is the Zeal60 boards that have some additional handling needed.
To replace the function, all you need to do is add something like this to your code:
```c
void bootmagic_lite(void) {
matrix_scan();
wait_ms(DEBOUNCING_DELAY * 2);
matrix_scan();
if (matrix_get_row(BOOTMAGIC_LITE_ROW) & (1 << BOOTMAGIC_LITE_COLUMN)) {
// Jump to bootloader.
bootloader_jump();
}
}
```
You can additional feature here. For instance, resetting the eeprom or requiring additional keys to be pressed to trigger bootmagic. Keep in mind that `bootmagic_lite` is called before a majority of features are initialized in the firmware.

View File

@ -44,15 +44,15 @@ For a more complicated implementation, you can use the `process_combo_event` fun
```c
enum combo_events {
ZC_COPY,
ZV_PASTE
XV_PASTE
};
const uint16_t PROGMEM copy_combo[] = {KC_Z, KC_C, COMBO_END};
const uint16_t PROGMEM paste_combo[] = {KC_Z, KC_V, COMBO_END};
const uint16_t PROGMEM paste_combo[] = {KC_X, KC_V, COMBO_END};
combo_t key_combos[COMBO_COUNT] = {
[ZC_COPY] = COMBO_ACTION(copy_combo),
[ZV_PASTE] = COMBO_ACTION(paste_combo),
[XV_PASTE] = COMBO_ACTION(paste_combo),
};
void process_combo_event(uint8_t combo_index, bool pressed) {
@ -66,7 +66,7 @@ void process_combo_event(uint8_t combo_index, bool pressed) {
}
break;
case ZV_PASTE:
case XV_PASTE:
if (pressed) {
register_code(KC_LCTL);
register_code(KC_V);
@ -78,7 +78,7 @@ void process_combo_event(uint8_t combo_index, bool pressed) {
}
```
This will send Ctrl+C if you hit Z and C, and Ctrl+V if you hit Z and V. But you could change this to do stuff like change layers, play sounds, or change settings.
This will send Ctrl+C if you hit Z and C, and Ctrl+V if you hit X and V. But you could change this to do stuff like change layers, play sounds, or change settings.
## Additional Configuration

View File

@ -150,6 +150,30 @@ These are the effects that are currently available:
#endif
RGB_MATRIX_EFFECT_MAX
};
You can disable a single effect by defining `DISABLE_[EFFECT_NAME]` in your `config.h`:
|Define |Description |
|---------------------------------------------------|--------------------------------------------|
|`#define DISABLE_RGB_MATRIX_ALPHAS_MODS` |Disables `RGB_MATRIX_ALPHAS_MODS` |
|`#define DISABLE_RGB_MATRIX_DUAL_BEACON` |Disables `RGB_MATRIX_DUAL_BEACON` |
|`#define DISABLE_RGB_MATRIX_GRADIENT_UP_DOWN` |Disables `RGB_MATRIX_GRADIENT_UP_DOWN` |
|`#define DISABLE_RGB_MATRIX_RAINDROPS` |Disables `RGB_MATRIX_RAINDROPS` |
|`#define DISABLE_RGB_MATRIX_CYCLE_ALL` |Disables `RGB_MATRIX_CYCLE_ALL` |
|`#define DISABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT` |Disables `RGB_MATRIX_CYCLE_LEFT_RIGHT` |
|`#define DISABLE_RGB_MATRIX_CYCLE_UP_DOWN` |Disables `RGB_MATRIX_CYCLE_UP_DOWN` |
|`#define DISABLE_RGB_MATRIX_RAINBOW_BEACON` |Disables `RGB_MATRIX_RAINBOW_BEACON` |
|`#define DISABLE_RGB_MATRIX_RAINBOW_PINWHEELS` |Disables `RGB_MATRIX_RAINBOW_PINWHEELS` |
|`#define DISABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON`|Disables `RGB_MATRIX_RAINBOW_MOVING_CHEVRON`|
|`#define DISABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS` |Disables `RGB_MATRIX_JELLYBEAN_RAINDROPS` |
|`#define DISABLE_RGB_MATRIX_DIGITAL_RAIN` |Disables `RGB_MATRIX_DIGITAL_RAIN` |
|`#define DISABLE_RGB_MATRIX_SOLID_REACTIVE` |Disables `RGB_MATRIX_SOLID_REACTIVE` |
|`#define DISABLE_RGB_MATRIX_SPLASH` |Disables `RGB_MATRIX_SPLASH` |
|`#define DISABLE_RGB_MATRIX_MULTISPLASH` |Disables `RGB_MATRIX_MULTISPLASH` |
|`#define DISABLE_RGB_MATRIX_SOLID_SPLASH` |Disables `RGB_MATRIX_SOLID_SPLASH` |
|`#define DISABLE_RGB_MATRIX_SOLID_MULTISPLASH` |Disables `RGB_MATRIX_SOLID_MULTISPLASH` |
## Custom layer effects

View File

@ -122,6 +122,7 @@ The following options can be used to tweak the various animations:
|`RGBLIGHT_EFFECT_KNIGHT_LED_NUM` |`RGBLED_NUM` |The number of LEDs to have the "Knight" animation travel |
|`RGBLIGHT_EFFECT_CHRISTMAS_INTERVAL`|`1000` |How long to wait between light changes for the "Christmas" animation, in milliseconds|
|`RGBLIGHT_EFFECT_CHRISTMAS_STEP` |`2` |The number of LEDs to group the red/green colors by for the "Christmas" animation |
|`RGBLIGHT_RAINBOW_SWIRL_RANGE` |`360` |Range adjustment for the rainbow swirl effect to get different swirls |
You can also modify the speeds that the different modes animate at:

View File

@ -8,13 +8,17 @@ QMK has a staggering number of features for building your keyboard. It can take
* [Auto Shift](feature_auto_shift.md) - Tap for the normal key, hold slightly longer for its shifted state.
* [Backlight](feature_backlight.md) - LED lighting support for your keyboard.
* [Bootmagic](feature_bootmagic.md) - Adjust the behavior of your keyboard using hotkeys.
* [Combos](feature_combo.md) - Custom actions for multiple key holds.
* [Command](feature_command.md) - Runtime version of bootmagic (Formerly known as "Magic").
* [Dynamic Macros](feature_dynamic_macros.md) - Record and playback macros from the keyboard itself.
* [Grave Escape](feature_grave_esc.md) - Lets you use a single key for Esc and Grave.
* [HD44780 LCD Display](feature_hd44780.md) - Support for LCD character displays using the HD44780 standard.
* [Key Lock](feature_key_lock.md) - Lock a key in the "down" state.
* [Layouts](feature_layouts.md) - Use one keymap with any keyboard that supports your layout.
* [Leader Key](feature_leader_key.md) - Tap the leader key followed by a sequence to trigger custom behavior.
* [Macros](feature_macros.md) - Send multiple key presses when pressing only one physical key.
* [Mouse keys](feature_mouse_keys.md) - Control your mouse pointer from your keyboard.
* [One Shot Keys](feature_advanced_keycodes.md#one-shot-keys) - Sticky Keys, lets hit a key rather than holding it.
* [Pointing Device](feature_pointing_device.md) - Framework for connecting your custom pointing device to your keyboard.
* [PS2 Mouse](feature_ps2_mouse.md) - Driver for connecting a PS/2 mouse directly to your keyboard.
* [RGB Light](feature_rgblight.md) - RGB lighting for your keyboard.

View File

@ -71,8 +71,8 @@ Flashing sequence:
1. Press the `RESET` keycode, or short RST to GND quickly (you only have 7 seconds to flash once it enters)
2. Wait for the OS to detect the device
4. Flash a .hex file
5. Wait for the device to reset automatically
3. Flash a .hex file
4. Wait for the device to reset automatically
or
@ -106,5 +106,28 @@ Flashing sequence:
1. Press the `RESET` keycode, or short RST to GND quickly (you only have 7 seconds to flash once it enters)
2. Wait for the OS to detect the device
4. Flash a .hex file
5. Reset the device into application mode (may be done automatically)
3. Flash a .hex file
4. Reset the device into application mode (may be done automatically)
## STM32
All STM32 chips come preloaded with a factory bootloader that cannot be modified nor deleted. Some STM32 chips have bootloaders that do not come with USB programming (e.g. STM32F103) but the process is still the same.
At the moment, no `BOOTLOADER` variable is needed on `rules.mk` for STM32.
Compatible flashers:
* [QMK Toolbox](https://github.com/qmk/qmk_toolbox/releases) (recommended GUI)
* [dfu-util](https://github.com/Stefan-Schmidt/dfu-util) / `:dfu-util` (recommended command line)
Flashing sequence:
1. Enter the bootloader using any of the following methods:
* Tap the `RESET` keycode (may not work on STM32F042 devices)
* If a reset circuit is present, tap the RESET button
* Otherwise, you need to bridge BOOT0 to VCC (via BOOT0 button or bridge), short RESET to GND (via RESET button or bridge), and then let go of the BOOT0 bridge
2. Wait for the OS to detect the device
3. Flash a .bin file
* You will receive a warning about the DFU signature; Just ignore it
4. Reset the device into application mode (may be done automatically)
* If you are building from command line (e.g. `make planck/rev6:default:dfu-util`), make sure that `:leave` is passed to the `DFU_ARGS` variable inside your `rules.mk` (e.g. `DFU_ARGS = -d 0483:df11 -a 0 -s 0x08000000:leave`) so that your device resets after flashing

View File

@ -57,6 +57,7 @@ If you're using [homebrew,](http://brew.sh/) you can use the following commands:
brew tap PX4/homebrew-px4
brew update
brew install avr-gcc@7
brew link --force avr-gcc@7
brew install dfu-programmer
brew install dfu-util
brew install gcc-arm-none-eabi

82
docs/i2c_driver.md Normal file
View File

@ -0,0 +1,82 @@
# I2C Master Driver
The I2C Master drivers used in QMK have a set of common functions to allow portability between MCUs.
## Available functions
|Function |Description |
|------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|`void i2c_init(void);` |Initializes the I2C driver. This function should be called once before any transaction is initiated. |
|`uint8_t i2c_start(uint8_t address);` |Starts an I2C transaction. Address is the 7-bit slave address without the direction bit. |
|`uint8_t i2c_transmit(uint8_t address, uint8_t* data, uint16_t length, uint16_t timeout);` |Transmit data over I2C. Address is the 7-bit slave address without the direction. Returns status of transaction. |
|`uint8_t i2c_receive(uint8_t address, uint8_t* data, uint16_t length, uint16_t timeout);` |Receive data over I2C. Address is the 7-bit slave address without the direction. Saves number of bytes specified by `length` in `data` array. Returns status of transaction. |
|`uint8_t i2c_writeReg(uint8_t devaddr, uint8_t regaddr, uint8_t* data, uint16_t length, uint16_t timeout);` |Same as the `i2c_transmit` function but `regaddr` sets where in the slave the data will be written. |
|`uint8_t i2c_readReg(uint8_t devaddr, uint8_t regaddr, uint8_t* data, uint16_t length, uint16_t timeout);` |Same as the `i2c_receive` function but `regaddr` sets from where in the slave the data will be read. |
|`uint8_t i2c_stop(uint16_t timeout);` |Stops the I2C driver. |
### Function Return
All the above functions, except `void i2c_init(void);` return the following truth table:
|Return Value |Description |
|---------------|---------------------------------------------------|
|0 |Operation executed successfully. |
|-1 |Operation failed. |
|-2 |Operation timed out. |
## AVR
### Configuration
The following defines can be used to configure the I2C master driver.
|Variable |Description |Default|
|------------------|---------------------------------------------------|-------|
|`#F_SCL` |Clock frequency in Hz |400KHz |
|`#Prescaler` |Divides master clock to aid in I2C clock selection |1 |
AVRs usually have set GPIO which turn into I2C pins, therefore no further configuration is required.
## ARM
For ARM the Chibios I2C HAL driver is under the hood.
This section assumes an STM32 MCU.
### Configuration
The configuration for ARM MCUs can be quite complex as often there are multiple I2C drivers which can be assigned to a variety of ports.
Firstly the `mcuconf.h` file must be setup to enable the necessary hardware drivers.
|Variable |Description |Default|
|------------------------------|------------------------------------------------------------------------------------|-------|
|`#STM32_I2C_USE_XXX` |Enable/Disable the hardware driver XXX (each driver should be explicitly listed) |FALSE |
|`#STM32_I2C_BUSY_TIMEOUT` |Time in ms until the I2C command is aborted if no response is received |50 |
|`#STM32_I2C_XXX_IRQ_PRIORITY` |Interrupt priority for hardware driver XXX (THIS IS AN EXPERT SETTING) |10 |
|`#STM32_I2C_USE_DMA` |Enable/Disable the ability of the MCU to offload the data transfer to the DMA unit |TRUE |
|`#STM32_I2C_XXX_DMA_PRIORITY` |Priority of DMA unit for hardware driver XXX (THIS IS AN EXPERT SETTING) |1 |
Secondly, in the `halconf.h` file, `#define HAL_USE_I2C` must be set to `TRUE`. This allows ChibiOS to load its I2C driver.
Lastly, we need to assign the correct GPIO pins depending on the I2C hardware driver we want to use.
By default the I2C1 hardware driver is assumed to be used. If another hardware driver is used, `#define I2C_DRIVER I2CDX` should be added to the `config.h` file with X being the number of hardware driver used. For example is I2C3 is enabled, the `config.h` file should contain `#define I2C_DRIVER I2CD3`. This aligns the QMK I2C driver with the Chibios I2C driver.
STM32 MCUs allows a variety of pins to be configured as I2C pins depending on the hardware driver used. By default B6 and B7 are set to I2C.
This can be changed by declaring the `i2c_init` function which intentionally has a weak attribute. Please consult the datasheet of your MCU for the available GPIO configurations. The following is an example initialization function:
```C
void i2c_init(void)
{
setPinInput(B6); // Try releasing special pins for a short time
setPinInput(B7);
chThdSleepMilliseconds(10); // Wait for the release to happen
palSetPadMode(GPIOB, 6, PAL_MODE_ALTERNATE(4) | PAL_STM32_OTYPE_OPENDRAIN | PAL_STM32_PUPDR_PULLUP); // Set B6 to I2C function
palSetPadMode(GPIOB, 7, PAL_MODE_ALTERNATE(4) | PAL_STM32_OTYPE_OPENDRAIN | PAL_STM32_PUPDR_PULLUP); // Set B7 to I2C function
}
```

View File

@ -12,7 +12,7 @@ The following functions can provide basic control of GPIOs and are found in `qua
|`setPinInputHigh(pin)`|Set pin as input with build in pull-up |
|`setPinInputLow(pin)` |Set pin as input with build in pull-down (Supported only on STM32)|
|`setPinOutput(pin)` |Set pin as output |
|`writePinHige(pin)` |Set pin level as high, assuming it is an output |
|`writePinHigh(pin)` |Set pin level as high, assuming it is an output |
|`writePinLow(pin)` |Set pin level as low, assuming it is an output |
|`writePin(pin, level)`|Set pin level, assuming it is an output |
|`readPin(pin)` |Returns the level of the pin |

View File

@ -141,9 +141,9 @@ This is a reference only. Each group of keys links to the page documenting their
|`KC_LOCKING_SCROLL` |`KC_LSCR` |Locking Scroll Lock |
|`KC_KP_COMMA` |`KC_PCMM` |Keypad `,` |
|`KC_KP_EQUAL_AS400` | |Keypad `=` on AS/400 keyboards |
|`KC_INT1` |`KC_RO` |JIS `\` and <code>&#124;</code> |
|`KC_INT1` |`KC_RO` |JIS `\` and `_` |
|`KC_INT2` |`KC_KANA` |JIS Katakana/Hiragana |
|`KC_INT3` |`KC_JYEN` |JIS `¥` |
|`KC_INT3` |`KC_JYEN` |JIS `¥` and <code>&#124;</code> |
|`KC_INT4` |`KC_HENK` |JIS Henkan |
|`KC_INT5` |`KC_MHEN` |JIS Muhenkan |
|`KC_INT6` | |JIS Numpad `,` |
@ -333,7 +333,6 @@ This is a reference only. Each group of keys links to the page documenting their
|`HYPR(kc)`| |Hold Left Control, Shift, Alt and GUI and press `kc`|
|`MEH(kc)` | |Hold Left Control, Shift and Alt and press `kc` |
|`LCAG(kc)`| |Hold Left Control, Alt and GUI and press `kc` |
|`ALTG(kc)`| |Hold Right Control and Alt and press `kc` |
|`SGUI(kc)`|`SCMD(kc)`, `SWIN(kc)`|Hold Left Shift and GUI and press `kc` |
|`LCA(kc)` | |Hold Left Control and Alt and press `kc` |
@ -460,6 +459,7 @@ This is a reference only. Each group of keys links to the page documenting their
|`SH_MOFF` |Momentarily turns off swap. |
|`SH_TG` |Toggles swap on and off with every key press. |
|`SH_TT` |Toggles with a tap; momentary when held. |
## [Unicode Support](feature_unicode.md)
|Key |Aliases| |

View File

@ -123,9 +123,9 @@ The basic set of keycodes are based on the [HID Keyboard/Keypad Usage Page (0x07
|Key |Aliases |Description |
|----------|---------|-------------------------------|
|`KC_INT1` |`KC_RO` |JIS `\` and <code>&#124;</code>|
|`KC_INT1` |`KC_RO` |JIS `\` and `_` |
|`KC_INT2` |`KC_KANA`|JIS Katakana/Hiragana |
|`KC_INT3` |`KC_JYEN`|JIS `¥` |
|`KC_INT3` |`KC_JYEN`|JIS `¥` and <code>&#124;</code>|
|`KC_INT4` |`KC_HENK`|JIS Henkan |
|`KC_INT5` |`KC_MHEN`|JIS Muhenkan |
|`KC_INT6` | |JIS Numpad `,` |

View File

@ -1,99 +1,97 @@
# Introduction
Your computer keyboard has a processor inside of it, not unlike the one inside your computer. This processor runs software that is responsible for detecting button presses and sending reports about the state of the keyboard when they are pressed or released. QMK fills the role of that software, detecting button presses and passing that information on to the host computer. When you build your custom layout you are creating the equivalent of an .exe for your keyboard.
Your computer keyboard has a processor inside of it, not unlike the one inside your computer. This processor runs software that is responsible for detecting button presses and sending reports about the state of the keyboard when buttons are pressed or released. QMK fills the role of that software, detecting button presses and passing that information on to the host computer. When you build your custom keymap, you are creating the equivalent of an executable program for your keyboard.
QMK tries to put a lot of power into your hands by making easy things easy, and hard things possible. You don't have to know how to program to create powerful layouts, you only have to follow a few simple syntax rules.
QMK tries to put a lot of power into your hands by making easy things easy, and hard things possible. You don't have to know how to program to create powerful keymaps — you only have to follow a few simple syntax rules.
# Getting Started
Before you can build keymaps you need to install some software and setup your build environment. This only has to be done one time no matter how many keyboards you want to compile firmware for.
Before you can build keymaps, you need to install some software and set up your build environment. This only has to be done once no matter how many keyboards you plan to compile firmware for.
## Download Software
### Text Editor
You'll need a program that can edit and save **plain text** files. If you are on Windows you can make due with Notepad, and on Linux you can use Gedit, both of which are simple but functional text editors. On macOS be careful with TextEdit.app, it will not save plain text files unless you make sure to select "Make Plain text" from the "Format" menu, or you can use another program such as Sublime Text.
You'll need a program that can edit and save **plain text** files. If you're on Windows you can make do with Notepad, and on Linux you can use gedit. Both of these are simple but functional text editors. On macOS, be careful with the default TextEdit app: it will not save plain text files unless you explicitly select _Make Plain Text_ from the _Format_ menu.
You can also download and install a dedicated text editor like [Sublime Text](https://www.sublimetext.com/) or [VS Code](https://code.visualstudio.com/). This is probably the best way to go regardless of platform, as these programs are specifically made for editing code.
?> Not sure which text editor to use? Laurence Bradford wrote [a great introduction](https://learntocodewith.me/programming/basics/text-editors/) to the subject.
### QMK Toolbox
QMK Toolbox is an optional graphical Windows and macOS program that allows you to both program and debug your custom keyboard. You will likely prefer it to easily flash your keyboard and receive the debugging messages that your keyboard will print.
QMK Toolbox is an optional graphical program for Windows and macOS that allows you to both program and debug your custom keyboard. You will likely find it invaluable for easily flashing your keyboard and viewing debug messages that it prints.
Download the files from the links below:
[Download the latest release here.](https://github.com/qmk/qmk_toolbox/releases/latest)
For Windows: "qmk_toolbox.exe" or "qmk_toolbox_install.exe" (with installer)
* For Windows: `qmk_toolbox.exe` (portable) or `qmk_toolbox_install.exe` (installer)
* For macOS: `QMK.Toolbox.app.zip` (portable) or `QMK.Toolbox.pkg` (installer)
For Mac: "QMK.Toolbox.app.zip" or "QMK.Toolbox.pkg" (with installer)
## Set Up Your Environment
* [Newest Release](https://github.com/qmk/qmk_toolbox/releases/latest)
* [Source Code](https://github.com/qmk/qmk_toolbox/)
We've tried to make QMK as easy to set up as possible. You only have to prepare your Linux or Unix environment, then let QMK install the rest.
## Environment Setup
We've tried to make QMK as easy to setup as possible. You only have to prepare your Linux or Unix environment and let QMK install the rest.
?> If you haven't worked with the Linux/Unix command line before there are a few basic concepts and commands you should learn. These resources will teach you enough to work with QMK:<br>
?> If you haven't worked with the Linux/Unix command line before, there are a few basic concepts and commands you should learn. These resources will teach you enough to be able to work with QMK:<br>
[Must Know Linux Commands](https://www.guru99.com/must-know-linux-commands.html)<br>
[Some Basic Unix Commands](https://www.tjhsst.edu/~dhyatt/superap/unixcmd.html)
### Windows
You will need to install msys2 and git.
You will need to install MSYS2 and Git.
* Follow the installation instructions on the msys2 homepage: http://www.msys2.org
* Close any open msys2 terminals, and open a new terminal
* Install git by running this command: `pacman -S git`
* Follow the installation instructions on the [MSYS2 homepage](http://www.msys2.org).
* Close any open MSYS2 terminals and open a new MSYS2 MinGW 64-bit terminal.
* Install Git by running this command: `pacman -S git`.
### macOS
You will need to install homebrew. Follow the instructions on the homebrew homepage: https://brew.sh
You will need to install Homebrew. Follow the instructions on the [Homebrew homepage](https://brew.sh).
After homebrew is installed continue with "Download QMK", following step "Setup QMK" runs a script that will install other packages.
After Homebrew is installed, continue with _Set Up QMK_. In that step you will run a script that will install other packages.
### Linux
You will need to install git. It's extremely likely you already have it, but if not one of the following commands should install it:
You will need to install Git. It's very likely that you already have it, but if not, one of the following commands should install it:
* Debian/Ubuntu/Devuan: `apt-get install git`
* Fedora/Redhat/Centos: `yum install git`
* Debian / Ubuntu / Devuan: `apt-get install git`
* Fedora / Red Hat / CentOS: `yum install git`
* Arch: `pacman -S git`
## Download QMK
?> Docker is also an option on all platforms. [Click here for details.](getting_started_build_tools.md#docker)
Once you have setup your Linux/Unix environment you are ready to download QMK. We will do this by using git to "clone" the QMK repository. Open a Terminal or MSYS2 Console window and leave it open for the remainder of this guide. Inside that window run these two commands:
## Set Up QMK
Once you have set up your Linux/Unix environment, you are ready to download QMK. We will do this by using Git to "clone" the QMK repository. Open a Terminal or MSYS2 MinGW window and leave it open for the remainder of this guide. Inside that window run these two commands:
git clone https://github.com/qmk/qmk_firmware.git
cd qmk_firmware
?> If you already know [how to use GitHub](getting_started_github.md) we recommend you create and clone your own fork instead. If you don't know what that means you can safely ignore this message.
?> If you already know [how to use GitHub](getting_started_github.md), we recommend that you create and clone your own fork instead. If you don't know what that means, you can safely ignore this message.
## Setup QMK
QMK comes with a script to help you set up the rest of what you'll need. You should run it now by typing in this command:
QMK comes with a script to help you setup the rest of what you'll need. You should run it now by typing in this command:
./util/qmk_install.sh
util/qmk_install.sh
## Test Your Build Environment
Now that your QMK build environment is setup you can build a firmware for your keyboard. Start by trying to build the default layout for your keyboard. You should be able to do that with a command in this format:
Now that your QMK build environment is set up, you can build a firmware for your keyboard. Start by trying to build the keyboard's default keymap. You should be able to do that with a command in this format:
make <keyboard>:default
For example, to build a firmware for a Clueboard 66% use:
For example, to build a firmware for a Clueboard 66% you would use:
make clueboard/66/rev3:default
When it is done you should have a lot of output that ends similar to this:
```
Linking: .build/clueboard_66_rev2_default.elf [OK]
Creating load file for flashing: .build/clueboard_66_rev2_default.hex [OK]
Copying clueboard_66_rev2_default.hex to qmk_firmware folder [OK]
Checking file size of clueboard_66_rev2_default.hex [OK]
* File size is fine - 25174/28672
Linking: .build/clueboard_66_rev3_default.elf [OK]
Creating load file for flashing: .build/clueboard_66_rev3_default.hex [OK]
Copying clueboard_66_rev3_default.hex to qmk_firmware folder [OK]
Checking file size of clueboard_66_rev3_default.hex [OK]
* The firmware size is fine - 26356/28672 (2316 bytes free)
```
## Creating Your Layout
# Creating Your Keymap
Now you are ready to create your own personal layout. Move on to [Building Your First Firmware](newbs_building_firmware.md) for that.
You are now ready to create your own personal keymap! Move on to [Building Your First Firmware](newbs_building_firmware.md) for that.

View File

@ -8,15 +8,16 @@ On this page we have documented keycodes between `0x00FF` and `0xFFFF` which are
## QMK Keycodes
|Key |Aliases |Description |
|-------------|-----------|---------------------------------------------------------------------|
|`RESET` | |Put the keyboard into DFU mode for flashing |
|`DEBUG` | |Toggle debug mode |
|`KC_GESC` |`GRAVE_ESC`|Escape when tapped, <code>&#96;</code> when pressed with Shift or GUI|
|`KC_LSPO` | |Left Shift when held, `(` when tapped |
|`KC_RSPC` | |Right Shift when held, `)` when tapped |
|`KC_LEAD` | |The [Leader key](feature_leader_key.md) |
|`KC_LOCK` | |The [Lock key](feature_key_lock.md) |
|`FUNC(n)` |`F(n)` |Call `fn_action(n)` (deprecated) |
|`M(n)` | |Call macro `n` |
|`MACROTAP(n)`| |Macro-tap `n` idk FIXME |
|Key |Aliases |Description |
|---------------|-----------|---------------------------------------------------------------------|
|`RESET` | |Put the keyboard into DFU mode for flashing |
|`DEBUG` | |Toggle debug mode |
|`EEPROM_RESET` |`EEP_RST` |Resets EEPROM state by reinitializing it |
|`KC_GESC` |`GRAVE_ESC`|Escape when tapped, <code>&#96;</code> when pressed with Shift or GUI|
|`KC_LSPO` | |Left Shift when held, `(` when tapped |
|`KC_RSPC` | |Right Shift when held, `)` when tapped |
|`KC_LEAD` | |The [Leader key](feature_leader_key.md) |
|`KC_LOCK` | |The [Lock key](feature_key_lock.md) |
|`FUNC(n)` |`F(n)` |Call `fn_action(n)` (deprecated) |
|`M(n)` | |Call macro `n` |
|`MACROTAP(n)` | |Macro-tap `n` idk FIXME |

View File

@ -0,0 +1,195 @@
# Supporting Your Keyboard in QMK Configurator
This page covers how to properly support keyboards in the [QMK Configurator](https://config.qmk.fm/).
## How the Configurator Understands Keyboards
To understand how the Configurator understands keyboards, first one must understand layout macros. For this exercise, we're going to imagine a 17-key numpad PCB, which we're going to call `numpad`.
```
┌───┬───┬───┬───┐
│NLk│ / │ * │ - │
├───┼───┼───┼───┤
│7 │8 │9 │ + │
├───┼───┼───┤ │
│4 │5 │6 │ │
├───┼───┼───┼───┤
│1 │2 │3 │Ent│
├───┴───┼───┤ │
│0 │ . │ │
└───────┴───┴───┘
```
?> For more on layout macros, see [Understanding QMK: Matrix Scanning](understanding_qmk.md?id=matrix-scanning) and [Understanding QMK: Matrix to Physical Layout Map](understanding_qmk.md?id=matrix-to-physical-layout-map).
The Configurator's API reads the keyboard's `.h` file from `qmk_firmware/keyboards/<keyboard>/<keyboard>.h`. For our numpad, this file would be `qmk_firmware/keyboards/numpad/numpad.h`:
```c
#pragma once
#define LAYOUT( \
k00, k01, k02, k03, \
k10, k11, k12, k13, \
k20, k21, k22, \
k30, k31, k32, k33, \
k40, k42 \
) { \
{ k00, k01, k02, k03 }, \
{ k10, k11, k12, k13 }, \
{ k20, k21, k22, KC_NO }, \
{ k30, k31, k32, k33 }, \
{ k40, KC_NO, k42, KC_NO } \
}
```
QMK uses `KC_NO` to designate places in the switch matrix where there is no switch. Sometimes, `XXX`, `___` or `____` are used as shorthand to make this section easier to read if it needs to be debugged. This is usually defined near the beginning of the `.h` file:
```c
#pragma once
#define XXX KC_NO
#define LAYOUT( \
k00, k01, k02, k03, \
k10, k11, k12, k13, \
k20, k21, k22, \
k30, k31, k32, k33, \
k40, k42 \
) { \
{ k00, k01, k02, k03 }, \
{ k10, k11, k12, k13 }, \
{ k20, k21, k22, XXX }, \
{ k30, k31, k32, k33 }, \
{ k40, XXX, k42, XXX } \
}
```
!> This usage differs from that of keymap macros, which almost always use `XXXXXXX` (seven capital X's) for `KC_NO` and `_______` (seven underscores) for `KC_TRNS`.
!> To prevent user confusion, using `KC_NO` is preferred.
The layout macro tells the Configurator that our keyboard has 17 keys, arranged in five rows of four columns each. Our switch positions are named `k<row><column>`, counting from 0. The names themselves actually don't matter, as long as they match between the top section, which receives the keycodes from the keymap, and the bottom half which designates where each key is in the matrix.
To display our keyboard in a way that resembles the physical keyboard, we need to build a JSON file that tells the Configurator how to tie the physical locations and sizes of our keys to our switch matrix.
## Building the JSON file
To build the JSON file, the easiest way is to build the layout in [Keyboard Layout Editor](http://www.keyboard-layout-editor.com/) ("KLE"), from which we'll feed the Raw Data into a QMK tool that converts this data into a JSON the Configurator will read and use. Since KLE opens by default with a numpad layout, we're just going to remove the Getting Started instructions, and use what's left.
Once the layout is as desired, move to the Raw Data tab in KLE, and copy the contents:
```
["Num Lock","/","*","-"],
["7\nHome","8\n↑","9\nPgUp",{h:2},"+"],
["4\n←","5","6\n→"],
["1\nEnd","2\n↓","3\nPgDn",{h:2},"Enter"],
[{w:2},"0\nIns",".\nDel"]
```
To convert this data into our JSON, go to the [QMK KLE-JSON Converter](https://qmk.fm/converter/), paste the Raw Data into the Input field, and click the Convert button. After a moment, our JSON data will appear in the Output field. Copy the contents to a new text document, and name the document `info.json`, saving it in the same folder that contains `numpad.h`.
Use the `keyboard_name` object to set the name of the keyboard. The `bootloader` object is deprecated, so it can be deleted. For instruction purposes, we will put each key's object on its own line. This is only to make the file more human-readable, and does not affect the Configurator's functionality.
```json
{
"keyboard_name": "Numpad",
"url": "",
"maintainer": "qmk",
"tags": {
"form_factor": "numpad"
},
"width": 4,
"height": 5,
"layouts": {
"LAYOUT": {
"layout": [
{"label":"Num Lock", "x":0, "y":0},
{"label":"/", "x":1, "y":0},
{"label":"*", "x":2, "y":0},
{"label":"-", "x":3, "y":0},
{"label":"7", "x":0, "y":1},
{"label":"8", "x":1, "y":1},
{"label":"9", "x":2, "y":1},
{"label":"+", "x":3, "y":1, "h":2},
{"label":"4", "x":0, "y":2},
{"label":"5", "x":1, "y":2},
{"label":"6", "x":2, "y":2},
{"label":"1", "x":0, "y":3},
{"label":"2", "x":1, "y":3},
{"label":"3", "x":2, "y":3},
{"label":"Enter", "x":3, "y":3, "h":2},
{"label":"0", "x":0, "y":4, "w":2},
{"label":".", "x":2, "y":4}
]
}
}
}
```
The `layouts` object contains the data that represents the physical layout of the keyboard. It has an object `LAYOUT`, which needs to match the name of our layout macro from `numpad.h`. The `LAYOUT` object itself has an object named `layout`, which contains one JSON object for each physical key on our keyboard, formatted as follows:
```
┌ The name of the key. Not displayed in the Configurator.
│ ┌ The key's X-axis location, in key units from the
│ │ keyboard's left edge.
│ │ ┌ The key's Y-axis location, in key units from
│ │ │ the keyboard's top (rear-facing) edge.
↓ ↓ ↓
{"label":"Num Lock", "x":0, "y":0},
```
Some objects will also have `"w"` and `"h"` keys, which represent a key's width and height, respectively.
?> For more on the `info.json` files, see [QMK Keyboard Guidelines: Keyboard Metadata](hardware_keyboard_guidelines.md?id=keyboard-metadata)
## How the Configurator Programs Keys
The Configurator's API uses the layout macro and the JSON file we've given it to create a visual representation of the keyboard that has each visual object tied to a specific key, in sequence:
key in layout macro | JSON object used
:---: | :----
k00 | {"label":"Num Lock", "x":0, "y":0}
k01 | {"label":"/", "x":1, "y":0}
k02 | {"label":"*", "x":2, "y":0}
k03 | {"label":"-", "x":3, "y":0}
k10 | {"label":"7", "x":0, "y":1}
k11 | {"label":"8", "x":1, "y":1}
k12 | {"label":"9", "x":2, "y":1}
k13 | {"label":"+", "x":3, "y":1, "h":2}
k20 | {"label":"4", "x":0, "y":2}
k21 | {"label":"5", "x":1, "y":2}
k22 | {"label":"6", "x":2, "y":2}
k30 | {"label":"1", "x":0, "y":3}
k31 | {"label":"2", "x":1, "y":3}
k32 | {"label":"3", "x":2, "y":3}
k33 | {"label":"Enter", "x":3, "y":3, "h":2}
k40 | {"label":"0", "x":0, "y":4, "w":2}
k42 | {"label":".", "x":2, "y":4}
When a user selects the top-left key in the Configurator, and assigns Num Lock to it, the Configurator builds a keymap file with `KC_NLCK` as the first key, and so on as the keymap is built. The `label` keys are not used; they are only for the user's reference in identifying specific keys when debugging the `info.json` file.
## Issues and Hazards
Currently, the Configurator does not support key rotation or non-rectangular key shapes like ISO Enter. Additionally, keys that are vertically-offset from their "row" &mdash; the arrow keys on 1800-layouts like the [TKC1800](https://github.com/qmk/qmk_firmware/tree/4ac48a61a66206beaf2fdd5f2939d8bbedd0004c/keyboards/tkc1800/) being a prominent example &mdash; confuse the KLE-to-JSON Converter, if not adjusted for by the contributor of the `info.json` file.
### Workarounds
#### Non-rectangular keys
For ISO Enter keys, QMK custom is to display it as a rectangular key, 1.25u wide and 2u high, aligned so its right edge is aligned with the right edge of the alphanumeric key block.
![](https://i.imgur.com/JKngtTw.png)
*A 60% keyboard in standard ISO layout, as rendered by QMK Configurator.*
#### Vertically-offset keys
For vertically-offset keys, place them in KLE as if they were not offset, then edit the Y-values as needed in the converted JSON file
![](https://i.imgur.com/fmDvDzR.png)
*An 1800-layout keyboard as rendered in Keyboard Layout Editor, without the vertical offset applied to the arrow keys.*
![](https://i.imgur.com/8beYMBR.png)
*A Unix diff file, showing the changes needed to vertically-offset the arrow keys in our keyboard's JSON file.*

View File

@ -26,6 +26,7 @@
*/
#include "i2c_master.h"
#include "quantum.h"
#include <string.h>
#include <hal.h>
@ -41,9 +42,11 @@ static const I2CConfig i2cconfig = {
0
};
__attribute__ ((weak))
void i2c_init(void)
{
palSetGroupMode(GPIOB, GPIOB_PIN6 | GPIOB_PIN7, 0, PAL_MODE_INPUT); // Try releasing special pins for a short time
setPinInput(B6); // Try releasing special pins for a short time
setPinInput(B7);
chThdSleepMilliseconds(10);
palSetPadMode(GPIOB, 6, PAL_MODE_ALTERNATE(4) | PAL_STM32_OTYPE_OPENDRAIN | PAL_STM32_PUPDR_PULLUP);

File diff suppressed because it is too large Load Diff

View File

@ -1,4 +1,5 @@
/* Copyright 2018 MechMerlin
* Copyright 2018 Logan Huskins
*
* 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

View File

@ -1,4 +1,5 @@
/* Copyright 2018 MechMerlin
* Copyright 2018 Logan Huskins
*
* 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
@ -17,28 +18,34 @@
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = LAYOUT_60_ansi(
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC,
KC_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,
MO(1), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_LSFT,
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(2), KC_RGUI, KC_RCTL),
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS,
KC_EQL, KC_BSPC, KC_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_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B,
KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_LCTL, KC_LGUI, KC_LALT, KC_SPC,
KC_RALT, KC_RGUI, MO(1), KC_LCTL
),
[1] = LAYOUT_60_ansi(
KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS,
KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_LSFT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
[1] = LAYOUT_60_ansi(
KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10,
KC_F11, KC_F12, KC_DEL, KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, KC_TRNS, KC_TRNS, KC_LEFT, KC_DOWN,
KC_RGHT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_INS, KC_HOME, KC_PGUP, KC_TRNS,
KC_TRNS, KC_VOLU, KC_VOLD, KC_MUTE, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_END,
KC_PGDN, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, MO(2), KC_TRNS, KC_TRNS
),
[2] = LAYOUT_60_ansi(
RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_CAPS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, BL_STEP, BL_DEC, BL_INC, BL_TOGG, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, RGB_VAD, RGB_VAI, RGB_SAI, RGB_HUD, RGB_HUI, RGB_MOD, RGB_TOG, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, RESET, BL_TOGG, BL_INC, BL_DEC, BL_STEP, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUI,
RGB_SAI, RGB_VAI, RGB_SPI, RGB_M_P, RGB_M_B, RGB_M_R, RGB_M_SW, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, RGB_RMOD, RGB_HUD, RGB_SAD, RGB_VAD, RGB_SPD, RGB_M_SN, RGB_M_K, RGB_M_X, RGB_M_G,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
),
};
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
bool process_record_user(uint16_t keycode, keyrecord_t *record)
{
return true;
}

View File

@ -1,6 +1,4 @@
# 1up60hse default keymap
# 1up60hse default keymap generated by QMK Configurator
This is the default keymap provided by [1upkeyboards](https://www.1upkeyboards.com).
This is the keymap used by [QMK Configurator](https://config.qmk.fm/#/1upkeyboards/1up60hse/LAYOUT_60_ansi) as default.
## Notes
- Software reset key is located on `Esc` on the third layer.

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