Compare commits

..

882 Commits

Author SHA1 Message Date
Ryan
9dcd03b6ca Set BOOTLOADER = stm32-dfu for all applicable STM32 boards (#12956)
* Set bootloader to stm32-dfu for STM32F303

* Set bootloader to stm32-dfu for STM32F0x2

* Set bootloader to stm32-dfu for STM32F4x1

* Set bootloader to stm32duino for sowbug

* Delete redundant bootloader_defs headers

* Add some missing MCU name comments

* Move APM32 dfu-suffix overrides underneath bootloader

* Remove redundant STM32_BOOTLOADER_ADDRESS defines/rules
2021-06-08 19:48:46 +10:00
Joel Challis
e0acd3e53d Update requirements.txt (#13135) 2021-06-08 00:37:58 +01:00
Zach White
c277ae4768 Move hid and pyusb to requirements.txt (#13134)
* Add his and pyusb to

* Update requirements-dev.txt
2021-06-07 16:30:55 -07:00
shela
b52b8f1d23 Update Japanese newbs_building_firmware_configurator.md document. (#12836) 2021-06-08 02:43:21 +09:00
umi
b7ef959400 update ref_functions.md translation (#12784) 2021-06-08 02:41:33 +09:00
umi
17e6e04600 update one_shot_keys.md translation (#12771) 2021-06-08 02:39:57 +09:00
umi
a0ed583b75 update hardware_avr.md translation (#12760) 2021-06-08 02:38:38 +09:00
umi
093a89c534 update feature_rawhid.md translation (#12759) 2021-06-08 02:36:42 +09:00
umi
c1bd8eed76 [Docs] update Japanese translation of custom_quantum_functions.md (#12715)
* update custom_quantum_functions.md translation

* update custom_quantum_functions.md translation

* explicitly describe pronoun

* update based on comment

* update based on comment
2021-06-08 02:34:39 +09:00
Ryan
9dffd35762 Add default ortho_1x1 layout (#13118) 2021-06-07 20:46:22 +10:00
wxyangf
b10728edc1 [Docs] added basic midi documention of common features (#13113)
Co-authored-by: precondition <57645186+precondition@users.noreply.github.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
Co-authored-by: Joel Challis <git@zvecr.com>
2021-06-06 23:53:20 -07:00
Matthew Dias
94e80912a4 [Keyboard] Add program yoink via keymap (#12645)
Co-authored-by: Ryan <fauxpark@gmail.com>
2021-06-06 22:10:37 -07:00
bbrfkr
7b666245d6 [Keyboard] add molecule (#12601)
Co-authored-by: Ryan <fauxpark@gmail.com>
Co-authored-by: Drashna Jaelre <drashna@live.com>
2021-06-06 22:08:20 -07:00
HalfHeuslerAlloy
23631de191 Fixed ISO keyboard layout for the Mysterium rev1.1 board (#12531) 2021-06-06 21:54:54 -07:00
Miguel Filipe
0374e4c733 [Keymap] add id80/ansi/keymaps/msf (#11957) 2021-06-06 20:37:59 -07:00
Nathan_Blais
add10524d6 Corrected Number-pad numbers (#13057) 2021-06-07 06:13:33 +10:00
TerryMathews
7aab06ffdf JETVAN: Add initial support (#12790)
Co-authored-by: Ryan <fauxpark@gmail.com>
2021-06-06 08:26:36 +10:00
shela
ab6128e86d Update Japanese document (#10670)
Co-authored-by: Takeshi ISHII <2170248+mtei@users.noreply.github.com>
2021-06-06 03:36:48 +09:00
umi
8128c5f822 update feature_layers.md translation (#12752) 2021-06-06 03:16:39 +09:00
Drashna Jaelre
770a3349be Fix includes for pmw3360 driver (#13108) 2021-06-05 08:08:35 -07:00
James Young
c7c9f3e3cf kbdfans/kbd67/rev2: add LAYOUT_65_ansi_split_space layout data (#13102) 2021-06-03 20:02:35 -07:00
stanrc85
e660dcff09 Fix caps lock indicator on Bear65 PCB (#12966) 2021-06-03 17:30:32 -07:00
Jonathan Rascher
6eb18a6ccb [Keymap] Update bcat's split_3x6_3 for Crkbd legacy removal (#13097) 2021-06-03 11:39:48 -07:00
Ryan
af91221ddb qmk multibuild: Fix bug with Path objects (#13093) 2021-06-03 16:53:03 +01:00
Ryan
261d94ce34 Tidy up spi_master includes (#13053) 2021-06-03 16:26:41 +10:00
James Young
a0cc2dc6d0 Update noroadsleft userspace and keymaps (2021-06-02) (#13086) 2021-06-02 23:06:30 -07:00
Nick Brassel
597d2e0e7b Fix up WS2812 SPI driver on F072. (#13022) 2021-06-03 09:48:16 +10:00
Joel Elkins
35dbe8ba03 [Keymap] merge jdelkins userspace and associated keymaps (#11276)
* [Keymap] merge jdelkins userspace and associated keymaps

* Add copyright & license info

* Change rgblight_config.enable to rgblight_is_enabled()

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

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

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

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

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

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

* Remove superfluous includes

* Change EXTRAFLAGS+=-flto to LTO_ENABLE=yes

* Remove unnecessary jdelkins_ss symlink in users

* Add copyright and license notices

* Use preferred way to determine capslock / numlock state

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

* Add #pragma once to a header

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

* Include QMK_KEYBOARD_H only once, in userspace header

* Remove unnecessary initialization in matrix_init_keymap

* Do process_record_keymap before cases handled in process_record_user

* Reorganize & simplify secrets feature enablement

* Use tap_code16

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

* Remove superfluous break

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

* Remove copyright from rules.mk

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

* Remove copyright from rules.mk

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

* Use tap_code16

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

* include "print.h" instead of <print.h>

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

* Use tap_cod16

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

* Use tap_code16

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

* Use tap_code16

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

* Use tap_code16

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

* Remove copyright from rules.mk

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

* add #pragma once to a header

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

* include "print.h" instead of <print.h>

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

* Remove copyright from rules.mk

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

* Remove copyright from rules.mk

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

* Remove copyright from rules.mk

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

* Use tap_code16

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

* Use tap_code16

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

* Use :flash target where possible

* Remove special case flash target and use PROGRAM_CMD

* dz60/jdelkins_ss: use tap_code16

Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
2021-06-03 06:59:52 +10:00
Xelus22
93496c8364 fix missing arg (#13068) 2021-06-01 18:12:17 +10:00
Xelus22
5a06813b10 VIA compile fixes (#13054) 2021-05-31 21:56:23 -07:00
Jeff Apczynski
6bafefa886 [Keymap] lja83's Planck keymap (#12809)
Co-authored-by: Ryan <fauxpark@gmail.com>
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Jeff Apczynski <jeffrey.apczynski@braincorp.com>
2021-05-30 21:16:26 -07:00
Gregorio
1a3064afb1 [Keyboard] Add Rubi Numpad (#12283)
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
2021-05-30 21:04:26 -07:00
Lander
2b8f1fcdfb [Keyboard] Unicomp Mini M (#12892) 2021-05-30 14:58:43 -07:00
Brandon Lewis
7b055dcc55 [Keyboard] Added BOP support (#12991)
Co-authored-by: Ryan <fauxpark@gmail.com>
Co-authored-by: Brandon Lewis <blewis308@users.noreply.github.com>
2021-05-30 14:57:43 -07:00
lukeski14
fc9a2167b1 [Keyboard] jabberwocky via support (#13029) 2021-05-30 14:55:58 -07:00
Sergey Vlasov
3aca3d3572 merge/um70:via: Avoid sprintf() to make the code fit into flash (#12919)
The code using sprintf() did not fit into flash when `merge/um70:via`
was compiled with avr-gcc 5.4.0:

     * The firmware is too large! 29756/28672 (1084 bytes over)

Replacing `sprintf(wpm_str, " %03d", current_wpm);` with custom
formatting code reduces the firmware size by 1504 bytes, which is enough
to make the `merge/um70:via` firmware fit:

    * The firmware size is approaching the maximum - 28252/28672 (98%, 420 bytes free)
2021-05-30 14:47:44 -07:00
Erovia
305cca9a5e CLI: Fix automagic (#13046) 2021-05-30 16:17:40 +01:00
James Young
1646c0f26c 2021 May 29 Breaking Changes Update (#13034)
* Add Per Key functionality for AutoShift (#11536)

* LED Matrix: Reactive effect buffers & advanced indicators (#12588)

* [Keyboard] kint36: switch to sym_eager_pk debouncing (#12626)

* [Keyboard] kint2pp: reduce input latency by ≈10ms (#12625)

* LED Matrix: Split (#12633)

* [CI] Format code according to conventions (#12650)

* feat: infinite timeout for leader key (#6580)

* feat: implement leader_no_timeout logic

* docs(leader_key): infinite leader timeout docs

* Format code according to conventions (#12680)

* Update ADC driver for STM32F1xx, STM32F3xx, STM32F4xx (#12403)

* Fix default ADC_RESOLUTION for ADCv3 (and ADCv4)

Recent ChibiOS update removed ADC_CFGR1_RES_10BIT from the ADCv3 headers
(that macro should not have been there, because ADCv3 has CFGR instead of
CFGR1).  Fix the default value for ADC_RESOLUTION to use ADC_CFGR_RES_10BITS
if it is defined (that name is used for ADCv3 and ADCv4).

* Update ADC docs to match the actually used resolution

ADC driver for ChibiOS actually uses the 10-bit resolution by default
(probably to match AVR); fix the documentation accordingly.  Also add
both ADC_CFGR_RES_10BITS and ADC_CFGR1_RES_10BIT constants (these names
differ according to the ADC implementation in the particular MCU).

* Fix pinToMux() for B12 and B13 on STM32F3xx

Testing on STM32F303CCT6 revealed that the ADC mux values for B12 and
B13 pins were wrong.

* Add support for all possible analog pins on STM32F1xx

Added ADC mux values for pins A0...A7, B0, B1, C0...C5 on STM32F1xx
(they are the same at least for STM32F103x8 and larger F103 devices, and
also F102, F105, F107 families).  Actually tested on STM32F103C8T6
(therefore pins C0...C5 were not tested).

Pins F6...F10, which are present on STM32F103x[C-G] in 144-pin packages,
cannot be supported at the moment, because those pins are connected only
to ADC3, but the ChibiOS ADC driver for STM32F1xx supports only ADC1.

* Add support for all possible analog pins on STM32F4xx

Added ADC mux values for pins A0...A7, B0, B1, C0...C5 and optionally
F3...F10 (if STM32_ADC_USE_ADC3 is enabled).  These mux values are
apparently the same for all F4xx devices, except some smaller devices may
not have ADC3.

Actually tested on STM32F401CCU6, STM32F401CEU6, STM32F411CEU6 (using
various WeAct “Blackpill” boards); only pins A0...A7, B0, B1 were tested.

Pins F3...F10 are inside `#if STM32_ADC_USE_ADC3` because some devices
which don't have ADC3 also don't have the GPIOF port, therefore the code
which refers to Fx pins does not compile.

* Fix STM32F3xx ADC mux table in documentation

The ADC driver documentation had some errors in the mux table for STM32F3xx.
Fix this table to match the datasheet and the actual code (mux settings for
B12 and B13 were also tested on a real STM32F303CCT6 chip).

* Add STM32F1xx ADC pins to the documentation

* Add STM32F4xx ADC pins to the documentation

* Add initial support for tinyuf2 bootloader (when hosted on F411 blackpill) (#12600)

* Add support for jumping to tinyuf2 bootloader. Adds blackpill UF2 example.

* Update flashing.md

* Update chconf.h

* Update config.h

* Update halconf.h

* Update mcuconf.h

* eeprom driver: Refactor where eeprom driver initialisation (and EEPROM emulation initialisation) occurs to make it non-target-specific. (#12671)

* Add support for MCU = STM32F446 (#12619)

* Add support for MCU = STM32F446

* Update platforms/chibios/GENERIC_STM32_F446XE/configs/config.h

* Restore mcuconf.h to the one used by RT-STM32F446RE-NUCLEO64

* stm32f446: update mcuconf.h and board.h for 16MHz operation, with USB enabled, and other peripherals disabled.

* Format code according to conventions (#12682)

* Format code according to conventions (#12687)

* Add STM32L433 and L443 support (#12063)

* initial L433 commit

* change to XC

* fix L433

* disable all peripherals

* update system and peripheral clocks

* 433 change

* use its own board  files

* revert its own board files

* l433 specific change

* fix stm32l432xx define

* remove duplicate #define

* fix bootloader jump

* move to L443xx and add i2c2, spi2, usart3 to mcuconf.h

* move to L443

* move to L443

* fix sdmmc in mcuconf.h

* include STM32L443

* add L443

* Include L443 in compatible microcontrollers

* Include L443 in compatible microcontrollers

* Update config bootloader jump description

* Update ChibiOS define reasoning

* Update quantum/mcu_selection.mk

* fix git conflict

* Updated Function96 with V2 files and removed chconf.h and halconf.h (#12613)

* Fix bad PR merge for #6580. (#12721)

* Change RGB/LED Matrix to use a simple define for USB suspend (#12697)

* [CI] Format code according to conventions (#12731)

* Fixing transport's led/rgb matrix suspend state logic (#12770)

* [CI] Format code according to conventions (#12772)

* Fix comment parsing (#12750)

* Added OLED fade out support (#12086)

* fix some references to bin/qmk that slipped in (#12832)

* Resolve a number of warnings in `qmk generate-api` (#12833)

* New command: qmk console (#12828)

* stash poc

* stash

* tidy up implementation

* Tidy up slightly for review

* Tidy up slightly for review

* Bodge environment to make tests pass

* Refactor away from asyncio due to windows issues

* Filter devices

* align vid/pid printing

* Add hidapi to the installers

* start preparing for multiple hid_listeners

* udev rules for hid_listen

* refactor to move closer to end state

* very basic implementation of the threaded model

* refactor how vid/pid/index are supplied and parsed

* windows improvements

* read the report directly when usage page isn't available

* add per-device colors, the choice to show names or numbers, and refactor

* add timestamps

* Add support for showing bootloaders

* tweak the color for bootloaders

* Align bootloader disconnect with connect color

* add support for showing all bootloaders

* fix the pyusb check

* tweaks

* fix exception

* hide a stack trace behind -v

* add --no-bootloaders option

* add documentation for qmk console

* Apply suggestions from code review

* pyformat

* clean up and flesh out KNOWN_BOOTLOADERS

* Remove pointless SERIAL_LINK_ENABLE rules (#12846)

* Make Swap Hands use PROGMEM (#12284)

This converts the array that the Swap Hands feature uses to use PROGMEM,
and to read from that array, as such. Since this array never changes at
runtime, there is no reason to keep it in memory. Especially for AVR
boards, as memory is a precious resource.

* Fix another bin/qmk reference (#12856)

* [Keymap] Turn OLED off on suspend in soundmonster keymap (#10419)

* Fixup build errors on `develop` branch. (#12723)

* LED Matrix: Effects! (#12651)

* Fix syntax error when compiling for ARM (#12866)

* Remove KEYMAP and LAYOUT_kc (#12160)

* alias KEYMAP to LAYOUT

* remove KEYMAP and LAYOUT_kc

* Add setup, clone, and env to the list of commands we allow even with broken modules (#12868)

* Rename `point_t` -> `led_point_t` (#12864)

* [Keyboard] updated a vendor name / fixed minor keymap issues (#12881)

* Add missing LED Matrix suspend code to suspend.c (#12878)

* LED Matrix: Documentation (#12685)

* Deprecate `send_unicode_hex_string()` (#12602)

* Fix spelling mistake regarding LED Matrix in split_common. (#12888)

* [Keymap] Fix QWERTY/DVORAK status output for kzar keymap (#12895)

* Use milc.subcommand.config instead of qmk.cli.config (#12915)

* Use milc.subcommand.config instead

* pyformat

* remove the config test

* Add function to allow repeated blinking of one layer (#12237)

* Implement function rgblight_blink_layer_repeat to allow repeated blinking of one layer at a time

* Update doc

* Rework rgblight blinking according to requested change

* optimize storage

* Fixup housekeeping from being invoked twice per loop. (#12933)

* matrix: wait for row signal to go HIGH for every row (#12945)

I noticed this discrepancy (last row of the matrix treated differently than the
others) when optimizing the input latency of my keyboard controller, see also
https://michael.stapelberg.ch/posts/2021-05-08-keyboard-input-latency-qmk-kinesis/

Before this commit, when tuning the delays I noticed ghost key presses when
pressing the F2 key, which is on the last row of the keyboard matrix: the
dead_grave key, which is on the first row of the keyboard matrix, would be
incorrectly detected as pressed.

After this commit, all keyboard matrix rows are interpreted correctly.

I suspect that my setup is more susceptible to this nuance than others because I
use GPIO_INPUT_PIN_DELAY=0 and hence don’t have another delay that might mask
the problem.

* ensure we do not conflict with existing keymap aliases (#12976)

* Add support for up to 4 IS31FL3733 drivers (#12342)

* Convert Encoder callbacks to be boolean functions (#12805)

* [Keyboard] Fix Terrazzo build failure (#12977)

* Do not hard set config in CPTC files (#11864)

* [Keyboard] Corne - Remove legacy revision support (#12226)

* [Keymap] Update to Drashna keymap and user code (based on develop) (#12936)

* Add Full-duplex serial driver for ARM boards (#9842)

* Document LED_MATRIX_FRAMEBUFFER_EFFECTS (#12987)

* Backlight: add defines for default level and breathing state (#12560)

* Add dire message about LUFA mass storage bootloader (#13014)

* [Keyboard] Remove redundant legacy and common headers for crkbd (#13023)

Was causing compiler errors on some systems.

* Fix keyboards/keymaps for boolean encoder callback changes (#12985)

* `backlight.c`: include `eeprom.h` (#13024)

* Add changelog for 2021-05-29 Breaking Changes merge (#12939)

* Add ChangeLog for 2021-05-29 Breaking Changes Merge: initial version

* Add recent develop changes

* Sort recent develop changes

* Remove sections for ChibiOS changes per tzarc

No ChibiOS changes this round.

* Add and sort recent develop changes

* add notes about keyboard moves/deletions

* import changelog for PR 12172

Documents the change to BOOTMAGIC_ENABLE.

* update section headings

* re-sort changelog

* add additional note regarding Bootmagic changes

* remove changelog timestamp

* update dates in main Breaking Changes docs

* fix broken section anchors in previous changelogs

* add link to backlight/eeprom patch to changelog

* highlight some more changes

* link PRs from section headers

* Restore standard readme

* run: qmk cformat --core-only
2021-05-29 14:38:50 -07:00
Erovia
f55e39e8a2 World domination (#13021)
Co-authored-by: Nick Brassel <nick@tzarc.org>
Co-authored-by: Ryan <fauxpark@gmail.com>
2021-05-29 20:05:46 +01:00
Erovia
84883d3400 CLI/c2json: Print 'cpp' error when executed in verbose mode (#12869)
Co-authored-by: Ryan <fauxpark@gmail.com>
2021-05-27 17:42:38 +01:00
CodeFreak
147cf8afbb Sofle rev1 Keymap - featuring keyboard pets (#12499)
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
2021-05-27 16:46:19 +01:00
DaneEvans
9da95bc3ab [Keymap] add personal keymap files, and sofle_rgb default maps, (#12267) 2021-05-26 22:30:34 -07:00
Christian Sandven
088c71b4ea [Keyboard] Corgi keyboard (#12311)
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
2021-05-26 22:25:51 -07:00
nopunin10did
7e14f85dd5 [Keyboard] Add Jabberwocky Keyboard (#12500)
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
Co-authored-by: Rossman360 <rmontsinger@gmail.com>
2021-05-26 22:22:04 -07:00
Evelien-Lillian Dekkers
0e53917471 [Keyboard] Add VIA to Aves65 (#12990) 2021-05-26 22:20:10 -07:00
thompson-ele
446ef4a676 [Keyboard] Add F.Me Macropad (#12658)
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
2021-05-26 22:17:13 -07:00
rainkeebs
1f86c3ac96 [Keyboard] Fix Delilah VIA Keymap (#13008)
Co-authored-by: Drashna Jaelre <drashna@live.com>
2021-05-26 22:13:29 -07:00
Maddie O'Brien
6750733cda Add keymap with scrolling mode for the Ploopy Nano trackball (#13013)
Co-authored-by: Drashna Jaelre <drashna@live.com>
2021-05-26 22:11:38 -07:00
Sean Browning
975e42ed3c [Keyboard] Fix Clawsome/Sedan matrix and default keymap (#13007) 2021-05-26 22:11:02 -07:00
peepeetee
712d53c953 Document RGB_MATRIX_FRAMEBUFFER_EFFECTS (#12984) 2021-05-26 21:20:54 -07:00
James Young
2ca7a8677a [Keyboard] Removed LAYOUTS = ortho_6x16 (#12983)
Removed ortho_6x16 community layout support by commenting out the line.

This can be reversed if that layout ever gets added.
2021-05-26 21:20:10 -07:00
Stefano Pace
722b1d655d [Keymap] Add new keymap for ut472 (#12974) 2021-05-26 21:17:02 -07:00
Jonavin
e7d68c500b [Keymap] Add mercutio keymap and update readme.md for layouts (#12973)
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
Co-authored-by: Jonavin <=>
2021-05-26 21:06:53 -07:00
stanrc85
5962f05f56 [Keyboard] Add RGB Matrix support for Bear65 PCB (#12961)
Co-authored-by: Drashna Jaelre <drashna@live.com>
2021-05-26 21:03:10 -07:00
Eithan Shavit
3a6188fc55 [Keyboard] Adjustments to Gust Rev1.2 (#12716)
Co-authored-by: Eithan Shavit <eithan@afternoonlabs.com>
2021-05-26 21:01:47 -07:00
C1intMason
7cd9edab99 [Keyboard] SKErgo (#12923)
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
2021-05-26 21:00:16 -07:00
Gun Pinyo
0399271a73 [Keymap] update gunp layout for Planck (#12926)
Co-authored-by: Ryan <fauxpark@gmail.com>
2021-05-26 20:48:14 -07:00
Erovia
8ba537fa23 Keyboard: Planck THK (#12597)
Co-authored-by: Ryan <fauxpark@gmail.com>
Co-authored-by: Jack Humbert <jack.humb@gmail.com>
Co-authored-by: Drashna Jaelre <drashna@live.com>
2021-05-26 20:49:30 +02:00
Wilba
0211e30032 Added RAMA WORKS M50-AX (#12458) 2021-05-25 19:51:52 +10:00
Zach White
aa97f52963 Use milc.subcommand.config instead of qmk.cli.config (#13002)
* Use milc.subcommand.config instead

* pyformat

* remove the config test
2021-05-24 23:36:38 -07:00
Zach White
bc67ca6a59 search for the readme in higher directories as well (#12997) 2021-05-24 19:38:27 -07:00
Xelus22
bbe453599f [Keyboard] AkiS (#12910)
Co-authored-by: Drashna Jaelre <drashna@live.com>
2021-05-22 12:02:57 -07:00
James Young
5eb48994ad westfoxtrot Cyclops: Configurator key sequence fix (#12979) 2021-05-22 10:18:58 -07:00
James Young
d5a94b58d2 Caffeinated Serpent65: Configurator layout data fix (#12972) 2021-05-21 23:53:24 -07:00
Jay Greco
e17a6c4f8d [Keymap] Fix wrong BASE layer for default and OLED keymaps (#12932) 2021-05-21 23:12:45 -07:00
Love Lagerkvist
3328aefd8e [Keymap] simplify layout in motform keymap (#12927) 2021-05-21 23:11:58 -07:00
shela
f173963d95 [Docs] Fix typos in audio config in main config page (#12928) 2021-05-21 22:42:26 -07:00
David Fryer
60da67fbd2 [Keyboard] Fix typo in summer breeze hardware layout (#12938) 2021-05-21 22:33:25 -07:00
Flexerm
1bb7905f78 [Keyboard] Add Prototypist J01 rev 1 support (#12825)
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
2021-05-21 22:30:35 -07:00
yiancar
1a7c1c0036 [Keyboard] Updated NK87 GPIO (#12865) 2021-05-21 22:30:17 -07:00
Danny
6152861356 [Keyboard] Add WTF60 (#12883) 2021-05-21 22:29:43 -07:00
Danny
8feb767994 [Keyboard] Add WTF60 (#12883) 2021-05-21 22:29:15 -07:00
Kyle McCreery
d14f1ab7ff [Keyboard] New Keyboard - Murphpad (#12885)
Co-authored-by: Ryan <fauxpark@gmail.com>
2021-05-21 22:28:44 -07:00
spooknik
0be53004b3 [Keyboard] Add support for alfredslab 65 (#12334)
Co-authored-by: Ryan <fauxpark@gmail.com>
2021-05-21 21:44:22 -07:00
Jay
d425fcc8b1 [Keymap] Add kanbara's planck/rev4 keymap (#12486)
Co-authored-by: Ryan <fauxpark@gmail.com>
Co-authored-by: Jay Morrow <jay.morrow@apple.com>
2021-05-21 21:38:42 -07:00
Sendy Aditya Suryana
10f8a6d983 [Keyboard] Add 75 Pixels Ortholinear Keyboard (#12220)
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
Co-authored-by: Sendy Aditya Suryana <sendy.suryana@go-jek.com>
2021-05-21 21:33:12 -07:00
Takeshi ISHII
40f235a96c fix example code in docs/feature_rgblight.md (#12960) 2021-05-20 21:47:09 +10:00
Albert Y
e961e34c7f Add EE_HANDS documentation command example (#12730)
* Add command example

* Remove c tag

Co-authored-by: filterpaper <filterpaper@localhost>
2021-05-20 19:03:56 +09:00
Zach White
db1eacdaac Align our subprocess usage with current best practices. (#12940)
* Align our subprocess usage with current best practices.

* remove unused import

* Apply suggestions from code review

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

* fix the cpp invocation for older python

* allow for unprompted installation

* make sure qmk new-keyboard works on windows

Co-authored-by: Ryan <fauxpark@gmail.com>
2021-05-19 15:24:46 -07:00
Dmitry Mikhirev
a9aec546c8 revert error introduced in PR #12871 (#12891) 2021-05-19 15:01:17 -04:00
Erovia
3023015c5b Make sure 'cformat' only runs on core files (#12909)
Co-authored-by: Zach White <skullydazed@drpepper.org>
2021-05-18 21:26:17 +02:00
Peter Park
1c81e69503 The Uni keyboard. Add keyboard (#12566)
* first commit

* Apply suggestions from code review

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

* Apply suggestions from code review by ridingqwerty

Co-authored-by: ridingqwerty <george.g.koenig@gmail.com>

Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: ridingqwerty <george.g.koenig@gmail.com>
2021-05-18 13:52:10 -04:00
ridingqwerty
d86a97a089 Fix yeehaw (#12934)
* CRLF?

* Changed VIA keymap to use core KC_TRNS alias
2021-05-18 13:46:53 -04:00
Oliver Ocean
4dd5f45b6c [Keymap] Crkbd/keymaps/oo (#12882) 2021-05-17 16:51:45 -07:00
rainkeebs
22e9a0bd01 Added Yasui keyboard (#12726)
* initial

* fix

* Update config.h

* Update config.h

* Update rules.mk

* Delete info.json

* fuix

* PR work

* replace keymap with layout

Co-authored-by: rainsff <44819800+rainsff@users.noreply.github.com>
2021-05-17 18:53:45 -04:00
Caleb Lightfoot
3bee24a827 Add Yeehaw Keyboard (#12705)
* Add files for Yeehaw keyboard.

* Modified config.h and default keymap.

* Update keyboards/yeehaw/rules.mk

Co-authored-by: ridingqwerty <george.g.koenig@gmail.com>

* Update keyboards/yeehaw/readme.md

Co-authored-by: ridingqwerty <george.g.koenig@gmail.com>

* Update keyboards/yeehaw/readme.md

Co-authored-by: ridingqwerty <george.g.koenig@gmail.com>

* Update keyboards/yeehaw/keymaps/via/keymap.c

Co-authored-by: ridingqwerty <george.g.koenig@gmail.com>

* Update keyboards/yeehaw/keymaps/via/keymap.c

Co-authored-by: ridingqwerty <george.g.koenig@gmail.com>

* Update keyboards/yeehaw/keymaps/via/keymap.c

Co-authored-by: ridingqwerty <george.g.koenig@gmail.com>

* Apply suggestions from georges review

Co-authored-by: ridingqwerty <george.g.koenig@gmail.com>

* Remove Unnecessary Defines

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

* Changed keymap licenses 📃

Co-authored-by: Tsqaushv2 <61706196+Tsqaushv2@users.noreply.github.com>
Co-authored-by: ridingqwerty <george.g.koenig@gmail.com>
Co-authored-by: Drashna Jaelre <drashna@live.com>
2021-05-17 11:52:01 -04:00
kb-elmo
f7c6d68b34 [Keyboard] Friedrich (#12569)
* added Friedrich

* Update readme.md

* Update readme.md

* Update keyboards/friedrich/keymaps/via/rules.mk

* change USB name casing
2021-05-17 01:55:37 -07:00
Brandon Lee
1d3f775051 [Keyboard] Update Rosa vendorId to something unique for VIA (#12918) 2021-05-16 15:43:33 -07:00
wxyangf
6d1f059868 [Keyboard] Added bradpad support (#12912)
Co-authored-by: Ryan <fauxpark@gmail.com>
Co-authored-by: Drashna Jaelre <drashna@live.com>
2021-05-16 15:34:18 -07:00
Callum Hart
3e1fa8cd31 [Keyboard] Giant macro pad (#12905) 2021-05-16 15:33:46 -07:00
Jonavin
29e35d83b7 [Keymap] Add new quefrency keymap (#12913)
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
2021-05-16 15:30:58 -07:00
Quentin
526fbf0faf [Keyboard] Add scylla keyboard (#12720)
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
Co-authored-by: bstiq <qlebastard@outlook.com>
2021-05-16 15:20:26 -07:00
Sife-ops
a5d7e83985 [Keyboard] Added Perixx Periboard-512 Converter (#12324)
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
2021-05-15 18:56:46 -07:00
Ross Montsinger
173aed3d0e [Keyboard] Rebound underglow settings for via (#12268) 2021-05-15 17:35:10 -07:00
chalex
36ba4806b1 [Keyboard] Add merro60 (#12527)
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
Co-authored-by: chalex <alejandrelee+magbogbro@gmail.com>
2021-05-15 17:29:04 -07:00
Sleepdealer
0876bdf1a3 [Keyboard] Add SiddersKB Majbritt Rev2 (#12598) 2021-05-15 17:18:29 -07:00
Ciutadellla
4c13de9b45 [Keymap] Reviung41_Ciutadellla (#12668) 2021-05-15 17:14:50 -07:00
Nico
1e5962adbf [Keyboard] Add Specskeys support (#12813)
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
2021-05-15 17:14:19 -07:00
Felix Jen
430cd6dbc2 [Keyboard] Added Bolsa Supply Midway60 Keyboard (#12747)
Co-authored-by: Drashna Jaelre <drashna@live.com>
2021-05-15 17:09:16 -07:00
Felix Jen
7ca4608427 [Keyboard] Added Lucid KB Scarlet [Maker KB] (#12748)
Co-authored-by: Drashna Jaelre <drashna@live.com>
2021-05-15 17:08:49 -07:00
Ramon Imbao
3efaa5ba7c [Keyboard] Add Chevron (#12762)
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
2021-05-15 17:08:25 -07:00
Brandon Lee
60cf7ae8b7 [Keyboard] Add Rosa (#12884)
Co-authored-by: Ryan <fauxpark@gmail.com>
2021-05-15 17:04:38 -07:00
Aeonstrife
cc77710b4a [Keyboard] Add Potato65 Hotswap keyboard (#12874)
Co-authored-by: Ryan <fauxpark@gmail.com>
Co-authored-by: Drashna Jaelre <drashna@live.com>
2021-05-15 16:51:21 -07:00
William Lam
f9a395e265 [Keyboard] Add Frusta Fundamental (#12583)
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
2021-05-15 11:52:13 -07:00
rookiebwoy
b057194568 [Keyboard] Add Neopad macropad (#12614) 2021-05-14 20:09:10 -07:00
Ryan
83be6ba472 Fix Marauder and add readme (#12906) 2021-05-14 19:57:16 -07:00
Cosmin
9107c382f3 [Keyboard] Add Marauder (#12550)
Co-authored-by: Drashna Jaelre <drashna@live.com>
2021-05-14 15:44:00 -07:00
Faehriss
495d47b7d2 [Keyboard] split right shift iso layout for ok60 (#12890) 2021-05-14 08:47:38 -07:00
James Young
9c68e27ace TKC Portico: layout macro/Configurator touch-up (#12897) 2021-05-14 08:41:02 -07:00
duoshock
02e1912371 [Keyboard] Add UM-70 (#12556)
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
Co-authored-by: online <33636898+online@users.noreply.github.com>
2021-05-14 08:36:31 -07:00
Felix Jen
1d50693e1b [Keyboard] Added FJLabs Polaris (#12746)
Co-authored-by: Drashna Jaelre <drashna@live.com>
2021-05-13 21:10:09 -07:00
csc027
937f5fe740 [Keymap] csc027/keymap-updates (#12694) 2021-05-13 20:54:41 -07:00
studiokestra
cae4911ca8 [Keyboard] Add Studio Kestra Cascade PCB (#12704) 2021-05-13 20:54:10 -07:00
KnoblesseOblige
3d6d4bd949 [Keyboard] Add Training Wheel 40 (#12542) 2021-05-13 20:20:51 -07:00
Brandon
5195f97d35 [Keyboard] Added smAllice (#12543)
Co-authored-by: James Young <18669334+noroadsleft@users.noreply.github.com>
2021-05-13 20:11:36 -07:00
Nathaniel
7262d5cc93 [Keyboard] update dactyl manuform 4x5 thumb cluster wiring(#12545) 2021-05-13 20:10:26 -07:00
cccywj
ba66b63fe5 [Keyboard] Add fluxlab zplit keyboard (#12396)
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
2021-05-13 19:48:04 -07:00
Ross Nelson
eddd6aa113 [Keyboard] Fix Alix40 layout (#12398) 2021-05-13 19:45:37 -07:00
Brandon Claveria
b2a63b42a5 [Keyboard] add feels/feels65 (#12426)
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
Co-authored-by: Swiftrax <swiftrax@gmail.com>
2021-05-13 19:39:56 -07:00
Ben
8f4603dd73 [Keyboard] Add Plaid-Pad Rev3 and oled keymap (#12464)
Co-authored-by: Erovia <Erovia@users.noreply.github.com>
2021-05-13 19:33:36 -07:00
knaruo
bfbbb21197 [Keyboard] Add pisces keyboard (#12287)
Co-authored-by: Nick Brassel <nick@tzarc.org>
2021-05-13 19:21:49 -07:00
Drashna Jaelre
a6807d1822 [Keyboard][PloopyCo] Fix code for Mini and Nano Trackballs (#12889) 2021-05-13 19:20:31 -07:00
wangyifu
f594b22332 [Keyboard] 60% keyboard with ISSI3733RGB IC (#11559)
Co-authored-by: Joel Challis <git@zvecr.com>
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
Co-authored-by: Nick Brassel <nick@tzarc.org>
2021-05-13 19:00:45 -07:00
Daveyr
0aaddf697f [Keyboard] added yampad configuration to keyboard subfolder (#10112)
* added yampad configuration to keyboard subfolder

* Update keyboards/yampad/config.h

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

* Update keyboards/yampad/config.h

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

* Update keyboards/yampad/config.h

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

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

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

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

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

* Update keyboards/yampad/rules.mk

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

* Update keyboards/yampad/rules.mk

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

* Update keyboards/yampad/rules.mk

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

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

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

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

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

* Update keyboards/yampad/config.h

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

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

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

* Update keyboards/yampad/config.h

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

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

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

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

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

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

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

* Update keyboards/yampad/readme.md

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

* Update keyboards/yampad/rules.mk

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

* added debouncing algorithm, delay and a traditional layout

* added link to readme

* some missed conflicts resolved in readme and rule

* Update readme.md

* Update keyboards/yampad/keymaps/traditional/keymap.c

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

* Update keyboards/yampad/keymaps/traditional/keymap.c

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

* Update keyboards/yampad/keymaps/traditional/keymap.c

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

* Update keyboards/yampad/keymaps/traditional/keymap.c

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

* Update keyboards/yampad/readme.md

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

* Update keyboards/yampad/keymaps/traditional/keymap.c

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

* Update keyboards/yampad/keymaps/traditional/keymap.c

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

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

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

* Update keyboards/yampad/keymaps/traditional/keymap.c

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

* Update keyboards/yampad/keymaps/traditional/keymap.c

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

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

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

* Update keyboards/yampad/keymaps/traditional/keymap.c

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

* Update keyboards/yampad/yampad.c

As suggested

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

* Update readme.md

Updated per suggestion

* Update keymap.c

Add MIT licence

* Update keymap.c

Added MIT licence to the traditional layout.

* Update keyboards/yampad/readme.md

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

* Update keyboards/yampad/readme.md

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

* Update keyboards/yampad/yampad.c

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

* Update keyboards/yampad/yampad.c

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

* make cases numerical in .c file

* corrected the bootloader in rules.mk

* Update keyboards/yampad/rules.mk

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

Co-authored-by: Richard <davey.richard@gmail.com>
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
Co-authored-by: James Young <18669334+noroadsleft@users.noreply.github.com>
2021-05-13 19:00:25 -07:00
Christian Eiden
cef1d19a6c [Keymap] Own/dactyl (#12624) 2021-05-13 11:07:42 -07:00
Gvalch-ca
37ca66f6cf Add Gvalchca SpaccBoard (#12876)
Co-authored-by: Ryan <fauxpark@gmail.com>
2021-05-13 19:54:13 +02:00
Boo
2f6618d699 [Keymap] Add iris keymap 'boo' (#12749) 2021-05-13 10:51:57 -07:00
klausweiss
5db0a8e2cc [Keyboard][handwired/bolek] Add PERMISSIVE_HOLD and IGNORE_MOD_TAP_INTERRUPT (#12661) 2021-05-13 10:46:05 -07:00
Leon Anavi
542918d073 [Keymap] ANAVI Macro Pad 2 add MS Teams keymap (#12779)
This keymap contains the following shortcuts for Microsoft Teams
on MS Windows and GNU/Linux distributions:

- Ctrl+Shift+M: Toggle mute
- Ctrl+Shift+O: Toggle video (doesn't work in a web browser)

NOTE: Mac users should replace Ctrl with Command in all shortcuts

Signed-off-by: Leon Anavi <leon@anavi.org>
2021-05-13 10:22:54 -07:00
Maxime Coirault
10a3e3a341 [Keyboard] Add Ky01 (#12844)
Co-authored-by: KnoblesseOblige <knoblesseoblige-github@gla.sr>
2021-05-13 10:22:08 -07:00
Ian G Canino
737fe8d763 [Keyboard] update planck aliases (#12867)
Co-authored-by: Ryan <fauxpark@gmail.com>
2021-05-13 10:19:42 -07:00
Robin Liu
c6cc6ec7f6 [Keyboard] Add Axon (#12879)
Co-authored-by: Ryan <fauxpark@gmail.com>

Co-authored-by: Ryan <fauxpark@gmail.com>
2021-05-13 10:12:45 -07:00
npspears
54e788364a [Keyboard] add ortho Candybar and NOP60 PCBs (#12807)
Co-authored-by: Ryan <fauxpark@gmail.com>
2021-05-13 09:36:12 -07:00
Jeremy Herve
6e5e34662b Redox custom keymap (jeherve): updates to deprecated code and bugfixes (#12738)
Co-authored-by: Drashna Jael're <drashna@live.com>
2021-05-14 02:29:04 +10:00
Victor Pivert
3efd94014f piv3rt keymap for dztech/dz60rgb (#12591)
* Create piv3rt's keymap

* Use tabs's LED as a caps lock indicator

* Fix indentation (tabs -> spaces)

* Set inital LED matrix color & mode

* Rename layers and add an RGBRST keycode

* Disable unused RGB effects

* Add RGB profiles

* Use ESC's LED as a num lock indicator

* Light up the keypad when _NUM layer is active

* Realign layers

* Remove legacy layer

* Fix CAPS key macro

* Reduce TAPPING_TERM to 100

* Change the caps LED to red and display the numlock one on special layers

* Add french accentuated caps + minor improvements on layers

* Remove left numpad

* Add french quotation marks

* Add key KC_NUBS

* Add terminal copy/paste

* Disable led profile on wakeup

* Change the default color

* Add AMD replay and record keys

* Add a MacOS layer

* Move Numpad

* Add GPLv2 license information

* Optimise custom RGB matrix

* Move keypad toggle and disable MAC led indicator

* Remove unnecessary check for RGB matrix
2021-05-12 23:52:55 -07:00
Mattia Righetti
ad0e6b6291 mattrighetti Whitefox keymap (#12582)
* Initial configuration with led and three layers

+ First layer contains classic keys
+ Second layer contains F keys and media keys
+ Third layer contains numbers in the top portion of the letter keys
+ Default LEDs configuration

* RGB toggle

* Documentation and minor changes

* Added LGUI key and remapped layer 2 on layer 1

* Removed backlight and led keys

* Updated keymap graphical representation

* Switched LGui with Lalt to emulate macOS layout

* Updated keymap with GNU License
2021-05-12 22:37:30 -07:00
Ivan Organista
4ccba9e3ac [Keyboard] Added via keymap for crbn keyboard (#12765) 2021-05-12 21:15:08 -07:00
Leon Anavi
32b697f5f1 [Keyboard] ANAVI Macro Pad 2 update readme.md (#12827)
Add more details about ANAVI Macro Pad 2 to readme.md.

Signed-off-by: Leon Anavi <leon@anavi.org>
2021-05-13 12:35:55 +10:00
Nick Brassel
a2412e3f4c Allow for overriding clocks on F4xx. (#12886) 2021-05-13 12:29:28 +10:00
Dmitry Mikhirev
9633f9a60f [Keyboard] x-bows nature: fix led order and colors (#12871) 2021-05-12 18:54:15 -07:00
yiancar
17864b249f [Keyboard] Seigaiha (#12791)
Co-authored-by: Ryan <fauxpark@gmail.com>
2021-05-12 18:31:53 -07:00
nut1414
0bada398df [Keyboard] Add np12 (#12703)
Co-authored-by: Ryan <fauxpark@gmail.com>
2021-05-12 18:27:16 -07:00
Juno Nguyen
fc52b43592 [Keymap] Update: layout/community/ortho_4x12/junonum (#12643) 2021-05-12 17:18:09 -07:00
thompson-ele
7d21ce367d [Keyboard] Titan60 LED and keymap updates (#12558)
Co-authored-by: Ryan <fauxpark@gmail.com>
2021-05-13 10:02:09 +10:00
Albert Y
9ada2f30ea USB suspend option and LED position change for The Mark 65 (#12725)
Co-authored-by: filterpaper <filterpaper@localhost>
2021-05-13 09:25:21 +10:00
coarse
d471a691f7 Fix Cordillera LED states config (#12646) 2021-05-13 09:24:20 +10:00
Brandon Claveria
c305edc680 add handwired/swiftrax/walter (#12428)
* init commit of walter

* finalize keyboard

* fix walter.h

* fix config.h

* fix rgblight animations

* fix config.h

Co-authored-by: Swiftrax <swiftrax@gmail.com>
2021-05-12 12:49:30 -04:00
Andrew Kannan
9a3f4f8f8a Some fixes for the Bakeneko variant DB60s (#12662)
* Some fixes for the Bakeneko variant DB60s

* Add copyright to header

* Add .python-version to gitignore for people who use pyenv or similar

* update readme

* Add more readmes

* Add more readmes

* Update the versions to have different product IDs

* Update readme

* Add missing rules.mk

* Fix matrix on hotswap

* remove iso from hotswap

* Fix hotswap spacebar

* Revert gitignore changes

* Fix layouts

* Apply suggestions from code review

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

* Add split configs

* Apply suggestions from code review

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

* Add license to config

* or equivalent

Co-authored-by: Ryan <fauxpark@gmail.com>
2021-05-12 10:52:15 +10:00
coarse
e9aee3bfd0 [Keyboard] Add Charue Design's Sunsetter (#12547) 2021-05-11 20:42:56 +02:00
peepeetee
77875e89ec peepeetee's custom keymap for bm68rgb (#12232)
* add custom keymaps for BM68rgb

* add user keymap for bm68rgb

* fix grammar

* add custom hub16 keymap

* Apply suggestions from code review

* fix errorenously included hub16 file

* add GPL headers

* revert defining dfa_state in keymap.h

* Update keyboards/bm68rgb/keymaps/peepeetee/keymap.h

* enable tap dance, add tap dance to left alt
2021-05-10 17:32:26 -07:00
George Wietor
1ab2167ff9 [Keyboard] VIA support for Preonic Rev3 (#11344)
Co-authored-by: Ryan <fauxpark@gmail.com>
Co-authored-by: Jack Humbert <jack.humb@gmail.com>
2021-05-10 15:43:05 -07:00
Drashna Jaelre
a116b3f1ae Improve EEPROM defaults for Dynamic Keymaps (#12853) 2021-05-10 15:37:36 -07:00
Zach White
bc38c38f8c Move the module checking and updating to lib/python (#12416)
* move the module checking and updating to lib/python

* make flake8 happy

* Update lib/python/qmk/cli/__init__.py

Co-authored-by: Erovia <Erovia@users.noreply.github.com>

* prompt the user to disable developer mode

* pyformat

* flake8

Co-authored-by: Erovia <Erovia@users.noreply.github.com>
2021-05-10 12:00:52 -07:00
Zach White
a3e7f3e7c5 Improve our CI tests (#11476)
* add a test and dry-run to qmk generate-api

* add a dry-run to qmk pyformat

* Add a --dry-run to qmk cformat

* reverse the order of nose2 and flake8 tests

* run CI test against cformat and pyformat

* fix programming errors

* tweak job name

* fix argument

* refine the files we select

* fix stack trace in --ci

* make cformat exit clean

* fix c file extensions

* decouple CI from pyformat

* remove --ci arg

* make ci happy

* use the environment var instead

* change output to text

* fix log message

* replace tabs
2021-05-10 11:18:44 -07:00
James Young
66ed80ad3a Lagrange handwired Configurator bugfix (#12854)
* use human-friendly formatting

* correct key object order
2021-05-10 10:37:05 -07:00
Joel Challis
3f854e16ac Catch 'LAYOUTS = all' in lint (#12848)
Co-authored-by: Zach White <skullydazed@drpepper.org>
2021-05-09 22:39:48 +02:00
Ryan
4fa32f0f04 KBDMini refactor (#12850) 2021-05-10 05:16:29 +10:00
Zach White
5c924efa04 fix the makefile snippet so flake8 and yapf don't fight (#12849) 2021-05-09 11:30:17 -07:00
Erovia
30aae6298b CLI: Use BASH if SHELL variable is not set (Windows) (#12847) 2021-05-09 19:19:42 +02:00
github-actions[bot]
6c5e94061c [CI] Format code according to conventions (#12838)
Co-authored-by: QMK Bot <hello@qmk.fm>
2021-05-10 03:15:00 +10:00
Nick Brassel
1426ffc0ee Add script to perform parallel builds. (#12497)
Co-authored-by: Erovia <Erovia@users.noreply.github.com>
2021-05-09 17:06:44 +02:00
Joel Challis
f544b60aaa Align qmk info ascii logic with milc logging (#11627) 2021-05-09 15:53:18 +02:00
Joel Challis
7725d813c9 Allow MAKE environment override for 'qmk clean' (#12473) 2021-05-09 12:57:49 +02:00
Purdea Andrei
60a39f4f5d haptic: correct size of reserved field in the haptic structure. This saves 1 byte of wasted SRAM. (#12483)
Co-authored-by: Drashna Jaelre <drashna@live.com>
2021-05-08 20:45:41 -07:00
Sean Johnson
df57590ec6 add ttys0's planck and preonic keymaps (#10560)
* resynced with upstream, and adjusted keymap layout for planck

* updated keyboard layout

Signed-off-by: Sean Johnson <sean@ttys0.net>

* swapped out bspc for del on symb layer

Signed-off-by: Sean Johnson <sean@ttys0.net>

* fixed typo with brightness media keys

* turns out my brightness config was correct, it was macOS that had gone sideways

* updated to bring in line with requirements for merging into upstream

* removed redundant config from rules.mk

moved media controls to FUNC layer for Planck layout

* added GPL2+ compatible license header

Signed-off-by: Sean Johnson <sean@skj.dev>

* removed unused MIDI comment

Signed-off-by: Sean Johnson <sean@skj.dev>

* removed extraneous MIDI comments

* removed extraneous comments
2021-05-08 20:00:11 -07:00
Seth Barberee
b7fe24923e Update sethBarberee Userspace (#12620)
* update for LTO and guard RGBLED_SPLIT

* Revert "update for LTO and guard RGBLED_SPLIT"

This reverts commit ce81177cbe.

* Revert "Revert "update for LTO and guard RGBLED_SPLIT""

This reverts commit 67da0ce9f3.

* update iris keymap for keymap_kc removal and overhaul userspace

* add licenses

* fix tap_dance error when rgblight is disabled and update/clean iris/sinc maps
2021-05-08 10:26:51 -07:00
Hilary B. Brenum
067a6f0174 Hbbisenieks keymap update to remove kc_ keymaps (#12391)
* hbbisenieks keymap

* change from kc_ keymap

* Apply suggestions from code review

Co-authored-by: Takeshi ISHII <2170248+mtei@users.noreply.github.com>

Co-authored-by: Hilary Brenum <hilary.brenum@tanium.com>
Co-authored-by: Zach White <skullydazed@drpepper.org>
Co-authored-by: Takeshi ISHII <2170248+mtei@users.noreply.github.com>
2021-05-08 09:35:32 -07:00
Mateusz Piotrowski
189e0d5b98 Update FreeBSD install method (#12815)
The easiest way to install QMK CLI and all the necessary
dependencies on FreeBSD is to use the packages
from the official FreeBSD Ports Collection.

This is possible since QMK CLI has been added to the Ports Collection:
https://www.freshports.org/sysutils/py-qmk/
2021-05-07 19:22:05 +02:00
stanrc85
56e5a83e68 [Keymap] My Arisu layout setup (#12647) 2021-05-07 19:51:47 +10:00
kb-elmo
34f3918244 Fix DZ60 64 key layout (#12551)
* add gk64 layout

* Apply suggestions from code review

* fix dz60 gk64 layout
2021-05-06 14:07:51 -07:00
timothynsheehan
f3a1629469 Add docs on multiple encoders sharing pins (#11678)
Added explanation of how multiple encoders can share pins and the limitations of this configuration
2021-05-06 20:17:10 +02:00
Ryan
3d922e6257 Add a handful of consumer/gendesk page usages (#12811) 2021-05-06 17:16:07 +01:00
Mateusz Piotrowski
38b9f67c3b Fix qmk flash on FreeBSD (#12085)
When the USB device is connected, FreeBSD creates not one, but three
device nodes in /dev, e.g.: /dev/ttyU0, /dev/ttyU0.init, and
/dev/ttyU0.lock.

As a result, this leads to the USB variable containing 3 paths
(and therefore, whitespace) and messages like this one:

    Device /dev/ttyU0
    /dev/ttyU0.init
    /dev/ttyU0.lock has appeared; assuming it is the controller.

This changes fixes the use of the -z flag of "[" (see test(1)). Also, it
removes undesired paths from the USB variable, leaving only
one path there (i.e., "/dev/ttyU0").
2021-05-06 09:26:50 +10:00
Andrew Kannan
c6778dde82 [Keyboard] ai03 Andromeda (#12676)
* Add andromeda to qmk

* Fix

* Another fix

* Fix via map

* Update andromeda

* Update confs for new qmk master

* Apply suggestions from code review

* Remove the ch hal and mcu conf as the andromeda does not need extra peripherals

* Update keyboards/ai03/andromeda/rules.mk

* Apply suggestions from code review

* Add bootloader note to readme
2021-05-04 12:38:38 -07:00
Matrix Zou
c27a458799 [Keyboard] added Time 80 Reforged by Fox Lab (#11996)
* [Keyboard] added Time 80 Reforged by Fox Lab

* added Time 80 Reforged by Fox Lab
* split to two sub directories for universal and hotswap pcb
* Apply suggestions from code review

* Modified codes as suggested

* update code as suggested

* rgb log light keymaps added

* update code as suggested

* enable rgblight right to TIME logo, and add keymaps for it's control
* Apply suggestions from code review

* enable built-in switch LED support
* Apply suggestions from code review

* Apply suggestions from code review

* Apply suggestions from code review

* Apply suggestions from code review
2021-05-04 01:40:26 -07:00
James Young
8ed1addd1e Update noroadsleft userspace and keymaps (2021-05-03) (#12796)
* Set Dvorak as the standard base layer

* Remove unneeded includes

* Remove custom handling for Quake 2

Have now rewritten my in-game configuration to use Dvorak mapping instead of QWERTY, which means I don't need any of this stuff.

* Clean up comments in KC60 keymap
2021-05-03 17:31:36 -07:00
Joel Challis
25c97e0019 Shim cli to new keyboard script (#12780)
* Shim cli to new keyboard script

* Shim cli to new keyboard script

* Add docs
2021-05-02 16:59:10 +01:00
Joel Challis
0fd8faa1ad Fix unused import in recent generation code (#12781) 2021-05-02 08:43:40 -07:00
Joel Challis
fc2b51194c Allow <keyboard>.h to be optional when going data driven (#12706)
* Allow <keyboard>.h to be optional when going data driven

* Remove stub files as no longer required

* Rename function

* Remove include of layouts.h for now

* Take advantage of type=keyboard_folder

* Take advantage of type=keyboard_folder - kb should still be mandatory
2021-05-01 02:00:04 +01:00
k.bigwheel
18dc12cd78 [Keyboard] Fix bootloader rule for meishi2 keyboard (#12740) 2021-05-01 06:23:39 +10:00
David Fryer
489c814a48 Add breeze variants (#12596)
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
Co-authored-by: Adrian <42110361+xSteins@users.noreply.github.com>
2021-04-30 19:45:36 +02:00
James Young
8190a795ed DracuLad: add Configurator data and rework layout macro (#12727)
* add info.json file

* refactor keymaps for readability

* rework layout macro

Arranges the layout macro and keycodes to resemble the physical layout.

* readme touch-up

Corrections to capitalization and spelling, and removal of extra white space.
2021-04-29 11:25:30 -07:00
Paul Ewing
d3963a61cb Add firmware for CozyKeys Bloomer keyboard (#12639)
Co-authored-by: Ryan <fauxpark@gmail.com>
Co-authored-by: Erovia <Erovia@users.noreply.github.com>
2021-04-29 18:55:01 +02:00
Joel Challis
4abc3ceb4b Align drivers.txt with toolbox (#12741) 2021-04-30 02:48:34 +10:00
Wilba
05ee0afd54 Fix F13 LED issue for WT75-B, WT75-C (#12729) 2021-04-29 03:39:14 -07:00
Nick Brassel
54e8dd0885 Fix up bad keycode in #12405. (#12722) 2021-04-28 11:46:13 +01:00
Xelus22
63cdf80885 add default folder to standard (#12712) 2021-04-28 11:39:14 +10:00
alittlepeace
2af86cec3d YMDK Wings: Update config.h (#12718)
Adds Caps Lock LED indicator configuration.
2021-04-27 13:54:34 -07:00
James Young
e5cde191e1 Add flashing instructions to GMMK Pro readme (#12719) 2021-04-27 12:36:53 -07:00
W. Ducky
7be4047df0 GMMK Pro: Fixed Bootmagic Lite support; personal keymap; VIA support (#12554)
* Added WholesomeDucky keymap for GMMK Pro

* Finalized keymap & added 1000hz polling for GMMK Pro

* Corrected for RAlt and Fn being swapped

* Fixed RAlt and Fn being swapped in the layout definition. Updated personal keymap to reflect fixed layout.

* Removed an old comment from personal keymap for GMMK Pro

* added VIA support

* Defined bootmagic row and column for GMMK Pro Esc key

* Update keyboards/gmmk/pro/config.h

* Update keyboards/gmmk/pro/keymaps/via/keymap.c

* Update keyboards/gmmk/pro/keymaps/via/keymap.c
2021-04-27 11:37:11 -07:00
Mango The Fourth
3fe356e65c Add Draculad keyboard (#12604)
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
Co-authored-by: Erovia <Erovia@users.noreply.github.com>
Co-authored-by: mangoiv <mangoiv@outlook.com>
2021-04-27 19:41:11 +02:00
Ryan Mitchell
b95231c1e3 GMMK Pro: add RESET binding, fix layout macro bug (#12684)
* add RESET binding, fix layout mod key bug (fixes #12683)

* remove underscore #define and use core's instead
2021-04-27 10:23:41 -07:00
James Young
f9fb52951d Update noroadsleft userspace and keymaps (2021-04-26) (#12711)
* Update noroadsleft userspace and keymaps (2021-04-26)

- add Discipline keymap
- move Emulated Non-US Backslash, Numeric Keypad and F13-F24 code fully to userspace
- re-add some custom keycode handling I accidentally deleted
- update VRSN keycode
- update KC60 and userspace readmes

* remove Git readme from kc60 keymap

* update kc60:noroadsleft readme

Concatenates this readme into one file, and updates the image links.
2021-04-26 23:44:45 -07:00
Andrew Kannan
b5419bd574 Add python-version to gitignore (#12678) 2021-04-26 21:18:17 +02:00
Xelus22
8f660ca1e6 [Keyboard] fix planck light via endpoints (#12701) 2021-04-26 10:24:19 -07:00
Xelus22
2f47bafd6a fix configs (#12631) 2021-04-26 12:52:00 +10:00
Luis Moreno
417a07c22d [Config] Add VSCode workspace files to .gitignore (#12469) 2021-04-26 06:46:28 +10:00
Xelus22
611cd80861 [Keyboard] Ninjin (#12496)
* ninjin init

* put in gpl thing

* underglow

* update to latest chibios

* fix gpl headers

* remove other files

* fix header

* Update keyboards/xelus/ninjin/readme.md

Co-authored-by: Nick Brassel <nick@tzarc.org>

* Update keyboards/xelus/ninjin/mcuconf.h

Co-authored-by: Nick Brassel <nick@tzarc.org>

* Update keyboards/xelus/ninjin/halconf.h

Co-authored-by: Nick Brassel <nick@tzarc.org>

Co-authored-by: Nick Brassel <nick@tzarc.org>
2021-04-25 18:57:22 +10:00
peepeetee
89bd04b9eb peepeetee's *very janky* hub16 keymap (#12506)
* peepeetee's bodged hub16 keymap

* add layer 3 lighting

* actually adds layer 3 lighting

* fixes layer 0; behavior is that layor 0 is unaltered from base pattern, while other states have distinct solid colors
2021-04-25 14:02:42 +10:00
calebchongc
5b394e82c9 Update checking board master function (#12493)
changed is_master to is_keyboard_master()
2021-04-25 13:59:37 +10:00
Sergey Vlasov
da6e888a32 Do not leak weak mods from tap dance to the interrupting keypress (#12471)
Tap dance callbacks may register weak mods; one case when it happens
is when a tap dance registers a key with modifiers.  When the tap
dance is interrupted by pressing another key, these weak mods could
affect the interrupting key (normally any stale weak mods are cleared
at the start of action_exec() when handling a keypress event, but the
tap dance interrupt check code is called later, and the weak mods left
by that code were not cleared).  Add another clear_weak_mods() call to
preprocess_tap_dance() to make sure that the interrupting keypress is
not affected by unrelated weak mods from the previous tap dance.

Fixes #12445.
2021-04-25 13:41:37 +10:00
github-actions[bot]
d3bf3d3b1c Format code according to conventions (#12681)
Co-authored-by: QMK Bot <hello@qmk.fm>
2021-04-25 13:15:48 +10:00
Purdea Andrei
dbd65d01b6 Fix how USB queue overflow is handled in chibios. (#12576)
* Fix how USB queue overflow is handled in chibios.

This commit reverts PR 12472 (commit c823fe2d3f),
and it implements the original intent of the commit in a better way.
The original intent of the above mentioned commit was to not deadlock the
keyboard when console is enabled, and hid_listen is not started.

The above mentioned commit had a few drawbacks:
1) When a lot of data was printed to the console, the queue would get full,
and drop data, even if hid_listen was running. (For example having matrix debug
enabled just didn't work right at all)
2) I believe the function in which this was implemented is used by all other
USB endpoints, so with the above change, overflow, and data loss could
happen in other important functions of QMK as well.

This commit implements deadlock prevention in a slightly similar way to how
it's done on AVR. There is an additional static local variable, that memorizes
whether the console has timeouted before. If we are in the timeouted=false
state, then we send the character normally with a 5ms timeout. If it does
time out, then hid_listen is likely not running, and future characters should
not be sent with a timeout, but those characters should still be sent if there
is space in the queue. The difference between the AVR implementation and this
one is that the AVR implementation checks the queue state directly, but this
implementation instead attempts to write the character with a zero timeout.
If it fails, then we remain in the timeouted=true state, if it succeeds, then
hid_listen started removing data from the queue, so we can go out of the
timeouted=true state.

* Added comment explaining the timeouted logic to console flow control.

* Console flow control: refactor chibios flowcontrol code to make it more readable, and rename the timeouted variable to timed_out on both chibios and lufa. Changed comments to says timed_out is an approximation of listener_disconnected, to make it clear that it's not the same thing

* fix typo
2021-04-25 13:11:41 +10:00
Albert Y
c7ca67a036 Add RGB matrix suspend wake function for Planck/rev6 (#12290)
* Add RGB matrix suspend wake function for Planck/rev6

* Update suggested definition to allow user override.

Co-authored-by: Nick Brassel <nick@tzarc.org>

Co-authored-by: filterpaper <filterpaper@localhost>
Co-authored-by: Nick Brassel <nick@tzarc.org>
2021-04-25 11:47:43 +10:00
Nick Brassel
b88498ba85 Fix CLI incorrectly following DEFAULT_FOLDER (#12529)
* Attempt to sort out incorrectly following DEFAULT_FOLDER.

* Fix CI checks.

* qmk pyformat
2021-04-25 11:15:54 +10:00
Leon Anavi
0c50a9eae9 [Keymap] Add Git keymap for ANAVI Macro Pad 8 (#12436)
Git keymap for ANAVI Macro Pad 8 with the following shortcuts.
On the first row from left to right:

- git status
- git log
- git pull
- git push

On the second row from left to right:

- git diff
- git add
- git commit
- FN key to switch to the 2nd layout and control lights

Reduce the number of supported RGB animations and effects in
config.h to shrink the firmware size and fit it on the device.

Signed-off-by: Leon Anavi <leon@anavi.org>
2021-04-25 11:14:28 +10:00
gkeyboard
35944df7b0 Add lm60n keyboard (#12408)
Add lm60n keyboard
2021-04-25 11:04:38 +10:00
Matthew Dias
2a45d99059 Add m3n3van rev2 (#12405)
* Add m3n3van rev2

* Add via support
2021-04-25 11:02:00 +10:00
Christian Fehmer
06f8cb1b8a Add VIA support for Filco Majestouch 2 /w The Tiger Lily (#12401) 2021-04-25 11:00:56 +10:00
Pavlos Vinieratos
b2b075c123 not accessible and not needed anyway for a test keymap (#12366) 2021-04-25 11:00:12 +10:00
SonOfAres
54dc6b7bf2 adding keyboard (#12414)
* adding keyboard

* Update keyboards/iriskeyboards/readme.md - picture size

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

* Delete iriskeyboards.json, it belongs in VIA repo

* Update info.json

* Update readme.md

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

Removing unnecessary layers

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

Co-authored-by: Ryan <fauxpark@gmail.com>
2021-04-22 17:15:28 -04:00
George Wietor
ffa1507c2c VIA support for Planck Rev6 (#9144)
Co-authored-by: Joel Challis <git@zvecr.com>
Co-authored-by: George Wietor <george@LIGHT-GRAY.local>
Co-authored-by: Jack Humbert <jack.humb@gmail.com>
2021-04-22 10:13:44 -07:00
rainkeebs
4f2afaa6fb Delilah keyboard added (#12638)
* Delilah keyboard added

* Apply suggestions from code review

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

* removed unnecessary lines as per review

* removed unnecessary lines as per review

Co-authored-by: Drashna Jaelre <drashna@live.com>
2021-04-22 10:58:09 -04:00
MechMaster48
0b6d8150e4 Personal keymap for dztech DZ60RGB plus README.md (#12485)
* Personal keymap and README to go along with it.

* Noticed typo in README and removed name from comment in keymap

* Added GPL copyright notice
2021-04-21 19:50:26 -04:00
Joshua Coffey
054adbaf1e Update for the dodger keymap for the Planck (#12456) 2021-04-20 21:01:54 +02:00
Drashna Jaelre
6b5e349d7e Add additional info to PR Checklist (#12630)
Co-authored-by: Nick Brassel <nick@tzarc.org>
2021-04-20 20:12:57 +02:00
Joel Challis
1cecd593c8 Fix for gcc10 teensy_lc eeprom build warning (#12587) 2021-04-20 10:51:55 -07:00
Brandon Claveria
2bccb7132d [Keyboard] Siris (#12415)
Co-authored-by: Ryan <fauxpark@gmail.com>
Co-authored-by: Swiftrax <swiftrax@gmail.com>
2021-04-20 10:50:06 -07:00
mechlovin
0d5458a7ad [Keyboard] add adelais rev4 (#12443) 2021-04-20 10:47:58 -07:00
Felix Jen
cce9ddff80 [Keyboard] Added BKS65 Solder PCB (#12451)
Co-authored-by: Ryan <fauxpark@gmail.com>
2021-04-20 10:47:31 -07:00
Christiano Haesbaert
d330203486 [Keyboard] Add amigopunk, a handwired 75% ALPS (#12489)
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
2021-04-20 10:46:19 -07:00
kb-elmo
45a557641d [Keyboard] Matrix 1.2og AVR PCB - VIA support (#12534) 2021-04-20 10:24:36 -07:00
Mikkel Jeppesen
271c7d4923 [Keyboard] Added support for the older no_led revision (#12563) 2021-04-20 10:23:00 -07:00
duoshock
54bad99e0e [Keyboard] Update ISO Macro vendor ID to meet VIA requirement (#12564)
Co-authored-by: online <33636898+online@users.noreply.github.com>
2021-04-20 10:22:29 -07:00
kb-elmo
9a3ba6874c [Keyboard] fix bella debounce (#12568) 2021-04-20 10:21:59 -07:00
yynmt
5f670fbdc4 [Keyboard] Add Acperience12 macropad (#12573)
Co-authored-by: yynmt <yynmt@yynmt.com>
2021-04-20 10:21:39 -07:00
Dimitris Papavasiliou
bd07120d33 [Keyboard] Fix and improve SPI transport in the Lagrange (#12606)
Co-authored-by: Dimitris Papavasiliou <dpapavas@gmail.com>
2021-04-20 10:17:39 -07:00
AlisGraveNil
4ff16fe73e [Keyboard] doodle macropad - 03/14 (#12243)
Co-authored-by: Ryan <fauxpark@gmail.com>
Co-authored-by: Drashna Jaelre <drashna@live.com>
2021-04-20 09:59:05 -07:00
mechlovin
21c147c11b [Keyboard] Refactor IF87_rev1 (#12574) 2021-04-20 09:56:32 -07:00
tszaboo
752f5d6eb6 [Keyboard] Fixing files for Orto4exent (#12607)
Co-authored-by: Joel Challis <git@zvecr.com>
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
2021-04-20 09:32:20 -07:00
obosob
b6c353db0c [Keyboard] Set OLED_DISPLAY_128X64 for Arch-36 (#12609)
Co-authored-by: Ryan <fauxpark@gmail.com>
2021-04-20 09:23:48 -07:00
GLozares
666944df2e [Keyboard] Add millipad keypad and default keymap (#12522) 2021-04-20 09:15:21 -07:00
Xelus22
3d37afd495 [Keyboard] Pachi Mini 32u4 (#12533)
Co-authored-by: Ryan <fauxpark@gmail.com>
2021-04-20 09:11:48 -07:00
Joel Challis
f778ede8bd Initial firmware for Forever65 (#12572) 2021-04-20 16:17:47 +01:00
yiancar
8405d28670 [Keyboard] Carbo65 (#12406)
Co-authored-by: Ryan <fauxpark@gmail.com>
2021-04-19 21:12:48 -07:00
Jos Boersema
f93ad79f41 [Keymap] Minifan minor issues (#12592) 2021-04-19 19:40:18 -07:00
kiwikey
dffa089173 [Keyboard] Add Wanderland - An Alice-layout keyboard (#12516)
Co-authored-by: Ryan <fauxpark@gmail.com>
2021-04-19 11:04:03 -07:00
Jaehee
3990c0f43d [Keyboard] Add jkdlab/binary_monkey (#12374)
Co-authored-by: Ryan <fauxpark@gmail.com>
2021-04-19 09:39:54 -07:00
peepeetee
20f35afd53 Fix bm68rgb led map (#12503) 2021-04-19 20:15:23 +10:00
AaronVerDow
00eea387fc [Keymap] Iracing replay keymap (#12461)
Co-authored-by: Aaron VerDow <aaron@verdow.com>
2021-04-19 02:23:20 -07:00
Robert Verst
2274631c8f [Keymap] Fix handling of RV_LOCK and RV_SNAP for windows (#12498)
Co-authored-by: Robert Verst <robert.verst@tobit.com>
2021-04-19 02:22:49 -07:00
jack
81be065fa5 [Keyboard] VIA Support for LCK75 (#12402) 2021-04-19 02:22:18 -07:00
Wilba
53a35c0d0c [Keyboard] Update RAMA WORKS M50-A (#12459) 2021-04-19 02:21:27 -07:00
Michael Stapelberg
cfbd9ba0e7 eclipse: recommend changing the default project make target (#12447)
This is required for example for quickly iterating with a debugger, where
Eclipse will build the project automatically.

It’s also shorter than the previous steps, which I think might not have been
updated since
https://qmk.fm/changes/2017-09-08-making-from-root-and-no-more-makefiles
2021-04-19 02:20:17 -07:00
Benedict Tan
5581ea8809 [Keyboard] Update dz60rgb default keymap (#12488)
The keymap for this PCB as of April 5, 2020 has a 4rth, largely superfluous layer, creating a total of 5 layers.

When ported to VIA, this results in a layer that users can access but cannot edit. I propose removing this layer completely along with it's access from the default.
2021-04-19 01:20:51 -07:00
Sergey Vlasov
fe9bd0afb9 Fix F303 audio output on A4 with the dac_basic driver (#12480)
The dac_basic driver did not work properly with `#define AUDIO_PIN A4`
(instead of configuring the A4 pin, the driver actually was switching
the A5 pin to analog mode, breaking any other usage of that pin in
addition to emitting a distorted signal on the improperly configured
A4 pin).  Fix the code to configure the A4 pin as intended.
2021-04-19 00:32:14 -07:00
Michael Stapelberg
17c880b076 [Keymap] add kinesis/keymaps/stapelberg (#12430) 2021-04-18 23:42:40 -07:00
Alexander Kagno
ef6802ca60 New keyboard keymap, small keymap updates to mm2 keymap (#12310)
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Alex <alex@turncommerce.com>
2021-04-18 23:17:34 -07:00
Wilba
c7adb7a352 [Keyboard] Add wilba.tech WT60-G2 (#12395) 2021-04-18 23:12:48 -07:00
Wilba
10dfc8d92f [Keyboard] Add wilba.tech WT65-FX (#12394) 2021-04-18 23:12:26 -07:00
Wilba
c7214e1d13 [Keyboard] Add wilba.tech WT65-F (#12393) 2021-04-18 23:12:05 -07:00
Eric Wood
94d9d2bb31 [Keyboard] Add handwired/frankie_macropad (#12349)
Co-authored-by: Ryan <fauxpark@gmail.com>
2021-04-18 23:04:16 -07:00
Conor Burns
0b560673ce [Keyboard] Updates for 0xCB 1337 (#12336) 2021-04-18 23:00:05 -07:00
Ben Fiedler
2b7078cd21 [Keymap] add my quefrency layout (#12104) 2021-04-18 22:44:23 -07:00
Angel Rojas
99c46e4b73 [Keyboard] Add G1_65 keyboard (#12140)
Co-authored-by: Drashna Jaelre <drashna@live.com>
2021-04-18 22:30:36 -07:00
maz0r
1e19227b31 [Keyboard] Capsunlocked CU80 Squish and Refactor (#12193)
Co-authored-by: Ryan <fauxpark@gmail.com>
Co-authored-by: Erovia <Erovia@users.noreply.github.com>
2021-04-18 22:24:30 -07:00
LIParadise
9b8c5c1860 [Keyboard] Helen80 matrix fixes (#11969)
Co-authored-by: LIParadise <a58524andy>
2021-04-18 22:05:21 -07:00
Sanctified-git
0afbf8cc3c [Keyboard] Add Dystopia keyboard (#11997)
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
Co-authored-by: Erovia <Erovia@users.noreply.github.com>
Co-authored-by: Sanctified <Sanctified@users.noreply.github.com>
2021-04-18 21:53:33 -07:00
MelGeek
2aab8a114e [Keyboard] Update MJ61 architecture to support multi version (#11787)
Co-authored-by: Ryan <fauxpark@gmail.com>
Co-authored-by: James Young <18669334+noroadsleft@users.noreply.github.com>
Co-authored-by: Drashna Jaelre <drashna@live.com>
2021-04-18 21:02:13 -07:00
RinoSolutions
6b2a3a67a6 [Keyboard] Adding of Monarch keyboard (#11769)
Co-authored-by: Joel Challis <git@zvecr.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
Co-authored-by: Ramon Imbao <ramonimbao@gmail.com>
2021-04-18 20:54:07 -07:00
Ian McLinden
cfefecd951 [Keyboard] Added Koolertron AMAG23 (#11725) 2021-04-18 20:44:32 -07:00
Oliver Gaskell
05357d7937 [Keyboard] Add Tau4 keyboard (#11361)
with default and i2cscanner keymaps

Co-authored-by: Ryan <fauxpark@gmail.com>
Co-authored-by: James Young <18669334+noroadsleft@users.noreply.github.com>
2021-04-18 20:36:40 -07:00
Nick Brassel
a0089aa345 Fixup Satisfaction75 bootprocess. (#12621)
- Use normal ChibiOS I2C driver.
- Move drawing code to housekeeping -- previously it was during matrix
  scan, which gets executed during bootmagic checks. However, bootmagic
  is invoked before QWIIC subsystem is enabled, which means I2C isn't
  configured yet. All I2C calls to the OLED fail with timeouts while
  bootmagic is being checked. Housekeeping ensures this is executed once
  the system has initialised and settled.
- QWIIC OLED driver: properly clear out OLED buffer when clearing screen.
2021-04-19 13:08:01 +10:00
Richard Dawe
eb7e668eb9 Add RGB controls to picture; label Layer 3 correctly (#12337) 2021-04-18 18:39:15 -04:00
Giorgi Chavchanidze
a3d717cb83 Keymap: Orthocarpus keymap for idobo (#12462)
* Keymap: Orthocarpus keymap for idobo

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

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

Co-authored-by: Giorgi Chavchanidze <giorgi@vivaldi.com>
Co-authored-by: Drashna Jaelre <drashna@live.com>
2021-04-18 18:22:56 -04:00
Antoine R. Dumont
fd65451679 keyboardio/atreus: Add ardumont keymap (#12479) 2021-04-18 18:14:23 -04:00
Pierre Chevalier
d0973e1cfb Add ferris 0.2 (#12133)
Co-authored-by: Ryan <fauxpark@gmail.com>
2021-04-18 17:51:45 +02:00
MarioCorona
c32264d9b7 mcrown crkbd new keymap (#12092)
Co-authored-by: Erovia <Erovia@users.noreply.github.com>
2021-04-17 17:46:46 +02:00
Harshit Goel
09a392433a Ergodone via support (#11618)
Co-authored-by: Erovia <Erovia@users.noreply.github.com>
2021-04-16 16:26:19 +02:00
sendmmsg
3975c712f0 Bug in beautifier script, compound modifiers not correctly parsed (#12595) 2021-04-16 16:23:30 +02:00
Wilba
a8c013a145 Fix audio on WT60-XT (#12526) 2021-04-15 13:19:41 -04:00
Jay Greco
a69616c45c Optimize NIBBLE oled_bongocat keymap to reduce flash usage (#12330)
* Optimize with squeez-o frame compression

Adds VIA support!

* Clean up for PR

+ Add copyright header
- Remove debug print statements
2021-04-15 13:04:26 -04:00
MechMerlin
39d31d3ee4 update readme (#12322) 2021-04-15 13:01:25 -04:00
Zach White
588bcdc8ca Add support for tab completion (#12411)
* Add support for tab completion

* make flake8 happy

* Add documentation
2021-04-14 19:00:22 -07:00
Jan Christoph Ebersbach
b33e6793de Dactyl manuform 5x6 2 5 keymap (#11353)
* feat(keymap): add DactylManuform w/ 2 extra keys and 5 thumb keys

* fix(keymap): add missing readme

* chore: add gpl2 license header

* chore: add gpl2 license header

* docs[dactyl_manuform_5x6_2_5]: reformat readme

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

Co-authored-by: Ryan <fauxpark@gmail.com>
2021-04-14 17:51:08 -04:00
Marius Kavoliunas
bcceb701cd [Keyboard] CyberGear Macro25 (#12518)
* add cybergear macro25 keyboard

* add readme and fix file namings

* rename readme.md

* separate default and via keymaps

* add info.json

* unify info.json and key coordinates

* remove via json

* add missing via layers

* Update keyboards/cybergear/macro25/keymaps/via/rules.mk

* Update keyboards/cybergear/macro25/macro25.c

* Update keyboards/cybergear/macro25/macro25.h

* Update keyboards/cybergear/macro25/readme.md

* Update keyboards/cybergear/macro25/readme.md

* Update keyboards/cybergear/macro25/readme.md

* Update keyboards/cybergear/macro25/readme.md

* remove unnecessary config.h parameters

* Update keyboards/cybergear/macro25/config.h

* remove MATRIX_ROWS and COLS from config.h

* Apply suggestions from code review

set to LAYOUT_ortho_2x5 and fix grammar
2021-04-14 13:38:27 -07:00
J.Flanagan
9dea6f7720 [Keyboard] Add Caffeinated Studios Serpent65 (#12578) 2021-04-13 20:08:42 -07:00
James Young
b64dabdffd Correct layout macro name in Cannonkeys Ortho75 info.json (#12581) 2021-04-13 18:31:51 -07:00
Leon Anavi
a2ac6f50aa [Keymap] ANAVI Macro Pad 2 add Google Meet keymap (#12449)
This keymap for ANAVI Macro Pad 2 contains a couple of shortcuts
for Google Meet:

- left key: turn on/off the microphone (mute button)
- right key: turn on/off the camera

Signed-off-by: Leon Anavi <leon@anavi.org>
2021-04-13 11:52:13 +02:00
Kyle McCreery
1a7a821582 Merc updates (#12289) 2021-04-12 20:40:38 +02:00
jackytrabbit
50e0f5dc80 Update layout option for lazydesigners/THE40 (#12312) 2021-04-12 19:55:57 +02:00
Arthur Tabatchnic
0f516d9026 A few small typo fixes in docs (#12524) 2021-04-11 12:50:45 +02:00
swampmonster
b23eeb6a14 Documentation update (#12484)
Update documentation to reflect what the actual target flags are

Co-authored-by: swampmonster <>
2021-04-11 12:49:12 +02:00
Joseph Whom
1298eab6ab Update readme.md (#12502)
Noticed a letter missing in "compiling".
2021-04-11 12:46:43 +02:00
Hawley Waldman
98939868fa Update github instruction link in newbs_getting_started.md (#12510)
Clarify that the link to the github/forking instructions is a link to how to fork this project. Previous wording implied that the link was to a how-to-use github in general page.
2021-04-11 12:45:30 +02:00
github-actions[bot]
7daa2e210c Format code according to conventions (#12540)
Co-authored-by: QMK Bot <hello@qmk.fm>
2021-04-10 17:34:26 +01:00
Michael Stapelberg
7d953332e0 ChibiOS USB driver: prevent deadlock with CONSOLE_ENABLE = yes (#12472)
Before this commit, attaching an ARM-based (i.e. ChibiOS-based) keyboard that
uses CONSOLE_ENABLE = yes and produces debug messages would deadlock the
keyboard unless one was running hid_listen.

With this commit, dead-locking writes to the queue are detected and prevented.

fixes #5631
2021-04-10 16:03:38 +01:00
Álvaro A. Volpato
03685309fd Reverse K0E and K0G (#12491)
Co-authored-by: Gondolindrim <alvaro.augusto.volpato@gmail.com>
2021-04-10 23:23:08 +10:00
Eithan Shavit
e09ca63317 [Keyboard] Add afternoonlabs/oceanbreeze (#12299)
Co-authored-by: Ryan <fauxpark@gmail.com>
Co-authored-by: Eithan Shavit <eithan@fb.com>
2021-04-09 22:57:30 -07:00
Ryo Maeda
3dbb7f261d [Keymap] Remove LAYOUT_kc macros from edvorakjp keymaps (#12217) 2021-04-09 17:37:49 -07:00
littleferris
93e8a401df [Keyboard] ergosaurus - add VIA support, enabled RGB (#12126)
Co-authored-by: Drashna Jaelre <drashna@live.com>
2021-04-09 14:36:18 -07:00
hadi
7f9409bbb3 [Keyboard] Added senselessclay had60 (#12093)
Co-authored-by: Ryan <fauxpark@gmail.com>
2021-04-09 14:31:57 -07:00
kiwikey
633464acfa Add VIA keymap for Kawii9 (#12521)
Co-authored-by: Ryan <fauxpark@gmail.com>
2021-04-09 21:05:14 +02:00
mechlovin
f744e22b49 Add TH1800 PCB, Hex6C PCB, Rogue87 PCB, Rouge87 PCB, Infinity87 series (#11977)
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
Co-authored-by: Erovia <Erovia@users.noreply.github.com>
Co-authored-by: vuhopkep <boy9x0@gmail.com>
2021-04-09 20:48:30 +02:00
peepeetee
1a913aa12e Fix Breaking Change date (#12272) 2021-04-09 12:41:29 +10:00
Adrian
75f83210f4 Add new handwired keyboard (Ergocheap) (#11857)
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
2021-04-08 18:47:24 +02:00
Ryan
2170b75b26 qmk chibios-confmigrate: Make -i and -r required (#12515) 2021-04-08 14:16:15 +10:00
Kosuke Adachi
d1270c9d55 Update info.json to correctly. (#12507) 2021-04-07 09:57:36 -04:00
Ryan
546dfce209 Add info.json for CK60i (#12318) 2021-04-07 20:03:45 +10:00
SneakboxKB
e0614e4f52 Disarray ProductID change (#12440)
Co-authored-by: Joel Challis <git@zvecr.com>
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: mujimanic <64090325+mujimanic@users.noreply.github.com>
Co-authored-by: Zach White <skullydazed@gmail.com>
2021-04-04 11:09:43 +02:00
Takeshi ISHII
49dc332a04 [Keymap] cleanup keyboards/helix/{rev2|rev3_5rows}/keymaps/five_rows (#12259)
* cleanup keyboards/helix/{rev2|rev3_5rows}/keymaps/five_rows

* Made the layout data easier to read.
  * helix/rev2/keymaps/five_rows/keymap.c
  * helix/rev3_5rows/keymaps/five_rows/keymap.c

* The following two were made the same.
  * keymaps/five_rows/config.h
  * keymaps/five_rows/oled_display.c

The binary of the compilation result has not changed.

* update keyboards/helix/rev2/keymaps/five_rows/rules.mk

KEYBOARD_LOCAL_FEATURES_MK was moved to the end.

* add '#define DISABLE_SYNC_TIMER' into helix/rev3_5rows/keymaps/five_rows/config.h

The sync timer features worsen the matrix scan rate of the Helix keyboard. I'm not sure if it makes sense to have sync timer features enabled on the Helix keyboard. So in my keymap I disable this.
2021-04-04 04:42:29 +09:00
Joel Challis
60e1910e5b Add WSL specific logic for avrdude device detection (#12392) 2021-04-03 17:29:06 +01:00
Excitable Snowball
4e2ab3a177 Remove wave from requirements-dev.txt (#12387)
This resolves to <https://pypi.org/project/Wave/>, but the places where
the `wave` module is imported make it clear that the standard library
module <https://docs.python.org/3/library/wave.html> was intended.

Was originally added in #11820 and used in the following files:
* `util/sample_parser.py`
* `util/wavetable_parser.py`
2021-04-03 09:15:39 -07:00
Zach White
41f649c9a9 fix line endings 2021-04-03 08:27:46 -07:00
Steve Purcell
d91938c19d [nix] Use niv and poetry2nix to more easily manage dependencies (#11181)
* [nix] Update nixpkgs to avoid issues with Big Sur

The older nixpkgs snapshot did not contain nix changes to the
compiler/linker hooks that are necessary for compatibility with MacOS
Big Sur. The fix is simply to update to a newer snapshot.

* [nix] Add a poetry manifest and use poetry to build the Python env

* [nix] Use niv to manage upstream sources like nixpkgs

* [nix] Update to newer nixpkgs snapshot

* [nix] Bump python package versions
2021-04-03 08:05:46 -07:00
TurtleHunter
a3cd1290be 3 new LED effect animations (#9827)
Co-authored-by: Joel Challis <git@zvecr.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
Co-authored-by: Erovia <Erovia@users.noreply.github.com>
2021-04-03 16:41:54 +02:00
kb-elmo
7d33d1bace Added Epoch80 (#12307) 2021-04-03 15:51:21 +02:00
github-actions[bot]
4b9f5578a0 [CI] Format code according to conventions (#12468)
Co-authored-by: QMK Bot <hello@qmk.fm>
2021-04-03 20:13:45 +11:00
James Young
59c8672f5c kingly_keys/ave: move RGBLight config to keyboard level (#12457)
QMK Configurator's API can't use the RGBLight configurator when it's defined at keymap level.
2021-04-02 23:20:11 -07:00
Michael Stapelberg
a7920acff5 keymaps: fix kinesis default keymap progrm/reset keycode (#12429)
The right-most top-most key on the Kinesis Advantage keyboard is labeled
“Progrm” and was meant to enter the Teensy bootloader as per the comment.

However, the keycode was set to KC_1, which just produces a “1”.
It should be RESET instead.

This commit fixes KC_1 to RESET in all files where the fix is needed.
The other files have already been fixed independently.
2021-04-02 22:12:24 -07:00
Robert Verst
79a87a9c2b [Keymap] Fixing userspace rverst (#12422)
Co-authored-by: Robert Verst <robert.verst@tobit.com>
2021-04-02 22:06:02 -07:00
Dylan Khor
8d3581a49f [Keymap] Remove kc keymap from khord chocopad keymap (#12409)
Co-authored-by: Ryan <fauxpark@gmail.com>
2021-04-02 21:44:37 -07:00
kaylanm
cd96377312 [Keyboard] Add GON NerD TKL VIA keymap (#12309)
Co-authored-by: Ryan <fauxpark@gmail.com>
2021-04-02 21:20:34 -07:00
MCKeebs
8b98e67643 [Keyboard] Add pkb65 keyboard (#12230)
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
2021-04-02 21:18:15 -07:00
MechMerlin
6876263961 [Keyboard] KBD67 Hotswap VIA Support (#12351)
Co-authored-by: Ryan <fauxpark@gmail.com>
2021-04-02 20:58:42 -07:00
Wilba
4caeb64888 [Keyboard] Added wilba.tech WT70-JB (#12347)
Co-authored-by: Ryan <fauxpark@gmail.com>
2021-04-02 20:57:18 -07:00
Wilba
70540a1f74 [Keyboard] Added RAMA WORKS KARA (#12346)
Co-authored-by: Ryan <fauxpark@gmail.com>
2021-04-02 20:48:26 -07:00
jrdsgl
f0dc206784 [Keyboard] Update sixkeyboard VID/PID (#12345)
Co-authored-by: Ryan <fauxpark@gmail.com>
2021-04-02 20:44:06 -07:00
Jason Yamada-Hanff
caca8949de [Keymap] remove kc layout from levinson jyh keymap (#12301)
Co-authored-by: Jason Yamada-Hanff <jyamada-hanff@chromologic.com>
2021-04-02 19:04:28 -07:00
adamkraus6
0232941b1d [Keyboard] Added VIA support to dmqdesign/spin (#12300)
Co-authored-by: Kraus, Adam <adam.kraus@mines.sdsmt.edu>
2021-04-02 19:02:26 -07:00
Danny
63445be4e5 [Keyboard] Add FoldKB (#12255)
Co-authored-by: Ryan <fauxpark@gmail.com>
2021-04-02 17:51:39 -07:00
Paul James
619885b484 [Keyboard] Add Lumberjack keyboard (#12124) 2021-04-02 17:25:23 -07:00
dsanchezseco
6592f83589 [Keymap] for Ibm m122 (#11704)
Co-authored-by: Ryan <fauxpark@gmail.com>
2021-04-02 14:44:46 -07:00
Duong Anh
43d74d7fa5 [Keyboard] Add CherryB Studio Keyboards (#11475)
Co-authored-by: Joel Challis <git@zvecr.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
Co-authored-by: James Young <18669334+noroadsleft@users.noreply.github.com>
2021-04-02 14:25:44 -07:00
Ryan
cd981ec56a qmk doctor: Fix WSL /mnt check (#12466) 2021-04-02 22:24:09 +01:00
Ryan
12f308748f qmk doctor: Display macOS and Windows versions, and add WSL warning for /mnt (#12441) 2021-04-02 21:44:27 +11:00
peepeetee
ac0ba832c7 change BM68 RGB USB Device descriptor device name (#12418)
* change styling USB Device descriptor device name to reflect stylistic choices of the developer
2021-03-31 18:58:23 -07:00
Nick Brassel
c5ddada32e Remove leftover old implementations of the lily58 split code. (#12442) 2021-04-01 00:09:01 +11:00
github-actions[bot]
8a950a7116 Format code according to conventions (#12437)
Co-authored-by: QMK Bot <hello@qmk.fm>
2021-03-31 10:16:14 +11:00
Nick Brassel
64551a8386 Allow for clang-format up to v20. (#12407) 2021-03-31 09:33:26 +11:00
kb-elmo
ae59a51193 Added the 64_ansi (GK64) layout to DZ60 (#12378)
* add gk64 layout

* Apply suggestions from code review
2021-03-28 20:46:17 -07:00
Zach White
5dc7951dc0 add utf-8 encoding to the open() call (#12388) 2021-03-27 08:55:47 -07:00
James Young
a866fbf381 handwired/rs60: use LAYOUT_ortho_5x12 directly (#12397)
This commit renames the macro LAYOUT to LAYOUT_ortho_5x12, and removes the alias.
2021-03-27 19:03:42 +11:00
joedinkle
8af7200085 Pull Request for babyV keyboard (#12112)
* Add files via upload

* Add files via upload

* Update readme.md

* Update readme.md

* Update readme.md

* Update readme.md

* Update Readme.md

* Update Readme.md

* Update readme.md

* Update readme.md

* Update readme.md

* Update readme.md

* Update readme.md

* Update readme.md

* Update readme.md

* Update readme.md

* Update readme.md

* Update readme.md

* Update readme.md

* Create CaseFiles

* Delete CaseFiles

* Create Readme.md

* Add files via upload

* Add files via upload

* Add files via upload

* Create Readme.md

* Create Readme.md

* Create Readme.md

* Delete S50-Top.dxf

* Delete S50-Top.svg

* Add files via upload

* Update Readme.md

* Update Readme.md

* Update Readme.md

* Update readme.md

* Update readme.md

* Update readme.md

* Update readme.md

* Update readme.md

* Updating encoder code.

* Update encoder code.

* Case files and encoder update.

* Update encoder code.

* Updates to encoder code.

* Syntax fixes.

* Create readme.md

* Add files via upload

* Create readme.md

* Add files via upload

* Removed case files from s50 branch

* Format changes.

* Add case files to Master branch

* Syntax fixes

* Recommended code changes for pull request into QMK.

* Recommended change for pull request.

* Delete config.h

* Delete config.h

* Delete config.h

* Delete config.h

* Delete config.h

* Delete config.h

* Add config.h and rules.mk files to the joedinkle layout for autoshift.

* Delete S50-Top-New.dxf

* Delete S50-Top-New.svg

* New case files

Revision to S50 top file.

* Added 3D printed case STL and DXF files.

* Create readme.md

* Update readme.md

* Added babyV firmware

* Update readme.md

* QMK PR preperations.

* Delete config.h

* Delete keymap.c

* Delete readme.md

* Delete rules.mk

* Delete config.h

* Delete keymap.c

* Delete readme.md

* Changes for QMK formatting.

* Removed excess files

Removed case files and schematics from the joedinkle branch. The joedinkle branch is primarily for QMK PRs. These files will remain in the master branch of this fork.

* Add SPRH keyboard

* Formatting and cleanup.

* Edits to default Layout

* Readme Update

* Formatting changes.

* Deleted obsolete code.

* Formatting changes and file removal for QMK PR

* Deleted S50

S50 is a completed keyboard and is located in the Master Branch. S50 removed from the in progress branch.

* Delete Read Me

* Replaced S50 files accidentally deleted in merge.

* Added split layout for SPRH

* Added Files for Blvd PCB

* Add PCB files for Blvd

* Added compressed kicad projects

* Removed obsolete PCB files

* Added PCB files

* Added personal babyV keymap.

* Update readme.md

* Update readme.md

* Update readme.md

* Update readme.md

* babyV-added info.json and updated default keymap

* Added case files for babyV

* Update readme.md

* Update readme.md

* Update readme.md

* Updated default keymap.

* Cleaned up keymap folder.

* Added info.json for babyV

* babyV updates

* PR preps

* PR preps

* Update .gitignore

* Delete Backlight.png

* Delete MCU.png

* Delete Matrix.png

* Delete readme.md

* Rename Readme.md to readme.md

* Requested PR changes.

* Update rules.mk

* Update rules.mk

* readme and rules.mk updates

* Update keyboards/eyeohdesigns/babyv/readme.md

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

* Update keyboards/eyeohdesigns/babyv/readme.md

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

* Update keyboards/eyeohdesigns/babyv/readme.md

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

* Update keyboards/eyeohdesigns/babyv/rules.mk

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

* Update keyboards/eyeohdesigns/readme.md

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

* Update keyboards/eyeohdesigns/readme.md

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

* Update readme.md

* Update keyboards/eyeohdesigns/babyv/readme.md

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

Co-authored-by: Ryan <fauxpark@gmail.com>
2021-03-26 13:58:13 -04:00
Anthon van der Neut
f028dbf179 Minor typo in comments Colemak DM-MK -> DH-MK (#10721) 2021-03-26 23:37:17 +11:00
Matt Snell
aa2b4a688b [docs] Add IO Warning to WSL section of Getting Started (#12384)
* Add IO Warning to WSL section of Getting Started

* FauxPark suggestion (thanks!)

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

Co-authored-by: Ryan <fauxpark@gmail.com>
2021-03-26 13:21:21 +11:00
Drashna Jaelre
57475caab0 Fix issues when manually shifting characters and Auto Shift (#12083)
Specifically, when using the Auto-Shift feature, if you hold and roll shift, it would not actually shift the character that you hit after the shift
2021-03-25 23:41:19 +11:00
Sendy Aditya Suryana
34205f5bb5 Add new Keyboard: SENDYYeah Bevi (#12011)
* Add bevi Keyboard

* Update readme

* Change image embed

* Update instructions to compile

* beVi initial

* Enable NKRO

* Update README

* Revert Lily58 rules.mk

* Revert h87a info.json

* Add URL and maintainer in info.json

* Update year

* Add layer 1

* Tidying up

* Fix keymap

* Add one line at end of file

* Replicate default keymap to via

* Update keyboards/sendyyeah/bevi/bevi.c

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

* Remove comment on layout macro definition

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

Co-authored-by: Sendy Aditya Suryana <sendy.suryana@go-jek.com>
Co-authored-by: Drashna Jaelre <drashna@live.com>
2021-03-25 23:39:35 +11:00
Takeshi Nishio
9f1608a6a2 Add unison v04 keyboard (#11982)
* Update: JonesのMIDIキーマップをベースに初期作成。AudioとMIDIの同時使用はファームウェアサイズ的に厳しい。

* Update: Unison用のIDへ変更

* Update: Audioはデフォとせず、OLEDをデフォとした。

* Update: v03基板から実際に動くものとなったため、v01からv03に変更。基本的な設定を完了。

* Update: 基本的なキーマップを作成

* Update: キーマップ、ロータリーエンコーダの感度を調整。

* TEST: BOOTMAGIC = lite でどうなるのかテスト

* Update: Jones ---> Unison

* TEST: BOOTMAGIC = lite で、TABキーでBootloaerに入る設定

* Update: インデント

* Update: QMKの一般的な表記に合わせ、 k(col)(row) から k(row)(col) へ変更。

* Update: 自前のカスタムマトリクスを使用せず、COL2ROW方式で総当たりマトリクスを動作させるテストを開始。

特に問題なく動作している。

* TEST: BOOTMAGICテスト用コード追加

* Update: 主に中央部分のキーマップ変更

* TEST: COL2ROWで、COLのピンの順番を変えてキーを読むテスト

* Update: QMKの仕様上、MacではKC_PSCRがFキーとして判定されるため、スクリーンショット用マクロを用意した。

* TEST: COL2ROWで、ROWとCOLのピン定義をずらした状態で、BOOTMAGIC = lite の(0,0)キーに引っかからない。

* Update: ロータリーエンコーダにマウスホイールを割り当て

* Update: 自明のコメントを削除

* Update: NKRO指定時は、NKRO動作を強制。

* Update: MIDIなしのとき、AUDIOのフル機能がファームウェアサイズ内に収まることをチェック。

* Update: Bootmagicテスト完了のため、無効化。

* TEST: LED動作チェック。

* Update: キーマップを、LOWER, RAISEを中心に大幅変更。

数字を左手レイヤーキーではなく、右手レイヤーキーにしたことで、CMD+Qによる誤爆アプリ終了を避ける狙いもある。

* Update: 未使用のNumレイヤとTapDanceを削除。

* Update: MIDI関連の設定を多数追加。

* New: Add Sequencer keymap

* enumの開始を明記

* TAP_DANCEを無効化

* シーケンサーで、トラック単位の有効・無効の切り替えを追加。※動作せず

* デバッグ用設定をテスト

* Change custom keycode name for classification.

* Add LED update on sequencer step.

* change LED adjusting value.

* TEST: SQ_T related things.

* DEBUG

* Increase track 6 ---> 8. Add track indicator.

* Add sequencer step viewer.

* Move Bootmagic lite position to keyboard's config.

* Revert matrix as phisically connected.

* Change default RGB lighting animation.

* Remove MIDI options from keyboard's config.

* change version

* Remove unused.

* Delete unused. Round-Robin matrix woks with COL2ROW.

* Delete unused. Round-Robin matrix woks with COL2ROW.

* Formatting.

* Formatting.

* Remove unused.

* No enum.

* LED setting for Sequencer layer.

* Add TODO flag

* Remove unused.

* change LCTL

* Update Rotary Encoder setting.

* revert to default

* Add TODO flag.

* Update to latest information.

* Update to latest information.

* Add v04

* Move keymaps directory to just under keyboard directory.

* Add music layout.

* Update to Unison layout.

* Add default keymap.

* Update readme description.

* Commenting.

* Exclude non-PR files.

* Change keymap name more general.

* Remove unused

* Commenting.

* Remove unused.

* Commenting.

* Change Macro name for consistency.

* Add tempo definition.

* Change transparent to noop for better musical play.

* Add Rotary Encoder push functions for Sequencer.

* FIX printscreen to work _WIN layer.

* Fix style name.

* Change keymap style from PC to Music.

* Adjust LED number and index to v04 PCB.

* Commenting.

* Add #ifdef block to LED config related.

* Change Sequencer display function from Rotary Encoder right-3 to right-4.

* Change default animations.

* Set LED effect range. Add LED reset on layer change.

* Remove unused.

* Commenting.

* Commenting.

* Use function to change Sequencer track indicator.

* Use function to change Sequencer track indicator.

* Remove unused

* Add PC-style keymap.

* Adjust keymap.

* Add micro volume control for Mac.

* Adjust keymap.

* Adjust cursor block.

* Adjust grave and tild in layer.

* Change magic-key position to Left-Bottom where both Music-style and Terminal-style have a key.

* Change LED settings for front-side 9 LEDs.

* Change keymap name.

* Update supported functions.

* Adjust indicator dimmer.

* Remove unused.

* Add underglow support.

* Add rotary encoder keymap at Adjust layer for test hardware function.

* Disable rotary encoders.

* Change description.

* Add support for underglow.

Disable knight animation to prevent unnatural feeling when underglow not installed.

* Commenting.

* Formatting.

* Turn on default layer indicator.

* remove duplication

* Change VID for via.

* Initial commit for VIA.

* Add layout option.

* restore AUDIO enabled.

* Removed a JSON file for VIA app, not for QMK.

* Remove non-related files for PR.

* Add keymap for music layout.

* Add photo links.

* Commenting.

* Apply PR checklist.

* Change unused function to "no".

* Add keymap image and change keymap as image shows.

* Change bootloader entering key to widely known "Left-Top".

* Turn off ENCODER by default.

* Add VIA keymap.

* Change VID unique.

https://github.com/qmk/qmk_firmware/pull/11982#discussion_r582276979

* Add config option to prepare future release, #11820.

https://github.com/qmk/qmk_firmware/pull/11820

* Remove old defines for Audio.

Co-authored-by: Takeshi Nishio <kkeennnn@gmail.com>
2021-03-25 23:38:31 +11:00
github-actions[bot]
0a056cfd81 Format code according to conventions (#12380)
Co-authored-by: QMK Bot <hello@qmk.fm>
2021-03-25 23:18:59 +11:00
purple-rw
5c1442766c fix permissive hold when both PERMISSIVE_HOLD_PER_KEY and TAPPING_TERM_PER_KEY are defined (#12125)
Co-authored-by: checyr <32964049+checyr@users.noreply.github.com>
2021-03-25 23:13:41 +11:00
즈눅
816f2f9cc2 Fix Kinetic speed condition (#12139) 2021-03-25 23:11:16 +11:00
ploopyco
666623d39a ADNS-5050 / Ploopy Nano / Ploopy Mini Trackballs (#11994)
* added adns5050 sensor code, as well as implementations for the Ploopy Mini and the Ploopy Nano

* fixed spurious scrolling issue

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

* Add grave esc and LTO support

* Move comments to end of line

* Document the use of qmk script for compiling and flashing

* Revert arrow key flags back to mod

* Update keyboards/bm68rgb/bm68rgb.c

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

* Update keyboards/bm68rgb/bm68rgb.c

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

* Remove grave escape

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

* Update tab spacing

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

* Reverted make default

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

* Reverted make flash

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

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

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

* Remove comments

* Add new return in info.json

* Fix pin output init for scroll lock indicator

* Update keyboards/nix_studio/oxalys80/config.h

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

* Update keyboards/nix_studio/oxalys80/rules.mk

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

* Update keyboards/nix_studio/oxalys80/oxalys80.c

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

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

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

* Update keyboards/nix_studio/oxalys80/config.h

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

* Update keyboards/nix_studio/oxalys80/config.h

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

* Update keyboards/nix_studio/oxalys80/config.h

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

* Delete keymaps config.h

* Update keyboards/nix_studio/oxalys80/config.h

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

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

There is no change in the generated binary.

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

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

Signed-off-by: Leon Anavi <leon@anavi.org>
2021-03-25 23:01:45 +11:00
Albert Y
29c82cfb33 Add RGB Matrix suspend wake functions to BM40 (#12246)
* Add suspend wake functions for RGB Matrix

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

* Add suspend wake to Mark 65

* Revert changes to planck and preonic

* Remove changes to The Mark65

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

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

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

* buggy still underglow crash

* Daisy V1

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

* Add USB suspend definition to config.h

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

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

* GodSpeed75: minor updates

* GodSpeed75: minor updates

* GodSpeed75: restore chconf.h

* GodSpeed75: restore chconf.h

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

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

* Create readme.md

* Updated readme.md and rules.mk

* Updated config.h and readme.md

* Update imgur link

* Update keyboards/kopibeng/xt65/rules.mk

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

* Update keyboards/kopibeng/xt65/rules.mk

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

* Update keyboards/kopibeng/xt65/config.h

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

* Update keyboards/kopibeng/xt65/readme.md

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

* Update keyboards/kopibeng/xt65/readme.md

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

* Update keyboards/kopibeng/xt65/rules.mk

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

* Update keyboards/kopibeng/xt65/rules.mk

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

Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
2021-03-25 22:49:37 +11:00
kb-elmo
dd0a35273c added twelvekey (#12281)
* added twelvekey

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

* Update docs/mod_tap.md

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

* Update docs/feature_layers.md

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

* Update docs/mod_tap.md

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

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

* Update docs/mod_tap.md

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

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

* change to work after rebase

* add test for qmk format-json

* add documentation for qmk format-json

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

* fix typo

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

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

* added underglow LEDs and fixed typo in RGB locations

* removed test code

* added my key maps

* updated rgb keymap to work with changes

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

* added GPL licence

* Turned off matrix scan rate debug info

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

* Apply suggestions from code review by fauxpark

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

* Renamed led driver file to be less ambiguous

* Renamed is31fl3733 driver files to is31fl3733-dual

Co-authored-by: Ryan <fauxpark@gmail.com>
2021-03-25 22:35:18 +11:00
Brandon Claveria
8b39ae13c7 add equator (#12369)
Co-authored-by: Swiftrax <swiftrax@gmail.com>
2021-03-25 22:34:29 +11:00
Joel Challis
1bb6d8de6f Fix USER_PRINT on avr/atsam (#12269)
* Fix USER_PRINT on avr/atsam

* Update tmk_core/common/arm_atsam/_print.h

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

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

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

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

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

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

* add the keyboard aliases to the api data

* add support for a keyboard metadata file

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

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

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

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

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

Fix incorrect flashing instructions

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

* changed extra GPIO allocations of Waaffle and Vanana

* Apply suggestions from code review

changed layout name of vaguette Lite / requested by drashna

* Apply suggestions from code review

Requested keymap changes have been made.

* all changes requested by collaborators are made

* RGB config updated / keymap updated

* fixed vaguette lite info.json

* fixed vaguette lite info.json

* fixed vaguette lite info.json

* Apply suggestions from code review

request changes are made

* pre rename h

* vaguettelite reanmed to lowercases

* fixed vanana keymap

* Apply suggestions from code review

* changed Bootmagic key of VaguetteLite as suggested

* Updated via keymap of Vaguette Lite as suggested

* add vaguette lite 6.25 layout

* added vaguette lite noclew keymap

* updated vaguette lite 6.25u keymap description

* updated vanana default keymap

* updated keymap spacing

* reabased from the official repo

* Update keymap.c

fixed vaguette lite keymap

* Apply suggestions from code review

All the requested changes by a collaborator were made.

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

* rename LAYOUT_waaffle to LAYOUT_ortho_5x16

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

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

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

* add controller board build targets

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

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

* use #pragma once include guard in unigo66.h

* unify rules.mk to QMK AVR template

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

* remove unused LAYOUT_all macro

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

* info.json added

* updated info.json for the unused keys

* redoing info.json

* readme for pro

* gmmk initial readme

* pipeline fix, issue with compiling gmmk.h

* gmmk pro code formatting changes

* removed rules.mk

* noci file

* Updates

* updated matrix function to match keymap

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

* fauxpark changes added

* PID VID updates

* removed chconfig and made rules.mk comments cleaner

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

* remove pimentoso/paddino02 as a keyboard target

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

* add image to readme.md

* unify rules.mk files to QMK AVR template

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

Addition of Pizza65

* Update pizza65.h

* Update info.json

* Update mcuconf.h

* Update rules.mk

* Updated makefile

* Update keyboards/pizzakeyboards/pizza65/config.h

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

* Update keyboards/pizzakeyboards/pizza65/config.h

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

* Update keyboards/pizzakeyboards/pizza65/config.h

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

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

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

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

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

* Update keyboards/pizzakeyboards/pizza65/info.json

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

* Update keyboards/pizzakeyboards/pizza65/rules.mk

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

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

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

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

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

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

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

* Update keyboards/pizzakeyboards/pizza65/readme.md

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

* Update keyboards/pizzakeyboards/pizza65/readme.md

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

* Update keyboards/pizzakeyboards/pizza65/info.json

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

* Update keyboards/pizzakeyboards/pizza65/info.json

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

* Update keyboards/pizzakeyboards/pizza65/info.json

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

* Chibios Config migration

* Update keyboards/pizzakeyboards/pizza65/readme.md

Co-authored-by: Jonas Gessner <JonasGessner@users.noreply.github.com>

* Update keyboards/pizzakeyboards/pizza65/readme.md

Co-authored-by: Jonas Gessner <JonasGessner@users.noreply.github.com>

* Update keyboards/pizzakeyboards/pizza65/pizza65.h

Co-authored-by: Jonas Gessner <JonasGessner@users.noreply.github.com>

* Update rules.mk

nk rollover activation

* conf updates

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

Co-authored-by: Davide Riccardo Caliendo <drc0@users.noreply.github.com>

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

Co-authored-by: Davide Riccardo Caliendo <drc0@users.noreply.github.com>

* Update keymap.c

thanks to Acaban

* Update pizza65.h

update to the iso_blocker_doublebs layout macro

* Delete chconf.h

Deleting after the ChibiOS-conf migration.

* Delete config.h

Deleting after the ChibiOS-conf migration.

* Revert "Delete config.h"

This reverts commit 16d64619e6.

* Delete mcuconf.h

Deleting after ChibiOS-conf migration.

* Delete halconf.h

Deleting after ChibiOS-conf migrations.

Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
Co-authored-by: Jonas Gessner <JonasGessner@users.noreply.github.com>
Co-authored-by: Davide Riccardo Caliendo <drc0@users.noreply.github.com>
2021-03-16 10:09:29 +11:00
kb-elmo
cd8497b9fb add support for Noah AVR PCB (#11563)
* add support for Noah AVR PCB

* Update info.json

* Update readme.md

* Update keyboards/kb_elmo/noah_avr/rules.mk

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

* Update keymap.c

* Apply suggestions from code review

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

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

* Fix info.json

* Fix typo

* Fix typo

* cleanup format

* move mcu files to root

* Updated with PR changes

* Apply suggestions from code review

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

* Apply suggestions from code review

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

* PR issues for chibios confmigrate

* PR Changes

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

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

* add info.json file for 2key2crawl

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

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

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

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

* add info.json file for 6ball

* add info.json file for 7c8/framework

* add info.json file for aeboards/constellation

* add info.json file for alpine65

* add info.json file for aplyard/aplx6

* add info.json file for arch_36

* add info.json file for arisu

* add info.json file for box75

* add info.json file for butterstick

* add info.json file for four_banger

* add info.json file for geekboards/tester

* add info.json file for handwired/2x5keypad

* add info.json file for handwired/412_64

* add info.json file for handwired/42

* add info.json file for handwired/aplx2

* add info.json file for handwired/brain

* add info.json file for handwired/cans12er

* add info.json file for handwired/ck4x4

* add info.json file for handwired/d48

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

* add info.json file for handwired/daishi

* add info.json file for handwired/hexon38

* add info.json file for handwired/jot50

* add info.json file for handwired/jotanck

* add info.json file for handwired/jotpad16

* add info.json file for handwired/k8split

* add info.json file for handwired/myskeeb

* add info.json file for handwired/nicekey

* add info.json file for handwired/onekey

* add info.json file for handwired/postageboard

* add info.json file for handwired/riblee_f401

* add info.json file for handwired/riblee_f411

* add info.json file for handwired/rs60

* add info.json file for handwired/splittest

* add info.json file for handwired/trackpoint

* add info.json file for handwired/traveller

* add info.json file for hhkb_lite_2

* add info.json file for honeycomb

* add info.json file for ivy/rev1

* add info.json file for keebio/viterbi

* add info.json file for laptreus

* add info.json file for latin47ble

* add info.json file for latin64ble

* add info.json file for launchpad/rev1

* add info.json file for lets_split_eh/eh

* add info.json file for mechmini/v1

* add info.json file for meira

* add info.json file for meishi

* add info.json file for merge/iso_macro

* add info.json file for mschwingen/modelm

* add info.json file for pabile/p20

* add info.json files for pimentoso/paddino02

rev1, rev2/left, and rev2/right

* add info.json file for rgbkb/pan

* add info.json files for runner3680

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

* add info.json file for sck/gtm

* add info.json file for splitish

* add info.json file for standaside

* add info.json file for ungodly/launch_pad

* add info.json file for xelus/trinityxttkl

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

This reverts commit 280b89bc61.

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

* Update keycodes

* Fix broken keyboards

* added the missing keycodes found in via

* Remove invalid keycodes

Co-authored-by: David Hoelscher <infinityis@users.noreply.github.com>
2021-03-15 12:19:01 +11:00
NightlyBoards
9e1d04fea7 [Keyboard] Added Adellein Keyboard/PCB (#11547) 2021-03-14 14:51:21 -07:00
yhaliaw
b44bffe954 [Keymap] Add yhaliaw keymap for Planck/Rev6.1. (#11318) 2021-03-14 13:19:05 -07:00
Ryan
739925c902 Add info.json for RGBKB Pan (#12218) 2021-03-15 07:17:09 +11:00
Monksoffunk
45e6bb7add Add Cassette42 (#10562)
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
2021-03-15 06:55:59 +11:00
milestogo
7b7689d307 [Keymap] miles2go userspace update, add functions for babblepaste library, add prime_e keybard keymap (#9196)
Co-authored-by: Drashna Jaelre <drashna@live.com>
2021-03-14 12:23:30 -07:00
peepeetee
aa73411c14 Update RGB matrix effects documentation (#12181)
Co-authored-by: Ryan <fauxpark@gmail.com>
2021-03-13 11:37:39 +11:00
yiancar
b96c18c952 Hand 88 (#11963)
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
2021-03-13 09:37:41 +11:00
Dan Thomas
225bff226f fix info.json layout name for boardsource/5x12 (#12145) 2021-03-13 08:57:50 +11:00
Xelus22
5d7ad69cd8 [Bugs] Fix VIA Compiles (#12186) 2021-03-12 13:50:15 -08:00
Albert Y
b8ad5f4249 Document LED physical location index for Planck and Preonic (#12147)
Co-authored-by: filterpaper <filterpaper@localhost>
2021-03-13 08:47:45 +11:00
Albert Y
63f9e7ee86 Enable default features on VIA keymap for Lily58 (#12185)
Co-authored-by: filterpaper <filterpaper@localhost>
2021-03-12 18:43:31 +11:00
Ryan
88dce24375 Remove hex_to_keycode and move tap_random_base64 to send_string.c (#12079) 2021-03-12 18:03:44 +11:00
Nick Brassel
ea2a7c5ea4 ChibiOS conf upgrade for boston (#12170)
boston - 8bded9dabff58de6febd927d4ad976bb743696a3
2021-03-12 17:33:48 +11:00
Alexander Kagno
0ad7833ca4 [Keymap] arkag Userspace updated (#12183)
Co-authored-by: Alex <alex@turncommerce.com>
2021-03-11 10:01:53 -08:00
Joel Challis
790f94533c Refactor to use led config - Part 6 (#12115)
* Convert to config

* Convert to config

* Convert to config

* Convert to config

* Convert to config

* Convert to config

* Convert to config

* Convert to config

* revert changes
2021-03-10 22:48:18 +00:00
somepin
9089244db7 Add VIA support to doodboard/duckboard_r2 (#12028)
* Update R1 keymap and config

* Add duckboard R2

* Add VIA support for duckboard R2

* Set bootmagic lite row and column

* Update config.h

* Update keyboards/doodboard/duckboard/config.h

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

* Update config.h

Co-authored-by: Drashna Jaelre <drashna@live.com>
2021-03-09 21:17:35 -08:00
Ryan
aed8bace97 Fix typo in get_git_version() (#12182) 2021-03-10 08:36:39 +11:00
Danny
4f5e0dd325 Add BFO-9000 info.json (#12179) 2021-03-09 10:36:38 -08:00
Zach White
6d8d20774f improve detection of community layout support 2021-03-09 08:04:07 -08:00
Armando Magalhães
2aa38f5bd3 [Keymap] add crkbd/keymaps/armand1m (#12098) 2021-03-07 15:33:40 -08:00
maz0r
75fd6bd269 [Keyboard] Capsunlocked CU80 - added variant's for RGB matrix support (#12019)
Co-authored-by: Ryan <fauxpark@gmail.com>
2021-03-07 12:20:02 -08:00
Zach White
86e6be342c minor change to trigger api update 2021-03-07 08:14:43 -08:00
Ryan
8556068534 Require BOOTLOADER = qmk-dfu for :bootloader target (#12136) 2021-03-07 17:39:35 +11:00
Zach White
0763269ec5 fix CI job: api-data->api_data 2021-03-06 21:26:07 -08:00
Pierre Chevalier
01b8ef39f5 Remove stale references to "handwired/ferris"
The code was moved to the "ferris" directory.

Fixes the following commands:
```
qmk compile ~/qmk_firmware/keyboards/ferris/keymaps/default/keymap.json
qmk compile ~/qmk_firmware/keyboards/ferris/keymaps/pierrec83/keymap.json
```

Addresses this issue:
https://github.com/pierrechevalier83/ferris/issues/5
2021-03-06 21:22:24 -08:00
Zach White
08e512a273 upload api data to spaces 2021-03-06 21:17:55 -08:00
Zach White
1cbf1c681a Enforce minimum versions for jsonschema and MILC (#12141) 2021-03-06 15:56:45 -08:00
peepeetee
9b85b1b638 [Keyboard] bm68rgb (#12128)
* add support for Bbm68rgb

* pull request changes filled

* pull request changes filled(this time for real)

* added new line to files that did not have new lines at end of file

* updated modifier keys for rgb effects

* Update keyboards/bm68rgb/readme.md

* Apply suggestions from code review

* Apply suggestions from code review

* add nkro suppport

* Update keyboards/bm68rgb/rules.mk

* modified keymap to better correspond to physical layout

* updated comment style
2021-03-06 15:13:20 -08:00
icesoup
788b1854b4 [Keyboard] add Soup10 support (#11921)
Co-authored-by: Joel Challis <git@zvecr.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
2021-03-06 13:03:48 -08:00
Aleblazer
86e28b4db8 Adding Zodiark Split keyboard (#11837)
* Adding Files for Zodiark

* zodiark.h and keymap.c layout corrections

* Apply suggestions from code review

Applied all suggestions from zvecr.

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

* Applied all suggestions from fauxpark

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

* Defined matrix driver

* Update keymap with GPL2

* Added GPL2+ to All keymap.c, cleaned up config.h, and removed the rgbmatrixwip keymap

* Apply suggestions from code review

Removed the two lines from the config.h and changed to the smaller resolution picture on the Readme.

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

* Added VIA keymap

* Corrected VIA Keymap oled.c

Co-authored-by: Joel Challis <git@zvecr.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
Co-authored-by: Drashna Jaelre <drashna@live.com>
2021-03-06 18:56:48 +00:00
Ryan
9c94de070a Remove ifdefs for UC and X/XP too (#12131) 2021-03-06 19:50:01 +11:00
Ryan
23d6ca9942 Remove a few more ifdefs from quantum_keycodes (#12129) 2021-03-06 17:44:48 +11:00
Conor Burns
b16bfac107 added 0xCB/1337 keyboard (#12089)
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Joel Challis <git@zvecr.com>
2021-03-05 23:22:42 +01:00
Takeshi ISHII
09dfc08207 add OLED_DRIVER_ENABLE into show_options.mk (#12121) 2021-03-05 20:26:26 +00:00
bluepylons
07fce7ba13 [Keyboard] add Boston keyboard (#11273)
* Added boston keyboard

* Added Boston keyboard

* Changed some keycodes, added layers, added encoder layer change, added RGB layer indicator

* Cleaned up whitespace

* Update config.h

Cleaned up whitespace

* Cleaned up whitespace

* Added keyboard_post_init_kb code for RGBLEDs so that they start on a defined color

* Modified layout so that split backspace right is at a more intuitive location for configurator

* Cleaned up whitespace, changed some labels

* Modified keymap to accommodate revised layout in boston.h

* Removed "on port C6" from Line 20 (committed suggestion)

* Removed "Encoder Enable" from Line 8 (committed suggestion)

* Removed empty #define DESCRIPTION as suggested

* Implemented lock LED changes as suggested by drashna

* Implemented lock LED changes as suggested by Drashna, changed WS2812 driver byte order

* Updated HSV color  codes to reflect WS2812 byte order change

* Implemented suggestion from noroadsleft

* Implemented suggestion from noroadsleft

* Updated readm.md per suggestions from noroadsleft

* Update keyboards/boston/readme.md per noroadsleft's suggestion

* Removed empty layers from default keymap

* Stripped empty layers and much code from default keymap ; moved to RGB Light Layers keycap
2021-03-05 10:43:09 -08:00
Sendy YK
52d8cbf092 [Keymap] Add 60_ansi_arrow_split_bs_7u_spc layout & keymap (#11329)
* Add 60_ansi_arrow_split_bs_7u_spc layout & keymap

* Update readme.md

* Minor updates

* Update dz60.h

* Update keymap.c

* Update readme.md

* Update keymap.c

* Update readme.md

* Update readme.md

* Update keymap.c

* Update layouts/default/60_ansi_arrow_split_bs_7u_spc/layout.json

* Update keymap.c

* Update readme.md
2021-03-05 10:30:06 -08:00
Dimitris Papavasiliou
73b8f85816 [Keyboard] Lagrange handwired keyboard (#11374)
* [Keyboard] Add the Lagrange keyboard

* Covert the master side to use the SPI driver.
2021-03-05 10:25:20 -08:00
datafx
aadea5ab97 [Keyboard] Monstargear XO87 Solderable support (#11716)
* Support for XO87 solderable version

* cleanup

* Remove abandoned code

* replaced KEYMAP with LAYOUT and moved LAYOUT macro to solderable.h.  deleted unneeded files.

* Update keyboards/monstargear/xo87/solderable/keymaps/via/keymap.c

* update info.json with missing keys

* Apply suggestions from code review

* Apply suggestions from code review

correct layout macro
2021-03-05 10:04:14 -08:00
yiancar
54f7708eaa [Keyboard] NK65 rev 1.4 (#11991)
NK65 Pinout change for rev 1.4.

* Update Pinout for new PCB rev

* Create readme.md

* Update keyboards/nk65/v1_4/rules.mk
2021-03-04 21:15:41 -08:00
imchipwood
d7aa245c33 dumbpad refactor - adding support for various PCB revisions (#9259)
* Placeholder commit - Refactored to support different PCB revisions

Individual revision folders still need:
-  info.json
-  readme.md

all v0x folders support up to two LEDs for layer indication

all v1x folders support up to two LEDs for layer indication
plus one extra LED for numlock indication

v0x - supports single-encoder v0.x PCB revisions

v0x_right - supports reversible, single-encoder v0.x PCB revisions

v0x_dualencoder - supports dual-encoder v0.x PCB revisions

v1x - supports single-encoder v1.x PCB revisiions

v1x_right - supports reversible, single-encoder v1.x PCB revisions

* Added info.json and readme.md files for all dumbpad revisions

* More refactoring, adding shared config.h and rules.mk

Removed config.h from default keymap folders - defining TAPPING_TOGGLE in config.h

* Minor formatting fix

* MATRIX_COL_PINS for v1x_right was not reversed - changed to match v0x_right

* adding support for v1x dual encoder PCB

* adding alt-f2 tapdance routine for personal keymaps

* adding dumbpad build using teensy 2.0 instead of Pro Micro

* matched v1x dumbpad encoder and led pins to latest PCB revisions

* updated readme, removed v1x_teensy until someone requests it

* changed device name to match tmk udev rules, removed unnecessary ifdef

* removed user keymaps and folders

* missed hotdox keymap - removing

* fixing info.json keyboard_names for all versions

* Changed biton32 to get_highest_layer in keyboards/dumbpad/v0x/v0x.c

* keyboards/dumbpad/v0x/v0x.c - remove matrix_scan_kb, process_record_kb

* /dumbpad/v0x/keymaps/default/keymap.c - remove empty functions

* /dumbpad/v0x/keymaps/default/keymap.c - changed biton32 to get_highest_layer

* keyboards/dumbpad/v0x_dualencoder/keymaps/default/keymap.c - remove empty functions

* keyboards/dumbpad/v0x_right/readme.md - smaller board layout image

* keyboards/dumbpad/v1x_dualencoder/readme.md - smaller board image

* keyboards/dumbpad/v1x/readme.md - smaller board image

* keyboards/dumbpad/v1x_right/readme.md - smaller board image

* Update keyboards/dumbpad/rules.mk

* Apply suggestions from code review

Batch applying suggestions from review

* fixed removal of led_set_kb

* Implementing requested changes from old pull request 9259

* removing unused rules

* removed rules.mk from dumbpad base folder

* adding templates for each layout

* testing default keymap json

* Testing applying default keymap for dumbpad

* Layout correction: v1.x are 17 position pcb's

* Update keyboards/dumbpad/v0x/rules.mk

* Update keyboards/dumbpad/v0x/rules.mk

* Update keyboards/dumbpad/v0x_dualencoder/keymaps/default/keymap.c

* Update keyboards/dumbpad/v0x_dualencoder/rules.mk

* Update keyboards/dumbpad/v0x_dualencoder/rules.mk

* Update keyboards/dumbpad/v1x_dualencoder/rules.mk

* Update keyboards/dumbpad/v1x_dualencoder/templates/keymap.c

* Update keyboards/dumbpad/v1x_right/rules.mk

* Update keyboards/dumbpad/v1x_right/rules.mk

* Update keyboards/dumbpad/rules.mk

* Update keyboards/dumbpad/v0x_dualencoder/templates/keymap.c

* Update keyboards/dumbpad/v0x_right/rules.mk

* Update keyboards/dumbpad/v1x/rules.mk

* Update keyboards/dumbpad/v1x/rules.mk

* Update keyboards/dumbpad/v1x_dualencoder/keymaps/default/keymap.c

* Update keyboards/dumbpad/v1x_dualencoder/rules.mk

* Update keyboards/dumbpad/v0x_right/rules.mk

* Removing binary files
2021-03-04 20:25:19 -08:00
Quentin
2cb0b41ce7 update correct layout name (#12096) 2021-03-04 23:03:58 +00:00
Nick Blyumberg
e25f05224f Fixed the ortho60 and ortho48 matrix layout after testing (#12106) 2021-03-04 22:59:20 +00:00
Jos Boersema
7639b5aa3e [Keymap] josjoha keymap for TheVan Keyboards' Minivan (#8066)
Keymap Minivan: configurable dual layout, many symbols, speed/text-size measuring

* Made center led color follow last activated layer color. Some led code clean up

* Reordered the _RAR layer, also putting GUI on the _ACC layer.

* Some issue with _FUN (see keymap.c FIXME), removed _FUN nested 'go to layer' key on _FUN.

* markdown formatting

* Update readme about _FUN top row issue (see keymap.c at XXX)

* Sentence order final bit was wrong by topic. White space fiddles.

* Minor comment editing

* minor comment adjustments

* leds are not modifiers, moved

* _FUN persistance on base layer only (XXX)

* The up/left to go to _LTR layer, now always goes to BASE (_LTR or _DDL).
Led indicators refldect this. No _DRA hold on base layer but _ACC. No
one shot to _FUN layer (seemed to make things confusing), but a TO().

* Some chatter about how to configure this map to your needs.

* language fixing

* Tried to make sense explaining how to access the descramble.

* language fix

* Seems there was a stale CSET_LTR/.*DDL, should be BASE_LTR/.*DDL, fixed.

* language, blabla

* Corrected stale _LTR into BASE

* Some documentation finetuning and trying to make it simple to understand

* language fixing

* language fixing

* Doing the utmost to explain it in a way I understand it too.

* language fixing, going ultra-verbose

* language fixing and formatting

* language fixing

* language fixing, formatting

* attempt to simplify explanations as much as possible

* added License to keymap.c (GPL), noted that _ACC and _DRA need work to
function in 'descramble' mode

* fixes regarding layer order, adding two layers, started on descramble
layers for _ACC and _DRA Unicode

* Noted some coming changes about F-layer and more descramble.

* changed globals to type 'bool'

* Changed F-layer by removing pre-modifier F keys, moved BASE direction
switches, added new incomplete descramble layers

* _FUN layer changes (comment fix)

* Led color fixes. Changed order of layers in the source (no user consequence).

* Added copyright authors (hope that is correct in GPL style/requirements).

* Switched on BASE layers the keys to activate _MOV with leftside _NSY:
more harmoneous, and _MOV can also be held by right hand.

* Follow Quantum indentation style more (mostly).

* On _NSY & _DDN, Tab follows _LTR. '-' moved to LShift, '.' moved, ','
created, shift(tab) removed.

* Added Linux Unicode input mode Accented characters on layers _DDA, _DDD

* added to Todo

* Added ijIJ to _ACC and _DDA layers (2nd last letter of Dutch alphabet).

* add todo point about navigation, fix -> "8th key"

* added 「」《》 to _DRA and _DDA

* Added 〇, ƒƑ. Altered Nav clusters with paging on outside, added thumb Page up/down to _MOV, brought _REV in line with recent _NSY changes (tab,-,enter,dot,comma). Harmonized tab on _Mov with other layer tabs (also a move command, moving cells).

* Added super- and sub-script for numbers on _DRA, _DDD.

* Added quotation marks „ “ ” to layers _DRA and _DDD.

* Added °〇•· to _DRA, _DDA

* § as an enumeration grouped with • (bullet), · as possibly math (middot or multiply) grouped with ±.

* Changed numbers to be on home-rows both hands, because thumb layer key does
not interfere alternating between hands for longer numbers (previous
reason for one-handed numbers). The unshifted symbols went left 2nd row,
because then the shifted versions can be accessed with shift if the
layout is replicated on a Pok3r (which is non-programmable right hand 2nd row.)
The logic has been harmonized with layers _DDN, _DRA & _DDD, _FUN, which
have number(-like) keys. It seems better this way. The symbols are layed
out more spaciously, each finger now does two symbols (2nd row, 4th
row). The numbers are more like they normally are, which feels more
natural, and should even the load between both hands and help with
alternating between hands when typing numbers.

Reason to change was looking into pressing ;, q, j, with ring-, middle-,
index-finger (moved one to the right from default Dvorak), because the
stagger makes it easier to reach that way, less loss of home row contact,
bending fingers more straight up and down. Downside became that left
index type 5 numbers, and that the normal finger matching (0 is pinky,
etc) was lost. With the new layout these potential problems are also resolved.

* Made descramble _DDN, _DDL representation show both raw and resulting layouts.
layouts.

* Added arrows, fleur and heart on _DRA and _DDD.

* Changed _FUN layer switching to incorporate the 'descramble' system
seemlessly. The 4 layer with a descramble twin will switch to either
depending on the descramble mode.

* Descramble mode with normal Unicode layers mostly done, except costum LT() to share the key with Delete/Alt on _DDL.

* Changed descramble mode keys to be just one on a cycle. Added full set
of Alt/Control/Shift multimodifiers to `_FUN` layer.

* Changed descramble mode keys to be just one on a cycle. Added full set
of Alt/Control/Shift multimodifiers to `_FUN` layer.

* format fix

* Descramble cycle key moved from row 1 to row 4 far right, to avoid
accidental press,

* The 'descramble' mode with normal Unicode encoding finished. Fixed
mistaken non-transparent key on _DRA and _DDD, removed tab from _RAR.

* stale layer comment fix _LTR/_DDL

* New layer-tap timed keys proved unreliable, longer tap term fixed it.

* The _FUN layer is a one-shot layer for the F-keys, but that can be toggled by the FUN< key on the _FUN layer (top row, 3rd).
Some additions to the readme.

* Comment improvements (layout tables)

* minor

* Made #defines to allow a user to easily switch to a WASD arrow layout.

* Added keys to switch leds on/off, to _RAR layer. Fixed wrong comment on 'APP' key in _RAR.

* comments fix regarding MLed, SLeds

* Added BASE to same key as _FUN on base layer, except layers with numbers/symbols.
Removed capital ƒ, and moved ± to that key. Added … on old spot of ±.
Some readme language editing, adding something about other keyboards, etc.

* small language fix

* Config.h: Removed unused #defines.
Readme: minor edits.

* minor language edits.

* Minor comment edit.

* Minor language fix.

* Minor language style edit.

* Removed unnecessary section 'personal remarks'

* Changed the top row in _DRA and _DDD. Super-/sub-script parenthesis to that location on _NSY, added currency symbols, reduced emoticons.

* minor formatting

* Added LGUI and RGUI on the _DRA/_DDD layer(s).

* Put RGUI on the base layer, on the _FUN layer switch key. This probably causes side-effects on
systems without where RGUI is not merely a modifier.

* Changed _FUN toggle on BASE to Rshift, because RGUI on some systems has a consequence when tapped by itself.

* Changed LGUI and RGUI around because LGUI is mostly used and on BASE layer. Some edits to last part of readme.md.

* Minor language fixed (L/R-GUI, use-case).

* some more blabla on use case of the map generally

* Changed name KC__[LR]GUI to KC__[XY]GUI for clarity wrt switching them.

* Removed left-arrow on Alt on _ACC and _DRA, for faster use with pointer device.

* Added the same system as is on RShift, to LShift, pointed it to _MOV layer.

* Changed left shift layer toggle to _DRA, because it has uncluttered shift, alt, control, for using those with a pointer device (mouse, stylus).

* Changed base layer left-shift tap from _DRA to _MOV, because _MOV toggled can be convenient generally, and it is a less dangerous layer to accidentally press, and it makes more sense to activate the navigation layer when editing in 3D software.

* The Power keys on _RAR now require Shift to be activated (accident prevention).

* fiddled with title

* more title fiddles

* Added RGUI on _FUN for future proofing the layout, harmonizing layers.

* Added ',' on _REV (number fraction division). Minor fix to documentation format.

* title fiddle

* Added LGUI, RGUI to _RAR, to harmonize with other layers and for potential future uses.

* Changed unnecessary transparent keycode on _AcC and _DDA to be 'nop', minor comment fixes.

* Added on _DRA and _DDD: ─━┄┅.
Fixed a bug in led layer colors (forgotten 'else', causing wrong color for _DDD).

* Some changes to conform to QMK readme.md standards (more necessary).

* Changed _REV into a numbers pad layer called _PAD, put on Lshift in BASE.

_REV layer (not used anyway) replaced with a layer that is basically
a layer where symbols that exist on _NSY (mostly) and on _LTR (few)
are existing in the same locations, but in the number pad variant of
that symbol. The goal is to make it easy to find, it is not meant for
single hand access quickly. The use is to deal with special shortcuts
like Blender has, which differentiate normal and numpad numbers/symbols.
For quick access it was put on the left shift in BASE layer.

* Added navigation arrangements to _PAD. Changed location of shift on _RAR.

The numbers on numpad are easy to find, but when these keys are in their
navigation variant with numlock on it becomes almost impossible. There
was room on the map to add an arrow row, and a row for the remaining
navigation keys, hence they where added. They are in a left handed
order, because there already is a right handed order on _MOV.

It still proved possible to accidentally trigger Power, due to erroneous
hitting 'shift' in BASE and then messing around by accident. With shift
on (BASE) space in _RAR, accidents should be reduced further, since it
is a combination never used.

* Added Tab on _ACC and _PAD

To facilitate Control-Tab (a blender shortcut). On _ACC the Tab is in its
correct place. On _PAD it messy because not on its correct place. Leaving
it there for now: easier to access Tab+Control with left hand only on the
modifiers in _PAD, and other hand on a pointer device. Tab has a potential
use to jump input cells, which may be used in combination with a numpad.

* _MOV layer: switched default layout to trangle navigation layout.

This only required to set the already existing #defines. I found
the flat layout not intuitive, the triangle layout has no left/rigth hand problem.

The higher buttons for the mouse where not correctly ordered, so they where re-ordered.

* Triangle navigation by default. Added pictures of layout to readme.md

* Layer names on images.

* Changed image for layer _DRAW slightly.

The shifted symbol to the lower right.

* Image for _PAD corrected for no-action and Tab.

* Added a paragraph about why this layout is good to use.

* removed 'modifiers' paragraph

* Some text improvements in paragraph on what is good about this layout.

Fiddle on the title as well.

* Added Del on _DRAW layer.

Some minor text fiddles here and there.

* Removed word "descramble" in image layer _RAR.

* Improved key 'sticky' and altered image size (test).

* Rescaled image for layer FUN

* Unicode in its own file. Bug fix: _DDA 'ï' printed a capital.

Upon a suggestion from QMK Discord #programming, the macros and
unicode is put in a separate file, because keymap.c got large.

An erroneous numerical value for ï was fixed.

Author e-mail is updated to a new e-mail adres.

* Added an image to illustrate 'descramble' mode.

* Changed explicit e-mail to link, to reduce spam bot trolling.

* Added a Qwerty+Dvorak compile time version.

It seemed the overall design (accented, Unicode, stuff) could be useful
for Qwerty typers (of which there are so many). This was done by #if(n)def
out/in a fair amount of code here and there, and creating 4 replacement
layers in a new file qwerty_dvorak.c, also with its own readme in
qwerty_dvorak.md. The 'descramble' switch system is re-used here to
switch from Qwerty to Dvorak.

The new code is put in qwerty_dvorak.c, which starts with an extensive
comment about why and how it works.

Fix: Docs, a stale "_MOV" was replaced with "_PAD" in the readme.md for _DDL.

* Changed image hosting.

Downtime, problems registering: resorting to my own domain.

* minor text order changes

* Some text improvements.

* Added a compile option to easily change what layer is active on startup.

This layer can be plain Dvorak or 'descrambled' Dvorak, if
QWERTY_DVORAK is not set. It can be Qwerty or Dvorak if it is set.
Just some simple #define statements.

* Added graphics for Qwerty+Dvorak, and improved documentation.

Added the whole set of layers also to qwerty_dvorak.md, because
it seemed it would get even more confusing to have a user cross
reference it between the two files.

* Some simple text improvements

* Numbers/symbols layer keys on BASE to DRAW when both pressed.

The two keys besides the space bars go to DRAW layer when pressed
simultaneously. (This is inspired on the Planck's 'adjust' layer,
pressing both 'lower' and 'raise' together.) All layers can now
(relatively) comfortably be reached. This change was necessary
because it was cumbersome to reach the DRAW layer with the right
pinky and then type with the right hand. _RAR is now not super
easy, but it is a 'rare' layer anyway.

* Added compile + flash section in readme.

* Corrected documentation: 'mouse on ... hand'

* Removed up/down arrow ⮙⮛ on _DRA and _DDD, because the hex file was too large.

Due to pulling the master repository, changing nothing in this keymap, the
code compiled as 2 bytes too large, where before it had been 2 bytes left free.
Some compile options have been created, to make it easy to cut out up/down
arrow on the 'descramble' _DDD layer, and/or the normal _DRA layer, and/or
dashes ┄┅ on the 'descramble' _DDD layer. The 'normal' layer cut out of arrows
yields little benefit, but it keeps all layers exactly the same between 'descramble'
and normal mode. For Qwerty compilation, you will want to not cut out anything,
requiring to edit the user compile options in keymap.c (top).

* Resolved size issue with QMK #defines, re-instated ⮙⮛, removed RGUI on _FUN.

Various #defines tested to reduce space, NO_ACTION_MACRO NO_ACTION_FUNCTION
worked. Therefore the cutting out of the up/down arrows was no longer
needed. The #defines to easily remove them have been left in place.

RGUI made _FUN confusing with the multi-modifiers, thus taken out. Multi-
modifiers now logically cascade without skipping a key.

* Improved image files with led colors and some tweaks.

* Updated graphics file for Dvorak in QWERTY_DVORAK compile option.

The led colors where not correct because the graphics for standard
Dvorak was being re-used.

* Fixed for re-instating arrow up/down for space.

* Activation marker on _FUN layer in documentation altered.

It looked like it was a symbol.

* Made startup layer explicit in code.

Startup layer follows 'descramble' on/off user #define setting.

* Marker for BASE activation for _PAD, _MOV: fixed.

There was a stale marker in the documentation layouts for _MOV: removed.
The same marker for _PAD was improved.

* Code optimizations suggested on pull request #8066

https://github.com/qmk/qmk_firmware/pull/8066
Some things moved to config.h, rules.mk
Changed layer_on/_off to layer_move(..)
Removed a global variable, changed literal type on a function.

Code is now a lot smaller, hence removed readme.md entry on that.
Removed "not shown" on 'descramble' leds in qwerty readme (mistake).

* Compile option to change ƒ into €.

Since it's a west european keymap, maybe someone likes the euro currency on it.
(It was not on it because I don't like ...)

* default to ƒ on keymap

* Removed print sheet for layout *.odt file.

Changing this to text/markdown seems to reduce the use of this file
to a point that it may be better to delete it. There is also the
graphics now, which might be better to print.

* Updated the seller/maintainer of the board to: The Key Dot Company LLC.

https://thekey.company/blogs/blog-updates/thekey-company-acquires-minivan

* Changed external links to website to plain text.

The markdown link is caught by the github cammo system.

* Last free spot on the map made easy to configure.

One spot was still free (Unicode _DRA/_DDD layer). This puts a #define
on top of unicode_macros.c, to make it easy for a user to put in their
own symbol.

Put placeholder 🛠 in there. That symbol is not represented in the
documentation (maybe it should, it is a nice symbol).

* Removed space saving #defines.

These became obsolete clutter, now that there is enough space thanks to
LINK_TIME_OPTIMIZATION_ENABLE.

* Added tokens to simplify compiling for 45/46 keys.

An attempt to make it easy to switch on a #define between
various hardware configurations (44, 45, 46 keys) failed.
This: #define J1 , KC_A // seems to have failed to be
recognized as a key definition.
error: error: macro "LAYOUT_command" requires 45 arguments, but only 44 given

Left in are some code tokens (J1-J4) and #defines that need
at least bulk replacement in keymap.c and optionally qwerty_dvorak.c,
to compile for such hardware configurations. It would be nice
if this could be done better.

* User can easily compile for 45, 46 hardware keys.

Added some #ifdefs around optional keys in the keymap, to allow
compiling for 45 and 46 keys. Left the earlier made code with the
J1_J2 etc. tokens, which could still be used to port the map to
a board with even more keys. This fixes earlier mentioned problem.

* Arrow cluster for 'arrow' hardware configuration.

This is a user configurations option in the keymap.c, to have
an arrow cluster around the additional key for 'arrow' hardware.
The arrow cluster is however not on the base layer (no room). The
additional key is used to switch to the _MOV layer. There it becomes
a down arrow in the arrow cluster.

To make this work with the default _MOV layer, the right hand
keys on the 2nd row where moved one spot to the left, for the 'triangle'
arrow configuration (mouse right). This is a trivial change.

There was a bunch of language improvements to the documentation,
including graphics.

The symbol 🛠 is now listed.

The program seems to be reliable, as far as used and tested.

* Correction of mark-down formatting.

_MOV layer 'arrow' cluster documentation rendered incorrectly
(attempt to add newline).

* Markdown formatting mistake correction.

Adding a newline at 'Layers (text)' chapter.

* Moving the graphics about 'arrow' to topic.

The graphic explaining what 'arrow' with arrow cluster means,
should be where that is mentioned under compile options.

* Editor token J3_J4 moved to avoid arrow cluster.

If one wants to insert a key by bulk replacing J3_J4, and has
activated the 'arrow' layout arrow cluster, this new key would
be inside the arrow cluster, hence it was moved to the left.

* Æstethics of image 'arrow' layout, arrow cluster.

Shading corrected/nicer.

* Corrected image link in readme.md

Illustration 'arrow' layout, arrow cluster.

* Fix: Toggle to BASE layer leaked. South-paw key.

When toggling to a non-BASE layer, either on the _FUN layer or
using the 'arrow' cluster for 'arrow' layout, on the BASE layer to
toggle to _MOV, the layer changed on the down-stroke, causing a
character to leak. These layer switch macros now alter layer on the
up stroke.

There seems to have been an accidental code deletion: #define MORE_key1.
This defines what the additional hardware key for 'South Paw' ('Command')
should be.

* User compile option comments easier to read.

The phrases "uncomment" and "comment out" are confusing.
Replaced by _activate_ and _remove_.

* Put user compile options back to default Minivan.

Accidentally left the compile options for number of Minivan keys
in the wrong state while git pushing.

* Rewording a comment in the user compile options.

Clearer language.

* Leds indicate Caps/Num-lock.

Leds green/blue switch depending on numlock for numbers-pad layer _PAD.
BASE layer led brightens when capslock is on.

* _PAD had the wrong period, fixed.

_PAD layer had the KC_DOT instead of KC_KP_DOT.

* Options for navigation keys arrow hardware key.

Compile options added to have a complete navigation cluster around
the additional hardware key for 'arrow' layout, both for triangle
left handed arrows and flat right handed arrows.

* Added _FUN layer in text Qwerty.

_FUN text layer was by mistake missing/deleted in the qwerty-dvorak readme.

* Added graphical visualization of all layers.

* Graphics: _RAR 'Capslock', _NSY '~' corrected.

Text representation of layers was correct, graphics corrected.

* Compile Option arrows in a vi(1) editor layout.

Vi(1) is a much loved editor, with its own peculiar arrow layout
on HJKL (as it appears in Qwerty). It seems possible some Qwerty
vi users might find it fun this way for regular arrows as well.

The 'arrow' hardware layout, compiled with arrow cluster, follows
the vi(1) arrow arrangement.

* More layer overview graphics files for the readmes.

Added a '40% x 400%' to the 3D layer overview image (top).
Added overview of all layers in a readable way (Dvorak² only).
Added a guide to show where what is similar on layers. This should help with learning.
Added a graphic showing what key activates what layer.
Added graphics that show what layer subsets are active in certain modes (Dvorak² and Qwerty/Dvorak).

Fixed mistake: _Tab_ missing in layer `_PAD` graphics file.

* 'Tab' inserted in overview graphics for _PAD layer.

* Corrected mistake in similar layer keys.

LGUI on _ACC

* Added overview graphics for Qwerty/Dvorak.

Overview of layers, similar keys on similar layers, activation.

* Compile option to change ⮘ ⮙ ⮚ ⮛ into ☐ ☒ ☑ 🗹

Layer _DRA, _DDD. Checkboxes seem handy for lists. Set default on in
keymap.c. Pointers seem rarely useful. Right arrow sometimes as a bullet
point marker. All affected graphics updated.

* First overview image correction.

Last layer is not 'symbols' due to its numbers.
Some art improvement.

* Minor tekst correction (author Minivan config).

* Short features overview and git lib fix.

* note⁴ as example

* Improvements all over the place.

The keymap is now modular dual layout. There is a common system,
and there can then be two letter/numbers layer pairs be compiled
with it, which are separately defined and documented in ./bases…
files.

Speed measuring and text size counting added.

There is an additional Unicode layer, for a total of three.

The “descramble Dvorak” layer is now just a function, as was
originally intended.

* Wrong link to Dvorak manual, stray ‛r’ character.

* Splitting the layouts so they are not pairs of 4.

The layers had been configurable only as a set of a BASE and letter
layer with another BASE and letter layer: Dvorak + Dvorak² and
Qwerty+Dvorak.

Now Dvorak, Dvorak² and Qwerty can be individually configured, to
be on either the Default or Alternate spots in the dual layout
(Dvorak² only supports Alternate, due to its “_HALF_ descramble” mode).

* Added Colemak layout.

Some tidying up of documentation wrt DEF/ALT base layer identifiers.
Fixed missing ‛:’ on the graphics for Qwerty.

* stale letter

* fix modified submodules

* removed redundant code

testing twice for non-zero

* Speed measuring precision fix.

The calculation of “int speed;” caused great loss of precision.

* Added overview of layers by key.

Makes it easier to see the associations of meanings per key.

* Dvorak descramble by key overview

Forgot to add.

* Minor readme format fiddle.

* Graphics: blank keys are grey, fix one mistake.

* Compilation as a single layout.

Layer definitions _ALT_BASE and _ALT_NSY (enum) are simply #redefined
as preprocessor numbers equal to _DEF_BASE and _DEF_NSY (see user_config.h,
lowest reference to MINIFAN_SINGLE_LAYOUT).

* Single layout compile option

See user_config.h lowest reference to MINIFAN_SINGLE_LAYOUT for the why of the how.

* RShift toggles to _RAR when held ≥ 500 ms.

“Qwerty with arrows on BASE”, will need a key to _RAR layer.
It mirrors the behavior of LShift. It is generally useful.

Removed useless user options regarding LShift layer toggle.
It will have to be _PAD.

* Layer switch graphic update per last push.

Forgot to update the default base layer switching graphic.

* Preconfigured optional ‛Command’ hold key to _RAR layer.

This is a third way to reach the _RAR layer, useful if the furthest
right key on row 1 is changed to an uncluttered BASE layer arrow.
This further prepares the way for a Qwerty layout with arrows on BASE.

* Changed ‛Command’ hardware key to TG(_RAR)

MO(_RAR) doesn't work, because it doesn't follow a change in base
layers, which happens on _RAR.

* Corrected wrong all-layers-by-key upload readme.md

* More graphics = more fun: keycap view in readme.

Preparing to integrate a number pad base layer.
Shortened hold time for right/left Shift layer toggles to 200 ms.

* Too light grey for “1470” on three layout graphics.

* Added a numbers pad Base layout option.

This numbers pad layer is in the format of a numbers pad keyboard/cluster.
It has a second layer, which is normal for all Base layers. In this case,
the second layer provides sub-/super-script versions of the numbers, in the
same layout.

* Keycap view numpad improvements.

* Graphics: forgot to cut off southpaw/arrow on two keycap views.

* Preprocessor identifier for “MIT” Planck spacebar.

Trans-minivan preprocessor statements augmented with an identifier
which might work for a Planck keyboard with two unit spacebar.

At this point, the “trans minivan” code only could make porting
to other keyboards less of a chore. It remains untested. Only
visual inspection of the preprocessing regarding the amount of
keys in the layout has been done.

* Tweak of common layout graphic impression.

This would also allow indication of a number pad.

* Improved dual numpad layer & graphics.

All numbers/symbols seem to get affected by NumLock, hence they
all needed to show that in the graphic documentation. Tab was
removed in favor of Numpad ‛=’, and comma replaced by numpad-comma.

* Committing partial job on numpad Base layers.

Hardware problem here, don't want to loose the data.

* Three issues: header file, numpad Base, Tab key.

This should complete previous unexpected commit.

① Documentation and precedent for a base layer with its own header file,
  base_NAME.h. This allows someone writing a new Base layer pair, to
  (un)set user configuration options in user_config.h.

② Numbers pad Base layer added, different variants.
  The common numbers pad also has a new optional layout (square), and can be
  removed by user configuration option (because one might already compile with
  the Base layer numbers pad)..

③ It turns out there was an easy solution to the Tab key anomaly.
  Uncluttered Tab is now located both on BON and ACC layers, on intuitive
  locations opposing Control, which is also in the right spot. Basic
  modifiers for Tab works well now.

* Graphics for Base numpad single square: correction.

Showed wrong insertion key for 'command' / 'south paw' hardware key.
…

* ‛South paw’ default GUI. Graphics. TOC user config.

Made ‛south paw’ be GUI by default.
Improved graphics appearance.
Ordered options in user_config.h, added table of contents.

* User config cleanup & added a compact alternate.

The normal user configuration, which is heavily documented and
therefore a bit unwieldy, can now optionally be done in another
file, without any documentation.

* Base graphics fix, _ACC/_NSY hold switch option

* Added a Qwerty with arrows on base.

Added a graphic in readme for Dvorak descramble (for documentation predictability).

* Put `~ on the _BON layer.

① There was no uncluttered `~ available. On Qwerty Base Arrow
  the `~ key got even more sidelined.

② Improved Qwerty Base Arrow manual.

* Option to harmonize Qwerty with Qwerty Base Arrow

Key ‛/?’ is different on Qwerty Base Arrow, which will lead
to typing arrows for people who have both kinds of Qwerty
running. This option adds this key in the same spot as where
it is on Qwerty Base Arrow, but only if Qwerty Base Arrow is
being compiled.

* See previous commit (Qwerty harmonization)

* Efficiency fix. +Workman layout.

Workman layout added.

Serious efficiency mistakes discovered and fixed:
① There was no check on Delete on Base layer, to see if another
  key had been pressed. Fixed.
② The Shifts on Base did not provide a Shift for the _BON layer
  accented characters. Fixed.

Fixing was painless, proving the code is stable and maintainable.

* Changed Tab/CTL on _ACC/_DRA, μ, T.O.C. readme.md

μ was forgotten (French), added on _ACC.
This caused Tab to get displaced and stacked with Control, which
ends up being better anyway. This also meant _ACC needed Left-Control,
and therefore _DRA needed to switch Tab and Control, because it needs
to complement _ACC with Right-Control (to be able to type all modifiers
with Tab).

➡ Overview graphics are not yet updated. _DRA and _ACC are now out of sync
  in the graphics documentation. To be fixed soon.

Chapter on language support added in readme.

Table of Contents added to readme.

* Updated all graphics (_BON/_DRA Tab/Control/μ).

Some fiddles with readme.

* Led on/off at startup, RAlt on Base option.

It is hard to believe, but the todo que seems empty!

* Minor changes in readme.

* Minor documentation improvement (RAlt/_RAR).

* Minor changes readme.

Removed “not tested yet …”, because that becomes wrong once it is tested.

* Added a blank keycaps graphic.

* Lower saturation letters Dvorak-descramble keycap.

;-]

* One key change in personal keycap graphic.

;-]

* Forgot _NSY layer in keycap qwerty basearrow

* Moved speed/count startup setting in user_config.h

Moved to chapter startup settings.

(These last commits are more like some loose ends with the last
 ongoing topics. It isn't active development, nothing new gets
 started. If QMK requests more changes, even if it is a typo,
 just let me know.)

* Travis Cl: “The LINK_TIME_OPTIMIZATION_ENABLE flag…

… has been renamed to LTO_ENABLE..  Stop.”

Changed it.

* Adds a link to external resources in readme.

A place to put gimp .xcf files if someone wants to
modify/port the keymap. Perhaps links to varieties
of Minifan on github. Maybe a video about the keymap,
and such. Stuff that doesn't belong/fit on github,
and is easy to update without pull requests.

* RGBLIGHT_ENABLE rules.mk fixed, leds off for nop

rules.mk RGBLIGHT_ENABLE can now be set to “no” without issue.

Compile option to have leds off in Default Base layer.

* Transparency bug fixed.

Default layer was not set. This remained a hidden mistake, until Qwerty
Base Arrow had a different layer hold key in one place.

* Graphics doc correction, L/Rshift toggle config

Qwerty Base Arrow fix: Keycap view showed unneeded and empty ‛South Paw’ key.
                       All layers by key shows 45 Minivan version, title said “44”.

Added user configuration options to alter what is on the short and long
toggle on Left and Right Shift.

* Improved “why this layout” in readme.

Wanted to add that numbers & symbols layer can be reached by both
thumbs. It seems quite a drawback if that is not possible, to
constantly need to hold down the same thumb, especially for programming ?
It seemed worthwhile to mention.

* Reduced size of readme, dvorak-descramble, todo.

Stuff got a bit out of hand.

* one letter typo

* renumbered readme, _fun_stay initialization

Renumbered readme chapters to start from 1 not 0. Other minor edits.
Sticky on/off for _FUN layer seemed to be unpredictable on startup.

* Letter Ñ (capital) fix.

I seem to remember messing with this recently,
must have damaged this letter :-(. Capital was missing.

* Bare bones base numpad all layer by key.

I seemed to have forgotten to hide the common layers for this version.
Which doesn't matter a whole lot but this is a bit better and as it was meant.
2021-03-04 11:07:55 -08:00
drhigsby
4d41645598 Dubba175 (#12077)
* dubba175 initial

* Following checklist

* Update readme.md

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

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

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

Co-authored-by: ridingqwerty <george.g.koenig@gmail.com>

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

Co-authored-by: ridingqwerty <george.g.koenig@gmail.com>

* Update keyboards/dubba175/rules.mk

Co-authored-by: ridingqwerty <george.g.koenig@gmail.com>

* Update config.h

* Update keyboards/dubba175/readme.md

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

* Update keyboards/dubba175/rules.mk

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

* Update keyboards/dubba175/rules.mk

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

Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: ridingqwerty <george.g.koenig@gmail.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
2021-03-04 13:15:16 -05:00
s-show
b1a8fafa62 [Docs] Japanese translation of docs/keycodes.md (#10192)
* copy 'keycodes.md'.

* Translated 'keycodes.md'.

* Fixed typo.

* Fixed typo.

* Apply suggestions from code review

Co-authored-by: shela <shelaf@users.noreply.github.com>
Co-authored-by: Takeshi ISHII <2170248+mtei@users.noreply.github.com>

* update based on comment.

* update based on comment.

* Update docs/ja/keycodes.md

* update based on comment.

Co-authored-by: Takeshi ISHII <2170248+mtei@users.noreply.github.com>

* update based on comment.

Co-authored-by: Takeshi ISHII <2170248+mtei@users.noreply.github.com>

* update based on comment.

Co-authored-by: Takeshi ISHII <2170248+mtei@users.noreply.github.com>

* Update docs/ja/keycodes.md

Co-authored-by: Takeshi ISHII <2170248+mtei@users.noreply.github.com>

* update based on comment.

Co-authored-by: Takeshi ISHII <2170248+mtei@users.noreply.github.com>

Co-authored-by: shela <shelaf@users.noreply.github.com>
Co-authored-by: Takeshi ISHII <2170248+mtei@users.noreply.github.com>
2021-03-05 00:20:01 +09:00
Ryan
6461087c86 qmk generate-rules-mk: add --escape switch for makefile logic (#12101) 2021-03-04 15:09:22 +11:00
studiokestra
7aa74c227b [Keyboard] Add Studio Kestra Nue PCB (#12094) 2021-03-03 17:02:27 -08:00
Drashna Jaelre
0fd95e5db5 Remove ifdefs for Swap Hands keycodes (#12095) 2021-03-03 17:02:00 -08:00
James Young
8f30f4170c cannonkeys/atlas_alps: rename via keymaps rules.mk.txt to rules.mk (#12103)
File doesn't work without the correct filename.
2021-03-03 22:33:14 +00:00
github-actions[bot]
ad4cfffe3d Format code according to conventions (#12102)
Co-authored-by: QMK Bot <hello@qmk.fm>
2021-03-03 13:44:55 -08:00
Signynt
2dcd67ce1a [Keymap] sigma-squared (#11694) 2021-03-03 13:32:22 -08:00
individ-divided
4c3090ace9 Documentation changes SPLIT_USB_DETECT and hid_listen udev rules (#11665)
Co-authored-by: David Grundberg <david@quartz>
2021-03-03 13:31:41 -08:00
Evelien-Lillian Dekkers
fb3777f085 [Keyboard] Add Conone 65 (#11827)
Co-authored-by: Ryan <fauxpark@gmail.com>
2021-03-03 13:14:55 -08:00
labahuy
018b8e1d62 [Keyboard] Add Keyboard Rartlite (#11866) 2021-03-03 12:38:16 -08:00
Skyler Lewis
ba3c346195 Update dichotomy/alairock layout (#12013) 2021-03-03 12:37:06 -08:00
Angel Rojas
e420b3981c [Keyboard] Added VIA folder under the keymaps folder (#12021)
Co-authored-by: Ryan <fauxpark@gmail.com>
2021-03-03 12:28:10 -08:00
grant24
76cd6b662b [Keymap] Add grant24 Planck Rev 6 keymap (#12070)
Co-authored-by: Ryan <fauxpark@gmail.com>
2021-03-03 10:51:39 -08:00
Ddone
0b6ff59448 [Keymap] Add ddone's iris keymap (#12055) 2021-03-02 20:06:40 -08:00
L3af
0752b6b23c [Docs] Small spelling mistake fix in leader keys (#12087) 2021-03-02 18:59:03 -08:00
Dan Carroll
c5b0b6ff32 Remove more cruft from Lily58 default keymap (#12078)
* Remove more cruft from lily58 default keymap

* Update keyboards/lily58/keymaps/default/config.h

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

* Update config.h

Remove extra newline

Co-authored-by: Drashna Jaelre <drashna@live.com>
2021-03-02 14:32:44 +00:00
Drashna Jaelre
ab3986a684 Set default for USB_SUSPEND_WAKEUP_DELAY to 0/disabled (#12081) 2021-03-02 14:31:23 +00:00
Trevor Elliott
d0108869ee [Docs] MATRIX_MASKED docs for SPLIT_HAND_MATRIX_GRID (#11974) 2021-03-01 21:29:11 -08:00
qpockets
58d043b0d0 [Keyboard] Update eggman info.json (#12074)
attempting to fix qmk configurator issues
2021-03-01 20:34:13 -08:00
Mega Mind
d918d571cc Fix the typo in ergodone 80 layout (#12075) 2021-03-02 14:09:35 +11:00
Nick Brassel
75ab48958c Revert "Fixing K-type RGB lighting (#11551)" (#12065)
This reverts commit e6f7da4036.
2021-03-02 12:18:07 +11:00
Dan Carroll
3200007a69 Fixing adjust layer issue with the lily58 default keymap (#12052)
* Fix triggering of adjust layer in default lily58 keymap

* Remove unused extern

* Swap raise/lower in update_tri_layer_state call to match recommendation in PR checklist
2021-03-01 19:56:42 +00:00
Quentin
7132526dd2 Bastardkb added keyboard and renaming (#11887)
Co-authored-by: Drashna Jaelre <drashna@live.com>
2021-03-01 16:03:55 +11:00
Joel Challis
f8266a228c Migrate make_dfu_header to CLI (#12061)
* Migrate make_dfu_header to CLI

* lint fixes

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

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

* Rename object

Co-authored-by: Ryan <fauxpark@gmail.com>
2021-02-28 21:25:09 +00:00
Joel Challis
59c7deab09 Fix generated file output while target exists (#12062) 2021-02-28 20:19:07 +00:00
Ryan
1a7f2c8f45 Extract sendstring into its own compilation unit (#12060)
* Extract sendstring into its own compilation unit

* License headers?

* Put this include in the header
2021-03-01 07:11:39 +11:00
Joel Challis
e6905805bb Remove unused keymap_config from ctrl keymaps (#12058) 2021-02-28 16:15:41 +00:00
Fabián González Martín
90c7ae70c6 Modified tmk_core/rules.mk to avoid linking errors (#10728)
* Modified tmk_core/rules.mk to avoid linking errors

Added -fcommon flag to avoid linking errors due to multiple variable definitions. Though this is neither a definitive nor good solution, proper changes and use of extern  keyword to avoid those multiple definitions must be made

* Comment updated
2021-02-28 08:01:16 -08:00
Anomalocaridid
ef49a9243b Implement PLOOPY_DRAGSCROLL_INVERT option, which inverts the ploopy trackball's DRAG_SCROLL's vertical scroll direction. (#12032) 2021-02-28 17:16:04 +11:00
Albert Y
db7c8562ed Add RGB Matrix support for Preonic rev3 (#12008)
* Add g_led_config for RGB Matrix support

* Corrected indentation

* Undo indentation on existing rev3.c code

Co-authored-by: filterpaper <filterpaper@localhost>
2021-02-28 17:15:38 +11:00
James Young
51eac99ce4 Kiko's Lab KL-90: Configurator bugfix (#11993)
* human-friendly formatting

* correct key order

* correct layout macro name
2021-02-28 17:13:29 +11:00
James Young
c3f83b6761 Keycapsss Kimiko rev1: Configurator bugfix (#11992)
* human-friendly formatting

* fix key positioning and order
2021-02-28 17:12:51 +11:00
unrelentingtech
ce75f48acb [Keyboard] Update spiderisland/split78 (#11990)
* [Keyboard] spiderisland/split78: add MCP23018 reset code

Now, communication with the right side gets re-established
after unplugging it and plugging it back in.

* [Keyboard] spiderisland/split78: configure debouncing

I've been experiencing particularly bad bounce on the 'A' key.

Also, update maintainer github username
2021-02-28 17:11:52 +11:00
jackytrabbit
9fd5c6f619 Update lazydesigners/the40 (#11989)
* Update the40.h

Update the40.h to fix keymap

* Add VIA support for lazydesigners/the40

Add VIA support for lazydesigners/the40

* Update keymap.c
2021-02-28 17:11:06 +11:00
James Young
f41e5ec928 Compilation fixes for handwired/concertina/64key (#11987)
* concatenate config.h to 64key directory

* move rules.mk to 64key directory

This commit makes the firmware actually compile.

* insert complete rules.mk contents

Conforms the file to QMK's template.

* move info.json to 64key directory

* remove concertina.h

This file no longer serves a purpose now that everything is in the 64key directory.

* complete 64key readme.md

Conforms the file more to QMK's template.
2021-02-28 17:10:26 +11:00
gazeddy
cd12fe86d3 New Variants of Console Keyboard (#11973)
* initial push of console keyboard variants

* update readme

* fixed compilation issue

* update Readme

* added 18 and 27 key variants

* missed commas

* update info.json

* added readme

* correct info.json

* correct info.json

* info.json again

* fixed keymap.c
2021-02-28 17:09:41 +11:00
Daniel Shields
d6fb8f12c6 [Keymap] Initial commit for keyboardio/atreus/dshields keymap. (#11946)
Incorporating changes suggested during pull request review.

Co-authored-by: Daniel Shields <dshields@cboe.com>
2021-02-28 17:07:55 +11:00
datafx
371fb853ee Fix incorrect key for LALT and add modifiers to LED matrix (#11984)
Co-authored-by: datafx <digitalfx@phreak.tech>
2021-02-28 17:06:38 +11:00
Xelus22
a0f532072d [Keyboard] Dawn60 Rev1 RGB matrix port (#11970)
* refactor

* layout update

* fix mods config

* lto enable

* add eeprom

* refactor

* final refactor
2021-02-28 17:04:46 +11:00
Aeonstrife
3405efe934 Add Potato65 PCB (#11956)
* Make initial set of files

* Update readme.md
2021-02-28 17:03:49 +11:00
MechMerlin
af2e1f4e4d Banana Split VIA Support (#11944)
* add VIA keymap for bananasplit

* refactor code to new standards
2021-02-28 17:02:34 +11:00
knaruo
4fe8c473fd Added support for barracuda keyboard (#11888)
- Added default and via keymaps
2021-02-28 17:01:56 +11:00
MajorKoos
b2a0e98a60 OddForge VE.A (#11875)
* VEA Support

* Update LEDs to use QMK methods

* Enable Backlight

* Update Vendor ID

* Updates to enable split RGB

* Update readme

* Update to split RGB

* remove unnecessary reference

* Knight animation starts at the back

* remove hardcoded variable

Co-authored-by: Major Koos <MajorKoos@noreply.users.github.com>
2021-02-28 16:57:04 +11:00
Andy Freeland
74372424ae [Keyboard] Add 'LAYOUT_65_ansi_split_bs' support to KBDfans KBD67 rev2 (#11739)
* [Keyboard] Add 'LAYOUT_65_ansi_split_bs' support to KBDfans KBD67 rev2

This is already supported by VIA.

* [Keymap] Fix kbd67 catrielmuller_camilad keymap

* [Keyboard] Add my keymap for KBDfans KBD67 rev2 using 'LAYOUT_65_ansi_split_bs'
2021-02-28 16:50:54 +11:00
Mario Medina
4a7a9e9951 Satisfaction 75 turn off backlight on suspend, restore config on wakeup (#11774)
* Satisfaction 75 turn off backlight on suspend, restore config on wakeup

* Disable SLEEP_LED_ENABLE because it has no effect
2021-02-28 16:50:01 +11:00
NightlyBoards
81fd005af9 Added n60_s folder (#11455)
* Create Alter folder

* Revert "Create Alter folder"

This reverts commit 361103b821.

* Added n60_s folder

* Fixed the url of the image in the readme

* Updated readme

* Updated readme

* Updated readme
2021-02-28 16:43:58 +11:00
precondition
2395069b0b [Docs] New section to modifier docs: Checking Modifier State (#10550)
* Added new section to docs: Checking Modifier State

* Added id anchors to all headers in modifiers docs

* Added a Wikipedia link to bitwise operators and...

crosslinked to the QMK macro docs.

* Added an explanation on the format of mod bitmask

* Added .md extension to hyperlinks to macros docs

* Corrected mod mask order and changed notation

* Documented add_oneshot_mods and del_oneshot_mods

* Mentioned modifier checks in the macro docs

* Explained strict modifier checking

i.e. using `get_mods() & MOD_MASK == MOD_MASK` instead of simply
`get_mods() & MOD_MASK`

* Added (un)register_mods to the docs

* Put left term of comparison in parens
2021-02-28 16:42:17 +11:00
Paweł Kiszteliński
032dfddb6b fix: ryloo studio m0110 layout 60 ansi fixed (#11685) 2021-02-28 16:38:51 +11:00
Andrew-Fahmy
e6f7da4036 Fixing K-type RGB lighting (#11551)
* initial rgb driver fix

* added underglow LEDs and fixed typo in RGB locations

* removed test code

* added my key maps

* updated rgb keymap to work with changes

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

* added GPL licence
2021-02-28 16:38:13 +11:00
haierwangwei2005
7190971b44 17 key Panasonic rotary encoder BLE pad (#11659)
* Create rules.mk

* Create glcdfonr.c

* Create keymap.c

* Create keymap.c

* Create rules.mk

* Add files via upload

* Update readme.md

* Update readme.md

* Update readme.md

* Update config.h

* Update 10bleoledhub.h

* Update 10bleoledhub.c

* Update info.json

* Update keymap.c

* Update keymap.c

* Rename glcdfonr.c to glcdfont.c

* Update config.h

* Update config.h

* Update config.h

* Update rules.mk

* Update 10bleoledhub.c

* Update 10bleoledhub.h

* Update info.json

* Update config.h

* Update rules.mk

* Update keymap.c

* Update keymap.c

* Update glcdfont.c

* Update keyboards/10bleoledhub/rules.mk

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

* Update keyboards/10bleoledhub/keymaps/via/keymap.c

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

* Update keyboards/10bleoledhub/keymaps/default/keymap.c

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

* Update keyboards/10bleoledhub/config.h

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

* Update keyboards/10bleoledhub/config.h

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

* Update keyboards/10bleoledhub/10bleoledhub.h

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

* Create readme.md

* Create rules.mk

* Create latin47ble.h

* Create latin47ble.c

* Create info.json

* Create config.h

* Create keymap.c

* Create rules.mk

* Create keymap.c

* Update keymap.c

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

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

* Update keymap.c

* Update keyboards/latin47ble/keymaps/via/keymap.c

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

* Update keyboards/latin47ble/rules.mk

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

* Update keyboards/latin47ble/rules.mk

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

* Update keyboards/latin47ble/rules.mk

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

* Update latin47ble.h

* Update latin47ble.c

* Update latin47ble.h

* Update latin47ble.c

* Update keymap.c

* Update keymap.c

* Update config.h

* Update keyboards/latin47ble/config.h

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

* Update keyboards/latin47ble/config.h

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

* Update keyboards/latin47ble/config.h

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

* Update keyboards/latin47ble/config.h

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

* Update keyboards/latin47ble/keymaps/via/keymap.c

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

* Update keyboards/latin47ble/rules.mk

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

* Delete info.json

* Update readme.md

* Update keymap.c

* Update keymap.c

* Update keyboards/latin47ble/config.h

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

* Update keyboards/latin47ble/config.h

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

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

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

* Update keyboards/latin47ble/latin47ble.c

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

* Update keyboards/latin47ble/latin47ble.h

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

* Update keyboards/latin47ble/keymaps/via/keymap.c

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

* Update keymap.c

* Update keymap.c

* Update latin47ble.h

* Update keymap.c

* Update keymap.c

* Update keymap.c

* Update keymap.c

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

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

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

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

* Update keyboards/latin47ble/latin47ble.h

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

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

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

* Update keyboards/latin47ble/keymaps/via/keymap.c

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

* Update keyboards/latin47ble/rules.mk

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

* Update config.h

* Create readme.md

* Add files via upload

* Create glcdfont.c

* Create keymap.c

* Create keymap.c

* Create rules.mk

* Update config.h

* Update config.h

* Update config.h

* Update config.h

* Update config.h

* Update latinpadble.c

* Update latinpadble.h

* Update config.h

* Update config.h

* Update keymap.c

* Update config.h

* Update rules.mk

* Update config.h

* Update rules.mk

* Update rules.mk

* Update config.h

* Update keyboards/latinpadble/config.h

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

* Update keyboards/latinpadble/config.h

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

* Update keymap.c

* Update keymap.c

* Update glcdfont.c

Co-authored-by: Ryan <fauxpark@gmail.com>
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: James Young <18669334+noroadsleft@users.noreply.github.com>
2021-02-28 16:36:04 +11:00
ridingqwerty
6b1170cb97 Onekey keymap: quine (#10732) 2021-02-28 16:31:40 +11:00
Steven Nguyen
ec06ffe294 Add keyboard: 7c8/Framework (#11593)
* Add 7c8/framework keyboard

* Update VIA framework.json definition

* Code cleanup and styling to conform to QMK style guide

* Code cleanup and moving some keymap definitions to a 'steven' keymap in order to create a cleaner default keymap for other users

* Update keyboards/7c8/framework/config.h

Remove #define DESCRIPTION

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

* Update keyboards/7c8/framework/config.h

remove #define UNUSED_PINS

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

* Update keyboards/7c8/framework/framework.h

Change layout name to existing layout name.

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

* Update keyboards/7c8/framework/framework.h

Change layout name to existing layout name.

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

* Update keyboards/7c8/framework/framework.h

Change layout name to existing layout name.

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

* Update keyboards/7c8/framework/keymaps/via/keymap.c

change biton32 to get_highest_layer

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

* change vendor ID from 0x07c8 to 0x77c8, which is unused

* delete VIA .json definition from via keymap folder

* Change framework_grid to LAYOUT_ortho_5x12 in default keymap.c

* remove framework.json from 'steven' keymap folder

* cleanup

* Update keyboards/7c8/framework/config.h

0x77c8 -> 0x77C8

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

Co-authored-by: Drashna Jaelre <drashna@live.com>
2021-02-28 16:30:28 +11:00
Josh Johnson
03ea478f20 Hub16 QMK configurator support + various bugfixes (#11496)
* qmk configurator support + various bugfixes

* Update keyboards/hub16/rules.mk

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

Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Nick Brassel <nick@tzarc.org>
2021-02-28 16:03:49 +11:00
Max Audron
e4d3ff2374 Add support for using podman to util/docker_build.sh (#10819)
* add podman support to docker_build.sh script

* break out runtime into the RUNTIME variable
* allows RUNTIME to be set by the user
* decides on docker or podman if docker isn't avaible
* rewrote check for docker-machine to account only for docker runtime
* put --user arg into a variable only to be used with docker
  this is not needed with podman as podman maps the containers root id
  to the users id.

* add podman to getting_started_docker documentation
2021-02-28 15:59:42 +11:00
MRAAGH
bcbcb3d107 Add suggestion for indirect unicode input on Linux (#10854)
* Add suggestion for indirect unicode input on Linux

I have used this approach myself with great success, and it seems to be the only good solution that doesn't involve IBus.

* Elaborate on keyboard layout on Linux

This should be enough to allow people to figure out how to add custom characters to a Linux keyboard layout.
2021-02-28 15:53:40 +11:00
Isaac Elenbaas
765d8a33dd Fixes #4072, #6214. Revision of #156 to clear before AS/TD. (#9941) 2021-02-28 15:48:19 +11:00
Zach White
58e733b5a0 remove keyboard_folder from info.json 2021-02-27 16:17:12 -08:00
Zach White
0828d0f5c7 Fix compile errors (#12048)
* fix compile errors

* fix broken json files
2021-02-27 23:25:41 +00:00
github-actions[bot]
deaabff752 Format code according to conventions (#12046)
Co-authored-by: QMK Bot <hello@qmk.fm>
2021-02-27 22:35:41 +00:00
Nick Brassel
6623744172 Fix build for attiny85-based boards. (#12044) 2021-02-28 09:33:33 +11:00
Nick Brassel
e2d3cefc95 Fix up build failures for melgeek boards after Feb27 develop merge. (#12043) 2021-02-28 09:20:36 +11:00
Nick Brassel
dd61f7795f Fix build for linworks/whale75. (#12042) 2021-02-27 22:07:55 +00:00
James Young
aa038994b2 Force update the version tag 2021-02-27 14:01:16 -08:00
Nick Brassel
1a5f6b54af 2021 February 27 Breaking Changes Update (#12040) 2021-02-28 07:22:21 +11:00
James Young
624359b725 2021 February 27 Breaking Changes Changelog (#11975)
* restore main readme.md

* add ChangeLog entry for 2021-02-27 develop branch - initial version

* update Docs; consolidate sidebar entries to new Breaking Changes History doc

* Changelog update

- concatenate similar changes as one list item
- unify change formatting (remove [bracketed] headings and trailing periods)
- item sorting improvement

* update Changes Requiring User Action section

Detail the changes regarding keyboard relocations/additions/deletions.

* add entry for fauxpark's user keymap cleanup for config.h/rules.mk

* add link to Jacky Studio bugfix PR

* add link for "ChibiOS conf migrations... take 15"

* add links for "Make LAYOUT parsing more robust" and "Massdrop develop rgb fix"

* remove sort sequence numbers

* rename Breaking Changes History page

Renames the Breaking Changes History page to "Past Breaking Changes".

* update schedule in Breaking Changes Overview

* suggestions/changes per tzarc

* skully's changes

* add entry for "Fix develop" (PR 12039)

Co-authored-by: Nick Brassel <nick@tzarc.org>
Co-authored-by: Zach White <skullydazed@gmail.com>
2021-02-27 12:10:23 -08:00
Zach White
1581ea48dc Fix develop (#12039)
Fixes file encoding errors on Windows, and layouts not correctly merging into info.json.

* force utf8 encoding

* correctly merge layouts and layout aliases

* show what aliases point to
2021-02-27 12:00:50 -08:00
QMK Bot
23ed6c4ec0 Merge remote-tracking branch 'origin/master' into develop 2021-02-27 04:25:27 +00:00
YangPiCui
804d5c1c5d [Keyboard] Evk v1.3 add a key (#11880)
Co-authored-by: Ryan <fauxpark@gmail.com>
2021-02-26 20:24:55 -08:00
QMK Bot
2485bbe784 Merge remote-tracking branch 'origin/master' into develop 2021-02-27 01:29:58 +00:00
Danny
6a94e25f6d [Keyboard] Add VIA support to SX60 and update default keymap (#11908) 2021-02-26 17:29:23 -08:00
github-actions[bot]
d99e330548 Format code according to conventions (#12024)
Co-authored-by: QMK Bot <hello@qmk.fm>
2021-02-26 17:47:22 +11:00
Nick Brassel
abe189377c [BUG] Massdrop develop rgb fix (#12022)
* Allow for disabling RGB_MATRIX on Massdrop boards.

* Fixup init sequence.

* Make some functions static as they've got very generic names.
2021-02-26 17:07:05 +11:00
QMK Bot
4dc8a2dd6f Merge remote-tracking branch 'origin/master' into develop 2021-02-25 10:57:31 +00:00
Drashna Jaelre
d4be96e9dd [Keyboard] Fixup issues with Titan65 (#12002)
* [Keyboard] Titan64 - Fix RGB Matrix config

* Fix up keymaps
2021-02-25 10:56:59 +00:00
fauxpark
23fd1aee00 Merge remote-tracking branch 'upstream/master' into develop 2021-02-25 16:04:53 +11:00
Ryan
39694d5eb0 V-USB suspend refactor (#11891) 2021-02-25 15:54:25 +11:00
Zach White
23ef327e11 make LAYOUT parsing more robust 2021-02-24 16:47:38 -08:00
Nick Brassel
ba0b965c42 ChibiOS conf upgrade for daji/seis_cinco (#12001)
daji/seis_cinco - f9ce55c07a61f20308dab7eb5f4f2b7a91686625
2021-02-25 07:23:29 +11:00
QMK Bot
285d0c3d7d Merge remote-tracking branch 'origin/master' into develop 2021-02-24 18:53:45 +00:00
npspears
46f4422a87 [Keyboard] Atlas alps/mx PCB addition (#11884)
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
2021-02-24 10:53:09 -08:00
QMK Bot
bee1b553cd Merge remote-tracking branch 'origin/master' into develop 2021-02-24 18:49:10 +00:00
Rys Sommefeldt
215caad320 [Keyboard] CapsUnlocked CU80 v2 (#11736)
Co-authored-by: Sergey Vlasov <sigprof@gmail.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
Co-authored-by: Rys Sommefeldt <rys@pixeltards.com>
2021-02-24 10:48:35 -08:00
Drashna Jael're
146b042514 Merge remote-tracking branch 'origin/master' into develop 2021-02-23 13:57:26 -08:00
Drashna Jaelre
0b69e4df81 [Keymap] Drashna Updates - Split+OLED edition (#11968) 2021-02-23 10:57:24 -08:00
QMK Bot
2abfa624c9 Merge remote-tracking branch 'origin/master' into develop 2021-02-23 01:55:01 +00:00
Ikta
11146ecd08 pill60 fix info.json to be used in configurator (#11979) 2021-02-23 01:54:29 +00:00
James Young
76e67a97f4 Bugfix for Jacky Studio keyboards (#11981)
PR 10528 was intended to move the source for the Bear 65 and S7 Elephant to the new `jacky_studio` vendor directory. Instead of moving the source files, that PR added the source as if they were newly-supported. The result is that the Bear 65 and both revisions of the S7 Elephant have working, identical firmware in two different directories.

This commit removes the source from the old directories.
2021-02-22 17:04:14 -05:00
QMK Bot
6bbec56d09 Merge remote-tracking branch 'origin/master' into develop 2021-02-22 04:47:01 +00:00
SneakboxKB
c868f93755 [Keyboard] Disarray (#11583)
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
Co-authored-by: mujimanic <64090325+mujimanic@users.noreply.github.com>
2021-02-21 20:46:34 -08:00
QMK Bot
eb7edaf4dc Merge remote-tracking branch 'origin/master' into develop 2021-02-22 04:45:41 +00:00
Alex Paulescu
150ab564a3 [Keyboard] Add Manibus keyboard and layout from Blank Tehnologii (#11832)
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
2021-02-21 20:45:02 -08:00
QMK Bot
eb0fffbd78 Merge remote-tracking branch 'origin/master' into develop 2021-02-22 03:46:41 +00:00
James
37e14fd02b [Keyboard] Tokyo Keyboard alix40 initial commit (#11918)
Co-authored-by: Ryan <fauxpark@gmail.com>
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: QuadCube <quadcube@QuadCube-Mac-mini.local>
2021-02-21 19:46:08 -08:00
QMK Bot
a9fbefcd87 Merge remote-tracking branch 'origin/master' into develop 2021-02-22 03:43:27 +00:00
toraifu
36999494d6 [Keyboard] Add Daji Seis Cinco (#11955)
Co-authored-by: Ryan <fauxpark@gmail.com>
2021-02-21 19:42:55 -08:00
QMK Bot
00d70925df Merge remote-tracking branch 'origin/master' into develop 2021-02-22 03:42:41 +00:00
QMK Bot
998c4c93a2 Merge remote-tracking branch 'origin/master' into develop 2021-02-22 03:42:10 +00:00
Rys Sommefeldt
d1a92aa52a [Keyboard] Graystudio COD67 VIA support (#11961)
Co-authored-by: Drashna Jaelre <drashna@live.com>
2021-02-21 19:42:09 -08:00
Joshua Diamond
5660d80bb0 [Keyboard] reduce confusion for kbdfans/kbd75 rounds/revisions (#11972) 2021-02-21 19:41:31 -08:00
Ryan
316dcf4960 Clean up some user keymaps specifying MCU (#11966) 2021-02-22 00:49:13 +00:00
QMK Bot
c1e6febef7 Merge remote-tracking branch 'origin/master' into develop 2021-02-21 16:19:19 +00:00
Maxime Coirault
e1e66c78bf [Keymap] Add via support to Durgod K320 (#11960)
Co-authored-by: Maxime Coirault <maxime.coirault@zerokeyboard.com>
2021-02-21 08:18:48 -08:00
QMK Bot
329d5583e0 Merge remote-tracking branch 'origin/master' into develop 2021-02-21 16:18:33 +00:00
Ross Montsinger
b69614b98b [Keyboard] Rebound: change vendor and product ID for VIA (#11965) 2021-02-21 08:17:48 -08:00
QMK Bot
29c19b6f40 Merge remote-tracking branch 'origin/master' into develop 2021-02-21 06:19:36 +00:00
Ikta
311bff3d56 [Keyboard] Pill60: fix default keymap shift key, fix info.json to default keymap (#11919) 2021-02-20 22:19:06 -08:00
QMK Bot
14f0f8ce65 Merge remote-tracking branch 'origin/master' into develop 2021-02-21 06:13:32 +00:00
IFo Hancroft
a3934664dd [Keymap] Adding my v60 Type R keymap (#11911) 2021-02-20 22:12:50 -08:00
QMK Bot
3b4b3c827c Merge remote-tracking branch 'origin/master' into develop 2021-02-21 05:52:48 +00:00
IFo Hancroft
46a22c9e70 [Keymap] My Prime_E Keymap (#11899) 2021-02-20 21:52:40 -08:00
QMK Bot
1216e807c0 Merge remote-tracking branch 'origin/master' into develop 2021-02-21 05:52:26 +00:00
IFo Hancroft
bb9316a2f9 [Keymap] My Idobo Keymap (#11897) 2021-02-20 21:52:20 -08:00
IFo Hancroft
516afb0343 [Keymap] My ErgoDash Keymap (#11895) 2021-02-20 21:51:52 -08:00
QMK Bot
8463553d71 Merge remote-tracking branch 'origin/master' into develop 2021-02-21 05:28:20 +00:00
Jonathan Law
8760ff523d [Keymap] Bongo Cat + WPM Counter OLED keymap (#11871) 2021-02-20 21:27:48 -08:00
QMK Bot
72965a7106 Merge remote-tracking branch 'origin/master' into develop 2021-02-21 05:06:12 +00:00
MelGeek
df7d3a1794 [Keyboard] Support MJ64 REV3 - a 60% RGB Hotswap with arrow (#11785)
Co-authored-by: Ryan <fauxpark@gmail.com>
Co-authored-by: James Young <18669334+noroadsleft@users.noreply.github.com>
Co-authored-by: Drashna Jaelre <drashna@live.com>
2021-02-20 21:05:41 -08:00
QMK Bot
f3cf9c5c07 Merge remote-tracking branch 'origin/master' into develop 2021-02-21 05:00:06 +00:00
MelGeek
6e59fe0b4a [Keyboard] Update MJ63 architecture to support multi version (#11788)
Co-authored-by: Ryan <fauxpark@gmail.com>
Co-authored-by: James Young <18669334+noroadsleft@users.noreply.github.com>
Co-authored-by: Drashna Jaelre <drashna@live.com>
2021-02-20 20:59:32 -08:00
QMK Bot
17ef79a067 Merge remote-tracking branch 'origin/master' into develop 2021-02-21 04:49:28 +00:00
James Skeen
03679f0532 [Keyboard] Add DimplePlus 7u Layout (#11816)
Co-authored-by: James Skeen <skeen@macbook.attlocal.net>
2021-02-20 20:49:24 -08:00
Naoto Takai
f6e909600d [Keyboard] Add MIO keyboard (#11852)
Co-authored-by: Ryan <fauxpark@gmail.com>
2021-02-20 20:48:52 -08:00
QMK Bot
076dd3619e Merge remote-tracking branch 'origin/master' into develop 2021-02-21 04:30:51 +00:00
Ethan Madden
fe4f7e6c73 [Keyboard] Added Ketch support (#11656) 2021-02-20 20:30:17 -08:00
QMK Bot
1f7f4ec4cf Merge remote-tracking branch 'origin/master' into develop 2021-02-21 04:10:21 +00:00
LucW
b5e382cbc4 ergodox_ez / dvorak_42_key layout: convert macros to new format (#11139)
Co-authored-by: luc wastiaux <luc.wastiaux@airpost.net>
2021-02-20 20:09:49 -08:00
mkdl
f6de4085a0 added unix60, moved togehter with southpaw75 into fr4 folder (#11195)
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
Co-authored-by: James Young <18669334+noroadsleft@users.noreply.github.com>
2021-02-20 20:06:51 -08:00
QMK Bot
cec56b35b9 Merge remote-tracking branch 'origin/master' into develop 2021-02-20 22:47:14 +00:00
gazeddy
d35d65f2e0 Added ConsoleKeyboard (#11950)
Co-authored-by: Joel Challis <git@zvecr.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
2021-02-21 09:46:43 +11:00
QMK Bot
b423ebff8b Merge remote-tracking branch 'origin/master' into develop 2021-02-20 20:43:55 +00:00
Jonathan Haddock
8efc3b39de Fix minor typo (#11962) 2021-02-20 20:43:24 +00:00
Liyang HU
c4bd6af837 tmk_core/common/action.c: refactor for code size; merge multiple cases into one (#11943)
* tmk_core/common/report.h: define `enum mouse_buttons` in terms of `#define MOUSE_BTN_MASK()`

* tmk_core/common/action.c: collapse multiple `case KC_MS_BTN[1-8]:` into single `MOUSE_BTN_MASK(action.key.code - KC_MS_BTN1)`

We all love tapping on our keyboards but this is taking the piss.

This saves ~134 bytes on my ATmega32.
2021-02-20 14:53:53 -05:00
QMK Bot
2e4f087615 Merge remote-tracking branch 'origin/master' into develop 2021-02-20 19:47:34 +00:00
Leon Anavi
9682fca47b [Keyboard] keyboards/anavi: Add ANAVI Macro Pad 2 (#11821)
ANAVI Macro Pad 2 is an open source mini mechanical keyboard with
2 keys and backlit. Powered by ATtiny 85 microcontroller and with
microUSB connector. Designed with KiCad.

Provides the following keymaps for ANAVI Macro Pad 2:

- Default (with a, b and combo to control the LEDs)
- Copy & paste
- Tap dance example with a, b and c
- Mute
- Volume
- Zoom
- Jitsi Meet

Co-authored-by: Drashna Jaelre <drashna@live.com>
Signed-off-by: Leon Anavi <leon@anavi.org>

Co-authored-by: Drashna Jaelre <drashna@live.com>
2021-02-20 14:47:05 -05:00
QMK Bot
1a97f29f5d Merge remote-tracking branch 'origin/master' into develop 2021-02-20 19:32:47 +00:00
Viktor Eikman
5655d6e5f5 [Keyboard] Concertina (#11922)
* [Keyboard] Concertina

* Added a novel handwired keyboard.

* Concertina lint

* Perfunctory changes to pass CI.

* Concertina line width

* Changes from code review: GPL headers, modernization, full-width
  representation of matrix to match info.json.
2021-02-20 14:32:04 -05:00
QMK Bot
23c6d7ac52 Merge remote-tracking branch 'origin/master' into develop 2021-02-20 19:12:08 +00:00
yynmt
07100d5d4d Add via support to Dozen0 (#11932)
* Change VID and PID

* Add via kyemap

* Update keymap.c

* Update keymap.c

Co-authored-by: yynmt <yynmt@yynmt.com>
2021-02-20 14:11:36 -05:00
QMK Bot
720597d7f8 Merge remote-tracking branch 'origin/master' into develop 2021-02-20 19:09:50 +00:00
melonbred
c588cb4299 Update ortho.h (#11945) 2021-02-20 14:09:16 -05:00
QMK Bot
6b1c3e6283 Merge remote-tracking branch 'origin/master' into develop 2021-02-20 18:35:43 +00:00
stanrc85
9853e35f69 assign each key an LED for reactive modes (#11949) 2021-02-20 13:35:09 -05:00
QMK Bot
a6a93bc38a Merge remote-tracking branch 'origin/master' into develop 2021-02-20 18:29:35 +00:00
Chase Nordengren
a0a67d4f85 adding personal keymaps (#11952)
* adding personal keymaps

* Update keyboards/xd60/keymaps/semicolonsnet/keymap.c

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

* added license

* added license

Co-authored-by: Drashna Jaelre <drashna@live.com>
2021-02-20 13:29:08 -05:00
Ryan
7ab9f6a101 Output selection: Remove "USB and BT" option (#11940) 2021-02-20 18:11:02 +11:00
QMK Bot
4794f6ac4d Merge remote-tracking branch 'origin/master' into develop 2021-02-20 07:10:22 +00:00
James Young
6a8379111c Iron180: layout macro and Configurator rework (#11948) 2021-02-20 18:09:52 +11:00
QMK Bot
9f6ac28d13 Merge remote-tracking branch 'origin/master' into develop 2021-02-20 05:42:13 +00:00
Richard Nunez
73e2bf54f8 Adding new handwired ortho 5x14 keyboard (#11597)
Co-authored-by: Richard Nunez <richard.nunez@macrossplusinc.com>
2021-02-20 16:41:40 +11:00
QMK Bot
fa4449283d Merge remote-tracking branch 'origin/master' into develop 2021-02-19 20:52:46 +00:00
Franco Rosi
1ff18920a2 [Keymap] Adding fraanrosi keymap. (changes applied) (#11862)
* Latam version of Helix/rev2/back

 . Latam adaptation of keymap(whit "ñ")
 . 3 layers (Qwerty, Lower, Raise)
 . Underglow light changes while pressing Lower(BLUE) and  Raise(RED), then it returns to prior mode.

(cherry picked from commit 974be350115b2d33b55edbc02e3b5281e1f856d7)

* Se añade Keymap.

* Agrego un pdf preliminar del mapeo y reubico el keymap a carpeta correspondiente.

* Ajustes en mapeo para simplificar.
Agrego Mark Down con mapeo.
Creo carpeta "layers mapping"  para guardar lo correspondiente a mapeo.

* Update keymap.md

* Rename keymap.md to readme.md

* Organización en general y cambio de configuración de "back" a "under"(que era la que correspondía).
.Ahora los leds underglow responden mejor.

* -Se agrega indicador rgb para el bloq mayús.
-Se agrega manejo del rgb_tog.
-Se agrega botón para reset(del teclado).
-Ajustes de keymap varios.
-Limpieza de código.

* Update readme.md

* Update readme.md

* Update readme.md

* adding helix-keyboard.png

* Update readme.md

* -Se agregan Mouse Keys (para manejo del mouse con el teclado).
-Se hace fix en el modo "Bloq. Mayús" (Se persiste el cambio de RGB mode mientras el Bloq. Mayús está activado).

* Cambios en el Keymap para mayor comodidad del uso del mouse.

* Update readme.md

* Update readme.md

* -Fixeo de comportamiento del "Bloq. Mayús":
  Cuando se presionaba una Layer mientras estaba activado Bloq. Mayús, quedaba el rgb_mode como el de la capa LOWER o RAISE.
-Ajuste en mapeo:
  Cambié las mouse keys y las de teclas de brillo.

* Update readme.md

* Se borra carpeta /rev2_latam, para dejar todo enlatado y andando desde /rev2.
Esto para que el PR solo sea agregar el keymap "fraanrosi".

* Quito cambio de helix.h

Quito lo que ya no es necesario, para hacer el pull request limpio.

* Update Readme.mp

* Revert "Update Readme.mp"

This reverts commit eb9a2712b0.

* Update readme.md

* Clean up, organization, indent fixes

* Update readme.md

* Latam version of Helix/rev2/back

 . Latam adaptation of keymap(whit "ñ")
 . 3 layers (Qwerty, Lower, Raise)
 . Underglow light changes while pressing Lower(BLUE) and  Raise(RED), then it returns to prior mode.

(cherry picked from commit 974be350115b2d33b55edbc02e3b5281e1f856d7)

* Se añade Keymap.

* Agrego un pdf preliminar del mapeo y reubico el keymap a carpeta correspondiente.

* Ajustes en mapeo para simplificar.
Agrego Mark Down con mapeo.
Creo carpeta "layers mapping"  para guardar lo correspondiente a mapeo.

* Update keymap.md

* Rename keymap.md to readme.md

* Organización en general y cambio de configuración de "back" a "under"(que era la que correspondía).
.Ahora los leds underglow responden mejor.

* -Se agrega indicador rgb para el bloq mayús.
-Se agrega manejo del rgb_tog.
-Se agrega botón para reset(del teclado).
-Ajustes de keymap varios.
-Limpieza de código.

* Update readme.md

* Update readme.md

* Update readme.md

* adding helix-keyboard.png

* Update readme.md

* -Se agregan Mouse Keys (para manejo del mouse con el teclado).
-Se hace fix en el modo "Bloq. Mayús" (Se persiste el cambio de RGB mode mientras el Bloq. Mayús está activado).

* Cambios en el Keymap para mayor comodidad del uso del mouse.

* Update readme.md

* Update readme.md

* -Fixeo de comportamiento del "Bloq. Mayús":
  Cuando se presionaba una Layer mientras estaba activado Bloq. Mayús, quedaba el rgb_mode como el de la capa LOWER o RAISE.
-Ajuste en mapeo:
  Cambié las mouse keys y las de teclas de brillo.

* Update readme.md

* Se borra carpeta /rev2_latam, para dejar todo enlatado y andando desde /rev2.
Esto para que el PR solo sea agregar el keymap "fraanrosi".

* Quito cambio de helix.h

Quito lo que ya no es necesario, para hacer el pull request limpio.

* Update Readme.mp

* Revert "Update Readme.mp"

This reverts commit eb9a2712b0.

* Update readme.md

* Update readme.md

* Clean up, organization, indent fixes

* Update readme.md

Latam version of Helix/rev2/back

 . Latam adaptation of keymap(whit "ñ")
 . 3 layers (Qwerty, Lower, Raise)
 . Underglow light changes while pressing Lower(BLUE) and  Raise(RED), then it returns to prior mode.

(cherry picked from commit 974be350115b2d33b55edbc02e3b5281e1f856d7)

Se añade Keymap.

Agrego un pdf preliminar del mapeo y reubico el keymap a carpeta correspondiente.

Ajustes en mapeo para simplificar.
Agrego Mark Down con mapeo.
Creo carpeta "layers mapping"  para guardar lo correspondiente a mapeo.

Update keymap.md

Rename keymap.md to readme.md

Organización en general y cambio de configuración de "back" a "under"(que era la que correspondía).
.Ahora los leds underglow responden mejor.

-Se agrega indicador rgb para el bloq mayús.
-Se agrega manejo del rgb_tog.
-Se agrega botón para reset(del teclado).
-Ajustes de keymap varios.
-Limpieza de código.

Update readme.md

Update readme.md

Update readme.md

adding helix-keyboard.png

Update readme.md

-Se agregan Mouse Keys (para manejo del mouse con el teclado).
-Se hace fix en el modo "Bloq. Mayús" (Se persiste el cambio de RGB mode mientras el Bloq. Mayús está activado).

Cambios en el Keymap para mayor comodidad del uso del mouse.

Update readme.md

Update readme.md

-Fixeo de comportamiento del "Bloq. Mayús":
  Cuando se presionaba una Layer mientras estaba activado Bloq. Mayús, quedaba el rgb_mode como el de la capa LOWER o RAISE.
-Ajuste en mapeo:
  Cambié las mouse keys y las de teclas de brillo.

Update readme.md

Se borra carpeta /rev2_latam, para dejar todo enlatado y andando desde /rev2.
Esto para que el PR solo sea agregar el keymap "fraanrosi".

Quito cambio de helix.h

Quito lo que ya no es necesario, para hacer el pull request limpio.

Update Readme.mp

Revert "Update Readme.mp"

This reverts commit eb9a2712b0.

Update readme.md

Clean up, organization, indent fixes

Update readme.md

* Changes and corrections were made to Pull Request.

* Since the last change, readme.md and comment in keymap.c were to be updated.
2021-02-19 15:52:08 -05:00
QMK Bot
8c317c49bb Merge remote-tracking branch 'origin/master' into develop 2021-02-19 20:27:50 +00:00
4pplet
fd6f7b56cd enable rgb underglow for VIA-firmware (#11746) 2021-02-19 15:27:16 -05:00
QMK Bot
161cea77ba Merge remote-tracking branch 'origin/master' into develop 2021-02-19 06:12:38 +00:00
James Young
fdff75342b [Keyboard] Xealous Brown handwired Refactor (#11929) 2021-02-18 22:12:05 -08:00
QMK Bot
7713f8f820 Merge remote-tracking branch 'origin/master' into develop 2021-02-19 05:41:36 +00:00
Albert Y
63f8620d95 [Keyboard] Add swap-hands array for CRKBD (Corne) (#11915)
Co-authored-by: filterpaper <filterpaper@localhost>
2021-02-18 21:40:44 -08:00
QMK Bot
6136cd3cd9 Merge remote-tracking branch 'origin/master' into develop 2021-02-19 03:38:34 +00:00
CMMS-Freather
bb11e726b8 [Keyboard] change to saka68 solder firmware config. add sam's s80 firmware (#11834)
Co-authored-by: Ryan <fauxpark@gmail.com>
Co-authored-by: Joel Challis <git@zvecr.com>
Co-authored-by: Joshua Diamond <josh@windowoffire.com>
2021-02-18 19:38:02 -08:00
QMK Bot
7852f4f7ec Merge remote-tracking branch 'origin/master' into develop 2021-02-19 03:20:28 +00:00
Kosuke Adachi
e3f0157f6e [Keyboard] Add new keyboard Cornelius (#11719)
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Joel Challis <git@zvecr.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
2021-02-18 19:19:53 -08:00
QMK Bot
64e162af25 Merge remote-tracking branch 'origin/master' into develop 2021-02-19 03:16:10 +00:00
Nuno Costa
307c97445b [Keyboard] Quadrant by Ealdin (#11747)
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Joel Challis <git@zvecr.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
2021-02-18 19:15:38 -08:00
QMK Bot
84ee7e4fa8 Merge remote-tracking branch 'origin/master' into develop 2021-02-18 23:44:10 +00:00
Drashna Jaelre
cd8c71a0eb [Keyboard] Phase Studio's Titan 65 (#11920) 2021-02-18 23:43:34 +00:00
QMK Bot
3716b2938c Merge remote-tracking branch 'origin/master' into develop 2021-02-18 23:33:35 +00:00
James Young
8c1cdceb8b Beegboy handwired by swiftrax: correct info.json object order (#11924)
* human-friendly formatting

* correct key object order
2021-02-18 23:33:02 +00:00
QMK Bot
9407392b14 Merge remote-tracking branch 'origin/master' into develop 2021-02-18 20:32:29 +00:00
qpockets
890f3a57b6 add eggman keyboard (#11701)
* add eggman keyboard

* Update info.json

* Update eggman.h

correct copyright info

* Update eggman.c

correct copyright info

* Update config.h

correct copyright info

* Update keymap.c

correct copyright info

* Update keyboards/eggman/readme.md

reduce image size

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

* Update keyboards/eggman/keymaps/default/config.h

correct copyright

Co-authored-by: Joshua Diamond <josh@windowoffire.com>

Co-authored-by: Ryan <fauxpark@gmail.com>
Co-authored-by: Joshua Diamond <josh@windowoffire.com>
2021-02-18 15:31:58 -05:00
QMK Bot
8b6a9e2ae9 Merge remote-tracking branch 'origin/master' into develop 2021-02-18 20:31:38 +00:00
MechMerlin
9e05810cfe Budget96 VIA (#11737)
* add budget96 via keymap and adjust vid and pids

* update dates

* Update keyboards/donutcables/budget96/keymaps/default/keymap.c

Co-authored-by: Joshua Diamond <josh@windowoffire.com>

Co-authored-by: Joshua Diamond <josh@windowoffire.com>
2021-02-18 15:31:09 -05:00
Dominic Gan
f4f5ddfec2 Add UTD80 PCB (#11799)
* Create readme.md

* Add files via upload

* Create readme.md

* Add files via upload

* Update utd80.h

* Update utd80.c

* Update keymap.c

Change 6 length underscore to 7.

* Update keyboards/utd80/readme.md

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

* Update keyboards/utd80/readme.md

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

* Update keyboards/utd80/readme.md

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

* Update keyboards/utd80/readme.md

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

* Update keyboards/utd80/readme.md

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

* Update utd80.c

* Update utd80.c

* Update keymap.c

* Apply #7701 PR review suggestions

* Add GPL license headers

* Replace led implementation with definition

* Add VIA keymap for UTD80

* Update attributions

Co-authored-by: UTDKeyboard <59077857+utdkeyboard@users.noreply.github.com>
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: fauxpark <fauxpark@gmail.com>
2021-02-18 15:30:16 -05:00
QMK Bot
381429c039 Merge remote-tracking branch 'origin/master' into develop 2021-02-17 22:43:50 +00:00
Sid Carter
50c4afa841 Personal keymap for kbd67 and some cleanup (#11937)
Co-authored-by: Khader Syed <khader.syed@aicure.com>
2021-02-18 09:43:14 +11:00
QMK Bot
f89708c942 Merge remote-tracking branch 'origin/master' into develop 2021-02-17 22:25:55 +00:00
Donald Kjer
1d44715d9d Fixing typos in durgod/k320 readme (#11931) 2021-02-18 09:25:03 +11:00
github-actions[bot]
a5f63dbf93 Format code according to conventions (#11936)
Co-authored-by: QMK Bot <hello@qmk.fm>
2021-02-17 17:30:16 +11:00
QMK Bot
fad659650b Merge remote-tracking branch 'origin/master' into develop 2021-02-17 06:29:48 +00:00
shela
fe7240628a fix build error (#11939) 2021-02-17 17:29:15 +11:00
Ryan
be70f466fe Fix compilation error for tap_code_delay() (#11938) 2021-02-17 17:26:57 +11:00
QMK Bot
5688655971 Merge remote-tracking branch 'origin/master' into develop 2021-02-16 23:14:03 +00:00
Konstantin Shpits
bf3ee94b9a [Keyboard] Add VIA support for YMD 75 (#11811)
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
2021-02-16 15:13:30 -08:00
QMK Bot
842a8b35dd Merge remote-tracking branch 'origin/master' into develop 2021-02-16 23:10:57 +00:00
Alabahuy
e43ead8e96 [Keyboard] Add Rartand keyboard and support via (#11828) 2021-02-16 15:10:26 -08:00
Ryan
3345ce2686 Add tap_code_delay(code, delay) (#11913)
Co-authored-by: Drashna Jaelre <drashna@live.com>
2021-02-17 07:26:52 +11:00
QMK Bot
cdb9d55956 Merge remote-tracking branch 'origin/master' into develop 2021-02-16 19:27:59 +00:00
Rozakiin
2d55f34413 [Keyboard] Add Noxary 268.2 RGB (#11772)
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
Co-authored-by: Ruari <ruari.armstrong@gmail.com>
2021-02-16 11:27:20 -08:00
QMK Bot
899f8b0cde Merge remote-tracking branch 'origin/master' into develop 2021-02-16 18:11:23 +00:00
andresteare
d754266a6d [Keyboard] Added two handwired keyboards (#11696)
Co-authored-by: Ryan <fauxpark@gmail.com>
2021-02-16 10:10:49 -08:00
QMK Bot
d565586e46 Merge remote-tracking branch 'origin/master' into develop 2021-02-16 18:10:43 +00:00
Max Bridgland
ac33dc12da [Keyboard] Add VIA keymap to duckyPad, update M4cs keymap for duckyPad (#11703)
Co-authored-by: M4cs <mabridgland@protonmail.com>
2021-02-16 10:10:07 -08:00
QMK Bot
65326f7d1f Merge remote-tracking branch 'origin/master' into develop 2021-02-16 17:46:35 +00:00
mrT1ddl3s
9a2b0a5db1 [Keyboard] Knob Goblin add via support (#11831)
Co-authored-by: Ryan <fauxpark@gmail.com>
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Joel Challis <git@zvecr.com>
2021-02-16 09:46:02 -08:00
QMK Bot
e545cc0b47 Merge remote-tracking branch 'origin/master' into develop 2021-02-16 17:45:34 +00:00
Stefan Schulze
4a10dfb54d Fix submodule check for qmk setup (#11379)
The initialization of the submodules would succeed, but the result of the subsequent
check_submodules() run wasn't checked correctly.

Co-authored-by: Stefan Schulze <stefan.andre.schulze@posteo.de>
2021-02-16 09:45:05 -08:00
Ryan
53b96f685d RGBLight: Allow configurable default settings (#11912)
* RGBLight: Allow configurable default settings

* Docs
2021-02-16 10:51:28 -05:00
QMK Bot
02b5bb9b17 Merge remote-tracking branch 'origin/master' into develop 2021-02-16 15:50:59 +00:00
Daniil Kivenko
95304f269b [Keymap] Adding HHKB Keymap for dz60rgb_wkl:v2 (#11840)
* adding new hhkb layout

* adding license header

* fix end of lines symbol

Co-authored-by: Daniil Kivenko <d.kivenko@evrone.com>
Co-authored-by: Daniil macbet Kivenko <macbet@wisebits.com>
2021-02-16 10:50:15 -05:00
QMK Bot
b492d8499c Merge remote-tracking branch 'origin/master' into develop 2021-02-16 15:46:05 +00:00
Matt Gilbert
43e314b64e Add mattir2 keymap for Kyria (#11752)
* added files to support my 2nd kyria

* fixed missing line

* swapped thumb keys

* Update keyboards/kyria/keymaps/mattir2/keymap.c

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

Co-authored-by: Drashna Jaelre <drashna@live.com>
2021-02-16 10:45:28 -05:00
QMK Bot
0f41011ec9 Merge remote-tracking branch 'origin/master' into develop 2021-02-16 02:53:36 +00:00
xgnxs
3559284839 Update IGNORE_MOD_TAP_INTERRUPT (#11452)
Current wording of IGNORE_MOD_TAP_INTERRUPT is incorrect, and very confusing when attempting to correct a somewhat common issue for quick typists that have Mod-Tap on a commonly used key.  Research indicates this wording has been incorrect for some time, and has tripped up others attempting to solve the issue of Mod + Key being sent, when Tap + Key is expected after quickly pressing keys.
2021-02-15 21:52:57 -05:00
Joshua Diamond
d36dbe66e1 Merge branch 'master' into develop 2021-02-15 20:55:54 -05:00
yiancar
3fed8bced7 Dc01 fixes (#11843)
* dc01-fixes

* dc01-fixes

* Cleanup and add VIA

* Updated JSONs

* fix
2021-02-15 20:36:58 -05:00
github-actions[bot]
b0e161e33d Format code according to conventions (#11928)
Co-authored-by: QMK Bot <hello@qmk.fm>
2021-02-16 11:33:03 +11:00
XScorpion2
d1806a26e4 Split transport mirror (#11046)
* Split transport mirror support

* Updated RGB Matrix to respond to electrical events instead of key events

* split matrix slave fix
2021-02-16 11:30:33 +11:00
Nick Brassel
1bc8a6e5d4 ChibiOS conf migrations... take 14 (#11927)
* ChibiOS conf upgrade for geminate60

 geminate60 - a2765e46491151a8de309bc1cc8ce7e953ee1e50

* ChibiOS conf upgrade for sowbug/68keys

 sowbug/68keys - 7475a03ff2d704497d503a002b6c5dbac12f0a84

* ChibiOS conf upgrade for sowbug/ansi_tkl

 sowbug/ansi_tkl - 87be98eb6ed03a8752c1082c872a8a75b1d00ae7
2021-02-16 11:28:42 +11:00
James Young
fa740f8129 AMJ40 Refactor (#11854)
* update keyboard source files

- add license headers (attributed to original keyboard submitter)
- #pragma once include guards
- file template matching
- readme update and template matching

* set sensible default keyboard settings

- enable Bootmagic Lite and Mouse Keys
- disable Console and Command
- remove default keymap's rules.mk file

* remove unnecessary files from default keymap

* refactor default keymap

* add additional layouts/keymaps

* update keyboard readme

- add images and bootloader instructions
- reformat link list

* convert tabs to spaces in default keymap
2021-02-14 23:21:45 -08:00
QMK Bot
26ee9360bf Merge remote-tracking branch 'origin/master' into develop 2021-02-15 04:09:53 +00:00
Drashna Jaelre
e768fb83bd [Keyboard] PloopyCo VIA updates (#11290)
Co-authored-by: ridingqwerty <george.g.koenig@gmail.com>
Co-authored-by: Glen D'souza <gdsouza@linuxmail.org>
2021-02-14 20:09:24 -08:00
Joshua Diamond
0b63fb5e81 Merge branch 'master' into develop 2021-02-14 20:26:22 -05:00
Joshua Diamond
328a8322f4 Merge branch 'develop' of github.com:qmk/qmk_firmware into develop 2021-02-14 20:00:20 -05:00
Joshua Diamond
f1a3ce49cc Merge branch 'master' into develop 2021-02-14 19:59:26 -05:00
Ryan
9ee1282019 LED Matrix: rename LED_DRIVER_LED_COUNT to DRIVER_LED_TOTAL (#11858) 2021-02-15 11:55:13 +11:00
github-actions[bot]
8e8b7113dc Format code according to conventions (#11907)
Co-authored-by: QMK Bot <hello@qmk.fm>
2021-02-15 11:53:15 +11:00
Drashna Jaelre
c80e5f9f88 Audio system overhaul (#11820)
* Redo Arm DAC implementation for additive, wavetable synthesis, sample playback

changes by Jack Humbert on an implementation for DAC audio on arm/chibios platforms
this commits bundles the changes from the arm-dac-work branch focused on audio/audio_arm.* into one commit (leaving out the test-keyboard)

f52faeb5d (origin/arm-dac-work) add sample and wavetable examples, parsers for both
  -> only the changes on audio_arm_.*, the keyboard related parts are split off to a separate commit
bfe468ef1 start morphing wavetable
474d100b5 refined a bit
208bee10f play_notes working
3e6478b0b start in-place documentation of dac settings
3e1826a33 fixed blip (rounding error), other waves, added key selection (left/right)
73853d651 5 voices at 44.1khz
dfb401b95 limit voices to working number
9632b3379 configuration for the ez
6241f3f3b notes working in a new way

* Redo Arm DAC implementation for additive, wavetable synthesis, sample playback

changes by Jack Humbert on an implementation for DAC audio on arm/chibios platforms

this commit splits off the plank example keymap from commit
    f52faeb5d (origin/arm-dac-work) add sample and wavetable examples, parsers for both

* refactoring: rename audio_ to reflect their supported hardware-platform and audio-generation method: avr vs arm, and pwm vs dac

* refactoring: deducplicate ISR code to update the pwm duty-cycle and period in the avr-pwm-implementation

pulls three copies of the same code into one function
which should improve readability and maintainability :-)

* refactoring: move common code of arm and avr implementation into a separate/new file

* refactoring: audio_avr_pwm, renaming defines to decouple them from actually used timers, registers and ISRs

* refactoring: audio_avr_pwm - replacing function defines with plain register defines

aligns better with other existing qmk code (and the new audio_arm_pwm) doing similar pwm thing

* add audio-arm-pwm

since not all STM32 have a DAC onboard (STM32F2xx and STM32F3xx), pwm-audio is an alternative (STM32F1xx)
this code works on a "BluePill" clone, with an STM32F103C8B

* clang-format changes on quantum/audio/* only

* audio_arm_dac: stopping the notes caused screeching when using the DAC audio paths

* audio_arm_pwm: use pushpull on the pin; so that a piezzo can be hooked up direclty without additional components (opendrain would require an external pullup)

* refactoring: remove unused file from/for atmel-avr chips

* refactoring: remove unused (avr) wavetable file

* audio_arm_dac: adapt dac_end callback to changed chibios DAC api

the previous chibios (17.6.0) passed along a pointer into the buffer plus a sample_count (which are/already where included in the DACDrivre object) - the current chibios (19.1.0) only passes the driver object.
this patch ports more or less exactly what the previous chibios ISR code did: either have the user-callback work the first or second half of the buffer (dacsample_t pointer, with half the DAC_BUFFER_SIZE samples) by adjusting the pointer and sample count

* audio-arm-dac: show a compile-warning on undefined audio-pins

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

* audio_arm_dac: switch from exemplary wavetable generation to sine only

sine+triangle+squrare is exemplary, and not realy fit for "production" use
'stairs' are usefull for debugging (hardware, with an oscilloscope)

* audio_arm_dac: enable output buffers in the STM32

to drive external loads without any additional ciruitry - external opamps and such

* audio: prevent out-of-bounds array access

* audio_arm_dac: add output-frequency correcting factor

* audio_arm_pwm: get both the alternate-function and pm-callback variants back into working condition

and do some code-cleanup, refine documentation, ...

* audio_arm_pwm: increase pwm frequency for "higher fidelity"

on the previous .frequency=100000 higher frequency musical notes came out wrong
(frequency measured on a Tektronix TDS2014B)
note | freq | arm-pwm
C2 | 65.4 | 65.491
C5 | 523.25 | 523.93
C6 | 1046.5 | 1053.38
C7 | 2093 | 2129
C8 | 4186 | 4350.91

with .frequency = 500000
C8 | 4186 | 4204.6

* audio refactoring: remove unused variables

* audio_arm_dac: calibrate note tempo: with a tempo of 60beats-per-second a whole-note should last for exactly one second

* audio: allow feature selection in rules.mk

so the user can switch the audio driver between DAC and PWM on STM32 boards which support both (STM32F2 and up)
or select the "pin alternate" pwm mode, for example on STM32F103

* audio-refactoring: move codeblocks in audio.[ch] into more coherent groups

and add some inline documentation

* audio-refactoring: cleanup and streamline common code between audio_arm_[dac|pwm]

untangeling the relation between audio.c and the two drivers
and adding more documenting comments :-)

* audio_avr_pwm: getting it back into working condition, and cleanup+refactor

* audio-refactoring: documentation and typo fixes

Co-Authored-By: Nick Brassel <nick@tzarc.org>

* audio-refactoring: cleanup defines, inludes and remove debug-prints

* audio_chibios_dac: define&use a minimal sampling rate, based on the available tone-range

to ease up on the cpu-load, while still rendering the higher notes/tones sufficiently
also reenable the lower tones, since with the new implementation there is no evidence of them still beeing 'bugged'

* audio-refactoring: one common AUDIO_MAX_VOICES define for all audio-drivers

* audio-chibios-pwm: pwm-pin-allternate: make the the timer, timer-channel and alternate function user-#definable

* audio_chibios_dac: math.h has fmod for this

* Redo Arm DAC implementation for additive, wavetable synthesis, sample playback

update Jack Humberts dac-example keymaps for the slight changes in the audio-dac interface

* audio-refactoring: use a common AUDIO_PIN configuration switch instead of defines

have the user select a pin by configuration in rules.mk instead of a define in config.h
has the advantage of beeing in a common form/pattern across all audio-driver implementations

* audio-refactoring: switch backlight_avr.c to the new AUDIO_PIN defines

* audio-common: have advance_note return a boolean if the note changed, to the next one in the melody beeing played

* audio-chibios-pwm: fix issue with ~130ms silence between note/frequency changes while playing a SONG

through trial,error and a scope/logic analyzer figured out Chibios-PWMDriver (at least in the current version) misbehaves if the initial period is set to zero (or one; two seems to work); when thats the case subsequent calls to 'pwmChhangePeriod' + pwmEnableChannel took ~135ms of silence, before the PWM continued with the new frequency...

* audio-refactoring: get 'play_note' working again

with a limited number of available voices (say AUDIO_VOICES_MAX=1) allow new frequencies to be played, by discarding the oldest one in the 'frequencies' queue

* audio: set the fallback driver to DAC for chibios and PWM for all others (==avr at the moment)

* audio-refactoring: moore documentation

and some cleanup

* audio-avr-pwm: no fallback on unset AUDIO_PIN

this seems to be the expected behaviour by some keyboards (looking at ckeys/handwire_101:default) which otherwise fail to build because the firmware-image ends up beeing too large for the atmega... so we fail silently instead to keep travis happy

* audio-refactoring: untangling terminology: voice->tone

the code actually was working on tones (combination of pitch/frequency, duration, timbre, intensity/volume) and not voices (characteristic sound of an instrument; think piano vs guitar, which can be played together, each having its own "track" = voice on a music sheet)

* audio-pwm: allow freq=0 aka a pause/rest in a SONG

continue processing, but do not enable pwm units, since freq=0 wouldn't produce any sound anyway (and lead to division by zero on that occasion)

* audio-refactoring: audio_advance_note -> audio_advance_state

since it does not only affect 'one note', but the internally kept state as a whole

* audio-refactoring: untangling terminology: polyphony

the feature om the "inherited" avr code has little to do with polyphony (see wikipedia), but is more a time-multiplexing feature, to work around hardware limitations - like only having one pwm channel, that could on its own only reproduce one voice/instrument at a time

* audio-chibios-dac: add zero-crossing feature

have tones only change/stop when the waveform approaches zero - to avoid audible clicks
note that this also requires the samples to start at zero, since the internally kept index into the samples is reset to zero too

* audio-refactoring: feature: time-multiplexing of tones on a single output channel

this feature was in the original avr-pwm implementation misnomed as "polyphony"
with polyphony_rate and so on; did the same thing though: time-multiplexing multiple active notes so that a single output channel could reproduce more than one note at a time (which is not the same as a polyphony - see wikipedia :-) )

* audio-avr-pwm: get music-mode working (again) on AVRs

with both pwm channels, or either one of the two :-)
play_notes worked already - but music_mode uses play_note

* audio-refactoring: split define MAX_SIMULTANEOUS_TONES -> TONE_STACKSIZE

since the two cases are independant from one another, the hardware might impose limitations on the number of simultaneously reproducable tones, but the audio state should be able to track an unrelated number of notes recently started by play_note

* audio-arm-dac: per define selectable sample-luts

plus generation script in ./util

* audio-refactoring: heh, avr has a MIN...

* audio-refactoring: add basic dac audio-driver based on the current/master implementation

whereas current=d96380e65496912e0f68e6531565f4b45efd1623
which is the state of things before this whole audio-refactoring branch

boiled down to interface with the refactored audio system = removing all
redundant state-managing and frequency calculation

* audio-refactoring: rename audio-drivers to driver_$PLATFORM_$DRIVER

* audio-arm-pwm: split the software/hardware implementations into separate files

which saves us partially from a 'define hell', with the tradeoff that now two somewhat similar chibios_pwm implementations have to be maintained

* audio-refactoring: update documentation

* audio-arm-dac: apply AUDIO_PIN defines to driver_chibios_dac_basic

* audio-arm-dac: dac_additive: stop the hardware when the last sample completed

the audio system calls for a driver_stop, which is delayed until the current sample conversion finishes

* audio-refactoring: make function-namespace consistent

- all (public) audio functions start with audio_
- also refactoring play*_notes/tones to play*_melody, to visually distance it a bit from play*_tone/_note

* audio-refactoring: consistent define namespace: DAC_ -> AUDIO_DAC_

* audio-arm-dac: update (inline) documentation regarding MAX for sample values

* audio-chibios-dac: remove zero-crossing feature

didn't quite work as intended anyway, and stopping the hardware on close-to-zero seems to be enought anyway

* audio-arm-dac: dac_basic: respect the configured sample-rate

* audio-arm-pwm: have 'note_timbre' influence the pwm-duty cycle

like it already does in the avr implementation

* audio-refactoring: get VIBRATO working (again)

with all drivers (verified with chibios_[dac|pwm])

* audio-arm-dac: zero-crossing feature (Mk II)

wait for the generated waveform to approach 'zero' before either turning off the output+timer or switching to the current set of active_tones

* audio-refactoring: re-add note-resting -> introduce short_rest inbetween

- introduce a short pause/rest between two notes of the same frequency, to separate them audibly
- also updating the refactoring comments

* audio-refactoring: cleanup refactoring remnants

remove the former avr-isr code block - since all its features are now refactored into the different parts of the current system

also updates the TODOS

* audio-refactoring: reserve negative numbers as unitialized frequencies

to allow the valid tone/frequency f=0Hz == rest/pause

* audio-refactoring: FIX: first note of melody was missing

the first note was missing because 'goto_next_note'=false overrode a state_change=true of the initial play_tone
and some code-indentations/cleanup of related parts

* audio-arm-dac: fix hardware init-click

due to wron .init= value

* audio-refactoring: new conveniance function: audio_play_click

which can be used to further refactor/remove fauxclicky (avr only) and/or the 'clicky' features

* audio-refactoring: clang-format on quantum/audio/*

* audio-avr-pwm: consecutive notes of the same frequency get a pause inserted inbetween by audio.c

* audio-refactoring: use milliseconds instead of seconds for 'click' parameters

clicks are supposed to be short, seconds make little sense

* audio-refactoring: use timer ticks instead of counters

local counters were used in the original (avr)ISR to advance an index into the lookup tables (for vibrato), and something similar was used for the tone-multiplexing feature
decoupling these from the (possibly irregular) calls to advance_state made sesne, since those counters/lookups need to be in relation to a wall-time anyway

* audio-refactoring: voices.c: drop 'envelope_index' counter in favour of timer ticks

* audio-refactoring: move vibrato and timbre related parts from audio.c to voices.c

also drops the now (globally) unused AUDIO_VIBRATO/AUDIO_ENABLE_VIBRATO defines

* audio.c: use system-ticks instead of counters the drivers have to take care of for the internal state posision

since there already is a system-tick with ms resolution, keeping count separatly with each driver implementation makes little sense; especially since they had to take special care to call audio_advance_state with the correct step/end parameters for the audio state to advance regularly and with the correct pace

* audio.c: stop notes after new ones have been started

avoids brief states of with no notes playing that would otherwise stop the hardware and might lead to clicks

* audio.c: bugfix: actually play a pause

instead of just idling/stopping which lead the pwm drivers to stop entirely...

* audio-arm-pwm: pwm-software: add inverted output

new define AUDIO_PIN_ALT_AS_NEGATIVE will generate an inverted signal on the alternate pin, which boosts the volume if a piezo is connected to both AUDIO_PIN and AUDIO_PIN_ALT

* audio-arm-dac: basic: handle piezo configured&wired to both audio pins

* audio-refactoring: docs: update for AUDIO_PIN_ALT_AS_NEGATIVE and piezo wiring

* audio.c: bugfix: use timer_elapsed32 instad of keeping timestamps

avoids running into issues when the uint32 of the timer overflows

* audio-refactoring: add 'pragma once' and remove deprecated NOTE_REST

* audio_arm_dac: basic: add missing bracket

* audio.c: fix delta calculation

was in the wrong place, needs to use the 'last_timestamp' before it was reset

* audio-refactoring: buildfix: wrong legacy macro for set_timbre

* audio.c: 16bit timerstamps suffice

* audio-refactoring: separate includes for AVR and chibios

* audio-refactoring: timbre: use uint8 instead of float

* audio-refactoring: duration: use uint16 for internal per-tone/note state

* audio-refactoring: tonemultiplexing: use uint16 instead of float

* audio-arm-dac: additive: set second pin output-low

used when a piezo is connected to AUDIO_PIN and AUDIO_PIN_ALT, with PIN_ALT_AS_NEGATIVE

* audio-refactoring: move AUDIO_PIN selection from rules.mk to config.h

to be consistent with how other features are handled in QMK

* audio-refactoring: buildfix: wrong legacy macro for set_tempo

* audio-arm-dac: additive: set second pin output-low -- FIXUP

* audio.c: do duration<>ms conversion in uint instead of float

on AVR, to save a couple of bytes in the firmware size

* audio-refactoring: cleanup eeprom defines/usage

for ARM, avr is handled automagically through the avr libc and common_features.mk

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

* audio.h: throw an error if OFF is larger than MAX

* audio-arm-dac: basic: actually stop the dac-conversion on a audio_driver_stop

to put the output pin in a known state == AUDIO_DAC_OFF_VALUE, instead of just leaving them where the last conversion was... with AUDIO_PIN_ALT_AS_NEGATIVE this meant one output was left HIGH while the other was left LOW

one CAVEAT: due to this change the opposing squarewave when using both A4 and A5 with AUDIO_PIN_ALT_AS_NEGATIVE
show extra pulses at the beginning/end on one of the outputs, the two waveforms are in sync otherwise.
the extra pusles probably matter little, since this is no high-fidelity sound generation :P

* audio-arm-dac: additive: move zero-crossing code out of dac_value_generate

which is/should be user-overridable == simple, and doing one thing: providing sample values
state-transitions necessary for the zero crossing are better handled in the surrounding loop in the dac_end callback

* audio-arm-dac: dac-additive: zero-crossing: ramping up or down

after a start trigger ramp up: generate values until zero=OFF_VALUE is reached, then continue normally
same in reverse for strop trigger: output values until zero is reached/crossed, then keep OFF_VALUE on the output

* audio-arm-dac: dac-additive: BUGFIX: return OFF_VALUE when a pause is playing

fixes a bug during SONG playback, which suddenly stopped when it encoutnered a pause

* audio-arm-dac: set a sensible default for AUDIO_DAC_VALUE_OFF

1/2 MAX was probably exemplary, can't think of  a setup where that would make sense :-P

* audio-arm-dac: update synth_sample/_wavetable for new pin-defines

* audio-arm-dac:  default for AUDIO_DAC_VALUE_OFF

turned out that zero or max are bad default choices:
when multiple tones are played (>>5) and released at the same time (!), due to the complex waveform never reaching 'zero' the output can take quite a while to reach zero, and hence the zero-crossing code only "releases" the output waaay to late

* audio-arm-dac: additive: use DAC for negative pin

instead of PAL, which only allows the pin to be configured as output; LOW or HIGH

* audio-arm-dac: more compile-time configuration checks

* audio-refactoring: typo fixed

* audio-refactoring: clang-format on quantum/audio/*

* audio-avr-pwm: add defines for B-pin as primary/only speaker

also updates documentation.

* audio-refactoring: update documentation with proton-c config.h example

* audio-refactoring: move glissando (TODO) to voices.c

refactored/saved from the original glissando implementation in then upstream-master:audio_avr.c

still needs some work though, as it is now the calculation *should* work, but the start-frequency needs to be tracked somewhere/somehow; not only during a SONG playback but also with user input?

* audio-refactoring: cleanup: one round of aspell -c

* audio-avr-pwm: back to AUDIO_PIN

since config_common.h expands them to plain integers, the AUDIO_PIN define can directly be compared to e.g. B5
so there is no need to deal with separate defines like AUDIO_PIN_B5

* audio-refactoring: add technical documentation audio_driver.md

which moves some in-code documentation there

* audio-arm-dac: move AUDIO_PIN checks into c-code

instead of doing everything with the preprocessor, since A4/A5 do not expand to simple integers, preprocessor int-comparison is not possible. but necessary to get a consistent configuration scheme going throughout the audio-code... solution: let c-code handle the different AUDIO_PIN configurations instead (and leave code/size optimizations to the compiler)

* audio-arm-dac: compile-fix: set AUDIO_PIN if unset

workaround to get the build going again, and be backwarts compatible to arm-keyboards which not yet set the AUDIO_PIN define. until the define is enforced through an '#error"

* audio-refactoring: document tone-multiplexing feature

* audio-refactoring: Apply suggestions from documentation review

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

* audio-refactoring: Update docs/audio_driver.md

* audio-refactoring: docs: fix markdown newlines

Terminating a line in Markdown with <space>-<space>-<linebreak> creates an HTML single-line break (<br>).

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

* audio-arm-dac: additive: fix AUDIO_PIN_ALT handling

* audio-arm-pwm: align define naming with other drivers

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

* audio-refactoring: set detault tempo to 120

and add documentation for the override

* audio-refactoring: update backlight define checks to new AUDIO_PIN names

* audio-refactoring: reworking PWM related defines

to be more consistent with other QMK code

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

* audio-arm: have the state-update-timer user configurable

defaulting to GPTD6 or GPTD8 for stm32f2+ (=proton-c)
stm32f1 might need to set this to GPTD4, since 6 and 8 are not available

* audio-refactoring: PLAY_NOTE_ARRAY was already removed in master

* Add prototype for startup

* Update chibiOS dac basic to disable pins on stop

* Add defaults for Proton C

* avoid hanging audio if note is completely missed

* Don't redefine pins if they're already defined

* Define A4 and A5 for CTPC support

* Add license headers to keymap files

* Remove figlet? comments

* Add DAC config to audio driver docs

* Apply suggestions from code review

Co-authored-by: Jack Humbert <jack.humb@gmail.com>

* Add license header to py files

* correct license header

* Add JohSchneider's name to modified files

AKA credit where credit's due

* Set executable permission and change interpeter

* Add 'wave' to pip requirements

* Improve documentation

* Add some settings I missed

* Strip AUDIO_DRIVER to parse the name correctly

* fix depreciated

* Update util/audio_generate_dac_lut.py

Co-authored-by: Jack Humbert <jack.humb@gmail.com>

* Fix type in clueboard config

* Apply suggestions from tzarc

Co-authored-by: Nick Brassel <nick@tzarc.org>

Co-authored-by: Johannes <you@example.com>
Co-authored-by: JohSchneider <JohSchneider@googlemail.com>
Co-authored-by: Nick Brassel <nick@tzarc.org>
Co-authored-by: James Young <18669334+noroadsleft@users.noreply.github.com>
Co-authored-by: Joel Challis <git@zvecr.com>
Co-authored-by: Joshua Diamond <josh@windowoffire.com>
Co-authored-by: Jack Humbert <jack.humb@gmail.com>
2021-02-15 09:40:38 +11:00
Nick Brassel
f53e41ac81 Add support for analog USBPD on STM32G4xx. (#11824)
* Add support for analog USBPD on STM32G4xx.

* Split up to a list of driver types, allow for custom.
2021-02-15 08:56:13 +11:00
Atsushi NAGASE
6f44c2ec31 [Keymap] Add MOC keymap for meishi2 (#11833) 2021-02-14 13:19:48 -08:00
github-actions[bot]
c27a778281 Format code according to conventions (#11905)
Co-authored-by: QMK Bot <hello@qmk.fm>
2021-02-15 06:55:43 +11:00
Joel Challis
4ddb5abea5 [CI] Format develop (#11893) 2021-02-15 06:51:07 +11:00
Galib, Muhammad
3134698ad2 initial add S20 keyboard into polycarbdiet folder (#11865) 2021-02-14 17:48:54 +00:00
csc027
5a37c1bd5c csc027/windows-terminal-shortcuts (#11867)
* Fixed some comments in the defines file.

* Replaced the Git command layer with a Windows Terminal shortcut layer.

* Added numbered tab switching to the Windows Terminal layer.

* Added 'new tab' and 'command pane' commands to the Windows Terminal layer.

* Shortened the USB polling interval for the Iris to 1 millisecond.

* Disabled old style macros and functions for the Iris.
2021-02-14 11:46:11 -05:00
umi
c6aad80e29 [Docs] Japanese translation of adc_driver.md (#10971)
* add adc_driver.md translation

* update based on comment

* update based on comment

* update based on comment
2021-02-14 20:54:58 +09:00
umi
50d816fe99 [Docs] Japanese translation of feature_unicode.md (#10985)
* add feature_unicode.md translation

* consolidate sentence end

* update based on comment

* update based on comment

* update based on comment

* update based on comment
2021-02-14 20:52:54 +09:00
Nick Brassel
557cfecc15 ChibiOS conf upgrade for keebio/dsp40/rev1 (#11846) 2021-02-14 21:41:03 +11:00
James Young
ecbbdbcd4e [Keyboard] YMDK YMD40 v2 (#11835)
* [Keyboard] YMDK YMD40 v2

* fork default keymap into default and factory

- factory keymap is as assigned by the extracted JSON provided by the vendor
- default keymap is based on the Planck

* add AUDIO_SUPPORTED rule per drashna

* modify factory keymap's readme

Recommend users copy the default keymap instead.
2021-02-13 23:17:05 -08:00
James Young
d035bb51f4 [Keyboard] NEO Keys Palette G67 Hotswap & Soldered (#11850) 2021-02-13 18:16:23 -08:00
Joshua Diamond
537b7614b9 unscramble Durgod k320 keymap / fix Issue #11883 (#11885)
* unscramble Durgod k320 keymap / fix Issue #11883

* fix a few keymaps
2021-02-13 20:49:26 -05:00
Joel Challis
1f2fe2eab9 Refactor platform logic within print.h (#11863)
* Remove GCC check from debug

* Remove platform logic from common.mk

* Refactor platform logic within print.h

* restore debug.c format

* headers

* Rename function pointer type

* review comments

* Update tmk_core/common/printf.c

Co-authored-by: Nick Brassel <nick@tzarc.org>

* Format

Co-authored-by: Nick Brassel <nick@tzarc.org>
2021-02-14 01:44:22 +00:00
Ryan
7ce5ba645a LED Matrix: add led_matrix_types.h and implement g_led_config (#11741)
* LED Matrix: add led_matrix_types.h and implement g_led_config

* Set correct flags for non-"modifier" LEDs

* Clean up docs a little

* Add license headers for [led,rgb]_matrix_types.h
2021-02-14 12:15:08 +11:00
Joel Challis
de8caf708c Split gpio and atomic to platform (#11792) 2021-02-14 11:51:06 +11:00
QMK Bot
72e515547a Merge remote-tracking branch 'origin/master' into develop 2021-02-14 00:21:30 +00:00
Nick Brassel
101990139f Disable VIA protocol's EEPROM reset and bootloader jump commands (#11892)
* Disable VIA protocol's EEPROM reset and bootloader jump commands, and allow for reinstation through #define.

* Removed at Wilba's suggestion.
2021-02-14 11:20:57 +11:00
Zach White
cd336b2b54 bump to python 3.7 (#11408) 2021-02-13 10:26:45 -08:00
QMK Bot
57d2409c08 Merge remote-tracking branch 'origin/master' into develop 2021-02-13 17:06:25 +00:00
Al Cutter
8af7e5ea81 Add basic ISO {Win,Mac} layouts for Durgod/K320 (#11778)
* Add default ISO Windows layout for Durgod/K320

* Duplicate default_iso to default_iso_mac

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

* Remove windows-key lock in default_iso

* Fixup wonky macro layout inherited from ansi keymap
2021-02-13 12:05:53 -05:00
QMK Bot
afa88a4616 Merge remote-tracking branch 'origin/master' into develop 2021-02-13 10:06:10 +00:00
github-actions[bot]
4f598ee9fb Format code according to conventions (#11879)
Co-authored-by: QMK Bot <hello@qmk.fm>
2021-02-13 10:05:17 +00:00
fauxpark
6573f24cd9 Merge remote-tracking branch 'upstream/master' into develop 2021-02-13 14:56:11 +11:00
Ryan
a716517705 Fix line endings for geminate60.[ch] (#11878) 2021-02-12 22:35:32 -05:00
QMK Bot
6680aa6bdf Merge remote-tracking branch 'origin/master' into develop 2021-02-13 02:35:08 +00:00
MelGeek
c2b0bd2a0a [Keyboard] Update MOJO75 to support multi version (#11790)
* Add Z70Ultra which is a Hotsawp RGB 65% keyboard

* Update keyboards/melgeek/z70ultra/z70ultra.h

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

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

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

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

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

* Update keyboards/melgeek/z70ultra/z70ultra.c

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

* Update keyboards/melgeek/z70ultra/readme.md

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

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

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

* Update keyboards/melgeek/z70ultra/z70ultra.c

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

* Update keyboards/melgeek/z70ultra/z70ultra.c

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

* Update keyboards/melgeek/z70ultra/z70ultra.c

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

* Update keyboards/melgeek/z70ultra/z70ultra.h

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

* Update readme.md

* Update info.json

update the name of layout to consistent the keyboard.

* Update keyboards/melgeek/z70ultra/z70ultra.c

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

* Update keyboards/melgeek/z70ultra/z70ultra.c

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

* Update keyboards/melgeek/z70ultra/info.json

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

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

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

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

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

* Add Z70Ultra

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

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

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

* Update keyboards/melgeek/z70ultra/config.h

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

* remove excessive arguments from LAYOUT_split_space

* Update keyboards/melgeek/z70ultra/info.json

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

* Update keyboards/melgeek/z70ultra/info.json

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

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

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

* Update keyboards/melgeek/z70ultra/z70ultra.h

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

* Update keyboards/melgeek/z70ultra/z70ultra.h

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

* Use macro replace with the literal for CS & SW

* Update keyboards/melgeek/z70ultra/z70ultra.c

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

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

* Update keyboards/melgeek/mj61/mj61.c

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

* Update keyboards/melgeek/mj61/mj61.c

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

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

* Update keyboards/melgeek/mj61/readme.md

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

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

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

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

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

* Update keyboards/melgeek/mj61/mj61.c

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

* Update keyboards/melgeek/mj61/mj61.c

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

* Add GPL for files

* Update keymaps/default/keymap.c

* Update keymaps/via/keymap.c

* Update keyboards/melgeek/z70ultra/z70ultra.c

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

* Update keyboards/melgeek/z70ultra/z70ultra.c

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

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

Co-authored-by: Ryan <fauxpark@gmail.com>
Co-authored-by: James Young <18669334+noroadsleft@users.noreply.github.com>
Co-authored-by: Drashna Jaelre <drashna@live.com>
2021-02-12 21:34:34 -05:00
QMK Bot
5e3cd884eb Merge remote-tracking branch 'origin/master' into develop 2021-02-13 00:59:41 +00:00
James Young
6e74abc643 [Keyboard] tunks/ergo33: define RGBLight config at kb level (#11855) 2021-02-12 16:59:10 -08:00
QMK Bot
c93dc18ddc Merge remote-tracking branch 'origin/master' into develop 2021-02-12 23:57:06 +00:00
Carlos
bf1c40d682 [Docs] Add EEP_RST keycode to "Wiping the EEPROM" section (#11830) 2021-02-12 15:56:36 -08:00
QMK Bot
0edb99a255 Merge remote-tracking branch 'origin/master' into develop 2021-02-12 22:55:06 +00:00
Weirdo
548b874a16 [Keyboard] geminate60 keyboard (#11670)
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
2021-02-12 14:54:37 -08:00
QMK Bot
06a28d024f Merge remote-tracking branch 'origin/master' into develop 2021-02-12 20:51:59 +00:00
Brian Marsh
519032c61b Adding custom keymap for Quark keyboard (#11744)
* adding pezhore keymap

* Adding sarcasm/irony mark, unicode emoji

* removing numpad layer enum

Co-authored-by: Brian Marsh <brian.marsh@rangelabs.io>
2021-02-12 15:51:23 -05:00
QMK Bot
85dd86c64e Merge remote-tracking branch 'origin/master' into develop 2021-02-12 19:16:13 +00:00
Stuart Fong
bedb72b0bc Add stuartfong1 Planck Layout (#11814)
* Add files via upload

* Update readme.md

* Update readme.md

* Add GPL2+ compatible license header to config.h

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

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

Co-authored-by: Drashna Jaelre <drashna@live.com>
2021-02-12 14:15:38 -05:00
QMK Bot
e617f1cfcc Merge remote-tracking branch 'origin/master' into develop 2021-02-12 18:47:01 +00:00
Christian Gurholt
22368ee49e Rename ki folder to kifinnsson (#11853)
In preparation for migrating keymaps to userspace
2021-02-12 13:46:27 -05:00
QMK Bot
b3c647bf7c Merge remote-tracking branch 'origin/master' into develop 2021-02-12 18:44:55 +00:00
Timothy Beck
3f71bc8e79 added dear_vehicle_owner meme keymap to planck keyboard (#11478)
* added default as a starting point

* added readme per guidelines

* made necessary changed to keymap to follow guidelines

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

* increased polling interval

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

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

* added license tp config.h
2021-02-12 13:43:52 -05:00
QMK Bot
393f1ea38a Merge remote-tracking branch 'origin/master' into develop 2021-02-12 02:34:22 +00:00
Quentin
550359a4b4 [Keyboard] Add bastyl mini keyboard (#11782)
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: James Young <18669334+noroadsleft@users.noreply.github.com>
Co-authored-by: NullSense <matas234@gmail.com>
2021-02-11 18:33:50 -08:00
QMK Bot
0b68c7441a Merge remote-tracking branch 'origin/master' into develop 2021-02-12 01:03:00 +00:00
Rozakiin
bc74027f39 [Keyboard] Fix noxary Product IDs (#11771)
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Ruari <ruari.armstrong@gmail.com>
2021-02-11 17:02:28 -08:00
QMK Bot
02654ad2d7 Merge remote-tracking branch 'origin/master' into develop 2021-02-12 00:56:39 +00:00
MelGeek
068e11f7e2 [Keyboard] Support MJ65 - a 65% RGB Hotswap keyboard (#11764)
Co-authored-by: Ryan <fauxpark@gmail.com>
Co-authored-by: James Young <18669334+noroadsleft@users.noreply.github.com>
Co-authored-by: Drashna Jaelre <drashna@live.com>
2021-02-11 16:56:07 -08:00
QMK Bot
055cd47ba0 Merge remote-tracking branch 'origin/master' into develop 2021-02-11 18:54:29 +00:00
Kyle McCreery
6a5f29208e [Docs] Update feature_haptic_feedback.md (#11859)
Arduino playground link to wiring diagram no longer works. Changed the link to point to the correct Adafruit hosted diagram pdf.
2021-02-11 10:53:55 -08:00
QMK Bot
986dc7f0e9 Merge remote-tracking branch 'origin/master' into develop 2021-02-10 19:18:29 +00:00
James Young
5a73558a21 [Keymap] add noroadsleft userspace; add and update keymaps (#11686) 2021-02-10 20:17:42 +01:00
QMK Bot
7ff713f35f Merge remote-tracking branch 'origin/master' into develop 2021-02-10 19:06:05 +00:00
Joschua Gandert
4b2ab84c71 [Keymap] Added german_gaming keymap for hidtech/bastyl (#11446)
* Added german_gaming keymap for hidtech/bastyl

* Apply suggestions from code review

* Added missing brace
2021-02-10 11:05:20 -08:00
QMK Bot
8d06a230c2 Merge remote-tracking branch 'origin/master' into develop 2021-02-10 14:22:21 +00:00
stanrc85
7ef4aba52c Userspace updates (#11841)
* enable LTO for smaller firmware size

* delete since this was added to userspace rules.mk

* readme updates and new images

* Add -j to compile and flash commands in userpsace

* Enable NKRO

* Enable NKRO, VIA, LTO by default

* Stanrc85-ansi readme update

* Stanrc85-alice readme

* quick RGB layer indicator fix in keymap
2021-02-10 09:21:46 -05:00
QMK Bot
0cd00b6c09 Merge remote-tracking branch 'origin/master' into develop 2021-02-10 05:19:52 +00:00
Spaceman
0aed8746be [Keyboard] Add keyboard yun65 (#11714) 2021-02-09 21:18:53 -08:00
QMK Bot
527cf2f3cf Merge remote-tracking branch 'origin/master' into develop 2021-02-10 04:46:39 +00:00
Mike Tsao
872f656c3b [Keyboard] Add sowbug/68keys and sowbug/ansi_tkl (#11589) 2021-02-09 20:45:42 -08:00
QMK Bot
ded7b215be Merge remote-tracking branch 'origin/master' into develop 2021-02-10 02:00:17 +00:00
LSChyi
fb9f619d89 Play Keyboard Helen 80: fix matrix mapping (#11585) 2021-02-09 17:58:59 -08:00
QMK Bot
36c7c66831 Merge remote-tracking branch 'origin/master' into develop 2021-02-09 22:40:48 +00:00
Konstantin Shpits
955eb58af5 Fix VENDOR_ID for ymd67 (#11838) 2021-02-10 09:40:16 +11:00
Drashna Jaelre
7161d65070 Remove FAUXCLICKY feature (deprecated) (#11829) 2021-02-09 09:49:05 -08:00
QMK Bot
738bd263c1 Merge remote-tracking branch 'origin/master' into develop 2021-02-09 17:11:54 +00:00
Nicolas Schodet
7d5902752e [Keyboard] Add Splitty keyboard (#11613) 2021-02-09 09:10:54 -08:00
QMK Bot
9aed856d78 Merge remote-tracking branch 'origin/master' into develop 2021-02-09 14:59:41 +00:00
Jay Greco
4107856b70 Simplify NIBBLE encoder code and clean up keymaps (#11808)
* Simplify encoder code and clean up keymaps.

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

* Change encoder_update_kb to encoder_update_user per PR feedback
2021-02-09 14:50:16 +00:00
QMK Bot
39ed48f7a7 Merge remote-tracking branch 'origin/master' into develop 2021-02-08 21:33:45 +00:00
Sergey Vlasov
627ceebef3 ws2812: Fix number of nops for AVR at 8 MHz (#9559)
* ws2812: Fix number of nops for AVR at 8 MHz

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

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

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

Remove old code which was unsuccessfully trying to clamp negative w1, w2
and w3 values to 0, and set w1_nops, w2_nops and w3_nops directly.
2021-02-09 08:33:04 +11:00
Zach White
448cc1acd5 remove deprecated qmk json-keymap (#11823) 2021-02-08 11:03:08 +00:00
QMK Bot
248413489f Merge remote-tracking branch 'origin/master' into develop 2021-02-08 09:13:10 +00:00
Ryan
d2f204c1e3 Fix RGBLIGHT_LIMIT_VAL typo (#11826) 2021-02-08 20:12:33 +11:00
QMK Bot
3a98bd75c8 Merge remote-tracking branch 'origin/master' into develop 2021-02-07 23:16:47 +00:00
Joel Challis
99bffc2a21 Migrate some tmk_core files to quantum (#11791)
* Migrate some tmk_core files to quantum

* Fix build errors
2021-02-07 23:16:15 +00:00
QMK Bot
b8031a1613 Merge remote-tracking branch 'origin/master' into develop 2021-02-07 22:52:50 +00:00
yfuku
7e82879553 via support for bat43 (#11729)
* via support for bat43

* add adjust layer for via
2021-02-07 22:52:19 +00:00
QMK Bot
51d40e0ef0 Merge remote-tracking branch 'origin/master' into develop 2021-02-07 22:35:56 +00:00
Xelus22
4d8161cff5 [Update] Allow APM32 on TrinityXTtkl (#11715)
* amp32  initial change

* fix spacing
2021-02-07 22:35:20 +00:00
QMK Bot
d9dea7c4ec Merge remote-tracking branch 'origin/master' into develop 2021-02-07 21:03:27 +00:00
Joel Challis
ccc9c43161 Allow flash/compile to accept relative json paths (#11767)
* Allow flash/compile to accept relative paths

* Review suggestions

* Review comments

* Put back exists check otherwise stdin fails

* fix lint
2021-02-07 21:02:51 +00:00
fauxpark
0e59827023 Merge remote-tracking branch 'upstream/master' into develop 2021-02-08 07:57:09 +11:00
Danny
fc29c7a589 Add DSP40 (#11579)
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
2021-02-07 15:49:16 -05:00
Ryan
5d5cbb877d Rework I2C driver docs (#11658) 2021-02-08 07:45:59 +11:00
QMK Bot
10c88cdcd5 Merge remote-tracking branch 'origin/master' into develop 2021-02-07 18:57:18 +00:00
Danny
0355cd0f72 [Keyboard] Add The Stick keyboard (#11745)
Co-authored-by: Ryan <fauxpark@gmail.com>
2021-02-07 10:56:43 -08:00
QMK Bot
6233c6ac7b Merge remote-tracking branch 'origin/master' into develop 2021-02-07 18:49:08 +00:00
moritz-john
9d1d875a95 [Docs] Update isp_flashing_guide.md (#11777)
Added wiring for USBasp and changed the order of the documentation accordingly
2021-02-07 10:48:34 -08:00
QMK Bot
5007cdac72 Merge remote-tracking branch 'origin/master' into develop 2021-02-07 17:58:56 +00:00
George Petri
13c562e154 [Keymap] Update keymap for keebio/nyquist (#11734) 2021-02-07 09:58:23 -08:00
QMK Bot
a08c7c68cc Merge remote-tracking branch 'origin/master' into develop 2021-02-07 17:45:42 +00:00
Chris M
c1aeec9635 [Keymap] Shadyproject/bfo9000 (#11753) 2021-02-07 09:44:59 -08:00
QMK Bot
adf32da655 Merge remote-tracking branch 'origin/master' into develop 2021-02-07 17:42:59 +00:00
Juno Nguyen
a4368da849 [Keymap] Update community ortholinear 4x12 keymap: junonum (#11757) 2021-02-07 09:42:25 -08:00
QMK Bot
7122adc4b8 Merge remote-tracking branch 'origin/master' into develop 2021-02-07 17:27:11 +00:00
stanrc85
65db45c475 [Keyboard] Add my keymap for Mark65 (#11717) 2021-02-07 09:26:39 -08:00
QMK Bot
ffd768dfbc Merge remote-tracking branch 'origin/master' into develop 2021-02-07 17:09:55 +00:00
Salicylic-acid3
74145dc7ae [Keyboard] Add nknl7jp keyboard (#11591)
* Add nknl7jp keyboard

A 73 keys JIS Layout split keyboard.
Salicylic-acid3

* Keymap Update

Fixed default keymap.

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

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

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

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

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

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

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

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

Co-authored-by: Drashna Jaelre <drashna@live.com>
2021-02-07 09:09:24 -08:00
QMK Bot
380e1a28c9 Merge remote-tracking branch 'origin/master' into develop 2021-02-07 17:07:42 +00:00
Salicylic-acid3
60d76d6733 [Keyboard] Add nknl7en keyboard (#11590)
* Add nknl7en keyboard

A 70 keys ANSI Layout split keyboard.
Salicylic-acid3

* Update readme.md

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

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

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

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

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

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

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

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

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

Co-authored-by: Drashna Jaelre <drashna@live.com>
2021-02-07 09:06:59 -08:00
QMK Bot
2a7584ecf0 Merge remote-tracking branch 'origin/master' into develop 2021-02-07 17:05:04 +00:00
Salicylic-acid3
72b0f494e7 [Keyboard] Add ergoarrows keyboard (#11592)
A 76 keys Ergo Layout split keyboard.
Salicylic-acid3
2021-02-07 09:04:29 -08:00
QMK Bot
fe7e736c6b Merge remote-tracking branch 'origin/master' into develop 2021-02-07 16:59:45 +00:00
Matteo Bonora
2e6bd97585 [Keyboard] Add Hi-Tek AIM-65 keyboard (#11623)
* Add Hi-Tek AIM-65 keyboard

* Add bootloader selection

* Update keyboards/handwired/aim65/readme.md

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

* Update keyboards/handwired/aim65/rules.mk

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

* Update keyboard image

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

* Update keyboards/handwired/aim65/rules.mk

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

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

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

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

Fix indentation

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

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

Fix indentation

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

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

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

* Update keyboards/handwired/aim65/readme.md

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

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

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

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

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

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

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

* Update keyboards/handwired/aim65/config.h

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

Co-authored-by: Joel Challis <git@zvecr.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: James Young <18669334+noroadsleft@users.noreply.github.com>
2021-02-07 08:59:15 -08:00
QMK Bot
d33191830b Merge remote-tracking branch 'origin/master' into develop 2021-02-07 16:56:55 +00:00
k.bigwheel
784a9cdca4 [Keyboard] Add earth_rover keyboard (#11405)
* Just ./util/new_keyboard.sh earth_rover

* Update readme.md

* Create key layout

* Setup config.h

* Add default keymap

* Fix pins

* Update flash command

* Write info.json

* Add reset instruction

* Change bootloader setting

* Format new C files

* Empty commit for kicking CI

* Update keyboards/earth_rover/config.h

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

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

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

* Update readme.md

* Update keyboards/earth_rover/readme.md

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

Co-authored-by: James Young <18669334+noroadsleft@users.noreply.github.com>
2021-02-07 08:56:27 -08:00
QMK Bot
5f51df6431 Merge remote-tracking branch 'origin/master' into develop 2021-02-07 16:54:55 +00:00
Moritz
3d01794b12 [Keyboard] Whale 75 (#11486)
* initial commit

* various fixes

* minor formatting fixes

* fixed typo in config

* switched underglow from bitbang to pwm

* fixed indicator leds not working

* improved comment syntax

* fixed matrix

* remove outdated indicator custom code

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

* add new indicator definitions

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

* removed duplicate define for underglow pin

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

* removed unneeded lines

* fixed readme to fit template

* added picture to readme

* fixed readme formatting

Co-authored-by: Joel Challis <git@zvecr.com>
Co-authored-by: Drashna Jaelre <drashna@live.com>
2021-02-07 08:54:23 -08:00
Alexander Ulitin
9146d30f06 [Bug] Fix media key missing upstroke event (#11162)
[Bug] Pressing media key on a momentarily activated layer may leads to
missing key up events.
2021-02-07 08:43:39 -08:00
Joel Challis
0288142769 Migrate mousekey to quantum (#11804) 2021-02-07 13:56:08 +00:00
QMK Bot
0c44aa9503 Merge remote-tracking branch 'origin/master' into develop 2021-02-06 21:04:30 +00:00
Joshua Diamond
07a1574732 [Keymap] Revamp spidey3 userspace and keymaps (#11768)
* Don't block keys during startup animation

* More refinements related to startup and debug state

* restore key logging

* some cleanup on scan rate reporting

* trim some fat

* better lighting to indicate jumped to bootloader

* use eeprom for state restoration

* a little reorganization

* report version immediately when turn on debug

* hold-to-adjust for hue, sat, val

* cformat

* reorg rules.mk settings, fix compile with CONSOLE_ENABLE=no

* simplify spidey3 userspace

* NULL in layer list caused buggy behavior

* more bugfix

* update numpad layout to match matt30 MT3 /dev/tty keycaps

* swap emdash and endash

* map shift+backspace to delete

* removing NO_ACTION_ONSHOT makes the firmware SMALLER ?!

* cformat

* improve spi_glow

* disable shift-backspace = delete by default
2021-02-06 13:04:25 -08:00
Xelus22
53f17113c1 [Keyboard] VIA fix firmware sizes (#11770) 2021-02-06 13:04:01 -08:00
Joel Challis
f5a38b95c1 Remove legacy print backward compatiblitly (#11805)
* Remove legacy print backward compatiblitly

* Remove legacy print backward compatiblitly - core

* revert comment changes
2021-02-06 16:56:13 +00:00
QMK Bot
c50ecb4bb0 Merge remote-tracking branch 'origin/master' into develop 2021-02-06 15:54:23 +00:00
Felix Jen
66775a3391 Fixed pin assignment on KBD8X Hotswap by Lucid (#11807) 2021-02-07 02:53:49 +11:00
QMK Bot
a1ddba6bc4 Merge remote-tracking branch 'origin/master' into develop 2021-02-06 14:16:03 +00:00
Ryan
9b874d5071 Manual formatting fix for serial_uart.c (#11806) 2021-02-06 14:15:30 +00:00
QMK Bot
5f2b7bd78e Merge remote-tracking branch 'origin/master' into develop 2021-02-06 12:56:32 +00:00
Joel Challis
0e8cef28d2 [CI] Auto Formatting - Swap from direct commit to PR (#11229)
* Swap from direct commit to PR

* Fix up
2021-02-06 12:55:50 +00:00
QMK Bot
052095d432 Merge remote-tracking branch 'origin/master' into develop 2021-02-06 10:18:59 +00:00
Atsushi Morimoto
31675c614e [Keyboard] add info.json of Sparrow62 (#11740)
* add info.json for QMK Configurator

* Apply suggestions from code review

fix space, enter and align x
2021-02-06 02:18:21 -08:00
Nick Brassel
620a946d01 Add STM32G431 and STM32G474 board definitions. (#11793)
* Add STM32G431 and STM32G474 board definitions.

* Add docs.
2021-02-06 11:27:46 +11:00
Ryan
c1b2e87e89 Remove MIDI_ENABLE_STRICT from user keymaps (#11750) 2021-02-06 09:35:10 +11:00
QMK Bot
843643aef3 Merge remote-tracking branch 'origin/master' into develop 2021-02-05 22:21:23 +00:00
Ryan
5ea92a9c1c Serial refactor (#11521) 2021-02-06 09:20:48 +11:00
QMK Bot
c3eee3a842 Merge remote-tracking branch 'origin/master' into develop 2021-02-05 19:43:38 +00:00
im a can what do you think lmao?
464eb7137d update lck75 json file (#11798)
* update lck75 json

* Create info.json

* wrong json file extension

* updated layout height and width in json

* Update info.json

* reverted changes from last update to json

an error was made

* Update info.json

found an extra key in the kle raw data

* Changed product ID

* Update keyboards/lck75/info.json

understood

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

Co-authored-by: Joel Challis <git@zvecr.com>
2021-02-05 19:42:36 +00:00
QMK Bot
b4e02f8ddf Merge remote-tracking branch 'origin/master' into develop 2021-02-05 13:28:01 +00:00
Joel Challis
b2d0e8a491 Manually run formatting job (#11797) 2021-02-05 13:27:24 +00:00
QMK Bot
1816b16315 Merge remote-tracking branch 'origin/master' into develop 2021-02-05 11:31:55 +00:00
Sam Hudson
18babeae49 [Keyboard] add shk9 macropad (#11505)
* added shk9 macropad

* updated readme

* removed json file

* updated config

* removed commented config

* fixed website address

* added bootloader mode info to readme

* remove midi enable rule

* fixed comment

* fixed default keymap

* changed layout to ortho

* fixed typo

* fixed broken layout

* pr changes

* added keymap spacing
2021-02-05 03:31:15 -08:00
QMK Bot
44b8cba776 Merge remote-tracking branch 'origin/master' into develop 2021-02-05 07:31:28 +00:00
Joel Challis
59bf018e9f Fix build errors on kikoslab/kl90 default keymap (#11796) 2021-02-04 23:30:43 -08:00
QMK Bot
be2f109bf1 Merge remote-tracking branch 'origin/master' into develop 2021-02-05 06:20:04 +00:00
MelGeek
445ea64699 [Keyboard] Fix the LED's ID of ISSI for MJ64 REV2 (#11760)
* Add Z70Ultra which is a Hotsawp RGB 65% keyboard

* Update keyboards/melgeek/z70ultra/z70ultra.h

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

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

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

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

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

* Update keyboards/melgeek/z70ultra/z70ultra.c

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

* Update keyboards/melgeek/z70ultra/readme.md

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

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

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

* Update keyboards/melgeek/z70ultra/z70ultra.c

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

* Update keyboards/melgeek/z70ultra/z70ultra.c

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

* Update keyboards/melgeek/z70ultra/z70ultra.c

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

* Update keyboards/melgeek/z70ultra/z70ultra.h

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

* Update readme.md

* Update info.json

update the name of layout to consistent the keyboard.

* Update keyboards/melgeek/z70ultra/z70ultra.c

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

* Update keyboards/melgeek/z70ultra/z70ultra.c

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

* Update keyboards/melgeek/z70ultra/info.json

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

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

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

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

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

* Add Z70Ultra

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

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

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

* Update keyboards/melgeek/z70ultra/config.h

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

* remove excessive arguments from LAYOUT_split_space

* Update keyboards/melgeek/z70ultra/info.json

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

* Update keyboards/melgeek/z70ultra/info.json

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

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

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

* Update keyboards/melgeek/z70ultra/z70ultra.h

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

* Update keyboards/melgeek/z70ultra/z70ultra.h

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

* Use macro replace with the literal for CS & SW

* Update keyboards/melgeek/z70ultra/z70ultra.c

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

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

* Update keyboards/melgeek/mj61/mj61.c

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

* Update keyboards/melgeek/mj61/mj61.c

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

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

* Update keyboards/melgeek/mj61/readme.md

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

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

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

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

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

* Update keyboards/melgeek/mj61/mj61.c

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

* Update keyboards/melgeek/mj61/mj61.c

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

* Add GPL for files

* Update keymaps/default/keymap.c

* Update keymaps/via/keymap.c

* Update keyboards/melgeek/z70ultra/z70ultra.c

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

* Update keyboards/melgeek/z70ultra/z70ultra.c

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

* Fix the LED's ID of ISSI for MJ64 REV2

Co-authored-by: Ryan <fauxpark@gmail.com>
Co-authored-by: James Young <18669334+noroadsleft@users.noreply.github.com>
Co-authored-by: Drashna Jaelre <drashna@live.com>
2021-02-04 22:19:30 -08:00
QMK Bot
f554e290f7 Merge remote-tracking branch 'origin/master' into develop 2021-02-05 06:19:03 +00:00
Joshua Borton
237dd23491 [Keyboard] Add VIA support to v60 Type R (#11758)
* Add support VIA support to v60 Type R

* Update keyboards/v60_type_r/config.h

Revert combining product and manufacturer

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

* Update keyboards/v60_type_r/keymaps/via/keymap.c

Remove empty `led_set_user` function

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

* Update keyboards/v60_type_r/rules.mk

Don't enable bootmagic lite

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

* Add missing empty layers for VIA

* Update keyboards/v60_type_r/rules.mk

Fix comment formatting

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

* Update the VENDOR_ID

Co-authored-by: Ryan <fauxpark@gmail.com>
2021-02-04 22:18:20 -08:00
QMK Bot
325c2b1487 Merge remote-tracking branch 'origin/master' into develop 2021-02-05 05:07:22 +00:00
18438880
58f8c7f9c3 [Keyboard] add latin17rgb (#11680)
* Create readme.md

* Add files via upload

* Create keymap.c

* Create keymap.c

* Create rules.mk

* Update config.h

* Update rules.mk

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

* Update keyboards/latin17rgb/keymaps/via/keymap.c

* Update keyboards/latin17rgb/latin17rgb.h

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

* Update keyboards/latin17rgb/keymaps/via/keymap.c

* Update keyboards/latin17rgb/rules.mk

* Update keyboards/latin17rgb/info.json

* Delete latin17RGB.json

* Update info.json

* Update keymap.c

* Update keymap.c

* Update info.json

* Update latin17rgb.h

* Update latin17rgb.h

* Update keymap.c

* Update keymap.c

* Update latin17rgb.h

* Update keyboards/latin17rgb/readme.md

* Update keyboards/latin17rgb/readme.md

* Update keyboards/latin17rgb/rules.mk

* Update keyboards/latin17rgb/rules.mk

* Update keyboards/latin17rgb/info.json

* Update keyboards/latin17rgb/rules.mk

* Update keyboards/latin17rgb/latin17rgb.h

* Update keyboards/latin17rgb/rules.mk

* Update keyboards/latin17rgb/readme.md

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

* Update keyboards/latin17rgb/keymaps/via/keymap.c

* Update latin17rgb.c

* Update latin17rgb.c

* Update keyboards/latin17rgb/latin17rgb.c
2021-02-04 21:06:50 -08:00
QMK Bot
ac52331c4f Merge remote-tracking branch 'origin/master' into develop 2021-02-05 03:02:37 +00:00
alittlepeace
1d49076b81 [Keyboard] Adding YMDK Wings Keyboard (#11693)
* Add files via upload

* Add files via upload

* Update rules.mk

* Update rules.mk

* Update info.json

* Update wings.h

* Update info.json

* Update info.json

* Update info.json

* Update info.json

* Update keyboards/ymdk/wings/info.json

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

* Update keyboards/ymdk/wings/keymaps/via/keymap.c

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

* Update keyboards/ymdk/wings/keymaps/via/keymap.c

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

* Update keyboards/ymdk/wings/keymaps/via/keymap.c

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

* Update keyboards/ymdk/wings/keymaps/via/keymap.c

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

* Update keyboards/ymdk/wings/keymaps/via/keymap.c

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

* Update keyboards/ymdk/wings/keymaps/default/keymap.c

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

* Update keyboards/ymdk/wings/info.json

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

* Update keyboards/ymdk/wings/wings.h

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

* Update keyboards/ymdk/wings/readme.md

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

* Update keyboards/ymdk/wings/readme.md

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

* Update keyboards/ymdk/wings/info.json

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

* Update keyboards/ymdk/wings/keymaps/default/keymap.c

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

Co-authored-by: Joel Challis <git@zvecr.com>
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: James Young <18669334+noroadsleft@users.noreply.github.com>
2021-02-04 19:01:59 -08:00
QMK Bot
751af70b78 Merge remote-tracking branch 'origin/master' into develop 2021-02-05 00:24:40 +00:00
npspears
f69b652127 [Keyboard] add Pursuit40 PCB for Panc40 (#11683)
* added Pursuit40 PCB for Panc40

Pursuit40 is another PCB option for the Panc40 that was sold on Panc.co/store

* added via support

* Apply suggestions from code review

* Apply suggestions from code review

* deleted extra row in VIA keymap

sorry about that - extra row was a holdover from a copy-paste

* deleted commented extra row

extra row was a holdover from a copy-paste

* updated VIA keymap

empty layer added

* fixed bug

* Apply suggestions from code review

committed
2021-02-04 16:24:09 -08:00
QMK Bot
a182338a8b Merge remote-tracking branch 'origin/master' into develop 2021-02-05 00:22:26 +00:00
Brandon Claveria
fe686570ca [Keyboard] add The Galleon by swiftrax (#11700)
* initial addition

* fix keymap / keyboard.h

* add animation

* change pid

* fix layout macro

* Apply suggestions from code review

* Update keyboards/handwired/swiftrax/the_galleon/info.json

* move wpm enable
2021-02-04 16:21:51 -08:00
QMK Bot
09ddc9fb2f Merge remote-tracking branch 'origin/master' into develop 2021-02-05 00:20:11 +00:00
yfuku
0bf0644aa2 Add VIA support for claw44 (#11677)
* add via keymaps for claw44

* Update keyboards/claw44/keymaps/via/config.h

* Update keyboards/claw44/keymaps/via-oled/config.h

* Update keyboards/claw44/keymaps/via-oled/keymap.c

* Update keyboards/claw44/keymaps/via/keymap.c

* Update keyboards/claw44/keymaps/via-oled/keymap.c

* Update keyboards/claw44/keymaps/via/keymap.c

* Applied the review to other keymaps.

* Update keyboards/claw44/keymaps/oled/keymap.c

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

* Update keyboards/claw44/keymaps/via-oled/keymap.c

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

* Update keyboards/claw44/keymaps/via-oled/keymap.c

* Update keyboards/claw44/keymaps/via-oled/keymap.c

* Update keyboards/claw44/keymaps/via/keymap.c

* Update keyboards/claw44/keymaps/via/keymap.c

* Update keyboards/claw44/keymaps/via/keymap.c

* Update keyboards/claw44/keymaps/via/keymap.c

* remove via-oled

* change vendor ID for yfuku

* add readme.md for rev1

* Update keyboards/claw44/rev1/readme.md

* Update keyboards/claw44/rev1/readme.md

* Update keyboards/claw44/rev1/readme.md
2021-02-04 16:19:37 -08:00
QMK Bot
9bc7a856dd Merge remote-tracking branch 'origin/master' into develop 2021-02-05 00:14:43 +00:00
Gerardo L Hidalgo-Cuellar
2c94f98995 [Keymap] add ghidalgo93 for kyria (#11663)
* adding kyria/rev1 keymap

* adding both hand config

* Apply suggestions from code review

* Apply suggestions from code review
2021-02-04 16:14:11 -08:00
QMK Bot
a5c5da47fc Merge remote-tracking branch 'origin/master' into develop 2021-02-04 21:58:36 +00:00
moyi4681
69315cb643 [Keyboard] KBDfans Bella RGB ANSI and Bella RGB ISO (#11438)
* add bella rgb keyboards

* Update rgb_iso.c

* fix error

* Update rgb_iso.h

* Update keyboards/kbdfans/bella/rgb/rules.mk

* Update keyboards/kbdfans/bella/rgb_iso/rules.mk

* Update keymap.c

* Update keyboards/kbdfans/bella/rgb/info.json

* Update keyboards/kbdfans/bella/rgb_iso/info.json

* Update keyboards/kbdfans/bella/rgb_iso/config.h

* Update keyboards/kbdfans/bella/rgb/config.h

* Update keyboards/kbdfans/bella/rgb_iso/rules.mk

* Update keyboards/kbdfans/bella/rgb_iso/rules.mk

* Update keyboards/kbdfans/bella/rgb_iso/rules.mk

* Update keyboards/kbdfans/bella/rgb/rules.mk

* Update keyboards/kbdfans/bella/rgb/rules.mk

* Update keyboards/kbdfans/bella/rgb/rules.mk

* Update rgb_iso.c

* Update rgb.c

* Update rgb_iso.c

* Update rgb_iso.h

* Update keyboards/kbdfans/bella/rgb/config.h

* Update keyboards/kbdfans/bella/rgb/rgb.h

* Update keyboards/kbdfans/bella/rgb/info.json

* Update keyboards/kbdfans/bella/rgb/info.json

* Update keyboards/kbdfans/bella/rgb/keymaps/default/keymap.c

* Update keyboards/kbdfans/bella/rgb_iso/keymaps/via/keymap.c

* Update keyboards/kbdfans/bella/rgb_iso/keymaps/via/keymap.c

* Update keyboards/kbdfans/bella/rgb_iso/readme.md

* Update keyboards/kbdfans/bella/rgb_iso/readme.md

* Update keyboards/kbdfans/bella/rgb_iso/readme.md

* Apply suggestions from code review

kbdfans/bella/rgb: Change remaining instances of LAYOUT_all to LAYOUT

* Apply suggestions from code review

kbdfans/bella/rgb: update readme

- update keyboard name
- include flashing and bootloader instructions

* Apply suggestions from code review

kbdfans/bella/rgb_iso: update keyboard name

Changes remaining instances of "BELLA_RGB_ISO" to "BELLA RGB ISO".

* Apply suggestions from code review

kbdfans/bella/rgb_iso: Change LAYOUT_all to LAYOUT

* Apply suggestions from code review

kbdfans/bella/rgb_iso: Move ISO Enter's keycode to home row per QMK standard
2021-02-04 13:58:02 -08:00
QMK Bot
017c9f29c7 Merge remote-tracking branch 'origin/master' into develop 2021-02-04 17:46:21 +00:00
Brandon Claveria
09f9bdd3d1 [Keyboard] Add KL-90 (#11494)
* add kikoslab kl90

* fix info.json

* Update keyboards/kikoslab/kl90/rules.mk

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

* Update keyboards/kikoslab/kl90/info.json

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

* update info.json

* fix layout macro

* add support for hotswap space

Co-authored-by: Swiftrax <swiftrax@gmail.com>
Co-authored-by: Joel Challis <git@zvecr.com>
2021-02-04 09:45:47 -08:00
QMK Bot
3a703b4fe7 Merge remote-tracking branch 'origin/master' into develop 2021-02-04 17:30:54 +00:00
moyi4681
908b20313c [Keyboard] add primus75 keyboard (#11440)
* add primus75 keyboard

* Update keyboards/iLumkb/primus75/info.json

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

* Update keyboards/iLumkb/primus75/keymaps/default/keymap.c

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

* Update keyboards/iLumkb/primus75/keymaps/via/keymap.c

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

* Update keyboards/iLumkb/primus75/keymaps/default/keymap.c

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

* Update keyboards/iLumkb/primus75/keymaps/via/keymap.c

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

* Update keyboards/iLumkb/primus75/primus75.h

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

* Update keymap.c

* Update keyboards/iLumkb/primus75/rules.mk

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

* Update keyboards/iLumkb/primus75/rules.mk

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

* Update keyboards/iLumkb/primus75/readme.md

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

* Update keyboards/iLumkb/primus75/config.h

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

* Update keymap.c

* Update keymap.c

* Update keyboards/iLumkb/primus75/keymaps/default/keymap.c

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

* Update keyboards/iLumkb/primus75/readme.md

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

* Rename keyboards/iLumkb/primus75/config.h to keyboards/ilumkbprimus75config.h

* Rename keyboards/ilumkbprimus75config.h to keyboards/ilumkbprimus75/config.h

* Rename keyboards/ilumkbprimus75/config.h to keyboards/ilumkb/primus75/config.h

* Rename keyboards/iLumkb/primus75/info.json to keyboards/ilumkb/primus75/info.json

* Rename keyboards/iLumkb/primus75/primus75.c to keyboards/ilumkb/primus75/primus75.c

* Rename keyboards/iLumkb/primus75/primus75.h to keyboards/ilumkb/primus75/primus75.h

* Rename keyboards/iLumkb/primus75/readme.md to keyboards/ilumkb/primus75/readme.md

* Rename keyboards/iLumkb/primus75/rules.mk to keyboards/ilumkb/primus75/rules.mk

* Rename keyboards/iLumkb/primus75/keymaps/default/keymap.c to keyboards/ilumkb/primus75/keymaps/default/keymap.c

* Rename keyboards/iLumkb/primus75/keymaps/via/rules.mk to keyboards/ilumkb/primus75/keymaps/via/rules.mk

* Rename keyboards/iLumkb/primus75/keymaps/via/keymap.c to keyboards/ilumkb/primus75/keymaps/via/keymap.c

* Update keyboards/ilumkb/primus75/keymaps/default/keymap.c

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

* Update keyboards/ilumkb/primus75/info.json

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

* Update keyboards/ilumkb/primus75/keymaps/via/keymap.c

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

* Update keyboards/ilumkb/primus75/info.json

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

Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
Co-authored-by: James Young <18669334+noroadsleft@users.noreply.github.com>
2021-02-04 09:30:21 -08:00
QMK Bot
bcb780fe02 Merge remote-tracking branch 'origin/master' into develop 2021-02-04 08:37:32 +00:00
Xyverz
59d499edd3 Xyverz bastyl (#11662)
Co-authored-by: Ian Sterling <503326@MC02YT9K9LVCF.tld>
2021-02-04 19:36:41 +11:00
Nick Brassel
27749e1c96 Fixup lck75 line endings. 2021-02-04 14:13:47 +11:00
Drashna Jaelre
758891aa44 Fix line endings for LCK75 kb files (#11784) 2021-02-03 18:12:57 -08:00
QMK Bot
711388d3e3 Merge remote-tracking branch 'origin/master' into develop 2021-02-04 01:25:39 +00:00
Drashna Jaelre
780ca5565d Improve Pointing Device report sending (#11064)
* Improve Pointing Device report sending

* Hide old report behind preprocessors too

* put host_mouse_send() in curly brackets

* Remove POINTING_DEVICE_ALWAYS_SEND_REPORT functionality

* Fix typo

* fix function ref in docs

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

Co-authored-by: James Young <18669334+noroadsleft@users.noreply.github.com>
2021-02-03 17:25:05 -08:00
QMK Bot
1861ace7d2 Merge remote-tracking branch 'origin/master' into develop 2021-02-04 01:24:08 +00:00
im a can what do you think lmao?
420f6c4b2e [Keyboard] Add LCK75 keyboard (#11493)
* Add lck75 keyboard

A 75% THT keyboard with an OLED and rotary encoder

* added info.json

* fixed rules.mk

* changed vendor id

* Update keyboards/lck75/config.h

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

* Update keyboards/lck75/config.h

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

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

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

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

moved code to the rules.mk folder

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

* Update rules.mk

moved oled driver enable to rules.mk code

* Update keyboards/lck75/config.h

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

* Update oled.c

id like to keep the copyright there as it's my friend that helped me with the OLED specifically.  also updated the old_task_user

* Update keyboards/lck75/oled.c

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

* Update keyboards/lck75/rules.mk

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

* Update keyboards/lck75/rules.mk

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

* Update keyboards/lck75/rules.mk

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

* Update rules.mk

* merged oled.c code into keymap.c file

tested and works correctly on my board

* merged code from this file into the keymap.c file

this file is no longer needed

Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
2021-02-03 17:23:33 -08:00
QMK Bot
78f742d894 Merge remote-tracking branch 'origin/master' into develop 2021-02-03 23:24:36 +00:00
Andre DeMarre
63f4345f4c Use num lock instead of caps lock for KBDPAD MKII LED (#11781) 2021-02-04 10:24:05 +11:00
QMK Bot
53ccc1969f Merge remote-tracking branch 'origin/master' into develop 2021-02-03 21:19:07 +00:00
Matrix Zou
c5e29b25c4 Update iNETT Studio Square.X RGB Light (#11723)
* Add Caps Lock indicators support
* Fix 'a' flag error for RGB Light Mode
2021-02-03 13:18:36 -08:00
QMK Bot
ec652e291e Merge remote-tracking branch 'origin/master' into develop 2021-02-03 19:55:09 +00:00
Brandon Claveria
faa6c93648 [Keyboard] add koalafications (#11628)
* add koalafications

* fix keymap

* add oled

* oled stuff

* fix oled stuff

* add animation

* more oled stuff

* update rules.mk

* oled annimation

* change PID

* Update keyboards/handwired/swiftrax/koalafications/info.json

* Update keyboards/handwired/swiftrax/koalafications/readme.md
2021-02-03 11:54:30 -08:00
QMK Bot
a7e85240a8 Merge remote-tracking branch 'origin/master' into develop 2021-02-03 12:42:58 +00:00
Eithan Shavit
4779e2d56c Fixing layer order for Breeze default keymap (#11779) 2021-02-03 04:42:20 -08:00
QMK Bot
00b9ec088d Merge remote-tracking branch 'origin/master' into develop 2021-02-03 01:31:03 +00:00
Drashna Jaelre
c0de49e393 Fix DEBUG_MATRIX_SCAN_RATE on chibiOS when console is enabled (#11776)
* Fix DEBUG_MATRIX_SCAN_RATE on chibiOS when console is enabled

* update type in dprintf

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

Co-authored-by: Ryan <fauxpark@gmail.com>
2021-02-03 12:30:33 +11:00
QMK Bot
24b6c537f4 Merge remote-tracking branch 'origin/master' into develop 2021-02-02 20:49:33 +00:00
Drashna Jaelre
3bb66d1585 Clean up KBD8X keyboard (#11565)
* Clean up KBD8X keyboard

* remove unneeded rules
2021-02-02 12:49:02 -08:00
QMK Bot
16ab045e97 Merge remote-tracking branch 'origin/master' into develop 2021-02-02 19:04:51 +00:00
mrT1ddl3s
8fa2d43b38 Knobgoblin info file fix (#11697)
Co-authored-by: Ryan <fauxpark@gmail.com>
Co-authored-by: Drashna Jaelre <drashna@live.com>
2021-02-02 20:03:47 +01:00
QMK Bot
bc47d66f43 Merge remote-tracking branch 'origin/master' into develop 2021-02-02 05:52:30 +00:00
erikbakker-dev
80a9649c4f add orthodeluxe keymap for Planck keyboard (#11077)
* add orthodeluxe keymap for Planck keyboard

* add licence header to config.h

* fix indentation

* add bootmagic lite and simplify code
2021-02-02 16:52:00 +11:00
Joshua Diamond
9a4618b05b Address wake from sleep instability (#11450)
* resolve race condition between suspend and wake in LUFA

* avoid multiple calls to suspend_power_down() / suspend_wakeup_init()

* Remove duplicate suspend_power_down_kb() call

* pause on wakeup to wait for USB state to settle

* need the repeated suspend_power_down() (that's where the sleep is)

* more efficient implementation

* fine tune the pause after sending wakeup

* speculative chibios version of pause-after-wake

* make wakeup delay configurable, and adjust value

* better location for wakeup delay
2021-02-02 11:12:41 +11:00
QMK Bot
85079d6a2e Merge remote-tracking branch 'origin/master' into develop 2021-02-01 19:56:36 +00:00
Erovia
7db826dce8 CLI: Fix json flashing (#11765) 2021-02-01 20:55:35 +01:00
QMK Bot
193a9a97fe Merge remote-tracking branch 'origin/master' into develop 2021-02-01 18:59:18 +00:00
Carlos
d712670922 Fix Ergosaurus default RGB_DI_PIN (#11634)
* Update RGB_DI_PIN to match breakout on pcb

* Wrap in safer define check
2021-02-01 10:58:18 -08:00
QMK Bot
a524c8c806 Merge remote-tracking branch 'origin/master' into develop 2021-02-01 11:05:50 +00:00
Jay Greco
588fd8c2d0 [Keyboard] Add nullbitsco SCRAMBLE (#11078)
* Add SCRAMBLE

* Make requested changes to PR

* Add all layers to VIA keymap

Implement drashna's PR feedback in order to avoid random data within the layers in VIA.

* Make requested changes to PR

Implement fauxpark's PR feedback to clean up readme.md and rules.mk.

* Make changes based on PR feedback

-Changed VIA layers to enum
-Added info on how to enter the bootloader to readme
2021-02-01 03:05:10 -08:00
QMK Bot
830b795ee3 Merge remote-tracking branch 'origin/master' into develop 2021-02-01 09:18:24 +00:00
cole smith
3f91b2b8f8 added limit to RGB brightness (#11759) 2021-02-01 20:17:49 +11:00
Drashna Jaelre
9591e992cc Move transport.c to QUANTUM_LIB_SRC (#11751) 2021-02-01 20:12:52 +11:00
QMK Bot
dca4388056 Merge remote-tracking branch 'origin/master' into develop 2021-02-01 03:52:18 +00:00
umi
72f9c4c0d3 [Docs] Japanese translation of internals_*.md (#10316)
* add git checkout internals_related.md translation

* update based on comment

* unify the end of sentence
2021-02-01 12:51:46 +09:00
Joshua Diamond
ae4ee7553a Stop sounds when suspended (#11553)
* fix stopping audio on suspend vs. startup sound

* trim firmware size

* fix stuck audio on startup (ARM)
2021-02-01 09:25:55 +11:00
Nick Brassel
db11a2a1fd Decouple USB events from the USB interrupt handler. (#10437) 2021-02-01 08:19:00 +11:00
QMK Bot
0fa2e7c790 Merge remote-tracking branch 'origin/master' into develop 2021-01-31 21:18:46 +00:00
Ryan
6bec7fb3fe quantum.c send char cleanups (#11743) 2021-02-01 08:18:10 +11:00
Zach White
ef6329af7c Create a system to map between info.json and config.h/rules.mk (#11548)
* generate rules.mk from a json mapping

* generate rules.mk from a json mapping

* support for config.h from json maps

* improve the mapping system

* document the mapping system

* move data/maps to data/mappings

* fix flake8 errors

* fixup LED_MATRIX_DRIVER

* remove product and description from the vision_division keymap level

* reduce the complexity of generate-rules-mk

* add tests for the generate commands

* fix qmk doctor when submodules are not clean
2021-01-31 12:46:00 -08:00
5983 changed files with 197412 additions and 46872 deletions

1
.gitattributes vendored
View File

@@ -92,3 +92,4 @@ GRAPHICS
# hex files
*.hex binary
*.eep binary
nix/sources.nix linguist-generated=true

View File

@@ -25,18 +25,13 @@ jobs:
- name: Generate API Data
run: qmk generate-api
- name: Install rsync
run: |
apt-get update && apt-get install -y rsync
- name: Upload API Data
uses: JamesIves/github-pages-deploy-action@3.7.1
uses: jakejarvis/s3-sync-action@master
with:
ACCESS_TOKEN: ${{ secrets.API_TOKEN_GITHUB }}
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
BRANCH: main
FOLDER: api_data/v1
CLEAN: true
GIT_CONFIG_EMAIL: hello@qmk.fm
REPOSITORY_NAME: qmk/qmk_keyboards
TARGET_FOLDER: v1
args: --acl public-read --follow-symlinks --delete
env:
AWS_S3_BUCKET: ${{ secrets.API_SPACE_MASTER }}
AWS_ACCESS_KEY_ID: ${{ secrets.SPACES_ACCESS_KEY }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.SPACES_SECRET_KEY }}
AWS_S3_ENDPOINT: https://nyc3.digitaloceanspaces.com
SOURCE_DIR: 'api_data'

View File

@@ -23,6 +23,6 @@ jobs:
with:
submodules: recursive
- name: Install dependencies
run: pip3 install -r requirements.txt
run: pip3 install -r requirements-dev.txt
- name: Run tests
run: bin/qmk pytest

View File

@@ -25,18 +25,13 @@ jobs:
- name: Generate API Data
run: qmk generate-api
- name: Install rsync
run: |
apt-get update && apt-get install -y rsync
- name: Upload API Data
uses: JamesIves/github-pages-deploy-action@3.7.1
uses: jakejarvis/s3-sync-action@master
with:
ACCESS_TOKEN: ${{ secrets.API_TOKEN_GITHUB }}
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
BRANCH: main
FOLDER: api_data/v1
CLEAN: true
GIT_CONFIG_EMAIL: hello@qmk.fm
REPOSITORY_NAME: qmk/qmk_keyboards_devel
TARGET_FOLDER: v1
args: --acl public-read --follow-symlinks --delete
env:
AWS_S3_BUCKET: ${{ secrets.API_SPACE_DEVELOP }}
AWS_ACCESS_KEY_ID: ${{ secrets.SPACES_ACCESS_KEY }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.SPACES_SECRET_KEY }}
AWS_S3_ENDPOINT: https://nyc3.digitaloceanspaces.com
SOURCE_DIR: 'api_data'

View File

@@ -1,37 +1,42 @@
name: Format Codebase
name: PR Lint Format
on:
push:
branches:
- master
pull_request:
paths:
- 'drivers/**'
- 'lib/arm_atsam/**'
- 'lib/lib8tion/**'
- 'lib/python/**'
- 'platforms/**'
- 'quantum/**'
- 'tests/**'
- 'tmk_core/**'
jobs:
format:
lint:
runs-on: ubuntu-latest
container: qmkfm/base_container
# protect against those who develop with their fork on master
if: github.repository == 'qmk/qmk_firmware'
steps:
- uses: rlespinasse/github-slug-action@v3.x
- uses: actions/checkout@v2
with:
token: ${{ secrets.API_TOKEN_GITHUB }}
fetch-depth: 0
- name: Install dependencies
run: |
apt-get update && apt-get install -y dos2unix
- name: Format files
run: |
bin/qmk cformat -a
bin/qmk pyformat
bin/qmk fileformat
- name: Commit files
uses: stefanzweifel/git-auto-commit-action@v4
- uses: trilom/file-changes-action@v1.2.4
id: file_changes
with:
commit_message: Format code according to conventions for $GITHUB_SHA
commit_user_name: QMK Bot
commit_user_email: hello@qmk.fm
commit_author: QMK Bot <hello@qmk.fm>
output: ' '
fileOutput: ' '
- name: Run qmk cformat and qmk pyformat
shell: 'bash {0}'
run: |
qmk cformat --core-only -n $(< ~/files.txt)
cformat_exit=$?
qmk pyformat -n
pyformat_exit=$?
exit $((cformat_exit + pyformat_exit))

3
.gitignore vendored
View File

@@ -5,6 +5,7 @@
*.eep
*.elf
*.hex
*.uf2
*.qmk
!util/bootloader.hex
!quantum/tools/eeprom_reset.hex
@@ -50,6 +51,7 @@ doxygen/
.browse.VC.db*
*.stackdump
# Let these ones be user specific, since we have so many different configurations
*.code-workspace
.vscode/c_cpp_properties.json
.vscode/launch.json
.vscode/tasks.json
@@ -71,6 +73,7 @@ id_rsa_*
# python things
__pycache__
.python-version
# prerequisites for updating ChibiOS
/util/fmpp*

View File

@@ -29,6 +29,13 @@ $(info QMK Firmware $(QMK_VERSION))
endif
endif
# Determine which qmk cli to use
ifeq (,$(shell which qmk))
QMK_BIN = bin/qmk
else
QMK_BIN = qmk
endif
# avoid 'Entering|Leaving directory' messages
MAKEFLAGS += --no-print-directory
@@ -86,8 +93,8 @@ clean:
.PHONY: distclean
distclean: clean
echo -n 'Deleting *.bin and *.hex ... '
rm -f *.bin *.hex
echo -n 'Deleting *.bin, *.hex, and *.uf2 ... '
rm -f *.bin *.hex *.uf2
echo 'done.'
#Compatibility with the old make variables, anything you specify directly on the command line
@@ -384,7 +391,7 @@ define PARSE_KEYMAP
# Format it in bold
KB_SP := $(BOLD)$$(KB_SP)$(NO_COLOR)
# Specify the variables that we are passing forward to submake
MAKE_VARS := KEYBOARD=$$(CURRENT_KB) KEYMAP=$$(CURRENT_KM) REQUIRE_PLATFORM_KEY=$$(REQUIRE_PLATFORM_KEY)
MAKE_VARS := KEYBOARD=$$(CURRENT_KB) KEYMAP=$$(CURRENT_KM) REQUIRE_PLATFORM_KEY=$$(REQUIRE_PLATFORM_KEY) QMK_BIN=$$(QMK_BIN)
# And the first part of the make command
MAKE_CMD := $$(MAKE) -r -R -C $(ROOT_DIR) -f build_keyboard.mk $$(MAKE_TARGET)
# The message to display
@@ -501,8 +508,8 @@ endef
%:
# Check if we have the CMP tool installed
cmp $(ROOT_DIR)/Makefile $(ROOT_DIR)/Makefile >/dev/null 2>&1; if [ $$? -gt 0 ]; then printf "$(MSG_NO_CMP)"; exit 1; fi;
# Ensure that bin/qmk works.
if ! bin/qmk hello 1> /dev/null 2>&1; then printf "$(MSG_PYTHON_MISSING)"; exit 1; fi
# Ensure that $(QMK_BIN) works.
if ! $(QMK_BIN) hello 1> /dev/null 2>&1; then printf "$(MSG_PYTHON_MISSING)"; exit 1; fi
# Check if the submodules are dirty, and display a warning if they are
ifndef SKIP_GIT
if [ ! -e lib/chibios ]; then git submodule sync lib/chibios && git submodule update --depth 50 --init lib/chibios; fi

46
bin/qmk
View File

@@ -3,7 +3,6 @@
"""
import os
import sys
from importlib.util import find_spec
from pathlib import Path
# Add the QMK python libs to our path
@@ -12,51 +11,9 @@ qmk_dir = script_dir.parent
python_lib_dir = Path(qmk_dir / 'lib' / 'python').resolve()
sys.path.append(str(python_lib_dir))
def _check_modules(requirements):
""" Check if the modules in the given requirements.txt are available.
"""
with Path(qmk_dir / requirements).open() as fd:
for line in fd.readlines():
line = line.strip().replace('<', '=').replace('>', '=')
if len(line) == 0 or line[0] == '#' or line.startswith('-r'):
continue
if '#' in line:
line = line.split('#')[0]
module = dict()
module['name'] = module['import'] = line.split('=')[0] if '=' in line else line
# Not every module is importable by its own name.
if module['name'] == "pep8-naming":
module['import'] = "pep8ext_naming"
if not find_spec(module['import']):
print('Could not find module %s!' % module['name'])
print('Please run `python3 -m pip install -r %s` to install required python dependencies.' % (qmk_dir / requirements,))
if developer:
print('You can also turn off developer mode: qmk config user.developer=None')
print()
exit(255)
developer = False
# Make sure our modules have been setup
_check_modules('requirements.txt')
# Setup the CLI
import milc # noqa
# For developers additional modules are needed
if milc.cli.config.user.developer:
# Do not run the check for 'config',
# so users can turn off developer mode
if len(sys.argv) == 1 or (len(sys.argv) > 1 and 'config' != sys.argv[1]):
developer = True
_check_modules('requirements-dev.txt')
milc.EMOJI_LOGLEVELS['INFO'] = '{fg_blue}Ψ{style_reset_all}'
@@ -72,8 +29,11 @@ def main():
"""
# Change to the root of our checkout
os.environ['ORIG_CWD'] = os.getcwd()
os.environ['DEPRECATED_BIN_QMK'] = '1'
os.chdir(qmk_dir)
print('Warning: The bin/qmk script is being deprecated. Please install the QMK CLI: python3 -m pip install qmk', file=sys.stderr)
# Import the subcommands
import qmk.cli # noqa

View File

@@ -89,11 +89,13 @@ ifeq ($(strip $(BOOTLOADER)), USBasp)
BOOTLOADER_SIZE = 4096
endif
ifeq ($(strip $(BOOTLOADER)), lufa-ms)
# DO NOT USE THIS BOOTLOADER IN NEW PROJECTS!
# It is extremely prone to bricking, and is only included to support existing boards.
OPT_DEFS += -DBOOTLOADER_MS
BOOTLOADER_SIZE = 6144
FIRMWARE_FORMAT = bin
$(info LUFA MASS STORAGE Bootloader selected)
$(info DO NOT USE THIS BOOTLOADER IN NEW PROJECTS!)
$(info It is extremely prone to bricking, and is only included to support existing boards.)
$(info )
endif
ifdef BOOTLOADER_SIZE
OPT_DEFS += -DBOOTLOADER_SIZE=$(strip $(BOOTLOADER_SIZE))
@@ -137,3 +139,6 @@ ifeq ($(strip $(BOOTLOADER)), stm32duino)
DFU_ARGS = -d 1EAF:0003 -a 2 -R
DFU_SUFFIX_ARGS = -v 1EAF -p 0003
endif
ifeq ($(strip $(BOOTLOADER)), tinyuf2)
OPT_DEFS += -DBOOTLOADER_TINYUF2
endif

View File

@@ -28,4 +28,4 @@ endif
# Generate the keymap.c
$(KEYBOARD_OUTPUT)/src/keymap.c: $(KEYMAP_JSON)
bin/qmk json2c --quiet --output $(KEYMAP_C) $(KEYMAP_JSON)
$(QMK_BIN) json2c --quiet --output $(KEYMAP_C) $(KEYMAP_JSON)

View File

@@ -12,6 +12,9 @@ endif
include common.mk
# Set the qmk cli to use
QMK_BIN ?= qmk
# Set the filename for the final firmware binary
KEYBOARD_FILESAFE := $(subst /,_,$(KEYBOARD))
TARGET ?= $(KEYBOARD_FILESAFE)_$(KEYMAP)
@@ -97,7 +100,7 @@ MAIN_KEYMAP_PATH_4 := $(KEYBOARD_PATH_4)/keymaps/$(KEYMAP)
MAIN_KEYMAP_PATH_5 := $(KEYBOARD_PATH_5)/keymaps/$(KEYMAP)
# Pull in rules from info.json
INFO_RULES_MK = $(shell bin/qmk generate-rules-mk --quiet --keyboard $(KEYBOARD) --output $(KEYBOARD_OUTPUT)/src/rules.mk)
INFO_RULES_MK = $(shell $(QMK_BIN) generate-rules-mk --quiet --escape --keyboard $(KEYBOARD) --output $(KEYBOARD_OUTPUT)/src/rules.mk)
include $(INFO_RULES_MK)
# Check for keymap.json first, so we can regenerate keymap.c
@@ -205,6 +208,7 @@ endif
#
# https://docs.qmk.fm/#/feature_layouts?id=tips-for-making-layouts-keyboard-agnostic
#
QMK_KEYBOARD_H = $(KEYBOARD_OUTPUT)/src/default_keyboard.h
ifneq ("$(wildcard $(KEYBOARD_PATH_1)/$(KEYBOARD_FOLDER_1).h)","")
QMK_KEYBOARD_H = $(KEYBOARD_FOLDER_1).h
endif
@@ -294,12 +298,15 @@ endif
CONFIG_H += $(KEYBOARD_OUTPUT)/src/info_config.h $(KEYBOARD_OUTPUT)/src/layouts.h
$(KEYBOARD_OUTPUT)/src/info_config.h: $(INFO_JSON_FILES)
bin/qmk generate-config-h --quiet --keyboard $(KEYBOARD) --output $(KEYBOARD_OUTPUT)/src/info_config.h
$(QMK_BIN) generate-config-h --quiet --keyboard $(KEYBOARD) --output $(KEYBOARD_OUTPUT)/src/info_config.h
$(KEYBOARD_OUTPUT)/src/default_keyboard.h: $(INFO_JSON_FILES)
$(QMK_BIN) generate-keyboard-h --quiet --keyboard $(KEYBOARD) --output $(KEYBOARD_OUTPUT)/src/default_keyboard.h
$(KEYBOARD_OUTPUT)/src/layouts.h: $(INFO_JSON_FILES)
bin/qmk generate-layouts --quiet --keyboard $(KEYBOARD) --output $(KEYBOARD_OUTPUT)/src/layouts.h
$(QMK_BIN) generate-layouts --quiet --keyboard $(KEYBOARD) --output $(KEYBOARD_OUTPUT)/src/layouts.h
generated-files: $(KEYBOARD_OUTPUT)/src/info_config.h $(KEYBOARD_OUTPUT)/src/layouts.h
generated-files: $(KEYBOARD_OUTPUT)/src/info_config.h $(KEYBOARD_OUTPUT)/src/default_keyboard.h $(KEYBOARD_OUTPUT)/src/layouts.h
.INTERMEDIATE : generated-files

View File

@@ -17,6 +17,8 @@ SERIAL_PATH := $(QUANTUM_PATH)/serial_link
QUANTUM_SRC += \
$(QUANTUM_DIR)/quantum.c \
$(QUANTUM_DIR)/send_string.c \
$(QUANTUM_DIR)/bitwise.c \
$(QUANTUM_DIR)/led.c \
$(QUANTUM_DIR)/keymap_common.c \
$(QUANTUM_DIR)/keycode_config.c
@@ -36,12 +38,36 @@ ifeq ($(strip $(API_SYSEX_ENABLE)), yes)
SRC += $(QUANTUM_DIR)/api.c
endif
ifeq ($(strip $(COMMAND_ENABLE)), yes)
SRC += $(QUANTUM_DIR)/command.c
OPT_DEFS += -DCOMMAND_ENABLE
endif
AUDIO_ENABLE ?= no
ifeq ($(strip $(AUDIO_ENABLE)), yes)
ifeq ($(PLATFORM),CHIBIOS)
AUDIO_DRIVER ?= dac_basic
ifeq ($(strip $(AUDIO_DRIVER)), dac_basic)
OPT_DEFS += -DAUDIO_DRIVER_DAC
else ifeq ($(strip $(AUDIO_DRIVER)), dac_additive)
OPT_DEFS += -DAUDIO_DRIVER_DAC
## stm32f2 and above have a usable DAC unit, f1 do not, and need to use pwm instead
else ifeq ($(strip $(AUDIO_DRIVER)), pwm_software)
OPT_DEFS += -DAUDIO_DRIVER_PWM
else ifeq ($(strip $(AUDIO_DRIVER)), pwm_hardware)
OPT_DEFS += -DAUDIO_DRIVER_PWM
endif
else
# fallback for all other platforms is pwm
AUDIO_DRIVER ?= pwm_hardware
OPT_DEFS += -DAUDIO_DRIVER_PWM
endif
OPT_DEFS += -DAUDIO_ENABLE
MUSIC_ENABLE = yes
SRC += $(QUANTUM_DIR)/process_keycode/process_audio.c
SRC += $(QUANTUM_DIR)/process_keycode/process_clicky.c
SRC += $(QUANTUM_DIR)/audio/audio_$(PLATFORM_KEY).c
SRC += $(QUANTUM_DIR)/audio/audio.c ## common audio code, hardware agnostic
SRC += $(QUANTUM_DIR)/audio/driver_$(PLATFORM_KEY)_$(strip $(AUDIO_DRIVER)).c
SRC += $(QUANTUM_DIR)/audio/voices.c
SRC += $(QUANTUM_DIR)/audio/luts.c
endif
@@ -74,9 +100,10 @@ ifeq ($(strip $(VIRTSER_ENABLE)), yes)
OPT_DEFS += -DVIRTSER_ENABLE
endif
ifeq ($(strip $(FAUXCLICKY_ENABLE)), yes)
OPT_DEFS += -DFAUXCLICKY_ENABLE
SRC += $(QUANTUM_DIR)/fauxclicky.c
ifeq ($(strip $(MOUSEKEY_ENABLE)), yes)
OPT_DEFS += -DMOUSEKEY_ENABLE
OPT_DEFS += -DMOUSE_ENABLE
SRC += $(QUANTUM_DIR)/mousekey.c
endif
ifeq ($(strip $(POINTING_DEVICE_ENABLE)), yes)
@@ -135,7 +162,7 @@ else
# This ensures that the EEPROM page buffer fits into RAM
USE_PROCESS_STACKSIZE = 0x600
USE_EXCEPTIONS_STACKSIZE = 0x300
SRC += $(PLATFORM_COMMON_DIR)/eeprom_stm32.c
SRC += $(PLATFORM_COMMON_DIR)/flash_stm32.c
OPT_DEFS += -DEEPROM_EMU_STM32F042x6
@@ -190,21 +217,23 @@ ifeq ($(strip $(RGBLIGHT_ENABLE)), yes)
endif
endif
LED_MATRIX_ENABLE ?= no
VALID_LED_MATRIX_TYPES := IS31FL3731 custom
# TODO: IS31FL3733 IS31FL3737 IS31FL3741
ifeq ($(strip $(LED_MATRIX_ENABLE)), yes)
ifeq ($(filter $(LED_MATRIX_DRIVER),$(VALID_LED_MATRIX_TYPES)),)
$(error LED_MATRIX_DRIVER="$(LED_MATRIX_DRIVER)" is not a valid matrix type)
else
BACKLIGHT_ENABLE = yes
BACKLIGHT_DRIVER = custom
OPT_DEFS += -DLED_MATRIX_ENABLE
SRC += $(QUANTUM_DIR)/led_matrix.c
SRC += $(QUANTUM_DIR)/led_matrix_drivers.c
$(error "$(LED_MATRIX_DRIVER)" is not a valid matrix type)
endif
OPT_DEFS += -DLED_MATRIX_ENABLE
ifneq (,$(filter $(MCU), atmega16u2 atmega32u2 at90usb162))
# ATmegaxxU2 does not have hardware MUL instruction - lib8tion must be told to use software multiplication routines
OPT_DEFS += -DLIB8_ATTINY
endif
SRC += $(QUANTUM_DIR)/process_keycode/process_backlight.c
SRC += $(QUANTUM_DIR)/led_matrix.c
SRC += $(QUANTUM_DIR)/led_matrix_drivers.c
CIE1931_CURVE := yes
ifeq ($(strip $(LED_MATRIX_DRIVER)), IS31FL3731)
OPT_DEFS += -DIS31FL3731 -DSTM32_I2C -DHAL_USE_I2C=TRUE
@@ -321,7 +350,11 @@ endif
VALID_BACKLIGHT_TYPES := pwm timer software custom
BACKLIGHT_ENABLE ?= no
BACKLIGHT_DRIVER ?= pwm
ifeq ($(strip $(CONVERT_TO_PROTON_C)), yes)
BACKLIGHT_DRIVER ?= software
else
BACKLIGHT_DRIVER ?= pwm
endif
ifeq ($(strip $(BACKLIGHT_ENABLE)), yes)
ifeq ($(filter $(BACKLIGHT_DRIVER),$(VALID_BACKLIGHT_TYPES)),)
$(error BACKLIGHT_DRIVER="$(BACKLIGHT_DRIVER)" is not a valid backlight type)
@@ -396,10 +429,6 @@ ifeq ($(strip $(TERMINAL_ENABLE)), yes)
OPT_DEFS += -DUSER_PRINT
endif
ifeq ($(strip $(USB_HID_ENABLE)), yes)
include $(TMK_DIR)/protocol/usb_hid.mk
endif
ifeq ($(strip $(WPM_ENABLE)), yes)
SRC += $(QUANTUM_DIR)/wpm.c
OPT_DEFS += -DWPM_ENABLE
@@ -433,6 +462,23 @@ ifeq ($(strip $(DIP_SWITCH_ENABLE)), yes)
SRC += $(QUANTUM_DIR)/dip_switch.c
endif
VALID_MAGIC_TYPES := yes full lite
BOOTMAGIC_ENABLE ?= no
ifneq ($(strip $(BOOTMAGIC_ENABLE)), no)
ifeq ($(filter $(BOOTMAGIC_ENABLE),$(VALID_MAGIC_TYPES)),)
$(error BOOTMAGIC_ENABLE="$(BOOTMAGIC_ENABLE)" is not a valid type of magic)
endif
ifneq ($(strip $(BOOTMAGIC_ENABLE)), full)
OPT_DEFS += -DBOOTMAGIC_LITE
QUANTUM_SRC += $(QUANTUM_DIR)/bootmagic/bootmagic_lite.c
else
OPT_DEFS += -DBOOTMAGIC_ENABLE
QUANTUM_SRC += $(QUANTUM_DIR)/bootmagic/bootmagic_full.c
endif
endif
COMMON_VPATH += $(QUANTUM_DIR)/bootmagic
QUANTUM_SRC += $(QUANTUM_DIR)/bootmagic/magic.c
VALID_CUSTOM_MATRIX_TYPES:= yes lite no
CUSTOM_MATRIX ?= no
@@ -483,7 +529,7 @@ ifeq ($(strip $(SPLIT_KEYBOARD)), yes)
# Determine which (if any) transport files are required
ifneq ($(strip $(SPLIT_TRANSPORT)), custom)
QUANTUM_SRC += $(QUANTUM_DIR)/split_common/transport.c
QUANTUM_LIB_SRC += $(QUANTUM_DIR)/split_common/transport.c
# Functions added via QUANTUM_LIB_SRC are only included in the final binary if they're called.
# Unused functions are pruned away, which is why we can add multiple drivers here without bloat.
ifeq ($(PLATFORM),AVR)
@@ -624,3 +670,27 @@ endif
ifeq ($(strip $(JOYSTICK_ENABLE)), digital)
OPT_DEFS += -DDIGITAL_JOYSTICK_ENABLE
endif
USBPD_ENABLE ?= no
VALID_USBPD_DRIVER_TYPES = custom vendor
USBPD_DRIVER ?= vendor
ifeq ($(strip $(USBPD_ENABLE)), yes)
ifeq ($(filter $(strip $(USBPD_DRIVER)),$(VALID_USBPD_DRIVER_TYPES)),)
$(error USBPD_DRIVER="$(USBPD_DRIVER)" is not a valid USBPD driver)
else
OPT_DEFS += -DUSBPD_ENABLE
ifeq ($(strip $(USBPD_DRIVER)), vendor)
# Vendor-specific implementations
OPT_DEFS += -DUSBPD_VENDOR
ifeq ($(strip $(MCU_SERIES)), STM32G4xx)
OPT_DEFS += -DUSBPD_STM32G4
SRC += usbpd_stm32g4.c
else
$(error There is no vendor-provided USBPD driver available)
endif
else ifeq ($(strip $(USBPD_DRIVER)), custom)
OPT_DEFS += -DUSBPD_CUSTOM
# Board designers can add their own driver to $(SRC)
endif
endif
endif

View File

@@ -0,0 +1,46 @@
# This file maps keys between `config.h` and `info.json`. It is used by QMK
# to correctly and consistently map back and forth between the two systems.
{
# Format:
# <config.h key>: {"info_key": <info.json key>, ["value_type": <value_type>], ["to_json": <true/false>], ["to_c": <true/false>]}
# value_type: one of "array", "array.int", "int", "hex", "list", "mapping"
# to_json: Default `true`. Set to `false` to exclude this mapping from info.json
# to_c: Default `true`. Set to `false` to exclude this mapping from config.h
# warn_duplicate: Default `true`. Set to `false` to turn off warning when a value exists in both places
"DEBOUNCE": {"info_key": "debounce", "value_type": "int"}
"DEVICE_VER": {"info_key": "usb.device_ver", "value_type": "hex"},
"DESCRIPTION": {"info_key": "keyboard_folder", "to_json": false},
"DIODE_DIRECTION": {"info_key": "diode_direction"},
"LAYOUTS": {"info_key": "layout_aliases", "value_type": "mapping"},
"LED_CAPS_LOCK_PIN": {"info_key": "indicators.caps_lock"},
"LED_NUM_LOCK_PIN": {"info_key": "indicators.num_lock"},
"LED_SCROLL_LOCK_PIN": {"info_key": "indicators.scroll_lock"},
"MANUFACTURER": {"info_key": "manufacturer"},
"RGB_DI_PIN": {"info_key": "rgblight.pin"},
"RGBLED_NUM": {"info_key": "rgblight.led_count", "value_type": "int"},
"RGBLED_SPLIT": {"info_key": "rgblight.split_count", "value_type": "array.int"},
"RGBLIGHT_ANIMATIONS": {"info_key": "rgblight.animations.all", "value_type": "bool"},
"RGBLIGHT_EFFECT_ALTERNATING": {"info_key": "rgblight.animations.alternating", "value_type": "bool"},
"RGBLIGHT_EFFECT_BREATHING": {"info_key": "rgblight.animations.breathing", "value_type": "bool"},
"RGBLIGHT_EFFECT_CHRISTMAS": {"info_key": "rgblight.animations.christmas", "value_type": "bool"},
"RGBLIGHT_EFFECT_KNIGHT": {"info_key": "rgblight.animations.knight", "value_type": "bool"},
"RGBLIGHT_EFFECT_RAINBOW_MOOD": {"info_key": "rgblight.animations.rainbow_mood", "value_type": "bool"},
"RGBLIGHT_EFFECT_RAINBOW_SWIRL": {"info_key": "rgblight.animations.rainbow_swirl", "value_type": "bool"},
"RGBLIGHT_EFFECT_RGB_TEST": {"info_key": "rgblight.animations.rgb_test", "value_type": "bool"},
"RGBLIGHT_EFFECT_SNAKE": {"info_key": "rgblight.animations.snake", "value_type": "bool"},
"RGBLIGHT_EFFECT_STATIC_GRADIENT": {"info_key": "rgblight.animations.static_gradient", "value_type": "bool"},
"RGBLIGHT_EFFECT_TWINKLE": {"info_key": "rgblight.animations.twinkle"},
"RGBLIGHT_LIMIT_VAL": {"info_key": "rgblight.max_brightness", "value_type": "int"},
"RGBLIGHT_HUE_STEP": {"info_key": "rgblight.hue_steps", "value_type": "int"},
"RGBLIGHT_SAT_STEP": {"info_key": "rgblight.saturation_steps", "value_type": "int"},
"RGBLIGHT_VAL_STEP": {"info_key": "rgblight.brightness_steps", "value_type": "int"},
"RGBLIGHT_SLEEP": {"info_key": "rgblight.sleep", "value_type": "bool"},
"RGBLIGHT_SPLIT": {"info_key": "rgblight.split", "value_type": "bool"},
"PRODUCT": {"info_key": "keyboard_folder", "to_json": false},
"PRODUCT_ID": {"info_key": "usb.pid", "value_type": "hex"},
"VENDOR_ID": {"info_key": "usb.vid", "value_type": "hex"},
"QMK_ESC_OUTPUT": {"info_key": "qmk_lufa_bootloader.esc_output"},
"QMK_ESC_INPUT": {"info_key": "qmk_lufa_bootloader.esc_input"},
"QMK_LED": {"info_key": "qmk_lufa_bootloader.led"},
"QMK_SPEAKER": {"info_key": "qmk_lufa_bootloader.speaker"}
}

View File

@@ -0,0 +1,15 @@
# This file maps keys between `rules.mk` and `info.json`. It is used by QMK
# to correctly and consistently map back and forth between the two systems.
{
# Format:
# <rules.mk key>: {"info_key": <info.json key>, ["value_type": <value_type>], ["to_json": <true/false>], ["to_c": <true/false>]}
# value_type: one of "array", "array.int", "int", "list", "hex", "mapping"
# to_json: Default `true`. Set to `false` to exclude this mapping from info.json
# to_c: Default `true`. Set to `false` to exclude this mapping from rules.mk
# warn_duplicate: Default `true`. Set to `false` to turn off warning when a value exists in both places
"BOARD": {"info_key": "board"},
"BOOTLOADER": {"info_key": "bootloader", "warn_duplicate": false},
"LAYOUTS": {"info_key": "community_layouts", "value_type": "list"},
"LED_MATRIX_DRIVER": {"info_key": "led_matrix.driver"},
"MCU": {"info_key": "processor", "warn_duplicate": false},
}

View File

@@ -0,0 +1,443 @@
{
# Format for each entry:
# <alias>: {
# target: <keyboard_folder>,
# layouts: {
# <layout_alias>: <layout_target>
# }
# }
#
# Both target and layouts are optional.
'2_milk': {
target: 'spaceman/2_milk'
},
'aeboards/ext65': {
target: 'aeboards/ext65/rev1'
},
'ai03/equinox': {
target: 'ai03/equinox/rev1'
},
aleth42: {
target: 'aleth42/rev1'
},
alice: {
target: 'tgr/alice'
},
angel17: {
target: 'angel17/alpha'
},
angel64: {
target: 'angel64/alpha'
},
at101_blackheart: {
target: 'at101_bh'
},
'atom47/rev2': {
target: 'maartenwut/atom47/rev2'
},
'atom47/rev3': {
target: 'maartenwut/atom47/rev3'
},
bear_face: {
target: 'bear_face/v1'
},
'bpiphany/pegasushoof': {
target: 'bpiphany/pegasushoof/2013'
},
chavdai40: {
target: 'chavdai40/rev1'
},
'candybar/lefty': {
target: 'tkc/candybar/lefty'
},
'candybar/righty': {
target: 'tkc/candybar/righty'
},
canoe: {
target: 'percent/canoe'
},
'cmm_studio/saka68': {
target: 'cmm_studio/saka68/solder'
},
'crkbd/rev1': {
target: 'crkbd/rev1/legacy'
},
'doro67/multi': {
layouts: {
LAYOUT_ansi: 'LAYOUT_65_ansi_blocker'
}
},
'doro67/regular': {
layouts: {
LAYOUT: 'LAYOUT_65_ansi_blocker'
}
},
'doro67/rgb': {
layouts: {
LAYOUT: 'LAYOUT_65_ansi_blocker'
}
},
drakon: {
target: 'jagdpietr/drakon'
},
'dztech/dz60rgb': {
target: 'dztech/dz60rgb/v1'
},
'dztech/dz60rgb_ansi': {
target: 'dztech/dz60rgb_ansi/v1'
},
'dztech/dz60rgb_wkl': {
target: 'dztech/dz60rgb_wkl/v1'
},
'dztech/dz65rgb': {
target: 'dztech/dz65rgb/v1'
},
eek: {
target: 'eek/silk_down'
},
ergoinu: {
target: 'dm9records/ergoinu'
},
'exclusive/e85': {
target: 'exclusive/e85/hotswap'
},
gh60: {
target: 'gh60/revc'
},
'handwired/ferris': {
target: 'ferris/0_1'
},
'helix/pico/sc/back': {
target: 'helix/pico/sc'
},
'helix/pico/sc/under': {
target: 'helix/pico/sc'
},
'helix/rev2/back/oled': {
target: 'helix/rev2/back'
},
'helix/rev2/oled': {
target: 'helix/rev2'
},
'helix/rev2/oled/back': {
target: 'helix/rev2/back'
},
'helix/rev2/oled/under': {
target: 'helix/rev2/under'
},
'helix/rev2/sc/back': {
target: 'helix/rev2/sc'
},
'helix/rev2/sc/oled': {
target: 'helix/rev2/sc'
},
'helix/rev2/sc/oledback': {
target: 'helix/rev2/sc'
},
'helix/rev2/sc/oledunder': {
target: 'helix/rev2/sc'
},
'helix/rev2/sc/under': {
target: 'helix/rev2/sc'
},
'helix/rev2/under': {
target: 'helix/rev2/sc'
},
'helix/rev2/under/oled': {
target: 'helix/rev2/under'
},
id80: {
target: 'id80/ansi'
},
idb_60: {
target: 'idb/idb_60',
layouts: {
LAYOUT: 'LAYOUT_all'
}
},
jones: {
target: 'jones/v03_1'
},
katana60: {
target: 'rominronin/katana60/rev1'
},
'kbdfans/kbd67mkiirgb': {
target: 'kbdfans/kbd67/mkiirgb',
layouts: {
LAYOUT: 'LAYOUT_65_ansi_blocker'
}
},
'kbdfans/kbd67/mkiirgb': {
target: 'kbdfans/kbd67/mkiirgb/v1'
},
'keebio/dsp40': {
target: 'keebio/dsp40/rev1'
},
'keycapsss/plaid_pad': {
target: 'keycapsss/plaid_pad/rev1'
},
kudox: {
target: 'kudox/rev1'
},
'lfkeyboards/lfk78': {
target: 'lfkeyboards/lfk78/revj'
},
'lfkeyboards/smk65': {
target: 'lfkeyboards/smk65/revb'
},
'maartenwut/atom47/rev2': {
target: 'evyd13/atom47/rev2'
},
'maartenwut/atom47/rev3': {
target: 'evyd13/atom47/rev3'
},
'maartenwut/eon40': {
target: 'evyd13/eon40'
},
'maartenwut/eon65': {
target: 'evyd13/eon65'
},
'maartenwut/eon75': {
target: 'evyd13/eon75'
},
'maartenwut/eon87': {
target: 'evyd13/eon87'
},
'maartenwut/eon95': {
target: 'evyd13/eon95'
},
'maartenwut/gh80_1800': {
target: 'evyd13/gh80_1800'
},
'maartenwut/gh80_3700': {
target: 'evyd13/gh80_3700'
},
'maartenwut/minitomic': {
target: 'evyd13/minitomic'
},
'maartenwut/mx5160': {
target: 'evyd13/mx5160'
},
'maartenwut/nt660': {
target: 'evyd13/nt660'
},
'maartenwut/omrontkl': {
target: 'evyd13/omrontkl'
},
'maartenwut/plain60': {
target: 'evyd13/plain60'
},
'maartenwut/pockettype': {
target: 'evyd13/pockettype'
},
'maartenwut/quackfire': {
target: 'evyd13/quackfire'
},
'maartenwut/solheim68': {
target: 'evyd13/solheim68'
},
'maartenwut/ta65': {
target: 'evyd13/ta65'
},
'maartenwut/wasdat': {
target: 'evyd13/wasdat'
},
'maartenwut/wasdat_code': {
target: 'evyd13/wasdat_code'
},
'maartenwut/wonderland': {
target: 'evyd13/wonderland'
},
'mechlovin/hannah910': {
target: 'mechlovin/hannah910/rev1'
},
'mechlovin/adelais/rgb_led': {
target: 'mechlovin/adelais/rgb_led/rev1'
},
'mechlovin/adelais/standard_led': {
target: 'mechlovin/adelais/standard_led/rev2'
},
'mechlovin/delphine': {
target: 'mechlovin/delphine/mono_led'
},
'mechlovin/hannah60rgb': {
target: 'mechlovin/hannah60rgb/rev1'
},
'melgeek/z70ultra': {
target: 'melgeek/z70ultra/rev1'
},
'mechlovin/hannah65': {
target: 'mechlovin/hannah65/rev1'
},
model01: {
target: 'keyboardio/model01'
},
m0lly: {
target: 'tkc/m0lly'
},
'montsinger/rebound': {
target: 'montsinger/rebound/rev1'
},
nomu30: {
target: 'nomu30/rev1'
},
'noxary/268_2': {
layouts: {
LAYOUT: 'LAYOUT_65_ansi_blocker'
}
},
oddball: {
target: 'oddball/v1'
},
omnikey_blackheart: {
target: 'omnikey_bh'
},
'pabile/p20': {
target: 'pabile/p20/ver1'
},
'pancake/feather': {
target: 'spaceman/pancake/feather'
},
'pancake/promicro': {
target: 'spaceman/pancake/promicro'
},
'percent/canoe': {
layouts: {
LAYOUT_iso: 'LAYOUT_65_iso_blocker'
}
},
plaid: {
target: 'dm9records/plaid'
},
plain60: {
target: 'maartenwut/plain60'
},
'ploopyco/trackball': {
target: 'ploopyco/trackball/rev1_005'
},
polilla: {
target: 'polilla/rev1'
},
'preonic/rev1': {
layouts: {
LAYOUT_preonic_grid: 'LAYOUT_ortho_5x12'
}
},
'preonic/rev2': {
layouts: {
LAYOUT_preonic_grid: 'LAYOUT_ortho_5x12'
}
},
'preonic/rev3': {
layouts: {
LAYOUT_preonic_grid: 'LAYOUT_ortho_5x12'
}
},
'primekb/prime_l': {
target: 'primekb/prime_l/v1'
},
'primekb/prime_l_v2': {
target: 'primekb/prime_l/v2'
},
'projectkb/alice': {
target: 'projectkb/alice/rev1'
},
'rama/koyu': {
target: 'wilba_tech/rama_works_koyu'
},
'rama/m6_a': {
target: 'wilba_tech/rama_works_m6_a'
},
'rama/m6_b': {
target: 'wilba_tech/rama_works_m6_b'
},
'rama/m10_b': {
target: 'wilba_tech/rama_works_m10_b'
},
'rama/m60_a': {
target: 'wilba_tech/rama_works_m60_a'
},
'rama/u80_a': {
target: 'wilba_tech/rama_works_u80_a'
},
'ramonimbao/herringbone': {
target: 'ramonimbao/herringbone/v1'
},
'rgbkb/pan': {
target: 'rgbkb/pan/rev1/32a'
},
'rgbkb/pan/rev1': {
target: 'rgbkb/pan/rev1/32a'
},
romac: {
target: 'kingly_keys/romac'
},
ropro: {
target: 'kingly_keys/ropro'
},
satan: {
target: 'gh60/satan'
},
skog: {
target: 'percent/skog'
},
speedo: {
target: 'cozykeys/speedo/v2'
},
stoutgat: {
target: 'tkw/stoutgat/v1'
},
suihankey: {
target: 'suihankey/split/alpha'
},
ta65: {
target: 'maartenwut/ta65'
},
tartan: {
target: 'dm9records/tartan'
},
tkc1800: {
target: 'tkc/tkc1800'
},
'tkw/stoutgat/v2': {
target: 'tkw/stoutgat/v2/f411'
},
underscore33: {
target: 'underscore33/rev1'
},
vinta: {
layouts: {
LAYOUT_67_ansi: 'LAYOUT_65_ansi_blocker'
}
},
wasdat: {
target: 'maartenwut/wasdat'
},
'westfoxtrot/cypher': {
target: 'westfoxtrot/cypher/rev1'
},
'whale/sk': {
target: 'whale/sk/v3'
},
'xelus/dawn60': {
target: 'xelus/dawn60/rev1'
},
'xelus/valor': {
target: 'xelus/valor/rev1'
},
yd60mq: {
target: 'yd60mq/12led'
},
ymd75: {
target: 'ymd75/rev1'
},
z150_blackheart: {
target: 'z150_bh'
},
zeal60: {
target: 'wilba_tech/zeal60'
},
zeal65: {
target: 'wilba_tech/zeal65'
}
}

View File

@@ -25,7 +25,7 @@
},
"processor": {
"type": "string",
"enum": ["cortex-m0", "cortex-m0plus", "cortex-m3", "cortex-m4", "MKL26Z64", "MK20DX128", "MK20DX256", "STM32F042", "STM32F072", "STM32F103", "STM32F303", "STM32F401", "STM32F411", "atmega16u2", "atmega32u2", "atmega16u4", "atmega32u4", "at90usb162", "at90usb646", "at90usb647", "at90usb1286", "at90usb1287", "atmega32a", "atmega328p", "atmega328", "attiny85", "unknown"]
"enum": ["cortex-m0", "cortex-m0plus", "cortex-m3", "cortex-m4", "MKL26Z64", "MK20DX128", "MK20DX256", "MK66F18", "STM32F042", "STM32F072", "STM32F103", "STM32F303", "STM32F401", "STM32F411", "STM32F446", "STM32G431", "STM32G474", "STM32L433", "STM32L443", "atmega16u2", "atmega32u2", "atmega16u4", "atmega32u4", "at90usb162", "at90usb646", "at90usb647", "at90usb1286", "at90usb1287", "atmega32a", "atmega328p", "atmega328", "attiny85", "unknown"]
},
"board": {
"type": "string",
@@ -34,7 +34,7 @@
},
"bootloader": {
"type": "string",
"enum": ["atmel-dfu", "bootloadHID", "caterina", "halfkay", "kiibohd", "lufa-dfu", "lufa-ms", "micronucleus", "qmk-dfu", "stm32-dfu", "stm32duino", "unknown", "USBasp"]
"enum": ["atmel-dfu", "bootloadHID", "caterina", "halfkay", "kiibohd", "lufa-dfu", "lufa-ms", "micronucleus", "qmk-dfu", "stm32-dfu", "stm32duino", "unknown", "USBasp", "tinyuf2"]
},
"diode_direction": {
"type": "string",
@@ -85,8 +85,16 @@
"layout_aliases": {
"type": "object",
"additionalProperties": {
"type": "string",
"pattern": "^LAYOUT_[0-9a-z_]*$"
"oneOf": [
{
"type": "string",
"enum": ["LAYOUT", "LAYOUT_planck_1x2uC"]
},
{
"type": "string",
"pattern": "^LAYOUT_[0-9a-z_]*$"
}
]
}
},
"layouts": {
@@ -291,6 +299,28 @@
"pattern": "^[0-9A-F]x[0-9A-F][0-9A-F][0-9A-F][0-9A-F]"
}
}
},
"qmk_lufa_bootloader": {
"type": "object",
"additionalProperties": false,
"properties": {
"esc_output": {
"type": "string",
"pattern": "^[A-K]\\d{1,2}$"
},
"esc_input": {
"type": "string",
"pattern": "^[A-K]\\d{1,2}$"
},
"led": {
"type": "string",
"pattern": "^[A-K]\\d{1,2}$"
},
"speaker": {
"type": "string",
"pattern": "^[A-K]\\d{1,2}$"
}
}
}
}
}

View File

@@ -5,7 +5,7 @@ Four times a year QMK runs a process for merging Breaking Changes. A Breaking Ch
## Changes Requiring User Action :id=changes-requiring-user-action
### Relocated Keyboards :id-relocated-keyboards
### Relocated Keyboards :id=relocated-keyboards
#### The Key Company project consolidation ([#9547](https://github.com/qmk/qmk_firmware/pull/9547))
#### relocating boards by flehrad to flehrad/ folder ([#9635](https://github.com/qmk/qmk_firmware/pull/9635))

View File

@@ -5,7 +5,7 @@ Four times a year QMK runs a process for merging Breaking Changes. A Breaking Ch
## Changes Requiring User Action :id=changes-requiring-user-action
### Relocated Keyboards :id-relocated-keyboards
### Relocated Keyboards :id=relocated-keyboards
#### Reduce Helix keyboard build variation ([#8669](https://github.com/qmk/qmk_firmware/pull/8669))

169
docs/ChangeLog/20210227.md Normal file
View File

@@ -0,0 +1,169 @@
# QMK Breaking Changes - 2021 February 27 Changelog
## Changes Requiring User Action
The following keyboards have had their source moved within QMK:
Old Keyboard Name | New Keyboard Name
:---------------- | :----------------
bear_65 | jacky_studio/bear_65
s7_elephant/rev1 | jacky_studio/s7_elephant/rev1
s7_elephant/rev2 | jacky_studio/s7_elephant/rev2
aplx6 | aplyard/aplx6/rev1
southpaw75 | fr4/southpaw75
The [Aplyard Aplx6 rev2](https://github.com/qmk/qmk_firmware/tree/0.12.0/keyboards/aplyard/aplx6/rev1) and the [FR4Boards Unix60](https://github.com/qmk/qmk_firmware/tree/0.12.0/keyboards/fr4/unix60) have also been added as part of these changes.
Additionally, the `handwired/bluepill/bluepill70` keyboard has been removed.
## Core Changes
### ChibiOS Update and Config Migration
QMK's ChibiOS and ChibiOS-Contrib submodules have been updated to version 20.3.2.
Along with this, QMK now provides default configuration files for all commonly-supported ARM microcontrollers running on ChibiOS. As such, keyboards are now only required to define settings which differ from the defaults, thereby reducing the size of pull requests for keyboards running atop ChibiOS.
### QMK Infrastructure and Internals
Python is now required to build QMK. The minimum Python version has been increased to 3.7.
The power of `info.json` has been massively expanded. Most keyboard parameters can now be expressed in `info.json` instead of `config.h`/`rules.mk`. This should make maintaining keyboards easier, and will enable tooling that can allow non-technical users to add and maintain QMK keyboards without writing any code.
To ease migration a new command has been provided, `qmk generate-info-json -kb <keyboard>`. You can use this command to generate a complete `info.json` file for a keyboard and then remove the duplicate information from `config.h` and `rules.mk`.
Detailed example showing how to generate a new info.json and identify duplicate keys:
```
user@hostname:~/qmk_firmware/keyboards/lets_split:0$ qmk generate-info-json > new-info.json
user@hostname:~/qmk_firmware/keyboards/lets_split:0$ mv new-info.json info.json
user@hostname:~/qmk_firmware/keyboards/lets_split:0$ qmk info
⚠ lets_split/rev2: DEBOUNCE in config.h is overwriting debounce in info.json
⚠ lets_split/rev2: DEVICE_VER in config.h is overwriting usb.device_ver in info.json
⚠ lets_split/rev2: DIODE_DIRECTION in config.h is overwriting diode_direction in info.json
⚠ lets_split/rev2: MANUFACTURER in config.h is overwriting manufacturer in info.json
⚠ lets_split/rev2: RGB_DI_PIN in config.h is overwriting rgblight.pin in info.json
⚠ lets_split/rev2: RGBLED_NUM in config.h is overwriting rgblight.led_count in info.json
⚠ lets_split/rev2: PRODUCT_ID in config.h is overwriting usb.pid in info.json
⚠ lets_split/rev2: VENDOR_ID in config.h is overwriting usb.vid in info.json
⚠ lets_split/rev2: Matrix pins are specified in both info.json and config.h, the config.h values win.
⚠ lets_split/rev2: LAYOUTS in rules.mk is overwriting community_layouts in info.json
⚠ lets_split/rev2: Feature bootmagic is specified in both info.json and rules.mk, the rules.mk value wins.
⚠ lets_split/rev2: Feature mousekey is specified in both info.json and rules.mk, the rules.mk value wins.
⚠ lets_split/rev2: Feature extrakey is specified in both info.json and rules.mk, the rules.mk value wins.
⚠ lets_split/rev2: Feature console is specified in both info.json and rules.mk, the rules.mk value wins.
⚠ lets_split/rev2: Feature command is specified in both info.json and rules.mk, the rules.mk value wins.
⚠ lets_split/rev2: Feature nkro is specified in both info.json and rules.mk, the rules.mk value wins.
⚠ lets_split/rev2: Feature backlight is specified in both info.json and rules.mk, the rules.mk value wins.
⚠ lets_split/rev2: Feature midi is specified in both info.json and rules.mk, the rules.mk value wins.
⚠ lets_split/rev2: Feature audio is specified in both info.json and rules.mk, the rules.mk value wins.
⚠ lets_split/rev2: Feature unicode is specified in both info.json and rules.mk, the rules.mk value wins.
⚠ lets_split/rev2: Feature bluetooth is specified in both info.json and rules.mk, the rules.mk value wins.
⚠ lets_split/rev2: Feature rgblight is specified in both info.json and rules.mk, the rules.mk value wins.
⚠ lets_split/rev2: Feature sleep_led is specified in both info.json and rules.mk, the rules.mk value wins.
Keyboard Name: Let's Split
Manufacturer: Wootpatoot
Website:
Maintainer: QMK Community
Keyboard Folder: lets_split/rev2
Layouts: LAYOUT, LAYOUT_ortho_4x12
Size: 13 x 4
Processor: atmega32u4
Bootloader: caterina
```
## Detailed Change List
### Changes Requiring User Action
* Refactor Jacky's boards (Bear65 and S7 Elephant) ([#10528](https://github.com/qmk/qmk_firmware/pull/10528), [#11981](https://github.com/qmk/qmk_firmware/pull/11981))
* Remove handwired/bluepill ([#11415](https://github.com/qmk/qmk_firmware/pull/11415))
* Aplyard Aplx6 Added rev2 & move rev1+rev2 to parent folder ([#10973](https://github.com/qmk/qmk_firmware/pull/10973))
* added `unix60`, moved together with `southpaw75` into `fr4` folder ([#11195](https://github.com/qmk/qmk_firmware/pull/11195))
### Fixes
* GCC 10 can now compile Drop Alt firmware ([#9485](https://github.com/qmk/qmk_firmware/pull/9485))
* Fix compiling on `develop` branch ([#11409](https://github.com/qmk/qmk_firmware/pull/11409))
* Fix broken keyboards and keymaps ([#11412](https://github.com/qmk/qmk_firmware/pull/11412), [#11427](https://github.com/qmk/qmk_firmware/pull/11427), [#11448](https://github.com/qmk/qmk_firmware/pull/11448), [#11447](https://github.com/qmk/qmk_firmware/pull/11447), [#11473](https://github.com/qmk/qmk_firmware/pull/11473), [#11584](https://github.com/qmk/qmk_firmware/pull/11584), [#11600](https://github.com/qmk/qmk_firmware/pull/11600))
* Fixed up build dependencies so that generated files are made available before compiling any object files ([#11435](https://github.com/qmk/qmk_firmware/pull/11435))
* Formatting fixes ([`378edd9`](https://github.com/qmk/qmk_firmware/commit/378edd9491f2ab0d3d8a970c9a8e64bc03ca15cf), [#11594](https://github.com/qmk/qmk_firmware/pull/11594), [`27749e1`](https://github.com/qmk/qmk_firmware/commit/27749e1c967c02c05e62a89a0ae2776dd7e5158c))
* Include `stdbool.h` in `uart.h` to fix compiler errors ([#11728](https://github.com/qmk/qmk_firmware/pull/11728))
* Decouple USB events from the USB interrupt handler in ChibiOS ([#10437](https://github.com/qmk/qmk_firmware/pull/10437))
* Fixes an issue while using Backlight and External EEPROM at the same time that would cause the MCU to lock up.
* Address wake from sleep instability ([#11450](https://github.com/qmk/qmk_firmware/pull/11450))
* Fix pressing media key on a momentarily activated layer may lead to missing key up events ([#11162](https://github.com/qmk/qmk_firmware/pull/11162))
* Fix an RGB initialisation bug on Massdrop keyboards ([#12022](https://github.com/qmk/qmk_firmware/pull/12022))
* Fix file encoding errors on Windows, and layouts not correctly merging into info.json ([#12039](https://github.com/qmk/qmk_firmware/pull/12039))
### Additions and Enhancements
* Allow configuration of serial USART timeout ([#11057](https://github.com/qmk/qmk_firmware/pull/11057))
* Added Sync Timer feature for Split Common keyboards ([#10997](https://github.com/qmk/qmk_firmware/pull/10997))
* Add modifier state to the Split Common transport ([#10400](https://github.com/qmk/qmk_firmware/pull/10400))
* Add Pix keyboard by sendz (`sendyyeah/pix`) ([#11154](https://github.com/qmk/qmk_firmware/pull/11154))
* Implement option for kinetic mouse movement algorithm for mouse keys ([#6739](https://github.com/qmk/qmk_firmware/pull/6739))
* Improved Language Specific Keycodes for US International and Extended Layouts ([#11307](https://github.com/qmk/qmk_firmware/pull/11307))
* Modified `QWIIC_ENABLE` in `rules.mk` to be yes/no choice, adding `QWIIC_DRIVERS` to allow for inclusion of specific drivers ([#11426](https://github.com/qmk/qmk_firmware/pull/11426))
* Allow AVR-based keyboards to override the `bootloader_jump` function ([#11418](https://github.com/qmk/qmk_firmware/pull/11418))
* Refine RGBLight Twinkle effect to be smoother (use breathing curve) ([#11350](https://github.com/qmk/qmk_firmware/pull/11350))
* Keep track of last matrix activity ([#10730](https://github.com/qmk/qmk_firmware/pull/10730), [`ab375d3`](https://github.com/qmk/qmk_firmware/commit/ab375d3d075c105f09a1ddd0e155f178225518bc), [#11552](https://github.com/qmk/qmk_firmware/pull/11552))
* fix `matrix_io_delay()` timing in `quantum/matrix.c` ([#9603](https://github.com/qmk/qmk_firmware/pull/9603))
* Keep track of encoder activity ([#11595](https://github.com/qmk/qmk_firmware/pull/11595))
* Backport ChibiOS Audio changes from ZSA ([#11687](https://github.com/qmk/qmk_firmware/pull/11687))
* Add support for 8 buttons to mouse report ([#10807](https://github.com/qmk/qmk_firmware/pull/10807))
* Allow `post_config.h` to be implemented in userspace ([#11519](https://github.com/qmk/qmk_firmware/pull/11519))
* Adds AT90USB162 support ([#11570](https://github.com/qmk/qmk_firmware/pull/11570))
* Stop sounds when suspended ([#11553](https://github.com/qmk/qmk_firmware/pull/11553))
* Revamp spidey3 userspace and keymaps ([#11768](https://github.com/qmk/qmk_firmware/pull/11768))
* Add support for analog USBPD on STM32G4xx ([#11824](https://github.com/qmk/qmk_firmware/pull/11824))
* Master matrix can now be transported to the slave side in Split Common keyboards ([#11046](https://github.com/qmk/qmk_firmware/pull/11046))
* RGBLight: Allow configurable default settings ([#11912](https://github.com/qmk/qmk_firmware/pull/11912))
* Add `tap_code_delay(code, delay)` ([#11913](https://github.com/qmk/qmk_firmware/pull/11913), [#11938](https://github.com/qmk/qmk_firmware/pull/11938))
### Clean-ups and Optimizations
* Fix duplicate `I2C_KEYMAP_START` define ([#11237](https://github.com/qmk/qmk_firmware/pull/11237))
* Rewrite APA102 support for RGBLight ([#10894](https://github.com/qmk/qmk_firmware/pull/10894))
* Update ADB Protocol implementation in TMK Core ([#11168](https://github.com/qmk/qmk_firmware/pull/11168))
* Remove unused `action_get_macro()` usages in user files ([#11165](https://github.com/qmk/qmk_firmware/pull/11165))
* Remove `QMK_KEYBOARD_CONFIG_H` ([#11576](https://github.com/qmk/qmk_firmware/pull/11576))
* Remove duplicated housekeeping in `arm_atsam` ([#11672](https://github.com/qmk/qmk_firmware/pull/11672))
* UART driver refactor ([#11637](https://github.com/qmk/qmk_firmware/pull/11637))
* Move `transport.c` to `QUANTUM_LIB_SRC` ([#11751](https://github.com/qmk/qmk_firmware/pull/11751))
* Remove `MIDI_ENABLE_STRICT` from user keymaps ([#11750](https://github.com/qmk/qmk_firmware/pull/11750))
* Remove legacy print backward compatiblitly ([#11805](https://github.com/qmk/qmk_firmware/pull/11805))
* Migrate mousekey to quantum ([#11804](https://github.com/qmk/qmk_firmware/pull/11804))
* remove deprecated `qmk json-keymap` ([#11823](https://github.com/qmk/qmk_firmware/pull/11823))
* Remove FAUXCLICKY feature (deprecated) ([#11829](https://github.com/qmk/qmk_firmware/pull/11829))
* Refactor platform logic within `print.h` ([#11863](https://github.com/qmk/qmk_firmware/pull/11863))
* Audio system overhaul ([#11820](https://github.com/qmk/qmk_firmware/pull/11820))
* Output selection: Remove "USB and BT" option for Bluetooth ([#11940](https://github.com/qmk/qmk_firmware/pull/11940))
* `tmk_core/common/action.c`: refactor for code size; merge multiple `case`s into one ([#11943](https://github.com/qmk/qmk_firmware/pull/11943))
* Remove rules and settings from user keymaps that are already defined at keyboard level ([#11966](https://github.com/qmk/qmk_firmware/pull/11966))
### QMK Infrastructure and Internals
* bump to python 3.7 ([#11408](https://github.com/qmk/qmk_firmware/pull/11408))
* `develop` branch is now formatted as part of CI tasks ([#11893](https://github.com/qmk/qmk_firmware/pull/11893), [#11905](https://github.com/qmk/qmk_firmware/pull/11905), [#11907](https://github.com/qmk/qmk_firmware/pull/11907), [#11928](https://github.com/qmk/qmk_firmware/pull/11928), [#11936](https://github.com/qmk/qmk_firmware/pull/11936))
* Configure keyboard matrix from info.json ([#10817](https://github.com/qmk/qmk_firmware/pull/10817))
* Validate our JSON data using json_schema ([#11101](https://github.com/qmk/qmk_firmware/pull/11101))
* Use the schema to eliminate custom code ([#11108](https://github.com/qmk/qmk_firmware/pull/11108))
* Add support for specifying BOARD in `info.json` ([#11492](https://github.com/qmk/qmk_firmware/pull/11492))
* Document how to add data driven configurations ([#11502](https://github.com/qmk/qmk_firmware/pull/11502))
* Process info.json rules ahead of userspace rules ([#11542](https://github.com/qmk/qmk_firmware/pull/11542))
* Remove duplicate manufacturer definitions ([#11544](https://github.com/qmk/qmk_firmware/pull/11544))
* Update list of MCUs in `keyboard.jsonschema` to mirror `qmk.constants.py` ([#11688](https://github.com/qmk/qmk_firmware/pull/11688))
* Create a system to map between `info.json` and `config.h`/`rules.mk` ([#11548](https://github.com/qmk/qmk_firmware/pull/11548))
* Make LAYOUT parsing more robust ([#12000](https://github.com/qmk/qmk_firmware/pull/12000))
### ChibiOS Update and Config Migration
* Add board specific to Proton-C, with usual defaults turned on to match Pro-Micro ([#10976](https://github.com/qmk/qmk_firmware/pull/10976))
* Disable almost all ChibiOS subsystems in default configs ([#11111](https://github.com/qmk/qmk_firmware/pull/11111))
* Config Migrations ([#10418](https://github.com/qmk/qmk_firmware/pull/10418), [#11123](https://github.com/qmk/qmk_firmware/pull/11123), [#11261](https://github.com/qmk/qmk_firmware/pull/11261), [#11413](https://github.com/qmk/qmk_firmware/pull/11413), [#11414](https://github.com/qmk/qmk_firmware/pull/11414), [#11495](https://github.com/qmk/qmk_firmware/pull/11495), [#11504](https://github.com/qmk/qmk_firmware/pull/11504), [#11529](https://github.com/qmk/qmk_firmware/pull/11529), [#11588](https://github.com/qmk/qmk_firmware/pull/11588), [#11598](https://github.com/qmk/qmk_firmware/pull/11598), [#11607](https://github.com/qmk/qmk_firmware/pull/11607), [#11617](https://github.com/qmk/qmk_firmware/pull/11617), [#11620](https://github.com/qmk/qmk_firmware/pull/11620), [#11630](https://github.com/qmk/qmk_firmware/pull/11630), [#11646](https://github.com/qmk/qmk_firmware/pull/11646), [#11689](https://github.com/qmk/qmk_firmware/pull/11689), [#11846](https://github.com/qmk/qmk_firmware/pull/11846), [#11927](https://github.com/qmk/qmk_firmware/pull/11927), [#12001](https://github.com/qmk/qmk_firmware/pull/12001))
* Disable subsystems repo-wide ([#11449](https://github.com/qmk/qmk_firmware/pull/11449))
* Leftover early initialisation conversions ([#11615](https://github.com/qmk/qmk_firmware/pull/11615))
* Fix up comments showing how to execute config migration ([#11621](https://github.com/qmk/qmk_firmware/pull/11621))
* Add STM32G431 and STM32G474 board definitions ([#11793](https://github.com/qmk/qmk_firmware/pull/11793))

View File

@@ -1,813 +0,0 @@
#### Include stdbool.h in uart.h ([#11728](https://github.com/qmk/qmk_firmware/pull/11728))
Include stdbool.h in uart.h to fix compiler errors.
##### Issues Fixed or Closed by This PR
* Travis CI errors
#### ChibiOS conf migrations... take 12 ([#11689](https://github.com/qmk/qmk_firmware/pull/11689))
Config migrations for the newest batch of boards merged from `master` into `develop`.
sha1sums all match.
```
durgod/k320 - 168c88d401381d9a29166d3b07967e6f0752532d
```
#### Update list of MCUs in keyboard.jsonschema to mirror qmk.constants.py ([#11688](https://github.com/qmk/qmk_firmware/pull/11688))
Mirroring checked values between python and jsonschema.
#### Backport ChibiOS Audio changes from ZSA ([#11687](https://github.com/qmk/qmk_firmware/pull/11687))
Should disable the pins for audio when not in use (playing notes). Added due to issues found with the Planck EZ.
##### Issues Fixed or Closed by This PR
* Issues found on planck ez.
#### Remove duplicated housekeeping call from `arm_atsam` ([#11672](https://github.com/qmk/qmk_firmware/pull/11672))
<!--- Describe your changes in detail here. -->
Patch for https://github.com/qmk/qmk_firmware/pull/10530#discussion_r549612205
##### Issues Fixed or Closed by This PR
None
#### ChibiOS conf migrations... take 11 ([#11646](https://github.com/qmk/qmk_firmware/pull/11646))
Final pass on all configs, now that the defaults have correctly been set.
sha1sums all match.
```
acheron/arctic - 2aedbe9103fff6c37e596c33c9ed337957647368
acheron/austin - c2f4e3b7fc9f1c3d64f47d139bc58367afeca1b7
acheron/keebspcb - 1ba976e409732bfa5c0487dd33e20bec06852ce4
acheron/lasgweloth - 01a2e70d0d86de0ff05d0b898a6e3b4428ee1581
aeboards/ext65/rev2 - 3c9a45cafb4ed6d9672aaff4548b105193633a87
ai03/vega - 1bd0dfccb99baa69bacd2d55f2bfa72019b8bf80
akegata_denki/device_one - a013823188660f5fca37c5763f160f8646aed7a7
at_at/660m - 9999583e8bec2772046132a22818482d24e18c84
box75 - 1126206109a942237eea96f3a9608e3c9ed55f8e
bt66tech/bt66tech60 - b69120638a8b2c86c008fd0592be918383d8a454
cannonkeys/an_c - c755f6caaccbe2b30d95661a3d441b836534c29f
cannonkeys/atlas - 1a18c55492a834b82715516ea4cd4d3d94508743
cannonkeys/chimera65 - 6bf226ef353da9106c381a8ac95a9b90529327e5
cannonkeys/db60 - 07e3246f8e3adc5b6918809e6a5aa1ad064b9a09
cannonkeys/devastatingtkl - 907d258e29eb7e35b1f868c1ea6148bfd1e3a3f2
cannonkeys/instant60 - ac876ff6746b08839a3936dd4126b52683b763f4
cannonkeys/instant65 - 3b8c89ec5fecbdb35cccb00c45e64a798528dbda
cannonkeys/iron165 - 0814ec4067d9857b0134e38384f272cf7172fb03
cannonkeys/obliterated75 - 0f376e5d9a232c62e9c60f8fdc81d12732352ddc
cannonkeys/onyx - d35134ebe09046b91ab176035d3742d80b23ed8e
cannonkeys/ortho48 - 828dbfbb013ff4fefe75044b3c9fd31fec5e95a1
cannonkeys/ortho60 - 2aca4dd4234e0dac828f5fa15ae5b3bc3c0605dc
cannonkeys/ortho75 - 4af8aaaded0ff53e9c01473f5968cc169f268647
cannonkeys/practice60 - e01df551d9483eeb3f825fcc453317fe65f674b5
cannonkeys/practice65 - 156163789d4c96cdd4787895788c1d02a2367f5c
cannonkeys/rekt1800 - 15882afb6373dea3e5f7ed13c19744ee2463f3bf
cannonkeys/sagittarius - f49fee611ffcc02cb3dc7f249fc8c83f136907b9
cannonkeys/satisfaction75 - 2c9fbbea3a38820774f6ff436ef51017b545475a
cannonkeys/savage65 - ddd764be363c46f3e9b1a16151bd02d8f66b2dd4
cannonkeys/tmov2 - 7af36cd2a42015838b77697624e90008ffa72778
cannonkeys/tsukuyomi - a120bea5dacb2cd6f143458cece46d2860ea196d
cheshire/curiosity - 93d8fe3b7a8e028d4b015941ee71b50afe86bc8a
coarse/cordillera - 7d986d3f534786f302cbf74a5e6b7e51ffe60093
converter/siemens_tastatur - 3f79f1467bbc56f284aceafd76ab5c6a1cbb68f4
cutie_club/borsdorf - f8c6015b7aacfd5edef4f22f719eea30660005e7
dekunukem/duckypad - d9c162d0867d3925cca2e653a3a3870eac2d23d2
ebastler/isometria_75/rev1 - 2ecdd00b8c6cc794a7014747185b88374d5766c0
ergodox_infinity - 76736c701db22e890764481c25bd38badf32a1cf
ergodox_stm32 - a7bdb0b7822617ca0f9d316a082874ac0fef5964
function96 - 1b9e394a86dab24b85d160afe9281b5e7652afe2
geekboards/macropad_v2 - de261e46a42cc7b7ff793e26200669f94b1dbb18
generic_panda/panda65_01 - 592d2443033875e0309506aa8cb5212389054458
handwired/ck4x4 - 9d7d4af7f2d787afd638e976334cd37c490040d7
handwired/onekey/blackpill_f401 - c9257a30203b3a0e5aa18b35e07281fcd043ab5d
handwired/onekey/blackpill_f411 - dfccc2c6b245cfb561faba60c9f3fc7af8c3db30
handwired/onekey/bluepill - 393f4b94e9a0fbc9cd00de1acde346ad72250b4a
handwired/onekey/stm32f0_disco - d827881f9bed09fd41c7c4e9d066e96b6643a099
handwired/onekey/teensy_32 - dd90f6c823da80ba43afa41249a2bdbbab98b04c
handwired/onekey/teensy_lc - 34596f2eeb62403cce532d20cf893ebd77fe2d05
handwired/pill60/blackpill_f401 - 20bbccb5058085076357f4fa956eede2c0af86e8
handwired/pill60/blackpill_f411 - e03a4c3ec3b9ba65b8067126a039a8eb2cd10e51
handwired/pill60/bluepill - 2fb721fb4376cde2067eed1c0c8acbf3bf5851c3
handwired/riblee_f401 - 2823cd98d64c91b146dae343a32176d51772952b
handwired/riblee_f411 - 5cf7589c9a11c4ed14e7d28676ac836fbb07d013
handwired/sono1 - d972acee03efb4917fc42f7d72c0a416b67ebd4a
handwired/t111 - f947c1d59025fe04e7d7b999d80e20277be4366c
handwired/twadlee/tp69 - 48ab62464ba1f2651f4468cbec7c6058e3b8c158
handwired/z150 - 35e85696845e965d7f2dcdb372ed20c17d42c2bb
hub20 - f094036a182169b5a73f89f09f2ccaa3e5fc9e7e
iron180 - 5efb6f21c848b3c964795d9debddceac7628933d
jm60 - dbbdbe8b27b3c1d0a25981b2f75728d163d5d299
keebio/bdn9/rev2 - 0031632523dddfc8f7b3a02cf9c5990ebbb3856d
keebio/choconum - 4484ef6936a497610ca5ae4d378bc07b2bc1b1c7
matrix/m20add - 6068aeff5b14c26de8838180f4397800abe9f1aa
matrix/noah - fcde175fb1d3f5bf0716ac5a880c2cc9ab4bbf7f
misterknife/knife66 - e7f3ceffb94fb8e680da2af27fa7cb1a0a52b699
misterknife/knife66_iso - ee027db939c098f908f70f02ffa9cc3952139f70
nebula12 - 2f3a25b6675dcd0fabe75e7bb63038d3cac19610
nemui - 4030faa372512f766fd747876cb28176302453f9
nibiria/stream15 - fd7b09affa208403099ef9bff1b756fac0d4f918
nightingale_studios/hailey - 496a44b2f789cc59a6110c7c1c41d57e59c722be
planck/rev6 - 6fb8f0bc21b4ab774ce3d339fdf6f25d96059f10
primekb/meridian - 8021ed99e8bdf92faab806780186cc924dd59e50
projectkb/alice - ad7678d475a14c54f28b62d1c1b15f5b4c4448bc
projectkb/signature87 - de61338b0a5c477f39c000df8117dd3017c2643d
ramonimbao/squishy65 - 2ea1a8b18c39d0e193bbbf5836191874d3aafc53
ramonimbao/wete - a80b3b309f06566adcdf20234d81c1d5aa599b00
rart/rartlice - c8c80c302428d62bb8b08e3185509a233a94f5f0
retro_75 - 7434e266bba43ded8ca1ff75d77faa506473ca91
rocketboard_16 - 1182a8730a84b58eba5a470286b6db6134d36f54
satt/vision - c85a28a8d7e321511a17a7e7084d0a7876d1779a
technika - 7c59de348f0ec5f6ac9e260806a87aaf16fbafa2
tkc/godspeed75 - e447b39dca393736fbf289049699d5b4748bb8c6
tkw/stoutgat/v2/f411 - 58e9b909379ad107affbff0508e3923264b75426
viktus/styrka - 36bf0921be79a8b037fdc25343584574a312be60
westfoxtrot/prophet - 80036c8f986c8d3261d6b0748d2057eccab6430b
whitefox - c9eccac0196c3e2e2ea6c90d3036283a3eabff2c
wolfmarkclub/wm1 - 0d22a426255b829a7805bd6a3ff927198b1e31b4
xelus/kangaroo - fdb1ffb66f4841f662e968929f058d4fd403c97e
xelus/trinityxttkl - a9641e5b39b7bb38351b9109f0f381837b2e8e79
xelus/valor_frl_tkl - 6c3b577852736a68727ec319c30712b3088e65cd
xiaomi/mk02 - 4c1406ebfee73551a844ef7ab29fc5788d7e875c
zoo/wampus - 930c903e85478e220a235f45593c03512c66bc2a
zvecr/split_blackpill - c0e3e1583262e4cb0ebfe2efa6356ed6c5c957ca
```
#### UART driver refactor ([#11637](https://github.com/qmk/qmk_firmware/pull/11637))
Moves the existing `uart.[ch]` driver to `drivers/`, and adds a ChibiOS counterpart (which may need some QA from someone more versed in the ARM side of things).
It would also be good to get some `puts()` and `gets()` implementations added, if possible. And I'm not really sure what to do with `uart_available()` on ARM.
##### Issues Fixed or Closed by This PR
*
#### Enforce memory allocator for ChibiOS builds with allocating debounce algorithms ([#11630](https://github.com/qmk/qmk_firmware/pull/11630))
Using one of the alternate debounce algorithms requires a memory allocator.
ChibiOS allows you to disable said memory allocator.
This puts some compile-time checks to enforce that the allocator has been enabled -- during testing with it set to FALSE, the keyboard would run and function correctly from a visible standpoint, but no keypresses would register. The fun part was, if the slave side had a firmware that had an allocator enabled, the master would still report keypresses on the slave, but not itself!
#### Fix up comments showing how to execute config migration ([#11621](https://github.com/qmk/qmk_firmware/pull/11621))
Looks like an older version of the migration command had a different name. Fixes up the comments as well as the generator to ensure consistency.
#### ChibiOS enable memory allocations ([#11620](https://github.com/qmk/qmk_firmware/pull/11620))
ChibiOS config consolidation inadvertently disabled memory allocations, so any malloc calls (such as for debounce algorithms) would fail. Typing would not function!
#### ChibiOS conf migrations... take 10 ([#11617](https://github.com/qmk/qmk_firmware/pull/11617))
Config migrations and custom board removals for the last batch of boards left outstanding in the repository.
sha1sums all match.
```
akegata_denki/device_one - 0d9f891416decbbb533c6c1147632ef7c55a2d9f
chavdai40/rev1 - 06bca6ec34948c8005e73254299488cdba3429f8
chavdai40/rev2 - f55650a8d7aa755eb72564e95a144910dd902a73
ergodox_stm32 - 04433b80e4cd231c15163ace77428db72b5483ad
jm60 - a127e6cfccad74ed1a9e47e9213dc41cf0d26f1d
matrix/m20add - e2e556dad666ed9b1eea09e46d0eb14e19bda8b8
matrix/noah - c6fd3caf0b7d444085283d4f0a9204ab283d5202
```
#### Leftover early initialisation conversions ([#11615](https://github.com/qmk/qmk_firmware/pull/11615))
This brings the last batch of stragglers over to use the early initialisation code.
#### Switch to nano specs on ChibiOS builds - Round 2 ([#11607](https://github.com/qmk/qmk_firmware/pull/11607))
<!--- Describe your changes in detail here. -->
With #11573, this could be worth another try... maybe (#9044 for the previous iteration).
#### Fixup builds on develop branch. ([#11600](https://github.com/qmk/qmk_firmware/pull/11600))
Fixes failing builds on develop after the change to the default set of enabled ChibiOS peripherals.
#### ChibiOS conf migrations... take 9 ([#11598](https://github.com/qmk/qmk_firmware/pull/11598))
Config migrations for the newest batch of boards merged from `master` into `develop`.
This batch includes the list of boards which still contain their own board definitions.
sha1sums all match.
```
akegata_denki/device_one - 0d9f891416decbbb533c6c1147632ef7c55a2d9f
ergodox_stm32 - 72aeab1612ef73555a73dd60d005e671a90d7e2f
jm60 - cc75e97727fadd939be4bdf7fa3714320465d3ef
matrix/m20add - b0dee0b4e8c0a94d55fea51c8699972f15483209
matrix/noah - 57a1c09cd24716863ce862e0b9cbca2a9c6fcebf
nibiria/stream15 - 610b151b02f5cac681c65fbd3f94a12312f99b82
xiaomi/mk02 - f92fcee777acc159c0af268e88b751fd1e33f74f
```
#### Keep track of encoder activity ([#11595](https://github.com/qmk/qmk_firmware/pull/11595))
Addition to the "last matrix activity" PR, this time around it keeps track of encoder activity too.
Adds four new APIs:
```c
uint32_t last_input_activity_time(void); // Timestamp of the last matrix or encoder activity
uint32_t last_input_activity_elapsed(void); // Number of milliseconds since the last matrix or encoder activity
uint32_t last_encoder_activity_time(void); // Timestamp of the last encoder activity
uint32_t last_encoder_activity_elapsed(void); // Number of milliseconds since the last encoder activity
```
Tested on the Djinn rev1.
#### `qmk cformat` ([#11594](https://github.com/qmk/qmk_firmware/pull/11594))
Execution of `qmk cformat` against `develop`.
#### ChibiOS conf migrations... take 8 ([#11588](https://github.com/qmk/qmk_firmware/pull/11588))
Config migrations for the newest batch of boards merged from `master` into `develop`.
sha1sums all match.
```
hub20 - 089b49b233c4e9b8ab643c6b338c91f5c3136e32
```
#### Fix user keymaps that aren't compiling ([#11584](https://github.com/qmk/qmk_firmware/pull/11584))
A number of user keymaps don't compile. I've been compiling `all:all` a lot lately so having these cleaned up will help me a lot.
#### Remove QMK_KEYBOARD_CONFIG_H ([#11576](https://github.com/qmk/qmk_firmware/pull/11576))
<!--- Describe your changes in detail here. -->
Given that all `config.h` files are automatically injected as part of the build process, this PR removes `QMK_KEYBOARD_CONFIG_H` which only functions some of the time.
#### Adds AT90USB162 support ([#11570](https://github.com/qmk/qmk_firmware/pull/11570))
Adds support for the AT90USB162.
After my previous PR failure I hope this one is smoother. I've ran `make all:default` and there are failures with some boards but they appear to happen on develop as well. I've compiled and flashed AT90USB162, ATmega32u4 and STM32F401 boards using this branch.
I've added preliminary support into spi_master, uart and serial but I've not tested these features but the registers, bits and pins line up with the datasheet. I've been able to test the changes to backlight_avr on a couple of accessible pins with hardware pwm. I'm a little unsure about the edit I've made to the max eeprom address in dynamic_keymap.c as it doesn't make an exception for the 16u2?
The MCU has no ADCs or support for I2C. I found a [datasheet](http://ww1.microchip.com/downloads/en/AppNotes/doc8224.pdf) while creating a the first pull request stating the ATmega16u2 is functional equivalent to the AT90USB162 which lines up with the edits I've made.
I'm expecting to have missed something but hopefully not too much.
Edit:
For context this is to port existing hardware to QMK, I appreciate there's not likely going to be much call for this MCU. Any who thanks for your help and time.
##### Issues Fixed or Closed by This PR
*
#### Keep track of last matrix activity ([#11552](https://github.com/qmk/qmk_firmware/pull/11552))
Re-submission of #10730 -- there was a logic issue that only seemed to manifest on some AVR builds.
@daskygit has graciously performed the investigation on their end, as I was unable to reproduce.
This PR adds support for recording the last time matrix activity was detected.
Two new APIs have been added:
```c
uint32_t last_matrix_activity_time(void); // Timestamp of the last matrix activity
uint32_t last_matrix_activity_elapsed(void); // Number of milliseconds since the last matrix activity
```
These values are compatible with normal matrix scanning, as well as split_common.
#### Remove duplicate manufacturer definitions ([#11544](https://github.com/qmk/qmk_firmware/pull/11544))
Now that the integration between info.json and config.h is tighter we should define these variables in only one place. I chose to leave this in `config.h` under the principle of least surprise.
#### Process info.json rules ahead of userspace rules ([#11542](https://github.com/qmk/qmk_firmware/pull/11542))
Fixes the import order so that keyboard-level vars don't overwrite userspace.
#### ChibiOS conf migrations... take 7 ([#11529](https://github.com/qmk/qmk_firmware/pull/11529))
Config migrations for the newest batch of boards merged from `master` into `develop`.
sha1sums all match.
```
alpine65 - 91e88b87653234a9023f4ad98913a6ea52c8b3fb
cannonkeys/onyx - 2adf507afd4e288761a675de9cfbb6e34c540e29
ck60i - 98be5d22a3cd1b38d92e080f32c4795260db181b
cutie_club/borsdorf - 81734ebf770ab731ca8dcfac6fce5574e948890e
```
#### Allow post_config.h to be implemented in userspace ([#11519](https://github.com/qmk/qmk_firmware/pull/11519))
Allow `post_config.h` to be defined in userspace directories.
At present, we pay attention to it in keyboard and keymap directories, but not in the userspace.
#### ChibiOS conf migrations... take 6 ([#11504](https://github.com/qmk/qmk_firmware/pull/11504))
Config migrations for the newest batch of boards merged from `master` into `develop`.
sha1sums all match.
```
cannonkeys/sagittarius - 953626d1b87574290016ed09caaf5e3fa7b73189
evolv - c2f56a35ef1d11b002f9306ed2814ac0447e68c4
```
#### Document how to add data driven configurations ([#11502](https://github.com/qmk/qmk_firmware/pull/11502))
This describes how to add configuration values to info.json so they work in the build system as well.
#### ChibiOS 20.3.2 ([#11495](https://github.com/qmk/qmk_firmware/pull/11495))
The long-awaited upgrade to ChibiOS 20.3.2.
```
-------------------------------
Successful builds: 121
Warning builds: 21
Failing builds: 0
-------------------------------
```
#### Add support for specifying BOARD in info.json ([#11492](https://github.com/qmk/qmk_firmware/pull/11492))
`BOARD` was added while I was working on my data driven qmk project. This adds support for specifying it in info.json like everything else.
#### Another round of develop fixing ([#11473](https://github.com/qmk/qmk_firmware/pull/11473))
Somehow these things broke even though my last PR was compiling clean.
#### Disable ChibiOS subsystems repo-wide. ([#11449](https://github.com/qmk/qmk_firmware/pull/11449))
Disables a bunch of unused ChibiOS subsystems across the repository.
File checksums do change, as things like condvars aren't being imported into the build any more.
#### Fix compiling squiggle/rev1 ([#11448](https://github.com/qmk/qmk_firmware/pull/11448))
The structure for squiggle/rev1 was incorrect and needed to be fixed.
#### Fix compiling treadstone32/rev1 ([#11447](https://github.com/qmk/qmk_firmware/pull/11447))
The structure for treadstone32/rev1 was incorrect and needed to be fixed.
#### Fix up build dependencies. ([#11435](https://github.com/qmk/qmk_firmware/pull/11435))
Fixes up build dependencies so that the generated files are correctly made available previous to compiling any object files.
#### Fix broken keyboards on develop ([#11427](https://github.com/qmk/qmk_firmware/pull/11427))
A few keyboards were broken by my info.json work.
##### Issues Fixed or Closed by This PR
*
#### Split up QWIIC makefile variables to have _ENABLE and _DRIVERS ([#11426](https://github.com/qmk/qmk_firmware/pull/11426))
As per the description, this splits up `QWIIC_ENABLE=<drivers>` to both `QWIIC_ENABLE=yes/no` and `QWIIC_DRIVERS=<drivers>`.
This is broken on `develop` since the addition of `qmk generate-rules-mk`.
#### AVR weak bootloader_jump ([#11418](https://github.com/qmk/qmk_firmware/pull/11418))
Allows for a custom implementation of bootloader_jump() for non-standard bootloaders on AVR.
This allows for a cleaner override compared to catching RESET in process_record_* and implementing bootmagic_lite().
<!--- Describe your changes in detail here. -->
#### Remove handwired/bluepill. ([#11415](https://github.com/qmk/qmk_firmware/pull/11415))
As discussed, remove legacy code.
#### ChibiOS conf migrations... take 5 ([#11414](https://github.com/qmk/qmk_firmware/pull/11414))
Config migrations for the newest batch of boards merged from `master` into `develop`.
sha1sums all match.
```
handwired/sono1 - cca23170d69383fd0fc4b21bdfacb32ee57e1305
```
#### ChibiOS conf migrations... take 4 ([#11413](https://github.com/qmk/qmk_firmware/pull/11413))
Config migrations for the newest batch of boards merged from `master` into `develop`.
sha1sums all match.
```
cannonkeys/tsukuyomi - 7beddc74b03d652481198843a178177de5da3ddb
misterknife/knife66_iso - f2dd6e6c54258ae9d09a88215b36fba34947fc23
mode/eighty/m80h - 4bbbee01a89a5b4ab5f4de36e0dd2044cf54a698
mode/eighty/m80s - 6de4a1affab4ed8f08423eb511393ed797e3ea77
```
#### Fix broken keyboards ([#11412](https://github.com/qmk/qmk_firmware/pull/11412))
My recent PR broke a few keyboards, this addresses the breakage.
#### Fix compiling on develop ([#11409](https://github.com/qmk/qmk_firmware/pull/11409))
A merging error led to uncompilable keyboards.
#### Refine twinkle to be smoother (use breathing curve) ([#11350](https://github.com/qmk/qmk_firmware/pull/11350))
This pull request updates the RGB Lighting "Twinkle" effect to be smoother, similar to the "Breathing" effect. To do this, the Twinkle code has been updated to use the same table that the Breathing uses (but "stretched" mathematically), and the default cycle intervals & twinkle life have been adjusted. There are also some changes to make the effect look nicer when lower brightness settings are configured.
To avoid bloat, I've done some minor refactoring so that Twinkle and Breathe can share some code. There is no significant impact on either firmware size, or on matrix scan rate. Nevertheless, since this is change to an effect that folks may have customized, I am targeting the develop branch.
#### Improved Language Specific Keycodes for US International and Extended Layouts ([#11307](https://github.com/qmk/qmk_firmware/pull/11307))
This pull request improves a corner of the Language Specific Keycodes:
- Improvement for the **US International** keyboard layout [aka _`xkb:us:intl:eng` - English (US, international with dead keys)_]
- Support for more symbols added
- Fixed some confusion between dead-key accents and standalone counterparts (`US_DGRV` vs. `US_GRV`, `US_DTIL` vs. `US_TILD`, etc.)
- Adds `sendstring_us_international.h` that will (if included) make `send_char()` / `send_string()` work correctly when the host is configured for this keyboard
- Adds support for **US Extended** keyboard layout [aka _`xkb:us:altgr-intl:eng` - English (international AltGr dead keys)_]
- Adds support in `send_char()` / `send_string()` for ASCII characters that can only be entered by typing a dead key followed by a space.
I've targeted this at the `develop` branch, because:
- The change to `send_char()` increases firmware size slightly (by about 62 bytes) for all keyboards.
- The changes in `keymap_us_international.h` make it more correct, but may break keymaps that depend on it (although I note, there doesn't seem to be anything in the `qmk/qmk_firmware` tree that uses it at present).
#### ChibiOS conf migrations... take 3 ([#11261](https://github.com/qmk/qmk_firmware/pull/11261))
Config migrations for the newest batch of boards merged from `master` into `develop`.
sha1sums all match.
```
acheron/lasgweloth - 3bedb0fe1f1b542b4d90daeaeab8905cd9ee992c
box75 - ff91bacf5cec0b42df02967eb0ecbf4bd1b56928
geekboards/macropad_v2 - 1c205720d47f7e636173064b1aef1637860a9134
iron180 - 867929d78361a50e34671e4e167cafd927d8982b
technika - cb9295b90980eb8dfdc63d6031533edbb344c045
```
#### Fix duplicate I2C_KEYMAP_START define ([#11237](https://github.com/qmk/qmk_firmware/pull/11237))
And moved the sync timer define to match its placement in the struct.
##### Issues Fixed or Closed by This PR
*
#### Update ADB impelemtation in TMK Core ([#11168](https://github.com/qmk/qmk_firmware/pull/11168))
The ADB protocol implementation enables the ADB-USB converter in QMK. However it was ported from TMK some time ago and not updated since then. This is what this PR does. The updated and more complete ADB implementation is needed in order to enable some features on older Apple keyborads:
- automatic detection of ISO keyboards and swapping key codes accordingly [see](https://github.com/tmk/tmk_keyboard/issues/35)
- enable right modifier keys on AEK keyboards [see](https://geekhack.org/index.php?topic=14290.msg736664#msg736664) and [this](https://deskthority.net/viewtopic.php?t=254)
I tested the changes with an Arduino Pro Micro and my AEK II and M0116 keyboards, both in ISO layout. Some testing with the ANSI versions might be needed. Also, I could not test how JIS versions of the keyboards are affected by these changes. I assume not at all, as they do not swap key codes.
<!--- Describe your changes in detail here. -->
##### Issues Fixed or Closed by This PR
*
#### Remove unused `action_get_macro()` usages in user keymaps & layouts ([#11165](https://github.com/qmk/qmk_firmware/pull/11165))
This is all the `action_get_macro()` functions that either define no macro handlers, or do but which are not referenced anywhere in the keymap as `M()` keycodes or in `fn_actions`. There are still a ton of keymaps to be converted over to `process_record_user()`.
Also removes "the old way" macro documentation.
##### Issues Fixed or Closed by This PR
*
#### [Keyboard] Add Pix ([#11154](https://github.com/qmk/qmk_firmware/pull/11154))
<!--- Describe your changes in detail here. -->
Add Pix keyboard, a single row macropad with Encoder and OLED Screen, can be mounted under your monitor
![IMG20201208141526](https://user-images.githubusercontent.com/3537856/101459293-a4da0400-396a-11eb-94f6-adfb68b50fe7.jpg)
##### Issues Fixed or Closed by This PR
*
#### ChibiOS conf migration: dekunukem/duckypad ([#11123](https://github.com/qmk/qmk_firmware/pull/11123))
Same as other conf migrations, sha1sum matches: `0014c2a10913fad7b71f5fc8a0d6adb6b3c4b128`
```sh
make -j$(nproc) dekunukem/duckypad:default COMMAND_ENABLE=no SKIP_VERSION=yes SKIP_GIT=yes
```
#### Disable almost all ChibiOS subsystems in default configs ([#11111](https://github.com/qmk/qmk_firmware/pull/11111))
Disables most ChibiOS subsystems, or using ChibiOS-supplied default values where appropriate.
No config migration has occurred yet, so nothing is using these files.... yet.
Also moves out the configuration files from the F4x1 blackpills, such that they're actually part of the keyboards in question.
All F4's built, compared against develop, using sha1sum to validate binary reproducibility:
```
handwired/onekey/blackpill_f401:default - 8387bfd56888fc1605d293dc0071b4ec94b23991
handwired/onekey/blackpill_f411:default - 855efdb2f60c384edf64773c0f4ff4b7ea8ae4c9
handwired/pill60/blackpill_f401:default - 5b652354ae957e86e211dcef29f8f27320b31180
handwired/pill60/blackpill_f411:default - 580255c171e95b5bca53b14a13ae018a73d18414
handwired/riblee_f401:default - dc68c31d7ca8ae0fad7e7ad8bdd63406155ff363
handwired/riblee_f411:default - cf0fadff4c98d41cf9bdddbe1ead15c79be941b9
matrix/m20add:default - 2bad5fc486e640a97d7197d03caf8762d36dc1b0
matrix/noah:default - e52979ce61a24594346cd7031ffd3f788ab423e7
phoenix:default - 21bfb14c52451899dadf545b78a8e88b22a420f0
tkw/stoutgat/v2/f411:default - b094651ec61c79099de3e6e4991319816ac464c1
zvecr/zv48/f401:default - 8b1766a24f943b9b0ba756c6fe340ba69d5e14e3
zvecr/zv48/f411:default - 09ba645092eb7f3d41da0d5e6727f2f4f97033c0
```
Running `make all-chibios:default`:
```
-------------------------------
Successful builds: 147
Skipped builds: 1110
Warning builds: 9
Failing builds: 0
-------------------------------
```
#### Use the schema to eliminate custom code ([#11108](https://github.com/qmk/qmk_firmware/pull/11108))
<!--- Describe your changes in detail here. -->
#### Validate our JSON data using json_schema ([#11101](https://github.com/qmk/qmk_firmware/pull/11101))
This builds on #10817, and should be merged after that one.
#### Sync Timer feature ([#10997](https://github.com/qmk/qmk_firmware/pull/10997))
Added a sync_timer set of apis that will keep their value in sync across split common keyboards. This helps keeps led animation effects in sync when run in split modes (RGBLIGHT_SPLIT or the upcoming RGB_MATRIX_SPLIT). This PR is targeting the development branch as this is a change to the Transport code which will require users to flash both master and slave halves.
~~Spent quite a bit of time poking at RGBLIGHT fixing the hitching of the previous attempts at a sync timer. Solved all the hitching, but it still does not stay in sync as well as I would like (when RGBLIGHT_SPLIT_NO_ANIMATION_SYNC is defined) due to how animation ticks are handled in RGBLIGHT. So while it's using the sync timer, it's not any better than what it was before. Additionally an option to disable the sync timer and fall back to normal timer is possible using the #define DISABLE_SYNC_TIMER~~
All hitching for RGBLIGHT with sync_timer has been fixed. Additionally RGBLIGHT now stays in sync with RGBLIGHT_SPLIT_NO_ANIMATION_SYNC defined Only remaining issue: boot / startup time hitching causes the animations to start out of sync. So there needs to be an initial sync event to get them lined up. RGBLIGHT_SPLIT_NO_ANIMATION_SYNC not defined still fixes this.
Note: In testing, this was used in conjunction with https://github.com/qmk/qmk_firmware/pull/10996
##### Issues Fixed or Closed by This PR
*
#### Configuration minimisation (phase 1) ([#10976](https://github.com/qmk/qmk_firmware/pull/10976))
ChibiOS configuration files are used in order to enable or disable access to certain subsystems in order to provide support for things such as audio or I2C/SPI -- as per standard Proton-C. In the past, Proton-C has provided a "config-less" setup, which provided these configuration files and turned on all the required subsystems in order to support them.
These configuration files were moved to a common area, and effectively enable subsystems like SPI, PWM or DAC, regardless of whether they're targeting F303, with or without a Proton-C.
This PR modifies the way F303's are built, allowing for a build target of a board called `QMK_PROTON_C` -- this contains the usual fully-fledged configurations, and disables the majority of the subsystems on the `GENERIC_STM32_F303XC` board.
All F303-targeting keyboards have been migrated across to the `QMK_PROTON_C` board in this PR, specifically to validate that SHA-1 checksums match what's currently on the `develop` branch:
```
1upkeyboards/sweet16/v2/proton_c:default - 8c01a546f9101a1306fedc501f375ba167364572
acheron/shark:default - ee3d9ab5285a62d6764db984f5fce29a072823cc
atreus:ridingqwerty - 2a32c64e54f743aea3d2662526213ca1224a2d16
boston_meetup/2019:default - d17230c17f6f3b791272d01825b78a6e531f0450
c39:drashna - b75040aa31fdb4ae663973c6d2d1194ddf5addb4
ckeys/thedora:default - e62922bc5dac220d4287070859140f97b831def2
clueboard/60:default - bb5057d4a2976b6530fe2e345a4153de2f7c042d
clueboard/66/rev4:default - 878e38a34f97b32d9d109a6d98f98bc385d84864
clueboard/66_hotswap/gen1:default - 03fe10f4de7b67e5f1cf0a7d576f82676adf4261
clueboard/california:default - b10e51183dd1f5891faeef3e44ec325cb4e194fa
dztech/dz60rgb/v1:default - eade21047afb40d903e548c38ab4671d956282c2
dztech/dz60rgb_ansi/v1:default - 61e275467ce256a1f5d2a719aad642c6c7b3a6b2
dztech/dz60rgb_wkl/v1:default - 6858c2c8fa322d23932402ca761e9c37ff3dedc0
dztech/dz65rgb/v1:default - d7543c7be51c9932624b455fd71d3a1e45537469
hadron/ver3:default - 632af7727b767720c699abdff770edc9682928ee
handwired/co60/rev6:default - be1688eeabd83a7f576d9e4e23e24d56b8dc251b
handwired/co60/rev7:default - d196c5772859ddee695bda5b0e9f0944a0f350f8
handwired/d48:default - 24c4e7fee59ceed78400091e3134239ad5b8c662
handwired/ddg_56:default - c65d1eeb891795edc889e7e84dce5fe098471dc4
handwired/floorboard:default - 8b007072e49f461fdcd818b7f95a4da0c6c053b4
handwired/onekey/proton_c:default - 076611ec2a181ab20e6f418b1e72240b625e366a
handwired/onekey/pytest:default - d12db66a81cd0d4afb96e026f8b2a95ca77ee176
handwired/selene:default - fdba0edd6ce2526adf1a7ae9eb3b07fd20f6076f
handwired/sick_pad:default - 3cf8b00dd8bfb0c26ba601d58d5fce28298f912e
handwired/steamvan/rev1:default - 743b395ac87b918b6be4614c9e120e80a9f049d4
handwired/wulkan:default - 629359dae610138096e09daaba3556209b4107ef
hs60/v2/ansi:default - 7bcd152c269803de8f96416ba26e939c0420ceae
hs60/v2/hhkb:default - d77f393d2811bd104b05c4530bf1083d75856b7a
hs60/v2/iso:default - 5d3d20de919fca3b64cb7548cad46e8d35d7cc04
kbdfans/kbd67/mkiirgb/v1:default - 15877ecb90c9c7ed2823bf4637c69edd2a8bc45b
keebio/bdn9:codecoffeecode - 2b2844e60da163b5dc0d190c7aa8e98218890833
keebwerk/mega/ansi:default - 10e32718c7bfff2f6bd8dd2159a15bef0f4acbf9
kingly_keys/little_foot:yanfali - 87383c1296f6d16178864cee67c11292ea60ddde
kv/revt:default - 2d806f2cb95a26e35238fcc1541f63896ebdfdd0
mechlovin/adelais:default - 9de468d5836cda082918498cf644a872c249bc29
mechlovin/hannah60rgb:default - 22119e8e0cbbe0340b4ebe7d860a83efbc9d6c0d
mechlovin/hannah65:default - 0a209d9c018b7c33e14bca26ad1f99c363e67118
mechlovin/infinity87:default - 9c7a2eea08a9b6dd9f9dc888ee04a53f15b60e0a
mechlovin/infinity88:default - 79677fed5264a45e776ce23467e0258cd161f6d5
melgeek/mj61/rev1:default - 4b4e15a164bb215c7de163248fdbd15ca3939121
melgeek/mj63/rev1:default - a59aaf5d6bd260299878547489a6ab8888d4758e
melgeek/mj64/rev1:default - 765287938c4bc0774b62795717f600ccc6bd058b
melgeek/mj64/rev2:default - d8603e5406d25f6ff51f0ed003765626189af56c
melgeek/mojo75/rev1:default - 7aed878a64d5cc39d9a09aa5d42178391d9e2c1d
melgeek/z70ultra/rev1:default - f93c1bcfb4f7732f40bac8f9917ee43db99bea70
montsinger/rebound/rev1:curry - 7540ac725e2de6b155b9961a73aab5e949263c53
moonlander:default - d33b143f995aaf9751e9403ef99d6134940e15b8
nack:default - ba7f421d5670e672c5c14fd5f80c0f86447c1468
nebula68:default - 6bed6afb2fd84ef9069b757f1d1e87fc1cbe290c
nk65:default - 75b2484741a96dcbff14e94c44443bb33ad73dce
nk87:default - f719a739a3d2c0969c79c1ace5fe9a7d6f05cc22
default - 9338d2fb97d6005b53a93d0c43453b535a4255c1
planck/rev6:default - cb19e7f473183e040406c710b7bf797356d6dec3
preonic/rev3:default - 5a2bce8227691b84107e7757a1ccee03e56577fb
rgbkb/pan/rev1/proton_c:default - 2724e0d7c7e9b7a77bb58bc33516f462c4e75182
yugo_m/model_m_101:default - c338c93888cd50aa69453e0bd2b4394f1c09ffc8
rgbkb/zen/rev1:default (CTPC=yes) - edbf80fc4f3680fa55cefc410c01c2ba360676d1
rgbkb/zen/rev2:default (CTPC=yes) - e2aea7fd02e5d36d1c7aa58006b3442363b7a005
```
#### Added rev2 & move rev1+rev2 to parent folder ([#10973](https://github.com/qmk/qmk_firmware/pull/10973))
<!--- Describe your changes in detail here. -->
Aplx6 has a new rev and a new pcb with encoder & oled display support.
Made a parent folder named aplx, renamed aplx6 to rev and added rev2 folder and files.
Edited old rev1 readme.md to correct the make: example.
Sorry for any bad coding in advance :P
##### Issues Fixed or Closed by This PR
*
#### Rewrite APA102 support ([#10894](https://github.com/qmk/qmk_firmware/pull/10894))
The APA102 source was broken by commit 16a15c1cfcbfd0feb2c2cf1383676747e2f97d73 as it did not include the quantum header. This PR addresses that, as well as other issues with transferring bytes over the SPI interface, i.e. it was not setting the clock pin back to low after sending a bit.
The deviation when sending the end frame is kept, but updated to the latest from the referenced project.
Additionally, these changes expose the global LED brightness parameter of the APA102. Brightness values are configurable through `APA102_DEFAULT_BRIGHTNESS` and `APA102_MAX_BRIGHTNESS`.
Question: Since it is using the QMK macros, does this still belong in under `drivers/avr`?
##### Issues Fixed or Closed by This PR
* #10026
#### Configure keyboard matrix from info.json ([#10817](https://github.com/qmk/qmk_firmware/pull/10817))
This PR will generate `#define`'s based on information found in info.json. This is a big step towards making QMK easier to work with for non-programmers, and making it easier for collaborators to maintain a large number of keyboards using automated tooling.
#### Add support for 8 buttons to mouse report ([#10807](https://github.com/qmk/qmk_firmware/pull/10807))
#### Keep track of last matrix activity ([#10730](https://github.com/qmk/qmk_firmware/pull/10730))
This PR adds support for recording the last time matrix activity was detected.
Two new APIs have been added:
```c
uint32_t last_matrix_activity_time(void); // Timestamp of the last matrix activity
uint32_t last_matrix_activity_elapsed(void); // Number of milliseconds since the last matrix activity
```
These values are compatible with normal matrix scanning, as well as split_common.
#### Moved s7_elephant and bear65 into 1 folder ([#10528](https://github.com/qmk/qmk_firmware/pull/10528))
<!--- Describe your changes in detail here. -->
The 2 boards are now moved into the folder jacky_studio/
I have checked with Jacky, and he is ok with this naming convention
#### ChibiOS upgrade: keyboard conf migrations (phase 1) ([#10418](https://github.com/qmk/qmk_firmware/pull/10418))
Performs the config migrations for ChibiOS-based boards.
This PR includes the set of keyboards which do not require board changes, or even if the board has changed the resulting binary has a sha1 match before and after the configuration file migration has occurred.
All builds have been executed with the following command:
```sh
make -j$(nproc) ${KEYBOARD_BUILD}:default COMMAND_ENABLE=no SKIP_GIT=yes
```
The keyboards listed at the end do require modification, and will result in further PRs to allow for board-specific validation without holding up other merges.
Listing of boards successfully migrated:
```
acheron/arctic - 8d3d233f15bf5d396e29abb94f943a89b0b828d1
acheron/austin - beabc6204533de80704684de9ff7790895f319e1
acheron/keebspcb - e14a96e99aab54aefebc1d3d24d64b0082db7842
aeboards/ext65/rev2 - 0b97daef994903585be2768b6aaffc4da97ec617
ai03/vega - 7e5f208278309681fd1db8b2629890b813fdf938
at_at/660m - e30393b6546454f9939c1187aa9c6539f1ef76c1
bt66tech/bt66tech60 - a7f4e8a224132830447d12c92d146997f9b56b7d
cannonkeys/an_c - e7320dc09377fdad749e382b3986f2241633214b
cannonkeys/atlas - 063a8eaea7e68607b725ad06777c49d34686b433
cannonkeys/chimera65 - 01ce66c862a5cd98183b10e992939a55038779bc
cannonkeys/db60 - 45636d0b3cf951cef51a5b19678e2da549efd14f
cannonkeys/devastatingtkl - 709e0155c421991fad283d38c28f850320ed4730
cannonkeys/instant60 - 7e530e10794183d684a328f01b9b0743907440c7
cannonkeys/instant65 - c8de288708d0586337cb7137ae54d97e1ddc90a6
cannonkeys/iron165 - 3a3c0273e227fd15ab3527e4aa557b94d0b69248
cannonkeys/obliterated75 - cdf834802ae77b1bbd4876eb8c34c19a83ad95cd
cannonkeys/ortho48 - 3432ff13c83a6358eca44b37f72b18882eeda699
cannonkeys/ortho60 - 95be42a23798cc8f9b04175d4892b712d871a52d
cannonkeys/ortho75 - e1149893fd01e853124808b45d521b61a7638eb9
cannonkeys/practice60 - 6e4da87f0a766cf2665e9b4aa8e3ab33017cf745
cannonkeys/practice65 - c436c06829123503073b3a9c5a1c0acfc2dbe2e5
cannonkeys/rekt1800 - 43e8e21b62531534afeaa241f4c683fbdb60a8e0
cannonkeys/satisfaction75 - 28ff9a8a11ad1de9d09ec85fab2af906b7c27d6a
cannonkeys/savage65 - 53eaefae56020b536d4934686506d5d1fe51b6e0
cannonkeys/tmov2 - 8b1ced8ff7dc368afa268104cd5192bb1bfc8a1c
chavdai40/rev1 - b166af66b084077764b705c9428725cde0b0ce51
chavdai40/rev2 - 0048c8ec8c28f1dfa5d1a37348524899595d8325
cheshire/curiosity - f1636e53638ce2e798070e6e622fd88a08982d5a
clueboard/60 - bb5057d4a2976b6530fe2e345a4153de2f7c042d
clueboard/66_hotswap/gen1 - 03fe10f4de7b67e5f1cf0a7d576f82676adf4261
clueboard/66/rev4 - 878e38a34f97b32d9d109a6d98f98bc385d84864
coarse/cordillera - 5cae5c643e96d03bddcbb73e76e225ea5f82fef3
converter/siemens_tastatur - 48f82cd227836878967dfa0fe0411f7d877a124c
ergodox_infinity - 8df21d6129eef47d7a5ced92715e5bdbfb0151e5
function96 - deecdcdca34c88058f820f0e2bc9f112458c85c5
generic_panda/panda65_01 - 8522d8107edcf71758f3be7298c0bc18fa7f6706
hadron/ver3 - 632af7727b767720c699abdff770edc9682928ee
handwired/ck4x4 - a4cb9b5b8c3a162083677b14b105edbc1bca2baf
handwired/co60/rev6 - be1688eeabd83a7f576d9e4e23e24d56b8dc251b
handwired/co60/rev7 - d196c5772859ddee695bda5b0e9f0944a0f350f8
handwired/onekey/blackpill_f401 - 8387bfd56888fc1605d293dc0071b4ec94b23991
handwired/onekey/blackpill_f411 - 855efdb2f60c384edf64773c0f4ff4b7ea8ae4c9
handwired/onekey/bluepill - 60d8555b174dbdabae196a4cc5eccfee4bdd9529
handwired/onekey/stm32f0_disco - 9bc12e29f5a4e4b9ec0f34987559e5e11de4bb48
handwired/onekey/teensy_32 - 17459dd8e71b3a33270037878bdbd04151af196b
handwired/onekey/teensy_lc - 3a9aed4681c287176efe31c988340ca43ad27a9d
handwired/pill60/blackpill_f401 - 5b652354ae957e86e211dcef29f8f27320b31180
handwired/pill60/blackpill_f411 - 580255c171e95b5bca53b14a13ae018a73d18414
handwired/pill60/bluepill - 29109b54137ea94ac266c604991cff87516689ff
handwired/riblee_f401 - dc68c31d7ca8ae0fad7e7ad8bdd63406155ff363
handwired/riblee_f411 - cf0fadff4c98d41cf9bdddbe1ead15c79be941b9
handwired/steamvan/rev1 - 743b395ac87b918b6be4614c9e120e80a9f049d4
handwired/t111 - 99b61ae5692ee4b2101673d1a896cd7a5831bcfa
handwired/twadlee/tp69 - 3ab2753c40e947a726ece6c825493ebc87ecf20e
handwired/z150 - 78808b0c8671e2386b9ba65dbd647d613d92f253
hs60/v2/ansi - 7bcd152c269803de8f96416ba26e939c0420ceae
hs60/v2/hhkb - d77f393d2811bd104b05c4530bf1083d75856b7a
hs60/v2/iso - 5d3d20de919fca3b64cb7548cad46e8d35d7cc04
infinity60 - dbcbb2f58ee499252b0879d68d9beec08a8433bc
k_type - 492f476177da95495442d1e173391e3c17324a70
keebio/bdn9/rev2 - 4dbb5d606b3d9060ad01a437978220fe0f1fc5b2
keebio/choconum - 1521e634088a30114cd12b7b6bbd2cca5331c822
keebwerk/mega/ansi - 10e32718c7bfff2f6bd8dd2159a15bef0f4acbf9
misterknife/knife66 - cf2f3d26103036d79bf7fcec204e13899e33fbe3
nack - ba7f421d5670e672c5c14fd5f80c0f86447c1468
nebula12 - aedb11fa894dc19513462f054a9fa00f5c195adc
nebula68 - 6bed6afb2fd84ef9069b757f1d1e87fc1cbe290c
nemui - 86ed80ea8565d7d0f39512a9032cc5e1b306fcff
nk65 - 75b2484741a96dcbff14e94c44443bb33ad73dce
nk87 - f719a739a3d2c0969c79c1ace5fe9a7d6f05cc22
peiorisboards/ixora - b5adf1090fb4c6278d8990ce9132727a13ca3cd7
phoenix - 21bfb14c52451899dadf545b78a8e88b22a420f0
polilla - 3ba5f326b268362c9aba570b1510e1c61009ba96
primekb/meridian - df266e25c682a8ed3318faa186805683014ccec4
projectkb/alice - eee7210f618588b2c5c6367c8a0318427d09da52
projectkb/signature87 - 617430e601981f0bb5fbcce42eee53107d5161b8
ramonimbao/squishy65 - 88e4cd3db8db61ccf9daed5405cf5eeb32f8043e
ramonimbao/wete - f0e90d943d8749e802b6bba619ce943b568a7f65
rart/rartlice - f7a6b58e6cadd4102fcf5f89d054d1fbdc5809d0
retro_75 - 34c7b291fb2443bf8cb69fb9ee676190c736bf00
rocketboard_16 - 24e6503a7a5259934a80dd96dd37d3281b4240d3
satt/vision - c926d6433d8b2dc1d74623184255016bdd36ae22
tkc/candybar/lefty - 2f269cbed5dcec61bb0c7904a46436f110dc0ae1
tkc/candybar/righty - 9b1448b2ccbcf8a4d1e5ad74d8ad5933003ee9a2
tkc/godspeed75 - 2cfed58d44a7eef8f341ff24e0136511e03aa78d
tkw/stoutgat/v2/f411 - b094651ec61c79099de3e6e4991319816ac464c1
viktus/styrka - f3f678ea55126c9965f24da6fffc9bbbd8b24aa9
vinta - e5403dc6bbf47f35a53cf43b1b1d130f05552f16
westfoxtrot/prophet - 0e4d6987ffa6430720804e7bc1502ab6c3dcb879
whitefox - 5ca6de6fb09d8c2cfa996b65732fcd55391053ff
wolfmarkclub/wm1 - 2d8294e29b08f5af5406988a284483d1694ed36c
xelus/kangaroo - f9697ba27d4e6c36a1cfd9e2657eac35dfa3be99
xelus/trinityxttkl - a457601b446ea9b4e9e28d2ba304a4bcdb934257
xelus/valor_frl_tkl - 27ec14b9ee0e5cb2d026af500d16b17d4c2885e2
zoo/wampus - 926487c1f50c1c5eb0608ca7dc1184881d54d35e
zvecr/split_blackpill - 02f4393d01e0a70c94af48fa979ff0229732e8ca
zvecr/zv48/f401 - 8b1766a24f943b9b0ba756c6fe340ba69d5e14e3
zvecr/zv48/f411 - 09ba645092eb7f3d41da0d5e6727f2f4f97033c0
```
Listing of boards left outstanding:
```
8 boards outstanding:
akegata_denki/device_one: BOARD=DEVICE_ONE
dekunukem/duckypad: BOARD=GENERIC_STM32_F072XB
ergodox_stm32: BOARD=ERGODOX_STM32_BOARD
handwired/bluepill/bluepill70: BOARD=GENERIC_STM32_F103
jm60: BOARD=JM60_BOARD
matrix/m20add: BOARD=m20add_bd
matrix/noah: BOARD=noah_bd
xiaomi/mk02: BOARD=ST_STM32F072B_DISCOVERY
```
#### Add modifier state to the split keyboard transport ([#10400](https://github.com/qmk/qmk_firmware/pull/10400))
This adds modifier state to the i2c and serial transport for split
keyboards. The purpose of this is to allow e.g. displaying modifier
state on the slave side of a split keyboard on an oled. This adds two
or three bytes to the data transferred between split halves.
This also fixes a missing ifdef guard for BACKLIGHT_ENABLE.
#### fix matrix_io_delay() timing in quantum/matrix.c ([#9603](https://github.com/qmk/qmk_firmware/pull/9603))
~~The timing of the call to matrix_io_delay() has been changed to the appropriate time. With this change, we can reduce the number of times we call matrix_io_delay() by one.~~
**Separated `matrix_io_delay()` into the following two functions so that you can set the appropriate delay value for each.**
* `matrix_output_select_delay()` - after `select_row()/select_col()`
The delay is a small number of clocks specific to the MCU.
The default implementation is as follows:
```c
__attribute__((weak)) void matrix_output_select_delay(void) { waitInputPinDelay(); }
```
See below for more information on `waitInputPinDelay()`.
* `matrix_output_unselect_delay()` - after `unselect_row()/unselect_col()`
The delay is in the range of a few microseconds, depending on the capacitance and resistance of the entire keyboard circuitry.
The default implementation is as follows:
```c
__attribute__((weak)) void matrix_io_delay(void) { wait_us(MATRIX_IO_DELAY); }
__attribute__((weak)) void matrix_output_unselect_delay(void) { matrix_io_delay(); }
```
**Added `waitInputPinDelay()` into `quantum/quantum.h`.**
On AVR's GPIO and ARM's GPIO, the input signal changes need some clock time to be read into the input pins.
The `waitInputPinDelay()` will wait the necessary time. The wait time is set to `GPIO_INPUT_PIN_DELAY` in units of the clock.
If `GPIO_INPUT_PIN_DELAY` is not set, the following values are used.
* AVR
The datasheets for ATmega32u4/16u4, ATmega32u2/16u2, ATmega328p, AT90usb646/1286, etc. say that a delay of one clock is required after a change in the input signal. Therefore, the default value of GPIO_INPUT_PIN_DELAY can be set to 1, but we'll set it to 2 to allow for some leeway.
* ARM-based MCUs
For GPIOs on ARM-based MCUs, the input pins are sampled by the clock of the bus to which the GPIO is connected.
The connected buses differ depending on the various series of MCUs.
Also, since the CPU instruction execution clock and GPIO bus clock can vary depending on the MCU GPIO bus configuration and MCU internal register settings, the optimal delay value cannot be determined. Therefore, GPIO_INPUT_PIN_DELAY defaults to a rather large value of 0.25 microseconds.
<details>
<summary><strong>Current matrix.c timing (click)</strong></summary>
#### gcc 10 compatibility for Drop alt ([#9485](https://github.com/qmk/qmk_firmware/pull/9485))
##### Issues Fixed or Closed by This PR
* #9268 (This issue tracks multiple problems, this fixes part of it)
#### Implement kinetic mouse movement algorithm ([#6739](https://github.com/qmk/qmk_firmware/pull/6739))
I implemented the kinetic/quadratic mouse acceleration algorithm. The algorithm is not the one from the UHK but a newly created one that's able to compute the current speed at any given time instead of relying on a compounding mechanism that just computes the increment.
Overall, the cursor acceleration feels very similar to the UHK. However, feedback and improvements are welcome in order to make it as usable as possible.
This algorithm requires a very low `MOUSEKEY_INTERVAL` in order to produce smooth movements. What's possible highly depends on the micro processor. I did my tests on the elite-c which is pro micro compatible. It was able to deliver 125 events per second which I set as the default value if `MK_KINETIC_SPEED` is defined.
I wrote a small utility https://github.com/jceb/bin/blob/master/mouseevents that helps to measure the maximum number of mouse events that can be sent by the micro processor. If you try out this algorithm it should help find the right setting for `MOUSEKEY_INTERVAL`.
##### Issues Fixed or Closed by This PR
* Add UHK's kinetic mouse movement #6738

192
docs/ChangeLog/20210529.md Normal file
View File

@@ -0,0 +1,192 @@
# QMK Breaking Changes - 2021 May 29 Changelog
## Notable Changes :id=notable-changes
### RGB Matrix support for split common ([#11055](https://github.com/qmk/qmk_firmware/pull/11055)) :id=rgb-matrix-split-common
Split boards can now use RGB Matrix without defining a custom matrix.
### Teensy 3.6 support ([#12258](https://github.com/qmk/qmk_firmware/pull/12258)) :id=teensy-3-6-support
Added support for MK66F18 (Teensy 3.6) microcontroller.
### New command: qmk console ([#12828](https://github.com/qmk/qmk_firmware/pull/12828)) :id=new-command-qmk-console
A new `qmk console` command has been added for attaching to your keyboard's console. It operates similiarly to QMK Toolbox by allowing you to connect to one or more keyboard consoles to display debugging messages.
### Improved command: qmk config :id=improve-command-qmk-config
We've updated the `qmk config` command to show only the configuration items you have actually set. You can now display (almost) all of the available configuration options, along with their default values, using `qmk config -a`.
### LED Matrix Improvements ([#12509](https://github.com/qmk/qmk_firmware/pull/12509), [#12580](https://github.com/qmk/qmk_firmware/pull/12580), [#12588](https://github.com/qmk/qmk_firmware/pull/12588), [#12633](https://github.com/qmk/qmk_firmware/pull/12633), [#12651](https://github.com/qmk/qmk_firmware/pull/12651), [#12685](https://github.com/qmk/qmk_firmware/pull/12685)) :id=led-matrix-improvements
LED Matrix has been improved with effects, CIE1931 curves, and a task system.
## Changes Requiring User Action :id=changes-requiring-user-action
### Updated Keyboard Codebases :id=updated-keyboard-codebases
* Durgod keyboard refactor in preparation for adding additional durgod keyboards ([#11978](https://github.com/qmk/qmk_firmware/pull/11978))
* Updated Function96 with V2 files and removed chconf.h and halconf.h ([#12613](https://github.com/qmk/qmk_firmware/pull/12613))
* [Keyboard] updated a vendor name / fixed minor keymap issues ([#12881](https://github.com/qmk/qmk_firmware/pull/12881))
* [Keyboard] Corne - Remove legacy revision support ([#12226](https://github.com/qmk/qmk_firmware/pull/12226))
The following keyboards have had their source moved within QMK:
Old Keyboard Name | New Keyboard Name
:---------------- | :----------------
crkbd/rev1/common | crkbd/rev1
function96 | function96/v1
nckiibs/flatbread60 | delikeeb/flatbread60
nckiibs/vaguettelite | delikeeb/vaguettelite
nckiibs/vanana/rev1 | delikeeb/vanana/rev1
nckiibs/vanana/rev2 | delikeeb/vanana/rev2
nckiibs/vaneela | delikeeb/vaneela
nckiibs/vaneelaex | delikeeb/vaneelaex
nckiibs/waaffle/rev3/elite_c | delikeeb/waaffle/rev3/elite_c
nckiibs/waaffle/rev3/pro_micro | delikeeb/waaffle/rev3/pro_micro
The [Function96 V2](https://github.com/qmk/qmk_firmware/tree/0.13.0/keyboards/function96/v2) has also been added as part of these changes.
The codebase for the [Durgod K320](https://github.com/qmk/qmk_firmware/tree/0.13.0/keyboards/durgod/k320) has been reworked in anticipation of additional Durgod keyboards gaining QMK support.
Additionally, the `crkbd/rev1/legacy` keyboard has been removed.
### Bootmagic Deprecation and Refactor ([#12172](https://github.com/qmk/qmk_firmware/pull/12172)) :id=bootmagic-deprecation-and-refactor
QMK has decided to deprecate the full Bootmagic feature and leave Bootmagic Lite as the only remaining option.
This pull request changes the behavior of `BOOTMAGIC_ENABLE` such that specifying `BOOTMAGIC_ENABLE = yes` enables Bootmagic Lite instead of full Bootmagic.
If attempts to use Bootmagic functionality result in unexpected behavior, check your `rules.mk` file and change the `BOOTMAGIC_ENABLE` setting to specify either `lite` or `full`.
#### Tentative Deprecation Schedule
This is the current planned roadmap for the behavior of `BOOTMAGIC_ENABLE`:
- From 2021 May 29, setting `BOOTMAGIC_ENABLE = yes` will enable Bootmagic Lite instead of full Bootmagic.
- From 2021 Aug 28, `BOOTMAGIC_ENABLE` must be either `yes`, `lite`, or `no` setting `BOOTMAGIC_ENABLE = full` will cause compilation to fail.
- From 2021 Nov 27, `BOOTMAGIC_ENABLE` must be either `yes` or `no` setting `BOOTMAGIC_ENABLE = lite` will cause compilation to fail.
### Removal of LAYOUT_kc ([#12160](https://github.com/qmk/qmk_firmware/pull/12160)) :id=removal-of-layout-kc
We've removed support for `LAYOUT_kc` macros, if your keymap uses one you will need to update it use a regular `LAYOUT` macro.
### Encoder callbacks are now boolean ([#12805](https://github.com/qmk/qmk_firmware/pull/12805), [#12985](https://github.com/qmk/qmk_firmware/pull/12985)) :id=encoder-callback-boolean
To allow for keyboards to override (or not) keymap level code the `encoder_update_kb` function has been changed from `void` to `bool`. You will need to update your function definition to reflect this and ensure that you return a `true` or `false` value.
Example code before change:
```c
void encoder_update_kb(uint8_t index, bool clockwise) {
encoder_update_user(index, clockwise);
}
```
Example code after change:
```c
bool encoder_update_kb(uint8_t index, bool clockwise) {
return encoder_update_user(index, clockwise);
}
```
## Core Changes :id=core-changes
### Fixes :id=core-fixes
* Fix connection issue in split keyboards when slave and OLED display are connected via I2C (fixes #9335) ([#11487](https://github.com/qmk/qmk_firmware/pull/11487))
* Terrazzo: Fix wrong LED Matrix function names ([#12561](https://github.com/qmk/qmk_firmware/pull/12561))
* Apply the "NO_LIMITED_CONTROLLER_CONNECT" fix to atmega16u2 ([#12482](https://github.com/qmk/qmk_firmware/pull/12482))
* Fix comment parsing ([#12750](https://github.com/qmk/qmk_firmware/pull/12750))
* Turn OLED off on suspend in soundmonster Corne keymap ([#10419](https://github.com/qmk/qmk_firmware/pull/10419))
* Fixup build errors on `develop` branch. ([#12723](https://github.com/qmk/qmk_firmware/pull/12723))
* Fix syntax error when compiling for ARM ([#12866](https://github.com/qmk/qmk_firmware/pull/12866))
* Add missing LED Matrix suspend code to suspend.c ([#12878](https://github.com/qmk/qmk_firmware/pull/12878))
* Fix spelling mistake regarding LED Matrix in split_common. ([#12888](https://github.com/qmk/qmk_firmware/pull/12888))
* [Keymap] Fix QWERTY/DVORAK status output for kzar keymap ([#12895](https://github.com/qmk/qmk_firmware/pull/12895))
* Fixup housekeeping from being invoked twice per loop. ([#12933](https://github.com/qmk/qmk_firmware/pull/12933))
* wait for matrix row signal to go HIGH for every row ([#12945](https://github.com/qmk/qmk_firmware/pull/12945))
* ensure we do not conflict with existing keymap aliases ([#12976](https://github.com/qmk/qmk_firmware/pull/12976))
* [Keyboard] Fix Terrazzo build failure ([#12977](https://github.com/qmk/qmk_firmware/pull/12977))
* Do not hard set config in CPTC files ([#11864](https://github.com/qmk/qmk_firmware/pull/11864))
### Additions and Enhancements :id=core-additions
* ARM - Refactor SLEEP_LED to support more platforms ([#8403](https://github.com/qmk/qmk_firmware/pull/8403))
* Add ability to toggle One Shot functionality ([#4198](https://github.com/qmk/qmk_firmware/pull/4198))
* Add RGB Matrix support to Split Common ([#11055](https://github.com/qmk/qmk_firmware/pull/11055))
* Add support for complementary outputs to the ChibiOS WS2812 PWM driver ([#11988](https://github.com/qmk/qmk_firmware/pull/11988))
* Enable RGB Matrix for Corne ([#12091](https://github.com/qmk/qmk_firmware/pull/12091))
* Set default OLED Update Interval for Split Keyboards to improve matrix scan performance ([#12107](https://github.com/qmk/qmk_firmware/pull/12107))
* Add support for MK66F18 (Teensy 3.6) micro controller ([#12258](https://github.com/qmk/qmk_firmware/pull/12258))
* Split RGB Matrix support for RGBKB Zygomorph ([#11083](https://github.com/qmk/qmk_firmware/pull/11083))
* Add baudrate and circular buffer to ARM WS2812 SPI config ([#12216](https://github.com/qmk/qmk_firmware/pull/12216))
* Add keyboard level weak function for slave matrix scan ([#12317](https://github.com/qmk/qmk_firmware/pull/12317))
* Add link to schematic on EasyEDA for XD60 ([#12018](https://github.com/qmk/qmk_firmware/pull/12018))
* Add Config functions for LED Matrix ([#12361](https://github.com/qmk/qmk_firmware/pull/12361))
* Add pin definitions for MK66F18 ([#12419](https://github.com/qmk/qmk_firmware/pull/12419))
* add kinesis/kint36 keyboard ([#10171](https://github.com/qmk/qmk_firmware/pull/10171))
* Add support for producing UF2-format binaries. ([#12435](https://github.com/qmk/qmk_firmware/pull/12435))
* Implement CIE1931 curve for LED Matrix ([#12417](https://github.com/qmk/qmk_firmware/pull/12417))
* Change `BOOTMAGIC_ENABLE=yes` to use Bootmagic Lite ([#12172](https://github.com/qmk/qmk_firmware/pull/12172))
* Add kzar keymap for Kinesis Advantage ([#12444](https://github.com/qmk/qmk_firmware/pull/12444))
* LED Matrix: suspend code ([#12509](https://github.com/qmk/qmk_firmware/pull/12509))
* LED Matrix: Task system ([#12580](https://github.com/qmk/qmk_firmware/pull/12580))
* Add missing RGB_MODE_TWINKLE / RGB_M_TW keycodes ([#11935](https://github.com/qmk/qmk_firmware/pull/11935))
* Enhancement of WPM feature ([#11727](https://github.com/qmk/qmk_firmware/pull/11727))
* Add Per Key functionality for AutoShift ([#11536](https://github.com/qmk/qmk_firmware/pull/11536))
* LED Matrix: Reactive effect buffers & advanced indicators ([#12588](https://github.com/qmk/qmk_firmware/pull/12588))
* LED Matrix: support for Split keyboards ([#12633](https://github.com/qmk/qmk_firmware/pull/12633))
* add setting to enable infinite timeout for leader key ([#6580](https://github.com/qmk/qmk_firmware/pull/6580), [#12721](https://github.com/qmk/qmk_firmware/pull/12721 "Fix bad PR merge for #6580"))
* Update ADC driver for STM32F1xx, STM32F3xx, STM32F4xx ([#12403](https://github.com/qmk/qmk_firmware/pull/12403))
* Add initial support for tinyuf2 bootloader (when hosted on F411 blackpill) ([#12600](https://github.com/qmk/qmk_firmware/pull/12600))
* Add support for STM32F446 MCU ([#12619](https://github.com/qmk/qmk_firmware/pull/12619))
* Add STM32L433 and L443 support ([#12063](https://github.com/qmk/qmk_firmware/pull/12063))
* Added OLED fade out support ([#12086](https://github.com/qmk/qmk_firmware/pull/12086))
* New command: `qmk console` ([#12828](https://github.com/qmk/qmk_firmware/pull/12828))
* LED Matrix: Effects! ([#12651](https://github.com/qmk/qmk_firmware/pull/12651))
* Add setup, clone, and env to the list of commands we allow even with broken modules ([#12868](https://github.com/qmk/qmk_firmware/pull/12868))
* LED Matrix: Documentation ([#12685](https://github.com/qmk/qmk_firmware/pull/12685))
* Add function to allow repeated blinking of one layer ([#12237](https://github.com/qmk/qmk_firmware/pull/12237))
* Add support for up to 4 IS31FL3733 drivers ([#12342](https://github.com/qmk/qmk_firmware/pull/12342))
* Convert Encoder callbacks to be boolean functions ([#12805](https://github.com/qmk/qmk_firmware/pull/12805), [#12985](https://github.com/qmk/qmk_firmware/pull/12985))
* [Keymap] Update to Drashna keymap and user code (based on develop) ([#12936](https://github.com/qmk/qmk_firmware/pull/12936))
* Add Full-duplex serial driver for ARM boards ([#9842](https://github.com/qmk/qmk_firmware/pull/9842))
* Document LED_MATRIX_FRAMEBUFFER_EFFECTS ([#12987](https://github.com/qmk/qmk_firmware/pull/12987))
* Backlight: add defines for default level and breathing state ([#12560](https://github.com/qmk/qmk_firmware/pull/12560), [#13024](https://github.com/qmk/qmk_firmware/pull/13024))
* Add dire message about LUFA mass storage bootloader ([#13014](https://github.com/qmk/qmk_firmware/pull/13014))
### Clean-ups and Optimizations :id=core-optimizations
* Overhaul bootmagic logic to have single entrypoint ([#8532](https://github.com/qmk/qmk_firmware/pull/8532))
* Refactor of USB code within split_common ([#11890](https://github.com/qmk/qmk_firmware/pull/11890))
* Begin the process of deprecating `bin/qmk` in favor of the global CLI ([#12109](https://github.com/qmk/qmk_firmware/pull/12109))
* LED Matrix: decouple from Backlight ([#12054](https://github.com/qmk/qmk_firmware/pull/12054))
* Remove `FUNC()` ([#12161](https://github.com/qmk/qmk_firmware/pull/12161))
* Move gpio wait logic to wait.h ([#12067](https://github.com/qmk/qmk_firmware/pull/12067))
* LED Matrix: Clean up includes ([#12197](https://github.com/qmk/qmk_firmware/pull/12197))
* Consistently use bin/qmk when that script is called ([#12286](https://github.com/qmk/qmk_firmware/pull/12286))
* LED Matrix: Additional common_features.mk tweaks ([#12187](https://github.com/qmk/qmk_firmware/pull/12187))
* LED Matrix: Fix up eeconfig code ([#12327](https://github.com/qmk/qmk_firmware/pull/12327))
* Big quantum_keycodes cleanup ([#12249](https://github.com/qmk/qmk_firmware/pull/12249))
* Fix up builds that are now too big for `develop` branch. ([#12495](https://github.com/qmk/qmk_firmware/pull/12495))
* [Keyboard] kint36: switch to sym_eager_pk debouncing ([#12626](https://github.com/qmk/qmk_firmware/pull/12626))
* [Keyboard] kint2pp: reduce input latency by ≈10ms ([#12625](https://github.com/qmk/qmk_firmware/pull/12625))
* eeprom driver: Refactor where eeprom driver initialisation (and EEPROM emulation initialisation) occurs to make it non-target-specific. ([#12671](https://github.com/qmk/qmk_firmware/pull/12671))
* Change RGB/LED Matrix to use a simple define for USB suspend ([#12697](https://github.com/qmk/qmk_firmware/pull/12697), [#12770](https://github.com/qmk/qmk_firmware/pull/12770 "Fixing transport's led/rgb matrix suspend state logic"))
* Remove pointless SERIAL_LINK_ENABLE rules ([#12846](https://github.com/qmk/qmk_firmware/pull/12846))
* Make Swap Hands use PROGMEM ([#12284](https://github.com/qmk/qmk_firmware/pull/12284))
* Remove KEYMAP and LAYOUT_kc ([#12160](https://github.com/qmk/qmk_firmware/pull/12160))
* Rename `point_t` -> `led_point_t` ([#12864](https://github.com/qmk/qmk_firmware/pull/12864))
* Deprecate `send_unicode_hex_string()` ([#12602](https://github.com/qmk/qmk_firmware/pull/12602))
* [Keyboard] Remove redundant legacy and common headers for crkbd ([#13023](https://github.com/qmk/qmk_firmware/pull/13023))
### QMK Infrastructure and Internals :id=qmk-internals
* trivial change to trigger api update ([`b15288fb87`](https://github.com/qmk/qmk_firmware/commit/b15288fb87))
* fix some references to bin/qmk that slipped in ([#12832](https://github.com/qmk/qmk_firmware/pull/12832))
* Resolve a number of warnings in `qmk generate-api` ([#12833](https://github.com/qmk/qmk_firmware/pull/12833))
* Fix another bin/qmk reference ([#12856](https://github.com/qmk/qmk_firmware/pull/12856))
* Use milc.subcommand.config instead of qmk.cli.config ([#12915](https://github.com/qmk/qmk_firmware/pull/12915))

View File

@@ -29,6 +29,7 @@
* [Overview](cli.md)
* [Configuration](cli_configuration.md)
* [Commands](cli_commands.md)
* [Tab Completion](cli_tab_complete.md)
* Using QMK
* Guides
@@ -107,6 +108,7 @@
* [Haptic Feedback](feature_haptic_feedback.md)
* [Joystick](feature_joystick.md)
* [LED Indicators](feature_led_indicators.md)
* [MIDI](feature_midi.md)
* [Proton C Conversion](proton_c_conversion.md)
* [PS/2 Mouse](feature_ps2_mouse.md)
* [Split Keyboard](feature_split_keyboard.md)
@@ -119,12 +121,8 @@
* Breaking Changes
* [Overview](breaking_changes.md)
* [My Pull Request Was Flagged](breaking_changes_instructions.md)
* History
* [2020 Nov 28](ChangeLog/20201128.md)
* [2020 Aug 29](ChangeLog/20200829.md)
* [2020 May 30](ChangeLog/20200530.md)
* [2020 Feb 29](ChangeLog/20200229.md)
* [2019 Aug 30](ChangeLog/20190830.md)
* [Most Recent ChangeLog](ChangeLog/20210529.md "QMK v0.13.0 - 2021 May 29")
* [Past Breaking Changes](breaking_changes_history.md)
* C Development
* [ARM Debugging Guide](arm_debugging.md)
@@ -133,6 +131,7 @@
* [Compatible Microcontrollers](compatible_microcontrollers.md)
* [Drivers](hardware_drivers.md)
* [ADC Driver](adc_driver.md)
* [Audio Driver](audio_driver.md)
* [I2C Driver](i2c_driver.md)
* [SPI Driver](spi_driver.md)
* [WS2812 Driver](ws2812_driver.md)

View File

@@ -47,73 +47,79 @@ Note that some of these pins are doubled-up on ADCs with the same channel. This
Also note that the F0 and F3 use different numbering schemes. The F0 has a single ADC and the channels are 0-indexed, whereas the F3 has 4 ADCs and the channels are 1-indexed. This is because the F0 uses the `ADCv1` implementation of the ADC, whereas the F3 uses the `ADCv3` implementation.
|ADC|Channel|STM32F0xx|STM32F3xx|
|---|-------|---------|---------|
|1 |0 |`A0` | |
|1 |1 |`A1` |`A0` |
|1 |2 |`A2` |`A1` |
|1 |3 |`A3` |`A2` |
|1 |4 |`A4` |`A3` |
|1 |5 |`A5` |`F4` |
|1 |6 |`A6` |`C0` |
|1 |7 |`A7` |`C1` |
|1 |8 |`B0` |`C2` |
|1 |9 |`B1` |`C3` |
|1 |10 |`C0` |`F2` |
|1 |11 |`C1` | |
|1 |12 |`C2` | |
|1 |13 |`C3` | |
|1 |14 |`C4` | |
|1 |15 |`C5` | |
|1 |16 | | |
|2 |1 | |`A4` |
|2 |2 | |`A5` |
|2 |3 | |`A6` |
|2 |4 | |`A7` |
|2 |5 | |`C4` |
|2 |6 | |`C0` |
|2 |7 | |`C1` |
|2 |8 | |`C2` |
|2 |9 | |`C3` |
|2 |10 | |`F2` |
|2 |11 | |`C5` |
|2 |12 | |`B2` |
|2 |13 | | |
|2 |14 | | |
|2 |15 | | |
|2 |16 | | |
|3 |1 | |`B1` |
|3 |2 | |`E9` |
|3 |3 | |`E13` |
|3 |4 | | |
|3 |5 | | |
|3 |6 | |`E8` |
|3 |7 | |`D10` |
|3 |8 | |`D11` |
|3 |9 | |`D12` |
|3 |10 | |`D13` |
|3 |11 | |`D14` |
|3 |12 | |`B0` |
|3 |13 | |`E7` |
|3 |14 | |`E10` |
|3 |15 | |`E11` |
|3 |16 | |`E12` |
|4 |1 | |`E14` |
|4 |2 | |`B12` |
|4 |3 | |`B13` |
|4 |4 | |`B14` |
|4 |5 | |`B15` |
|4 |6 | |`E8` |
|4 |7 | |`D10` |
|4 |8 | |`D11` |
|4 |9 | |`D12` |
|4 |10 | |`D13` |
|4 |11 | |`D14` |
|4 |12 | |`D8` |
|4 |13 | |`D9` |
|4 |14 | | |
|4 |15 | | |
|4 |16 | | |
|ADC|Channel|STM32F0xx|STM32F1xx|STM32F3xx|STM32F4xx|
|---|-------|---------|---------|---------|---------|
|1 |0 |`A0` |`A0` | |`A0` |
|1 |1 |`A1` |`A1` |`A0` |`A1` |
|1 |2 |`A2` |`A2` |`A1` |`A2` |
|1 |3 |`A3` |`A3` |`A2` |`A3` |
|1 |4 |`A4` |`A4` |`A3` |`A4` |
|1 |5 |`A5` |`A5` |`F4` |`A5` |
|1 |6 |`A6` |`A6` |`C0` |`A6` |
|1 |7 |`A7` |`A7` |`C1` |`A7` |
|1 |8 |`B0` |`B0` |`C2` |`B0` |
|1 |9 |`B1` |`B1` |`C3` |`B1` |
|1 |10 |`C0` |`C0` |`F2` |`C0` |
|1 |11 |`C1` |`C1` | |`C1` |
|1 |12 |`C2` |`C2` | |`C2` |
|1 |13 |`C3` |`C3` | |`C3` |
|1 |14 |`C4` |`C4` | |`C4` |
|1 |15 |`C5` |`C5` | |`C5` |
|1 |16 | | | | |
|2 |0 | |`A0`¹ | |`A0`² |
|2 |1 | |`A1`¹ |`A4` |`A1`² |
|2 |2 | |`A2`¹ |`A5` |`A2`² |
|2 |3 | |`A3`¹ |`A6` |`A3`² |
|2 |4 | |`A4`¹ |`A7` |`A4`² |
|2 |5 | |`A5`¹ |`C4` |`A5`² |
|2 |6 | |`A6`¹ |`C0` |`A6`² |
|2 |7 | |`A7`¹ |`C1` |`A7`² |
|2 |8 | |`B0`¹ |`C2` |`B0`² |
|2 |9 | |`B1`¹ |`C3` |`B1`² |
|2 |10 | |`C0`¹ |`F2` |`C0`² |
|2 |11 | |`C1`¹ |`C5` |`C1`² |
|2 |12 | |`C2`¹ |`B2` |`C2`² |
|2 |13 | |`C3`¹ | |`C3`² |
|2 |14 | |`C4`¹ | |`C4`² |
|2 |15 | |`C5`¹ | |`C5`² |
|2 |16 | | | | |
|3 |0 | |`A0`¹ | |`A0`² |
|3 |1 | |`A1`¹ |`B1` |`A1`² |
|3 |2 | |`A2`¹ |`E9` |`A2`² |
|3 |3 | |`A3`¹ |`E13` |`A3`² |
|3 |4 | |`F6`¹ | |`F6`² |
|3 |5 | |`F7`¹ |`B13` |`F7`² |
|3 |6 | |`F8`¹ |`E8` |`F8`² |
|3 |7 | |`F9`¹ |`D10` |`F9`² |
|3 |8 | |`F10`¹ |`D11` |`F10`² |
|3 |9 | | |`D12` |`F3`² |
|3 |10 | |`C0`¹ |`D13` |`C0`² |
|3 |11 | |`C1`¹ |`D14` |`C1`² |
|3 |12 | |`C2`¹ |`B0` |`C2`² |
|3 |13 | |`C3`¹ |`E7` |`C3`² |
|3 |14 | | |`E10` |`F4`² |
|3 |15 | | |`E11` |`F5`² |
|3 |16 | | |`E12` | |
|4 |1 | | |`E14` | |
|4 |2 | | |`E15` | |
|4 |3 | | |`B12` | |
|4 |4 | | |`B14` | |
|4 |5 | | |`B15` | |
|4 |6 | | |`E8` | |
|4 |7 | | |`D10` | |
|4 |8 | | |`D11` | |
|4 |9 | | |`D12` | |
|4 |10 | | |`D13` | |
|4 |11 | | |`D14` | |
|4 |12 | | |`D8` | |
|4 |13 | | |`D9` | |
|4 |14 | | | | |
|4 |15 | | | | |
|4 |16 | | | | |
<sup>¹ As of ChibiOS 20.3.4, the ADC driver for STM32F1xx devices supports only ADC1, therefore any configurations involving ADC2 or ADC3 cannot actually be used. In particular, pins `F6``F10`, which are present at least on some STM32F103x[C-G] devices, cannot be used as ADC inputs because of this driver limitation.</sup>
<sup>² Not all STM32F4xx devices have ADC2 and/or ADC3, therefore some configurations shown in this table may be unavailable; in particular, pins `F4``F10` cannot be used as ADC inputs on devices which do not have ADC3. Check the device datasheet to confirm which pin functions are supported.</sup>
## Functions
@@ -141,10 +147,10 @@ Also note that the F0 and F3 use different numbering schemes. The F0 has a singl
The ARM implementation of the ADC has a few additional options that you can override in your own keyboards and keymaps to change how it operates. Please consult the corresponding `hal_adc_lld.h` in ChibiOS for your specific microcontroller for further documentation on your available options.
|`#define` |Type |Default |Description |
|---------------------|------|---------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|`ADC_CIRCULAR_BUFFER`|`bool`|`false` |If `true`, then the implementation will use a circular buffer. |
|`ADC_NUM_CHANNELS` |`int` |`1` |Sets the number of channels that will be scanned as part of an ADC operation. The current implementation only supports `1`. |
|`ADC_BUFFER_DEPTH` |`int` |`2` |Sets the depth of each result. Since we are only getting a 12-bit result by default, we set this to 2 bytes so we can contain our one value. This could be set to 1 if you opt for an 8-bit or lower result.|
|`ADC_SAMPLING_RATE` |`int` |`ADC_SMPR_SMP_1P5` |Sets the sampling rate of the ADC. By default, it is set to the fastest setting. |
|`ADC_RESOLUTION` |`int` |`ADC_CFGR1_RES_12BIT`|The resolution of your result. We choose 12 bit by default, but you can opt for 12, 10, 8, or 6 bit. |
|`#define` |Type |Default |Description |
|---------------------|------|----------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|`ADC_CIRCULAR_BUFFER`|`bool`|`false` |If `true`, then the implementation will use a circular buffer. |
|`ADC_NUM_CHANNELS` |`int` |`1` |Sets the number of channels that will be scanned as part of an ADC operation. The current implementation only supports `1`. |
|`ADC_BUFFER_DEPTH` |`int` |`2` |Sets the depth of each result. Since we are only getting a 10-bit result by default, we set this to 2 bytes so we can contain our one value. This could be set to 1 if you opt for an 8-bit or lower result.|
|`ADC_SAMPLING_RATE` |`int` |`ADC_SMPR_SMP_1P5` |Sets the sampling rate of the ADC. By default, it is set to the fastest setting. |
|`ADC_RESOLUTION` |`int` |`ADC_CFGR1_RES_10BIT` or `ADC_CFGR_RES_10BITS`|The resolution of your result. We choose 10 bit by default, but you can opt for 12, 10, 8, or 6 bit. Different MCUs use slightly different names for the resolution constants. |

221
docs/audio_driver.md Normal file
View File

@@ -0,0 +1,221 @@
# Audio Driver :id=audio-driver
The [Audio feature](feature_audio.md) breaks the hardware specifics out into separate, exchangeable driver units, with a common interface to the audio-"core" - which itself handles playing songs and notes while tracking their progress in an internal state, initializing/starting/stopping the driver as needed.
Not all MCUs support every available driver, either the platform-support is not there (yet?) or the MCU simply does not have the required hardware peripheral.
## AVR :id=avr
Boards built around an Atmega32U4 can use two sets of PWM capable pins, each driving a separate speaker.
The possible configurations are:
| | Timer3 | Timer1 |
|--------------|-------------|--------------|
| one speaker | C4,C5 or C6 | |
| one speaker | | B4, B5 or B7 |
| two speakers | C4,C5 or C6 | B4, B5 or B7 |
Currently there is only one/default driver for AVR based boards, which is automatically configured to:
```make
AUDIO_DRIVER = pwm_hardware
```
## ARM :id=arm
For Arm based boards, QMK depends on ChibiOS - hence any MCU supported by the later is likely usable, as long as certain hardware peripherals are available.
Supported wiring configurations, with their ChibiOS/MCU peripheral requirement are listed below;
piezo speakers are marked with :one: for the first/primary and :two: for the secondary.
| driver | GPTD6<br>Tim6 | GPTD7<br>Tim7 | GPTD8<br>Tim8 | PWMD1<sup>1</sup><br>Tim1_Ch1 |
|--------------|------------------------------------------|------------------------|---------------|-------------------------------|
| dac_basic | A4+DACD1 = :one: | A5+DACD2 = :one: | state | |
| | A4+DACD1 = :one: + Gnd | A5+DACD2 = :two: + Gnd | state | |
| | A4+DACD1 = :two: + Gnd | A5+DACD2 = :one: + Gnd | state | |
| | A4+DACD1 = :one: + Gnd | | state | |
| | | A5+DACD2 = :one: + Gnd | state | |
| dac_additive | A4+DACD1 = :one: + Gnd | | | |
| | A5+DACD2 = :one: + Gnd | | | |
| | A4+DACD1 + A5+DACD2 = :one: <sup>2</sup> | | | |
| pwm_software | state-update | | | any = :one: |
| pwm hardware | state-update | | | A8 = :one: <sup>3</sup> |
<sup>1</sup>: the routing and alternate functions for PWM differ sometimes between STM32 MCUs, if in doubt consult the data-sheet
<sup>2</sup>: one piezo connected to A4 and A5, with AUDIO_PIN_ALT_AS_NEGATIVE set
<sup>3</sup>: TIM1_CH1 = A8 on STM32F103C8, other combinations are possible, see Data-sheet. configured with: AUDIO_PWM_DRIVER and AUDIO_PWM_CHANNEL
### DAC basic :id=dac-basic
The default driver for ARM boards, in absence of an overriding configuration.
This driver needs one Timer per enabled/used DAC channel, to trigger conversion; and a third timer to trigger state updates with the audio-core.
Additionally, in the board config, you'll want to make changes to enable the DACs, GPT for Timers 6, 7 and 8:
``` c
//halconf.h:
#define HAL_USE_DAC TRUE
#define HAL_USE_GPT TRUE
#include_next <halconf.h>
```
``` c
// mcuconf.h:
#include_next <mcuconf.h>
#undef STM32_DAC_USE_DAC1_CH1
#define STM32_DAC_USE_DAC1_CH1 TRUE
#undef STM32_DAC_USE_DAC1_CH2
#define STM32_DAC_USE_DAC1_CH2 TRUE
#undef STM32_GPT_USE_TIM6
#define STM32_GPT_USE_TIM6 TRUE
#undef STM32_GPT_USE_TIM7
#define STM32_GPT_USE_TIM7 TRUE
#undef STM32_GPT_USE_TIM8
#define STM32_GPT_USE_TIM8 TRUE
```
?> Note: DAC1 (A4) uses TIM6, DAC2 (A5) uses TIM7, and the audio state timer uses TIM8 (configurable).
You can also change the timer used for the overall audio state by defining the driver. For instance:
```c
#define AUDIO_STATE_TIMER GPTD9
```
### DAC additive :id=dac-additive
only needs one timer (GPTD6, Tim6) to trigger the DAC unit to do a conversion; the audio state updates are in turn triggered during the DAC callback.
Additionally, in the board config, you'll want to make changes to enable the DACs, GPT for Timer 6:
``` c
//halconf.h:
#define HAL_USE_DAC TRUE
#define HAL_USE_GPT TRUE
#include_next <halconf.h>
```
``` c
// mcuconf.h:
#include_next <mcuconf.h>
#undef STM32_DAC_USE_DAC1_CH1
#define STM32_DAC_USE_DAC1_CH1 TRUE
#undef STM32_DAC_USE_DAC1_CH2
#define STM32_DAC_USE_DAC1_CH2 TRUE
#undef STM32_GPT_USE_TIM6
#define STM32_GPT_USE_TIM6 TRUE
```
### DAC Config
| Define | Defaults | Description --------------------------------------------------------------------------------------------- |
| `AUDIO_DAC_SAMPLE_MAX` | `4095U` | Highest value allowed. Lower value means lower volume. And 4095U is the upper limit, since this is limited to a 12 bit value. Only effects non-pregenerated samples. |
| `AUDIO_DAC_OFF_VALUE` | `AUDIO_DAC_SAMPLE_MAX / 2` | The value of the DAC when notplaying anything. Some setups may require a high (`AUDIO_DAC_SAMPLE_MAX`) or low (`0`) value here. |
| `AUDIO_MAX_SIMULTANEOUS_TONES` | __see next table__ | The number of tones that can be played simultaneously. A value that is too high may freeze the controller or glitch out when too many tones are being played. |
| `AUDIO_DAC_SAMPLE_RATE` | __see next table__ | Effective bit rate of the DAC (in hertz), higher limits simultaneous tones, and lower sacrifices quality. |
There are a number of predefined quality settings that you can use, with "sane minimum" being the default. You can use custom values by simply defining the sample rate and number of simultaneous tones, instead of using one of the listed presets.
| Define | Sample Rate | Simultaneous tones |
| `AUDIO_DAC_QUALITY_VERY_LOW` | `11025U` | `8` |
| `AUDIO_DAC_QUALITY_LOW` | `22040U` | `4` |
| `AUDIO_DAC_QUALITY_HIGH` | `44100U` | `2` |
| `AUDIO_DAC_QUALITY_VERY_HIGH` | `88200U` | `1` |
| `AUDIO_DAC_QUALITY_SANE_MINIMUM` | `16384U` | `8` |
```c
/* zero crossing (or approach, whereas zero == DAC_OFF_VALUE, which can be configured to anything from 0 to DAC_SAMPLE_MAX)
* ============================*=*========================== AUDIO_DAC_SAMPLE_MAX
* * *
* * *
* ---------------------------------------------------------
* * * } AUDIO_DAC_SAMPLE_MAX/100
* --------------------------------------------------------- AUDIO_DAC_OFF_VALUE
* * * } AUDIO_DAC_SAMPLE_MAX/100
* ---------------------------------------------------------
* *
* * *
* * *
* =====*=*================================================= 0x0
*/
```
### PWM hardware :id=pwm-hardware
This driver uses the ChibiOS-PWM system to produce a square-wave on specific output pins that are connected to the PWM hardware.
The hardware directly toggles the pin via its alternate function. See your MCU's data-sheet for which pin can be driven by what timer - looking for TIMx_CHy and the corresponding alternate function.
A configuration example for the STM32F103C8 would be:
``` c
//halconf.h:
#define HAL_USE_PWM TRUE
#define HAL_USE_PAL TRUE
#define HAL_USE_GPT TRUE
#include_next <halconf.h>
```
``` c
// mcuconf.h:
#include_next <mcuconf.h>
#undef STM32_PWM_USE_TIM1
#define STM32_PWM_USE_TIM1 TRUE
#undef STM32_GPT_USE_TIM4
#define STM32_GPT_USE_TIM4 TRUE
```
If we now target pin A8, looking through the data-sheet of the STM32F103C8, for the timers and alternate functions
- TIM1_CH1 = PA8 <- alternate0
- TIM1_CH2 = PA9
- TIM1_CH3 = PA10
- TIM1_CH4 = PA11
with all this information, the configuration would contain these lines:
``` c
//config.h:
#define AUDIO_PIN A8
#define AUDIO_PWM_DRIVER PWMD1
#define AUDIO_PWM_CHANNEL 1
#define AUDIO_STATE_TIMER GPTD4
```
ChibiOS uses GPIOv1 for the F103, which only knows of one alternate function.
On 'larger' STM32s, GPIOv2 or GPIOv3 are used; with them it is also necessary to configure `AUDIO_PWM_PAL_MODE` to the correct alternate function for the selected pin, timer and timer-channel.
### PWM software :id=pwm-software
This driver uses the PWM callbacks from PWMD1 with TIM1_CH1 to toggle the selected AUDIO_PIN in software.
During the same callback, with AUDIO_PIN_ALT_AS_NEGATIVE set, the AUDIO_PIN_ALT is toggled inversely to AUDIO_PIN. This is useful for setups that drive a piezo from two pins (instead of one and Gnd).
You can also change the timer used for software PWM by defining the driver. For instance:
```c
#define AUDIO_STATE_TIMER GPTD8
```
### Testing Notes :id=testing-notes
While not an exhaustive list, the following table provides the scenarios that have been partially validated:
| | DAC basic | DAC additive | PWM hardware | PWM software |
|--------------------------|--------------------|--------------------|--------------------|--------------------|
| Atmega32U4 | :o: | :o: | :heavy_check_mark: | :o: |
| STM32F103C8 (bluepill) | :x: | :x: | :heavy_check_mark: | :heavy_check_mark: |
| STM32F303CCT6 (proton-c) | :heavy_check_mark: | :heavy_check_mark: | ? | :heavy_check_mark: |
| STM32F405VG | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |
| L0xx | :x: (no Tim8) | ? | ? | ? |
:heavy_check_mark: : works and was tested
:o: : does not apply
:x: : not supported by MCU
*Other supported ChibiOS boards and/or pins may function, it will be highly chip and configuration dependent.*

View File

@@ -6,6 +6,8 @@ The breaking change period is when we will merge PR's that change QMK in dangero
## What has been included in past Breaking Changes?
* [2021 May 29](ChangeLog/20210529.md)
* [2021 Feb 27](ChangeLog/20210227.md)
* [2020 Nov 28](ChangeLog/20201128.md)
* [2020 Aug 29](ChangeLog/20200829.md)
* [2020 May 30](ChangeLog/20200530.md)
@@ -14,16 +16,16 @@ The breaking change period is when we will merge PR's that change QMK in dangero
## When is the next Breaking Change?
The next Breaking Change is scheduled for February 27, 2021.
The next Breaking Change is scheduled for August 28, 2021.
### Important Dates
* [x] 2020 Nov 28 - `develop` is created. Each push to `master` is subsequently merged to `develop`
* [ ] 2021 Jan 30 - `develop` closed to new PR's.
* [ ] 2021 Jan 30 - Call for testers.
* [ ] 2021 Feb 25 - `master` is locked, no PR's merged.
* [ ] 2021 Feb 27 - Merge `develop` to `master`.
* [ ] 2021 Feb 27 - `master` is unlocked. PR's can be merged again.
* [x] 2021 May 29 - `develop` is created. Each push to `master` is subsequently merged to `develop`
* [ ] 2021 Jul 31 - `develop` closed to new PR's.
* [ ] 2021 Jul 31 - Call for testers.
* [ ] 2021 Aug 26 - `master` is locked, no PR's merged.
* [ ] 2021 Aug 28 - Merge `develop` to `master`.
* [ ] 2021 Aug 28 - `master` is unlocked. PR's can be merged again.
## What changes will be included?

View File

@@ -0,0 +1,11 @@
# Past Breaking Changes
This page links to all previous changelogs from the QMK Breaking Changes process.
* [2021 May 29](ChangeLog/20210529.md) - version 0.13.0
* [2021 Feb 27](ChangeLog/20210227.md) - version 0.12.0
* [2020 Nov 28](ChangeLog/20201128.md) - version 0.11.0
* [2020 Aug 29](ChangeLog/20200829.md) - version 0.10.0
* [2020 May 30](ChangeLog/20200530.md) - version 0.9.0
* [2020 Feb 29](ChangeLog/20200229.md) - version 0.8.0
* [2019 Aug 30](ChangeLog/20190830.md) - version 0.7.0

View File

@@ -107,6 +107,54 @@ This command lets you configure the behavior of QMK. For the full `qmk config` d
qmk config [-ro] [config_token1] [config_token2] [...] [config_tokenN]
```
## `qmk console`
This command lets you connect to keyboard consoles to get debugging messages. It only works if your keyboard firmware has been compiled with `CONSOLE_ENABLED=yes`.
**Usage**:
```
qmk console [-d <pid>:<vid>[:<index>]] [-l] [-n] [-t] [-w <seconds>]
```
**Examples**:
Connect to all available keyboards and show their console messages:
```
qmk console
```
List all devices:
```
qmk console -l
```
Show only messages from clueboard/66/rev3 keyboards:
```
qmk console -d C1ED:2370
```
Show only messages from the second clueboard/66/rev3:
```
qmk console -d C1ED:2370:2
```
Show timestamps and VID:PID instead of names:
```
qmk console -n -t
```
Disable bootloader messages:
```
qmk console --no-bootloaders
```
## `qmk doctor`
This command examines your environment and alerts you to potential build or flash problems. It can fix many of them if you want it to.
@@ -131,6 +179,16 @@ Check your environment and report problems only:
qmk doctor -n
## `qmk format-json`
Formats a JSON file in a (mostly) human-friendly way. Will usually correctly detect the format of the JSON (info.json or keymap.json) but you can override this with `--format` if neccesary.
**Usage**:
```
qmk format-json [-f FORMAT] <json_file>
```
## `qmk info`
Displays information about keyboards and keymaps in QMK. You can use this to get information about a keyboard, show the layouts, display the underlying key matrix, or to pretty-print JSON keymaps.
@@ -170,7 +228,7 @@ qmk json2c [-o OUTPUT] filename
## `qmk c2json`
Creates a keymap.json from a keymap.c.
**Note:** Parsing C source files is not easy, therefore this subcommand may not work your keymap. In some cases not using the C pre-processor helps.
**Note:** Parsing C source files is not easy, therefore this subcommand may not work with your keymap. In some cases not using the C pre-processor helps.
**Usage**:
@@ -218,6 +276,18 @@ This command is directory aware. It will automatically fill in KEYBOARD if you a
qmk list-keymaps -kb planck/ez
```
## `qmk new-keyboard`
This command creates a new keyboard based on available templates.
This command will prompt for input to guide you though the generation process.
**Usage**:
```
qmk new-keyboard
```
## `qmk new-keymap`
This command creates a new keymap based on a keyboard's existing default keymap.

27
docs/cli_tab_complete.md Normal file
View File

@@ -0,0 +1,27 @@
# Tab Completion for QMK
If you are using Bash 4.2 or later, Zsh, or FiSH you can enable Tab Completion for the QMK CLI. This will let you tab complete the names of flags, keyboards, files, and other `qmk` options.
## Setup
There are several ways you can setup tab completion.
### For Your User Only
Add this to the end of your `.profile` or `.bashrc`:
source ~/qmk_firmware/util/qmk_tab_complete.sh
If you put `qmk_firmware` into another location you will need to adjust this path.
### System Wide Symlink
If you want the tab completion available to all users of the system you can add a symlink to the `qmk_tab_complete.sh` script:
`ln -s ~/qmk_firmware/util/qmk_tab_complete.sh /etc/profile.d/qmk_tab_complete.sh`
### System Wide Copy
In some cases a symlink may not work. Instead you can copy the file directly into place. Be aware that updates to the tab complete script may happen from time to time, you will want to recopy the file periodically.
cp util/qmk_tab_complete.sh /etc/profile.d

View File

@@ -26,6 +26,13 @@ You can also use any ARM chip with USB that [ChibiOS](https://www.chibios.org) s
* [STM32F0x2](https://www.st.com/en/microcontrollers-microprocessors/stm32f0x2.html)
* [STM32F103](https://www.st.com/en/microcontrollers-microprocessors/stm32f103.html)
* [STM32F303](https://www.st.com/en/microcontrollers-microprocessors/stm32f303.html)
* [STM32F401](https://www.st.com/en/microcontrollers-microprocessors/stm32f401.html)
* [STM32F411](https://www.st.com/en/microcontrollers-microprocessors/stm32f411.html)
* [STM32F446](https://www.st.com/en/microcontrollers-microprocessors/stm32f446.html)
* [STM32G431](https://www.st.com/en/microcontrollers-microprocessors/stm32g4x1.html)
* [STM32G474](https://www.st.com/en/microcontrollers-microprocessors/stm32g4x4.html)
* [STM32L433](https://www.st.com/en/microcontrollers-microprocessors/stm32l4x3.html)
* [STM32L443](https://www.st.com/en/microcontrollers-microprocessors/stm32l4x3.html)
### NXP (Kinetis)

View File

@@ -67,16 +67,22 @@ This is a C header file that is one of the first things included, and will persi
* turns on the alternate audio voices (to cycle through)
* `#define C4_AUDIO`
* enables audio on pin C4
* Deprecated. Use `#define AUDIO_PIN C4`
* `#define C5_AUDIO`
* enables audio on pin C5
* Deprecated. Use `#define AUDIO_PIN C5`
* `#define C6_AUDIO`
* enables audio on pin C6
* Deprecated. Use `#define AUDIO_PIN C6`
* `#define B5_AUDIO`
* enables audio on pin B5 (duophony is enables if one of B[5-7]\_AUDIO is enabled along with one of C[4-6]\_AUDIO)
* enables audio on pin B5 (duophony is enabled if one of B pins is enabled along with one of C pins)
* Deprecated. Use `#define AUDIO_PIN B5`, or use `#define AUDIO_PIN_ALT B5` if a `C` pin is enabled with `AUDIO_PIN`
* `#define B6_AUDIO`
* enables audio on pin B6 (duophony is enables if one of B[5-7]\_AUDIO is enabled along with one of C[4-6]\_AUDIO)
* enables audio on pin B6 (duophony is enabled if one of B pins is enabled along with one of C pins)
* Deprecated. Use `#define AUDIO_PIN B6`, or use `#define AUDIO_PIN_ALT B6` if a `C` pin is enabled with `AUDIO_PIN`
* `#define B7_AUDIO`
* enables audio on pin B7 (duophony is enables if one of B[5-7]\_AUDIO is enabled along with one of C[4-6]\_AUDIO)
* enables audio on pin B7 (duophony is enabled if one of B pins is enabled along with one of C pins)
* Deprecated. Use `#define AUDIO_PIN B7`, or use `#define AUDIO_PIN_ALT B7` if a `C` pin is enabled with `AUDIO_PIN`
* `#define BACKLIGHT_PIN B7`
* pin of the backlight
* `#define BACKLIGHT_LEVELS 3`
@@ -97,6 +103,8 @@ This is a C header file that is one of the first things included, and will persi
* sets the maximum power (in mA) over USB for the device (default: 500)
* `#define USB_POLLING_INTERVAL_MS 10`
* sets the USB polling rate in milliseconds for the keyboard, mouse, and shared (NKRO/media keys) interfaces
* `#define USB_SUSPEND_WAKEUP_DELAY 200`
* set the number of milliseconde to pause after sending a wakeup packet
* `#define F_SCL 100000L`
* sets the I2C clock rate speed for keyboards using I2C. The default is `400000L`, except for keyboards using `split_common`, where the default is `100000L`.

View File

@@ -12,17 +12,18 @@ Now we have support for generating `rules.mk` and `config.h` values from `info.j
## Overview
On the C side of things nothing really changes. When you need to create a new rule or define you follow the same process:
On the C side of things nothing changes. When you need to create a new rule or define you follow the same process:
1. Add it to `docs/config_options.md`
1. Set a default in the appropriate core file
1. Add your `ifdef` and/or `#ifdef` statements as needed
1. Add your ifdef statements as needed
You will then need to add support for your new configuration to `info.json`. The basic process is:
1. Add it to the schema in `data/schemas/keyboards.jsonschema`
1. Add code to extract it from `config.h`/`rules.mk` to `lib/python/qmk/info.py`
1. Add code to generate it to one of:
1. Add a mapping in `data/maps`
1. (optional and discoraged) Add code to extract/generate it to:
* `lib/python/qmk/info.py`
* `lib/python/qmk/cli/generate/config_h.py`
* `lib/python/qmk/cli/generate/rules_mk.py`
@@ -32,12 +33,43 @@ This section describes adding support for a `config.h`/`rules.mk` value to info.
### Add it to the schema
QMK maintains schema files in `data/schemas`. The values that go into keyboard-specific `info.json` files are kept in `keyboard.jsonschema`. Any value you want to make available to end users to edit must go in here.
QMK maintains [jsonschema](https://json-schema.org/) files in `data/schemas`. The values that go into keyboard-specific `info.json` files are kept in `keyboard.jsonschema`. Any value you want to make available to end users to edit must go in here.
In some cases you can simply add a new top-level key. Some examples to follow are `keyboard_name`, `maintainer`, `processor`, and `url`. This is appropriate when your option is self-contained and not directly related to other options. In other cases you should group like options together in an `object`. This is particularly true when adding support for a feature. Some examples to follow for this are `indicators`, `matrix_pins`, and `rgblight`. If you are not sure how to integrate your new option(s) [open an issue](https://github.com/qmk/qmk_firmware/issues/new?assignees=&labels=cli%2C+python&template=other_issues.md&title=) or [join #cli on Discord](https://discord.gg/heQPAgy) and start a conversation there.
In some cases you can simply add a new top-level key. Some examples to follow are `keyboard_name`, `maintainer`, `processor`, and `url`. This is appropriate when your option is self-contained and not directly related to other options.
In other cases you should group like options together in an `object`. This is particularly true when adding support for a feature. Some examples to follow for this are `indicators`, `matrix_pins`, and `rgblight`. If you are not sure how to integrate your new option(s) [open an issue](https://github.com/qmk/qmk_firmware/issues/new?assignees=&labels=cli%2C+python&template=other_issues.md&title=) or [join #cli on Discord](https://discord.gg/heQPAgy) and start a conversation there.
### Add a mapping
In most cases you can add a simple mapping. These are maintained as JSON files in `data/mappings/info_config.json` and `data/mappings/info_rules.json`, and control mapping for `config.h` and `rules.mk`, respectively. Each mapping is keyed by the `config.h` or `rules.mk` variable, and the value is a hash with the following keys:
* `info_key`: (required) The location within `info.json` for this value. See below.
* `value_type`: (optional) Default `str`. The format for this variable's value. See below.
* `to_json`: (optional) Default `true`. Set to `false` to exclude this mapping from info.json
* `to_c`: (optional) Default `true`. Set to `false` to exclude this mapping from config.h
* `warn_duplicate`: (optional) Default `true`. Set to `false` to turn off warning when a value exists in both places
#### Info Key
We use JSON dot notation to address variables within info.json. For example, to access `info_json["rgblight"]["split_count"]` I would specify `rgblight.split_count`. This allows you to address deeply nested keys with a simple string.
Under the hood we use [Dotty Dict](https://dotty-dict.readthedocs.io/en/latest/), you can refer to that documentation for how these strings are converted to object access.
#### Value Types
By default we treat all values as simple strings. If your value is more complex you can use one of these types to intelligently parse the data:
* `array`: A comma separated array of strings
* `array.int`: A comma separated array of integers
* `int`: An integer
* `hex`: A number formatted as hex
* `list`: A space separate array of strings
* `mapping`: A hash of key/value pairs
### Add code to extract it
Most use cases can be solved by the mapping files described above. If yours can't you can instead write code to extract your config values.
Whenever QMK generates a complete `info.json` it extracts information from `config.h` and `rules.mk`. You will need to add code for your new config value to `lib/python/qmk/info.py`. Typically this means adding a new `_extract_<feature>()` function and then calling your function in either `_extract_config_h()` or `_extract_rules_mk()`.
If you are not sure how to edit this file or are not comfortable with Python [open an issue](https://github.com/qmk/qmk_firmware/issues/new?assignees=&labels=cli%2C+python&template=other_issues.md&title=) or [join #cli on Discord](https://discord.gg/heQPAgy) and someone can help you with this part.

View File

@@ -109,6 +109,19 @@ If you can't get this 'Listening:' message try building with `CONSOLE_ENABLE=yes
You may need privileges to access the device an OS like Linux. Try `sudo hid_listen`.
On many Linux distros you can avoid having to run hid_listen as root
by creating a file called `/etc/udev/rules.d/70-hid-listen.rules` with
the following content:
```
SUBSYSTEM=="hidraw", ATTRS{idVendor}=="abcd", ATTRS{idProduct}=="def1", TAG+="uaccess", RUN{builtin}+="uaccess"
```
Replace abcd and def1 with your keyboard's vendor and product id,
letters must be lowercase. The `RUN{builtin}+="uaccess"` part is only
needed for older distros.
## Can't Get Message on Console
Check:
- *hid_listen* finds your device. See above.

View File

@@ -23,6 +23,141 @@ These allow you to combine a modifier with a keycode. When pressed, the keydown
You can also chain them, for example `LCTL(LALT(KC_DEL))` or `C(A(KC_DEL))` makes a key that sends Control+Alt+Delete with a single keypress.
# Checking Modifier State :id=checking-modifier-state
The current modifier state can mainly be accessed with two functions: `get_mods()` for normal modifiers and modtaps and `get_oneshot_mods()` for one-shot modifiers (unless they're held, in which case they act like normal modifier keys).
The presence of one or more specific modifiers in the current modifier state can be detected by ANDing the modifier state with a mod mask corresponding to the set of modifiers you want to match for. The reason why bitwise operators are used is that the modifier state is stored as a single byte in the format (GASC)<sub>R</sub>(GASC)<sub>L</sub>.
Thus, to give an example, `01000010` would be the internal representation of LShift+RAlt.
For more information on bitwise operators in C, click [here](https://en.wikipedia.org/wiki/Bitwise_operations_in_C) to open the Wikipedia page on the topic.
In practice, this means that you can check whether a given modifier is active with `get_mods() & MOD_BIT(KC_<modifier>)` (see the [list of modifier keycodes](keycodes_basic.md#modifiers)) or with `get_mods() & MOD_MASK_<modifier>` if the difference between left and right hand modifiers is not important and you want to match both. Same thing can be done for one-shot modifiers if you replace `get_mods()` with `get_oneshot_mods()`.
To check that *only* a specific set of mods is active at a time, AND the modifier state and your desired mod mask as explained above and compare the result to the mod mask itself: `get_mods() & <mod mask> == <mod mask>`.
For example, let's say you want to trigger a piece of custom code if one-shot left control and one-shot left shift are on but every other one-shot mods are off. To do so, you can compose the desired mod mask by combining the mod bits for left control and shift with `(MOD_BIT(KC_LCTL) | MOD_BIT(KC_LSFT))` and then plug it in: `get_oneshot_mods & (MOD_BIT(KC_LCTL) | MOD_BIT(KC_LSFT)) == (MOD_BIT(KC_LCTL) | MOD_BIT(KC_LSFT))`. Using `MOD_MASK_CS` instead for the mod bitmask would have forced you to press four modifier keys (both versions of control and shift) to fulfill the condition.
The full list of mod masks is as follows:
| Mod Mask Name | Matching Modifiers |
|--------------------|------------------------------------------------|
| `MOD_MASK_CTRL` | LCTRL , RCTRL |
| `MOD_MASK_SHIFT` | LSHIFT , RSHIFT |
| `MOD_MASK_ALT` | LALT , RALT |
| `MOD_MASK_GUI` | LGUI , RGUI |
| `MOD_MASK_CS` | CTRL , SHIFT |
| `MOD_MASK_CA` | (L/R)CTRL , (L/R)ALT |
| `MOD_MASK_CG` | (L/R)CTRL , (L/R)GUI |
| `MOD_MASK_SA` | (L/R)SHIFT , (L/R)ALT |
| `MOD_MASK_SG` | (L/R)SHIFT , (L/R)GUI |
| `MOD_MASK_AG` | (L/R)ALT , (L/R)GUI |
| `MOD_MASK_CSA` | (L/R)CTRL , (L/R)SHIFT , (L/R)ALT |
| `MOD_MASK_CSG` | (L/R)CTRL , (L/R)SHIFT , (L/R)GUI |
| `MOD_MASK_CAG` | (L/R)CTRL , (L/R)ALT , (L/R)GUI |
| `MOD_MASK_SAG` | (L/R)SHIFT , (L/R)ALT , (L/R)GUI |
| `MOD_MASK_CSAG` | (L/R)CTRL , (L/R)SHIFT , (L/R)ALT , (L/R)GUI |
Aside from accessing the currently active modifiers using `get_mods()`, there exists some other functions you can use to modify the modifier state, where the `mods` argument refers to the modifiers bitmask.
* `add_mods(mods)`: Enable `mods` without affecting any other modifiers
* `register_mods(mods)`: Like `add_mods` but send a keyboard report immediately.
* `del_mods(mods)`: Disable `mods` without affecting any other modifiers
* `unregister_mods(mods)`: Like `del_mods` but send a keyboard report immediately.
* `set_mods(mods)`: Overwrite current modifier state with `mods`
* `clear_mods()`: Reset the modifier state by disabling all modifiers
Similarly, in addition to `get_oneshot_mods()`, there also exists these functions for one-shot mods:
* `add_oneshot_mods(mods)`: Enable `mods` without affecting any other one-shot modifiers
* `del_oneshot_mods(mods)`: Disable `mods` without affecting any other one-shot modifiers
* `set_oneshot_mods(mods)`: Overwrite current one-shot modifier state with `mods`
* `clear_oneshot_mods()`: Reset the one-shot modifier state by disabling all one-shot modifiers
## Examples :id=examples
The following examples use [advanced macro functions](feature_macros.md#advanced-macro-functions) which you can read more about in the [documentation page on macros](feature_macros.md).
### Alt + Escape for Alt + Tab :id=alt-escape-for-alt-tab
Simple example where chording Left Alt with `KC_ESC` makes it behave like `KC_TAB` for alt-tabbing between applications. This example strictly checks if only Left Alt is active, meaning you can't do Alt+Shift+Esc to switch between applications in reverse order. Also keep in mind that this removes the ability to trigger the actual Alt+Escape keyboard shortcut, though it keeps the ability to do AltGr+Escape.
```c
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
switch (keycode) {
case KC_ESC:
// Detect the activation of only Left Alt
if ((get_mods() & MOD_BIT(KC_LALT)) == MOD_BIT(KC_LALT)) {
if (record->event.pressed) {
// No need to register KC_LALT because it's already active.
// The Alt modifier will apply on this KC_TAB.
register_code(KC_TAB);
} else {
unregister_code(KC_TAB);
}
// Do not let QMK process the keycode further
return false;
}
// Else, let QMK process the KC_ESC keycode as usual
return true;
}
return true;
};
```
### Shift + Backspace for Delete :id=shift-backspace-for-delete
Advanced example where the original behaviour of shift is cancelled when chorded with `KC_BSPC` and is instead fully replaced by `KC_DEL`. Two main variables are created to make this work well: `mod_state` and `delkey_registered`. The first one stores the modifier state and is used to restore it after registering `KC_DEL`. The second variable is a boolean variable (true or false) which keeps track of the status of `KC_DEL` to manage the release of the whole Backspace/Delete key correctly.
As opposed to the previous example, this doesn't use strict modifier checking. Pressing `KC_BSPC` while one or two shifts are active is enough to trigger this custom code, regardless of the state of other modifiers. That approach offers some perks: Ctrl+Shift+Backspace lets us delete the next word (Ctrl+Delete) and Ctrl+Alt+Shift+Backspace lets us execute the Ctrl+Alt+Del keyboard shortcut.
```c
// Initialize variable holding the binary
// representation of active modifiers.
uint8_t mod_state;
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
// Store the current modifier state in the variable for later reference
mod_state = get_mods();
switch (keycode) {
case KC_BSPC:
{
// Initialize a boolean variable that keeps track
// of the delete key status: registered or not?
static bool delkey_registered;
if (record->event.pressed) {
// Detect the activation of either shift keys
if (mod_state & MOD_MASK_SHIFT) {
// First temporarily canceling both shifts so that
// shift isn't applied to the KC_DEL keycode
del_mods(MOD_MASK_SHIFT);
register_code(KC_DEL);
// Update the boolean variable to reflect the status of KC_DEL
delkey_registered = true;
// Reapplying modifier state so that the held shift key(s)
// still work even after having tapped the Backspace/Delete key.
set_mods(mod_state);
return false;
}
} else { // on release of KC_BSPC
// In case KC_DEL is still being sent even after the release of KC_BSPC
if (delkey_registered) {
unregister_code(KC_DEL);
delkey_registered = false;
return false;
}
}
// Let QMK process the KC_BSPC keycode as usual outside of shift
return true;
}
}
return true;
};
```
# Legacy Content :id=legacy-content
This page used to encompass a large set of features. We have moved many sections that used to be part of this page to their own pages. Everything below this point is simply a redirect so that people following old links on the web find what they're looking for.

View File

@@ -1,21 +1,117 @@
# Audio
Your keyboard can make sounds! If you've got a Planck, Preonic, or basically any AVR keyboard that allows access to certain PWM-capable pins, you can hook up a simple speaker and make it beep. You can use those beeps to indicate layer transitions, modifiers, special keys, or just to play some funky 8bit tunes.
Your keyboard can make sounds! If you've got a spare pin you can hook up a simple speaker and make it beep. You can use those beeps to indicate layer transitions, modifiers, special keys, or just to play some funky 8bit tunes.
Up to two simultaneous audio voices are supported, one driven by timer 1 and another driven by timer 3. The following pins can be defined as audio outputs in config.h:
To activate this feature, add `AUDIO_ENABLE = yes` to your `rules.mk`.
Timer 1:
`#define B5_AUDIO`
`#define B6_AUDIO`
`#define B7_AUDIO`
## AVR based boards
On Atmega32U4 based boards, up to two simultaneous tones can be rendered.
With one speaker connected to a PWM capable pin on PORTC driven by timer 3 and the other on one of the PWM pins on PORTB driven by timer 1.
Timer 3:
`#define C4_AUDIO`
`#define C5_AUDIO`
`#define C6_AUDIO`
The following pins can be configured as audio outputs in `config.h` - for one speaker set either one out of:
If you add `AUDIO_ENABLE = yes` to your `rules.mk`, there's a couple different sounds that will automatically be enabled without any other configuration:
* `#define AUDIO_PIN C4`
* `#define AUDIO_PIN C5`
* `#define AUDIO_PIN C6`
* `#define AUDIO_PIN B5`
* `#define AUDIO_PIN B6`
* `#define AUDIO_PIN B7`
and *optionally*, for a second speaker, one of:
* `#define AUDIO_PIN_ALT B5`
* `#define AUDIO_PIN_ALT B6`
* `#define AUDIO_PIN_ALT B7`
### Wiring
per speaker is - for example with a piezo buzzer - the black lead to Ground, and the red lead connected to the selected AUDIO_PIN for the primary; and similarly with AUDIO_PIN_ALT for the secondary.
## ARM based boards
for more technical details, see the notes on [Audio driver](audio_driver.md).
<!-- because I'm not sure where to fit this in: https://waveeditonline.com/ -->
### DAC (basic)
Most STM32 MCUs have DAC peripherals, with a notable exception of the STM32F1xx series. Generally, the DAC peripheral drives pins A4 or A5. To enable DAC-based audio output on STM32 devices, add `AUDIO_DRIVER = dac_basic` to `rules.mk` and set in `config.h` either:
`#define AUDIO_PIN A4` or `#define AUDIO_PIN A5`
the other DAC channel can optionally be used with a secondary speaker, just set:
`#define AUDIO_PIN_ALT A4` or `#define AUDIO_PIN_ALT A5`
Do note though that the dac_basic driver is only capable of reproducing one tone per speaker/channel at a time, for more tones simultaneously, try the dac_additive driver.
#### Wiring:
for two piezos, for example configured as `AUDIO_PIN A4` and `AUDIO_PIN_ALT A5` would be: red lead to A4 and black to Ground, and similarly with the second one: A5 = red, and Ground = black
another alternative is to drive *one* piezo with both DAC pins - for an extra "push".
wiring red to A4 and black to A5 (or the other way round) and add `#define AUDIO_PIN_ALT_AS_NEGATIVE` to `config.h`
##### Proton-C Example:
The Proton-C comes (optionally) with one 'builtin' piezo, which is wired to A4+A5.
For this board `config.h` would include these defines:
```c
#define AUDIO_PIN A5
#define AUDIO_PIN_ALT A4
#define AUDIO_PIN_ALT_AS_NEGATIVE
```
### DAC (additive)
Another option, besides dac_basic (which produces sound through a square-wave), is to use the DAC to do additive wave synthesis.
With a number of predefined wave-forms or by providing your own implementation to generate samples on the fly.
To use this feature set `AUDIO_DRIVER = dac_additive` in your `rules.mk`, and select in `config.h` EITHER `#define AUDIO_PIN A4` or `#define AUDIO_PIN A5`.
The used waveform *defaults* to sine, but others can be selected by adding one of the following defines to `config.h`:
* `#define AUDIO_DAC_SAMPLE_WAVEFORM_SINE`
* `#define AUDIO_DAC_SAMPLE_WAVEFORM_TRIANGLE`
* `#define AUDIO_DAC_SAMPLE_WAVEFORM_TRAPEZOID`
* `#define AUDIO_DAC_SAMPLE_WAVEFORM_SQUARE`
Should you rather choose to generate and use your own sample-table with the DAC unit, implement `uint16_t dac_value_generate(void)` with your keyboard - for an example implementation see keyboards/planck/keymaps/synth_sample or keyboards/planck/keymaps/synth_wavetable
### PWM (software)
if the DAC pins are unavailable (or the MCU has no usable DAC at all, like STM32F1xx); PWM can be an alternative.
Note that there is currently only one speaker/pin supported.
set in `rules.mk`:
`AUDIO_DRIVER = pwm_software` and in `config.h`:
`#define AUDIO_PIN C13` (can be any pin) to have the selected pin output a pwm signal, generated from a timer callback which toggles the pin in software.
#### Wiring
the usual piezo wiring: red goes to the selected AUDIO_PIN, black goes to ground.
OR if you can chose to drive one piezo with two pins, for example `#define AUDIO_PIN B1`, `#define AUDIO_PIN_ALT B2` in `config.h`, with `#define AUDIO_PIN_ALT_AS_NEGATIVE` - then the red lead could go to B1, the black to B2.
### PWM (hardware)
STM32F1xx have to fall back to using PWM, but can do so in hardware; but again on currently only one speaker/pin.
`AUDIO_DRIVER = pwm_hardware` in `rules.mk`, and in `config.h`:
`#define AUDIO_PIN A8`
`#define AUDIO_PWM_DRIVER PWMD1`
`#define AUDIO_PWM_CHANNEL 1`
(as well as `#define AUDIO_PWM_PAL_MODE 42` if you are on STM32F2 or larger)
which will use Timer 1 to directly drive pin PA8 through the PWM hardware (TIM1_CH1 = PA8).
Should you want to use the pwm-hardware on another pin and timer - be ready to dig into the STM32 data-sheet to pick the right TIMx_CHy and pin-alternate function.
## Tone Multiplexing
Since most drivers can only render one tone per speaker at a time (with the one exception: arm dac-additive) there also exists a "workaround-feature" that does time-slicing/multiplexing - which does what the name implies: cycle through a set of active tones (e.g. when playing chords in Music Mode) at a given rate, and put one tone at a time out through the one/few speakers that are available.
To enable this feature, and configure a starting-rate, add the following defines to `config.h`:
```c
#define AUDIO_ENABLE_TONE_MULTIPLEXING
#define AUDIO_TONE_MULTIPLEXING_RATE_DEFAULT 10
```
The audio core offers interface functions to get/set/change the tone multiplexing rate from within `keymap.c`.
## Songs
There's a couple of different sounds that will automatically be enabled without any other configuration:
```
STARTUP_SONG // plays when the keyboard starts up (audio.c)
GOODBYE_SONG // plays when you press the RESET key (quantum.c)
@@ -67,15 +163,34 @@ The available keycodes for audio are:
* `AU_OFF` - Turn Audio Feature off
* `AU_TOG` - Toggle Audio Feature state
!> These keycodes turn all of the audio functionality on and off. Turning it off means that audio feedback, audio clicky, music mode, etc. are disabled, completely.
!> These keycodes turn all of the audio functionality on and off. Turning it off means that audio feedback, audio clicky, music mode, etc. are disabled, completely.
## Tempo
the 'speed' at which SONGs are played is dictated by the set Tempo, which is measured in beats-per-minute. Note lengths are defined relative to that.
The initial/default tempo is set to 120 bpm, but can be configured by setting `TEMPO_DEFAULT` in `config.c`.
There is also a set of functions to modify the tempo from within the user/keymap code:
```c
void audio_set_tempo(uint8_t tempo);
void audio_increase_tempo(uint8_t tempo_change);
void audio_decrease_tempo(uint8_t tempo_change);
```
## ARM Audio Volume
For ARM devices, you can adjust the DAC sample values. If your board is too loud for you or your coworkers, you can set the max using `DAC_SAMPLE_MAX` in your `config.h`:
For ARM devices, you can adjust the DAC sample values. If your board is too loud for you or your coworkers, you can set the max using `AUDIO_DAC_SAMPLE_MAX` in your `config.h`:
```c
#define DAC_SAMPLE_MAX 65535U
#define AUDIO_DAC_SAMPLE_MAX 4095U
```
the DAC usually runs in 12Bit mode, hence a volume of 100% = 4095U
Note: this only adjusts the volume aka 'works' if you stick to WAVEFORM_SQUARE, since its samples are generated on the fly - any other waveform uses a hardcoded/precomputed sample-buffer.
## Voices
Aka "audio effects", different ones can be enabled by setting in `config.h` these defines:
`#define AUDIO_VOICES` to enable the feature, and `#define AUDIO_VOICE_DEFAULT something` to select a specific effect
for details see quantum/audio/voices.h and .c
## Music Mode
@@ -176,7 +291,7 @@ You can configure the default, min and max frequencies, the stepping and built i
|--------|---------------|-------------|
| `AUDIO_CLICKY_FREQ_DEFAULT` | 440.0f | Sets the default/starting audio frequency for the clicky sounds. |
| `AUDIO_CLICKY_FREQ_MIN` | 65.0f | Sets the lowest frequency (under 60f are a bit buggy). |
| `AUDIO_CLICKY_FREQ_MAX` | 1500.0f | Sets the the highest frequency. Too high may result in coworkers attacking you. |
| `AUDIO_CLICKY_FREQ_MAX` | 1500.0f | Sets the highest frequency. Too high may result in coworkers attacking you. |
| `AUDIO_CLICKY_FREQ_FACTOR` | 1.18921f| Sets the stepping of UP/DOWN key codes. This is a multiplicative factor. The default steps the frequency up/down by a musical minor third. |
| `AUDIO_CLICKY_FREQ_RANDOMNESS` | 0.05f | Sets a factor of randomness for the clicks, Setting this to `0f` will make each click identical, and `1.0f` will make this sound much like the 90's computer screen scrolling/typing effect. |
| `AUDIO_CLICKY_DELAY_DURATION` | 1 | An integer note duration where 1 is 1/16th of the tempo, or a sixty-fourth note (see `quantum/audio/musical_notes.h` for implementation details). The main clicky effect will be delayed by this duration. Adjusting this to values around 6-12 will help compensate for loud switches. |
@@ -186,8 +301,7 @@ You can configure the default, min and max frequencies, the stepping and built i
## MIDI Functionality
This is still a WIP, but check out `quantum/process_keycode/process_midi.c` to see what's happening. Enable from the Makefile.
See [MIDI](feature_midi.md)
## Audio Keycodes
@@ -204,120 +318,3 @@ This is still a WIP, but check out `quantum/process_keycode/process_midi.c` to s
|`MU_OFF` | |Turns off Music Mode |
|`MU_TOG` | |Toggles Music Mode |
|`MU_MOD` | |Cycles through the music modes |
<!-- FIXME: this formatting needs work
## Audio
```c
#ifdef AUDIO_ENABLE
AU_ON,
AU_OFF,
AU_TOG,
#ifdef FAUXCLICKY_ENABLE
FC_ON,
FC_OFF,
FC_TOG,
#endif
// Music mode on/off/toggle
MU_ON,
MU_OFF,
MU_TOG,
// Music voice iterate
MUV_IN,
MUV_DE,
#endif
```
### Midi
#if !MIDI_ENABLE_STRICT || (defined(MIDI_ENABLE) && defined(MIDI_BASIC))
MI_ON, // send midi notes when music mode is enabled
MI_OFF, // don't send midi notes when music mode is enabled
#endif
MIDI_TONE_MIN,
MIDI_TONE_MAX
MI_C = MIDI_TONE_MIN,
MI_Cs,
MI_Db = MI_Cs,
MI_D,
MI_Ds,
MI_Eb = MI_Ds,
MI_E,
MI_F,
MI_Fs,
MI_Gb = MI_Fs,
MI_G,
MI_Gs,
MI_Ab = MI_Gs,
MI_A,
MI_As,
MI_Bb = MI_As,
MI_B,
MIDI_TONE_KEYCODE_OCTAVES > 1
where x = 1-5:
MI_C_x,
MI_Cs_x,
MI_Db_x = MI_Cs_x,
MI_D_x,
MI_Ds_x,
MI_Eb_x = MI_Ds_x,
MI_E_x,
MI_F_x,
MI_Fs_x,
MI_Gb_x = MI_Fs_x,
MI_G_x,
MI_Gs_x,
MI_Ab_x = MI_Gs_x,
MI_A_x,
MI_As_x,
MI_Bb_x = MI_As_x,
MI_B_x,
MI_OCT_Nx 1-2
MI_OCT_x 0-7
MIDI_OCTAVE_MIN = MI_OCT_N2,
MIDI_OCTAVE_MAX = MI_OCT_7,
MI_OCTD, // octave down
MI_OCTU, // octave up
MI_TRNS_Nx 1-6
MI_TRNS_x 0-6
MIDI_TRANSPOSE_MIN = MI_TRNS_N6,
MIDI_TRANSPOSE_MAX = MI_TRNS_6,
MI_TRNSD, // transpose down
MI_TRNSU, // transpose up
MI_VEL_x 1-10
MIDI_VELOCITY_MIN = MI_VEL_1,
MIDI_VELOCITY_MAX = MI_VEL_9,
MI_VELD, // velocity down
MI_VELU, // velocity up
MI_CHx 1-16
MIDI_CHANNEL_MIN = MI_CH1
MIDI_CHANNEL_MAX = MI_CH16,
MI_CHD, // previous channel
MI_CHU, // next channel
MI_ALLOFF, // all notes off
MI_SUS, // sustain
MI_PORT, // portamento
MI_SOST, // sostenuto
MI_SOFT, // soft pedal
MI_LEG, // legato
MI_MOD, // modulation
MI_MODSD, // decrease modulation speed
MI_MODSU, // increase modulation speed
#endif // MIDI_ADVANCED
-->

View File

@@ -109,6 +109,33 @@ Do not Auto Shift numeric keys, zero through nine.
Do not Auto Shift alpha characters, which include A through Z.
### Auto Shift Per Key
This is a function that allows you to determine which keys shold be autoshifted, much like the tap-hold keys.
The default function looks like this:
```c
bool get_auto_shifted_key(uint16_t keycode, keyrecord_t *record) {
switch (keycode) {
# ifndef NO_AUTO_SHIFT_ALPHA
case KC_A ... KC_Z:
# endif
# ifndef NO_AUTO_SHIFT_NUMERIC
case KC_1 ... KC_0:
# endif
# ifndef NO_AUTO_SHIFT_SPECIAL
case KC_TAB:
case KC_MINUS ... KC_SLASH:
case KC_NONUS_BSLASH:
# endif
return true;
}
return false;
}
```
This functionality is enabled by default, and does not need a define.
### AUTO_SHIFT_REPEAT (simple define)
Enables keyrepeat.

View File

@@ -62,15 +62,17 @@ Valid driver values are `pwm`, `software`, `custom` or `no`. See below for help
To configure the backlighting, `#define` these in your `config.h`:
| Define | Default | Description |
|------------------------|---------------|-------------------------------------------------------------------------------------------------------------------|
| `BACKLIGHT_PIN` | *Not defined* | The pin that controls the LED(s) |
| `BACKLIGHT_LEVELS` | `3` | The number of brightness levels (maximum 31 excluding off) |
| `BACKLIGHT_CAPS_LOCK` | *Not defined* | Enable Caps Lock indicator using backlight (for keyboards without dedicated LED) |
| `BACKLIGHT_BREATHING` | *Not defined* | Enable backlight breathing, if supported |
| `BREATHING_PERIOD` | `6` | The length of one backlight "breath" in seconds |
| `BACKLIGHT_ON_STATE` | `1` | The state of the backlight pin when the backlight is "on" - `1` for high, `0` for low |
| `BACKLIGHT_LIMIT_VAL ` | `255` | The maximum duty cycle of the backlight -- `255` allows for full brightness, any lower will decrease the maximum. |
|Define |Default |Description |
|-----------------------------|------------------|-----------------------------------------------------------------------------------------------------------------|
|`BACKLIGHT_PIN` |*Not defined* |The pin that controls the LED(s) |
|`BACKLIGHT_LEVELS` |`3` |The number of brightness levels (maximum 31 excluding off) |
|`BACKLIGHT_CAPS_LOCK` |*Not defined* |Enable Caps Lock indicator using backlight (for keyboards without dedicated LED) |
|`BACKLIGHT_BREATHING` |*Not defined* |Enable backlight breathing, if supported |
|`BREATHING_PERIOD` |`6` |The length of one backlight "breath" in seconds |
|`BACKLIGHT_ON_STATE` |`1` |The state of the backlight pin when the backlight is "on" - `1` for high, `0` for low |
|`BACKLIGHT_LIMIT_VAL` |`255` |The maximum duty cycle of the backlight -- `255` allows for full brightness, any lower will decrease the maximum.|
|`BACKLIGHT_DEFAULT_LEVEL` |`BACKLIGHT_LEVELS`|The default backlight level to use upon clearing the EEPROM |
|`BACKLIGHT_DEFAULT_BREATHING`|*Not defined* |Whether to enable backlight breathing upon clearing the EEPROM |
Unless you are designing your own keyboard, you generally should not need to change the `BACKLIGHT_PIN` or `BACKLIGHT_ON_STATE`.
@@ -171,7 +173,7 @@ BACKLIGHT_DRIVER = software
#### Multiple Backlight Pins :id=multiple-backlight-pins
Most keyboards have only one backlight pin which control all backlight LEDs (especially if the backlight is connected to an hardware PWM pin).
Most keyboards have only one backlight pin which controls all backlight LEDs (especially if the backlight is connected to a hardware PWM pin).
In software PWM, it is possible to define multiple backlight pins, which will be turned on and off at the same time during the PWM duty cycle.
This feature allows to set, for instance, the Caps Lock LED's (or any other controllable LED) brightness at the same level as the other LEDs of the backlight. This is useful if you have mapped Control in place of Caps Lock and you need the Caps Lock LED to be part of the backlight instead of being activated when Caps Lock is on, as it is usually wired to a separate pin from the backlight.

View File

@@ -53,15 +53,15 @@ If you are using different pinouts for the encoders on each half of a split keyb
The callback functions can be inserted into your `<keyboard>.c`:
```c
void encoder_update_kb(uint8_t index, bool clockwise) {
encoder_update_user(index, clockwise);
bool encoder_update_kb(uint8_t index, bool clockwise) {
return encoder_update_user(index, clockwise);
}
```
or `keymap.c`:
```c
void encoder_update_user(uint8_t index, bool clockwise) {
bool encoder_update_user(uint8_t index, bool clockwise) {
if (index == 0) { /* First encoder */
if (clockwise) {
tap_code(KC_PGDN);
@@ -75,9 +75,29 @@ void encoder_update_user(uint8_t index, bool clockwise) {
tap_code(KC_UP);
}
}
return true;
}
```
!> If you return `true`, this will allow the keyboard level code to run, as well. Returning `false` will override the keyboard level code. Depending on how the keyboard level function is set up.
## Hardware
The A an B lines of the encoders should be wired directly to the MCU, and the C/common lines should be wired to ground.
## Multiple Encoders
Multiple encoders may share pins so long as each encoder has a distinct pair of pins.
For example you can support two encoders using only 3 pins like this
```
#define ENCODERS_PAD_A { B1, B1 }
#define ENCODERS_PAD_B { B2, B3 }
```
You could even support three encoders using only three pins (one per encoder) however in this configuration, rotating two encoders which share pins simultaneously will often generate incorrect output. For example:
```
#define ENCODERS_PAD_A { B1, B1, B2 }
#define ENCODERS_PAD_B { B2, B3, B3 }
```
Here rotating Encoder 0 `B1 B2` and Encoder 1 `B1 B3` could be interpreted as rotating Encoder 2 `B2 B3` or `B3 B2` depending on the timing. This may still be a useful configuration depending on your use case

View File

@@ -39,7 +39,7 @@ Not all keycodes below will work depending on which haptic mechanism you have ch
First you will need a build a circuit to drive the solenoid through a mosfet as most MCU will not be able to provide the current needed to drive the coil in the solenoid.
[Wiring diagram provided by Adafruit](https://playground.arduino.cc/uploads/Learning/solenoid_driver.pdf)
[Wiring diagram provided by Adafruit](https://cdn-shop.adafruit.com/product-files/412/solenoid_driver.pdf)
| Settings | Default | Description |

View File

@@ -19,12 +19,10 @@ These functions allow you to activate layers in various ways. Note that layers a
### Caveats :id=caveats
Currently, `LT()` and `MT()` are limited to the [Basic Keycode set](keycodes_basic.md), meaning you can't use keycodes like `LCTL()`, `KC_TILD`, or anything greater than `0xFF`. Specifically, dual function keys like `LT` and `MT` use a 16 bit keycode. 4 bits are used for the function identifier, the next 12 are divided into the parameters. Layer Tap uses 4 bits for the layer (and is why it's limited to layers 0-15, actually), while Mod Tap does the same, 4 bits for the identifier, 4 bits for which mods are used, and all of them use 8 bits for the keycode. Because of this, the keycode used is limited to `0xFF` (0-255), which are the basic keycodes only.
Currently, the `layer` argument of `LT()` is limited to layers 0-15, and the `kc` argument to the [Basic Keycode set](keycodes_basic.md), meaning you can't use keycodes like `LCTL()`, `KC_TILD`, or anything greater than `0xFF`. This is because QMK uses 16-bit keycodes, of which 4 bits are used for the function identifier and 4 bits for the layer, leaving only 8 bits for the keycode.
Expanding this would be complicated, at best. Moving to a 32-bit keycode would solve a lot of this, but would double the amount of space that the keymap matrix uses. And it could potentially cause issues, too. If you need to apply modifiers to your tapped keycode, [Tap Dance](feature_tap_dance.md#example-5-using-tap-dance-for-advanced-mod-tap-and-layer-tap-keys) can be used to accomplish this.
Additionally, if at least one right-handed modifier is specified in a Mod Tap or Layer Tap, it will cause all modifiers specified to become right-handed, so it is not possible to mix and match the two.
## Working with Layers :id=working-with-layers
Care must be taken when switching layers, it's possible to lock yourself into a layer with no way to deactivate that layer (without unplugging your keyboard.) We've created some guidelines to help users avoid the most common problems.

View File

@@ -72,6 +72,19 @@ SEQ_THREE_KEYS(KC_C, KC_C, KC_C) {
}
```
## Infinite Leader key timeout
Sometimes your leader key is not on a comfortable places as the rest of keys on your sequence. Imagine that your leader key is one of your outer top right keys, you may need to reposition your hand just to reach your leader key.
This can make typing the entire sequence on time hard even if you are able to type most of the sequence fast. For example, if your sequence is `Leader + asd` typing `asd` fast is very easy once you have your hands in your home row. However starting the sequence in time after moving your hand out of the home row to reach the leader key and back is not.
To remove the stress this situation produces to your hands you can enable an infinite timeout just for the leader key. This mean that, after you hit the leader key you will have an infinite amount of time to start the rest of the sequence, allowing you to proper position your hands on the best position to type the rest of the sequence comfortably.
This infinite timeout only affects the leader key, so in our previous example of `Leader + asd` you will have an infinite amount of time between `Leader` and `a`, but once you start the sequence the timeout you have configured (global or per key) will work normally.
This way you can configure a very short `LEADER_TIMEOUT` but still have plenty of time to position your hands.
In order to enable this, place this in your `config.h`:
```c
#define LEADER_NO_TIMEOUT
```
## Strict Key Processing
By default, the Leader Key feature will filter the keycode out of [`Mod-Tap`](mod_tap.md) and [`Layer Tap`](feature_layers.md#switching-and-toggling-layers) functions when checking for the Leader sequences. That means if you're using `LT(3, KC_A)`, it will pick this up as `KC_A` for the sequence, rather than `LT(3, KC_A)`, giving a more expected behavior for newer users.
@@ -92,7 +105,7 @@ void leader_start(void) {
}
void leader_end(void) {
// sequence ended (no success/failuer detection)
// sequence ended (no success/failure detection)
}
```

View File

@@ -1,26 +1,28 @@
# LED Matrix Lighting
# LED Matrix Lighting :id=led-matrix-lighting
This feature allows you to use LED matrices driven by external drivers. It hooks into the backlight system so you can use the same keycodes as backlighting to control it.
If you want to use RGB LED's you should use the [RGB Matrix Subsystem](feature_rgb_matrix.md) instead.
## Driver configuration
## Driver configuration :id=driver-configuration
---
### IS31FL3731 :id=is31fl3731
### IS31FL3731
There is basic support for addressable LED matrix lighting with the I2C IS31FL3731 LED controller. To enable it, add this to your `rules.mk`:
There is basic support for addressable LED matrix lighting with the I2C IS31FL3731 RGB controller. To enable it, add this to your `rules.mk`:
```make
LED_MATRIX_ENABLE = yes
LED_MATRIX_DRIVER = IS31FL3731
```
LED_MATRIX_ENABLE = yes
LED_MATRIX_DRIVER = IS31FL3731
You can use between 1 and 4 IS31FL3731 IC's. Do not specify `LED_DRIVER_ADDR_<N>` defines for IC's that are not present on your keyboard. You can define the following items in `config.h`:
| Variable | Description | Default |
|----------|-------------|---------|
| `ISSI_TIMEOUT` | (Optional) How long to wait for i2c messages | 100 |
| `ISSI_TIMEOUT` | (Optional) How long to wait for i2c messages, in milliseconds | 100 |
| `ISSI_PERSISTENCE` | (Optional) Retry failed messages this many times | 0 |
| `LED_DRIVER_COUNT` | (Required) How many LED driver IC's are present | |
| `LED_DRIVER_LED_COUNT` | (Required) How many LED lights are present across all drivers | |
| `DRIVER_LED_TOTAL` | (Required) How many LED lights are present across all drivers | |
| `LED_DRIVER_ADDR_1` | (Required) Address for the first LED driver | |
| `LED_DRIVER_ADDR_2` | (Optional) Address for the second LED driver | |
| `LED_DRIVER_ADDR_3` | (Optional) Address for the third LED driver | |
@@ -28,64 +30,348 @@ You can use between 1 and 4 IS31FL3731 IC's. Do not specify `LED_DRIVER_ADDR_<N>
Here is an example using 2 drivers.
// This is a 7-bit address, that gets left-shifted and bit 0
// set to 0 for write, 1 for read (as per I2C protocol)
// The address will vary depending on your wiring:
// 0b1110100 AD <-> GND
// 0b1110111 AD <-> VCC
// 0b1110101 AD <-> SCL
// 0b1110110 AD <-> SDA
#define LED_DRIVER_ADDR_1 0b1110100
#define LED_DRIVER_ADDR_2 0b1110110
```c
// This is a 7-bit address, that gets left-shifted and bit 0
// set to 0 for write, 1 for read (as per I2C protocol)
// The address will vary depending on your wiring:
// 0b1110100 AD <-> GND
// 0b1110111 AD <-> VCC
// 0b1110101 AD <-> SCL
// 0b1110110 AD <-> SDA
#define LED_DRIVER_ADDR_1 0b1110100
#define LED_DRIVER_ADDR_2 0b1110110
#define LED_DRIVER_COUNT 2
#define LED_DRIVER_1_LED_COUNT 25
#define LED_DRIVER_2_LED_COUNT 24
#define LED_DRIVER_LED_COUNT LED_DRIVER_1_LED_TOTAL + LED_DRIVER_2_LED_TOTAL
#define LED_DRIVER_COUNT 2
#define LED_DRIVER_1_LED_TOTAL 25
#define LED_DRIVER_2_LED_TOTAL 24
#define DRIVER_LED_TOTAL (LED_DRIVER_1_LED_TOTAL + LED_DRIVER_2_LED_TOTAL)
```
Currently only 2 drivers are supported, but it would be trivial to support all 4 combinations.
!> Note the parentheses, this is so when `LED_DRIVER_LED_TOTAL` is used in code and expanded, the values are added together before any additional math is applied to them. As an example, `rand() % (LED_DRIVER_1_LED_TOTAL + LED_DRIVER_2_LED_TOTAL)` will give very different results than `rand() % LED_DRIVER_1_LED_TOTAL + LED_DRIVER_2_LED_TOTAL`.
Define these arrays listing all the LEDs in your `<keyboard>.c`:
const is31_led g_is31_leds[DRIVER_LED_TOTAL] = {
/* Refer to IS31 manual for these locations
* driver
* | LED address
* | | */
{0, C3_3},
....
}
```c
const is31_led g_is31_leds[DRIVER_LED_TOTAL] = {
/* Refer to IS31 manual for these locations
* driver
* | LED address
* | | */
{ 0, C1_1 },
{ 0, C1_15 },
// ...
}
```
Where `Cx_y` is the location of the LED in the matrix defined by [the datasheet](https://www.issi.com/WW/pdf/31FL3731.pdf) and the header file `drivers/issi/is31fl3731-simple.h`. The `driver` is the index of the driver you defined in your `config.h` (`0`, `1`, `2`, or `3` ).
## Keycodes
---
All LED matrix keycodes are currently shared with the [backlight system](feature_backlight.md).
From this point forward the configuration is the same for all the drivers. The `led_config_t` struct provides a key electrical matrix to led index lookup table, what the physical position of each LED is on the board, and what type of key or usage the LED if the LED represents. Here is a brief example:
## LED Matrix Effects
```c
led_config_t g_led_config = { {
// Key Matrix to LED Index
{ 5, NO_LED, NO_LED, 0 },
{ NO_LED, NO_LED, NO_LED, NO_LED },
{ 4, NO_LED, NO_LED, 1 },
{ 3, NO_LED, NO_LED, 2 }
}, {
// LED Index to Physical Position
{ 188, 16 }, { 187, 48 }, { 149, 64 }, { 112, 64 }, { 37, 48 }, { 38, 16 }
}, {
// LED Index to Flag
1, 4, 4, 4, 4, 1
} };
```
Currently no LED matrix effects have been created.
The first part, `// Key Matrix to LED Index`, tells the system what key this LED represents by using the key's electrical matrix row & col. The second part, `// LED Index to Physical Position` represents the LED's physical `{ x, y }` position on the keyboard. The default expected range of values for `{ x, y }` is the inclusive range `{ 0..224, 0..64 }`. This default expected range is due to effects that calculate the center of the keyboard for their animations. The easiest way to calculate these positions is imagine your keyboard is a grid, and the top left of the keyboard represents `{ x, y }` coordinate `{ 0, 0 }` and the bottom right of your keyboard represents `{ 224, 64 }`. Using this as a basis, you can use the following formula to calculate the physical position:
## Custom layer effects
```c
x = 224 / (NUMBER_OF_COLS - 1) * COL_POSITION
y = 64 / (NUMBER_OF_ROWS - 1) * ROW_POSITION
```
Custom layer effects can be done by defining this in your `<keyboard>.c`:
Where NUMBER_OF_COLS, NUMBER_OF_ROWS, COL_POSITION, & ROW_POSITION are all based on the physical layout of your keyboard, not the electrical layout.
void led_matrix_indicators_kb(void) {
led_matrix_set_index_value(index, value);
}
As mentioned earlier, the center of the keyboard by default is expected to be `{ 112, 32 }`, but this can be changed if you want to more accurately calculate the LED's physical `{ x, y }` positions. Keyboard designers can implement `#define LED_MATRIX_CENTER { 112, 32 }` in their config.h file with the new center point of the keyboard, or where they want it to be allowing more possibilities for the `{ x, y }` values. Do note that the maximum value for x or y is 255, and the recommended maximum is 224 as this gives animations runoff room before they reset.
A similar function works in the keymap as `led_matrix_indicators_user`.
`// LED Index to Flag` is a bitmask, whether or not a certain LEDs is of a certain type. It is recommended that LEDs are set to only 1 type.
## Suspended state
## Flags :id=flags
To use the suspend feature, add this to your `<keyboard>.c`:
|Define |Value |Description |
|----------------------------|------|-------------------------------------------------|
|`HAS_FLAGS(bits, flags)` |*n/a* |Evaluates to `true` if `bits` has all `flags` set|
|`HAS_ANY_FLAGS(bits, flags)`|*n/a* |Evaluates to `true` if `bits` has any `flags` set|
|`LED_FLAG_NONE` |`0x00`|If this LED has no flags |
|`LED_FLAG_ALL` |`0xFF`|If this LED has all flags |
|`LED_FLAG_MODIFIER` |`0x01`|If the LED is on a modifier key |
|`LED_FLAG_KEYLIGHT` |`0x04`|If the LED is for key backlight |
|`LED_FLAG_INDICATOR` |`0x08`|If the LED is for keyboard state indication |
void suspend_power_down_kb(void)
{
led_matrix_set_suspend_state(true);
}
## Keycodes :id=keycodes
void suspend_wakeup_init_kb(void)
{
led_matrix_set_suspend_state(false);
}
All LED matrix keycodes are currently shared with the [Backlight feature](feature_backlight.md).
|Key |Description |
|---------|-----------------------------|
|`BL_TOGG`|Toggle LED Matrix on or off |
|`BL_STEP`|Cycle through modes |
|`BL_ON` |Turn on LED Matrix |
|`BL_OFF` |Turn off LED Matrix |
|`BL_INC` |Increase the brightness level|
|`BL_DEC` |Decrease the brightness level|
## LED Matrix Effects :id=led-matrix-effects
These are the effects that are currently available:
```c
enum led_matrix_effects {
LED_MATRIX_NONE = 0,
LED_MATRIX_SOLID = 1, // Static single val, no speed support
LED_MATRIX_ALPHAS_MODS, // Static dual val, speed is val for LEDs marked as modifiers
LED_MATRIX_BREATHING, // Cycling brightness animation
LED_MATRIX_BAND, // Band fading brightness scrolling left to right
LED_MATRIX_BAND_PINWHEEL, // 3 blade spinning pinwheel fades brightness
LED_MATRIX_BAND_SPIRAL, // Spinning spiral fades brightness
LED_MATRIX_CYCLE_LEFT_RIGHT, // Full gradient scrolling left to right
LED_MATRIX_CYCLE_UP_DOWN, // Full gradient scrolling top to bottom
LED_MATRIX_CYCLE_OUT_IN, // Full gradient scrolling out to in
LED_MATRIX_DUAL_BEACON, // Full gradient spinning around center of keyboard
#if defined(LED_MATRIX_KEYPRESSES) || defined(LED_MATRIX_KEYRELEASES)
LED_MATRIX_SOLID_REACTIVE_SIMPLE, // Pulses keys hit then fades out
LED_MATRIX_SOLID_REACTIVE_WIDE // Value pulses near a single key hit then fades out
LED_MATRIX_SOLID_REACTIVE_MULTIWIDE // Value pulses near multiple key hits then fades out
LED_MATRIX_SOLID_REACTIVE_CROSS // Value pulses the same column and row of a single key hit then fades out
LED_MATRIX_SOLID_REACTIVE_MULTICROSS // Value pulses the same column and row of multiple key hits then fades out
LED_MATRIX_SOLID_REACTIVE_NEXUS // Value pulses away on the same column and row of a single key hit then fades out
LED_MATRIX_SOLID_REACTIVE_MULTINEXUS // Value pulses away on the same column and row of multiple key hits then fades out
LED_MATRIX_SOLID_SPLASH, // Value pulses away from a single key hit then fades out
LED_MATRIX_SOLID_MULTISPLASH, // Value pulses away from multiple key hits then fades out
#endif
LED_MATRIX_WAVE_LEFT_RIGHT // Sine wave scrolling from left to right
LED_MATRIX_WAVE_UP_DOWN // Sine wave scrolling from up to down
LED_MATRIX_EFFECT_MAX
};
```
You can disable a single effect by defining `DISABLE_[EFFECT_NAME]` in your `config.h`:
|Define |Description |
|-------------------------------------------------------|-----------------------------------------------|
|`#define DISABLE_LED_MATRIX_ALPHAS_MODS` |Disables `LED_MATRIX_ALPHAS_MODS` |
|`#define DISABLE_LED_MATRIX_BREATHING` |Disables `LED_MATRIX_BREATHING` |
|`#define DISABLE_LED_MATRIX_BAND` |Disables `LED_MATRIX_BAND` |
|`#define DISABLE_LED_MATRIX_BAND_PINWHEEL` |Disables `LED_MATRIX_BAND_PINWHEEL` |
|`#define DISABLE_LED_MATRIX_BAND_SPIRAL` |Disables `LED_MATRIX_BAND_SPIRAL` |
|`#define DISABLE_LED_MATRIX_CYCLE_LEFT_RIGHT` |Disables `LED_MATRIX_CYCLE_LEFT_RIGHT` |
|`#define DISABLE_LED_MATRIX_CYCLE_UP_DOWN` |Disables `LED_MATRIX_CYCLE_UP_DOWN` |
|`#define DISABLE_LED_MATRIX_CYCLE_OUT_IN` |Disables `LED_MATRIX_CYCLE_OUT_IN` |
|`#define DISABLE_LED_MATRIX_DUAL_BEACON` |Disables `LED_MATRIX_DUAL_BEACON` |
|`#define DISABLE_LED_MATRIX_SOLID_REACTIVE_SIMPLE` |Disables `LED_MATRIX_SOLID_REACTIVE_SIMPLE` |
|`#define DISABLE_LED_MATRIX_SOLID_REACTIVE_WIDE` |Disables `LED_MATRIX_SOLID_REACTIVE_WIDE` |
|`#define DISABLE_LED_MATRIX_SOLID_REACTIVE_MULTIWIDE` |Disables `LED_MATRIX_SOLID_REACTIVE_MULTIWIDE` |
|`#define DISABLE_LED_MATRIX_SOLID_REACTIVE_CROSS` |Disables `LED_MATRIX_SOLID_REACTIVE_CROSS` |
|`#define DISABLE_LED_MATRIX_SOLID_REACTIVE_MULTICROSS` |Disables `LED_MATRIX_SOLID_REACTIVE_MULTICROSS`|
|`#define DISABLE_LED_MATRIX_SOLID_REACTIVE_NEXUS` |Disables `LED_MATRIX_SOLID_REACTIVE_NEXUS` |
|`#define DISABLE_LED_MATRIX_SOLID_REACTIVE_MULTINEXUS` |Disables `LED_MATRIX_SOLID_REACTIVE_MULTINEXUS`|
|`#define DISABLE_LED_MATRIX_SOLID_SPLASH` |Disables `LED_MATRIX_SOLID_SPLASH` |
|`#define DISABLE_LED_MATRIX_SOLID_MULTISPLASH` |Disables `LED_MATRIX_SOLID_MULTISPLASH` |
|`#define DISABLE_LED_MATRIX_WAVE_LEFT_RIGHT` |Disables `LED_MATRIX_WAVE_LEFT_RIGHT` |
|`#define DISABLE_LED_MATRIX_WAVE_UP_DOWN` |Disables `LED_MATRIX_WAVE_UP_DOWN` |
## Custom LED Matrix Effects :id=custom-led-matrix-effects
By setting `LED_MATRIX_CUSTOM_USER` (and/or `LED_MATRIX_CUSTOM_KB`) in `rules.mk`, new effects can be defined directly from userspace, without having to edit any QMK core files.
To declare new effects, create a new `led_matrix_user/kb.inc` that looks something like this:
`led_matrix_user.inc` should go in the root of the keymap directory.
`led_matrix_kb.inc` should go in the root of the keyboard directory.
To use custom effects in your code, simply prepend `LED_MATRIX_CUSTOM_` to the effect name specified in `LED_MATRIX_EFFECT()`. For example, an effect declared as `LED_MATRIX_EFFECT(my_cool_effect)` would be referenced with:
```c
led_matrix_mode(led_MATRIX_CUSTOM_my_cool_effect);
```
```c
// !!! DO NOT ADD #pragma once !!! //
// Step 1.
// Declare custom effects using the LED_MATRIX_EFFECT macro
// (note the lack of semicolon after the macro!)
LED_MATRIX_EFFECT(my_cool_effect)
LED_MATRIX_EFFECT(my_cool_effect2)
// Step 2.
// Define effects inside the `LED_MATRIX_CUSTOM_EFFECT_IMPLS` ifdef block
#ifdef LED_MATRIX_CUSTOM_EFFECT_IMPLS
// e.g: A simple effect, self-contained within a single method
static bool my_cool_effect(effect_params_t* params) {
LED_MATRIX_USE_LIMITS(led_min, led_max);
for (uint8_t i = led_min; i < led_max; i++) {
led_matrix_set_value(i, 0xFF);
}
return led_max < DRIVER_LED_TOTAL;
}
// e.g: A more complex effect, relying on external methods and state, with
// dedicated init and run methods
static uint8_t some_global_state;
static void my_cool_effect2_complex_init(effect_params_t* params) {
some_global_state = 1;
}
static bool my_cool_effect2_complex_run(effect_params_t* params) {
LED_MATRIX_USE_LIMITS(led_min, led_max);
for (uint8_t i = led_min; i < led_max; i++) {
led_matrix_set_value(i, some_global_state++);
}
return led_max < DRIVER_LED_TOTAL;
}
static bool my_cool_effect2(effect_params_t* params) {
if (params->init) my_cool_effect2_complex_init(params);
return my_cool_effect2_complex_run(params);
}
#endif // LED_MATRIX_CUSTOM_EFFECT_IMPLS
```
For inspiration and examples, check out the built-in effects under `quantum/led_matrix_animations/`
## Additional `config.h` Options :id=additional-configh-options
```c
#define LED_MATRIX_KEYPRESSES // reacts to keypresses
#define LED_MATRIX_KEYRELEASES // reacts to keyreleases (instead of keypresses)
#define LED_MATRIX_FRAMEBUFFER_EFFECTS // enable framebuffer effects
#define LED_DISABLE_TIMEOUT 0 // number of milliseconds to wait until led automatically turns off
#define LED_DISABLE_AFTER_TIMEOUT 0 // OBSOLETE: number of ticks to wait until disabling effects
#define LED_DISABLE_WHEN_USB_SUSPENDED false // turn off effects when suspended
#define LED_MATRIX_LED_PROCESS_LIMIT (DRIVER_LED_TOTAL + 4) / 5 // limits the number of LEDs to process in an animation per task run (increases keyboard responsiveness)
#define LED_MATRIX_LED_FLUSH_LIMIT 16 // limits in milliseconds how frequently an animation will update the LEDs. 16 (16ms) is equivalent to limiting to 60fps (increases keyboard responsiveness)
#define LED_MATRIX_MAXIMUM_BRIGHTNESS 255 // limits maximum brightness of LEDs
#define LED_MATRIX_STARTUP_MODE LED_MATRIX_SOLID // Sets the default mode, if none has been set
#define LED_MATRIX_STARTUP_VAL LED_MATRIX_MAXIMUM_BRIGHTNESS // Sets the default brightness value, if none has been set
#define LED_MATRIX_STARTUP_SPD 127 // Sets the default animation speed, if none has been set
#define LED_MATRIX_SPLIT { X, Y } // (Optional) For split keyboards, the number of LEDs connected on each half. X = left, Y = Right.
// If LED_MATRIX_KEYPRESSES or LED_MATRIX_KEYRELEASES is enabled, you also will want to enable SPLIT_TRANSPORT_MIRROR
```
## EEPROM storage :id=eeprom-storage
The EEPROM for it is currently shared with the RGB Matrix system (it's generally assumed only one feature would be used at a time), but could be configured to use its own 32bit address with:
```c
#define EECONFIG_LED_MATRIX (uint32_t *)28
```
Where `28` is an unused index from `eeconfig.h`.
### Direct Operation :id=direct-operation
|Function |Description |
|--------------------------------------------|-------------|
|`led_matrix_set_value_all(v)` |Set all of the LEDs to the given value, where `v` is between 0 and 255 (not written to EEPROM) |
|`led_matrix_set_value(index, v)` |Set a single LED to the given value, where `v` is between 0 and 255, and `index` is between 0 and `DRIVER_LED_TOTAL` (not written to EEPROM) |
### Disable/Enable Effects :id=disable-enable-effects
|Function |Description |
|--------------------------------------------|-------------|
|`led_matrix_toggle()` |Toggle effect range LEDs between on and off |
|`led_matrix_toggle_noeeprom()` |Toggle effect range LEDs between on and off (not written to EEPROM) |
|`led_matrix_enable()` |Turn effect range LEDs on, based on their previous state |
|`led_matrix_enable_noeeprom()` |Turn effect range LEDs on, based on their previous state (not written to EEPROM) |
|`led_matrix_disable()` |Turn effect range LEDs off, based on their previous state |
|`led_matrix_disable_noeeprom()` |Turn effect range LEDs off, based on their previous state (not written to EEPROM) |
### Change Effect Mode :id=change-effect-mode
|Function |Description |
|--------------------------------------------|-------------|
|`led_matrix_mode(mode)` |Set the mode, if LED animations are enabled |
|`led_matrix_mode_noeeprom(mode)` |Set the mode, if LED animations are enabled (not written to EEPROM) |
|`led_matrix_step()` |Change the mode to the next LED animation in the list of enabled LED animations |
|`led_matrix_step_noeeprom()` |Change the mode to the next LED animation in the list of enabled LED animations (not written to EEPROM) |
|`led_matrix_step_reverse()` |Change the mode to the previous LED animation in the list of enabled LED animations |
|`led_matrix_step_reverse_noeeprom()` |Change the mode to the previous LED animation in the list of enabled LED animations (not written to EEPROM) |
|`led_matrix_increase_speed()` |Increase the speed of the animations |
|`led_matrix_increase_speed_noeeprom()` |Increase the speed of the animations (not written to EEPROM) |
|`led_matrix_decrease_speed()` |Decrease the speed of the animations |
|`led_matrix_decrease_speed_noeeprom()` |Decrease the speed of the animations (not written to EEPROM) |
|`led_matrix_set_speed(speed)` |Set the speed of the animations to the given value where `speed` is between 0 and 255 |
|`led_matrix_set_speed_noeeprom(speed)` |Set the speed of the animations to the given value where `speed` is between 0 and 255 (not written to EEPROM) |
### Change Value :id=change-value
|Function |Description |
|--------------------------------------------|-------------|
|`led_matrix_increase_val()` |Increase the value for effect range LEDs. This wraps around at maximum value |
|`led_matrix_increase_val_noeeprom()` |Increase the value for effect range LEDs. This wraps around at maximum value (not written to EEPROM) |
|`led_matrix_decrease_val()` |Decrease the value for effect range LEDs. This wraps around at minimum value |
|`led_matrix_decrease_val_noeeprom()` |Decrease the value for effect range LEDs. This wraps around at minimum value (not written to EEPROM) |
### Query Current Status :id=query-current-status
|Function |Description |
|---------------------------------|---------------------------|
|`led_matrix_is_enabled()` |Gets current on/off status |
|`led_matrix_get_mode()` |Gets current mode |
|`led_matrix_get_val()` |Gets current val |
|`led_matrix_get_speed()` |Gets current speed |
|`led_matrix_get_suspend_state()` |Gets current suspend state |
## Callbacks :id=callbacks
### Indicators :id=indicators
If you want to set custom indicators, such as an LED for Caps Lock, or layer indication, you can use the `led_matrix_indicators_kb` or `led_matrix_indicators_user` function for that:
```c
void led_matrix_indicators_kb(void) {
led_matrix_set_color(index, value);
}
```
In addition, there are the advanced indicator functions. These are aimed at those with heavily customized displays, where rendering every LED per cycle is expensive. This includes a special macro to help make this easier to use: `LED_MATRIX_INDICATOR_SET_VALUE(i, v)`.
```c
void led_matrix_indicators_advanced_user(uint8_t led_min, uint8_t led_max) {
LED_MATRIX_INDICATOR_SET_VALUE(index, value);
}
```
## Suspended State :id=suspended-state
To use the suspend feature, make sure that `#define LED_DISABLE_WHEN_USB_SUSPENDED true` is added to the `config.h` file.
Additionally add this to your `<keyboard>.c`:
```c
void suspend_power_down_kb(void) {
led_matrix_set_suspend_state(true);
suspend_power_down_user();
}
void suspend_wakeup_init_kb(void) {
led_matrix_set_suspend_state(false);
suspend_wakeup_init_user();
}
```
or add this to your `keymap.c`:
```c
void suspend_power_down_user(void) {
led_matrix_set_suspend_state(true);
}
void suspend_wakeup_init_user(void) {
led_matrix_set_suspend_state(false);
}
```

View File

@@ -209,7 +209,7 @@ SEND_STRING(".."SS_TAP(X_END));
There are some functions you may find useful in macro-writing. Keep in mind that while you can write some fairly advanced code within a macro, if your functionality gets too complex you may want to define a custom keycode instead. Macros are meant to be simple.
?> You can also use the functions described in [Useful functions](ref_functions.md) for additional functionality. For example `reset_keyboard()` allows you to reset the keyboard as part of a macro.
?> You can also use the functions described in [Useful function](ref_functions.md) and [Checking modifier state](feature_advanced_keycodes#checking-modifier-state) for additional functionality. For example, `reset_keyboard()` allows you to reset the keyboard as part of a macro and `get_mods() & MOD_MASK_SHIFT` lets you check for the existence of active shift modifiers.
### `record->event.pressed`
@@ -233,9 +233,15 @@ Parallel to `register_code` function, this sends the `<kc>` keyup event to the c
### `tap_code(<kc>);`
This will send `register_code(<kc>)` and then `unregister_code(<kc>)`. This is useful if you want to send both the press and release events ("tap" the key, rather than hold it).
Sends `register_code(<kc>)` and then `unregister_code(<kc>)`. This is useful if you want to send both the press and release events ("tap" the key, rather than hold it).
If you're having issues with taps (un)registering, you can add a delay between the register and unregister events by setting `#define TAP_CODE_DELAY 100` in your `config.h` file. The value is in milliseconds.
If `TAP_CODE_DELAY` is defined (default 0), this function waits that many milliseconds before calling `unregister_code(<kc>)`. This can be useful when you are having issues with taps (un)registering.
If the keycode is `KC_CAPS`, it waits `TAP_HOLD_CAPS_DELAY` milliseconds instead (default 80), as macOS prevents accidental Caps Lock activation by waiting for the key to be held for a certain amount of time.
### `tap_code_delay(<kc>, <delay>);`
Like `tap_code(<kc>)`, but with a `delay` parameter for specifying arbitrary intervals before sending the unregister event.
### `register_code16(<kc>);`, `unregister_code16(<kc>);` and `tap_code16(<kc>);`

260
docs/feature_midi.md Normal file
View File

@@ -0,0 +1,260 @@
# MIDI
## Usage
First, enable MIDI by adding the following to your `rules.mk`:
```makefile
MIDI_ENABLE = yes
```
There are two MIDI systems in QMK: basic and advanced. With basic MIDI you will only be able to send Note On and Note Off messages using the note keycodes, meaning that keycodes like `MI_OCTU` and `MI_OCTD` will not work. Advanced MIDI allows you to do things like octave shifts, channel changes, velocity changes, modulation, and more.
### Basic MIDI
To enable basic MIDI, add the following to your `config.h`:
```c
#define MIDI_BASIC
```
### Advanced MIDI
To enable advanced MIDI, add the following to your `config.h`:
```c
#define MIDI_ADVANCED
```
#### Sending Control Change (CC) Messages
If you're aiming to emulate the features of something like a Launchpad or other MIDI controller you'll need to access the internal MIDI device directly.
Because there are so many possible CC messages, not all of them are implemented as keycodes. Additionally, you might need to provide more than just two values that you would get from a keycode (pressed and released) - for example, the analog values from a fader or a potentiometer. So, you will need to implement [custom keycodes](feature_macros.md) if you want to use them in your keymap directly using `process_record_user()`.
For reference of all the possible control code numbers see [MIDI Specification](#midi-specification)
#### Example code for using Generic On Off Switches as per MIDI Specification.
```c
#include QMK_KEYBOARD_H
extern MidiDevice midi_device;
// MIDI CC codes for generic on/off switches (80, 81, 82, 83)
// Off: 0-63
// On: 64-127
#define MIDI_CC_OFF 0
#define MIDI_CC_ON 127
enum custom_keycodes {
MIDI_CC80 = SAFE_RANGE,
};
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
switch (keycode) {
case MIDI_CC80:
if (record->event.pressed) {
midi_send_cc(&midi_device, midi_config.channel, 80, ON);
} else {
midi_send_cc(&midi_device, midi_config.channel, 80, OFF);
}
return true;
}
return true;
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
LAYOUT(
// ...
MIDI_CC80,
// ...
)
};
```
### Keycodes
|Keycode |Aliases |Description |
|------------|---------|---------------------------------|
|`MI_ON` | |Turn MIDI on |
|`MI_OFF` | |Turn MIDI off |
|`MI_TOG` | |Toggle MIDI enabled |
|`MI_C` | |C octave 0 |
|`MI_Cs` |`MI_Db` |C♯/D♭ octave 0 |
|`MI_D` | |D octave 0 |
|`MI_Ds` |`MI_Eb` |D♯/E♭ octave 0 |
|`MI_E` | |E octave 0 |
|`MI_F` | |F octave 0 |
|`MI_Fs` |`MI_Gb` |F♯/G♭ octave 0 |
|`MI_G` | |G octave 0 |
|`MI_Gs` |`MI_Gs` |G♯/A♭ octave 0 |
|`MI_A` | |A octave 0 |
|`MI_As` |`MI_Bb` |A♯/B♭ octave 0 |
|`MI_B` | |B octave 0 |
|`MI_C_1` | |C octave 1 |
|`MI_Cs_1` |`MI_Db_1`|C♯/D♭ octave 1 |
|`MI_D_1` | |D octave 1 |
|`MI_Ds_1` |`MI_Eb_1`|D♯/E♭ octave 1 |
|`MI_E_1` | |E octave 1 |
|`MI_F_1` | |F octave 1 |
|`MI_Fs_1` |`MI_Gb_1`|F♯/G♭ octave 1 |
|`MI_G_1` | |G octave 1 |
|`MI_Gs_1` |`MI_Ab_1`|G♯/A♭ octave 1 |
|`MI_A_1` | |A octave 1 |
|`MI_As_1` |`MI_Bb_1`|A♯/B♭ octave 1 |
|`MI_B_1` | |B octave 1 |
|`MI_C_2` | |C octave 2 |
|`MI_Cs_2` |`MI_Db_2`|C♯/D♭ octave 2 |
|`MI_D_2` | |D octave 2 |
|`MI_Ds_2` |`MI_Eb_2`|D♯/E♭ octave 2 |
|`MI_E_2` | |E octave 2 |
|`MI_F_2` | |F octave 2 |
|`MI_Fs_2` |`MI_Gb_2`|F♯/G♭ octave 2 |
|`MI_G_2` | |G octave 2 |
|`MI_Gs_2` |`MI_Ab_2`|G♯/A♭ octave 2 |
|`MI_A_2` | |A octave 2 |
|`MI_As_2` |`MI_Bb_2`|A♯/B♭ octave 2 |
|`MI_B_2` | |B octave 2 |
|`MI_C_3` | |C octave 3 |
|`MI_Cs_3` |`MI_Db_3`|C♯/D♭ octave 3 |
|`MI_D_3` | |D octave 3 |
|`MI_Ds_3` |`MI_Eb_3`|D♯/E♭ octave 3 |
|`MI_E_3` | |E octave 3 |
|`MI_F_3` | |F octave 3 |
|`MI_Fs_3` |`MI_Gb_3`|F♯/G♭ octave 3 |
|`MI_G_3` | |G octave 3 |
|`MI_Gs_3` |`MI_Ab_3`|G♯/A♭ octave 3 |
|`MI_A_3` | |A octave 3 |
|`MI_As_3` |`MI_Bb_3`|A♯/B♭ octave 3 |
|`MI_B_3` | |B octave 3 |
|`MI_C_4` | |C octave 4 |
|`MI_Cs_4` |`MI_Db_4`|C♯/D♭ octave 4 |
|`MI_D_4` | |D octave 4 |
|`MI_Ds_4` |`MI_Eb_4`|D♯/E♭ octave 4 |
|`MI_E_4` | |E octave 4 |
|`MI_F_4` | |F octave 4 |
|`MI_Fs_4` |`MI_Gb_4`|F♯/G♭ octave 4 |
|`MI_G_4` | |G octave 4 |
|`MI_Gs_4` |`MI_Ab_4`|G♯/A♭ octave 4 |
|`MI_A_4` | |A octave 4 |
|`MI_As_4` |`MI_Bb_4`|A♯/B♭ octave 4 |
|`MI_B_4` | |B octave 4 |
|`MI_C_5` | |C octave 5 |
|`MI_Cs_5` |`MI_Db_5`|C♯/D♭ octave 5 |
|`MI_D_5` | |D octave 5 |
|`MI_Ds_5` |`MI_Eb_5`|D♯/E♭ octave 5 |
|`MI_E_5` | |E octave 5 |
|`MI_F_5` | |F octave 5 |
|`MI_Fs_5` |`MI_Gb_5`|F♯/G♭ octave 5 |
|`MI_G_5` | |G octave 5 |
|`MI_Gs_5` |`MI_Ab_5`|G♯/A♭ octave 5 |
|`MI_A_5` | |A octave 5 |
|`MI_As_5` |`MI_Bb_5`|A♯/B♭ octave 5 |
|`MI_B_5` | |B octave 5 |
|`MI_OCT_N2` | |Set octave to -2 |
|`MI_OCT_N1` | |Set octave to -1 |
|`MI_OCT_0` | |Set octave to 0 |
|`MI_OCT_1` | |Set octave to 1 |
|`MI_OCT_2` | |Set octave to 2 |
|`MI_OCT_3` | |Set octave to 3 |
|`MI_OCT_4` | |Set octave to 4 |
|`MI_OCT_5` | |Set octave to 5 |
|`MI_OCT_6` | |Set octave to 6 |
|`MI_OCT_7` | |Set octave to 7 |
|`MI_OCTD` | |Move down an octave |
|`MI_OCTU` | |Move up an octave |
|`MI_TRNS_N6`| |Set transposition to -6 semitones|
|`MI_TRNS_N5`| |Set transposition to -5 semitones|
|`MI_TRNS_N4`| |Set transposition to -4 semitones|
|`MI_TRNS_N3`| |Set transposition to -3 semitones|
|`MI_TRNS_N2`| |Set transposition to -2 semitones|
|`MI_TRNS_N1`| |Set transposition to -1 semitone |
|`MI_TRNS_0` | |No transposition |
|`MI_TRNS_1` | |Set transposition to +1 semitone |
|`MI_TRNS_2` | |Set transposition to +2 semitones|
|`MI_TRNS_3` | |Set transposition to +3 semitones|
|`MI_TRNS_4` | |Set transposition to +4 semitones|
|`MI_TRNS_5` | |Set transposition to +5 semitones|
|`MI_TRNS_6` | |Set transposition to +6 semitones|
|`MI_TRNSD` | |Decrease transposition |
|`MI_TRNSU` | |Increase transposition |
|`MI_VEL_0` | |Set velocity to 0 |
|`MI_VEL_1` | |Set velocity to 12 |
|`MI_VEL_2` | |Set velocity to 25 |
|`MI_VEL_3` | |Set velocity to 38 |
|`MI_VEL_4` | |Set velocity to 51 |
|`MI_VEL_5` | |Set velocity to 64 |
|`MI_VEL_6` | |Set velocity to 76 |
|`MI_VEL_7` | |Set velocity to 89 |
|`MI_VEL_8` | |Set velocity to 102 |
|`MI_VEL_9` | |Set velocity to 114 |
|`MI_VEL_10` | |Set velocity to 127 |
|`MI_VELD` | |Decrease velocity |
|`MI_VELU` | |Increase velocity |
|`MI_CH1` | |Set channel to 1 |
|`MI_CH2` | |Set channel to 2 |
|`MI_CH3` | |Set channel to 3 |
|`MI_CH4` | |Set channel to 4 |
|`MI_CH5` | |Set channel to 5 |
|`MI_CH6` | |Set channel to 6 |
|`MI_CH7` | |Set channel to 7 |
|`MI_CH8` | |Set channel to 8 |
|`MI_CH9` | |Set channel to 9 |
|`MI_CH10` | |Set channel to 10 |
|`MI_CH11` | |Set channel to 11 |
|`MI_CH12` | |Set channel to 12 |
|`MI_CH13` | |Set channel to 13 |
|`MI_CH14` | |Set channel to 14 |
|`MI_CH15` | |Set channel to 15 |
|`MI_CH16` | |Set channel to 16 |
|`MI_CHD` | |Decrease channel |
|`MI_CHU` | |Increase channel |
|`MI_ALLOFF` | |Stop all notes |
|`MI_SUS` | |Sustain |
|`MI_PORT` | |Portmento |
|`MI_SOST` | |Sostenuto |
|`MI_SOFT` | |Soft Pedal |
|`MI_LEG` | |Legato |
|`MI_MOD` | |Modulation |
|`MI_MODSD` | |Decrease modulation speed |
|`MI_MODSU` | |Increase modulation speed |
|`MI_BENDD` | |Bend pitch down |
|`MI_BENDU` | |Bend pitch up |
### Configuration
Certain values are stored in the `midi_config` struct. This configuration is not persisted to EEPROM. By default, these values are:
|Configuration |Value|Comments |
|-------------------|-----|-------------------------|
|Octave |`4` |Corresponds to `MI_OCT_2`|
|Transposition |`0` | |
|Velocity |`127`| |
|Channel |`0` | |
|Modulation Interval|`8` | |
For the above, the `MI_C` keycode will produce a C3 (note number 48), and so on.
### References
#### MIDI Specification
* [MIDI.org](https://www.midi.org/specifications-old/item/table-1-summary-of-midi-message)
* [CMU MIDI Programmer's Reference](https://www.cs.cmu.edu/~music/cmsip/readings/MIDI%20tutorial%20for%20programmers.html)
#### QMK C Files
* `quantum/process_keycode/process_midi.c`
* `quantum/quantum_keycodes.h`
* `tmk_core/protocol/midi.h`
* `tmk_core/protocol/midi.c`
* `tmk_core/protocol/qmk_midi.c`
* `tmk_core/protocol/midi_device.h`
<!--
#### QMK Internals (Autogenerated)
* [Internals/MIDI Device Setup Process](internals_midi_device_setup_process.md)
* [Internals/MIDI Device](internals_midi_device.md)
* [Internals/MIDI Util](internals_midi_util.md)
-->

View File

@@ -145,6 +145,8 @@ void oled_task_user(void) {
|`OLED_FONT_WIDTH` |`6` |The font width |
|`OLED_FONT_HEIGHT` |`8` |The font height (untested) |
|`OLED_TIMEOUT` |`60000` |Turns off the OLED screen after 60000ms of keyboard inactivity. Helps reduce OLED Burn-in. Set to 0 to disable. |
|`OLED_FADE_OUT` |*Not defined* |Enables fade out animation. Use together with `OLED_TIMEOUT`. |
|`OLED_FADE_OUT_INTERVAL` |`0` |The speed of fade out animation, from 0 to 15. Larger values are slower. |
|`OLED_SCROLL_TIMEOUT` |`0` |Scrolls the OLED screen after 0ms of OLED inactivity. Helps reduce OLED Burn-in. Set to 0 to disable. |
|`OLED_SCROLL_TIMEOUT_RIGHT`|*Not defined* |Scroll timeout direction is right when defined, left when undefined. |
|`OLED_IC` |`OLED_IC_SSD1306`|Set to `OLED_IC_SH1106` if you're using the SH1106 OLED controller. |

View File

@@ -27,6 +27,10 @@ Once you have made the necessary changes to the mouse report, you need to send i
When the mouse report is sent, the x, y, v, and h values are set to 0 (this is done in `pointing_device_send()`, which can be overridden to avoid this behavior). This way, button states persist, but movement will only occur once. For further customization, both `pointing_device_init` and `pointing_device_task` can be overridden.
Additionally, by default, `pointing_device_send()` will only send a report when the report has actually changed. This prevents it from continuously sending mouse reports, which will keep the host system awake. This behavior can be changed by creating your own `pointing_device_send()` function.
Also, you use the `has_mouse_report_changed(new, old)` function to check to see if the report has changed.
In the following example, a custom key is used to click the mouse and scroll 127 units vertically and horizontally, then undo all of that when released - because that's a totally useful function. Listen, this is an example:
```c

View File

@@ -15,7 +15,20 @@ RGB_MATRIX_ENABLE = yes
RGB_MATRIX_DRIVER = IS31FL3731
```
Configure the hardware via your `config.h`:
You can use between 1 and 4 IS31FL3731 IC's. Do not specify `DRIVER_ADDR_<N>` defines for IC's that are not present on your keyboard. You can define the following items in `config.h`:
| Variable | Description | Default |
|----------|-------------|---------|
| `ISSI_TIMEOUT` | (Optional) How long to wait for i2c messages, in milliseconds | 100 |
| `ISSI_PERSISTENCE` | (Optional) Retry failed messages this many times | 0 |
| `DRIVER_COUNT` | (Required) How many RGB driver IC's are present | |
| `DRIVER_LED_TOTAL` | (Required) How many RGB lights are present across all drivers | |
| `DRIVER_ADDR_1` | (Required) Address for the first RGB driver | |
| `DRIVER_ADDR_2` | (Optional) Address for the second RGB driver | |
| `DRIVER_ADDR_3` | (Optional) Address for the third RGB driver | |
| `DRIVER_ADDR_4` | (Optional) Address for the fourth RGB driver | |
Here is an example using 2 drivers.
```c
// This is a 7-bit address, that gets left-shifted and bit 0
@@ -36,8 +49,6 @@ Configure the hardware via your `config.h`:
!> Note the parentheses, this is so when `DRIVER_LED_TOTAL` is used in code and expanded, the values are added together before any additional math is applied to them. As an example, `rand() % (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL)` will give very different results than `rand() % DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL`.
Currently only 2 drivers are supported, but it would be trivial to support all 4 combinations.
Define these arrays listing all the LEDs in your `<keyboard>.c`:
```c
@@ -53,12 +64,10 @@ const is31_led g_is31_leds[DRIVER_LED_TOTAL] = {
}
```
Where `Cx_y` is the location of the LED in the matrix defined by [the datasheet](https://www.issi.com/WW/pdf/31FL3731.pdf) and the header file `drivers/issi/is31fl3731.h`. The `driver` is the index of the driver you defined in your `config.h` (`0` or `1` right now).
Where `Cx_y` is the location of the LED in the matrix defined by [the datasheet](https://www.issi.com/WW/pdf/31FL3731.pdf) and the header file `drivers/issi/is31fl3731.h`. The `driver` is the index of the driver you defined in your `config.h` (`0`, `1`, `2`, or `3`).
---
### IS31FL3733/IS31FL3737 :id=is31fl3733is31fl3737
!> For the IS31FL3737, replace all instances of `IS31FL3733` below with `IS31FL3737`.
### IS31FL3733 :id=is31fl3733
There is basic support for addressable RGB matrix lighting with the I2C IS31FL3733 RGB controller. To enable it, add this to your `rules.mk`:
@@ -67,7 +76,24 @@ RGB_MATRIX_ENABLE = yes
RGB_MATRIX_DRIVER = IS31FL3733
```
Configure the hardware via your `config.h`:
You can use between 1 and 4 IS31FL3733 IC's. Do not specify `DRIVER_ADDR_<N>` defines for IC's that are not present on your keyboard. You can define the following items in `config.h`:
| Variable | Description | Default |
|----------|-------------|---------|
| `ISSI_TIMEOUT` | (Optional) How long to wait for i2c messages, in milliseconds | 100 |
| `ISSI_PERSISTENCE` | (Optional) Retry failed messages this many times | 0 |
| `DRIVER_COUNT` | (Required) How many RGB driver IC's are present | |
| `DRIVER_LED_TOTAL` | (Required) How many RGB lights are present across all drivers | |
| `DRIVER_ADDR_1` | (Required) Address for the first RGB driver | |
| `DRIVER_ADDR_2` | (Optional) Address for the second RGB driver | |
| `DRIVER_ADDR_3` | (Optional) Address for the third RGB driver | |
| `DRIVER_ADDR_4` | (Optional) Address for the fourth RGB driver | |
| `DRIVER_SYNC_1` | (Optional) Sync configuration for the first RGB driver | 0 |
| `DRIVER_SYNC_2` | (Optional) Sync configuration for the second RGB driver | 0 |
| `DRIVER_SYNC_3` | (Optional) Sync configuration for the third RGB driver | 0 |
| `DRIVER_SYNC_4` | (Optional) Sync configuration for the fourth RGB driver | 0 |
Here is an example using 2 drivers.
```c
// This is a 7-bit address, that gets left-shifted and bit 0
@@ -81,6 +107,58 @@ Configure the hardware via your `config.h`:
// ADDR2 represents A3:A2 of the 7-bit address.
// The result is: 0b101(ADDR2)(ADDR1)
#define DRIVER_ADDR_1 0b1010000
#define DRIVER_ADDR_2 0b1010011
#define DRIVER_COUNT 2
#define DRIVER_1_LED_TOTAL 58
#define DRIVER_2_LED_TOTAL 10
#define DRIVER_LED_TOTAL (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL)
```
!> Note the parentheses, this is so when `DRIVER_LED_TOTAL` is used in code and expanded, the values are added together before any additional math is applied to them. As an example, `rand() % (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL)` will give very different results than `rand() % DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL`.
Currently only 4 drivers are supported, but it would be trivial to support all 8 combinations.
Define these arrays listing all the LEDs in your `<keyboard>.c`:
```c
const is31_led g_is31_leds[DRIVER_LED_TOTAL] = {
/* Refer to IS31 manual for these locations
* driver
* | R location
* | | G location
* | | | B location
* | | | | */
{0, B_1, A_1, C_1},
....
}
```
Where `X_Y` is the location of the LED in the matrix defined by [the datasheet](https://www.issi.com/WW/pdf/31FL3733.pdf) and the header file `drivers/issi/is31fl3733.h`. The `driver` is the index of the driver you defined in your `config.h` (`0`, `1`, `2`, or `3` for now).
---
### IS31FL3737 :id=is31fl3737
There is basic support for addressable RGB matrix lighting with the I2C IS31FL3737 RGB controller. To enable it, add this to your `rules.mk`:
```makefile
RGB_MATRIX_ENABLE = yes
RGB_MATRIX_DRIVER = IS31FL3737
```
Configure the hardware via your `config.h`:
```c
// This is a 7-bit address, that gets left-shifted and bit 0
// set to 0 for write, 1 for read (as per I2C protocol)
// The address will vary depending on your wiring:
// 0000 <-> GND
// 0101 <-> SCL
// 1010 <-> SDA
// 1111 <-> VCC
// ADDR represents A3:A0 of the 7-bit address.
// The result is: 0b101(ADDR)
#define DRIVER_ADDR_1 0b1010000
#define DRIVER_ADDR_2 0b1010000 // this is here for compliancy reasons.
#define DRIVER_COUNT 2
@@ -105,7 +183,7 @@ const is31_led g_is31_leds[DRIVER_LED_TOTAL] = {
}
```
Where `X_Y` is the location of the LED in the matrix defined by [the datasheet](https://www.issi.com/WW/pdf/31FL3733.pdf) and the header file `drivers/issi/is31fl3733.h`. The `driver` is the index of the driver you defined in your `config.h` (Only `0` right now).
Where `X_Y` is the location of the LED in the matrix defined by [the datasheet](https://www.issi.com/WW/pdf/31FL3737.pdf) and the header file `drivers/issi/is31fl3737.h`. The `driver` is the index of the driver you defined in your `config.h` (Only `0` right now).
---
@@ -254,6 +332,9 @@ enum rgb_matrix_effects {
RGB_MATRIX_RAINBOW_PINWHEELS, // Full dual gradients spinning two halfs of keyboard
RGB_MATRIX_RAINDROPS, // Randomly changes a single key's hue
RGB_MATRIX_JELLYBEAN_RAINDROPS, // Randomly changes a single key's hue and saturation
RGB_MATRIX_HUE_BREATHING, // Hue shifts up a slight ammount at the same time, then shifts back
RGB_MATRIX_HUE_PENDULUM, // Hue shifts up a slight ammount in a wave to the right, then back to the left
RGB_MATRIX_HUE_WAVE, // Hue shifts up a slight ammount and then back down in a wave to the right
#if define(RGB_MATRIX_FRAMEBUFFER_EFFECTS)
RGB_MATRIX_TYPING_HEATMAP, // How hot is your WPM!
RGB_MATRIX_DIGITAL_RAIN, // That famous computer simulation
@@ -283,6 +364,7 @@ You can disable a single effect by defining `DISABLE_[EFFECT_NAME]` in your `con
|-------------------------------------------------------|-----------------------------------------------|
|`#define DISABLE_RGB_MATRIX_ALPHAS_MODS` |Disables `RGB_MATRIX_ALPHAS_MODS` |
|`#define DISABLE_RGB_MATRIX_GRADIENT_UP_DOWN` |Disables `RGB_MATRIX_GRADIENT_UP_DOWN` |
|`#define DISABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT` |Disables `MATRIX_GRADIENT_LEFT_RIGHT` |
|`#define DISABLE_RGB_MATRIX_BREATHING` |Disables `RGB_MATRIX_BREATHING` |
|`#define DISABLE_RGB_MATRIX_BAND_SAT` |Disables `RGB_MATRIX_BAND_SAT` |
|`#define DISABLE_RGB_MATRIX_BAND_VAL` |Disables `RGB_MATRIX_BAND_VAL` |
@@ -293,20 +375,23 @@ You can disable a single effect by defining `DISABLE_[EFFECT_NAME]` in your `con
|`#define DISABLE_RGB_MATRIX_CYCLE_ALL` |Disables `RGB_MATRIX_CYCLE_ALL` |
|`#define DISABLE_RGB_MATRIX_CYCLE_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_MOVING_CHEVRON` |Disables `RGB_MATRIX_RAINBOW_MOVING_CHEVRON` |
|`#define DISABLE_RGB_MATRIX_CYCLE_OUT_IN` |Disables `RGB_MATRIX_CYCLE_OUT_IN` |
|`#define DISABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL` |Disables `RGB_MATRIX_CYCLE_OUT_IN_DUAL` |
|`#define DISABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON` |Disables `RGB_MATRIX_RAINBOW_MOVING_CHEVRON` |
|`#define DISABLE_RGB_MATRIX_DUAL_BEACON` |Disables `RGB_MATRIX_DUAL_BEACON` |
|`#define DISABLE_RGB_MATRIX_CYCLE_PINWHEEL` |Disables `RGB_MATRIX_CYCLE_PINWHEEL` |
|`#define DISABLE_RGB_MATRIX_CYCLE_SPIRAL` |Disables `RGB_MATRIX_CYCLE_SPIRAL` |
|`#define DISABLE_RGB_MATRIX_DUAL_BEACON` |Disables `RGB_MATRIX_DUAL_BEACON` |
|`#define DISABLE_RGB_MATRIX_RAINBOW_BEACON` |Disables `RGB_MATRIX_RAINBOW_BEACON` |
|`#define DISABLE_RGB_MATRIX_RAINBOW_PINWHEELS` |Disables `RGB_MATRIX_RAINBOW_PINWHEELS` |
|`#define DISABLE_RGB_MATRIX_RAINDROPS` |Disables `RGB_MATRIX_RAINDROPS` |
|`#define DISABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS` |Disables `RGB_MATRIX_JELLYBEAN_RAINDROPS` |
|`#define DISABLE_RGB_MATRIX_HUE_BREATHING` |Disables `RGB_MATRIX_HUE_BREATHING` |
|`#define DISABLE_RGB_MATRIX_HUE_PENDULUM` |Disables `RGB_MATRIX_HUE_PENDULUM` |
|`#define DISABLE_RGB_MATRIX_HUE_WAVE ` |Disables `RGB_MATRIX_HUE_WAVE ` |
|`#define DISABLE_RGB_MATRIX_TYPING_HEATMAP` |Disables `RGB_MATRIX_TYPING_HEATMAP` |
|`#define DISABLE_RGB_MATRIX_DIGITAL_RAIN` |Disables `RGB_MATRIX_DIGITAL_RAIN` |
|`#define DISABLE_RGB_MATRIX_SOLID_REACTIVE` |Disables `RGB_MATRIX_SOLID_REACTIVE` |
|`#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE` |Disables `RGB_MATRIX_SOLID_REACTIVE_SIMPLE` |
|`#define DISABLE_RGB_MATRIX_SOLID_REACTIVE` |Disables `RGB_MATRIX_SOLID_REACTIVE` |
|`#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE` |Disables `RGB_MATRIX_SOLID_REACTIVE_WIDE` |
|`#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE` |Disables `RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE` |
|`#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS` |Disables `RGB_MATRIX_SOLID_REACTIVE_CROSS` |
@@ -391,7 +476,7 @@ static bool my_cool_effect2(effect_params_t* params) {
#endif // RGB_MATRIX_CUSTOM_EFFECT_IMPLS
```
For inspiration and examples, check out the built-in effects under `quantum/rgb_matrix_animation/`
For inspiration and examples, check out the built-in effects under `quantum/rgb_matrix_animations/`
## Colors :id=colors
@@ -427,9 +512,10 @@ These are defined in [`rgblight_list.h`](https://github.com/qmk/qmk_firmware/blo
```c
#define RGB_MATRIX_KEYPRESSES // reacts to keypresses
#define RGB_MATRIX_KEYRELEASES // reacts to keyreleases (instead of keypresses)
#define RGB_MATRIX_FRAMEBUFFER_EFFECTS // enable framebuffer effects
#define RGB_DISABLE_TIMEOUT 0 // number of milliseconds to wait until rgb automatically turns off
#define RGB_DISABLE_AFTER_TIMEOUT 0 // OBSOLETE: number of ticks to wait until disabling effects
#define RGB_DISABLE_WHEN_USB_SUSPENDED false // turn off effects when suspended
#define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended
#define RGB_MATRIX_LED_PROCESS_LIMIT (DRIVER_LED_TOTAL + 4) / 5 // limits the number of LEDs to process in an animation per task run (increases keyboard responsiveness)
#define RGB_MATRIX_LED_FLUSH_LIMIT 16 // limits in milliseconds how frequently an animation will update the LEDs. 16 (16ms) is equivalent to limiting to 60fps (increases keyboard responsiveness)
#define RGB_MATRIX_MAXIMUM_BRIGHTNESS 200 // limits maximum brightness of LEDs to 200 out of 255. If not defined maximum brightness is set to 255
@@ -439,11 +525,13 @@ These are defined in [`rgblight_list.h`](https://github.com/qmk/qmk_firmware/blo
#define RGB_MATRIX_STARTUP_VAL RGB_MATRIX_MAXIMUM_BRIGHTNESS // Sets the default brightness value, if none has been set
#define RGB_MATRIX_STARTUP_SPD 127 // Sets the default animation speed, if none has been set
#define RGB_MATRIX_DISABLE_KEYCODES // disables control of rgb matrix by keycodes (must use code functions to control the feature)
#define RGB_MATRIX_SPLIT { X, Y } // (Optional) For split keyboards, the number of LEDs connected on each half. X = left, Y = Right.
// If RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is enabled, you also will want to enable SPLIT_TRANSPORT_MIRROR
```
## EEPROM storage :id=eeprom-storage
The EEPROM for it is currently shared with the RGBLIGHT system (it's generally assumed only one RGB would be used at a time), but could be configured to use its own 32bit address with:
The EEPROM for it is currently shared with the LED Matrix system (it's generally assumed only one feature would be used at a time), but could be configured to use its own 32bit address with:
```c
#define EECONFIG_RGB_MATRIX (uint32_t *)28

View File

@@ -74,6 +74,7 @@ Changing the **Value** sets the overall brightness.<br>
|`RGB_MODE_XMAS` |`RGB_M_X` |Christmas animation mode |
|`RGB_MODE_GRADIENT`|`RGB_M_G` |Static gradient animation mode |
|`RGB_MODE_RGBTEST` |`RGB_M_T` |Red, Green, Blue test animation mode |
|`RGB_MODE_TWINKLE` |`RGB_M_TW`|Twinkle animation mode |
!> By default, if you have both the RGB Light and the [RGB Matrix](feature_rgb_matrix.md) feature enabled, these keycodes will work for both features, at the same time. You can disable the keycode functionality by defining the `*_DISABLE_KEYCODES` option for the specific feature.
@@ -82,15 +83,20 @@ Changing the **Value** sets the overall brightness.<br>
Your RGB lighting can be configured by placing these `#define`s in your `config.h`:
|Define |Default |Description |
|---------------------|-------------|-----------------------------------------------------------------------------|
|`RGBLIGHT_HUE_STEP` |`10` |The number of steps to cycle through the hue by |
|`RGBLIGHT_SAT_STEP` |`17` |The number of steps to increment the saturation by |
|`RGBLIGHT_VAL_STEP` |`17` |The number of steps to increment the brightness by |
|`RGBLIGHT_LIMIT_VAL` |`255` |The maximum brightness level |
|`RGBLIGHT_SLEEP` |*Not defined*|If defined, the RGB lighting will be switched off when the host goes to sleep|
|`RGBLIGHT_SPLIT` |*Not defined*|If defined, synchronization functionality for split keyboards is added|
|`RGBLIGHT_DISABLE_KEYCODES`|*not defined*|If defined, disables the ability to control RGB Light from the keycodes. You must use code functions to control the feature|
|Define |Default |Description |
|---------------------------|----------------------------|---------------------------------------------------------------------------------------------------------------------------|
|`RGBLIGHT_HUE_STEP` |`10` |The number of steps to cycle through the hue by |
|`RGBLIGHT_SAT_STEP` |`17` |The number of steps to increment the saturation by |
|`RGBLIGHT_VAL_STEP` |`17` |The number of steps to increment the brightness by |
|`RGBLIGHT_LIMIT_VAL` |`255` |The maximum brightness level |
|`RGBLIGHT_SLEEP` |*Not defined* |If defined, the RGB lighting will be switched off when the host goes to sleep |
|`RGBLIGHT_SPLIT` |*Not defined* |If defined, synchronization functionality for split keyboards is added |
|`RGBLIGHT_DISABLE_KEYCODES`|*Not defined* |If defined, disables the ability to control RGB Light from the keycodes. You must use code functions to control the feature|
|`RGBLIGHT_DEFAULT_MODE` |`RGBLIGHT_MODE_STATIC_LIGHT`|The default mode to use upon clearing the EEPROM |
|`RGBLIGHT_DEFAULT_HUE` |`0` (red) |The default hue to use upon clearing the EEPROM |
|`RGBLIGHT_DEFAULT_SAT` |`UINT8_MAX` (255) |The default saturation to use upon clearing the EEPROM |
|`RGBLIGHT_DEFAULT_VAL` |`RGBLIGHT_LIMIT_VAL` |The default value (brightness) to use upon clearing the EEPROM |
|`RGBLIGHT_DEFAULT_SPD` |`0` |The default speed to use upon clearing the EEPROM |
## Effects and Animations
@@ -304,6 +310,18 @@ void post_process_record_user(uint16_t keycode, keyrecord_t *record) {
}
```
You can also use `rgblight_blink_layer_repeat` to specify the amount of times the layer is supposed to blink. Using the layers from above,
```c
void post_process_record_user(uint16_t keycode, keyrecord_t *record) {
switch (keycode) {
case DEBUG:
rgblight_blink_layer_repeat(debug_enable ? 0 : 1, 200, 3);
break;
}
}
```
would turn the layer 0 (or 1) on and off again three times when `DEBUG` is pressed.
### Overriding RGB Lighting on/off status
Normally lighting layers are not shown when RGB Lighting is disabled (e.g. with `RGB_TOG` keycode). If you would like lighting layers to work even when the RGB Lighting is otherwise off, add `#define RGBLIGHT_LAYERS_OVERRIDE_RGB_OFF` to your `config.h`.
@@ -354,9 +372,9 @@ rgblight_set(); // Utility functions do not call rgblight_set() automatically, s
Example:
```c
rgblight_sethsv(HSV_WHITE, 0); // led 0
rgblight_sethsv(HSV_RED, 1); // led 1
rgblight_sethsv(HSV_GREEN, 2); // led 2
rgblight_sethsv_at(HSV_WHITE, 0); // led 0
rgblight_sethsv_at(HSV_RED, 1); // led 1
rgblight_sethsv_at(HSV_GREEN, 2); // led 2
// The above functions automatically calls rgblight_set(), so there is no need to call it explicitly.
// Note that it is inefficient to call repeatedly.
```

View File

@@ -109,6 +109,10 @@ Normally, when a diode is connected to an intersection, it is judged to be left.
#define SPLIT_HAND_MATRIX_GRID_LOW_IS_RIGHT
```
Note that adding a diode at a previously unused intersection will effectively tell the firmware that there is a key held down at that point. You can instruct qmk to ignore that intersection by defining `MATRIX_MASKED` and then defining a `matrix_row_t matrix_mask[MATRIX_ROWS]` array in your keyboard config. Each bit of a single value (starting form the least-significant bit) is used to tell qmk whether or not to pay attention to key presses at that intersection.
While `MATRIX_MASKED` isn't necessary to use `SPLIT_HAND_MATRIX_GRID` successfully, without it you may experience issues trying to suspend your computer with your keyboard attached as the matrix will always report at least one key-press.
#### Handedness by EEPROM
This method sets the keyboard's handedness by setting a flag in the persistent storage (`EEPROM`). This is checked when the controller first starts up, and determines what half the keyboard is, and how to orient the keyboard layout.
@@ -129,6 +133,12 @@ However, you'll have to flash the EEPROM files for the correct hand to each cont
* `:dfu-util-split-left`
* `:dfu-util-split-right`
Example:
```
make crkbd:default:avrdude-split-left
```
This setting is not changed when re-initializing the EEPROM using the `EEP_RST` key, or using the `eeconfig_init()` function. However, if you reset the EEPROM outside of the firmware's built in options (such as flashing a file that overwrites the `EEPROM`, like how the [QMK Toolbox]()'s "Reset EEPROM" button works), you'll need to re-flash the controller with the `EEPROM` files.
You can find the `EEPROM` files in the QMK firmware repo, [here](https://github.com/qmk/qmk_firmware/tree/master/quantum/split_common).
@@ -191,6 +201,12 @@ communication protocol and may impact the matrix scan speed when enabled.
The purpose of this feature is to support cosmetic use of modifer state (e.g.
displaying status on an OLED screen).
```c
#define SPLIT_TRANSPORT_MIRROR
```
This mirrors the master side matrix to the slave side for features that react or require knowledge of master side key presses on the slave side. This adds a few bytes of data to the split communication protocol and may impact the matrix scan speed when enabled. The purpose of this feature is to support cosmetic use of key events (e.g. RGB reacting to Keypresses).
### Hardware Configuration Options
There are some settings that you may need to configure, based on how the hardware is set up.
@@ -233,7 +249,12 @@ This sets how many LEDs are directly connected to each controller. The first nu
```c
#define SPLIT_USB_DETECT
```
This option changes the startup behavior to detect an active USB connection when delegating master/slave. If this operation times out, then the half is assume to be a slave. This is the default behavior for ARM, and required for AVR Teensy boards (due to hardware limitations).
Enabling this option changes the startup behavior to listen for an active USB communication to delegate which part is master and which is slave. With this option enabled and theres's USB communication, then that half assumes it is the master, otherwise it assumes it is the slave.
Without this option, the master is the half that can detect voltage on the physical USB connection (VBUS detection).
Enabled by default on ChibiOS/ARM.
?> This setting will stop the ability to demo using battery packs.
@@ -249,9 +270,13 @@ This sets the poll frequency when detecting master/slave when using `SPLIT_USB_D
## Hardware Considerations and Mods
While most any Pro Micro can be used, micro controllers like the AVR Teensys and most (if not all) ARM boards require the Split USB Detect.
Master/slave delegation is made either by detecting voltage on VBUS connection or waiting for USB communication (`SPLIT_USB_DETECT`). Pro Micro boards can use VBUS detection out of the box and be used with or without `SPLIT_USB_DETECT`.
However, with the Teensy 2.0 and Teensy++ 2.0, there is a simple hardware mod that you can perform to add VBUS detection, so you don't need the Split USB detection option.
Many ARM boards, but not all, do not support VBUS detection. Because it is common that ARM boards lack VBUS detection, `SPLIT_USB_DETECT` is automatically defined on ARM targets (technically when ChibiOS is targetted).
### Teensy boards
Teensy boards lack VBUS detection out of the box and must have `SPLIT_USB_DETECT` defined. With the Teensy 2.0 and Teensy++ 2.0, there is a simple hardware mod that you can perform to add VBUS detection, so you don't need the `SPLIT_USB_DETECT` option.
You'll only need a few things:

View File

@@ -7,7 +7,7 @@ The swap-hands action allows support for one-handed typing without requiring a s
The configuration table is a simple 2-dimensional array to map from column/row to new column/row. Example `hand_swap_config` for Planck:
```C
const keypos_t hand_swap_config[MATRIX_ROWS][MATRIX_COLS] = {
const keypos_t PROGMEM hand_swap_config[MATRIX_ROWS][MATRIX_COLS] = {
{{11, 0}, {10, 0}, {9, 0}, {8, 0}, {7, 0}, {6, 0}, {5, 0}, {4, 0}, {3, 0}, {2, 0}, {1, 0}, {0, 0}},
{{11, 1}, {10, 1}, {9, 1}, {8, 1}, {7, 1}, {6, 1}, {5, 1}, {4, 1}, {3, 1}, {2, 1}, {1, 1}, {0, 1}},
{{11, 2}, {10, 2}, {9, 2}, {8, 2}, {7, 2}, {6, 2}, {5, 2}, {4, 2}, {3, 2}, {2, 2}, {1, 2}, {0, 2}},

View File

@@ -76,7 +76,7 @@ qk_tap_dance_action_t tap_dance_actions[] = {
[TD_ESC_CAPS] = ACTION_TAP_DANCE_DOUBLE(KC_ESC, KC_CAPS),
};
// Add tap dance item in place of a key code
// Add tap dance item to your keymap in place of a keycode
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// ...
TD(TD_ESC_CAPS)
@@ -206,20 +206,22 @@ You will need a few things that can be used for 'Quad Function Tap-Dance'.
You'll need to add these to the top of your `keymap.c` file, before your keymap.
```c
typedef enum {
TD_NONE,
TD_UNKNOWN,
TD_SINGLE_TAP,
TD_SINGLE_HOLD,
TD_DOUBLE_TAP,
TD_DOUBLE_HOLD,
TD_DOUBLE_SINGLE_TAP, // Send two single taps
TD_TRIPLE_TAP,
TD_TRIPLE_HOLD
} td_state_t;
typedef struct {
bool is_press_action;
uint8_t state;
} tap;
enum {
SINGLE_TAP = 1,
SINGLE_HOLD,
DOUBLE_TAP,
DOUBLE_HOLD,
DOUBLE_SINGLE_TAP, // Send two single taps
TRIPLE_TAP,
TRIPLE_HOLD
};
td_state_t state;
} td_tap_t;
// Tap dance enums
enum {
@@ -227,7 +229,7 @@ enum {
SOME_OTHER_DANCE
};
uint8_t cur_dance(qk_tap_dance_state_t *state);
td_state_t cur_dance(qk_tap_dance_state_t *state);
// For the x tap dance. Put it here so it can be used in any keymap
void x_finished(qk_tap_dance_state_t *state, void *user_data);
@@ -261,61 +263,61 @@ Now, at the bottom of your `keymap.c` file, you'll need to add the following:
* Letters used in common words as a double. For example 'p' in 'pepper'. If a tap dance function existed on the
* letter 'p', the word 'pepper' would be quite frustating to type.
*
* For the third point, there does exist the 'DOUBLE_SINGLE_TAP', however this is not fully tested
* For the third point, there does exist the 'TD_DOUBLE_SINGLE_TAP', however this is not fully tested
*
*/
uint8_t cur_dance(qk_tap_dance_state_t *state) {
td_state_t cur_dance(qk_tap_dance_state_t *state) {
if (state->count == 1) {
if (state->interrupted || !state->pressed) return SINGLE_TAP;
if (state->interrupted || !state->pressed) return TD_SINGLE_TAP;
// Key has not been interrupted, but the key is still held. Means you want to send a 'HOLD'.
else return SINGLE_HOLD;
else return TD_SINGLE_HOLD;
} else if (state->count == 2) {
// DOUBLE_SINGLE_TAP is to distinguish between typing "pepper", and actually wanting a double tap
// TD_DOUBLE_SINGLE_TAP is to distinguish between typing "pepper", and actually wanting a double tap
// action when hitting 'pp'. Suggested use case for this return value is when you want to send two
// keystrokes of the key, and not the 'double tap' action/macro.
if (state->interrupted) return DOUBLE_SINGLE_TAP;
else if (state->pressed) return DOUBLE_HOLD;
else return DOUBLE_TAP;
if (state->interrupted) return TD_DOUBLE_SINGLE_TAP;
else if (state->pressed) return TD_DOUBLE_HOLD;
else return TD_DOUBLE_TAP;
}
// Assumes no one is trying to type the same letter three times (at least not quickly).
// If your tap dance key is 'KC_W', and you want to type "www." quickly - then you will need to add
// an exception here to return a 'TRIPLE_SINGLE_TAP', and define that enum just like 'DOUBLE_SINGLE_TAP'
// an exception here to return a 'TD_TRIPLE_SINGLE_TAP', and define that enum just like 'TD_DOUBLE_SINGLE_TAP'
if (state->count == 3) {
if (state->interrupted || !state->pressed) return TRIPLE_TAP;
else return TRIPLE_HOLD;
} else return 8; // Magic number. At some point this method will expand to work for more presses
if (state->interrupted || !state->pressed) return TD_TRIPLE_TAP;
else return TD_TRIPLE_HOLD;
} else return TD_UNKNOWN;
}
// Create an instance of 'tap' for the 'x' tap dance.
static tap xtap_state = {
// Create an instance of 'td_tap_t' for the 'x' tap dance.
static td_tap_t xtap_state = {
.is_press_action = true,
.state = 0
.state = TD_NONE
};
void x_finished(qk_tap_dance_state_t *state, void *user_data) {
xtap_state.state = cur_dance(state);
switch (xtap_state.state) {
case SINGLE_TAP: register_code(KC_X); break;
case SINGLE_HOLD: register_code(KC_LCTRL); break;
case DOUBLE_TAP: register_code(KC_ESC); break;
case DOUBLE_HOLD: register_code(KC_LALT); break;
case TD_SINGLE_TAP: register_code(KC_X); break;
case TD_SINGLE_HOLD: register_code(KC_LCTRL); break;
case TD_DOUBLE_TAP: register_code(KC_ESC); break;
case TD_DOUBLE_HOLD: register_code(KC_LALT); break;
// Last case is for fast typing. Assuming your key is `f`:
// For example, when typing the word `buffer`, and you want to make sure that you send `ff` and not `Esc`.
// In order to type `ff` when typing fast, the next character will have to be hit within the `TAPPING_TERM`, which by default is 200ms.
case DOUBLE_SINGLE_TAP: tap_code(KC_X); register_code(KC_X);
case TD_DOUBLE_SINGLE_TAP: tap_code(KC_X); register_code(KC_X);
}
}
void x_reset(qk_tap_dance_state_t *state, void *user_data) {
switch (xtap_state.state) {
case SINGLE_TAP: unregister_code(KC_X); break;
case SINGLE_HOLD: unregister_code(KC_LCTRL); break;
case DOUBLE_TAP: unregister_code(KC_ESC); break;
case DOUBLE_HOLD: unregister_code(KC_LALT);
case DOUBLE_SINGLE_TAP: unregister_code(KC_X);
case TD_SINGLE_TAP: unregister_code(KC_X); break;
case TD_SINGLE_HOLD: unregister_code(KC_LCTRL); break;
case TD_DOUBLE_TAP: unregister_code(KC_ESC); break;
case TD_DOUBLE_HOLD: unregister_code(KC_LALT);
case TD_DOUBLE_SINGLE_TAP: unregister_code(KC_X);
}
xtap_state.state = 0;
xtap_state.state = TD_NONE;
}
qk_tap_dance_action_t tap_dance_actions[] = {
@@ -343,9 +345,11 @@ enum td_keycodes {
// Define a type containing as many tapdance states as you need
typedef enum {
SINGLE_TAP,
SINGLE_HOLD,
DOUBLE_SINGLE_TAP
TD_NONE,
TD_UNKNOWN,
TD_SINGLE_TAP,
TD_SINGLE_HOLD,
TD_DOUBLE_SINGLE_TAP
} td_state_t;
// Create a global instance of the tapdance state type
@@ -354,7 +358,7 @@ static td_state_t td_state;
// Declare your tapdance functions:
// Function to determine the current tapdance state
uint8_t cur_dance(qk_tap_dance_state_t *state);
td_state_t cur_dance(qk_tap_dance_state_t *state);
// `finished` and `reset` functions for each tapdance keycode
void altlp_finished(qk_tap_dance_state_t *state, void *user_data);
@@ -365,14 +369,14 @@ Below your `LAYOUT`, define each of the tapdance functions:
```c
// Determine the tapdance state to return
uint8_t cur_dance(qk_tap_dance_state_t *state) {
td_state_t cur_dance(qk_tap_dance_state_t *state) {
if (state->count == 1) {
if (state->interrupted || !state->pressed) return SINGLE_TAP;
else return SINGLE_HOLD;
if (state->interrupted || !state->pressed) return TD_SINGLE_TAP;
else return TD_SINGLE_HOLD;
}
if (state->count == 2) return DOUBLE_SINGLE_TAP;
else return 3; // Any number higher than the maximum state value you return above
if (state->count == 2) return TD_DOUBLE_SINGLE_TAP;
else return TD_UNKNOWN; // Any number higher than the maximum state value you return above
}
// Handle the possible states for each tapdance keycode you define:
@@ -380,13 +384,13 @@ uint8_t cur_dance(qk_tap_dance_state_t *state) {
void altlp_finished(qk_tap_dance_state_t *state, void *user_data) {
td_state = cur_dance(state);
switch (td_state) {
case SINGLE_TAP:
case TD_SINGLE_TAP:
register_code16(KC_LPRN);
break;
case SINGLE_HOLD:
case TD_SINGLE_HOLD:
register_mods(MOD_BIT(KC_LALT)); // For a layer-tap key, use `layer_on(_MY_LAYER)` here
break;
case DOUBLE_SINGLE_TAP: // Allow nesting of 2 parens `((` within tapping term
case TD_DOUBLE_SINGLE_TAP: // Allow nesting of 2 parens `((` within tapping term
tap_code16(KC_LPRN);
register_code16(KC_LPRN);
}
@@ -394,13 +398,13 @@ void altlp_finished(qk_tap_dance_state_t *state, void *user_data) {
void altlp_reset(qk_tap_dance_state_t *state, void *user_data) {
switch (td_state) {
case SINGLE_TAP:
case TD_SINGLE_TAP:
unregister_code16(KC_LPRN);
break;
case SINGLE_HOLD:
case TD_SINGLE_HOLD:
unregister_mods(MOD_BIT(KC_LALT)); // For a layer-tap key, use `layer_off(_MY_LAYER)` here
break;
case DOUBLE_SINGLE_TAP:
case TD_DOUBLE_SINGLE_TAP:
unregister_code16(KC_LPRN);
}
}
@@ -420,17 +424,19 @@ Tap Dance can be used to mimic MO(layer) and TG(layer) functionality. For this e
The first step is to include the following code towards the beginning of your `keymap.c`:
```c
// Define a type for as many tap dance states as you need
typedef enum {
TD_NONE,
TD_UNKNOWN,
TD_SINGLE_TAP,
TD_SINGLE_HOLD,
TD_DOUBLE_TAP
} td_state_t;
typedef struct {
bool is_press_action;
uint8_t state;
} tap;
// Define a type for as many tap dance states as you need
enum {
SINGLE_TAP = 1,
SINGLE_HOLD,
DOUBLE_TAP
};
td_state_t state;
} td_tap_t;
enum {
QUOT_LAYR, // Our custom tap dance key; add any other tap dance keys to this enum
@@ -439,7 +445,7 @@ enum {
// Declare the functions to be used with your tap dance key(s)
// Function associated with all tap dances
uint8_t cur_dance(qk_tap_dance_state_t *state);
td_state_t cur_dance(qk_tap_dance_state_t *state);
// Functions associated with individual tap dances
void ql_finished(qk_tap_dance_state_t *state, void *user_data);
@@ -450,31 +456,31 @@ Towards the bottom of your `keymap.c`, include the following code:
```c
// Determine the current tap dance state
uint8_t cur_dance(qk_tap_dance_state_t *state) {
td_state_t cur_dance(qk_tap_dance_state_t *state) {
if (state->count == 1) {
if (!state->pressed) return SINGLE_TAP;
else return SINGLE_HOLD;
} else if (state->count == 2) return DOUBLE_TAP;
else return 8;
if (!state->pressed) return TD_SINGLE_TAP;
else return TD_SINGLE_HOLD;
} else if (state->count == 2) return TD_DOUBLE_TAP;
else return TD_UNKNOWN;
}
// Initialize tap structure associated with example tap dance key
static tap ql_tap_state = {
static td_tap_t ql_tap_state = {
.is_press_action = true,
.state = 0
.state = TD_NONE
};
// Functions that control what our tap dance key does
void ql_finished(qk_tap_dance_state_t *state, void *user_data) {
ql_tap_state.state = cur_dance(state);
switch (ql_tap_state.state) {
case SINGLE_TAP:
case TD_SINGLE_TAP:
tap_code(KC_QUOT);
break;
case SINGLE_HOLD:
case TD_SINGLE_HOLD:
layer_on(_MY_LAYER);
break;
case DOUBLE_TAP:
case TD_DOUBLE_TAP:
// Check to see if the layer is already set
if (layer_state_is(_MY_LAYER)) {
// If already set, then switch it off
@@ -489,10 +495,10 @@ void ql_finished(qk_tap_dance_state_t *state, void *user_data) {
void ql_reset(qk_tap_dance_state_t *state, void *user_data) {
// If the key was held down and now is released then switch off the layer
if (ql_tap_state.state == SINGLE_HOLD) {
if (ql_tap_state.state == TD_SINGLE_HOLD) {
layer_off(_MY_LAYER);
}
ql_tap_state.state = 0;
ql_tap_state.state = TD_NONE;
}
// Associate our tap dance key with its functionality
@@ -505,7 +511,7 @@ The above code is similar to that used in previous examples. The one point to no
The use of `cur_dance()` and `ql_tap_state` mirrors the above examples.
The `case:SINGLE_TAP` in `ql_finished` is similar to the above examples. The `SINGLE_HOLD` case works in conjunction with `ql_reset()` to switch to `_MY_LAYER` while the tap dance key is held, and to switch away from `_MY_LAYER` when the key is released. This mirrors the use of `MO(_MY_LAYER)`. The `DOUBLE_TAP` case works by checking whether `_MY_LAYER` is the active layer, and toggling it on or off accordingly. This mirrors the use of `TG(_MY_LAYER)`.
The `case: TD_SINGLE_TAP` in `ql_finished` is similar to the above examples. The `TD_SINGLE_HOLD` case works in conjunction with `ql_reset()` to switch to `_MY_LAYER` while the tap dance key is held, and to switch away from `_MY_LAYER` when the key is released. This mirrors the use of `MO(_MY_LAYER)`. The `TD_DOUBLE_TAP` case works by checking whether `_MY_LAYER` is the active layer, and toggling it on or off accordingly. This mirrors the use of `TG(_MY_LAYER)`.
`tap_dance_actions[]` works similar to the above examples. Note that I used `ACTION_TAP_DANCE_FN_ADVANCED_TIME()` instead of `ACTION_TAP_DANCE_FN_ADVANCED()`. This is because I like my `TAPPING_TERM` to be short (\~175ms) for my non-tap-dance keys but find that this is too quick for me to reliably complete tap dance actions - thus the increased time of 275ms here.

View File

@@ -126,6 +126,8 @@ The following input modes are available:
Enabled by default and works almost anywhere on IBus-enabled distros. Without IBus, this mode works under GTK apps, but rarely anywhere else.
By default, this mode uses Ctrl+Shift+U (`LCTL(LSFT(KC_U))`) to start Unicode input, but this can be changed by defining [`UNICODE_KEY_LNX`](#input-key-configuration) with a different keycode. This might be required for IBus versions ≥1.5.15, where Ctrl+Shift+U behavior is consolidated into Ctrl+Shift+E.
Users who wish support in non-GTK apps without IBus may need to resort to a more indirect method, such as creating a custom keyboard layout ([more on this method](#custom-linux-layout)).
* **`UC_WIN`**: _(not recommended)_ Windows built-in hex numpad Unicode input. Supports code points up to `0xFFFF`.
To enable, create a registry key under `HKEY_CURRENT_USER\Control Panel\Input Method` of type `REG_SZ` called `EnableHexNumpad` and set its value to `1`. This can be done from the Command Prompt by running `reg add "HKCU\Control Panel\Input Method" -v EnableHexNumpad -t REG_SZ -d 1` with administrator privileges. Reboot afterwards.
@@ -228,7 +230,7 @@ send_unicode_string("(ノಠ痊ಠ)ノ彡┻━┻");
Example uses include sending Unicode strings when a key is pressed, as described in [Macros](feature_macros.md).
### `send_unicode_hex_string()`
### `send_unicode_hex_string()` (Deprecated)
Similar to `send_unicode_string()`, but the characters are represented by their Unicode code points, written in hexadecimal and separated by spaces. For example, the table flip above would be achieved with:
@@ -270,3 +272,22 @@ AutoHotkey inserts the Text right of `Send, ` when this combination is pressed.
If you enable the US International layout on the system, it will use punctuation to accent the characters. For instance, typing "\`a" will result in à.
You can find details on how to enable this [here](https://support.microsoft.com/en-us/help/17424/windows-change-keyboard-layout).
## Software keyboard layout on Linux :id=custom-linux-layout
This method does not require Unicode support on the keyboard itself but instead uses a custom keyboard layout for Xorg. This is how special characters are inserted by regular keyboards. This does not require IBus and works in practically all software. Help on creating a custom layout can be found [here](https://www.linux.com/news/creating-custom-keyboard-layouts-x11-using-xkb/), [here](http://karols.github.io/blog/2013/11/18/creating-custom-keyboard-layouts-for-linux/) and [here](https://wiki.archlinux.org/index.php/X_keyboard_extension). An example of how you could edit the `us` layout to gain 🤣 on `RALT(KC_R)`:
Edit the keyboard layout file `/usr/share/X11/xkb/symbols/us`.
Inside `xkb_symbols "basic" {`, add `include "level3(ralt_switch)"`.
Find the line defining the R key and add an entry to the list, making it look like this:
```
key <AD04> { [ r, R, U1F923 ] };
```
Save the file and run the command `setxkbmap us` to reload the layout.
You can define one custom character for key defined in the layout, and another if you populate the fourth layer. Additional layers up to 8th are also possible.
This method is specific to the computer on which you set the custom layout. The custom keys will be available only when Xorg is running. To avoid accidents, you should always reload the layout using `setxkbmap`, otherwise an invalid layout could prevent you from logging into your system, locking you out.

View File

@@ -1,25 +1,62 @@
# Word Per Minute (WPM) Calculcation
The WPM feature uses time between keystrokes to compute a rolling average words
per minute rate and makes this available for various uses.
The WPM feature uses time between keystrokes to compute a rolling average words per minute rate and makes this available for various uses.
Enable the WPM system by adding this to your `rules.mk`:
WPM_ENABLE = yes
For split keyboards using soft serial, the computed WPM
score will be available on the master AND slave half.
For split keyboards using soft serial, the computed WPM score will be available on the master AND slave half.
## Configuration
|Define |Default | Description |
|-----------------------------|--------------|------------------------------------------------------------------------------------------|
|`WPM_SMOOTHING` |`0.0487` | Sets the smoothing to about 40 keystrokes |
|`WPM_ESTIMATED_WORD_SIZE` |`5` | This is the value used when estimating average word size (for regression and normal use) |
|`WPM_ALLOW_COUNT_REGRESSOIN` |_Not defined_ | If defined allows the WPM to be decreased when hitting Delete or Backspace |
## Public Functions
`uint8_t get_current_wpm(void);`
This function returns the current WPM as an unsigned integer.
|Function |Description |
|--------------------------|--------------------------------------------------|
|`get_current_wpm(void)` | Returns the current WPM as a value between 0-255 |
|`set_current_wpm(x)` | Sets the current WPM to `x` (between 0-255) |
## Callbacks
## Customized keys for WPM calc
By default, the WPM score only includes letters, numbers, space and some punctuation. If you want to change the set of characters considered as part of the WPM calculation, you can implement your own `bool wpm_keycode_user(uint16_t keycode)` and return true for any characters you would like included in the calculation, or false to not count that particular keycode.
By default, the WPM score only includes letters, numbers, space and some
punctuation. If you want to change the set of characters considered as part of
the WPM calculation, you can implement `wpm_keycode_user(uint16_t keycode)`
and return true for any characters you would like included in the calculation,
or false to not count that particular keycode.
For instance, the default is:
```c
bool wpm_keycode_user(uint16_t keycode) {
if ((keycode >= QK_MOD_TAP && keycode <= QK_MOD_TAP_MAX) || (keycode >= QK_LAYER_TAP && keycode <= QK_LAYER_TAP_MAX) || (keycode >= QK_MODS && keycode <= QK_MODS_MAX)) {
keycode = keycode & 0xFF;
} else if (keycode > 0xFF) {
keycode = 0;
}
if ((keycode >= KC_A && keycode <= KC_0) || (keycode >= KC_TAB && keycode <= KC_SLASH)) {
return true;
}
return false;
}
```
Additionally, if `WPM_ALLOW_COUNT_REGRESSION` is defined, there is the `uint8_t wpm_regress_count(uint16_t keycode)` function that allows you to decrease the WPM. This is useful if you want to be able to penalize certain keycodes (or even combinations).
__attribute__((weak)) uint8_t wpm_regress_count(uint16_t keycode) {
bool weak_modded = (keycode >= QK_LCTL && keycode < QK_LSFT) || (keycode >= QK_RCTL && keycode < QK_RSFT);
if ((keycode >= QK_MOD_TAP && keycode <= QK_MOD_TAP_MAX) || (keycode >= QK_LAYER_TAP && keycode <= QK_LAYER_TAP_MAX) || (keycode >= QK_MODS && keycode <= QK_MODS_MAX)) {
keycode = keycode & 0xFF;
} else if (keycode > 0xFF) {
keycode = 0;
}
if (((get_mods() | get_oneshot_mods()) & MOD_MASK_CTRL} || weak_modded) && (keycode == KC_DEL || keycode == KC_BSPC)) {
return WPM_ESTIMATED_WORD_SIZE;
}
if (keycode == KC_DEL || keycode == KC_BSPC) {
return 1;
}
}

View File

@@ -249,3 +249,29 @@ Flashing sequence:
2. Wait for the OS to detect the device
3. Flash a .bin file
4. Reset the device into application mode (may be done automatically)
## tinyuf2
Keyboards may opt into supporting the tinyuf2 bootloader. This is currently only supported on the F411 blackpill.
The `rules.mk` setting for this bootloader is `tinyuf2`, and can be specified at the keymap or user level.
To ensure compatibility with the tinyuf2 bootloader, make sure this block is present in your `rules.mk`:
```make
# Bootloader selection
BOOTLOADER = tinyuf2
```
Compatible flashers:
* Any application able to copy a file from one place to another, such as _macOS Finder_ or _Windows Explorer_.
Flashing sequence:
1. Enter the bootloader using any of the following methods:
* Tap the `RESET` keycode
* Double-tap the `nRST` button on the PCB.
2. Wait for the OS to detect the device
3. Copy the .uf2 file to the new USB disk
4. Wait for the keyboard to become available

View File

@@ -4,8 +4,9 @@ This project includes a Docker workflow that will allow you to build a new firmw
## Requirements
The main prerequisite is a working `docker` install.
The main prerequisite is a working `docker` or `podman` install.
* [Docker CE](https://docs.docker.com/install/#supported-platforms)
* [Podman](https://podman.io/getting-started/installation)
## Usage
@@ -38,6 +39,13 @@ util/docker_build.sh
# Reads parameters as input (leave blank for all keyboards/keymaps)
```
You can manually set which container runtime you want to use by setting the `RUNTIME` environment variable to it's name or path.
By default docker or podman are automatically detected and docker is preferred over podman.
```bash
RUNTIME="podman" util/docker_build.sh keyboard:keymap:target
```
## FAQ
### Why can't I flash on Windows/macOS

View File

@@ -22,8 +22,8 @@ The `<target>` means the following
The following targets are for developers:
* `show-path` shows the path of the source and object files.
* `dump-vars` dumps the makefile variable.
* `show_path` shows the path of the source and object files.
* `dump_vars` dumps the makefile variable.
* `objs-size` displays the size of individual object files.
* `show_build_options` shows the options set in 'rules.mk'.
* `check-md5` displays the md5 checksum of the generated binary file.
@@ -121,10 +121,6 @@ For further details, as well as limitations, see the [Unicode page](feature_unic
This allows you output audio on the C6 pin (needs abstracting). See the [audio page](feature_audio.md) for more information.
`FAUXCLICKY_ENABLE`
Uses buzzer to emulate clicky switches. A cheap imitation of the Cherry blue switches. By default, uses the C6 pin, same as `AUDIO_ENABLE`.
`VARIABLE_TRACE`
Use this to debug changes to variable values, see the [tracing variables](unit_testing.md#tracing-variables) section of the Unit Testing page for more information.

View File

@@ -2,132 +2,236 @@
The I2C Master drivers used in QMK have a set of common functions to allow portability between MCUs.
## An important note on I2C Addresses :id=note-on-i2c-addresses
## I2C Addressing :id=note-on-i2c-addresses
All of the addresses expected by this driver should be pushed to the upper 7 bits of the address byte. Setting
the lower bit (indicating read/write) will be done by the respective functions. Almost all I2C addresses listed
All of the addresses expected by this driver should be pushed to the upper 7 bits of the address byte. Setting
the lower bit (indicating read/write) will be done by the respective functions. Almost all I2C addresses listed
on datasheets and the internet will be represented as 7 bits occupying the lower 7 bits and will need to be
shifted to the left (more significant) by one bit. This is easy to do via the bitwise shift operator `<< 1`.
shifted to the left (more significant) by one bit. This is easy to do via the bitwise shift operator `<< 1`.
You can either do this on each call to the functions below, or once in your definition of the address. For example if your device has an address of `0x18`:
You can either do this on each call to the functions below, or once in your definition of the address. For example, if your device has an address of `0x18`:
`#define MY_I2C_ADDRESS (0x18 << 1)`
```c
#define MY_I2C_ADDRESS (0x18 << 1)
```
See https://www.robot-electronics.co.uk/i2c-tutorial for more information about I2C addressing and other technical details.
## Available functions :id=available-functions
## AVR Configuration :id=avr-configuration
|Function |Description |
|------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|`void i2c_init(void);` |Initializes the I2C driver. This function should be called once before any transaction is initiated. |
|`i2c_status_t i2c_start(uint8_t address, uint16_t timeout);` |Starts an I2C transaction. Address is the 7-bit slave address without the direction bit. |
|`i2c_status_t i2c_transmit(uint8_t address, uint8_t* data, uint16_t length, uint16_t timeout);` |Transmit data over I2C. Address is the 7-bit slave address without the direction. Returns status of transaction. |
|`i2c_status_t i2c_receive(uint8_t address, uint8_t* data, uint16_t length, uint16_t timeout);` |Receive data over I2C. Address is the 7-bit slave address without the direction. Saves number of bytes specified by `length` in `data` array. Returns status of transaction. |
|`i2c_status_t i2c_writeReg(uint8_t devaddr, uint8_t regaddr, uint8_t* data, uint16_t length, uint16_t timeout);` |Same as the `i2c_transmit` function but `regaddr` sets where in the slave the data will be written. |
|`i2c_status_t i2c_readReg(uint8_t devaddr, uint8_t regaddr, uint8_t* data, uint16_t length, uint16_t timeout);` |Same as the `i2c_receive` function but `regaddr` sets from where in the slave the data will be read. |
|`i2c_status_t i2c_stop(void);` |Ends an I2C transaction. |
The following defines can be used to configure the I2C master driver:
### Function Return :id=function-return
|`config.h` Override|Description |Default |
|-------------------|---------------------|--------|
|`F_SCL` |Clock frequency in Hz|`400000`|
All the above functions, except `void i2c_init(void);` return the following truth table:
No further setup is required - just connect the `SDA` and `SCL` pins of your I2C devices to the matching pins on the MCU:
|Return Constant |Value|Description |
|--------------------|-----|--------------------------------|
|`I2C_STATUS_SUCCESS`|0 |Operation executed successfully.|
|`I2C_STATUS_ERROR` |-1 |Operation failed. |
|`I2C_STATUS_TIMEOUT`|-2 |Operation timed out. |
|MCU |`SCL`|`SDA`|
|------------------|-----|-----|
|ATmega16/32U4 |`D0` |`D1` |
|AT90USB64/128 |`D0` |`D1` |
|ATmega32A |`C0` |`C1` |
|ATmega328/P |`C5` |`C4` |
?> The ATmega16/32U2 does not possess I2C functionality, and so cannot use this driver.
## AVR :id=avr
## ChibiOS/ARM Configuration :id=arm-configuration
### Configuration :id=avr-configuration
You'll need to determine which pins can be used for I2C -- a an example, STM32 parts generally have multiple I2C peripherals, labeled I2C1, I2C2, I2C3 etc.
The following defines can be used to configure the I2C master driver.
|Variable |Description |Default|
|------------------|---------------------------------------------------|-------|
|`F_SCL` |Clock frequency in Hz |400KHz |
AVRs usually have set GPIO which turn into I2C pins, therefore no further configuration is required.
## ARM :id=arm
For ARM the Chibios I2C HAL driver is under the hood.
This section assumes an STM32 MCU.
### Configuration :id=arm-configuration
The configuration for ARM MCUs can be quite complex as often there are multiple I2C drivers which can be assigned to a variety of ports.
Firstly the `mcuconf.h` file must be setup to enable the necessary hardware drivers.
|Variable |Description |Default|
|------------------------------|------------------------------------------------------------------------------------|-------|
|`#STM32_I2C_USE_XXX` |Enable/Disable the hardware driver XXX (each driver should be explicitly listed) |FALSE |
|`#STM32_I2C_BUSY_TIMEOUT` |Time in ms until the I2C command is aborted if no response is received |50 |
|`#STM32_I2C_XXX_IRQ_PRIORITY` |Interrupt priority for hardware driver XXX (THIS IS AN EXPERT SETTING) |10 |
|`#STM32_I2C_USE_DMA` |Enable/Disable the ability of the MCU to offload the data transfer to the DMA unit |TRUE |
|`#STM32_I2C_XXX_DMA_PRIORITY` |Priority of DMA unit for hardware driver XXX (THIS IS AN EXPERT SETTING) |1 |
Secondly, in the `halconf.h` file, `#define HAL_USE_I2C` must be set to `TRUE`. This allows ChibiOS to load its I2C driver.
Lastly, we need to assign the correct GPIO pins depending on the I2C hardware driver we want to use.
By default the I2C1 hardware driver is assumed to be used. If another hardware driver is used, `#define I2C_DRIVER I2CDX` should be added to the `config.h` file with X being the number of hardware driver used. For example is I2C3 is enabled, the `config.h` file should contain `#define I2C_DRIVER I2CD3`. This aligns the QMK I2C driver with the Chibios I2C driver.
STM32 MCUs allows a variety of pins to be configured as I2C pins depending on the hardware driver used. By default B6 and B7 are set to I2C. You can use these defines to set your i2c pins:
| Variable | Description | Default |
|--------------------------|----------------------------------------------------------------------------------------------|---------|
| `I2C1_SCL_BANK` | The bank of pins (`GPIOA`, `GPIOB`, `GPIOC`) to use for SCL | `GPIOB` |
| `I2C1_SDA_BANK` | The bank of pins (`GPIOA`, `GPIOB`, `GPIOC`) to use for SDA | `GPIOB` |
| `I2C1_SCL` | The pin number for the SCL pin (0-15) | `6` |
| `I2C1_SDA` | The pin number for the SDA pin (0-15) | `7` |
| `I2C1_BANK` (deprecated) | The bank of pins (`GPIOA`, `GPIOB`, `GPIOC`), superceded by `I2C1_SCL_BANK`, `I2C1_SDA_BANK` | `GPIOB` |
The ChibiOS I2C driver configuration depends on STM32 MCU:
STM32F1xx, STM32F2xx, STM32F4xx, STM32L0xx and STM32L1xx use I2Cv1;
STM32F0xx, STM32F3xx, STM32F7xx and STM32L4xx use I2Cv2;
#### I2Cv1 :id=i2cv1
STM32 MCUs allow for different clock and duty parameters when configuring I2Cv1. These can be modified using the following parameters, using <https://www.playembedded.org/blog/stm32-i2c-chibios/#I2Cv1_configuration_structure> as a reference:
| Variable | Default |
|--------------------|------------------|
| `I2C1_OPMODE` | `OPMODE_I2C` |
| `I2C1_CLOCK_SPEED` | `100000` |
| `I2C1_DUTY_CYCLE` | `STD_DUTY_CYCLE` |
#### I2Cv2 :id=i2cv2
STM32 MCUs allow for different timing parameters when configuring I2Cv2. These can be modified using the following parameters, using <https://www.st.com/en/embedded-software/stsw-stm32126.html> as a reference:
| Variable | Default |
|-----------------------|---------|
| `I2C1_TIMINGR_PRESC` | `15U` |
| `I2C1_TIMINGR_SCLDEL` | `4U` |
| `I2C1_TIMINGR_SDADEL` | `2U` |
| `I2C1_TIMINGR_SCLH` | `15U` |
| `I2C1_TIMINGR_SCLL` | `21U` |
STM32 MCUs allow for different "alternate function" modes when configuring GPIO pins. These are required to switch the pins used to I2Cv2 mode. See the respective datasheet for the appropriate values for your MCU.
| Variable | Default |
|---------------------|---------|
| `I2C1_SCL_PAL_MODE` | `4` |
| `I2C1_SDA_PAL_MODE` | `4` |
#### Other :id=other
You can also overload the `void i2c_init(void)` function, which has a weak attribute. If you do this the configuration variables above will not be used. Please consult the datasheet of your MCU for the available GPIO configurations. The following is an example initialization function:
To enable I2C, modify your board's `halconf.h` to enable I2C:
```c
void i2c_init(void)
{
setPinInput(B6); // Try releasing special pins for a short time
setPinInput(B7);
wait_ms(10); // Wait for the release to happen
#define HAL_USE_I2C TRUE
```
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
Then, modify your board's `mcuconf.h` to enable the peripheral you've chosen, for example:
```c
#undef STM32_I2C_USE_I2C2
#define STM32_I2C_USE_I2C2 TRUE
```
|`mcuconf.h` Setting |Description |Default|
|----------------------------|----------------------------------------------------------------------------------|-------|
|`STM32_I2C_BUSY_TIMEOUT` |Time in milliseconds until the I2C command is aborted if no response is received |`50` |
|`STM32_I2C_XXX_IRQ_PRIORITY`|Interrupt priority for hardware driver XXX (THIS IS AN EXPERT SETTING) |`10` |
|`STM32_I2C_USE_DMA` |Enable/Disable the ability of the MCU to offload the data transfer to the DMA unit|`TRUE` |
|`STM32_I2C_XXX_DMA_PRIORITY`|Priority of DMA unit for hardware driver XXX (THIS IS AN EXPERT SETTING) |`1` |
Configuration-wise, you'll need to set up the peripheral as per your MCU's datasheet -- the defaults match the pins for a Proton-C, i.e. STM32F303.
|`config.h` Overrride |Description |Default|
|------------------------|-------------------------------------------------------------------------------------------|-------|
|`I2C_DRIVER` |I2C peripheral to use - I2C1 -> `I2CD1`, I2C2 -> `I2CD2` etc. |`I2CD1`|
|`I2C1_BANK` (deprecated)|The bank of pins (`GPIOA`, `GPIOB`, `GPIOC`), superseded by `I2C1_SCL_BANK`/`I2C1_SDA_BANK`|`GPIOB`|
|`I2C1_SCL_BANK` |The bank of pins (`GPIOA`, `GPIOB`, `GPIOC`) to use for SCL |`GPIOB`|
|`I2C1_SCL` |The pin number for SCL (0-15) |`6` |
|`I2C1_SCL_PAL_MODE` |The alternate function mode for SCL |`4` |
|`I2C1_SDA_BANK` |The bank of pins (`GPIOA`, `GPIOB`, `GPIOC`) to use for SDA |`GPIOB`|
|`I2C1_SDA` |The pin number for SDA (0-15) |`7` |
|`I2C1_SDA_PAL_MODE` |The alternate function mode for SDA |`4` |
The following configuration values depend on the specific MCU in use.
### I2Cv1 :id=i2cv1
* STM32F1xx
* STM32F2xx
* STM32F4xx
* STM32L0xx
* STM32L1xx
See [this page](https://www.playembedded.org/blog/stm32-i2c-chibios/#7_I2Cv1_configuration_structure) for the I2Cv1 configuration structure.
|`config.h` Override|Default |
|-------------------|----------------|
|`I2C1_OPMODE` |`OPMODE_I2C` |
|`I2C1_CLOCK_SPEED` |`100000` |
|`I2C1_DUTY_CYCLE` |`STD_DUTY_CYCLE`|
### I2Cv2 :id=i2cv2
* STM32F0xx
* STM32F3xx
* STM32F7xx
* STM32L4xx
See [this page](https://www.playembedded.org/blog/stm32-i2c-chibios/#8_I2Cv2_I2Cv3_configuration_structure) for the I2Cv2 configuration structure.
|`config.h` Override |Default|
|---------------------|-------|
|`I2C1_TIMINGR_PRESC` |`0U` |
|`I2C1_TIMINGR_SCLDEL`|`7U` |
|`I2C1_TIMINGR_SDADEL`|`0U` |
|`I2C1_TIMINGR_SCLH` |`38U` |
|`I2C1_TIMINGR_SCLL` |`129U` |
## Functions :id=functions
### `void i2c_init(void)`
Initialize the I2C driver. This function must be called only once, before any of the below functions can be called.
This function is weakly defined, meaning it can be overridden if necessary for your particular use case:
```c
void i2c_init(void) {
setPinInput(B6); // Try releasing special pins for a short time
setPinInput(B7);
wait_ms(10); // Wait for the release to happen
palSetPadMode(GPIOB, 6, PAL_MODE_ALTERNATE(4) | PAL_STM32_OTYPE_OPENDRAIN | PAL_STM32_PUPDR_PULLUP); // Set B6 to I2C function
palSetPadMode(GPIOB, 7, PAL_MODE_ALTERNATE(4) | PAL_STM32_OTYPE_OPENDRAIN | PAL_STM32_PUPDR_PULLUP); // Set B7 to I2C function
}
```
---
### `i2c_status_t i2c_start(uint8_t address, uint16_t timeout)`
Start an I2C transaction.
#### Arguments
- `uint8_t address`
The 7-bit I2C address of the device (ie. without the read/write bit - this will be set automatically).
- `uint16_t timeout`
The time in milliseconds to wait for a response from the target device.
#### Return Value
`I2C_STATUS_TIMEOUT` if the timeout period elapses, `I2C_STATUS_ERROR` if some other error occurs, otherwise `I2C_STATUS_SUCCESS`.
---
### `i2c_status_t i2c_transmit(uint8_t address, uint8_t *data, uint16_t length, uint16_t timeout)`
Send multiple bytes to the selected I2C device.
#### Arguments
- `uint8_t address`
The 7-bit I2C address of the device.
- `uint8_t *data`
A pointer to the data to transmit.
- `uint16_t length`
The number of bytes to write. Take care not to overrun the length of `data`.
- `uint16_t timeout`
The time in milliseconds to wait for a response from the target device.
#### Return Value
`I2C_STATUS_TIMEOUT` if the timeout period elapses, `I2C_STATUS_ERROR` if some other error occurs, otherwise `I2C_STATUS_SUCCESS`.
---
### `i2c_status_t i2c_receive(uint8_t address, uint8_t* data, uint16_t length, uint16_t timeout)`
Receive multiple bytes from the selected SPI device.
#### Arguments
- `uint8_t address`
The 7-bit I2C address of the device.
- `uint8_t *data`
A pointer to the buffer to read into.
- `uint16_t length`
The number of bytes to read. Take care not to overrun the length of `data`.
- `uint16_t timeout`
The time in milliseconds to wait for a response from the target device.
#### Return Value
`I2C_STATUS_TIMEOUT` if the timeout period elapses, `I2C_STATUS_ERROR` if some other error occurs, otherwise `I2C_STATUS_SUCCESS`.
---
### `i2c_status_t i2c_writeReg(uint8_t devaddr, uint8_t regaddr, uint8_t* data, uint16_t length, uint16_t timeout)`
Writes to a register on the I2C device.
#### Arguments
- `uint8_t devaddr`
The 7-bit I2C address of the device.
- `uint8_t regaddr`
The register address to write to.
- `uint8_t *data`
A pointer to the data to transmit.
- `uint16_t length`
The number of bytes to write. Take care not to overrun the length of `data`.
- `uint16_t timeout`
The time in milliseconds to wait for a response from the target device.
#### Return Value
`I2C_STATUS_TIMEOUT` if the timeout period elapses, `I2C_STATUS_ERROR` if some other error occurs, otherwise `I2C_STATUS_SUCCESS`.
---
### `i2c_status_t i2c_readReg(uint8_t devaddr, uint8_t regaddr, uint8_t* data, uint16_t length, uint16_t timeout)`
Reads from a register on the I2C device.
#### Arguments
- `uint8_t devaddr`
The 7-bit I2C address of the device.
- `uint8_t regaddr`
The register address to read from.
- `uint16_t length`
The number of bytes to read. Take care not to overrun the length of `data`.
- `uint16_t timeout`
The time in milliseconds to wait for a response from the target device.
#### Return Value
`I2C_STATUS_TIMEOUT` if the timeout period elapses, `I2C_STATUS_ERROR` if some other error occurs, otherwise `I2C_STATUS_SUCCESS`.
---
### `i2c_status_t i2c_stop(void)`
Stop the current I2C transaction.

View File

@@ -45,6 +45,7 @@ You'll need one of the following to actually perform the ISP flashing (followed
* [SparkFun PocketAVR](https://www.sparkfun.com/products/9825) - (USB Tiny)
* [USBtinyISP AVR Programmer Kit](https://www.adafruit.com/product/46) - (USB Tiny)
* [USBasp](https://www.fischl.de/usbasp/) - (usbasp)
* [Teensy 2.0](https://www.pjrc.com/store/teensy.html) - (avrisp)
* [Pro Micro](https://www.sparkfun.com/products/12640) - (avrisp)
* [Bus Pirate](https://www.adafruit.com/product/237) - (buspirate)
@@ -82,6 +83,15 @@ This is pretty straight-forward - we'll be connecting like-things to like-things
PocketAVR VCC <-> Keyboard VCC
PocketAVR GND <-> Keyboard GND
### USBasp
USBasp RST <-> Keyboard RESET
USBasp SCLK <-> Keyboard B1 (SCLK)
USBasp MOSI <-> Keyboard B2 (MOSI)
USBasp MISO <-> Keyboard B3 (MISO)
USBasp VCC <-> Keyboard VCC
USBasp GND <-> Keyboard GND
### Teensy 2.0
Teensy B0 <-> Keyboard RESET

155
docs/ja/adc_driver.md Normal file
View File

@@ -0,0 +1,155 @@
# ADC ドライバ
<!---
original document: 0.10.52:docs/adc_driver.md
git diff 0.10.52 HEAD -- docs/adc_driver.md | cat
-->
QMK は対応している MCU のアナログ・デジタルコンバータADC) を使用し、特定のピンの電圧を計測することができます。この機能はデジタル出力の[ロータリーエンコーダ](ja/feature_encoders.md)などではなく、アナログ計測が必要な可変抵抗器を使用したボリュームコントロールや Bluetooth キーボードのバッテリー残量表示などの実装に役立ちます。
このドライバは現在 AVR と一部の ARM デバイスをサポートしています。返される値は 0V と VCC (通常 AVR の場合は 5V または 3.3V、ARM の場合は 3.3V)の間でマッピングされた 10ビットの整数 (0-1023) ですが、ARM の場合、もしもより精度が必要であれば `#define` を使うと操作をより柔軟に制御できます。
## 使い方
このドライバを使うには、`rules.mk` に以下を追加します:
```make
SRC += analog.c
```
そして、コードの先頭に以下の include を置きます:
```c
#include "analog.h"
```
## チャンネル
### AVR
|Channel|AT90USB64/128|ATmega16/32U4|ATmega32A|ATmega328/P|
|-------|-------------|-------------|---------|-----------|
|0 |`F0` |`F0` |`A0` |`C0` |
|1 |`F1` |`F1` |`A1` |`C1` |
|2 |`F2` | |`A2` |`C2` |
|3 |`F3` | |`A3` |`C3` |
|4 |`F4` |`F4` |`A4` |`C4` |
|5 |`F5` |`F5` |`A5` |`C5` |
|6 |`F6` |`F6` |`A6` |* |
|7 |`F7` |`F7` |`A7` |* |
|8 | |`D4` | | |
|9 | |`D6` | | |
|10 | |`D7` | | |
|11 | |`B4` | | |
|12 | |`B5` | | |
|13 | |`B6` | | |
<sup>\* ATmega328/P には余分な2つの ADC チャンネルがありますが、DIP ピンアウトには存在せず、GPIO ピンとは共有されません。これらに直接アクセスするために、`adc_read()` を使えます。
### ARM
これらのピンの一部は同じチャンネルを使って ADC 上でダブルアップされることに注意してください。これは、これらのピンがどちらかの ADC に使われる可能性があるからです。
また、F0 と F3 は異なるナンバリングスキーマを使うことに注意してください。F0 には1つの ADC があり、チャンネルは0から始まるインデックスですが、F3 には4つの ADC があり、チャンネルは1から始まるインデックスです。これは、F0 が ADC の `ADCv1` 実装を使用するのに対し、F3 が `ADCv3` 実装を使用するためです。
|ADC|Channel|STM32F0xx|STM32F3xx|
|---|-------|---------|---------|
|1 |0 |`A0` | |
|1 |1 |`A1` |`A0` |
|1 |2 |`A2` |`A1` |
|1 |3 |`A3` |`A2` |
|1 |4 |`A4` |`A3` |
|1 |5 |`A5` |`F4` |
|1 |6 |`A6` |`C0` |
|1 |7 |`A7` |`C1` |
|1 |8 |`B0` |`C2` |
|1 |9 |`B1` |`C3` |
|1 |10 |`C0` |`F2` |
|1 |11 |`C1` | |
|1 |12 |`C2` | |
|1 |13 |`C3` | |
|1 |14 |`C4` | |
|1 |15 |`C5` | |
|1 |16 | | |
|2 |1 | |`A4` |
|2 |2 | |`A5` |
|2 |3 | |`A6` |
|2 |4 | |`A7` |
|2 |5 | |`C4` |
|2 |6 | |`C0` |
|2 |7 | |`C1` |
|2 |8 | |`C2` |
|2 |9 | |`C3` |
|2 |10 | |`F2` |
|2 |11 | |`C5` |
|2 |12 | |`B2` |
|2 |13 | | |
|2 |14 | | |
|2 |15 | | |
|2 |16 | | |
|3 |1 | |`B1` |
|3 |2 | |`E9` |
|3 |3 | |`E13` |
|3 |4 | | |
|3 |5 | | |
|3 |6 | |`E8` |
|3 |7 | |`D10` |
|3 |8 | |`D11` |
|3 |9 | |`D12` |
|3 |10 | |`D13` |
|3 |11 | |`D14` |
|3 |12 | |`B0` |
|3 |13 | |`E7` |
|3 |14 | |`E10` |
|3 |15 | |`E11` |
|3 |16 | |`E12` |
|4 |1 | |`E14` |
|4 |2 | |`B12` |
|4 |3 | |`B13` |
|4 |4 | |`B14` |
|4 |5 | |`B15` |
|4 |6 | |`E8` |
|4 |7 | |`D10` |
|4 |8 | |`D11` |
|4 |9 | |`D12` |
|4 |10 | |`D13` |
|4 |11 | |`D14` |
|4 |12 | |`D8` |
|4 |13 | |`D9` |
|4 |14 | | |
|4 |15 | | |
|4 |16 | | |
## 関数
### AVR
|関数 |説明 |
|----------------------------|------------------------------------------------------------------------------------------------------------------------------------|
|`analogReference(mode)` |アナログの電圧リファレンスソースを設定する。`ADC_REF_EXTERNAL``ADC_REF_POWER``ADC_REF_INTERNAL` のいずれかでなければなりません。|
|`analogReadPin(pin)` |指定されたピンから値を読み取ります。例えば、ATmega32U4 の ADC6 の場合 `F6`。 |
|`pinToMux(pin)` |指定されたピンを mux 値に変換します。サポートされていないピンが指定された場合、"0V (GND)" の mux 値を返します。 |
|`adc_read(mux)` |指定された mux に従って ADC から値を読み取ります。詳細は、MCU のデータシートを見てください。 |
### ARM
|関数 |説明 |
|----------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|`analogReadPin(pin)` |指定されたピンから値を読み取ります。STM32F0 では チャンネル 0 の `A0`、STM32F3 ではチャンネル 1 の ADC1。ピンを複数の ADC に使える場合は、この関数のために番号の小さい ADC が選択されることに注意してください。例えば、`C0` は、ADC2 にも使える場合、ADC1 のチャンネル 6 になります。 |
|`analogReadPinAdc(pin, adc)`|指定されたピンと ADC から値を読み取ります。例えば、`C0, 1` は、ADC1 ではなく ADC2 のチャンネル 6 から読み取ります。この関数では、ADC はインデックス 0 から始まることに注意してください。 |
|`pinToMux(pin)` |指定されたピンをチャンネルと ADC の組み合わせに変換します。サポートされていないピンが指定された場合、"0V (GND)" の mux 値を返します。 |
|`adc_read(mux)` |指定されたピンと ADC の組み合わせに応じて ADC から値を読み取ります。詳細は、MCU のデータシートを見てください。 |
## 設定
## ARM
ADC の ARM 実装には、独自のキーボードとキーマップでオーバーライドして動作方法を変更できる幾つかの追加オプションがあります。利用可能なオプションの詳細については、特定のマイクロコントローラについて ChibiOS の対応する `hal_adc_lld.h` を調べてください。
|`#define` |型 |既定値 |説明 |
|---------------------|------|---------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|`ADC_CIRCULAR_BUFFER`|`bool`|`false` |`true` の場合、この実装は循環バッファを使います。 |
|`ADC_NUM_CHANNELS` |`int` |`1` |ADC 動作の一部としてスキャンされるチャンネル数を設定します。現在の実装は `1` のみをサポートします。 |
|`ADC_BUFFER_DEPTH` |`int` |`2` |各結果の深さを設定します。デフォルトでは12ビットの結果しか取得できないため、これを2バイトに設定して1つの値を含めることができます。8ビット以下の結果を選択した場合は、これを 1 に設定できます。 |
|`ADC_SAMPLING_RATE` |`int` |`ADC_SMPR_SMP_1P5` |ADC のサンプリングレートを設定します。デフォルトでは、最も速い設定に設定されています。 |
|`ADC_RESOLUTION` |`int` |`ADC_CFGR1_RES_12BIT`|結果の分解能。デフォルトでは12ビットを選択しますが、12、10、8、6ビットを選択できます。 |

View File

@@ -31,6 +31,13 @@ QMK は十分な容量のフラッシュメモリを備えた USB 対応 AVR ま
* [STM32F0x2](https://www.st.com/en/microcontrollers-microprocessors/stm32f0x2.html)
* [STM32F103](https://www.st.com/en/microcontrollers-microprocessors/stm32f103.html)
* [STM32F303](https://www.st.com/en/microcontrollers-microprocessors/stm32f303.html)
* [STM32F401](https://www.st.com/en/microcontrollers-microprocessors/stm32f401.html)
* [STM32F411](https://www.st.com/en/microcontrollers-microprocessors/stm32f411.html)
* [STM32F446](https://www.st.com/en/microcontrollers-microprocessors/stm32f446.html)
* [STM32G431](https://www.st.com/en/microcontrollers-microprocessors/stm32g4x1.html)
* [STM32G474](https://www.st.com/en/microcontrollers-microprocessors/stm32g4x4.html)
* [STM32L433](https://www.st.com/en/microcontrollers-microprocessors/stm32l4x3.html)
* [STM32L443](https://www.st.com/en/microcontrollers-microprocessors/stm32l4x3.html)
### NXP (Kinetis)

View File

@@ -1,8 +1,8 @@
# キーボードの挙動をカスタマイズする方法
<!---
original document: 0.10.52:docs/custom_quantum_functions.md
git diff 0.10.52 HEAD -- docs/custom_quantum_functions.md | cat
original document: 0.12.41:docs/custom_quantum_functions.md
git diff 0.12.41 HEAD -- docs/custom_quantum_functions.md | cat
-->
多くの人にとって、カスタムキーボードはボタンの押下をコンピュータに送信するだけではありません。単純なボタンの押下やマクロよりも複雑なことを実行できるようにしたいでしょう。QMK にはコードを挿入したり、機能を上書きしたり、様々な状況でキーボードの挙動をカスタマイズできるフックがあります。
@@ -190,6 +190,14 @@ void keyboard_post_init_user(void) {
カスタムマトリックススキャンコードが必要な場合は、この関数を使う必要があります。また、カスタムステータス出力 (LED あるいはディスプレイなど)や、ユーザが入力していない場合でも定期的にトリガーするその他の機能のために使うことができます。
# キーボードハウスキーピング :id=keyboard-housekeeping
* キーボード/リビジョン: `void housekeeping_task_kb(void)`
* キーマップ: `void housekeeping_task_user(void)`
この関数は、全ての QMK 処理の最後に、次の繰り返しを開始する前に呼び出されます。`housekeeping_task_*` の関数が呼び出された時点で、QMK が最後のマトリックススキャンを処理したと、安全に見なすことができます -- レイヤーの状態が更新され、USB レポートが送信され、LED が更新され、表示が描画されています。
`matrix_scan_*` と同様に、これらは MCU が処理できる頻度で呼び出されます。キーボードの応答性を維持するために、これらの関数の呼び出し中にできるだけ何もしないことをお勧めします。実際に何か特別なものを実装する必要がある場合に動作を停止させる可能性があります。
# キーボードアイドリング/ウェイクコード

View File

@@ -220,12 +220,6 @@ const uint8_t music_map[MATRIX_ROWS][MATRIX_COLS] = LAYOUT_ortho_4x12(
AU_OFF,
AU_TOG,
#ifdef FAUXCLICKY_ENABLE
FC_ON,
FC_OFF,
FC_TOG,
#endif
// Music mode on/off/toggle
MU_ON,
MU_OFF,

View File

@@ -1,8 +1,8 @@
# レイヤー :id=layers
<!---
original document: 0.9.43:docs/feature_layers.md
git diff 0.9.43 HEAD -- docs/feature_layers.md | cat
original document: 0.12.41:docs/feature_layers.md
git diff 0.12.41 HEAD -- docs/feature_layers.md | cat
-->
QMK ファームウェアの最も強力で良く使われている機能の一つは、レイヤーを使う機能です。ほとんどの人にとって、これはラップトップやタブレットキーボードにあるのと同じように、様々なキーを可能にするファンクションキーに相当します。
@@ -24,12 +24,10 @@ QMK ファームウェアの最も強力で良く使われている機能の一
### 注意事項 :id=caveats
現在のところ、`LT()` `MT()` は[基本的なキーコードセット](ja/keycodes_basic.md)に制限されています。つまり、`LCTL()``KC_TILD` あるいは `0xFF` より大きなキーコードを使うことができません。特に、`LT``MT` のような二重の機能キーは16ビットキーコードを使います。4ビットは機能の識別のために使われ、次の12ビットはパラメータに分かれます。レイヤータップはレイヤーに4ビットを使います(実はレイヤータップがレイヤー 0-15 に制限されている理由です)。モッドタップも同じですが、識別子に4ビット、モッドのために4ビットが使われ、全体でキーコードに8ビットを使います。このため、使用されるキーコードは `0xFF` (0-255) に制限され、基本的なキーコードのみです
現在のところ、`LT()` `layer` 引数はレイヤー 0-15 に制限され、`kc` 引数は[基本的なキーコードセット](ja/keycodes_basic.md)に制限されています。つまり、`LCTL()``KC_TILD` あるいは `0xFF` より大きなキーコードを使うことができません。これは、QMK が16ビットキーコードを使うためです。4ビットは機能の識別のために使われ、4ビットはレイヤーのために使われ、キーコードに8ビットしか残されていません
これを拡張してもせいぜい複雑になるだけでしょう。32ビットキーコードに移行すると、これの多くが解決されますが、キーマップマトリックスが使用する領域が2倍になります。また、問題が起きる可能性もあります。タップしたキーコードにモディファイアを適用する必要がある場合は、[タップダンス](ja/feature_tap_dance.md#example-5-using-tap-dance-for-advanced-mod-tap-and-layer-tap-keys)を使うことができます。
さらに、モッドタップあるいはレイヤータップで少なくとも1つの右手用のモディファイアが指定された場合、指定された全てのモディファイアが右手用になるため、2つをうまく組み合わせて一致させることはできません。
## レイヤーとの連携 :id=working-with-layers
レイヤーを切り替える時は注意してください。(キーボードを取り外さずに)そのレイヤーを非アクティブにすることができずレイヤーから移動できなくなる可能性があります。最も一般的な問題を避けるためのガイドラインを作成しました。

View File

@@ -25,7 +25,7 @@ I2C IS31FL3731 RGB コントローラを使ったアドレス指定可能な LED
| `ISSI_TIMEOUT` | (オプション) i2c メッセージを待つ時間 | 100 |
| `ISSI_PERSISTENCE` | (オプション) 失敗したメッセージをこの回数再試行する | 0 |
| `LED_DRIVER_COUNT` | (必須) LED ドライバ IC の数 | |
| `LED_DRIVER_LED_COUNT` | (必須) 全てのドライバの LED ライトの数 | |
| `DRIVER_LED_TOTAL` | (必須) 全てのドライバの LED ライトの数 | |
| `LED_DRIVER_ADDR_1` | (必須) 最初の LED ドライバのアドレス | |
| `LED_DRIVER_ADDR_2` | (オプション) 2番目の LED ドライバのアドレス | |
| `LED_DRIVER_ADDR_3` | (オプション) 3番目の LED ドライバのアドレス | |
@@ -46,7 +46,7 @@ I2C IS31FL3731 RGB コントローラを使ったアドレス指定可能な LED
#define LED_DRIVER_COUNT 2
#define LED_DRIVER_1_LED_COUNT 25
#define LED_DRIVER_2_LED_COUNT 24
#define LED_DRIVER_LED_COUNT LED_DRIVER_1_LED_TOTAL + LED_DRIVER_2_LED_TOTAL
#define DRIVER_LED_TOTAL LED_DRIVER_1_LED_TOTAL + LED_DRIVER_2_LED_TOTAL
現在、2つのドライバのみがサポートされますが、4つの組み合わせ全てをサポートすることは簡単です。
@@ -76,7 +76,7 @@ I2C IS31FL3731 RGB コントローラを使ったアドレス指定可能な LED
カスタムレイヤー効果は `<keyboard>.c` 内で以下を定義することで行うことができます:
void led_matrix_indicators_kb(void) {
led_matrix_set_index_value(index, value);
led_matrix_set_value(index, value);
}
同様の関数がキーマップ内で `led_matrix_indicators_user` として動作します。

View File

@@ -1,8 +1,8 @@
# Raw HID
<!---
original document: 0.10.47:docs/feature_rawhid.md
git diff 0.10.47 HEAD -- docs/feature_rawhid.md | cat
original document: 0.12.41:docs/feature_rawhid.md
git diff 0.12.41 HEAD -- docs/feature_rawhid.md | cat
-->
Raw HID は、HID インタフェースを介して QMK とホストコンピュータ間の双方向通信を可能にします。これには、キーマップをその場で切り替えたり、RGB LED の色とモードを変更したりなど、多くの潜在的な使用方法があります。
@@ -34,7 +34,7 @@ void raw_hid_receive(uint8_t *data, uint8_t length) {
}
```
`raw_hid_receive` はホストから最大長 `RAW_EPSIZE` の可変サイズのパケットを受信することができます。一方、`raw_hid_send` はパケットを厳密に `RAW_EPSIZE` の長さで送信するため、長さ `RAW_EPSIZE` のデータを使う必要があります
これら2つの関数は、ホストとの間で長さ `RAW_EPSIZE` バイトのパケットを受信します (LUFA/ChibiOS/V-USB では 32、ATSAM では 64)
ホスト側での作業を進める前に、raw 対応のファームウェアを書き込むようにしてください。

View File

@@ -12,7 +12,7 @@
設定テーブルは列/行から新しい列/行にマップするための単純な2次元配列です。Planck の `hand_swap_config` の例:
```C
const keypos_t hand_swap_config[MATRIX_ROWS][MATRIX_COLS] = {
const keypos_t PROGMEM hand_swap_config[MATRIX_ROWS][MATRIX_COLS] = {
{{11, 0}, {10, 0}, {9, 0}, {8, 0}, {7, 0}, {6, 0}, {5, 0}, {4, 0}, {3, 0}, {2, 0}, {1, 0}, {0, 0}},
{{11, 1}, {10, 1}, {9, 1}, {8, 1}, {7, 1}, {6, 1}, {5, 1}, {4, 1}, {3, 1}, {2, 1}, {1, 1}, {0, 1}},
{{11, 2}, {10, 2}, {9, 2}, {8, 2}, {7, 2}, {6, 2}, {5, 2}, {4, 2}, {3, 2}, {2, 2}, {1, 2}, {0, 2}},

277
docs/ja/feature_unicode.md Normal file
View File

@@ -0,0 +1,277 @@
# Unicode サポート
<!---
original document: 0.10.53:docs/feature_unicode.md
git diff 0.10.53 HEAD -- docs/feature_unicode.md | cat
-->
Unicode 文字はキーボードから直接入力することができます!ただし幾つかの制限があります。
キーボードで Unicode サポートを有効にするには、以下の事をする必要があります:
1. サポートされている Unicode 実装のいずれかを選択します: [Basic Unicode](#basic-unicode)、[Unicode Map](#unicode-map)、[UCIS](#ucis)。
2. オペレーティングシステムとセットアップに最適な[入力モード](#input-modes)を見つけます。
3. コンフィギュレーションに適切な入力モード(または複数のモード)を[設定](#setting-the-input-mode)します。
4. キーマップに Unicode キーコードを追加します。
## 1. メソッド :id=methods
QMK は、Unicode 入力を有効にし、キーマップに Unicode 文字を追加するための3つの異なる方法をサポートします。それぞれに柔軟性と使いやすさの点で長所と短所があります。あなたの使い方に最適なものを選んでください。
ほとんどのユーザには Basic Unicode で十分です。ただし、サポートされる文字の範囲が広い(絵文字、珍しい記号など)ことが必要な場合には、Unicode Map を使う必要があります。
<br>
### 1.1. Basic Unicode :id=basic-unicode
多少制限はありますが、最も使いやすい方法です。Unicode 文字をキーコードとしてキーマップ自体に格納するため、`0x7FFF` までのコードポイントのみをサポートします。これは、ほとんどの現代言語(東アジアを含む)の文字と記号を対象としますが、絵文字は対象外です。
以下を `rules.mk` に追加します:
```make
UNICODE_ENABLE = yes
```
次に、`UC(c)` キーコードをキーマップに追加します。ここで、_c_ は目的の文字のコードポイントです (できれば16進数で最大4桁の長さが望ましいです)。例えば、`UC(0x40B)` は [Ћ](https://unicode-table.com/en/040B/) を出力し、`UC(0x30C4)` は [](https://unicode-table.com/en/30C4) を出力します。
<br>
### 1.2. Unicode Map :id=unicode-map
このメソッドは、標準の文字の範囲に加えて、絵文字、古代文字、珍しい記号なども対象にしています。実際、可能な全てのコードポイント(`0x10FFFF`まで)がサポートされています。Unicode 文字は独立のマッピングテーブルに格納されています。キーマップファイルに `unicode_map` 配列を維持する必要があります。これには最大 16384 エントリを含めることができます。
以下を `rules.mk` に追加します:
```make
UNICODEMAP_ENABLE = yes
```
次に、`X(i)` キーコードをキーマップに追加します。ここで _i_ はマッピングテーブル内の目的の文字のインデックスです。これは数値にできますが、インデックスを列挙型に保持し、名前でアクセスすることをお勧めします。
```c
enum unicode_names {
BANG,
IRONY,
SNEK
};
const uint32_t PROGMEM unicode_map[] = {
[BANG] = 0x203D, // ‽
[IRONY] = 0x2E2E, // ⸮
[SNEK] = 0x1F40D, // 🐍
};
```
そして、キーマップで `X(BANG)``X(SNEK)` などを使うことができます。
#### 小文字と大文字
文字は å や Å のような小文字と大文字のペアで提供されることがあります。これらの文字を入力しやすくするために、キーマップで `XP(i, j)` を使うことができます。ここで、_i_ および _j_ はそれぞれ小文字と大文字のマッピングテーブルのインデックスです。キーを押した時に、シフトを押したままか Caps Lock をオンにしている場合は、2番目(大文字)の文字が挿入されます; そうでなければ最初(小文字)バージョンが出力されます。
これは特殊文字がある国際レイアウトのためのキーマップを作成している時に最も役立ちます。別々のキーに文字の小文字および大文字バージョンを置く代わりに、`XP()` を使ってそれら両方を同じキーに持つことができます。これは Unicode キーを通常のアルファベットと混ぜるのに役立ちます。
キーコードのサイズの制約により、_i_ と _j_ はそれぞれ `unicode_map` の最初の128文字のうち1つだけを参照できます。別の言い方をすると、0 ≤ _i_ ≤ 127 かつ 0 ≤ _j_ ≤ 127 です。これはほとんどのユースケースで十分ですが、インデックス計算をカスタマイズしたい場合は、[`unicodemap_index()`](https://github.com/qmk/qmk_firmware/blob/71f640d47ee12c862c798e1f56392853c7b1c1a8/quantum/process_keycode/process_unicodemap.c#L36) 関数をオーバーライドすることができます。これにより、例えば Shift/Caps の代わりに Ctrl をチェックすることもできます。
<br>
### 1.3. UCIS :id=ucis
この方法も全ての可能なコードポイントをサポートします。Unicode Map の方法と同様に、キーマップファイル内にマッピングテーブルを保持する必要があります。ただし、この機能のための組み込みのキーコードはありません — この機能を起動するカスタムキーコードあるいは関数を作成する必要があります。
以下を `rules.mk` に追加します:
```make
UCIS_ENABLE = yes
```
次に、キーマップファイルでこのようにテーブルを定義します:
```c
const qk_ucis_symbol_t ucis_symbol_table[] = UCIS_TABLE(
UCIS_SYM("poop", 0x1F4A9), // 💩
UCIS_SYM("rofl", 0x1F923), // 🤣
UCIS_SYM("cuba", 0x1F1E8, 0x1F1FA), // 🇨🇺
UCIS_SYM("look", 0x0CA0, 0x005F, 0x0CA0), // ಠ_ಠ
);
```
デフォルトでは、各テーブルエントリの長さは、最大3コードポイントです。この番号は `#define UCIS_MAX_CODE_POINTS n``config.h` ファイルに追加することで変更できます。
UCIS 入力を使うには、`qk_ucis_start()` を呼び出します。次に、文字のニーモニック ("rofl" など) を入力し、Space か Enter か Esc を押します。QMK は "rofl" テキストを消去し、笑っている絵文字を挿入するはずです。
#### カスタマイズ
この機能をカスタマイズするためにキーマップで定義できる幾つかの関数があります。
* `void qk_ucis_start_user(void)` これは "start" 関数を呼び出す時に実行され、フィードバックを提供するために使うことができます。デフォルトでは、キーボードの絵文字を入力します。
* `void qk_ucis_success(uint8_t symbol_index)` これは入力が何かに一致して完了した時に実行されます。デフォルトでは何もしません。
* `void qk_ucis_symbol_fallback (void)` これは入力が何にも一致しない時に実行されます。デフォルトでは、入力を Unicode コードとして試そうとします。
[`process_ucis.c`](https://github.com/qmk/qmk_firmware/blob/master/quantum/process_keycode/process_ucis.c) でこれらの関数のデフォルトの実装を見つけることができます。
## 2. Input モード :id=input-modes
QMK での Unicode の入力は、マクロのように、OS への一連の文字列を入力することで動作します。残念ながら、これが行われる方法はプラットフォームによって異なります。特に各プラットフォームでは Unicode 入力を引き起こすために、異なるキーの組み合わせが必要です。従って、対応する入力モードが QMK で設定されなければなりません。
以下の入力モードが利用可能です:
* **`UC_MAC`**: macOS の組み込み Unicode 16進数入力。`0x10FFFF` までのコードポイント(全ての利用可能なコードポイント)をサポートします。
有効にするには、_システム環境設定 > キーボード > 入力ソース_ に移動し、(_その他_ の下の) _Unicode 16進数入力_ をリストに追加し、次にメニューバーの入力ドロップダウンからそれをアクティブにします。
デフォルトでは、このモードは Unicode 入力のために左 Option キー (`KC_LALT`) を使いますが、これは他のキーで [`UNICODE_KEY_MAC`](#input-key-configuration) を定義することで変更できます。
!> _Unicode 16進数入力_ 入力ソースの使用は、Option + 左矢印および Option + 右矢印 のような、幾つかの Option ベースのショートカットを無効にするかもしれません。
!> `UC_OSX``UC_MAC` の非推奨のエイリアスで、QMK の将来のバージョンで削除されます。全ての新しいキーマップは、`UC_MAC` を使うべきです。
* **`UC_LNX`**: Linux の組み込み IBus Unicode 入力。`0x10FFFF` までのコードポイント(全ての利用可能なコードポイント)をサポートします。
デフォルトで有効になっていて、IBus が有効になったディストリビューションのほとんどどれでも動作します。IBus が無い場合、このモードは GTK アプリ下で動作しますが、他の場所ではほとんど動作しません。
デフォルトでは、このモードは Unicode 入力を開始するために Ctrl+Shift+U (`LCTL(LSFT(KC_U))`) を使いますが、これは他のキーコードで [`UNICODE_KEY_LNX`](#input-key-configuration) を定義することで変更できます。これは、Ctrl+Shift+U の挙動が Ctrl+Shift+E に統合された IBus バージョン 1.5.15 以上を必要とするかもしれません。
* **`UC_WIN`**: _(非推奨)_ Windows の組み込み16進数テンキー Unicode 入力。`0xFFFF` までのコードポイントをサポートします。
有効にするには、`HKEY_CURRENT_USER\Control Panel\Input Method` の下に、`EnableHexNumpad` という名前の `REG_SZ` 型のレジストリキーを作成し、その値を `1` に設定します。これは、管理者権限でコマンドラインプロンプトから `reg add "HKCU\Control Panel\Input Method" -v EnableHexNumpad -t REG_SZ -d 1` を実行することでできます。その後再起動します。
信頼性と互換性の問題から、このモードはお勧めできません; 代わりに `UC_WINC` モードを使ってください。
* **`UC_BSD`**: _(未実装)_ BSD での Unicode 入力。現時点では実装されていません。BSD ユーザでサポートを追加したい場合は、[GitHub で issue を開いて](https://github.com/qmk/qmk_firmware/issues)ください。
* **`UC_WINC`**: [WinCompose](https://github.com/samhocevar/wincompose) を使った Windows Unicode 入力。v0.9.0 の時点で、`0x10FFFF` までのコードポイント(全ての利用可能なコードポイント)をサポートします。
有効にするには、[最新のリリース](https://github.com/samhocevar/wincompose/releases/latest)をインストールします。インストールすると、起動時に WinCompose が自動的に実行されます。このモードはアプリがサポートする全てのバージョンの Windows で確実に動作します。
デフォルトでは、このモードは Compose キーとして右 Alt (`KC_RALT`) を使いますが、これは WinCompose 設定と他のキーで [`UNICODE_KEY_WINC`](#input-key-configuration) を定義することで変更できます。
## 3. 入力モードの設定 :id=setting-the-input-mode
目的の入力モードを設定するには、以下の定義を `config.h` に追加します:
```c
#define UNICODE_SELECTED_MODES UC_LNX
```
この例では、キーボードのデフォルトの入力モードを `UC_LNX` に設定します。これは、`UC_MAC``UC_WINC` か[上記](#input-modes)に列挙されている他のモードのいずれかに置き換えることができます。手動で別のモード([下記](#keycodes)を見てください)に切り替えない限り、キーボードは起動時に選択したモードを自動的に使います。
複数の入力モードを選択することもできます。これにより、`UC_MOD`/`UC_RMOD` キーコードを使ってそれらを簡単に切り替えることができます。
```c
#define UNICODE_SELECTED_MODES UC_MAC, UC_LNX, UC_WINC
```
値はカンマで区切られていることに注意してください。キーボードは最後に使われた入力モードを記憶し、次の電源投入時にそれを使い続けます。`config.h``#define UNICODE_CYCLE_PERSIST false` を追加することで、これを無効にして常にリストの最初のモードで開始するように強制できます。
#### キーコード
以下のキーコードを使って、いつでも入力モードを切り替えることができます。これらをキーマップに追加すると、`UNICODE_SELECTED_MODES` に列挙されていないモードを含む特定の入力モードに素早く切り替えることができます。
| キーコード |エイリアス | 入力モード | 説明 |
|------------------------|-----------|--------------|--------------------------------------------------------------------|
| `UNICODE_MODE_FORWARD` | `UC_MOD` | リストの次へ | 選択したモードを切り替えます。Shift が押された場合は逆方向 |
| `UNICODE_MODE_REVERSE` | `UC_RMOD` | リストの前へ | 逆方向に選択したモードを切り替えます。Shift が押された場合は順方向 |
| `UNICODE_MODE_MAC` | `UC_M_MA` | `UC_MAC` | macOS 入力に切り替え |
| `UNICODE_MODE_LNX` | `UC_M_LN` | `UC_LNX` | Linux 入力に切り替え |
| `UNICODE_MODE_WIN` | `UC_M_WI` | `UC_WIN` | Windows 入力に切り替え |
| `UNICODE_MODE_BSD` | `UC_M_BS` | `UC_BSD` | BSD 入力に切り替え _(未実装)_ |
| `UNICODE_MODE_WINC` | `UC_M_WC` | `UC_WINC` | WinCompose を使う Windows 入力に切り替え |
コード内で `set_unicode_input_mode(x)` を呼び出すことで、入力モードを切り替えることもできます。ここで、_x_ は上記の入力モード定数のいずれか (例えば、`UC_LNX`) です。
?> `matrix_init_user()` または同様の関数の中で `set_unicode_input_mode()` を呼び出すよりも、`UNICODE_SELECTED_MODES` を使うほうが望ましいです。Unicode システムとの統合性が高く、EEPROM への不要な書き込みを回避できるという利点があるからです。
#### オーディオフィードバック
キーボードで[オーディオ機能](ja/feature_audio.md)を有効にした場合、上記のキーを押したときにメロディーを再生するように設定できます。そのようにして、入力モードを切り替えた時になんらかのオーディオフィードバックを得ることができます。
例えば、`config.h` ファイルに下記の定義を追加することができます:
```c
#define UNICODE_SONG_MAC AUDIO_ON_SOUND
#define UNICODE_SONG_LNX UNICODE_LINUX
#define UNICODE_SONG_BSD TERMINAL_SOUND
#define UNICODE_SONG_WIN UNICODE_WINDOWS
#define UNICODE_SONG_WINC UNICODE_WINDOWS
```
## 追加のカスタマイズ
Unicode は大規模で多目的な機能のため、システムでより適切に動作するようにカスタマイズできるオプションが幾つかあります。
### 入力関数の開始と終了
プラットフォームで Unicode 入力を開始および終了する機能は、ローカルで上書きできます。可能な用途には、デフォルトキーを使用しない場合の入力モードの挙動のカスタマイズ、あるいは Unicode 入力への視覚/音声フィードバックの追加があります。
* `void unicode_input_start(void)` これはプラットフォームに Unicode 入力モードの入力を指示する初期シーケンスを送信します。例えば、Windows では左 Alt キーの後に Num+ を押したままにし、Linux では `UNICODE_KEY_LNX` の組み合わせ(デフォルト: Ctrl+Shift+U) を押します。
* `void unicode_input_finish(void)` これは、例えば Space を押すか Alt キーを放すなどして、Unicode 入力モードを終了するために呼ばれます。
[`process_unicode_common.c`](https://github.com/qmk/qmk_firmware/blob/master/quantum/process_keycode/process_unicode_common.c) でこれらの関数のデフォルトの実装を見つけることができます。
### 入力キーの設定
`config.h` に対応する定義を追加することで、macOS、Linux、WinCompose で Unicode 入力を引き起こすために使われるキーをカスタマイズできます。デフォルト値はプラットフォームのデフォルト設定に一致するため、Unicode 入力が動作しない、あるいは(例えば左あるいは右 Alt を解放するために)異なるキーを使いたい場合以外はこれを変更する必要はありません。
| 定義 | 型 | 既定値 | 例 |
|--------------------|------------|--------------------|---------------------------------------------|
| `UNICODE_KEY_MAC` | `uint8_t` | `KC_LALT` | `#define UNICODE_KEY_MAC KC_RALT` |
| `UNICODE_KEY_LNX` | `uint16_t` | `LCTL(LSFT(KC_U))` | `#define UNICODE_KEY_LNX LCTL(LSFT(KC_E))` |
| `UNICODE_KEY_WINC` | `uint8_t` | `KC_RALT` | `#define UNICODE_KEY_WINC KC_RGUI` |
## Unicode 文字列の送信
QMK は、Unicode 入力をプログラムでホストに送信できるようにする幾つかの関数を提供します:
### `send_unicode_string()`
この関数は、`send_string()` によく似ていますが、UTF-8 文字を直接入力できます。選択された入力モードでもサポートされている場合は、全てのコードポイントをサポートします。`keymap.c` ファイルが UTF-8 エンコーディングを使ってフォーマットされていることを確認してください。
```c
send_unicode_string("(ノಠ痊ಠ)ノ彡┻━┻");
```
使用例には、[Macros](ja/feature_macros.md) で説明されているように、キーが押された時に Unicode 文字列を送信することが含まれます。
### `send_unicode_hex_string()`
`send_unicode_string()` に似ていますが、文字は Unicode コードポイントで表され、16進数で記述され、空白で区切られています。例えば、上記のちゃぶ台返しは以下で表されます:
```c
send_unicode_hex_string("0028 30CE 0CA0 75CA 0CA0 0029 30CE 5F61 253B 2501 253B");
```
[このサイト](https://r12a.github.io/app-conversion/)で結果を "Hex/UTF-32" で受け取ることで、Unicode 文字列をこの形式に簡単に変換できます。
## 追加の言語サポート
`quantum/keymap_extras` には、様々な言語ファイルがあります — これらは Colemak または BÉPO のような代替レイアウトのファイルと同じように動作します。これらの言語ヘッダのいずれかを `#include` すると、その言語/国のレイアウトに固有のキーコードにアクセスできます。このようなキーコードは、2文字の国/言語コードの後に、アンダースコアとキーが対応する4文字の略語が続くことで定義されます。例えば、キーマップに `keymap_french.h` を含め、`FR_UGRV` を使うと、ネイティブのフランス語 AZERTY レイアウトを使うシステムで入力すると、`ù` が出力されます。
マシンで使うプライマリシステムレイアウトが US ANSI と異なる場合、これらの言語固有のキーコードを使うと、QMK キーマップが実際に画面に出力されるものとより一致するようになります。ただし、これらのキーコードは、内部の対応するデフォルトの US キーコードのエイリアスに過ぎず、キーボードで使われる HID プロトコル自体は本質的に US ANSI に基づいていることに注意してください。
## Windows での国際文字
### AutoHotkey
この方法はキーボード自体で Unicode サポートを必要としませんが、代わりにバックグラウンドで [AutoHotkey](https://autohotkey.com) が実行されていることを当てにします。
最初にプログラムで使われていないモディファイアの組み合わせを選択する必要があります。
Ctrl+Alt+Win はあまり広く使われていないため、これに最適なはずです。
mod-tab コンボ `LCAG_T` 用に定義されたマクロがあります。
この mod-tab マクロをキーボードのキーに追加します。例えば: `LCAG_T(KC_TAB)`
これにより、キーを押してすぐ放すとキーはタブキーのように振る舞いますが、他のキーと一緒に使うとモディファイアに変わります。
AutoHotkey のデフォルトのスクリプトで、カスタムホットキーを定義できます。
<^<!<#a::Send, ä
<^<!<#<+a::Send, Ä
上のホットキーは、CtrlAltGui と CtrlAltGuiShift + 文字 a の組み合わせです。
この組み合わせが押されると、AutoHotkey は `Send, ` の右側にあるテキストを挿入します。
### 米国インターナショナル
システム上で米国インターナショナルレイアウトを有効にすると、文字にアクセントをつけるために区切り文字を使います。例えば、"\`a" は à になります。
これを有効にする方法は[ここ](https://support.microsoft.com/en-us/help/17424/windows-change-keyboard-layout)で見つかります。

View File

@@ -110,10 +110,6 @@ make コマンド自体にもいくつかの追加オプションがあります
C6 ピン(抽象化が必要)でオーディオ出力できます。詳細は[オーディオページ](ja/feature_audio.md)を見てください。
`FAUXCLICKY_ENABLE`
クリック音のあるスイッチをエミュレートするためにブザーを使います。Cherry社製の青軸スイッチの安っぽい模倣です。デフォルトでは、`AUDIO_ENABLE` と同じように C6 ピンを使います。
`VARIABLE_TRACE`
これを使って変数の値の変更をデバッグします。詳細についてはユニットテストのページの[変数のトレース](ja/unit_testing.md#tracing-variables)のセクションを見てください。

View File

@@ -2,8 +2,8 @@
<!---
grep --no-filename "^[ ]*git diff" docs/ja/*.md | sh
original document: 0.10.33:docs/hardware_avr.md
git diff 0.10.33 HEAD -- docs/hardware_avr.md | cat
original document: 0.12.41:docs/hardware_avr.md
git diff 0.12.41 HEAD -- docs/hardware_avr.md | cat
-->
このページでは QMK における AVR マイコンのサポートについて説明します。AVR マイコンには、Atmel 社製の atmega32u4、atmega32u2、at90usb1286 やその他のマイコンを含みます。AVR マイコンは、簡単に動かせるよう設計された8ビットの MCU です。キーボードでよく使用される AVR マイコンには USB 機能や大きなキーボードマトリックスのためのたくさんの GPIO を搭載しています。これらは、現在、キーボードで使われる最も一般的な MCU です。
@@ -83,7 +83,7 @@ or open the directory in your favourite text editor.
#define PRODUCT my_awesome_keyboard
```
?> Windows や macOS では、`MANUFACTURER``PRODUCT` が USBデバイスのリストに表示されます。Linux 上の `lsusb` では、代わりにデフォルトで [USB ID Repository](http://www.linux-usb.org/usb-ids.html) によって維持されているリストからこれらを取得します。`lsusb -v` を使用するとデバイスから示された値を表示します。また、接続したときのカーネルログにも表示されます。
?> Windows や macOS では、`MANUFACTURER``PRODUCT` が USBデバイスのリストに表示されます。Linux 上の `lsusb` では、代わりに [USB ID Repository](http://www.linux-usb.org/usb-ids.html) によって維持されているリストの値を優先します。デフォルトでは、リストに `VENDOR_ID` / `PRODUCT_ID` を含まない場合にのみ、`MANUFACTURER``PRODUCT` を使います。`sudo lsusb -v` を使用するとデバイスから示された値を表示します。また、接続したときのカーネルログにも表示されます。
### キーボードマトリックスの設定

View File

@@ -0,0 +1,78 @@
# `defines` グループ {#group__defines}
## 概要
メンバー | 説明
--------------------------------|---------------------------------------------
`define `[`SYSEX_BEGIN`](#group__defines_1ga1a3c39bb790dda8a368c4247caabcf79) |
`define `[`SYSEX_END`](#group__defines_1ga753706d1d28e6f96d7caf1973e80feed) |
`define `[`MIDI_STATUSMASK`](#group__defines_1gab78a1c818a5f5dab7a8946543f126c69) |
`define `[`MIDI_CHANMASK`](#group__defines_1ga239edc0a6f8405d3a8f2804f1590b909) |
`define `[`MIDI_CC`](#group__defines_1ga45f116a1daab76b3c930c2cecfaef215) |
`define `[`MIDI_NOTEON`](#group__defines_1gafd416f27bf3590868c0c1f55c30be4c7) |
`define `[`MIDI_NOTEOFF`](#group__defines_1gabed24bea2d989fd655e2ef2ad0765adc) |
`define `[`MIDI_AFTERTOUCH`](#group__defines_1ga3a322d8cfd53576a2e167c1840551b0f) |
`define `[`MIDI_PITCHBEND`](#group__defines_1gabcc799504e8064679bca03f232223af4) |
`define `[`MIDI_PROGCHANGE`](#group__defines_1gaefb3f1595ffbb9db66b46c2c919a3d42) |
`define `[`MIDI_CHANPRESSURE`](#group__defines_1gaeb3281cc7fcd0daade8ed3d2dfc33dbe) |
`define `[`MIDI_CLOCK`](#group__defines_1gafa5e4e295aafd15ab7893344599b3b89) |
`define `[`MIDI_TICK`](#group__defines_1ga3b99408ff864613765d4c3c2ceb52aa7) |
`define `[`MIDI_START`](#group__defines_1ga8233631c85823aa546f932ad8975caa4) |
`define `[`MIDI_CONTINUE`](#group__defines_1gab24430f0081e27215b0da84dd0ee745c) |
`define `[`MIDI_STOP`](#group__defines_1ga3af9271d4b1f0d22904a0b055f48cf62) |
`define `[`MIDI_ACTIVESENSE`](#group__defines_1gacd88ed42dba52bb4b2052c5656362677) |
`define `[`MIDI_RESET`](#group__defines_1ga02947f30ca62dc332fdeb10c5868323b) |
`define `[`MIDI_TC_QUARTERFRAME`](#group__defines_1gaaa072f33590e236d1bfd8f28e833ae31) |
`define `[`MIDI_SONGPOSITION`](#group__defines_1ga412f6ed33a2150051374bee334ee1705) |
`define `[`MIDI_SONGSELECT`](#group__defines_1gafcab254838b028365ae0259729e72c4e) |
`define `[`MIDI_TUNEREQUEST`](#group__defines_1ga8100b907b8c0a84e58b1c53dcd9bd795) |
`define `[`SYSEX_EDUMANUFID`](#group__defines_1ga5ef855ed955b00a2239ca16afbeb164f) |
## メンバー
#### `define `[`SYSEX_BEGIN`](#group__defines_1ga1a3c39bb790dda8a368c4247caabcf79) {#group__defines_1ga1a3c39bb790dda8a368c4247caabcf79}
#### `define `[`SYSEX_END`](#group__defines_1ga753706d1d28e6f96d7caf1973e80feed) {#group__defines_1ga753706d1d28e6f96d7caf1973e80feed}
#### `define `[`MIDI_STATUSMASK`](#group__defines_1gab78a1c818a5f5dab7a8946543f126c69) {#group__defines_1gab78a1c818a5f5dab7a8946543f126c69}
#### `define `[`MIDI_CHANMASK`](#group__defines_1ga239edc0a6f8405d3a8f2804f1590b909) {#group__defines_1ga239edc0a6f8405d3a8f2804f1590b909}
#### `define `[`MIDI_CC`](#group__defines_1ga45f116a1daab76b3c930c2cecfaef215) {#group__defines_1ga45f116a1daab76b3c930c2cecfaef215}
#### `define `[`MIDI_NOTEON`](#group__defines_1gafd416f27bf3590868c0c1f55c30be4c7) {#group__defines_1gafd416f27bf3590868c0c1f55c30be4c7}
#### `define `[`MIDI_NOTEOFF`](#group__defines_1gabed24bea2d989fd655e2ef2ad0765adc) {#group__defines_1gabed24bea2d989fd655e2ef2ad0765adc}
#### `define `[`MIDI_AFTERTOUCH`](#group__defines_1ga3a322d8cfd53576a2e167c1840551b0f) {#group__defines_1ga3a322d8cfd53576a2e167c1840551b0f}
#### `define `[`MIDI_PITCHBEND`](#group__defines_1gabcc799504e8064679bca03f232223af4) {#group__defines_1gabcc799504e8064679bca03f232223af4}
#### `define `[`MIDI_PROGCHANGE`](#group__defines_1gaefb3f1595ffbb9db66b46c2c919a3d42) {#group__defines_1gaefb3f1595ffbb9db66b46c2c919a3d42}
#### `define `[`MIDI_CHANPRESSURE`](#group__defines_1gaeb3281cc7fcd0daade8ed3d2dfc33dbe) {#group__defines_1gaeb3281cc7fcd0daade8ed3d2dfc33dbe}
#### `define `[`MIDI_CLOCK`](#group__defines_1gafa5e4e295aafd15ab7893344599b3b89) {#group__defines_1gafa5e4e295aafd15ab7893344599b3b89}
#### `define `[`MIDI_TICK`](#group__defines_1ga3b99408ff864613765d4c3c2ceb52aa7) {#group__defines_1ga3b99408ff864613765d4c3c2ceb52aa7}
#### `define `[`MIDI_START`](#group__defines_1ga8233631c85823aa546f932ad8975caa4) {#group__defines_1ga8233631c85823aa546f932ad8975caa4}
#### `define `[`MIDI_CONTINUE`](#group__defines_1gab24430f0081e27215b0da84dd0ee745c) {#group__defines_1gab24430f0081e27215b0da84dd0ee745c}
#### `define `[`MIDI_STOP`](#group__defines_1ga3af9271d4b1f0d22904a0b055f48cf62) {#group__defines_1ga3af9271d4b1f0d22904a0b055f48cf62}
#### `define `[`MIDI_ACTIVESENSE`](#group__defines_1gacd88ed42dba52bb4b2052c5656362677) {#group__defines_1gacd88ed42dba52bb4b2052c5656362677}
#### `define `[`MIDI_RESET`](#group__defines_1ga02947f30ca62dc332fdeb10c5868323b) {#group__defines_1ga02947f30ca62dc332fdeb10c5868323b}
#### `define `[`MIDI_TC_QUARTERFRAME`](#group__defines_1gaaa072f33590e236d1bfd8f28e833ae31) {#group__defines_1gaaa072f33590e236d1bfd8f28e833ae31}
#### `define `[`MIDI_SONGPOSITION`](#group__defines_1ga412f6ed33a2150051374bee334ee1705) {#group__defines_1ga412f6ed33a2150051374bee334ee1705}
#### `define `[`MIDI_SONGSELECT`](#group__defines_1gafcab254838b028365ae0259729e72c4e) {#group__defines_1gafcab254838b028365ae0259729e72c4e}
#### `define `[`MIDI_TUNEREQUEST`](#group__defines_1ga8100b907b8c0a84e58b1c53dcd9bd795) {#group__defines_1ga8100b907b8c0a84e58b1c53dcd9bd795}
#### `define `[`SYSEX_EDUMANUFID`](#group__defines_1ga5ef855ed955b00a2239ca16afbeb164f) {#group__defines_1ga5ef855ed955b00a2239ca16afbeb164f}

View File

@@ -0,0 +1,148 @@
# `midi_device` グループ {#group__midi__device}
<!---
original document: 0.10.9:docs/internals_midi_device.md
git diff 0.10.9 HEAD -- docs/internals_midi_device.md | cat
-->
独自の MIDI デバイスを実装する時に、関数を使います。
実際にデバイスを介してバイトを送信するために、送信関数を設定します。このメソッドは、このデバイスで例えば midi_send_cc のような送信関数を呼ぶ時に呼ばれます。
midi_device_input を使ってデバイスからの入力データを処理し、それをデバイスに関連付けられたコールバックで渡します。
デバイスのプロセス関数の最初に呼び出される関数が必要な場合、midi_device_set_pre_input_process_func を使います。通常、入力をポーリングして midi_device_input に渡します。
## 概要
メンバー | 説明
--------------------------------|---------------------------------------------
`define `[`MIDI_INPUT_QUEUE_LENGTH`](#group__midi__device_1ga4aaa419caebdca2bbdfc1331e79781a8) |
`enum `[`input_state_t`](#group__midi__device_1gac203e877d3df4275ceb8e7180a61f621) |
`public void `[`midi_device_input`](#group__midi__device_1gad8d3db8eb35d9cfa51ef036a0a9d70db)`(`[`MidiDevice`](#struct__midi__device)` * device,uint8_t cnt,uint8_t * input)` | 入力バイトを処理します。この関数はバイトを解析し、指定されたデバイスに関連する適切なコールバックを呼びます。この関数は、カスタムデバイスを作成していて、MIDI 入力が必要な場合に使います。
`public void `[`midi_device_set_send_func`](#group__midi__device_1ga59f5a46bdd4452f186cc73d9e96d4673)`(`[`MidiDevice`](#struct__midi__device)` * device,midi_var_byte_func_t send_func)` | 出力データバイトの送信に使われるコールバック関数を設定します。これは、カスタムデバイスを作成している場合のみ使われます。ロックを気にすることなく様々な MIDI 送信関数を呼び出すことができるように、コールバック関数で割り込みを無効にすることができます。
`public void `[`midi_device_set_pre_input_process_func`](#group__midi__device_1ga4de0841b87c04fc23cb56b6451f33b69)`(`[`MidiDevice`](#struct__midi__device)` * device,midi_no_byte_func_t pre_process_func)` | midi_device_process 呼び出しの最初に呼ばれるコールバックを設定します。これは入力データをポーリングし、midi_device_input 関数を介してデータを送信できます。カスタムデバイスを作成している場合のみ、これを使う可能性があります。
`struct `[`_midi_device`](docs/api_midi_device.md#struct__midi__device) | この構造体は、MIDI デバイスの入出力関数と処理データを表します。
## メンバー
#### `define `[`MIDI_INPUT_QUEUE_LENGTH`](#group__midi__device_1ga4aaa419caebdca2bbdfc1331e79781a8) {#group__midi__device_1ga4aaa419caebdca2bbdfc1331e79781a8}
#### `enum `[`input_state_t`](#group__midi__device_1gac203e877d3df4275ceb8e7180a61f621) {#group__midi__device_1gac203e877d3df4275ceb8e7180a61f621}
値 | 説明
--------------------------------|---------------------------------------------
IDLE |
ONE_BYTE_MESSAGE |
TWO_BYTE_MESSAGE |
THREE_BYTE_MESSAGE |
SYSEX_MESSAGE |
#### `public void `[`midi_device_input`](#group__midi__device_1gad8d3db8eb35d9cfa51ef036a0a9d70db)`(`[`MidiDevice`](#struct__midi__device)` * device,uint8_t cnt,uint8_t * input)` {#group__midi__device_1gad8d3db8eb35d9cfa51ef036a0a9d70db}
入力バイトを処理します。この関数はバイトを解析し、指定されたデバイスに関連する適切なコールバックを呼びます。この関数は、カスタムデバイスを作成していて、MIDI 入力が必要な場合に使います。
#### パラメータ
* `device` 入力を関連付ける MIDI デバイス
* `cnt` 処理中のバイト数
* `input` 処理するバイトデータ
#### `public void `[`midi_device_set_send_func`](#group__midi__device_1ga59f5a46bdd4452f186cc73d9e96d4673)`(`[`MidiDevice`](#struct__midi__device)` * device,midi_var_byte_func_t send_func)` {#group__midi__device_1ga59f5a46bdd4452f186cc73d9e96d4673}
出力データバイトの送信に使われるコールバック関数を設定します。これは、カスタムデバイスを作成している場合のみ使われます。ロックを気にすることなく様々な MIDI 送信関数を呼び出すことができるように、コールバック関数で割り込みを無効にすることができます。
#### パラメータ
* `device` このコールバックを関連付ける MIDI デバイス
* `send_func` 送信を行うコールバック関数
#### `public void `[`midi_device_set_pre_input_process_func`](#group__midi__device_1ga4de0841b87c04fc23cb56b6451f33b69)`(`[`MidiDevice`](#struct__midi__device)` * device,midi_no_byte_func_t pre_process_func)` {#group__midi__device_1ga4de0841b87c04fc23cb56b6451f33b69}
midi_device_process 呼び出しの最初に呼ばれるコールバックを設定します。これは入力データをポーリングし、midi_device_input 関数を介してデータを送信できます。カスタムデバイスを作成している場合のみ、これを使う可能性があります。
#### パラメータ
* `device` このコールバックを関連付ける MIDI デバイス
* `midi_no_byte_func_t` 実際のコールバック関数
# `_midi_device` 構造体 {#struct__midi__device}
この構造体は、MIDI デバイスの入出力関数と処理データを表します。
デバイスは、実際の物理デバイス [シリアルポート、USB ポート]、または仮想デバイスを表すことができます。この構造体を直接変更する必要はありません。
## 概要
| メンバー | 説明
--------------------------------|---------------------------------------------
`public midi_var_byte_func_t `[`send_func`](docs/api_midi_device.md#struct__midi__device_1a25d4c94b4bbccd5b98f1032b469f3ff9) |
`public midi_three_byte_func_t `[`input_cc_callback`](docs/api_midi_device.md#struct__midi__device_1a6da5236c1bc73877728df92d213a78d1) |
`public midi_three_byte_func_t `[`input_noteon_callback`](docs/api_midi_device.md#struct__midi__device_1aa10b15cf1a7fb825a5df0d2abbe34a1c) |
`public midi_three_byte_func_t `[`input_noteoff_callback`](docs/api_midi_device.md#struct__midi__device_1aaf290043078534d3a5a0ea4c840eba84) |
`public midi_three_byte_func_t `[`input_aftertouch_callback`](docs/api_midi_device.md#struct__midi__device_1acb0b4901c545cec4b28b126f2d8c315f) |
`public midi_three_byte_func_t `[`input_pitchbend_callback`](docs/api_midi_device.md#struct__midi__device_1a305fea672caeb996f2233bf8cd2bef18) |
`public midi_three_byte_func_t `[`input_songposition_callback`](docs/api_midi_device.md#struct__midi__device_1a5f3f13638b3fef3fc561ed1bf301d586) |
`public midi_two_byte_func_t `[`input_progchange_callback`](docs/api_midi_device.md#struct__midi__device_1adaf1da617c9a10a9dcad00ab1959d3da) |
`public midi_two_byte_func_t `[`input_chanpressure_callback`](docs/api_midi_device.md#struct__midi__device_1ab7ca2925c539915d43974eff604d85f7) |
`public midi_two_byte_func_t `[`input_songselect_callback`](docs/api_midi_device.md#struct__midi__device_1a89bed8a5a55376120cfc0a62b42f057f) |
`public midi_two_byte_func_t `[`input_tc_quarterframe_callback`](docs/api_midi_device.md#struct__midi__device_1ad9813e75d22e284f9f65a907d20600f0) |
`public midi_one_byte_func_t `[`input_realtime_callback`](docs/api_midi_device.md#struct__midi__device_1a9448eba4afb7e43650434748db3777be) |
`public midi_one_byte_func_t `[`input_tunerequest_callback`](docs/api_midi_device.md#struct__midi__device_1a0cb8fd53e00cf1d4202d4fa04d038e8d) |
`public midi_sysex_func_t `[`input_sysex_callback`](docs/api_midi_device.md#struct__midi__device_1afff9a0ce641762aaef24c1e6953ec9a2) |
`public midi_var_byte_func_t `[`input_fallthrough_callback`](docs/api_midi_device.md#struct__midi__device_1abb974ec6d734001b4a0e370f292be503) |
`public midi_var_byte_func_t `[`input_catchall_callback`](docs/api_midi_device.md#struct__midi__device_1aae0d535129d4fd650edc98eb3f7584f8) |
`public midi_no_byte_func_t `[`pre_input_process_callback`](docs/api_midi_device.md#struct__midi__device_1aeb0bb8923d66c23d874e177dc4265754) |
`public uint8_t `[`input_buffer`](docs/api_midi_device.md#struct__midi__device_1a7c5684857d6af4ebc4dc12da27bd6b2a) |
`public input_state_t `[`input_state`](docs/api_midi_device.md#struct__midi__device_1a69a687d2d1c449ec15a11c07a5722e39) |
`public uint16_t `[`input_count`](docs/api_midi_device.md#struct__midi__device_1a68dea8e7b6151e89c85c95caa612ee5d) |
`public uint8_t `[`input_queue_data`](docs/api_midi_device.md#struct__midi__device_1ada41de021135dc423abedcbb30f366ff) |
`public `[`byteQueue_t`](#structbyte_queue__t)` `[`input_queue`](#struct__midi__device_1a49c8538a8a02193c58e28a56eb695d8f) |
## メンバー
#### `public midi_var_byte_func_t `[`send_func`](docs/api_midi_device.md#struct__midi__device_1a25d4c94b4bbccd5b98f1032b469f3ff9) {#struct__midi__device_1a25d4c94b4bbccd5b98f1032b469f3ff9}
#### `public midi_three_byte_func_t `[`input_cc_callback`](docs/api_midi_device.md#struct__midi__device_1a6da5236c1bc73877728df92d213a78d1) {#struct__midi__device_1a6da5236c1bc73877728df92d213a78d1}
#### `public midi_three_byte_func_t `[`input_noteon_callback`](docs/api_midi_device.md#struct__midi__device_1aa10b15cf1a7fb825a5df0d2abbe34a1c) {#struct__midi__device_1aa10b15cf1a7fb825a5df0d2abbe34a1c}
#### `public midi_three_byte_func_t `[`input_noteoff_callback`](docs/api_midi_device.md#struct__midi__device_1aaf290043078534d3a5a0ea4c840eba84) {#struct__midi__device_1aaf290043078534d3a5a0ea4c840eba84}
#### `public midi_three_byte_func_t `[`input_aftertouch_callback`](docs/api_midi_device.md#struct__midi__device_1acb0b4901c545cec4b28b126f2d8c315f) {#struct__midi__device_1acb0b4901c545cec4b28b126f2d8c315f}
#### `public midi_three_byte_func_t `[`input_pitchbend_callback`](docs/api_midi_device.md#struct__midi__device_1a305fea672caeb996f2233bf8cd2bef18) {#struct__midi__device_1a305fea672caeb996f2233bf8cd2bef18}
#### `public midi_three_byte_func_t `[`input_songposition_callback`](docs/api_midi_device.md#struct__midi__device_1a5f3f13638b3fef3fc561ed1bf301d586) {#struct__midi__device_1a5f3f13638b3fef3fc561ed1bf301d586}
#### `public midi_two_byte_func_t `[`input_progchange_callback`](docs/api_midi_device.md#struct__midi__device_1adaf1da617c9a10a9dcad00ab1959d3da) {#struct__midi__device_1adaf1da617c9a10a9dcad00ab1959d3da}
#### `public midi_two_byte_func_t `[`input_chanpressure_callback`](docs/api_midi_device.md#struct__midi__device_1ab7ca2925c539915d43974eff604d85f7) {#struct__midi__device_1ab7ca2925c539915d43974eff604d85f7}
#### `public midi_two_byte_func_t `[`input_songselect_callback`](docs/api_midi_device.md#struct__midi__device_1a89bed8a5a55376120cfc0a62b42f057f) {#struct__midi__device_1a89bed8a5a55376120cfc0a62b42f057f}
#### `public midi_two_byte_func_t `[`input_tc_quarterframe_callback`](docs/api_midi_device.md#struct__midi__device_1ad9813e75d22e284f9f65a907d20600f0) {#struct__midi__device_1ad9813e75d22e284f9f65a907d20600f0}
#### `public midi_one_byte_func_t `[`input_realtime_callback`](docs/api_midi_device.md#struct__midi__device_1a9448eba4afb7e43650434748db3777be) {#struct__midi__device_1a9448eba4afb7e43650434748db3777be}
#### `public midi_one_byte_func_t `[`input_tunerequest_callback`](docs/api_midi_device.md#struct__midi__device_1a0cb8fd53e00cf1d4202d4fa04d038e8d) {#struct__midi__device_1a0cb8fd53e00cf1d4202d4fa04d038e8d}
#### `public midi_sysex_func_t `[`input_sysex_callback`](docs/api_midi_device.md#struct__midi__device_1afff9a0ce641762aaef24c1e6953ec9a2) {#struct__midi__device_1afff9a0ce641762aaef24c1e6953ec9a2}
#### `public midi_var_byte_func_t `[`input_fallthrough_callback`](docs/api_midi_device.md#struct__midi__device_1abb974ec6d734001b4a0e370f292be503) {#struct__midi__device_1abb974ec6d734001b4a0e370f292be503}
#### `public midi_var_byte_func_t `[`input_catchall_callback`](docs/api_midi_device.md#struct__midi__device_1aae0d535129d4fd650edc98eb3f7584f8) {#struct__midi__device_1aae0d535129d4fd650edc98eb3f7584f8}
#### `public midi_no_byte_func_t `[`pre_input_process_callback`](docs/api_midi_device.md#struct__midi__device_1aeb0bb8923d66c23d874e177dc4265754) {#struct__midi__device_1aeb0bb8923d66c23d874e177dc4265754}
#### `public uint8_t `[`input_buffer`](docs/api_midi_device.md#struct__midi__device_1a7c5684857d6af4ebc4dc12da27bd6b2a) {#struct__midi__device_1a7c5684857d6af4ebc4dc12da27bd6b2a}
#### `public input_state_t `[`input_state`](docs/api_midi_device.md#struct__midi__device_1a69a687d2d1c449ec15a11c07a5722e39) {#struct__midi__device_1a69a687d2d1c449ec15a11c07a5722e39}
#### `public uint16_t `[`input_count`](docs/api_midi_device.md#struct__midi__device_1a68dea8e7b6151e89c85c95caa612ee5d) {#struct__midi__device_1a68dea8e7b6151e89c85c95caa612ee5d}
#### `public uint8_t `[`input_queue_data`](docs/api_midi_device.md#struct__midi__device_1ada41de021135dc423abedcbb30f366ff) {#struct__midi__device_1ada41de021135dc423abedcbb30f366ff}
#### `public `[`byteQueue_t`](#structbyte_queue__t)` `[`input_queue`](#struct__midi__device_1a49c8538a8a02193c58e28a56eb695d8f) {#struct__midi__device_1a49c8538a8a02193c58e28a56eb695d8f}

View File

@@ -0,0 +1,36 @@
# `midi_device_setup_process` グループ {#group__midi__device__setup__process}
<!---
original document: 0.10.9:docs/internals_midi_device_setup_process.md
git diff 0.10.9 HEAD -- docs/internals_midi_device_setup_process.md | cat
-->
これらは、デバイスを初期化して実行するために使う必要があるメソッドです。
## 概要
メンバー | 説明
--------------------------------|---------------------------------------------
`public void `[`midi_device_init`](#group__midi__device__setup__process_1gaf29deddc94ea98a59daa0bde1aefd9d9)`(`[`MidiDevice`](#struct__midi__device)` * device)` | デバイスを初期化します。
`public void `[`midi_device_process`](#group__midi__device__setup__process_1gaa3d5993d0e998a1b59bbf5ab9c7b492b)`(`[`MidiDevice`](#struct__midi__device)` * device)` | 入力データを処理します。
## メンバー
#### `public void `[`midi_device_init`](#group__midi__device__setup__process_1gaf29deddc94ea98a59daa0bde1aefd9d9)`(`[`MidiDevice`](#struct__midi__device)` * device)` {#group__midi__device__setup__process_1gaf29deddc94ea98a59daa0bde1aefd9d9}
デバイスを初期化します。
問題のデバイスを使う前にこれを呼び出す必要があります。
#### パラメータ
* `device` 初期化するデバイス
#### `public void `[`midi_device_process`](#group__midi__device__setup__process_1gaa3d5993d0e998a1b59bbf5ab9c7b492b)`(`[`MidiDevice`](#struct__midi__device)` * device)` {#group__midi__device__setup__process_1gaa3d5993d0e998a1b59bbf5ab9c7b492b}
入力データを処理します。
このメソッドは入力処理を駆動します。入力コールバックが呼び出されることが予想される場合は、このメソッドを頻繁に呼び出す必要があります。
#### パラメータ
* `device` 処理するデバイス

View File

@@ -0,0 +1,59 @@
# `midi_util` グループ {#group__midi__util}
<!---
original document: 0.10.9:docs/internals_midi_util.md
git diff 0.10.9 HEAD -- docs/internals_midi_util.md | cat
-->
## 概要
| メンバー | 説明
--------------------------------|---------------------------------------------
| `enum `[`midi_packet_length_t`](#group__midi__util_1gae29ff56aee2b430ffe53933b97e5e79e) | 可能なパケット長の値の列挙型。
| `public bool `[`midi_is_statusbyte`](#group__midi__util_1ga12e3b42ff9cbb4b4f2bc455fc8743ee5)`(uint8_t theByte)` | 指定されたバイトがステータスバイトであるかどうかを検査します。
| `public bool `[`midi_is_realtime`](#group__midi__util_1gad2f52c363e34a8000d80c983c324e2d7)`(uint8_t theByte)` | 指定されたバイトがリアルタイムメッセージであるかどうかを検査します。
| `public `[`midi_packet_length_t`](#group__midi__util_1gae29ff56aee2b430ffe53933b97e5e79e)` `[`midi_packet_length`](#group__midi__util_1gaa168b43af6ae9de0debce1625e4b8175)`(uint8_t status)` | 指定されたステータスバイトに関連付けられたパケットの長さを調べます。
## メンバー
#### `enum `[`midi_packet_length_t`](#group__midi__util_1gae29ff56aee2b430ffe53933b97e5e79e) {#group__midi__util_1gae29ff56aee2b430ffe53933b97e5e79e}
| 値 | 説明
--------------------------------|---------------------------------------------
UNDEFINED |
ONE |
TWO |
THREE |
可能なパケット長の値の列挙型。
#### `public bool `[`midi_is_statusbyte`](#group__midi__util_1ga12e3b42ff9cbb4b4f2bc455fc8743ee5)`(uint8_t theByte)` {#group__midi__util_1ga12e3b42ff9cbb4b4f2bc455fc8743ee5}
指定されたバイトがステータスバイトであるかどうかを検査します。
#### パラメータ
* `theByte` 検査するバイト
#### 返り値
指定されたバイトが MIDI ステータスバイトの場合は true
#### `public bool `[`midi_is_realtime`](#group__midi__util_1gad2f52c363e34a8000d80c983c324e2d7)`(uint8_t theByte)` {#group__midi__util_1gad2f52c363e34a8000d80c983c324e2d7}
指定されたバイトがリアルタイムメッセージであるかどうかを検査します。
#### パラメータ
* `theByte` 検査するバイト
#### 返り値
リアルタイムメッセージの場合は true、それ以外の場合は false
#### `public `[`midi_packet_length_t`](#group__midi__util_1gae29ff56aee2b430ffe53933b97e5e79e)` `[`midi_packet_length`](#group__midi__util_1gaa168b43af6ae9de0debce1625e4b8175)`(uint8_t status)` {#group__midi__util_1gaa168b43af6ae9de0debce1625e4b8175}
指定されたステータスバイトに関連付けられたパケットの長さを調べます。
#### パラメータ
* `status` ステータスバイト
#### 返り値
パケットの長さ。バイトがステータスバイトではない場合、あるいは sysex ステータスバイトの場合は、UNDEFINED を返します。

View File

@@ -0,0 +1,246 @@
# `send_functions` グループ {#group__send__functions}
<!---
original document: 0.10.9:docs/internals_send_functions.md
git diff 0.10.9 HEAD -- docs/internals_send_functions.md | cat
-->
これらは、デバイスを介して MIDI データを送信するために使う関数です。
## 概要
メンバー | 説明
--------------------------------|---------------------------------------------
`public void `[`midi_send_cc`](#group__send__functions_1gaaf884811c92df405ca8fe1a00082f960)`(`[`MidiDevice`](#struct__midi__device)` * device,uint8_t chan,uint8_t num,uint8_t val)` | 指定されたデバイスを介して、コントロールチェンジメッセージを送信します。
`public void `[`midi_send_noteon`](#group__send__functions_1ga467bcf46dbf03ec269ce565b46bc2775)`(`[`MidiDevice`](#struct__midi__device)` * device,uint8_t chan,uint8_t num,uint8_t vel)` | 指定されたデバイスを介してノートオンメッセージを送信します。
`public void `[`midi_send_noteoff`](#group__send__functions_1gaedb7d8805425eef5d47d57ddcb4c7a49)`(`[`MidiDevice`](#struct__midi__device)` * device,uint8_t chan,uint8_t num,uint8_t vel)` | 指定されたデバイスを介してノートオフメッセージを送信します。
`public void `[`midi_send_aftertouch`](#group__send__functions_1ga0014847571317a0e34b2ef46a6bc584f)`(`[`MidiDevice`](#struct__midi__device)` * device,uint8_t chan,uint8_t note_num,uint8_t amt)` | 指定されたデバイスを介してアフタータッチメッセージを送信します。
`public void `[`midi_send_pitchbend`](#group__send__functions_1gae5a4a1e71611e7534be80af9ce3d3491)`(`[`MidiDevice`](#struct__midi__device)` * device,uint8_t chan,int16_t amt)` | 指定されたデバイスを介してピッチベンドメッセージを送信します。
`public void `[`midi_send_programchange`](#group__send__functions_1ga7b15588ef25e5e1ff09c2afc3151ce86)`(`[`MidiDevice`](#struct__midi__device)` * device,uint8_t chan,uint8_t num)` | 指定されたデバイスを介してプログラムチェンジメッセージを送信します。
`public void `[`midi_send_channelpressure`](#group__send__functions_1gaf23e69fdf812e89c0036f51f88ab2e1b)`(`[`MidiDevice`](#struct__midi__device)` * device,uint8_t chan,uint8_t amt)` | 指定されたデバイスを介してチャンネルプレッシャーメッセージを送信します。
`public void `[`midi_send_clock`](#group__send__functions_1ga4e1b11a7cdb0875f6e03ce7c79c581aa)`(`[`MidiDevice`](#struct__midi__device)` * device)` | 指定されたデバイスを介してクロックメッセージを送信します。
`public void `[`midi_send_tick`](#group__send__functions_1ga2b43c7d433d940c5b907595aac947972)`(`[`MidiDevice`](#struct__midi__device)` * device)` | 指定されたデバイスを介してティックメッセージを送信します。
`public void `[`midi_send_start`](#group__send__functions_1ga1569749a8d58ccc56789289d7c7245cc)`(`[`MidiDevice`](#struct__midi__device)` * device)` | 指定されたデバイスを介してスタートメッセージを送信します。
`public void `[`midi_send_continue`](#group__send__functions_1gaed5dc29d754a27372e89ab8bc20ee120)`(`[`MidiDevice`](#struct__midi__device)` * device)` | 指定されたデバイスを介してコンティニューメッセージを送信します。
`public void `[`midi_send_stop`](#group__send__functions_1ga026e1a620276cb653ac501aa0d12a988)`(`[`MidiDevice`](#struct__midi__device)` * device)` | 指定されたデバイスを介してストップメッセージを送信します。
`public void `[`midi_send_activesense`](#group__send__functions_1ga9b6e4c6ce4719d2604187b325620db37)`(`[`MidiDevice`](#struct__midi__device)` * device)` | 指定されたデバイスを介してアクティブセンスメッセージを送信します。
`public void `[`midi_send_reset`](#group__send__functions_1ga3671e39a6d93ca9568fc493001af1b1b)`(`[`MidiDevice`](#struct__midi__device)` * device)` | 指定されたデバイスを介してリセットメッセージを送信します。
`public void `[`midi_send_tcquarterframe`](#group__send__functions_1ga5b85639910eec280bb744c934d0fd45a)`(`[`MidiDevice`](#struct__midi__device)` * device,uint8_t time)` | 指定されたデバイスを介してタイムコードクォータフレームメッセージを送信します。
`public void `[`midi_send_songposition`](#group__send__functions_1gab1c9eeef3b57a8cd2e6128d18e85eb7f)`(`[`MidiDevice`](#struct__midi__device)` * device,uint16_t pos)` | 指定されたデバイスを介してソングポジションメッセージを送信します。
`public void `[`midi_send_songselect`](#group__send__functions_1ga42de7838ba70d949af9a50f9facc3c50)`(`[`MidiDevice`](#struct__midi__device)` * device,uint8_t song)` | 指定されたデバイスを介してソングセレクトメッセージを送信します。
`public void `[`midi_send_tunerequest`](#group__send__functions_1ga8db6c7e04d48e4d2266dd59118ca0656)`(`[`MidiDevice`](#struct__midi__device)` * device)` | 指定されたデバイスを介してチューンリクエストメッセージを送信します。
`public void `[`midi_send_byte`](#group__send__functions_1ga857e85eb90b288385642d4d991e09881)`(`[`MidiDevice`](#struct__midi__device)` * device,uint8_t b)` | 指定されたデバイスを介してバイトを送信します。
`public void `[`midi_send_data`](#group__send__functions_1ga36e2f2e45369d911b76969361679054b)`(`[`MidiDevice`](#struct__midi__device)` * device,uint16_t count,uint8_t byte0,uint8_t byte1,uint8_t byte2)` | 最大3バイトのデータを送信します。
`public void `[`midi_send_array`](#group__send__functions_1ga245243cb1da18d2cea18d4b18d846ead)`(`[`MidiDevice`](#struct__midi__device)` * device,uint16_t count,uint8_t * array)` | フォーマットされた MIDI データの配列を送信します。
## メンバー
#### `public void `[`midi_send_cc`](#group__send__functions_1gaaf884811c92df405ca8fe1a00082f960)`(`[`MidiDevice`](#struct__midi__device)` * device,uint8_t chan,uint8_t num,uint8_t val)` {#group__send__functions_1gaaf884811c92df405ca8fe1a00082f960}
指定されたデバイスを介して、コントロールチェンジメッセージ(cc)を送信します。
#### パラメータ
* `device` 送信に使うデバイス
* `chan` 送信するチャンネル、0-15
* `num` コントロールチェンジナンバー
* `val` コントロールチェンジナンバーの値
#### `public void `[`midi_send_noteon`](#group__send__functions_1ga467bcf46dbf03ec269ce565b46bc2775)`(`[`MidiDevice`](#struct__midi__device)` * device,uint8_t chan,uint8_t num,uint8_t vel)` {#group__send__functions_1ga467bcf46dbf03ec269ce565b46bc2775}
指定されたデバイスを介してノートオンメッセージを送信します。
#### パラメータ
* `device` 送信に使うデバイス
* `chan` 送信するチャンネル、0-15
* `num` ノート番号
* `vel` ノートベロシティ
#### `public void `[`midi_send_noteoff`](#group__send__functions_1gaedb7d8805425eef5d47d57ddcb4c7a49)`(`[`MidiDevice`](#struct__midi__device)` * device,uint8_t chan,uint8_t num,uint8_t vel)` {#group__send__functions_1gaedb7d8805425eef5d47d57ddcb4c7a49}
指定されたデバイスを介してノートオフメッセージを送信します。
#### パラメータ
* `device` 送信に使うデバイス
* `chan` 送信するチャンネル、0-15
* `num` ノート番号
* `vel` ノートベロシティ
#### `public void `[`midi_send_aftertouch`](#group__send__functions_1ga0014847571317a0e34b2ef46a6bc584f)`(`[`MidiDevice`](#struct__midi__device)` * device,uint8_t chan,uint8_t note_num,uint8_t amt)` {#group__send__functions_1ga0014847571317a0e34b2ef46a6bc584f}
指定されたデバイスを介してアフタータッチメッセージを送信します。
#### パラメータ
* `device` 送信に使うデバイス
* `chan` 送信するチャンネル、0-15
* `note_num` ノート番号
* `amt` アフタータッチ量
#### `public void `[`midi_send_pitchbend`](#group__send__functions_1gae5a4a1e71611e7534be80af9ce3d3491)`(`[`MidiDevice`](#struct__midi__device)` * device,uint8_t chan,int16_t amt)` {#group__send__functions_1gae5a4a1e71611e7534be80af9ce3d3491}
指定されたデバイスを介してピッチベンドメッセージを送信します。
#### パラメータ
* `device` 送信に使うデバイス
* `chan` 送信するチャンネル、0-15
* `amt` ベンド量の範囲: -8192..8191、0 はベンドしないことを意味します
#### `public void `[`midi_send_programchange`](#group__send__functions_1ga7b15588ef25e5e1ff09c2afc3151ce86)`(`[`MidiDevice`](#struct__midi__device)` * device,uint8_t chan,uint8_t num)` {#group__send__functions_1ga7b15588ef25e5e1ff09c2afc3151ce86}
指定されたデバイスを介してプログラムチェンジメッセージを送信します。
#### パラメータ
* `device` 送信に使うデバイス
* `chan` 送信するチャンネル、0-15
* `num` 変更先のプログラム
#### `public void `[`midi_send_channelpressure`](#group__send__functions_1gaf23e69fdf812e89c0036f51f88ab2e1b)`(`[`MidiDevice`](#struct__midi__device)` * device,uint8_t chan,uint8_t amt)` {#group__send__functions_1gaf23e69fdf812e89c0036f51f88ab2e1b}
指定されたデバイスを介してチャンネルプレッシャーメッセージを送信します。
#### パラメータ
* `device` 送信に使うデバイス
* `chan` 送信するチャンネル、0-15
* `amt` チャンネルプレッシャーの量
#### `public void `[`midi_send_clock`](#group__send__functions_1ga4e1b11a7cdb0875f6e03ce7c79c581aa)`(`[`MidiDevice`](#struct__midi__device)` * device)` {#group__send__functions_1ga4e1b11a7cdb0875f6e03ce7c79c581aa}
指定されたデバイスを介してクロックメッセージを送信します。
#### パラメータ
* `device` 送信に使うデバイス
#### `public void `[`midi_send_tick`](#group__send__functions_1ga2b43c7d433d940c5b907595aac947972)`(`[`MidiDevice`](#struct__midi__device)` * device)` {#group__send__functions_1ga2b43c7d433d940c5b907595aac947972}
指定されたデバイスを介してティックメッセージを送信します。
#### パラメータ
* `device` 送信に使うデバイス
#### `public void `[`midi_send_start`](#group__send__functions_1ga1569749a8d58ccc56789289d7c7245cc)`(`[`MidiDevice`](#struct__midi__device)` * device)` {#group__send__functions_1ga1569749a8d58ccc56789289d7c7245cc}
指定されたデバイスを介してスタートメッセージを送信します。
#### パラメータ
* `device` 送信に使うデバイス
#### `public void `[`midi_send_continue`](#group__send__functions_1gaed5dc29d754a27372e89ab8bc20ee120)`(`[`MidiDevice`](#struct__midi__device)` * device)` {#group__send__functions_1gaed5dc29d754a27372e89ab8bc20ee120}
指定されたデバイスを介してコンティニューメッセージを送信します。
#### パラメータ
* `device` 送信に使うデバイス
#### `public void `[`midi_send_stop`](#group__send__functions_1ga026e1a620276cb653ac501aa0d12a988)`(`[`MidiDevice`](#struct__midi__device)` * device)` {#group__send__functions_1ga026e1a620276cb653ac501aa0d12a988}
指定されたデバイスを介してストップメッセージを送信します。
#### パラメータ
* `device` 送信に使うデバイス
#### `public void `[`midi_send_activesense`](#group__send__functions_1ga9b6e4c6ce4719d2604187b325620db37)`(`[`MidiDevice`](#struct__midi__device)` * device)` {#group__send__functions_1ga9b6e4c6ce4719d2604187b325620db37}
指定されたデバイスを介してアクティブセンスメッセージを送信します。
#### パラメータ
* `device` 送信に使うデバイス
#### `public void `[`midi_send_reset`](#group__send__functions_1ga3671e39a6d93ca9568fc493001af1b1b)`(`[`MidiDevice`](#struct__midi__device)` * device)` {#group__send__functions_1ga3671e39a6d93ca9568fc493001af1b1b}
指定されたデバイスを介してリセットメッセージを送信します。
#### パラメータ
* `device` 送信に使うデバイス
#### `public void `[`midi_send_tcquarterframe`](#group__send__functions_1ga5b85639910eec280bb744c934d0fd45a)`(`[`MidiDevice`](#struct__midi__device)` * device,uint8_t time)` {#group__send__functions_1ga5b85639910eec280bb744c934d0fd45a}
指定されたデバイスを介してタイムコードクォータフレームメッセージを送信します。
#### パラメータ
* `device` 送信に使うデバイス
* `time` このクォータフレームの時間。範囲は、0..16383
#### `public void `[`midi_send_songposition`](#group__send__functions_1gab1c9eeef3b57a8cd2e6128d18e85eb7f)`(`[`MidiDevice`](#struct__midi__device)` * device,uint16_t pos)` {#group__send__functions_1gab1c9eeef3b57a8cd2e6128d18e85eb7f}
指定されたデバイスを介してソングポジションメッセージを送信します。
#### パラメータ
* `device` 送信に使うデバイス
* `pos` ソングポジション
#### `public void `[`midi_send_songselect`](#group__send__functions_1ga42de7838ba70d949af9a50f9facc3c50)`(`[`MidiDevice`](#struct__midi__device)` * device,uint8_t song)` {#group__send__functions_1ga42de7838ba70d949af9a50f9facc3c50}
指定されたデバイスを介してソングセレクトメッセージを送信します。
#### パラメータ
* `device` 送信に使うデバイス
* `song` 選択するソング
#### `public void `[`midi_send_tunerequest`](#group__send__functions_1ga8db6c7e04d48e4d2266dd59118ca0656)`(`[`MidiDevice`](#struct__midi__device)` * device)` {#group__send__functions_1ga8db6c7e04d48e4d2266dd59118ca0656}
指定されたデバイスを介してチューンリクエストメッセージを送信します。
#### パラメータ
* `device` 送信に使うデバイス
#### `public void `[`midi_send_byte`](#group__send__functions_1ga857e85eb90b288385642d4d991e09881)`(`[`MidiDevice`](#struct__midi__device)` * device,uint8_t b)` {#group__send__functions_1ga857e85eb90b288385642d4d991e09881}
指定されたデバイスを介してバイトを送信します。
これは、指定された MIDI デバイスを介してデータを送信する一般的なメソッドです。これは、この API に実装されていない sysex データまたはメッセージがある場合、それらを送信するのに役立ちます。そのようなものを見つけた場合は、私たちがそれらを追加できるように、作者に連絡してください。
#### パラメータ
* `device` 送信に使うデバイス
* `b` 送信するバイト
#### `public void `[`midi_send_data`](#group__send__functions_1ga36e2f2e45369d911b76969361679054b)`(`[`MidiDevice`](#struct__midi__device)` * device,uint16_t count,uint8_t byte0,uint8_t byte1,uint8_t byte2)` {#group__send__functions_1ga36e2f2e45369d911b76969361679054b}
最大3バイトのデータを送信します。
これを使って sysex を通過できるように count に4の剰余が適用されます。
#### パラメータ
* `device` 送信に使うデバイス
* `count` 送信するバイト数、4の剰余が適用されます
* `byte0` 最初のバイト
* `byte1` 2番目のバイト。cnt % 4 != 2 の場合は無視されます
* `byte2` 3番目のバイト。cnt % 4 != 3 の場合は無視されます
#### `public void `[`midi_send_array`](#group__send__functions_1ga245243cb1da18d2cea18d4b18d846ead)`(`[`MidiDevice`](#struct__midi__device)` * device,uint16_t count,uint8_t * array)` {#group__send__functions_1ga245243cb1da18d2cea18d4b18d846ead}
フォーマットされた MIDI データの配列を送信します。
sysex に使うことができます。
#### パラメータ
* `device` 送信に使うデバイス
* `count` 送信するバイト数
* `array` バイトの配列

View File

@@ -0,0 +1,66 @@
# `sysex_tools` グループ {#group__sysex__tools}
<!---
original document: 0.10.9:docs/internals_sysex_tools.md
git diff 0.10.9 HEAD -- docs/internals_sysex_tools.md | cat
-->
## 概要
| メンバー | 説明
--------------------------------|---------------------------------------------
| `public uint16_t `[`sysex_encoded_length`](#group__sysex__tools_1ga061e5607030412d6e62e2390d8013f0a)`(uint16_t decoded_length)` | エンコード後のメッセージの長さを計算します。
| `public uint16_t `[`sysex_decoded_length`](#group__sysex__tools_1ga121fc227d3acc1c0ea08c9a5c26fa3b0)`(uint16_t encoded_length)` | デコード後のメッセージの長さを計算します。
| `public uint16_t `[`sysex_encode`](#group__sysex__tools_1ga54d77f8d32f92a6f329daefa2b314742)`(uint8_t * encoded,const uint8_t * source,uint16_t length)` | sysex メッセージで安全に送信できるようにデータをエンコードします。
| `public uint16_t `[`sysex_decode`](#group__sysex__tools_1gaaad1d9ba2d5eca709a0ab4ba40662229)`(uint8_t * decoded,const uint8_t * source,uint16_t length)` | エンコードされたデータをデコードします。
## メンバー
#### `public uint16_t `[`sysex_encoded_length`](#group__sysex__tools_1ga061e5607030412d6e62e2390d8013f0a)`(uint16_t decoded_length)` {#group__sysex__tools_1ga061e5607030412d6e62e2390d8013f0a}
エンコード後のメッセージの長さを計算します。
#### パラメータ
* `decoded_length` エンコードするメッセージの長さのバイト数。
#### 返り値
エンコード後のメッセージの長さのバイト数。
#### `public uint16_t `[`sysex_decoded_length`](#group__sysex__tools_1ga121fc227d3acc1c0ea08c9a5c26fa3b0)`(uint16_t encoded_length)` {#group__sysex__tools_1ga121fc227d3acc1c0ea08c9a5c26fa3b0}
デコード後のメッセージの長さを計算します。
#### パラメータ
* `encoded_length` エンコードされたメッセージの長さのバイト数。
#### 返り値
デコードされた後のメッセージの長さのバイト数。
#### `public uint16_t `[`sysex_encode`](#group__sysex__tools_1ga54d77f8d32f92a6f329daefa2b314742)`(uint8_t * encoded,const uint8_t * source,uint16_t length)` {#group__sysex__tools_1ga54d77f8d32f92a6f329daefa2b314742}
sysex メッセージで安全に送信できるようにデータをエンコードします。
#### パラメータ
* `encoded` 出力データバッファは、少なくとも sysex_encoded_length(length) バイトの長さが必要です。
* `source` エンコードされるデータの入力バッファ。
* `length` 入力バッファからエンコードするバイト数。
#### 返り値
エンコードされたバイト数。
#### `public uint16_t `[`sysex_decode`](#group__sysex__tools_1gaaad1d9ba2d5eca709a0ab4ba40662229)`(uint8_t * decoded,const uint8_t * source,uint16_t length)` {#group__sysex__tools_1gaaad1d9ba2d5eca709a0ab4ba40662229}
エンコードされたデータをデコードします。
#### パラメータ
* `decoded` 出力データバッファは、少なくとも sysex_decoded_length(length) バイトの長さが必要です。
* `source` デコードされるデータの入力バッファ。
* `length` 入力バッファからデコードするバイト数。
#### 返り値
デコードされたバイト数。

574
docs/ja/keycodes.md Normal file
View File

@@ -0,0 +1,574 @@
# キーコードの概要
<!---
original document: 0.11.64:docs/keycodes.md
git diff 0.11.64 HEAD -- docs/keycodes.md | cat
-->
[キーマップ](ja/keymap.md) を定義するときは、それぞれのキーに有効な定義が必要です。このページは、QMK で使えるキーコードに相当するシンボルについて記述しています。
このページは参照のみです。それぞれのキーの種類毎のリンク先のページに、それぞれのキーの機能についてもっと詳細に記載しています。
## 基本的なキーコード :id=basic-keycodes
[基本的なキーコード](ja/keycodes_basic.md) も見てください。
?> 訳注: 以下の説明は、OS のキーボード配列の設定が「US」の場合のものです。OS のキーボード配列の設定が「JIS」の場合、一部のキーは下の表と異なる文字が入力されます。例えば、`KC_LBRC` は、OS のキーボード配列の設定が US であれば「`[` または `{`」が入力されますが、JIS の場合「`@` または <code>&#96;</code>」が入力されます。
?> これは、OS がキーボードから送信されたキーコードを解釈する際に、キーボード配列の設定によって対応する文字を変えるためです。もし、OS のキーボード配列の設定を JIS にする場合、`#include "keymap_jp.h"``keymap.c` に追加すると`JP_AT` のような JIS キーボードのキーキャップに対応したキーを指定できます。
|キー |エイリアス |説明 |Windows |macOS |Linux<sup>1</sup>|
|-----------------------|------------------------------|-----------------------------------------|-------------|-------------|-----------------|
|`KC_NO` |`XXXXXXX` |このキーを無視します (何もしません) 。 |*N/A* |*N/A* |*N/A* |
|`KC_TRANSPARENT` |`KC_TRNS`, `_______` | 次に低いレイヤーの非透過キーを使う |*N/A* |*N/A* |*N/A* |
|`KC_A` | |`a``A` |✔ |✔ |✔ |
|`KC_B` | |`b``B` |✔ |✔ |✔ |
|`KC_C` | |`c``C` |✔ |✔ |✔ |
|`KC_D` | |`d``D` |✔ |✔ |✔ |
|`KC_E` | |`e``E` |✔ |✔ |✔ |
|`KC_F` | |`f``F` |✔ |✔ |✔ |
|`KC_G` | |`g``G` |✔ |✔ |✔ |
|`KC_H` | |`h``H` |✔ |✔ |✔ |
|`KC_I` | |`i``I` |✔ |✔ |✔ |
|`KC_J` | |`j``J` |✔ |✔ |✔ |
|`KC_K` | |`k``K` |✔ |✔ |✔ |
|`KC_L` | |`l``L` |✔ |✔ |✔ |
|`KC_M` | |`m``M` |✔ |✔ |✔ |
|`KC_N` | |`n``N` |✔ |✔ |✔ |
|`KC_O` | |`o``O` |✔ |✔ |✔ |
|`KC_P` | |`p``P` |✔ |✔ |✔ |
|`KC_Q` | |`q``Q` |✔ |✔ |✔ |
|`KC_R` | |`r``R` |✔ |✔ |✔ |
|`KC_S` | |`s``S` |✔ |✔ |✔ |
|`KC_T` | |`t``T` |✔ |✔ |✔ |
|`KC_U` | |`u``U` |✔ |✔ |✔ |
|`KC_V` | |`v``V` |✔ |✔ |✔ |
|`KC_W` | |`w``W` |✔ |✔ |✔ |
|`KC_X` | |`x``X` |✔ |✔ |✔ |
|`KC_Y` | |`y``Y` |✔ |✔ |✔ |
|`KC_Z` | |`z``Z` |✔ |✔ |✔ |
|`KC_1` | |`1``!` |✔ |✔ |✔ |
|`KC_2` | |`2``@` |✔ |✔ |✔ |
|`KC_3` | |`3``#` |✔ |✔ |✔ |
|`KC_4` | |`4``$` |✔ |✔ |✔ |
|`KC_5` | |`5``%` |✔ |✔ |✔ |
|`KC_6` | |`6``^` |✔ |✔ |✔ |
|`KC_7` | |`7``&` |✔ |✔ |✔ |
|`KC_8` | |`8``*` |✔ |✔ |✔ |
|`KC_9` | |`9``(` |✔ |✔ |✔ |
|`KC_0` | |`0``)` |✔ |✔ |✔ |
|`KC_ENTER` |`KC_ENT` |Return (Enter) |✔ |✔ |✔ |
|`KC_ESCAPE` |`KC_ESC` |Escape |✔ |✔ |✔ |
|`KC_BSPACE` |`KC_BSPC` |Delete (Backspace) |✔ |✔ |✔ |
|`KC_TAB` | |Tab |✔ |✔ |✔ |
|`KC_SPACE` |`KC_SPC` |Spacebar |✔ |✔ |✔ |
|`KC_MINUS` |`KC_MINS` |`-``_` |✔ |✔ |✔ |
|`KC_EQUAL` |`KC_EQL` |`=``+` |✔ |✔ |✔ |
|`KC_LBRACKET` |`KC_LBRC` |`[``{` |✔ |✔ |✔ |
|`KC_RBRACKET` |`KC_RBRC` |`]``}` |✔ |✔ |✔ |
|`KC_BSLASH` |`KC_BSLS` |`\``\|` |✔ |✔ |✔ |
|`KC_NONUS_HASH` |`KC_NUHS` |Non-US `#``~` |✔ |✔ |✔ |
|`KC_SCOLON` |`KC_SCLN` |`;``:` |✔ |✔ |✔ |
|`KC_QUOTE` |`KC_QUOT` |`'``"` |✔ |✔ |✔ |
|`KC_GRAVE` |`KC_GRV`, `KC_ZKHK` |<code>&#96;</code>`~`, JIS 全角/半角 |✔ |✔ |✔ |
|`KC_COMMA` |`KC_COMM` |`,``<` |✔ |✔ |✔ |
|`KC_DOT` | |`.``>` |✔ |✔ |✔ |
|`KC_SLASH` |`KC_SLSH` |`/``?` |✔ |✔ |✔ |
|`KC_CAPSLOCK` |`KC_CLCK`, `KC_CAPS` |Caps Lock |✔ |✔ |✔ |
|`KC_F1` | |F1 |✔ |✔ |✔ |
|`KC_F2` | |F2 |✔ |✔ |✔ |
|`KC_F3` | |F3 |✔ |✔ |✔ |
|`KC_F4` | |F4 |✔ |✔ |✔ |
|`KC_F5` | |F5 |✔ |✔ |✔ |
|`KC_F6` | |F6 |✔ |✔ |✔ |
|`KC_F7` | |F7 |✔ |✔ |✔ |
|`KC_F8` | |F8 |✔ |✔ |✔ |
|`KC_F9` | |F9 |✔ |✔ |✔ |
|`KC_F10` | |F10 |✔ |✔ |✔ |
|`KC_F11` | |F11 |✔ |✔ |✔ |
|`KC_F12` | |F12 |✔ |✔ |✔ |
|`KC_PSCREEN` |`KC_PSCR` |Print Screen |✔ |✔<sup>2</sup>|✔ |
|`KC_SCROLLLOCK` |`KC_SLCK`, `KC_BRMD` |Scroll Lock, 画面の明るさダウン (macOS) |✔ |✔<sup>2</sup>|✔ |
|`KC_PAUSE` |`KC_PAUS`, `KC_BRK`, `KC_BRMU`|Pause, 画面の明るさアップ (macOS) |✔ |✔<sup>2</sup>|✔ |
|`KC_INSERT` |`KC_INS` |Insert |✔ | |✔ |
|`KC_HOME` | |Home |✔ |✔ |✔ |
|`KC_PGUP` | |Page Up |✔ |✔ |✔ |
|`KC_DELETE` |`KC_DEL` |Forward Delete |✔ |✔ |✔ |
|`KC_END` | |End |✔ |✔ |✔ |
|`KC_PGDOWN` |`KC_PGDN` |Page Down |✔ |✔ |✔ |
|`KC_RIGHT` |`KC_RGHT` |右矢印 |✔ |✔ |✔ |
|`KC_LEFT` | |左矢印 |✔ |✔ |✔ |
|`KC_DOWN` | |下矢印 |✔ |✔ |✔ |
|`KC_UP` | |上矢印 |✔ |✔ |✔ |
|`KC_NUMLOCK` |`KC_NLCK` |テンキー Num Lock と Clear |✔ |✔ |✔ |
|`KC_KP_SLASH` |`KC_PSLS` |テンキー `/` |✔ |✔ |✔ |
|`KC_KP_ASTERISK` |`KC_PAST` |テンキー `*` |✔ |✔ |✔ |
|`KC_KP_MINUS` |`KC_PMNS` |テンキー `-` |✔ |✔ |✔ |
|`KC_KP_PLUS` |`KC_PPLS` |テンキー `+` |✔ |✔ |✔ |
|`KC_KP_ENTER` |`KC_PENT` |テンキー Enter |✔ |✔ |✔ |
|`KC_KP_1` |`KC_P1` |テンキー `1` と End |✔ |✔ |✔ |
|`KC_KP_2` |`KC_P2` |テンキー `2` と下矢印 |✔ |✔ |✔ |
|`KC_KP_3` |`KC_P3` |テンキー `3` と Page Down |✔ |✔ |✔ |
|`KC_KP_4` |`KC_P4` |テンキー `4` と左矢印 |✔ |✔ |✔ |
|`KC_KP_5` |`KC_P5` |テンキー `5` |✔ |✔ |✔ |
|`KC_KP_6` |`KC_P6` |テンキー `6` と右矢印 |✔ |✔ |✔ |
|`KC_KP_7` |`KC_P7` |テンキー `7` と Home |✔ |✔ |✔ |
|`KC_KP_8` |`KC_P8` |テンキー `8` と上矢印 |✔ |✔ |✔ |
|`KC_KP_9` |`KC_P9` |テンキー `9` と Page Up |✔ |✔ |✔ |
|`KC_KP_0` |`KC_P0` |テンキー `0` と Insert |✔ |✔ |✔ |
|`KC_KP_DOT` |`KC_PDOT` |テンキー `.` と Delete |✔ |✔ |✔ |
|`KC_NONUS_BSLASH` |`KC_NUBS` |Non-US `\``\|` |✔ |✔ |✔ |
|`KC_APPLICATION` |`KC_APP` |アプリケーションキー (Windows コンテキストメニューキー) |✔ | |✔ |
|`KC_POWER` | |システム電源 | |✔<sup>3</sup>|✔ |
|`KC_KP_EQUAL` |`KC_PEQL` |テンキー `=` |✔ |✔ |✔ |
|`KC_F13` | |F13 |✔ |✔ |✔ |
|`KC_F14` | |F14 |✔ |✔ |✔ |
|`KC_F15` | |F15 |✔ |✔ |✔ |
|`KC_F16` | |F16 |✔ |✔ |✔ |
|`KC_F17` | |F17 |✔ |✔ |✔ |
|`KC_F18` | |F18 |✔ |✔ |✔ |
|`KC_F19` | |F19 |✔ |✔ |✔ |
|`KC_F20` | |F20 |✔ | |✔ |
|`KC_F21` | |F21 |✔ | |✔ |
|`KC_F22` | |F22 |✔ | |✔ |
|`KC_F23` | |F23 |✔ | |✔ |
|`KC_F24` | |F24 |✔ | |✔ |
|`KC_EXECUTE` |`KC_EXEC` |Execute | | |✔ |
|`KC_HELP` | |Help | | |✔ |
|`KC_MENU` | |Menu | | |✔ |
|`KC_SELECT` |`KC_SLCT` |Select | | |✔ |
|`KC_STOP` | |Stop | | |✔ |
|`KC_AGAIN` |`KC_AGIN` |Again | | |✔ |
|`KC_UNDO` | |アンドゥ | | |✔ |
|`KC_CUT` | |カット | | |✔ |
|`KC_COPY` | |コピー | | |✔ |
|`KC_PASTE` |`KC_PSTE` |ペースト | | |✔ |
|`KC_FIND` | |検索 | | |✔ |
|`KC__MUTE` | |ミュート | |✔ |✔ |
|`KC__VOLUP` | |音量アップ | |✔ |✔ |
|`KC__VOLDOWN` | |音量ダウン | |✔ |✔ |
|`KC_LOCKING_CAPS` |`KC_LCAP` |Caps Lock のロック |✔ |✔ | |
|`KC_LOCKING_NUM` |`KC_LNUM` |Num Lock のロック |✔ |✔ | |
|`KC_LOCKING_SCROLL` |`KC_LSCR` |Scroll Lock のロック |✔ |✔ | |
|`KC_KP_COMMA` |`KC_PCMM` |テンキー `,` | | |✔ |
|`KC_KP_EQUAL_AS400` | |AS/400 キーボードのテンキー `=` | | | |
|`KC_INT1` |`KC_RO` |JIS `\``_` |✔ | |✔ |
|`KC_INT2` |`KC_KANA` |JIS カタカナ/ひらがな |✔ | |✔ |
|`KC_INT3` |`KC_JYEN` |JIS `¥``\|` |✔ | |✔ |
|`KC_INT4` |`KC_HENK` |JIS 変換 |✔ | |✔ |
|`KC_INT5` |`KC_MHEN` |JIS 無変換 |✔ | |✔ |
|`KC_INT6` | |JIS テンキー `,` | | |✔ |
|`KC_INT7` | |International 7 | | | |
|`KC_INT8` | |International 8 | | | |
|`KC_INT9` | |International 9 | | | |
|`KC_LANG1` |`KC_HAEN` |ハングル/英語 | | |✔ |
|`KC_LANG2` |`KC_HANJ` |韓文漢字 | | |✔ |
|`KC_LANG3` | |JIS カタカナ | | |✔ |
|`KC_LANG4` | |JIS ひらがな | | |✔ |
|`KC_LANG5` | |JIS 全角/半角 | | |✔ |
|`KC_LANG6` | |Language 6 | | | |
|`KC_LANG7` | |Language 7 | | | |
|`KC_LANG8` | |Language 8 | | | |
|`KC_LANG9` | |Language 9 | | | |
|`KC_ALT_ERASE` |`KC_ERAS` |Alternate Erase | | | |
|`KC_SYSREQ` | |SysReq/Attention | | | |
|`KC_CANCEL` | |Cancel | | | |
|`KC_CLEAR` |`KC_CLR` |Clear | | |✔ |
|`KC_PRIOR` | |Prior | | | |
|`KC_RETURN` | |Return | | | |
|`KC_SEPARATOR` | |Separator | | | |
|`KC_OUT` | |Out | | | |
|`KC_OPER` | |Oper | | | |
|`KC_CLEAR_AGAIN` | |Clear/Again | | | |
|`KC_CRSEL` | |CrSel/Props | | | |
|`KC_EXSEL` | |ExSel | | | |
|`KC_LCTRL` |`KC_LCTL` |左 Control |✔ |✔ |✔ |
|`KC_LSHIFT` |`KC_LSFT` |左 Shift |✔ |✔ |✔ |
|`KC_LALT` |`KC_LOPT` |左 Alt (Option) |✔ |✔ |✔ |
|`KC_LGUI` |`KC_LCMD`, `KC_LWIN` |左 GUI (Windows/Command/Meta key) |✔ |✔ |✔ |
|`KC_RCTRL` |`KC_RCTL` |右 Control |✔ |✔ |✔ |
|`KC_RSHIFT` |`KC_RSFT` |右 Shift |✔ |✔ |✔ |
|`KC_RALT` |`KC_ROPT`, `KC_ALGR` |右 Alt (Option/AltGr) |✔ |✔ |✔ |
|`KC_RGUI` |`KC_RCMD`, `KC_RWIN` |右 GUI (Windows/Command/Meta key) |✔ |✔ |✔ |
|`KC_SYSTEM_POWER` |`KC_PWR` |システム電源オフ |✔ |✔<sup>3</sup>|✔ |
|`KC_SYSTEM_SLEEP` |`KC_SLEP` |システムスリープ |✔ |✔<sup>3</sup>|✔ |
|`KC_SYSTEM_WAKE` |`KC_WAKE` |システムスリープ解除 | |✔<sup>3</sup>|✔ |
|`KC_AUDIO_MUTE` |`KC_MUTE` |ミュート |✔ |✔ |✔ |
|`KC_AUDIO_VOL_UP` |`KC_VOLU` |音量アップ |✔ |✔<sup>4</sup>|✔ |
|`KC_AUDIO_VOL_DOWN` |`KC_VOLD` |音量ダウン |✔ |✔<sup>4</sup>|✔ |
|`KC_MEDIA_NEXT_TRACK` |`KC_MNXT` |次の曲へ |✔ |✔<sup>5</sup>|✔ |
|`KC_MEDIA_PREV_TRACK` |`KC_MPRV` |前の曲へ |✔ |✔<sup>5</sup>|✔ |
|`KC_MEDIA_STOP` |`KC_MSTP` |再生停止 |✔ | |✔ |
|`KC_MEDIA_PLAY_PAUSE` |`KC_MPLY` |再生/一時停止 |✔ |✔ |✔ |
|`KC_MEDIA_SELECT` |`KC_MSEL` |Media Player 起動 |✔ | |✔ |
|`KC_MEDIA_EJECT` |`KC_EJCT` |イジェクト | |✔ |✔ |
|`KC_MAIL` | |メール起動 |✔ | |✔ |
|`KC_CALCULATOR` |`KC_CALC` |電卓起動 |✔ | |✔ |
|`KC_MY_COMPUTER` |`KC_MYCM` |マイコンピュータを開く |✔ | |✔ |
|`KC_WWW_SEARCH` |`KC_WSCH` |ブラウザ検索 |✔ | |✔ |
|`KC_WWW_HOME` |`KC_WHOM` |ブラウザホーム画面 |✔ | |✔ |
|`KC_WWW_BACK` |`KC_WBAK` |ブラウザ戻る |✔ | |✔ |
|`KC_WWW_FORWARD` |`KC_WFWD` |ブラウザ進む |✔ | |✔ |
|`KC_WWW_STOP` |`KC_WSTP` |ブラウザ読み込み中止 |✔ | |✔ |
|`KC_WWW_REFRESH` |`KC_WREF` |ブラウザ再読み込み |✔ | |✔ |
|`KC_WWW_FAVORITES` |`KC_WFAV` |ブラウザお気に入り |✔ | |✔ |
|`KC_MEDIA_FAST_FORWARD`|`KC_MFFD` |次の曲へ |✔ |✔<sup>5</sup>|✔ |
|`KC_MEDIA_REWIND` |`KC_MRWD` |前の曲へ |✔<sup>6</sup>|✔<sup>5</sup>|✔ |
|`KC_BRIGHTNESS_UP` |`KC_BRIU` |画面の明るさアップ |✔ |✔ |✔ |
|`KC_BRIGHTNESS_DOWN` |`KC_BRID` |画面の明るさダウン |✔ |✔ |✔ |
<sup>1. Linux カーネル HID ドライバは [ほぼ全てのキーコード](https://github.com/torvalds/linux/blob/master/drivers/hid/hid-input.c) を識別しますが、デフォルトの関連付けは デスクトップ環境/ウィンドウマネージャによって決まります。</sup><br/>
<sup>2. F13-F15 として取り扱われます。</sup><br/>
<sup>3. 約3秒間押していると、プロンプトが表示されます。</sup><br/>
<sup>4. Shift と Option を押していると、ボリュームレベルの細かいコントロールが可能になります。</sup><br/>
<sup>5. iTunes では、タップすると1曲全体がスキップされます。押していると曲の中で早送り/巻き戻しになります。</sup><br/>
<sup>6. Windows Media Player は巻き戻しキーを識別しませんが、VLC では早送り/巻き戻しキーで再生速度が変更されます。</sup>
## Quantum キーコード :id=quantum-keycodes
[Quantum キーコード](ja/quantum_keycodes.md#qmk-keycodes) も見てください。
|キー |エイリアス |説明 |
|--------------|-----------|---------------------------------------------------------|
|`RESET` | |ファームウエア書き込みのためにキーボードをブートローダーモードにします |
|`DEBUG` | |デバッグモードを切り替えます |
|`EEPROM_RESET`|`EEP_RST` |キーボードの EEPROM (不揮発メモリ) を再初期化します |
## オーディオキー :id=audio-keys
[オーディオ](ja/feature_audio.md) も見てください。
|キー |エイリアス |説明 |
|----------------|------------|---------------------------------------|
|`AU_ON` | |オーディオモードオン |
|`AU_OFF` | |オーディオモードオフ |
|`AU_TOG` | |オーディオモードを切り替えます |
|`CLICKY_TOGGLE` |`CK_TOGG` |オーディオクリックモードを切り替えます |
|`CLICKY_UP` |`CK_UP` |クリック音の周波数を増やします |
|`CLICKY_DOWN` |`CK_DOWN` |クリック音の周波数を減らします |
|`CLICKY_RESET` |`CK_RST` |周波数をデフォルトに再設定します |
|`MU_ON` | |音楽モードをオンにします |
|`MU_OFF` | |音楽モードをオフにします |
|`MU_TOG` | |音楽モードを切り替えます |
|`MU_MOD` | |音楽モードを循環します |
## バックライト :id=backlighting
[バックライト](ja/feature_backlight.md) も見てください。
|キー |説明 |
|---------|-------------------------------------|
|`BL_TOGG`|バックライトをオンあるいはオフにする |
|`BL_STEP`|バックライトレベルを循環する |
|`BL_ON` |バックライトを最大輝度にセットする |
|`BL_OFF` |バックライトをオフにする |
|`BL_INC` |バックライトのレベルを上げる |
|`BL_DEC` |バックライトのレベルを下げる |
|`BL_BRTG`|バックライトの明滅動作を切り替える |
## ブートマジック :id=bootmagic
[ブートマジック](ja/feature_bootmagic.md) も見てください。
| キー | エイリアス| 説明 |
|------------------------------------|-----------|-------------------------------------------------------|
| `MAGIC_SWAP_CONTROL_CAPSLOCK` | `CL_SWAP` | Caps Lock と左 Control の入れ替え |
| `MAGIC_UNSWAP_CONTROL_CAPSLOCK` | `CL_NORM` | Caps Lock と左 Control の入れ替えの解除 |
| `MAGIC_CAPSLOCK_TO_CONTROL` | `CL_CTRL` | Caps Lock を Control として扱う |
| `MAGIC_UNCAPSLOCK_TO_CONTROL` | `CL_CAPS` | Caps Lock を Control として扱うことを止める |
| `MAGIC_SWAP_LCTL_LGUI` | `LCG_SWP` | 左 Control と GUI の入れ替え |
| `MAGIC_UNSWAP_LCTL_LGUI` | `LCG_NRM` | 左 Control と GUI の入れ替えを解除 |
| `MAGIC_SWAP_RCTL_RGUI` | `RCG_SWP` | 右 Control と GUI の入れ替え |
| `MAGIC_UNSWAP_RCTL_RGUI` | `RCG_NRM` | 右 Control と GUI の入れ替えを解除 |
| `MAGIC_SWAP_CTL_GUI` | `CG_SWAP` | 両側の Control と GUI の入れ替え |
| `MAGIC_UNSWAP_CTL_GUI` | `CG_NORM` | 両側の Control と GUI の入れ替えを解除 |
| `MAGIC_TOGGLE_CTL_GUI` | `CG_TOGG` | 両側の Control と GUI の入れ替えの切り替え |
| `MAGIC_SWAP_LALT_LGUI` | `LAG_SWP` | 左 Alt と GUI の入れ替え |
| `MAGIC_UNSWAP_LALT_LGUI` | `LAG_NRM` | 左 Alt と GUI の入れ替えを解除 |
| `MAGIC_SWAP_RALT_RGUI` | `RAG_SWP` | 右 Alt と GUI の入れ替え |
| `MAGIC_UNSWAP_RALT_RGUI` | `RAG_NRM` | 右 Alt と GUI の入れ替えを解除 |
| `MAGIC_SWAP_ALT_GUI` | `AG_SWAP` | 両側の Alt と GUI の入れ替え |
| `MAGIC_UNSWAP_ALT_GUI` | `AG_NORM` | 両側の Alt と GUI の入れ替えを解除 |
| `MAGIC_TOGGLE_ALT_GUI` | `AG_TOGG` | 両側の Alt と GUI の入れ替えの切り替え |
| `MAGIC_NO_GUI` | `GUI_OFF` | GUI キーを無効にする |
| `MAGIC_UNNO_GUI` | `GUI_ON` | GUI キーを有効にする |
| `MAGIC_SWAP_GRAVE_ESC` | `GE_SWAP` | <code>&#96;</code> とエスケープの入れ替え |
| `MAGIC_UNSWAP_GRAVE_ESC` | `GE_NORM` | <code>&#96;</code> とエスケープの入れ替えを解除 |
| `MAGIC_SWAP_BACKSLASH_BACKSPACE` | `BS_SWAP` | `\` と Backspace を入れ替え |
| `MAGIC_UNSWAP_BACKSLASH_BACKSPACE` | `BS_NORM` | `\` と Backspace の入れ替えを解除する |
| `MAGIC_HOST_NKRO` | `NK_ON` | N キーロールオーバーを有効にする |
| `MAGIC_UNHOST_NKRO` | `NK_OFF` | N キーロールオーバーを無効にする |
| `MAGIC_TOGGLE_NKRO` | `NK_TOGG` | N キーロールオーバーの有効・無効を切り替え |
| `MAGIC_EE_HANDS_LEFT` | `EH_LEFT` | 分割キーボードのマスター側を左手に設定(`EE_HANDS` 用) |
| `MAGIC_EE_HANDS_RIGHT` | `EH_RGHT` | 分割キーボードのマスター側を右手に設定(`EE_HANDS` 用) |
## Bluetooth :id=bluetooth
[Bluetooth](ja/feature_bluetooth.md) も見てください。
|キー |説明 |
|----------|--------------------------------------|
|`OUT_AUTO`|USB と Bluetooth を自動的に切り替える |
|`OUT_USB` |USB のみ |
|`OUT_BT` |Bluetooth のみ |
## 動的マクロ :id=dynamic-macros
[動的マクロ](ja/feature_dynamic_macros.md) も見てください。
|キー |エイリアス |説明 |
|-----------------|---------|-------------------------------------|
|`DYN_REC_START1` |`DM_REC1`|マクロ 1 の記録を開始します |
|`DYN_REC_START2` |`DM_REC2`|マクロ 2 の記録を開始します |
|`DYN_MACRO_PLAY1`|`DM_PLY1`|マクロ 1 を再生します |
|`DYN_MACRO_PLAY2`|`DM_PLY2`|マクロ 2 を再生します |
|`DYN_REC_STOP` |`DM_RSTP`|現在記録中のマクロの記録を終了します |
## グレイブエスケープ :id=grave-escape
[グレイブエスケープ](ja/feature_grave_esc.md) も見てください。
|キー |エイリアス |説明 |
|-----------|---------|------------------------------------------------------------------|
|`GRAVE_ESC`|`KC_GESC`|押された場合に Escape。Shift あるいは GUI が押されたままの場合は <code>&#96;</code>|
## キーロック :id=key-lock
[キーロック](ja/feature_key_lock.md) も見てください。
|キー |説明 |
|---------|--------------------------------------------------|
|`KC_LOCK`|キーが再び押されるまで次のキーを押したままにします |
## レイヤー切り替え :id=layer-switching
[レイヤー切り替え](ja/feature_layers.md#switching-and-toggling-layers) も見てください。
|キー |説明 |
|----------------|--------------------------------------------------------------------------------------------------------------------------------------|
|`DF(layer)` |指定されたレイヤーを基本 (デフォルト) レイヤーに設定する |
|`MO(layer)` |キーを押したら一時的に `layer` を切り替える。(切り替え先のレイヤーには `KC_TRNS` が必要です) |
|`OSL(layer)` |次のキーが押されるまで、一時的にレイヤーをアクティブにします。詳細は [ワンショットキー](ja/one_shot_keys.md) のとおり。 |
|`LM(layer, mod)`|`mod` がアクティブな状態で (MO のように) 一時的にレイヤーをアクティブにします。ここでは、`mod` は mods_bit のことです。Mod については [こちら](ja/mod_tap.md) で見ることができます。実装例: `LM(LAYER_1, MOD_LALT)` |
|`LT(layer, kc)` |押していると `layer` をオンにし、タップすると `kc` になります。 |
|`TG(layer)` |`layer` のオン・オフを切り替え |
|`TO(layer)` |`layer` をオンにして、デフォルトレイヤーを除く他のレイヤーをオフにします。 |
|`TT(layer)` |複数回タップしない限り `MO` のように動作し、複数回タップすると `layer` をオンにトグルします。 |
## リーダーキー :id=leader-key
[リーダーキー](ja/feature_leader_key.md) も見てください。
|キー |説明 |
|---------|-------------------------------|
|`KC_LEAD`|リーダーキーのシーケンスを開始 |
## マウスキー :id=mouse-keys
[マウスキー](ja/feature_mouse_keys.md) も見てください。
|キー |エイリアス |説明 |
|----------------|---------|-------------------------|
|`KC_MS_UP` |`KC_MS_U`|マウスカーソルを上に移動 |
|`KC_MS_DOWN` |`KC_MS_D`|マウスカーソルを下に移動 |
|`KC_MS_LEFT` |`KC_MS_L`|マウスカーソルを左に移動 |
|`KC_MS_RIGHT` |`KC_MS_R`|マウスカーソルを右に移動 |
|`KC_MS_BTN1` |`KC_BTN1`|ボタン1を押す |
|`KC_MS_BTN2` |`KC_BTN2`|ボタン2を押す |
|`KC_MS_BTN3` |`KC_BTN3`|ボタン3を押す |
|`KC_MS_BTN4` |`KC_BTN4`|ボタン4を押す |
|`KC_MS_BTN5` |`KC_BTN5`|ボタン5を押す |
|`KC_MS_WH_UP` |`KC_WH_U`|ホイールを向こう側に回転 |
|`KC_MS_WH_DOWN` |`KC_WH_D`|ホイールを手前側に回転 |
|`KC_MS_WH_LEFT` |`KC_WH_L`|ホイールを左に倒す |
|`KC_MS_WH_RIGHT`|`KC_WH_R`|ホイールを右に倒す |
|`KC_MS_ACCEL0` |`KC_ACL0`|速度を0に設定 |
|`KC_MS_ACCEL1` |`KC_ACL1`|速度を1に設定 |
|`KC_MS_ACCEL2` |`KC_ACL2`|速度を2に設定 |
## 修飾キー :id=modifiers
[修飾キー](ja/feature_advanced_keycodes.md#modifier-keys) も見てください。
| キー | エイリアス | 説明 |
|------------|---------------------------------|---------------------------------------------------------------|
| `LCTL(kc)` | `C(kc)` | 左 Control を押しながら `kc` を押します。 |
| `LSFT(kc)` | `S(kc)` | 左 Shift を押しながら `kc` を押します。 |
| `LALT(kc)` | `A(kc)`, `LOPT(kc)` | 左 Alt を押しながら `kc`を押します。 |
| `LGUI(kc)` | `G(kc)`, `LCMD(kc)`, `LWIN(kc)` | 左 GUI を押しながら `kc` を押します。 |
| `RCTL(kc)` | | 右 Control を押しながら `kc` を押します。 |
| `RSFT(kc)` | | 右 Shift を押しながら `kc` を押します。 |
| `RALT(kc)` | `ROPT(kc)`, `ALGR(kc)` | 右 Alt (AltGr) を押しながら `kc` を押します。 |
| `RGUI(kc)` | `RCMD(kc)`, `LWIN(kc)` | 右 GUI を押しながら `kc` を押します。 |
| `SGUI(kc)` | `SCMD(kc)`, `SWIN(kc)` | 左 Shift と GUI を押しながら `kc` を押します。 |
| `LCA(kc)` | | 左 Control と Alt を押しながら `kc` を押します。 |
| `LSA(kc)` | | 左 Shift と Alt を押しながら `kc` を押します。 |
| `RSA(kc)` |`SAGR(kc)` | 右 Shift と Alt (AltGr) を押しながら `kc` を押します。 |
| `RCS(kc)` | | 右 Control と Shift を押しながら `kc` を押します。 |
| `LCAG(kc)` | | 左 Control、Alt、GUI を押しながら `kc` を押します。 |
| `MEH(kc)` | | 左 Control、Shift、Alt を押しながら `kc` を押します。 |
| `HYPR(kc)` | | 左 Control、Shift、Alt、GUI を押しながら `kc` を押します。 |
| `KC_MEH` | | 左 Control、Shift、Alt |
| `KC_HYPR` | | 左 Control、Shift、Alt、GUI |
## モッドタップキー :id=mod-tap-keys
[モッドタップキー](ja/mod_tap.md) も見てください。
|キー |エイリアス | 説明 |
|--------------|-------------------------------------------------------------------|------------------------------------------------------------------------|
| `MT(mod, kc)`| |押したままの場合は `mod` 、タップした場合は `kc` |
| `LCTL_T(kc)` | `CTL_T(kc)` | 押したままの場合は左 Control、タップした場合は `kc` |
| `LSFT_T(kc)` | `SFT_T(kc)` | 押したままの場合は左 Shift、タップした場合は `kc` |
| `LALT_T(kc)` | `LOPT_T(kc)`, `ALT_T(kc)`, `OPT_T(kc)` | 押したままの場合は左 Alt、タップした場合は `kc` |
| `LGUI_T(kc)` | `LCMD_T(kc)`, `LWIN_T(kc)`, `GUI_T(kc)`, `CMD_T(kc)`, `WIN_T(kc)` | 押したままの場合は左 GUI、タップした場合は `kc` |
| `RCTL_T(kc)` | | 押したままの場合は右 Control、タップした場合は `kc` |
| `RSFT_T(kc)` | | 押したままの場合は右 Shift、タップした場合は `kc` |
| `RALT_T(kc)` | `ROPT_T(kc)`, `ALGR_T(kc)` | 押したままの場合は右 Alt (AltGr) 、タップした場合は `kc` |
| `RGUI_T(kc)` | `RCMD_T(kc)`, `RWIN_T(kc)` | 押したままの場合は右 GUI、タップした場合は `kc` |
| `SGUI_T(kc)` | `SCMD_T(kc)`, `SWIN_T(kc)` | 押したままの場合は左 Shift と GUI、タップした場合は `kc` |
| `LCA_T(kc)` | | 押したままの場合は左 Control と Alt、タップした場合は `kc` |
| `LSA_T(kc)` | | 押したままの場合は左 Shift と Alt、タップした場合は `kc` |
| `RSA_T(kc)` |`SAGR_T(kc)` | 押したままの場合は右 Shift と Alt (AltGr) 、タップした場合は `kc` |
| `RCS_T(kc)` | | 押したままの場合は右 Control と Shift、タップした場合は `kc` |
| `LCAG_T(kc)` | | 押したままの場合は左 Control、Alt、GUI、タップした場合は `kc` |
| `RCAG_T(kc)` | | 押したままの場合は右 Control、Alt、GUI、タップした場合は `kc` |
| `C_S_T(kc)` | | 押したままの場合は左 Control と Shift、タップした場合は `kc` |
| `MEH_T(kc)` | | 押したままの場合は左 Control、Shift、Alt、タップした場合は `kc` |
| `HYPR_T(kc)` | `ALL_T(kc)` | 押したままの場合は左 Control、Shift、Alt、GUI、タップした場合は `kc` - より詳しくは[ここ](https://brettterpstra.com/2012/12/08/a-useful-caps-lock-key/)を見てください |
## RGB ライト :id=rgb-lighting
[RGB ライト](ja/feature_rgblight.md) も見てください。
|キー |エイリアス|説明 |
|-------------------|----------|---------------------------------------------------------------------|
|`RGB_TOG` | |RGB ライトのオン・オフを切り替え |
|`RGB_MODE_FORWARD` |`RGB_MOD` |RGB モードを順送りで変更し、Shift を押していると逆順で変更します。 |
|`RGB_MODE_REVERSE` |`RGB_RMOD`|RGB モードを逆順で変更し、Shift を押していると順送りで変更します。 |
|`RGB_HUI` | |色相 (HUE) を増加させ、Shift を押していると減少させます。 |
|`RGB_HUD` | |色相 (HUE) を減少させ、Shift を押していると増加させます。 |
|`RGB_SAI` | |彩度 (SAT) を増加させ、Shift を押していると減少させます。 |
|`RGB_SAD` | |彩度 (SAT) を減少させ、Shift を押していると増加させます。 |
|`RGB_VAI` | |明度 (VAL/brightness) を増加させ、Shift を押していると減少させます。 |
|`RGB_VAD` | |明度 (VAL/brightness) を減少させ、Shift を押していると増加させます。 |
|`RGB_MODE_PLAIN` |`RGB_M_P `|静止(動き無し) モードに固定します |
|`RGB_MODE_BREATHE` |`RGB_M_B` |明滅アニメーションモード |
|`RGB_MODE_RAINBOW` |`RGB_M_R` |レインボーアニメーションモード |
|`RGB_MODE_SWIRL` |`RGB_M_SW`|渦巻アニメーションモード |
|`RGB_MODE_SNAKE` |`RGB_M_SN`|スネークアニメーションモード |
|`RGB_MODE_KNIGHT` |`RGB_M_K` |「ナイトライダー」アニメーションモード |
|`RGB_MODE_XMAS` |`RGB_M_X` |クリスマスアニメーションモード |
|`RGB_MODE_GRADIENT`|`RGB_M_G` |固定階調アニメーションモード |
|`RGB_MODE_RGBTEST` |`RGB_M_T` |赤、緑、青のテストアニメーションモード |
## RGB マトリックスライト :id=rgb-matrix-lighting
[RGB マトリックスライト](ja/feature_rgb_matrix.md) も見てください。
|キー |エイリアス|説明 |
|-------------------|----------|--------------------------------------------------------------------------------------------------------|
|`RGB_TOG` | |RGB ライトのオン・オフを切り替え |
|`RGB_MODE_FORWARD` |`RGB_MOD` |RGB モードを順送りで変更し、Shift を押していると逆順で変更します。 |
|`RGB_MODE_REVERSE` |`RGB_RMOD`|RGB モードを逆順で変更し、Shift を押していると順送りで変更します。 |
|`RGB_HUI` | |色相 (HUE) を増加させ、Shift を押していると減少させます。 |
|`RGB_HUD` | |色相 (HUE) を減少させ、Shift を押していると増加させます。 |
|`RGB_SAI` | |彩度 (SAT) を増加させ、Shift を押していると減少させます。 |
|`RGB_SAD` | |彩度 (SAT) を減少させ、Shift を押していると増加させます。 |
|`RGB_VAI` | |明度 (VAL/brightness) を増加させ、Shift を押していると減少させます。 |
|`RGB_VAD` | |明度 (VAL/brightness) を減少させ、Shift を押していると増加させます。 |
|`RGB_SPI` | |エフェクトのスピード (EEPROM はまだサポートしていません) を増加させ、Shift を押していると減少させます。 |
|`RGB_SPD` | |エフェクトのスピード (EEPROM はまだサポートしていません) を減少させ、Shift を押していると増加させます。 |
## 感熱式プリンタ :id=thermal-printer
[感熱式プリンタ](ja/feature_thermal_printer.md) も見てください。
|キー |説明 |
|-----------|---------------------------------|
|`PRINT_ON` |ユーザが入力した全ての印刷を開始 |
|`PRINT_OFF`|ユーザが入力した全ての印刷を停止 |
## US ANSI シフト済シンボル :id=us-ansi-shifted-symbols
[US ANSI シフト済シンボル](ja/keycodes_us_ansi_shifted.md) も見てください。
|キー |エイリアス |説明|
|------------------------|-------------------|-----------|
|`KC_TILDE` |`KC_TILD` |`~` |
|`KC_EXCLAIM` |`KC_EXLM` |`!` |
|`KC_AT` | |`@` |
|`KC_HASH` | |`#` |
|`KC_DOLLAR` |`KC_DLR` |`$` |
|`KC_PERCENT` |`KC_PERC` |`%` |
|`KC_CIRCUMFLEX` |`KC_CIRC` |`^` |
|`KC_AMPERSAND` |`KC_AMPR` |`&` |
|`KC_ASTERISK` |`KC_ASTR` |`*` |
|`KC_LEFT_PAREN` |`KC_LPRN` |`(` |
|`KC_RIGHT_PAREN` |`KC_RPRN` |`)` |
|`KC_UNDERSCORE` |`KC_UNDS` |`_` |
|`KC_PLUS` | |`+` |
|`KC_LEFT_CURLY_BRACE` |`KC_LCBR` |`{` |
|`KC_RIGHT_CURLY_BRACE` |`KC_RCBR` |`}` |
|`KC_PIPE` | |`\|` |
|`KC_COLON` |`KC_COLN` |`:` |
|`KC_DOUBLE_QUOTE` |`KC_DQUO`, `KC_DQT`|`"` |
|`KC_LEFT_ANGLE_BRACKET` |`KC_LABK`, `KC_LT` |`<` |
|`KC_RIGHT_ANGLE_BRACKET`|`KC_RABK`, `KC_GT` |`>` |
|`KC_QUESTION` |`KC_QUES` |`?` |
## ワンショットキー :id=one-shot-keys
[ワンショットキー](ja/one_shot_keys.md) も見てください。
|キー |説明 |
|------------|--------------------------------|
|`OSM(mod)` | 次のキーが押されるまで、`mod` を押したままにします |
|`OSL(layer)`| 次のキーが押されるまで、一時的にレイヤーをアクティブにします |
## Space Cadet :id=space-cadet
[Space Cadet](ja/feature_space_cadet.md) も見てください。
|キー |説明 |
|-----------|-------------------------------------------|
|`KC_LCPO` |押したままの場合は左 Control、タップした場合は `(` |
|`KC_RCPC` |押したままの場合は右 Control、タップした場合は `)` |
|`KC_LSPO` |押したままの場合は左 Shift、タップした場合は `(`、 |
|`KC_RSPC` |押したままの場合は右 Shift、タップした場合は `)`、 |
|`KC_LAPO` |押したままの場合は左 Alt、タップした場合は `(`、 |
|`KC_RAPC` |押したままの場合は右 Alt、タップした場合は `)`、 |
|`KC_SFTENT`|押したままの場合は右 Shift、タップした場合は Enter |
## スワップハンド :id=swap-hands
[スワップハンド](ja/feature_swap_hands.md) も見てください。
|キー |説明 |
|-------------|----------------------------------------------------------------------------------|
| `SH_T(key)` | タップで `key` を送信する。押している時に一時的に入れ替え。 |
| `SH_ON` | 入れ替えをオンにして、そのままにする。 |
| `SH_OFF` | 入れ替えをオフにして、そのままにする。既知の状態に戻るのに適しています。 |
| `SH_MON` | 押すとスワップハンドし、放すと通常に戻る (一時的)。 |
| `SH_MOFF` | 一時的に入れ替えをオフする。 |
| `SH_TG` | キーを押すたびにオンとオフを切り替える。 |
| `SH_TT` | タップで切り替える。押している時に一時的に切り替える。 |
| `SH_OS` | ワンショットスワップハンド: 押している時あるいは次のキーを押すまで切り替える。 |
## ユニコードサポート :id=unicode-support
[ユニコードサポート](ja/feature_unicode.md) も見てください。
|キー |エイリアス |説明 |
|----------------------|-----------|----------------------------------------------------------------------|
|`UC(c)` | |コードポイント `c` のユニコードを送信 |
|`X(i)` | |`unicode_map` のインデックス `i` のユニコードを送信 |
|`XP(i, j)` | |Shift/Capsが有効なら、インデックス `i` または `j` のユニコードを送信 |
|`UNICODE_MODE_FORWARD`|`UC_MOD` |ユニコード入力方式を順送りで選択 |
|`UNICODE_MODE_REVERSE`|`UC_RMOD` |ユニコード入力方式を逆順で選択 |
|`UNICODE_MODE_OSX` |`UC_M_OS` |ユニコード入力方式を macOS 方式に切り替え |
|`UNICODE_MODE_LNX` |`UC_M_LN` |ユニコード入力方式を Linux 方式に切り替え |
|`UNICODE_MODE_WIN` |`UC_M_WI` |ユニコード入力方式を Windows 方式に切り替え |
|`UNICODE_MODE_BSD` |`UC_M_BS` |ユニコード入力方式を BSD 方式に切り替え (実装されていません) |
|`UNICODE_MODE_WINC` |`UC_M_WC` |ユニコード入力方式を WinCompose を使う Windows 方式に切り替え |

View File

@@ -1,8 +1,8 @@
# モッドタップ
<!---
original document: 0.9.34:docs/mod_tap.md
git diff 0.9.34 HEAD -- docs/mod_tap.md | cat
original document: 0.10.36:docs/mod_tap.md
git diff 0.10.36 HEAD -- docs/mod_tap.md | cat
-->
モッドタップキー `MT(mod, kc)` は、押したままの時にモディファイアのように機能し、タップされた時に通常のキーのように振舞います。別の言い方をすると、タップした時に Escape を送信しますが、押したままの時に Control あるいは Shift キーとして機能するキーを持つことができます。
@@ -32,23 +32,26 @@ MT(MOD_LCTL | MOD_LSFT, KC_ESC)
便利なように、QMK はキーマップで一般的な組み合わせをよりコンパクトにするためのモッドタップショートカットを含んでいます:
| キー | エイリアス | 説明 |
|--------------|-----------------------------|-------------------------------------------------------------|
| `LCTL_T(kc)` | `CTL_T(kc)` | 押したままの場合は左 Control、タップした場合は `kc` |
| `LSFT_T(kc)` | `SFT_T(kc)` | 押したままの場合は左 Shift、タップした場合は `kc` |
| `LALT_T(kc)` | `LOPT_T(kc)`, `ALT_T(kc)`, `OPT_T(kc)` | 押したままの場合は左 Alt、タップした場合は `kc` |
| `LGUI_T(kc)` | `LCMD_T(kc)`, `LWIN_T(kc)`, `GUI_T(kc)`, `CMD_T(kc)`, `WIN_T(kc)` | 押したままの場合は左 GUI、タップした場合は `kc` |
| `RCTL_T(kc)` | | 押したままの場合は右 Control、タップした場合は `kc` |
| `RSFT_T(kc)` | | 押したままの場合は右 Shift、タップした場合は `kc` |
| `RALT_T(kc)` | `ROPT_T(kc)`, `ALGR_T(kc)` | 押したままの場合は右 Alt、タップした場合は `kc` |
| `RGUI_T(kc)` | `RCMD_T(kc)`, `RWIN_T(kc)` | 押したままの場合は右 GUI、タップした場合は `kc` |
| `SGUI_T(kc)` | `SCMD_T(kc)`, `SWIN_T(kc)` | 押したままの場合は左 Shift と左 GUI、タップした場合は `kc` |
| `LCA_T(kc)` | | 押したままの場合は左 Control と左 Alt、タップした場合は `kc` |
| `LCAG_T(kc)` | | 押したままの場合は左 Control、左 Alt と左 GUI、タップした場合は `kc` |
| `RCAG_T(kc)` | | 押したままの場合は右 Control、右 Alt と右 GUI、タップした場合は `kc` |
| `C_S_T(kc)` | | 押したままの場合は Control と Shift、タップした場合は `kc` |
| `MEH_T(kc)` | | 押したままの場合は左 Control、左 Shift と左 Alt、タップした場合は `kc` |
| `HYPR_T(kc)` | `ALL_T(kc)` | 押したままの場合は Control、左 Shift、左 Alt と GUI、タップした場合は `kc` - より詳しくは[ここ](https://brettterpstra.com/2012/12/08/a-useful-caps-lock-key/)を見てください |
| キー | エイリアス | 説明 |
| ------------ | ----------------------------------------------------------------- | ---------------------------------------------------------------------- |
| `LCTL_T(kc)` | `CTL_T(kc)` | 押したままの場合は左 Control、タップした場合は `kc` |
| `LSFT_T(kc)` | `SFT_T(kc)` | 押したままの場合は左 Shift、タップした場合は `kc` |
| `LALT_T(kc)` | `LOPT_T(kc)`, `ALT_T(kc)`, `OPT_T(kc)` | 押したままの場合は左 Alt、タップした場合は `kc` |
| `LGUI_T(kc)` | `LCMD_T(kc)`, `LWIN_T(kc)`, `GUI_T(kc)`, `CMD_T(kc)`, `WIN_T(kc)` | 押したままの場合は左 GUI、タップした場合は `kc` |
| `RCTL_T(kc)` | | 押したままの場合は右 Control、タップした場合は `kc` |
| `RSFT_T(kc)` | | 押したままの場合は右 Shift、タップした場合は `kc` |
| `RALT_T(kc)` | `ROPT_T(kc)`, `ALGR_T(kc)` | 押したままの場合は右 Alt、タップした場合は `kc` |
| `RGUI_T(kc)` | `RCMD_T(kc)`, `RWIN_T(kc)` | 押したままの場合は右 GUI、タップした場合は `kc` |
| `SGUI_T(kc)` | `SCMD_T(kc)`, `SWIN_T(kc)` | 押したままの場合は左 Shift と左 GUI、タップした場合は `kc` |
| `LCA_T(kc)` | | 押したままの場合は左 Control と左 Alt、タップした場合は `kc` |
| `LSA_T(kc)` | | 押したままの場合は左 Shift と Alt、タップした場合は `kc` |
| `RSA_T(kc)` | `SAGR_T(kc)` | 押したままの場合は右 Shift と Alt (AltGr)、タップした場合は `kc` |
| `RCS_T(kc)` | | 押したままの場合は Control と Shift、タップした場合は `kc` |
| `LCAG_T(kc)` | | 押したままの場合は左 Control、左 Alt と左 GUI、タップした場合は `kc` |
| `RCAG_T(kc)` | | 押したままの場合は Control、 Alt と GUI、タップした場合は `kc` |
| `C_S_T(kc)` | | 押したままの場合は左 Control と左 Shift、タップした場合は `kc` |
| `MEH_T(kc)` | | 押したままの場合は左 Control、左 Shift と左 Alt、タップした場合は `kc` |
| `HYPR_T(kc)` | `ALL_T(kc)` | 押したままの場合は左 Control、左 Shift、左 Alt と左 GUI、タップした場合は `kc` - より詳しくは[ここ](https://brettterpstra.com/2012/12/08/a-useful-caps-lock-key/)を見てください |
## 注意事項
@@ -57,3 +60,7 @@ MT(MOD_LCTL | MOD_LSFT, KC_ESC)
さらに、Windows でリモートデスクトップ接続を使う場合に、問題が発生する場合があります。これらのコードはシフトを非常に高速に送信するため、リモートデスクトップはコードを見逃すかもしれません。
これを修正するには、リモートデスクトップ接続を開き、「オプションの表示」を開き、「ローカル リソース」タブを開きます。キーボードセクションで、ドロップダウンを「このコンピューター」に変更します。これにより問題が修正され、キャラクタが正しく動作するようになります。
## 他のリソース
モッドタップの動作を調整する追加フラグについては、[タップホールド設定オプション](ja/tap_hold.md)を参照してください。

View File

@@ -2,13 +2,13 @@
<!---
grep --no-filename "^[ ]*git diff" docs/ja/*.md | sh
original document: 0.9.0:docs/newbs_building_firmware_configurator.md
git diff 0.9.0 HEAD -- docs/newbs_building_firmware_configurator.md | cat
original document: 0.12.45:docs/newbs_building_firmware_configurator.md
git diff 0.12.45 HEAD -- docs/newbs_building_firmware_configurator.md | cat
-->
[![QMK Configurator Screenshot](https://i.imgur.com/anw9cOL.png)](https://config.qmk.fm/)
[QMK Configurator](https://config.qmk.fm) は、QMKファームウェアの hex ファイルを生成するオンライングラフィカルユーザーインターフェイスです。
[QMK Configurator](https://config.qmk.fm) は、QMKファームウェアの `.hex``.bin` ファイルを生成するオンライングラフィカルユーザーインターフェイスです。
[ビデオチュートリアル](https://www.youtube.com/watch?v=-imgglzDMdY) を見てください。
多くの人は、それが自分のキーボードのプログラミングを始めるのに十分な情報であることに気づくでしょう。

View File

@@ -1,8 +1,8 @@
# ワンショットキー
<!---
original document: 0.9.34:docs/one_shot_keys.md
git diff 0.9.34 HEAD -- docs/one_shot_keys.md | cat
original document: 0.12.41:docs/one_shot_keys.md
git diff 0.12.41 HEAD -- docs/one_shot_keys.md | cat
-->
ワンショットキーは次のキーが押されるまでアクティブのままになり、そのあと放されるキーです。これにより一度に1つ以上のキーを押すことなく、キーボードの組み合わせを入力することができます。これらのキーは通常「スティッキーキー」あるいは「デッドキー」と呼ばれます。
@@ -27,7 +27,7 @@
ワンショットレイヤーについては、キーを押した時に `set_oneshot_layer(LAYER, ONESHOT_START)` を呼び出し、キーを放した時に `clear_oneshot_layer_state(ONESHOT_OTHER_KEY_PRESSED)` を呼び出す必要があります。ワンショットをキャンセルする場合は、`reset_oneshot_layer()` を呼び出してください。
ワンショットモッドについては、設定するためには `set_oneshot_mods(MOD)` を呼び出し、キャンセルするためには `clear_oneshot_mods()` を呼び出す必要があります。
ワンショットモッドについては、設定するためには `set_oneshot_mods(MOD_BIT(KC_*))` を呼び出し、キャンセルするためには `clear_oneshot_mods()` を呼び出す必要があります。
!> リモートデスクトップ接続で OSM 変換に問題がある場合は、設定を開いて「ローカル リソース」タブに移動し、キーボードセクションでドロップダウンを「このコンピューター」に変更することで修正することができます。これにより問題が修正され、OSM がリモートデスクトップ上で適切に動作するようになります。

View File

@@ -1,8 +1,8 @@
# キーボードをより良くするための便利なコア関数のリスト
<!---
original document: 0.10.33:docs/ref_functions.md
git diff 0.10.33 HEAD -- docs/ref_functions.md | cat
original document: 0.12.41:docs/ref_functions.md
git diff 0.12.41 HEAD -- docs/ref_functions.md | cat
-->
QMK には、信じられないほど便利な、またはあなたが望んでいた機能を少し追加する、隠された関数がたくさんあります。特定の機能に固有の関数はそれぞれの機能のページにあるため、ここには含まれていません。
@@ -98,7 +98,7 @@ layer_state_t layer_state_set_user(layer_state_t state) {
## EEPROM (永続ストレージ)の消去
オーディオ、RGB アンダーグロー、バックライト、キーの動作に問題がある場合は、EEPROM (永続的な設定のストレージ)をリセットすることができます。ブートマジックはこれを行う方法の1つですが、有効になっていない場合はカスタムマクロを使って行うことができます。
オーディオ、RGB アンダーグロー、バックライト、キーの動作に問題がある場合は、EEPROM (永続的な設定のストレージ)をリセットすることができます。EEPROM を強制的にリセットするには、[`EEP_RST` キーコード](ja/quantum_keycodes.md)あるいは[ブートマジック](ja/feature_bootmagic.md)機能を使います。それらのいずれも選択肢にない場合はカスタムマクロを使って行うことができます。
EEPROM を消去するには、関数またはマクロから `eeconfig_init()` を実行し、ほとんどの設定をデフォルトにリセットします。

View File

@@ -147,7 +147,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* [`bool process_haptic(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/2cee371bf125a6ec541dd7c5a809573facc7c456/drivers/haptic/haptic.c#L216)
* [`bool process_record_kb(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/keyboards/clueboard/card/card.c#L20)
* [`bool process_record_user(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/keyboards/clueboard/card/keymaps/default/keymap.c#L58)
* [`bool process_rgb_matrix(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/quantum/rgb_matrix.c#L139)
* [`bool process_midi(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/quantum/process_keycode/process_midi.c#L81)
* [`bool process_audio(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/quantum/process_keycode/process_audio.c#L19)
* [`bool process_steno(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/quantum/process_keycode/process_steno.c#L160)

View File

@@ -516,6 +516,9 @@ See also: [One Shot Keys](one_shot_keys.md)
|------------|----------------------------------|
|`OSM(mod)` |Hold `mod` for one keypress |
|`OSL(layer)`|Switch to `layer` for one keypress|
|`OS_ON` |Turns One Shot keys on |
|`OS_OFF` |Turns One Shot keys off |
|`OS_TOGG` |Toggles One Shot keys status |
## Space Cadet :id=space-cadet

View File

@@ -50,11 +50,13 @@ For convenience, QMK includes some Mod-Tap shortcuts to make common combinations
## Caveats
Unfortunately, these keycodes cannot be used in Mod-Taps or Layer-Taps, since any modifiers specified in the keycode are ignored.
Currently, the `kc` argument of `MT()` is limited to the [Basic Keycode set](keycodes_basic.md), meaning you can't use keycodes like `LCTL()`, `KC_TILD`, or anything greater than `0xFF`. This is because QMK uses 16-bit keycodes, of which 3 bits are used for the function identifier, 1 bit for selecting right or left mods, and 4 bits to tell which mods are used, leaving only 8 bits for the keycode. Additionally, if at least one right-handed modifier is specified in a Mod-Tap, it will cause all modifiers specified to become right-handed, so it is not possible to mix and match the two - for example, Left Control and Right Shift would become Right Control and Right Shift.
Additionally, you may run into issues when using Remote Desktop Connection on Windows. Because these codes send shift very fast, Remote Desktop may miss the codes.
Expanding this would be complicated, at best. Moving to a 32-bit keycode would solve a lot of this, but would double the amount of space that the keymap matrix uses. And it could potentially cause issues, too. If you need to apply modifiers to your tapped keycode, [Tap Dance](feature_tap_dance.md#example-5-using-tap-dance-for-advanced-mod-tap-and-layer-tap-keys) can be used to accomplish this.
To fix this, open Remote Desktop Connection, click on "Show Options", open the the "Local Resources" tab. In the keyboard section, change the drop down to "On this Computer". This will fix the issue, and allow the characters to work correctly.
You may also run into issues when using Remote Desktop Connection on Windows. Because these keycodes send key events faster than a human, Remote Desktop could miss them.
To fix this, open Remote Desktop Connection, click on "Show Options", open the the "Local Resources" tab, and in the keyboard section, change the drop down to "On this Computer". This will fix the issue, and allow the characters to work correctly.
It can also be mitigated by increasing [`TAP_CODE_DELAY`](config_options.md#behaviors-that-can-be-configured).
## Other Resources

View File

@@ -65,7 +65,7 @@ For example, the `planck/rev5` with a `default` keymap will have this filename:
planck_rev5_default.hex
```
Once you have located your firmware file drag it into the "Local file" box in QMK Toolbox, or click "Open" and navigate to where your firmware file is stored.
Once you have located your firmware file, drag it into the "Local file" box in QMK Toolbox, or click "Open" and navigate to where your firmware file is stored.
### Flash Your Keyboard

View File

@@ -70,6 +70,8 @@ Install the QMK CLI by running:
### ** Linux/WSL **
?> **Note for WSL users**: By default, the installation process will clone the QMK repository into your WSL home directory, but if you have cloned manually, ensure that it is located inside the WSL instance instead of the Windows filesystem (ie. not in `/mnt`), as accessing it is currently [extremely slow](https://github.com/microsoft/WSL/issues/4197).
#### Prerequisites
You will need to install Git and Python. It's very likely that you already have both, but if not, one of the following commands should install them:
@@ -102,19 +104,13 @@ You can also try the `qmk-git` package from AUR:
### ** FreeBSD **
#### Prerequisites
You will need to install Git and Python. It's possible that you already have both, but if not, run the following commands to install them:
pkg install git python3
Make sure that `$HOME/.local/bin` is added to your `$PATH` so that locally installed Python packages are available.
#### Installation
Install the QMK CLI by running:
Install the FreeBSD package for QMK CLI by running:
python3 -m pip install --user qmk
pkg install -g "py*-qmk"
NOTE: remember to follow the instructions printed at the end of installation (use `pkg info -Dg "py*-qmk"` to show them again).
<!-- tabs:end -->
@@ -160,17 +156,11 @@ After installing QMK you can set it up with this command:
In most situations you will want to answer `y` to all of the prompts.
?>**Note on FreeBSD**:
It is suggested to run `qmk setup` as a non-`root` user to start with, but this will likely identify packages that need to be installed to your
base system using `pkg`. However the installation will probably fail when run as an unprivileged user.
To manually install the base dependencies, run `./util/qmk_install.sh` either as `root`, or with `sudo`.
Once that completes, re-run `qmk setup` to complete the setup and checks.
<!-- tabs:end -->
?> The qmk home folder can be specified at setup with `qmk setup -H <path>`, and modified afterwards using the [cli configuration](cli_configuration.md?id=single-key-example) and the variable `user.qmk_home`. For all available options run `qmk setup --help`.
?> If you already know [how to use GitHub](getting_started_github.md), we recommend that you create your own fork and use `qmk setup <github_username>/qmk_firmware` to clone your personal fork. If you don't know what that means you can safely ignore this message.
?> If you already know how to use GitHub, [we recommend that you follow these instructions](getting_started_github.md) and use `qmk setup <github_username>/qmk_firmware` to clone your personal fork. If you don't know what that means you can safely ignore this message.
## 4. Test Your Build Environment

View File

@@ -17,6 +17,9 @@ You can control the behavior of one shot keys by defining these in `config.h`:
* `OSM(mod)` - Momentarily hold down *mod*. You must use the `MOD_*` keycodes as shown in [Mod Tap](mod_tap.md), not the `KC_*` codes.
* `OSL(layer)` - momentary switch to *layer*.
* `OS_ON` - Turns on One Shot keys.
* `OS_OFF` - Turns off One Shot keys. OSM act as regular mod keys, OSL act like `MO`.
* `ON_TOGG` - Toggles the one shot key status.
Sometimes, you want to activate a one-shot key as part of a macro or tap dance routine.

View File

@@ -50,7 +50,7 @@ This is the most important plugin as it will allow Eclipse to _understand_ AVR C
### [ANSI Escape in Console](https://marketplace.eclipse.org/content/ansi-escape-console)
This plugin is necessary to properly display the colored build output generated by the QMK makefile.
1. Open <kbd><kbd>Help</kbd> > <kbd>Eclipse Marketplace…</kbd></kbd>
1. Open <kbd>Help</kbd> > <kbd>Eclipse Marketplace…</kbd>
2. Search for _ANSI Escape in Console_
3. Click the <samp>Install</samp> button of the plugin
4. Follow the instructions and agree again with the security warning for unsigned content.
@@ -59,7 +59,7 @@ Once both plugins are installed, restart Eclipse as prompted.
# Configure Eclipse for QMK
## Importing the Project
1. Click <kbd><kbd>File</kbd> > <kbd>New</kbd> > <kbd>Makefile Project with Existing Code</kbd></kbd>
1. Click <kbd>File</kbd> > <kbd>New</kbd> > <kbd>Makefile Project with Existing Code</kbd>
2. On the next screen:
* Select the directory where you cloned the repository as _Existing Code Location_;
* (Optional) Give a different name to the project¹, e.g. _QMK_ or _Quantum_;
@@ -73,16 +73,18 @@ Once both plugins are installed, restart Eclipse as prompted.
¹ There might be issues for importing the project with a custom name. If it does not work properly, try leaving the default project name (i.e. the name of the directory, probably `qmk_firmware`).
## Build Your Keyboard
We will now configure a make target that cleans the project and builds the keymap of your choice.
1. On the right side of the screen, select the <kbd>Make Target</kbd> tab
2. Expand the folder structure to the keyboard of your choice, e.g. `qmk_firmware/keyboards/ergodox`
3. Right-click on the keyboard folder and select <kbd>New…</kbd> (or select the folder and click the <kbd>New Make Target</kbd> icon above the tree)
4. Choose a name for your build target, e.g. _clean \<your keymap\>_
5. Make Target: this is the arguments that you give to `make` when building from the command line. If your target name does not match these arguments, uncheck <kbd>Same as target name</kbd> and input the correct arguments, e.g. `clean <your keymap>`
6. Leave the other options checked and click <kbd>OK</kbd>. Your make target will now appear under the selected keyboard.
7. (Optional) Toggle the <kbd>Hide Empty Folders</kbd> icon button above the targets tree to only show your build target.
8. Double-click the build target you created to trigger a build.
9. Select the <kbd>Console</kbd> view at the bottom to view the running build.
We will now change the default make target of the the project from `all` to the
specific keyboard and keymap combination we are working on,
e.g. `kinesis/kint36:stapelberg`. This way, project-wide actions like cleaning
and building the project will complete quickly, instead of taking a long time or
outright locking up Eclipse.
1. Focus an editor tab within the project
2. Open the `Project` > `Properties` window, then select the `C/C++ Build` list
entry and switch to the `Behavior` tab.
3. Change the default `Make build target` text fields for all enabled builds
from `all` to e.g. `kinesis/kint41:stapelberg`.
4. Verify your setup works by selecting `Project` > `Clean...`.
[1]: https://en.wikipedia.org/wiki/Eclipse_(software)

View File

@@ -68,6 +68,7 @@ https://github.com/qmk/qmk_firmware/pulls?q=is%3Apr+is%3Aclosed+label%3Akeyboard
- bare minimum required code for a board to boot into QMK should be present
- initialisation code for the matrix and critical devices
- mirroring existing functionality of a commercial board (like custom keycodes and special animations etc.) should be handled through non-`default` keymaps
- VIAL-related files or changes will not be accepted, as they are not used by QMK firmware (no VIAL-specific core code has been submitted or merged)
- `keyboard.c`
- empty `xxxx_xxxx_kb()` or other weak-defined default implemented functions removed
- commented-out functions removed too
@@ -94,6 +95,8 @@ https://github.com/qmk/qmk_firmware/pulls?q=is%3Apr+is%3Aclosed+label%3Akeyboard
- standard layouts preferred in these keymaps, if possible
- submitters can have a personal (or bells-and-whistles) keymap showcasing capabilities in the same PR but it shouldn't be embedded in the 'default' keymap
- submitters can also have a "manufacturer-matching" keymap that mirrors existing functionality of the commercial product, if porting an existing board
- Do not include VIA json files in the PR. These do not belong in the QMK repository as they are not used by QMK firmware -- they belong in the [VIA Keyboard Repo](https://github.com/the-via/keyboards)
Also, specific to ChibiOS:
- **strong** preference to using existing ChibiOS board definitions.
@@ -127,3 +130,9 @@ There are instructions on how to keep your fork updated here:
Thanks for contributing!
```
## Review Process
In general, we want to see two (or more) approvals that are meaningful (e.g. that have inspected code) before a PR will be considered for merge. These reviews are not limited to collaborators -- any community member willing to put in the time is welcomed (and encouraged). The only difference is that your checkmark won't be green, and that's fine!
Additionally, PR reviews are something that is done in our free time. We are not paid nor compensated for the time we spend reviewing, as it is a labor of love. As such, this means that it can take time for us to get to your Pull Request. Things like family, or life can get in the way of us getting to PRs, and burnout is a serious concern. The QMK firmware repository averages 200 PRs opened and 200 PRs merged every month, so please have patience.

View File

@@ -93,7 +93,7 @@ And to do so, add `reset_keyboard()` to your function or macro, and this will re
## Wiping the EEPROM (Persistent Storage)
If you're having issues with Audio, RGB Underglow, backlighting or keys acting weird, then you can reset the EEPROM (persistent setting storage). Bootmagic is one way to do this, but if that isn't enabled, then you can use a custom macro to do so.
If you're having issues with Audio, RGB Underglow, backlighting or keys acting weird, then you can reset the EEPROM (persistent setting storage). To force an EEPROM reset, use the [`EEP_RST` keycode](quantum_keycodes.md) or [Bootmagic](feature_bootmagic.md) functionality. If neither of those are an option, then you can use a custom macro to do so.
To wipe the EEPROM, run `eeconfig_init()` from your function or macro to reset most of the settings to default.

View File

@@ -3,16 +3,18 @@ This driver powers the [Split Keyboard](feature_split_keyboard.md) feature.
?> Serial in this context should be read as **sending information one bit at a time**, rather than implementing UART/USART/RS485/RS232 standards.
All drivers in this category have the following characteristics:
* Provides data and signaling over a single conductor
* Limited to single master, single slave
Drivers in this category have the following characteristics:
* bit bang and USART Half-duplex provide data and signaling over a single conductor
* USART Full-duplex provide data and signaling over two conductors
* They are all limited to single master and single slave communication scheme
## Supported Driver Types
| | AVR | ARM |
|-------------------|--------------------|--------------------|
| ----------------- | ------------------ | ------------------ |
| bit bang | :heavy_check_mark: | :heavy_check_mark: |
| USART Half-duplex | | :heavy_check_mark: |
| USART Full-duplex | | :heavy_check_mark: |
## Driver configuration
@@ -42,7 +44,7 @@ Configure the driver via your config.h:
Along with the generic options above, you must also turn on the `PAL_USE_CALLBACKS` feature in your halconf.h.
### USART Half-duplex
Targeting STM32 boards where communication is offloaded to a USART hardware device. The advantage is that this provides fast and accurate timings. `SOFT_SERIAL_PIN` for this driver is the configured USART TX pin. **The TX pin must have appropriate pull-up resistors**. To configure it, add this to your rules.mk:
Targeting STM32 boards where communication is offloaded to a USART hardware device. The advantage over bitbang is that this provides fast and accurate timings. `SERIAL_PIN_TX` for this driver is the configured USART TX pin. As this Pin is configured in open-drain mode an **external pull-up resistor is needed to keep the line high** (resistor values of 1.5k to 8.2k are known to work). To configure it, add this to your rules.mk:
```make
SERIAL_DRIVER = usart
@@ -50,7 +52,8 @@ SERIAL_DRIVER = usart
Configure the hardware via your config.h:
```c
#define SOFT_SERIAL_PIN B6 // USART TX pin
#define SOFT_SERIAL_PIN B6 // USART TX pin
//#define USART1_REMAP // Remap USART TX and RX pins on STM32F103 MCUs, see table below.
#define SELECT_SOFT_SERIAL_SPEED 1 // or 0, 2, 3, 4, 5
// 0: about 460800 baud
// 1: about 230400 baud (default)
@@ -58,7 +61,7 @@ Configure the hardware via your config.h:
// 3: about 57600 baud
// 4: about 38400 baud
// 5: about 19200 baud
#define SERIAL_USART_DRIVER SD1 // USART driver of TX pin. default: SD1
#define SERIAL_USART_DRIVER SD1 // USART driver of TX pin. default: SD1
#define SERIAL_USART_TX_PAL_MODE 7 // Pin "alternate function", see the respective datasheet for the appropriate values for your MCU. default: 7
#define SERIAL_USART_TIMEOUT 100 // USART driver timeout. default 100
```
@@ -68,3 +71,140 @@ You must also enable the ChibiOS `SERIAL` feature:
* In your board's mcuconf.h: `#define STM32_SERIAL_USE_USARTn TRUE` (where 'n' matches the peripheral number of your selected USART on the MCU)
Do note that the configuration required is for the `SERIAL` peripheral, not the `UART` peripheral.
### USART Full-duplex
Targeting STM32 boards where communication is offloaded to a USART hardware device. The advantage over bitbang is that this provides fast and accurate timings. USART Full-Duplex requires two conductors **without** pull-up resistors instead of one conductor with a pull-up resistor unlike the Half-duplex driver, but it is more efficent as it uses DMA transfers, which can result in even faster transmission speeds.
#### Pin configuration
`SERIAL_USART_TX_PIN` is the USART `TX` pin, `SERIAL_USART_RX_PIN` is the USART `RX` pin. No external pull-up resistors are needed as the `TX` pin operates in push-pull mode. To use this driver the usart peripherals `TX` and `RX` pins must be configured with the correct Alternate-functions. If you are using a Proton-C everything is already setup, same is true for STM32F103 MCUs. For MCUs which are using a modern flexible GPIO configuration you have to specify these by setting `SERIAL_USART_TX_PAL_MODE` and `SERIAL_USART_RX_PAL_MODE`. Refeer to the corresponding datasheets of your MCU or find those settings in the table below.
#### Connecting the halves and Pin Swap
Please note that `TX` of the master half has to be connected with the `RX` pin of the slave half and `RX` of the master half has to be connected with the `TX` pin of the slave half! Usually this pin swap has to be done outside of the MCU e.g. with cables or on the pcb. Some MCUs like the STM32F303 used on the Proton-C allow this pin swap directly inside the MCU, this feature can be enabled using `#define SERIAL_USART_PIN_SWAP` in your config.h.
#### Setup
To use the driver, add this to your rules.mk:
```make
SERIAL_DRIVER = usart_duplex
```
Next configure the hardware via your config.h:
```c
#define SERIAL_USART_TX_PIN B6 // USART TX pin
#define SERIAL_USART_RX_PIN B7 // USART RX pin
//#define USART1_REMAP // Remap USART TX and RX pins on STM32F103 MCUs, see table below.
//#define SERIAL_USART_PIN_SWAP // Swap TX and RX pins if keyboard is master halve.
// Check if this feature is necessary with your keyboard design and available on the mcu.
#define SELECT_SOFT_SERIAL_SPEED 1 // or 0, 2, 3, 4, 5
// 0: 460800 baud
// 1: 230400 baud (default)
// 2: 115200 baud
// 3: 57600 baud
// 4: 38400 baud
// 5: 19200 baud
#define SERIAL_USART_DRIVER UARTD1 // USART driver of TX and RX pin. default: UARTD1
#define SERIAL_USART_TX_PAL_MODE 7 // Pin "alternate function", see the respective datasheet for the appropriate values for your MCU. default: 7
#define SERIAL_USART_RX_PAL_MODE 7 // Pin "alternate function", see the respective datasheet for the appropriate values for your MCU. default: 7
#define SERIAL_USART_TIMEOUT 100 // USART driver timeout. default 100
```
You must also enable the ChibiOS `UART` with blocking api feature:
* In your board's halconf.h: `#define HAL_USE_UART TRUE` and `#define UART_USE_WAIT TRUE`
* In your board's mcuconf.h: `#define STM32_UART_USE_USARTn TRUE` (where 'n' matches the peripheral number of your selected USART on the MCU)
Do note that the configuration required is for the `UART` peripheral, not the `SERIAL` peripheral.
#### Pins for USART Peripherals with Alternate Functions for selected STM32 MCUs
##### STM32F303 / Proton-C [Datasheet](https://www.st.com/resource/en/datasheet/stm32f303cc.pdf)
Pin Swap available: :heavy_check_mark:
| Pin | Function | Mode |
| ---------- | -------- | ---- |
| **USART1** | | |
| PA9 | TX | AF7 |
| PA10 | RX | AF7 |
| PB6 | TX | AF7 |
| PB7 | RX | AF7 |
| PC4 | TX | AF7 |
| PC5 | RX | AF7 |
| PE0 | TX | AF7 |
| PE1 | RX | AF7 |
| **USART2** | | |
| PA2 | TX | AF7 |
| PA3 | RX | AF7 |
| PA14 | TX | AF7 |
| PA15 | RX | AF7 |
| PB3 | TX | AF7 |
| PB4 | RX | AF7 |
| PD5 | TX | AF7 |
| PD6 | RX | AF7 |
| **USART3** | | |
| PB10 | TX | AF7 |
| PB11 | RX | AF7 |
| PC10 | TX | AF7 |
| PC11 | RX | AF7 |
| PD8 | TX | AF7 |
| PD9 | RX | AF7 |
##### STM32F072 [Datasheet](https://www.st.com/resource/en/datasheet/stm32f072c8.pdf)
Pin Swap available: :heavy_check_mark:
| Pin | Function | Mode |
| ------ | -------- | ---- |
| USART1 | | |
| PA9 | TX | AF1 |
| PA10 | RX | AF1 |
| PB6 | TX | AF0 |
| PB7 | RX | AF0 |
| USART2 | | |
| PA2 | TX | AF1 |
| PA3 | RX | AF1 |
| PA14 | TX | AF1 |
| PA15 | RX | AF1 |
| USART3 | | |
| PB10 | TX | AF4 |
| PB11 | RX | AF4 |
| PC4 | TX | AF1 |
| PC5 | RX | AF1 |
| PC10 | TX | AF1 |
| PC11 | RX | AF1 |
| PD8 | TX | AF0 |
| PD9 | RX | AF0 |
| USART4 | | |
| PA0 | TX | AF4 |
| PA1 | RX | AF4 |
##### STM32F103 Medium Density (C8-CB) [Datasheet](https://www.st.com/resource/en/datasheet/stm32f103c8.pdf)
Pin Swap available: N/A
TX Pin is always Alternate Function Push-Pull, RX Pin is always regular input pin for any USART peripheral. **For STM32F103 no additional Alternate Function configuration is necessary. QMK is already configured.**
Pin remapping:
The pins of USART Peripherals use default Pins that can be remapped to use other pins using the AFIO registers. Default pins are marked **bold**. Add the appropriate defines to your config.h file.
| Pin | Function | Mode | USART_REMAP |
| ---------- | -------- | ---- | ------------------- |
| **USART1** | | | |
| **PA9** | TX | AFPP | |
| **PA10** | RX | IN | |
| PB6 | TX | AFPP | USART1_REMAP |
| PB7 | RX | IN | USART1_REMAP |
| **USART2** | | | |
| **PA2** | TX | AFPP | |
| **PA3** | RX | IN | |
| PD5 | TX | AFPP | USART2_REMAP |
| PD6 | RX | IN | USART2_REMAP |
| **USART3** | | | |
| **PB10** | TX | AFPP | |
| **PB11** | RX | IN | |
| PC10 | TX | AFPP | USART3_PARTIALREMAP |
| PC11 | RX | IN | USART3_PARTIALREMAP |
| PD8 | TX | AFPP | USART3_FULLREMAP |
| PD9 | RX | IN | USART3_FULLREMAP |

View File

@@ -8,7 +8,7 @@ No special setup is required - just connect the `SS`, `SCK`, `MOSI` and `MISO` p
|MCU |`SS`|`SCK`|`MOSI`|`MISO`|
|-----------------|----|-----|------|------|
|ATMega16/32U2/4 |`B0`|`B1` |`B2` |`B3` |
|ATmega16/32U2/4 |`B0`|`B1` |`B2` |`B3` |
|AT90USB64/128/162|`B0`|`B1` |`B2` |`B3` |
|ATmega32A |`B4`|`B7` |`B5` |`B6` |
|ATmega328/P |`B2`|`B5` |`B3` |`B4` |
@@ -20,22 +20,34 @@ You may use more than one slave select pin, not just the `SS` pin. This is usefu
You'll need to determine which pins can be used for SPI -- as an example, STM32 parts generally have multiple SPI peripherals, labeled SPI1, SPI2, SPI3 etc.
To enable SPI, modify your board's `halconf.h` to enable SPI - both `HAL_USE_SPI` and `SPI_USE_WAIT` should be `TRUE`, and `SPI_SELECT_MODE` should be `SPI_SELECT_MODE_PAD`.
Then, modify your board's `mcuconf.h` to enable the SPI peripheral you've chosen -- in the case of using SPI2, modify `STM32_SPI_USE_SPI2` to be `TRUE`.
To enable SPI, modify your board's `halconf.h` to enable SPI:
As per the AVR configuration, you may select any other standard GPIO as a slave select pin, and can be supplied to `spi_start()`.
```c
#define HAL_USE_SPI TRUE
#define SPI_USE_WAIT TRUE
#define SPI_SELECT_MODE SPI_SELECT_MODE_PAD
```
Then, modify your board's `mcuconf.h` to enable the peripheral you've chosen, for example:
```c
#undef STM32_SPI_USE_SPI2
#define STM32_SPI_USE_SPI2 TRUE
```
Configuration-wise, you'll need to set up the peripheral as per your MCU's datasheet -- the defaults match the pins for a Proton-C, i.e. STM32F303.
`config.h` override | Description | Default Value
----------------------------|---------------------------------------------------------------|--------------
`#define SPI_DRIVER` | SPI peripheral to use - SPI1 => `SPID1`, SPI2 => `SPID2` etc. | `SPID2`
`#define SPI_SCK_PIN` | The pin to use for the SCK | `B13`
`#define SPI_SCK_PAL_MODE` | The alternate function mode for the SCK pin | `5`
`#define SPI_MOSI_PIN` | The pin to use for the MOSI | `B15`
`#define SPI_MOSI_PAL_MODE` | The alternate function mode for the MOSI pin | `5`
`#define SPI_MISO_PIN` | The pin to use for the MISO | `B14`
`#define SPI_MISO_PAL_MODE` | The alternate function mode for the MISO pin | `5`
|`config.h` Override|Description |Default|
|-------------------|-------------------------------------------------------------|-------|
|`SPI_DRIVER` |SPI peripheral to use - SPI1 -> `SPID1`, SPI2 -> `SPID2` etc.|`SPID2`|
|`SPI_SCK_PIN` |The pin to use for SCK |`B13` |
|`SPI_SCK_PAL_MODE` |The alternate function mode for SCK |`5` |
|`SPI_MOSI_PIN` |The pin to use for MOSI |`B15` |
|`SPI_MOSI_PAL_MODE`|The alternate function mode for MOSI |`5` |
|`SPI_MISO_PIN` |The pin to use for MISO |`B14` |
|`SPI_MISO_PAL_MODE`|The alternate function mode for MISO |`5` |
As per the AVR configuration, you may choose any other standard GPIO as a slave select pin, which should be supplied to `spi_start()`.
## Functions
@@ -112,7 +124,7 @@ Send multiple bytes to the selected SPI device.
#### Return Value
`SPI_STATUS_TIMEOUT` if the timeout period elapses, `SPI_STATUS_SUCCESS` on success, or `SPI_STATUS_ERROR` otherwise.
`SPI_STATUS_TIMEOUT` if the timeout period elapses, `SPI_STATUS_ERROR` if some other error occurs, otherwise `SPI_STATUS_SUCCESS`.
---
@@ -129,7 +141,7 @@ Receive multiple bytes from the selected SPI device.
#### Return Value
`SPI_STATUS_TIMEOUT` if the internal transmission timeout period elapses, `SPI_STATUS_SUCCESS` on success, or `SPI_STATUS_ERROR` otherwise.
`SPI_STATUS_TIMEOUT` if the timeout period elapses, `SPI_STATUS_ERROR` if some other error occurs, otherwise `SPI_STATUS_SUCCESS`.
---

View File

@@ -87,7 +87,7 @@ To enable this setting, add this to your `config.h`:
#define IGNORE_MOD_TAP_INTERRUPT
```
Similar to Permissive Hold, this alters how the firmware processes inputs for fast typists. 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.
Similar to Permissive Hold, this alters how the firmware processes inputs for fast typists. 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 Mod plus the normal key, even if pressed within the `TAPPING_TERM`. This may not be desirable for rolling combo keys, or for fast typists who have a Mod Tap on a frequently used key (`RCTL_T(KC_QUOT)`, for example).
Setting `Ignore Mod Tap Interrupt` requires holding both keys for the `TAPPING_TERM` to trigger the hold function (the mod).
@@ -98,7 +98,7 @@ For Instance:
- `SFT_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`).
Normally, this would send a capital `X` (`SHIFT`+`x`), or, Mod + key. 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 capital `X` (`SHIFT`+`x`).
?> __Note__: This only concerns modifiers and not layer switching keys.

View File

@@ -142,7 +142,6 @@ The `process_record()` function itself is deceptively simple, but hidden within
* [`bool process_haptic(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/2cee371bf125a6ec541dd7c5a809573facc7c456/drivers/haptic/haptic.c#L216)
* [`bool process_record_kb(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/keyboards/clueboard/card/card.c#L20)
* [`bool process_record_user(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/keyboards/clueboard/card/keymaps/default/keymap.c#L58)
* [`bool process_rgb_matrix(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/quantum/rgb_matrix.c#L139)
* [`bool process_midi(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/quantum/process_keycode/process_midi.c#L81)
* [`bool process_audio(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/quantum/process_keycode/process_audio.c#L19)
* [`bool process_steno(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/quantum/process_keycode/process_steno.c#L160)

View File

@@ -72,20 +72,41 @@ WS2812_DRIVER = spi
Configure the hardware via your config.h:
```c
#define WS2812_SPI SPID1 // default: SPID1
#define WS2812_SPI_MOSI_PAL_MODE 5 // Pin "alternate function", see the respective datasheet for the appropriate values for your MCU. default: 5
#define WS2812_SPI_MOSI_PAL_MODE 5 // MOSI pin "alternate function", see the respective datasheet for the appropriate values for your MCU. default: 5
#define WS2812_SPI_SCK_PIN B3 // Required for F072, may be for others -- SCK pin, see the respective datasheet for the appropriate values for your MCU. default: unspecified
#define WS2812_SPI_SCK_PAL_MODE 5 // SCK pin "alternate function", see the respective datasheet for the appropriate values for your MCU. default: 5
```
You must also turn on the SPI feature in your halconf.h and mcuconf.h
#### Circular Buffer Mode
Some boards may flicker while in the normal buffer mode. To fix this issue, circular buffer mode may be used to rectify the issue.
By default, the circular buffer mode is disabled.
To enable this alternative buffer mode, place this into your `config.h` file:
```c
#define WS2812_SPI_USE_CIRCULAR_BUFFER
```
#### Setting baudrate with divisor
To adjust the baudrate at which the SPI peripheral is configured, users will need to derive the target baudrate from the clock tree provided by STM32CubeMX.
Only divisors of 2, 4, 8, 16, 32, 64, 128 and 256 are supported by hardware.
|Define |Default|Description |
|--------------------|-------|-------------------------------------|
|`WS2812_SPI_DIVISOR`|`16` |SPI source clock peripheral divisor |
#### Testing Notes
While not an exhaustive list, the following table provides the scenarios that have been partially validated:
| | SPI1 | SPI2 | SPI3 |
|-|-|-|-|
| f072 | ? | B15 :heavy_check_mark: | N/A |
| f103 | A7 :heavy_check_mark: | B15 :heavy_check_mark: | N/A |
| f303 | A7 :heavy_check_mark: B5 :heavy_check_mark: | B15 :heavy_check_mark: | B5 :heavy_check_mark: |
| | SPI1 | SPI2 | SPI3 |
|------|---------------------------------------------|-----------------------------------------|-----------------------|
| f072 | ? | B15 :heavy_check_mark: (needs SCK: B13) | N/A |
| f103 | A7 :heavy_check_mark: | B15 :heavy_check_mark: | N/A |
| f303 | A7 :heavy_check_mark: B5 :heavy_check_mark: | B15 :heavy_check_mark: | B5 :heavy_check_mark: |
*Other supported ChibiOS boards and/or pins may function, it will be highly chip and configuration dependent.*
@@ -102,11 +123,14 @@ Configure the hardware via your config.h:
#define WS2812_PWM_DRIVER PWMD2 // default: PWMD2
#define WS2812_PWM_CHANNEL 2 // default: 2
#define WS2812_PWM_PAL_MODE 2 // Pin "alternate function", see the respective datasheet for the appropriate values for your MCU. default: 2
//#define WS2812_PWM_COMPLEMENTARY_OUTPUT // Define for a complementary timer output (TIMx_CHyN); omit for a normal timer output (TIMx_CHy).
#define WS2812_DMA_STREAM STM32_DMA1_STREAM2 // DMA Stream for TIMx_UP, see the respective reference manual for the appropriate values for your MCU.
#define WS2812_DMA_CHANNEL 2 // DMA Channel for TIMx_UP, see the respective reference manual for the appropriate values for your MCU.
#define WS2812_DMAMUX_ID STM32_DMAMUX1_TIM2_UP // DMAMUX configuration for TIMx_UP -- only required if your MCU has a DMAMUX peripheral, see the respective reference manual for the appropriate values for your MCU.
```
Note that using a complementary timer output (TIMx_CHyN) is possible only for advanced-control timers (TIM1, TIM8, TIM20 on STM32), and the `STM32_PWM_USE_ADVANCED` option in mcuconf.h must be set to `TRUE`. Complementary outputs of general-purpose timers are not supported due to ChibiOS limitations.
You must also turn on the PWM feature in your halconf.h and mcuconf.h
#### Testing Notes

View File

@@ -14,10 +14,8 @@
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
#include <avr/io.h>
#include "spi_master.h"
#include "quantum.h"
#include "timer.h"
#if defined(__AVR_AT90USB162__) || defined(__AVR_ATmega16U2__) || defined(__AVR_ATmega32U2__) || defined(__AVR_ATmega16U4__) || defined(__AVR_ATmega32U4__) || defined(__AVR_AT90USB646__) || defined(__AVR_AT90USB647__) || defined(__AVR_AT90USB1286__) || defined(__AVR_AT90USB1287__)

View File

@@ -16,7 +16,9 @@
#pragma once
#include "quantum.h"
#include <stdbool.h>
#include "gpio.h"
typedef int16_t spi_status_t;

View File

@@ -67,19 +67,27 @@ void ws2812_setleds(LED_TYPE *ledarray, uint16_t number_of_leds) {
#define w_onecycles (((F_CPU / 1000) * w_onepulse + 500000) / 1000000)
#define w_totalcycles (((F_CPU / 1000) * w_totalperiod + 500000) / 1000000)
// w1 - nops between rising edge and falling edge - low
#define w1 (w_zerocycles - w_fixedlow)
// w2 nops between fe low and fe high
#define w2 (w_onecycles - w_fixedhigh - w1)
// w3 nops to complete loop
#define w3 (w_totalcycles - w_fixedtotal - w1 - w2)
#if w1 > 0
# define w1_nops w1
// w1_nops - nops between rising edge and falling edge - low
#if w_zerocycles >= w_fixedlow
# define w1_nops (w_zerocycles - w_fixedlow)
#else
# define w1_nops 0
#endif
// w2_nops - nops between fe low and fe high
#if w_onecycles >= (w_fixedhigh + w1_nops)
# define w2_nops (w_onecycles - w_fixedhigh - w1_nops)
#else
# define w2_nops 0
#endif
// w3_nops - nops to complete loop
#if w_totalcycles >= (w_fixedtotal + w1_nops + w2_nops)
# define w3_nops (w_totalcycles - w_fixedtotal - w1_nops - w2_nops)
#else
# define w3_nops 0
#endif
// The only critical timing parameter is the minimum pulse length of the "0"
// Warn or throw error if this timing can not be met with current F_CPU settings.
#define w_lowtime ((w1_nops + w_fixedlow) * 1000000) / (F_CPU / 1000)
@@ -90,18 +98,6 @@ void ws2812_setleds(LED_TYPE *ledarray, uint16_t number_of_leds) {
# warning "Please consider a higher clockspeed, if possible"
#endif
#if w2 > 0
# define w2_nops w2
#else
# define w2_nops 0
#endif
#if w3 > 0
# define w3_nops w3
#else
# define w3_nops 0
#endif
#define w_nop1 "nop \n\t"
#define w_nop2 "rjmp .+0 \n\t"
#define w_nop4 w_nop2 w_nop2

View File

@@ -101,7 +101,11 @@
// Options are 12, 10, 8, and 6 bit.
#ifndef ADC_RESOLUTION
# define ADC_RESOLUTION ADC_CFGR1_RES_10BIT
# ifdef ADC_CFGR_RES_10BITS // ADCv3, ADCv4
# define ADC_RESOLUTION ADC_CFGR_RES_10BITS
# else // ADCv1, ADCv5, or the bodge for ADCv2 above
# define ADC_RESOLUTION ADC_CFGR1_RES_10BIT
# endif
#endif
static ADCConfig adcCfg = {};
@@ -119,7 +123,7 @@ static ADCConversionGroup adcConversionGroup = {
.smpr = ADC_SAMPLING_RATE,
#elif defined(USE_ADCV2)
# if !defined(STM32F1XX)
.cr2 = ADC_CR2_SWSTART, // F103 seem very unhappy with, F401 seems very unhappy without...
.cr2 = ADC_CR2_SWSTART, // F103 seem very unhappy with, F401 seems very unhappy without...
# endif
.smpr2 = ADC_SMPR2_SMP_AN0(ADC_SAMPLING_RATE) | ADC_SMPR2_SMP_AN1(ADC_SAMPLING_RATE) | ADC_SMPR2_SMP_AN2(ADC_SAMPLING_RATE) | ADC_SMPR2_SMP_AN3(ADC_SAMPLING_RATE) | ADC_SMPR2_SMP_AN4(ADC_SAMPLING_RATE) | ADC_SMPR2_SMP_AN5(ADC_SAMPLING_RATE) | ADC_SMPR2_SMP_AN6(ADC_SAMPLING_RATE) | ADC_SMPR2_SMP_AN7(ADC_SAMPLING_RATE) | ADC_SMPR2_SMP_AN8(ADC_SAMPLING_RATE) | ADC_SMPR2_SMP_AN9(ADC_SAMPLING_RATE),
.smpr1 = ADC_SMPR1_SMP_AN10(ADC_SAMPLING_RATE) | ADC_SMPR1_SMP_AN11(ADC_SAMPLING_RATE) | ADC_SMPR1_SMP_AN12(ADC_SAMPLING_RATE) | ADC_SMPR1_SMP_AN13(ADC_SAMPLING_RATE) | ADC_SMPR1_SMP_AN14(ADC_SAMPLING_RATE) | ADC_SMPR1_SMP_AN15(ADC_SAMPLING_RATE),
@@ -161,8 +165,8 @@ __attribute__((weak)) adc_mux pinToMux(pin_t pin) {
case B0: return TO_MUX( ADC_CHANNEL_IN12, 2 );
case B1: return TO_MUX( ADC_CHANNEL_IN1, 2 );
case B2: return TO_MUX( ADC_CHANNEL_IN12, 1 );
case B12: return TO_MUX( ADC_CHANNEL_IN2, 3 );
case B13: return TO_MUX( ADC_CHANNEL_IN3, 3 );
case B12: return TO_MUX( ADC_CHANNEL_IN3, 3 );
case B13: return TO_MUX( ADC_CHANNEL_IN5, 2 );
case B14: return TO_MUX( ADC_CHANNEL_IN4, 3 );
case B15: return TO_MUX( ADC_CHANNEL_IN5, 3 );
case C0: return TO_MUX( ADC_CHANNEL_IN6, 0 ); // Can also be ADC2
@@ -189,11 +193,52 @@ __attribute__((weak)) adc_mux pinToMux(pin_t pin) {
case E15: return TO_MUX( ADC_CHANNEL_IN2, 3 );
case F2: return TO_MUX( ADC_CHANNEL_IN10, 0 ); // Can also be ADC2
case F4: return TO_MUX( ADC_CHANNEL_IN5, 0 );
#elif defined(STM32F4XX) // TODO: add all pins
#elif defined(STM32F4XX)
case A0: return TO_MUX( ADC_CHANNEL_IN0, 0 );
//case A1: return TO_MUX( ADC_CHANNEL_IN1, 0 );
#elif defined(STM32F1XX) // TODO: add all pins
case A1: return TO_MUX( ADC_CHANNEL_IN1, 0 );
case A2: return TO_MUX( ADC_CHANNEL_IN2, 0 );
case A3: return TO_MUX( ADC_CHANNEL_IN3, 0 );
case A4: return TO_MUX( ADC_CHANNEL_IN4, 0 );
case A5: return TO_MUX( ADC_CHANNEL_IN5, 0 );
case A6: return TO_MUX( ADC_CHANNEL_IN6, 0 );
case A7: return TO_MUX( ADC_CHANNEL_IN7, 0 );
case B0: return TO_MUX( ADC_CHANNEL_IN8, 0 );
case B1: return TO_MUX( ADC_CHANNEL_IN9, 0 );
case C0: return TO_MUX( ADC_CHANNEL_IN10, 0 );
case C1: return TO_MUX( ADC_CHANNEL_IN11, 0 );
case C2: return TO_MUX( ADC_CHANNEL_IN12, 0 );
case C3: return TO_MUX( ADC_CHANNEL_IN13, 0 );
case C4: return TO_MUX( ADC_CHANNEL_IN14, 0 );
case C5: return TO_MUX( ADC_CHANNEL_IN15, 0 );
# if STM32_ADC_USE_ADC3
case F3: return TO_MUX( ADC_CHANNEL_IN9, 2 );
case F4: return TO_MUX( ADC_CHANNEL_IN14, 2 );
case F5: return TO_MUX( ADC_CHANNEL_IN15, 2 );
case F6: return TO_MUX( ADC_CHANNEL_IN4, 2 );
case F7: return TO_MUX( ADC_CHANNEL_IN5, 2 );
case F8: return TO_MUX( ADC_CHANNEL_IN6, 2 );
case F9: return TO_MUX( ADC_CHANNEL_IN7, 2 );
case F10: return TO_MUX( ADC_CHANNEL_IN8, 2 );
# endif
#elif defined(STM32F1XX)
case A0: return TO_MUX( ADC_CHANNEL_IN0, 0 );
case A1: return TO_MUX( ADC_CHANNEL_IN1, 0 );
case A2: return TO_MUX( ADC_CHANNEL_IN2, 0 );
case A3: return TO_MUX( ADC_CHANNEL_IN3, 0 );
case A4: return TO_MUX( ADC_CHANNEL_IN4, 0 );
case A5: return TO_MUX( ADC_CHANNEL_IN5, 0 );
case A6: return TO_MUX( ADC_CHANNEL_IN6, 0 );
case A7: return TO_MUX( ADC_CHANNEL_IN7, 0 );
case B0: return TO_MUX( ADC_CHANNEL_IN8, 0 );
case B1: return TO_MUX( ADC_CHANNEL_IN9, 0 );
case C0: return TO_MUX( ADC_CHANNEL_IN10, 0 );
case C1: return TO_MUX( ADC_CHANNEL_IN11, 0 );
case C2: return TO_MUX( ADC_CHANNEL_IN12, 0 );
case C3: return TO_MUX( ADC_CHANNEL_IN13, 0 );
case C4: return TO_MUX( ADC_CHANNEL_IN14, 0 );
case C5: return TO_MUX( ADC_CHANNEL_IN15, 0 );
// STM32F103x[C-G] in 144-pin packages also have analog inputs on F6...F10, but they are on ADC3, and the
// ChibiOS ADC driver for STM32F1xx currently supports only ADC1, therefore these pins are not usable.
#endif
}

View File

@@ -1,13 +1,20 @@
#include "quantum.h"
#include "serial.h"
#include "print.h"
/* Copyright 2021 QMK
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include <ch.h>
#include <hal.h>
#ifndef USART_CR1_M0
# define USART_CR1_M0 USART_CR1_M // some platforms (f1xx) dont have this so
#endif
#include "serial_usart.h"
#ifndef USE_GPIOV1
// The default PAL alternate modes are used to signal that the pins are used for USART
@@ -20,50 +27,10 @@
# define SERIAL_USART_DRIVER SD1
#endif
#ifndef SERIAL_USART_CR1
# define SERIAL_USART_CR1 (USART_CR1_PCE | USART_CR1_PS | USART_CR1_M0) // parity enable, odd parity, 9 bit length
#endif
#ifndef SERIAL_USART_CR2
# define SERIAL_USART_CR2 (USART_CR2_STOP_1) // 2 stop bits
#endif
#ifndef SERIAL_USART_CR3
# define SERIAL_USART_CR3 0
#endif
#ifdef SOFT_SERIAL_PIN
# define SERIAL_USART_TX_PIN SOFT_SERIAL_PIN
#endif
#ifndef SELECT_SOFT_SERIAL_SPEED
# define SELECT_SOFT_SERIAL_SPEED 1
#endif
#ifdef SERIAL_USART_SPEED
// Allow advanced users to directly set SERIAL_USART_SPEED
#elif SELECT_SOFT_SERIAL_SPEED == 0
# define SERIAL_USART_SPEED 460800
#elif SELECT_SOFT_SERIAL_SPEED == 1
# define SERIAL_USART_SPEED 230400
#elif SELECT_SOFT_SERIAL_SPEED == 2
# define SERIAL_USART_SPEED 115200
#elif SELECT_SOFT_SERIAL_SPEED == 3
# define SERIAL_USART_SPEED 57600
#elif SELECT_SOFT_SERIAL_SPEED == 4
# define SERIAL_USART_SPEED 38400
#elif SELECT_SOFT_SERIAL_SPEED == 5
# define SERIAL_USART_SPEED 19200
#else
# error invalid SELECT_SOFT_SERIAL_SPEED value
#endif
#ifndef SERIAL_USART_TIMEOUT
# define SERIAL_USART_TIMEOUT 100
#endif
#define HANDSHAKE_MAGIC 7
static inline msg_t sdWriteHalfDuplex(SerialDriver* driver, uint8_t* data, uint8_t size) {
msg_t ret = sdWrite(driver, data, size);
@@ -123,6 +90,10 @@ __attribute__((weak)) void usart_init(void) {
#else
palSetLineMode(SERIAL_USART_TX_PIN, PAL_MODE_ALTERNATE(SERIAL_USART_TX_PAL_MODE) | PAL_STM32_OTYPE_OPENDRAIN);
#endif
#if defined(USART_REMAP)
USART_REMAP;
#endif
}
void usart_master_init(void) {

View File

@@ -0,0 +1,90 @@
/* Copyright 2021 QMK
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#pragma once
#include "quantum.h"
#include "serial.h"
#include "printf.h"
#include <ch.h>
#include <hal.h>
#ifndef USART_CR1_M0
# define USART_CR1_M0 USART_CR1_M // some platforms (f1xx) dont have this so
#endif
#ifndef SERIAL_USART_CR1
# define SERIAL_USART_CR1 (USART_CR1_PCE | USART_CR1_PS | USART_CR1_M0) // parity enable, odd parity, 9 bit length
#endif
#ifndef SERIAL_USART_CR2
# define SERIAL_USART_CR2 (USART_CR2_STOP_1) // 2 stop bits
#endif
#ifndef SERIAL_USART_CR3
# define SERIAL_USART_CR3 0
#endif
#if defined(USART1_REMAP)
# define USART_REMAP \
do { \
(AFIO->MAPR |= AFIO_MAPR_USART1_REMAP); \
} while (0)
#elif defined(USART2_REMAP)
# define USART_REMAP \
do { \
(AFIO->MAPR |= AFIO_MAPR_USART2_REMAP); \
} while (0)
#elif defined(USART3_PARTIALREMAP)
# define USART_REMAP \
do { \
(AFIO->MAPR |= AFIO_MAPR_USART3_REMAP_PARTIALREMAP); \
} while (0)
#elif defined(USART3_FULLREMAP)
# define USART_REMAP \
do { \
(AFIO->MAPR |= AFIO_MAPR_USART3_REMAP_FULLREMAP); \
} while (0)
#endif
#ifndef SELECT_SOFT_SERIAL_SPEED
# define SELECT_SOFT_SERIAL_SPEED 1
#endif
#ifdef SERIAL_USART_SPEED
// Allow advanced users to directly set SERIAL_USART_SPEED
#elif SELECT_SOFT_SERIAL_SPEED == 0
# define SERIAL_USART_SPEED 460800
#elif SELECT_SOFT_SERIAL_SPEED == 1
# define SERIAL_USART_SPEED 230400
#elif SELECT_SOFT_SERIAL_SPEED == 2
# define SERIAL_USART_SPEED 115200
#elif SELECT_SOFT_SERIAL_SPEED == 3
# define SERIAL_USART_SPEED 57600
#elif SELECT_SOFT_SERIAL_SPEED == 4
# define SERIAL_USART_SPEED 38400
#elif SELECT_SOFT_SERIAL_SPEED == 5
# define SERIAL_USART_SPEED 19200
#else
# error invalid SELECT_SOFT_SERIAL_SPEED value
#endif
#ifndef SERIAL_USART_TIMEOUT
# define SERIAL_USART_TIMEOUT 100
#endif
#define HANDSHAKE_MAGIC 7

View File

@@ -0,0 +1,261 @@
/* Copyright 2021 QMK
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include "serial_usart.h"
#include <stdatomic.h>
#if !defined(USE_GPIOV1)
// The default PAL alternate modes are used to signal that the pins are used for USART
# if !defined(SERIAL_USART_TX_PAL_MODE)
# define SERIAL_USART_TX_PAL_MODE 7
# endif
# if !defined(SERIAL_USART_RX_PAL_MODE)
# define SERIAL_USART_RX_PAL_MODE 7
# endif
#endif
#if !defined(SERIAL_USART_DRIVER)
# define SERIAL_USART_DRIVER UARTD1
#endif
#if !defined(SERIAL_USART_TX_PIN)
# define SERIAL_USART_TX_PIN A9
#endif
#if !defined(SERIAL_USART_RX_PIN)
# define SERIAL_USART_RX_PIN A10
#endif
#define SIGNAL_HANDSHAKE_RECEIVED 0x1
void handle_transactions_slave(uint8_t sstd_index);
static void receive_transaction_handshake(UARTDriver* uartp, uint16_t received_handshake);
/*
* UART driver configuration structure. We use the blocking DMA enabled API and
* the rxchar callback to receive handshake tokens but only on the slave halve.
*/
// clang-format off
static UARTConfig uart_config = {
.txend1_cb = NULL,
.txend2_cb = NULL,
.rxend_cb = NULL,
.rxchar_cb = NULL,
.rxerr_cb = NULL,
.timeout_cb = NULL,
.speed = (SERIAL_USART_SPEED),
.cr1 = (SERIAL_USART_CR1),
.cr2 = (SERIAL_USART_CR2),
.cr3 = (SERIAL_USART_CR3)
};
// clang-format on
static SSTD_t* Transaction_table = NULL;
static uint8_t Transaction_table_size = 0;
static atomic_uint_least8_t handshake = 0xFF;
static thread_reference_t tp_target = NULL;
/*
* This callback is invoked when a character is received but the application
* was not ready to receive it, the character is passed as parameter.
* Receive transaction table index from initiator, which doubles as basic handshake token. */
static void receive_transaction_handshake(UARTDriver* uartp, uint16_t received_handshake) {
/* Check if received handshake is not a valid transaction id.
* Please note that we can still catch a seemingly valid handshake
* i.e. a byte from a ongoing transfer which is in the allowed range.
* So this check mainly prevents any obviously wrong handshakes and
* subsequent wakeups of the receiving thread, which is a costly operation. */
if (received_handshake > Transaction_table_size) {
return;
}
handshake = (uint8_t)received_handshake;
chSysLockFromISR();
/* Wakeup receiving thread to start a transaction. */
chEvtSignalI(tp_target, (eventmask_t)SIGNAL_HANDSHAKE_RECEIVED);
chSysUnlockFromISR();
}
__attribute__((weak)) void usart_init(void) {
#if defined(USE_GPIOV1)
palSetLineMode(SERIAL_USART_TX_PIN, PAL_MODE_STM32_ALTERNATE_PUSHPULL);
palSetLineMode(SERIAL_USART_RX_PIN, PAL_MODE_INPUT);
#else
palSetLineMode(SERIAL_USART_TX_PIN, PAL_MODE_ALTERNATE(SERIAL_USART_TX_PAL_MODE) | PAL_STM32_OTYPE_PUSHPULL | PAL_STM32_OSPEED_HIGHEST);
palSetLineMode(SERIAL_USART_RX_PIN, PAL_MODE_ALTERNATE(SERIAL_USART_RX_PAL_MODE) | PAL_STM32_OTYPE_PUSHPULL | PAL_STM32_OSPEED_HIGHEST);
#endif
}
/*
* This thread runs on the slave half and reacts to transactions initiated from the master.
*/
static THD_WORKING_AREA(waSlaveThread, 1024);
static THD_FUNCTION(SlaveThread, arg) {
(void)arg;
chRegSetThreadName("slave_usart_tx_rx");
while (true) {
/* We sleep as long as there is no handshake waiting for us. */
chEvtWaitAny((eventmask_t)SIGNAL_HANDSHAKE_RECEIVED);
handle_transactions_slave(handshake);
}
}
void soft_serial_target_init(SSTD_t* const sstd_table, int sstd_table_size) {
Transaction_table = sstd_table;
Transaction_table_size = (uint8_t)sstd_table_size;
usart_init();
#if defined(USART_REMAP)
USART_REMAP;
#endif
tp_target = chThdCreateStatic(waSlaveThread, sizeof(waSlaveThread), HIGHPRIO, SlaveThread, NULL);
// Start receiving handshake tokens on slave halve
uart_config.rxchar_cb = receive_transaction_handshake;
uartStart(&SERIAL_USART_DRIVER, &uart_config);
}
/**
* @brief React to transactions started by the master.
* This version uses duplex send and receive usart pheriphals and DMA backed transfers.
*/
void inline handle_transactions_slave(uint8_t sstd_index) {
size_t buffer_size = 0;
msg_t msg = 0;
SSTD_t* trans = &Transaction_table[sstd_index];
/* Send back the handshake which is XORed as a simple checksum,
to signal that the slave is ready to receive possible transaction buffers */
sstd_index ^= HANDSHAKE_MAGIC;
buffer_size = (size_t)sizeof(sstd_index);
msg = uartSendTimeout(&SERIAL_USART_DRIVER, &buffer_size, &sstd_index, TIME_MS2I(SERIAL_USART_TIMEOUT));
if (msg != MSG_OK) {
if (trans->status) {
*trans->status = TRANSACTION_NO_RESPONSE;
}
return;
}
/* Receive transaction buffer from the master. If this transaction requires it.*/
buffer_size = (size_t)trans->initiator2target_buffer_size;
if (buffer_size) {
msg = uartReceiveTimeout(&SERIAL_USART_DRIVER, &buffer_size, trans->initiator2target_buffer, TIME_MS2I(SERIAL_USART_TIMEOUT));
if (msg != MSG_OK) {
if (trans->status) {
*trans->status = TRANSACTION_NO_RESPONSE;
}
return;
}
}
/* Send transaction buffer to the master. If this transaction requires it. */
buffer_size = (size_t)trans->target2initiator_buffer_size;
if (buffer_size) {
msg = uartSendFullTimeout(&SERIAL_USART_DRIVER, &buffer_size, trans->target2initiator_buffer, TIME_MS2I(SERIAL_USART_TIMEOUT));
if (msg != MSG_OK) {
if (trans->status) {
*trans->status = TRANSACTION_NO_RESPONSE;
}
return;
}
}
if (trans->status) {
*trans->status = TRANSACTION_ACCEPTED;
}
}
void soft_serial_initiator_init(SSTD_t* const sstd_table, int sstd_table_size) {
Transaction_table = sstd_table;
Transaction_table_size = (uint8_t)sstd_table_size;
usart_init();
#if defined(SERIAL_USART_PIN_SWAP)
uart_config.cr2 |= USART_CR2_SWAP; // master has swapped TX/RX pins
#endif
#if defined(USART_REMAP)
USART_REMAP;
#endif
uartStart(&SERIAL_USART_DRIVER, &uart_config);
}
/**
* @brief Start transaction from the master to the slave.
* This version uses duplex send and receive usart pheriphals and DMA backed transfers.
*
* @param index Transaction Table index of the transaction to start.
* @return int TRANSACTION_NO_RESPONSE in case of Timeout.
* TRANSACTION_TYPE_ERROR in case of invalid transaction index.
* TRANSACTION_END in case of success.
*/
#if !defined(SERIAL_USE_MULTI_TRANSACTION)
int soft_serial_transaction(void) {
uint8_t sstd_index = 0;
#else
int soft_serial_transaction(int index) {
uint8_t sstd_index = index;
#endif
if (sstd_index > Transaction_table_size) {
return TRANSACTION_TYPE_ERROR;
}
SSTD_t* const trans = &Transaction_table[sstd_index];
msg_t msg = 0;
size_t buffer_size = (size_t)sizeof(sstd_index);
/* Send transaction table index to the slave, which doubles as basic handshake token. */
uartSendFullTimeout(&SERIAL_USART_DRIVER, &buffer_size, &sstd_index, TIME_MS2I(SERIAL_USART_TIMEOUT));
uint8_t sstd_index_shake = 0xFF;
buffer_size = (size_t)sizeof(sstd_index_shake);
/* Receive the handshake token from the slave. The token was XORed by the slave as a simple checksum.
If the tokens match, the master will start to send and receive possible transaction buffers. */
msg = uartReceiveTimeout(&SERIAL_USART_DRIVER, &buffer_size, &sstd_index_shake, TIME_MS2I(SERIAL_USART_TIMEOUT));
if (msg != MSG_OK || (sstd_index_shake != (sstd_index ^ HANDSHAKE_MAGIC))) {
dprintln("USART: Handshake Failed");
return TRANSACTION_NO_RESPONSE;
}
/* Send transaction buffer to the slave. If this transaction requires it. */
buffer_size = (size_t)trans->initiator2target_buffer_size;
if (buffer_size) {
msg = uartSendFullTimeout(&SERIAL_USART_DRIVER, &buffer_size, trans->initiator2target_buffer, TIME_MS2I(SERIAL_USART_TIMEOUT));
if (msg != MSG_OK) {
dprintln("USART: Send Failed");
return TRANSACTION_NO_RESPONSE;
}
}
/* Receive transaction buffer from the slave. If this transaction requires it. */
buffer_size = (size_t)trans->target2initiator_buffer_size;
if (buffer_size) {
msg = uartReceiveTimeout(&SERIAL_USART_DRIVER, &buffer_size, trans->target2initiator_buffer, TIME_MS2I(SERIAL_USART_TIMEOUT));
if (msg != MSG_OK) {
dprintln("USART: Receive Failed");
return TRANSACTION_NO_RESPONSE;
}
}
return TRANSACTION_END;
}

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