Compare commits

..

277 Commits

Author SHA1 Message Date
Drashna Jael're
573e0bfab1 Fix isses with toggling 2019-08-08 08:54:52 +09:00
Drashna Jael're
c8db6dfdd3 Update RGB Matrix configuration for Ergodox EZ 2019-08-08 08:54:52 +09:00
Drashna Jael're
4de36ce45b Update RGB Matrix configuration for Planck EZ
Use LED Flags for RGB matrix control instead

Cleanup
2019-08-08 08:54:52 +09:00
Drashna Jael're
5a30142914 Fix bugs introduced into Planck EZ code 2019-08-06 08:17:35 +09:00
Drashna Jael're
927969d6cb Enable LED Light level control for Ergodox EZ 2019-08-05 09:36:54 +09:00
Drashna Jael're
d2100ba45d Enable PWM support for Planck EZ Indicator LEDs 2019-08-05 09:36:26 +09:00
Florian Didron
4a5b36ec4c Fix/music mask (#123)
* chore: align mod tap and mouse keys timings with the ergodox ez

* fix: align planck ez default tapping toggle with ergodox

* fix: ignore all layer keys in music mode
2019-07-29 18:11:09 -07:00
Drashna Jael're
6d6506e6ee Optimize RGB Matrix rendering for Ergodox EZ 2019-07-27 11:26:33 +09:00
Drashna Jael're
81c563c692 Optimize RGB Matrix rendering for Planck EZ 2019-07-27 11:26:33 +09:00
Drashna Jaelre
8c164726e8 Remove dynamic_keymap check 2019-07-27 11:25:58 +09:00
Drashna Jaelre
1102bea973 Fix uGFX reference issue 2019-07-27 11:25:58 +09:00
Drashna Jaelre
4df874a1d9 Change additional layer structure code 2019-07-27 11:25:58 +09:00
Drashna Jaelre
e0eecc6834 Additional changes for Layer State typedef compatibility 2019-07-27 11:25:58 +09:00
Drashna Jaelre
04eb1226b9 Use Layer State Typedef in keymaps 2019-07-27 11:25:58 +09:00
Ryan Caltabiano
a393d4d43e Fix bit count calculation for iterating layers 2019-07-27 11:25:58 +09:00
Alex Ong
8253427f12 Typedef'ed layer_state_t to uint32_t (#3637)
* Typedef'ed layer_state_t to uint32_t.

This enables future work with layer_state_t to uint8_t for optimization purposes.

* Removed accidental xeal60 commit

* Revert to egyptian brackets, added sizeof(layer_state_t) so when layer_state_t is redefined it will automagically work.

* Add additional typedefs

* Add checks for setting layer state

* Update tmk_core/common/action_layer.h

Co-Authored-By: alex-ong <the.onga@gmail.com>

* Revert commit.
2019-07-27 11:25:58 +09:00
XScorpion2
aa482e2e4f Added mod carry over from press to release. (#5866)
Co-Authored-By: fauxpark <fauxpark@gmail.com>
2019-07-27 11:24:42 +09:00
XScorpion2
f5980a2478 Added check for event pressed to clear space cadet (#5839)
* Added check for pressed to clear space cadet

* Found some docs to update

* Update docs/quantum_keycodes.md

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

* Changes from PR
2019-07-27 11:24:42 +09:00
Drashna Jaelre
4cc72c55e5 Feature/update docker (#121)
* Update docker util script and travis to use new base container

* Update docker util script and travis to use new base container
2019-07-22 10:27:35 +09:00
Florian Didron
7e3af676e7 fix: align planck ez default tapping toggle with ergodox 2019-07-22 10:25:31 +09:00
Drashna Jaelre
3aced2b5c9 Remove the need to specify NUM_OF_ENCODERS for the Encoder feature (#6328)
* Remove the need to set NUM_OF_ENCODERS

Instead, calculate the size of the array, and use that instead

* Add hack for split common support

* Remove NUM_OF_ENCODERS from keyboard config

Can be reverted, if needed
2019-07-19 10:25:26 +09:00
Drashna Jaelre
ce1b51be8b Allow Combo feature to be enabled/disabled live (#6318)
* Add ability to enable/disable combos

* Update documentation for Combo feature

* Change keycodes for appeasement

* Simplify combo_toggle function

* Update names

* Update combo docs to use tables
2019-07-19 10:25:00 +09:00
Joel Challis
90853e60bb Align ARM i2c_readReg with AVR (#6314)
* Align arm i2c_readReg with avr

* Align arm i2c_readReg with avr - fix cannonkeys
2019-07-19 10:23:51 +09:00
Joel Challis
c08ddb41a6 Add ARM I2Cv1 support to i2c_master (#6262)
* Add ARM I2Cv1 support to i2c_master

* Add I2Cv1 docs
2019-07-19 10:23:51 +09:00
Drashna Jaelre
c7dcc83e5e Expand bootloader target to support most AVR boards (#6255)
* Update the :bootloader target to pass along correct hardware info

* Update make scripts to properly grab the settings (a big thanks to @yanfali)

* Remove LUFA debug warnings
2019-07-19 10:18:33 +09:00
Drashna Jaelre
e237feba30 Make Caps Lock delay more reasonable (#6199)
* Make Caps Lock delay more reasonable

* Update documentation

* Update docs/config_options.md

Co-Authored-By: Konstantin Đorđević <vomindoraan@gmail.com>

* Update docs/config_options.md

Co-Authored-By: Konstantin Đorđević <vomindoraan@gmail.com>
2019-07-19 10:17:55 +09:00
Joel Challis
3acf64b708 Configure Vagrant to use qmk_base_container (#6194)
* Initial conversion of vagrant to use qmkfm/base_container

* Fix vagrant when using docker provider

* Workaround for VirtualBox VM restarts

* Generalise Vagrant docs slightly and add FAQ
2019-07-19 10:17:17 +09:00
fauxpark
4083565334 Store backlight breathing state in EEPROM (#6105)
* Store backlight breathing state in EEPROM

* Reduce backlight_config.level from 6 bits to 4 (max 15 "on" levels)

* Error out if BACKLIGHT_LEVELS is > 15

* Remove mention of default backlight pin in rules.mk template

* Remove pointless comment
2019-07-19 10:16:35 +09:00
XScorpion2
b279d2b94e Adding rgb matrix speed into eeprom storage. (#5965)
Zeroing out spd in eeconfig_init_quantum

Switched to block read & update

Update tmk_core/common/eeconfig.h

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

Fixing init compile error

Update eeconfig.c

Dead / Missing API cleanup

alignment
2019-07-19 10:14:15 +09:00
Roman Volosatovs
656b2ee939 shell.nix: Downgrade gcc-arm-embedded (#5913)
Temporary fix for https://github.com/qmk/qmk_firmware/issues/5868
2019-07-19 10:13:21 +09:00
Drashna Jaelre
d8925d7ba7 Fix Preprocessor check for Leader Keys 2019-07-19 10:12:49 +09:00
Drashna Jaelre
9fb4d67877 Add out of bound check for Leader Key sequence array (#5840)
* Add out of bound check for Leader Key sequence array

* A shot at advanced C stuff for Leader Key optimization

* Revert most changes

* Change default back

* Include string.h if compiling for ARM

* Use sizeof instead of a number
2019-07-19 10:12:49 +09:00
fauxpark
a20730f634 Add sendstring LUTs for French keymap (#5830) 2019-07-19 10:11:24 +09:00
Drashna Jaelre
4562a637bf Skip unsupported firmware check message in silent mode (#5765) 2019-07-19 10:09:41 +09:00
fauxpark
e8de784425 Sendstring LUT improvements (#5727)
* Align sendstring LUTs to 9 characters wide

* Replace 0 with XXXXXXX

* Use decimal 128 for LUT size

* Align heading comments

* Add ASCII table comments

* Add missing AltGr LUTs and adjust keycode LUTs accordingly

* Use pragma once

* Correct a couple more keycodes

* Capitalise "BÉPO"

* Also clean up the default tables

* Tidy up Belgian and Norman LUTs
2019-07-19 10:08:53 +09:00
fauxpark
0b25414aec Remove lock LED example in quantum.c (#5636)
* Use GPIO helper defines in backlighting

* While I'm here, fix up the lock LED example too

* Remove the example altogether, it's already documented
2019-07-19 10:08:18 +09:00
Aapo Saaristo
3dd97c383b Add user-overridable callback for cancelling UCIS input (#5564)
* Add user-overridable callback for cancelling UCIS input

To clean up things from qk_ucis_start_user() for instance.

* restore lost newline to quantum/process_keycode/process_ucis.c

Co-Authored-By: shinmai <aapo.saaristo@gmail.com>
2019-07-19 10:07:51 +09:00
Takeshi ISHII
ffc273b14a add 'objs-size' target into tmk_core/avr.mk (#5490) 2019-07-19 10:06:48 +09:00
yiancar
7f75ee8cd6 Usbasploader bootloader option addition (#6304)
* Added USBasp bootloader option for USBasploader

* author comment

* ifdef fix :)

* Add usbasp target

* Update docs/flashing.md

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

* Update docs/flashing.md

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

* Update docs/flashing.md

Co-Authored-By: fauxpark <fauxpark@gmail.com>
2019-07-19 10:06:08 +09:00
skullydazed
8ca6a89078 Fix compiling json files. (#6340) 2019-07-19 10:05:36 +09:00
skullydazed
7e080e7ecd QMK CLI and JSON keymap support (#6176)
* Script to generate keymap.c from JSON file.

* Support for keymap.json

* Add a warning about the keymap.c getting overwritten.

* Fix keymap generating

* Install the python deps

* Flesh out more of the python environment

* Remove defunct json2keymap

* Style everything with yapf

* Polish up python support

* Hide json keymap.c into the .build dir

* Polish up qmk-compile-json

* Make milc work with positional arguments

* Fix a couple small things

* Fix some errors and make the CLI more understandable

* Make the qmk wrapper more robust

* Add basic QMK Doctor

* Clean up docstrings and flesh them out as needed

* remove unused compile_firmware() function
2019-07-19 10:05:36 +09:00
zvecr
1879c6e734 Update docker util script and travis to use new base container 2019-07-19 10:05:10 +09:00
zvecr
c98d65fd03 Update docker util script and travis to use new base container 2019-07-19 10:05:10 +09:00
Florian Didron
ecf353a1d5 chore: align mod tap and mouse keys timings with the ergodox ez 2019-07-16 18:35:17 +09:00
Ryan Caltabiano
92d137cec9 Switching rgb_config_t to use HSV struct (qmk#5933) 2019-07-16 13:04:11 +09:00
XScorpion2
fd2246f972 Fixing effects to respect user sat and val levels (#6275) 2019-07-16 13:04:11 +09:00
fauxpark
16a8150de3 Display firmware size percentage (#6307) 2019-07-16 13:03:12 +09:00
Drashna Jaelre
dd148c595c Add GPL3 header to avr i2c files 2019-07-15 13:57:50 +09:00
fauxpark
642986a834 Add copyright year placeholders to new keyboard script (#6280)
* Add copyright year placeholders to new keyboard script

* More copyright header tweaks
2019-07-10 09:07:12 +09:00
skullydazed
ea40d07776 Fix chibios so the dfu-suffix is only applied once. (#6270) 2019-07-10 09:06:19 +09:00
Drashna Jaelre
3e7e8a3d9f Add makeful rules to .editorconfig
OMFG, why is it not set to tabs??
2019-07-10 09:05:31 +09:00
Kenny Hung
70ed220c19 Fix linux_install.sh script for OpenSuse v 15.1 (#6251) 2019-07-10 09:04:41 +09:00
Takeshi ISHII
517329696b fix unselect_rows() in quantum/matrix.c (#6243)
unselect_col() uses setPinInputHigh(), but unselect_cols() uses setPinInput().
This is not correct. unselect_cols() should also use setPinInputHigh().
2019-07-10 09:04:03 +09:00
fauxpark
341cf42d92 Remove additional copyrighted songs 2019-07-10 09:03:19 +09:00
Konstantin Đorđević
4675f2727b Fix parentheses in macros, and in general clean up quantum.h (#5021)
* Fix up GPIO macros

* Fix up send string macros

`string` arguments must not be parenthesized

* Fix up miscellaneous macros

* Make indentation uniform (4 spaces)

* Make #ifdef vs #if defined usage consistent

* Reorder standard includes

* Revert indentation changes as per review comments

* Revert #if defined(__AVR__) → #ifdef __AVR__ change

* Change 2 space indent to 4 spaces on a couple of lines

* Replace include guard with #pragma once
2019-07-10 09:01:14 +09:00
Drashna Jaelre
dba5ec7d92 Use QUANTUM_LIB_SRC for i2c_master.c inclusion (qmk#5617) 2019-07-10 09:00:07 +09:00
Michael Graf
d29148f289 Removed doubled lines 2019-07-10 08:41:09 +09:00
Florian Didron
d5aa21b024 Fix br abnt2 keymap compilation error 2019-06-24 22:53:21 +09:00
Danny Nguyen
b69a93d65e Fix compilation error when I2C and encoder is enabled for split code 2019-06-24 09:03:05 +09:00
noroadsleft
47909e2821 [Keyboard] Planck Layout Macro Refactor, Part II (#6156)
* Move layout macros to revision folders

* Update Planck EZ layout macros

Planck EZ only supports one layout (centered 2u spacebar). Deleted all the other macros.

* Flesh out QMK Configurator support

Give each Planck revision its own info.json file.

* Readme updates

- give each revision its own readme
- add the Planck EZ to the main Planck readme

* Fix layout macro for Planck EZ

Previous matrix didn't compile because the electrical matrix defined a k3b location, which was unused by the physical arguments.

Drashna was kind enough to confirm the Planck EZ's matrix for me.

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

* Pretend the Planck EZ supports ortho_4x12 layout

The hardware doesn't, but doing so prevents CI errors because the default keymap uses LAYOUT_planck_grid.

Going to pretend LAYOUT_ortho_4x12 is a valid layout for the Planck EZ.

* Update Planck EZ's URL in info.json

Co-Authored-By: Drashna Jaelre <drashna@live.com>
2019-06-24 09:02:33 +09:00
noroadsleft
2f960abb51 [Keyboard] Planck: Layout Macro Refactor (#4402)
* Planck: layout macro refactor

Unified layout macro names across AVR and ARM boards.

Currently certain layout macros are specific to either AVR or ARM when used in the QMK Configurator. If an AVR-specific macro is used for a Planck rev. 6, or an ARM-specific macro on a rev. 5 or earlier, the user receives a compile error.

* Update keyboards/planck/planck.h per @drashna

Changed KC_LAYOUT_ortho_4x12 alias to LAYOUT_kc_ortho_4x12.

Co-Authored-By: noroadsleft <18669334+noroadsleft@users.noreply.github.com>

* Add KC_KEYMAP alias for LAYOUT_kc macro

per @drashna
Update keyboards/planck/planck.h

Co-Authored-By: noroadsleft <18669334+noroadsleft@users.noreply.github.com>

* Fix LAYOUT_planck_1x2uC macro for Planck rev6

Thanks to drashna for testing.

* Fix inline comment regarding revisions

* Add specific info.json file for Planck rev6
2019-06-24 09:02:33 +09:00
Drashna Jaelre
0ea9391236 Enable RGB Matrix Sleep functionality 2019-06-24 09:01:09 +09:00
Florian Didron
d49944f1a2 Fix swedish $ sign definition (#81) 2019-06-21 17:12:14 -07:00
Florian Didron
59055df0d4 Removes files that shouldn't have been commited 2019-06-20 11:51:14 +09:00
Florian Didron
071e51994b Swedish extra keymap refactor 2019-06-20 11:51:14 +09:00
Danny Nguyen
e2f2d8b22e Change from avr-gcc@7 to @8 for Mac 2019-06-20 09:07:11 +09:00
zvecr
03a8adc19b Copy avr teensy flash logic to arm (#6016) 2019-06-20 09:06:38 +09:00
Michael F. Lamb
1c9011fbd1 Add SH1106 OLED support (#5787)
* modify oled_driver to support SH1106

also:
- improve mechanism to specify which OLED IC we use
- comment calc_bounds()
- give OLED_COLUMN_OFFSET a default value
- inline comment re: OLED MEMORY_MODE and SH1106
- update docs/feature_oled_driver.h for SH1106 support and related changes
- docs: OLED: note we have tested SSD1306 on ARM boards (per @XScorpion2)
- define out MEMORY_MODE when using SH1106 OLED driver

* document that SSD1306 128x64 on AVR works

Per @XScorpion2: https://github.com/qmk/qmk_firmware/pull/5787#discussion_r291837842
2019-06-20 09:05:32 +09:00
XScorpion2
2aa3b88823 Fixing OLED Driver for 128x64 displays (#6085) 2019-06-20 09:05:05 +09:00
Erez Zukerman
a31212a389 Merge pull request #74 from zsa/planckez-disable-leds
Planck Ez disable leds
2019-06-07 22:41:12 +08:00
Florian Didron
f55c4ced28 Allows disabling the RGB Matrix on the Planck EZ 2019-06-07 14:23:56 +09:00
Florian Didron
1a3f69b02a Moves the changelog to the wiki
New location: https://github.com/zsa/qmk_firmware/wiki/Changelog
2019-06-06 10:57:21 +09:00
Drashna Jaelre
b2f15ce264 Fix debouncing issue for eager algos (#73) 2019-06-06 10:39:00 +09:00
Drashna Jaelre
dc13f5f518 Add additional pins for Teensy 3.x and LC (#72) 2019-06-06 10:37:35 +09:00
Drashna Jaelre
61d1932f7c Parameterise STM32 I2C pin modes and timing parameters. (#5671) (#71)
I2C timing parameters were seemingly set up for an STM32F303 target MCU, at a specific clock speed. This commit allows specifying the timing parameters via config.h, allowing other STM32 MCUs to be targeted, potentially at different clock frequencies.
Alternate function modes for the I2C pins are now also configurable, allowing for remapping to other pins.
2019-06-06 10:16:02 +09:00
Drashna Jaelre
1ba27782ef Fixes compile errors for massdrop keyboards (#70) 2019-06-06 10:14:35 +09:00
Drashna Jaelre
9b248baf43 Moving rgb typedefs into a single location (#5978) (#69)
Because someone named the define poorly

Using full relative path as handwired/promethium has a color.h file
2019-06-06 09:11:34 +09:00
zvecr
f781b36aaa upgrade gcc-arm-none-eabi from the default 5.4.1 to 6.3.1 due to ARM runtime issues 2019-06-06 09:00:20 +09:00
Drashna Jaelre
028d02d1f1 Smallish overhaul of Auto-Shift feature (#67)
* Fix edge case when using One Shot Layer with Auto Shift, and it not triggering the cleanup
* Remove junk code (no longer used)
* Replace `(un)register_code` calls with `tap_code` where appropriate
* Fixed up Switch check to be more readable (less verbose)
* Simplified modifier check (if it comes back non-zero, there are mods)
* Add additional function calls for autoshift settings
* Made all variables static, since there are function calls to get their status
* Fixed up documentation
2019-06-04 18:02:39 +09:00
Drashna Jaelre
524e2b9487 Fix up scripts for ZSA repo 2019-06-04 17:59:59 +09:00
zvecr
3a96a585e1 Initial attempt to fix docker creating files as root 2019-06-04 17:59:59 +09:00
zvecr
6005f6b6bb Use qmk docker image for travis CI builds 2019-06-04 17:59:59 +09:00
Drashna Jaelre
12e79b6972 Fixing matrix_scan so it properly returns changed status on Ergodox E 2019-06-04 17:59:33 +09:00
Drashna Jaelre
a9f88d121e Add belgian layout for sendstring (#6008) (#64)
* belgian layout had no sendstring definition

* backtick was not defined for belgian sendstring

* slash definition was wrong for belgian sendstring

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

* use BE_ keys whenever we can

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

* ^ can be sent as a normal key (not a dead key) with altgr+para
2019-06-04 17:58:58 +09:00
Drashna Jaelre
a92ab87f98 Fixing matrix_scan so it properly returns changed status (#63) 2019-06-04 17:57:15 +09:00
Drashna Jaelre
bb71ba4b00 Fix TO() and DF() calling layer_state_set_[kb,user] twice (#6003) (#62) 2019-06-04 09:47:59 +08:00
Drashna Jaelre
4cb92b05ed Fix up Debouncing in AVR Templates (#5964) (#59) 2019-06-04 09:37:16 +08:00
chax
f3c7a253ca Add Solus support to linux_install.sh script
Add Solus support to linux_install.sh script

added update-repo command before install command
2019-06-04 09:34:43 +08:00
Florian Didron
877b962dcc Merge pull request #61 from zsa/a5_luis_rocks
A5 luis rocks
2019-05-28 19:40:25 +09:00
Florian Didron
4b6c1b8c2c And fix the A5 Play note too ! 2019-05-28 19:35:51 +09:00
Florian Didron
f76e726edd Fix A5 after songs 2019-05-28 18:29:13 +09:00
Florian Didron
4bc1ac65ca Merge branch 'master' into a5_luis_rocks 2019-05-28 17:33:46 +09:00
Florian Didron
96147e03e8 Fixes the A5 HIGH consistently with weird noise output 2019-05-28 17:29:01 +09:00
Florian Didron
9e86204fd4 Merge pull request #60 from zsa/f/startup_song_timing
Fix startup song timing
2019-05-27 16:50:39 +09:00
Florian Didron
548848645a Fix startup song timing 2019-05-27 16:39:59 +09:00
Florian Didron
655a4e7cec Merge pull request #57 from zsa/audio_click_delay
Adds a configurable initial delay to the audio clicky feature (#4286)
2019-05-20 15:56:47 +09:00
Florian Didron
5b346419c7 Merge branch 'master' into audio_click_delay 2019-05-20 15:56:09 +09:00
Florian Didron
0315ef645b Merge pull request #55 from zsa/fix/caps_lock_tap_hold_functions
Make delay for Capslock in Hold-Tap functions configurable  (#5497)
2019-05-20 15:55:10 +09:00
Florian Didron
680c966e8e Merge branch 'master' into fix/caps_lock_tap_hold_functions 2019-05-20 15:54:53 +09:00
Florian Didron
20218bebf5 Merge pull request #53 from zsa/driver/3733_enhancement
ISSI 3733 Driver Enhancement
2019-05-20 15:54:11 +09:00
Florian Didron
85291ed7a3 Merge pull request #50 from zsa/fix/split_common_i2c_backlight
Fix issue with Split Common backlight disabling
2019-05-20 15:53:21 +09:00
Florian Didron
b58ea9ad0f Merge branch 'master' into fix/split_common_i2c_backlight 2019-05-20 15:53:11 +09:00
Florian Didron
09e6b94927 Merge pull request #48 from zsa/add_python
Make python a required build dependency (#5784)
2019-05-20 15:49:50 +09:00
Florian Didron
75eb509452 Merge branch 'master' into add_python 2019-05-20 15:49:33 +09:00
Florian Didron
0cce8cbab0 Merge pull request #47 from zsa/fix/mouse_keys
Re-fix Mousekey Movements (#5740)
2019-05-20 15:48:54 +09:00
Florian Didron
3ed039ed76 Merge branch 'master' into fix/mouse_keys 2019-05-20 15:48:36 +09:00
Florian Didron
24d05fee49 Merge pull request #46 from zsa/fix/oled_driver_for_splits
Fix issuse with OLED Driver and Split Keyboard code
2019-05-20 15:47:50 +09:00
Florian Didron
a90a78c265 Merge branch 'master' into fix/oled_driver_for_splits 2019-05-20 15:47:42 +09:00
Florian Didron
3662999df2 Merge pull request #54 from zsa/rgb_light_effect_range
RGBLight Set Range
2019-05-20 15:27:50 +09:00
Florian Didron
5cb5e04f13 Merge pull request #32 from zsa/per_key_matrix_effects_part_1
Update to RGB Matrix LED structure
2019-05-20 09:44:07 +09:00
Ryan Caltabiano
0554bced7c Reduce rgb matrix firmware size 2019-05-19 16:02:42 -07:00
Ryan Caltabiano
18e15a7077 Added custom center point to rgb matrix 2019-05-19 16:02:38 -07:00
XScorpion2
2e08096ba6 Spirals, Pinwheels, and Documentation....Oh My! RGB Matrix Effects (#5877)
* Spirals, Pinwheels, and Documentation....Oh My!

* Spiral effect band thickness adjustments

* Fixing animation spin directions
2019-05-19 16:02:26 -07:00
XScorpion2
5b69491bac Fixing hsv_to_rgb where s = 0 and v < 255 (#5915)
* Fixing hsv to rgb where s is 0 and v is < 255

* Update color.c
2019-05-19 16:02:17 -07:00
XScorpion2
05e01eb565 Single Color Band scrolling left to right effects (#5867) 2019-05-19 16:02:13 -07:00
Josh
fd7caea42e Adds a configurable initial delay to the audio clicky feature (#4286)
* Adding an AUDIO_CLICKY_DELAY_DURATION configurable value to the AUDIO_CLICKY feature.

* Tweaking my community keymap to work better with my rev 4 planck.
2019-05-17 15:56:49 -07:00
Drashna Jaelre
1e51f568dd Make delay for Capslock in Hold-Tap functions configurable (#5497)
* Increase delay for Hold-Tap register for CAPSLOCK

Because it seems that the 80ms delay wasn't too much

* Screw it, make the caps delay a define and make it configurable
2019-05-17 12:18:33 -07:00
yiancar
1724b515b5 NK65 Addition (#5865)
* Nk65 initial commit

* Minor fix for compatibility

* Make everything pretty

* Update keyboards/nk65/config.h

Co-Authored-By: noroadsleft <18669334+noroadsleft@users.noreply.github.com>

* Update keyboards/nk65/readme.md

Co-Authored-By: noroadsleft <18669334+noroadsleft@users.noreply.github.com>

* Chmod Dummy

* Update getting_started_introduction.md

* Revert "Update getting_started_introduction.md"

This reverts commit daf446acf7ae4ae00488b389ce04f2cfca708d44.
2019-05-16 09:18:26 -07:00
Takeshi ISHII
cf1b36bf83 Add effect range to rgblight.c (#5856)
* add rgblight_set_effect_range()

* implement effect range

* Arrange the order of function list in rgblight.h .

* update docs/feature_rgblight.md

* fix RGBLIGHT_RAINBOW_SWIRL_RANGE default value

* add example code about Utility Functions

* add example code about direct operation functions

* When RGBLIGHT_SPLIT is defined, the following function has no meaning and is invalidated.

 * rgblight_setrgb_master(r, g, b)
 * rgblight_setrgb_slave(r, g, b)
 * rgblight_sethsv_master(h, s, v)
 * rgblight_sethsv_slave(h, s, v)

* add temporary test code for rgblight_set_effect_range

* fix rgblight_effect_knight() bug

* Test End. Revert "add temporary test code for rgblight_set_effect_range"

This reverts commit 5680cddd012d68b2db75a532862a7fef250f8973.
2019-05-16 09:16:13 -07:00
Erez Zukerman
689303e49f Merge pull request #52 from zsa/f/default-debounce
Restores Ergodox default Debounce value
2019-05-16 11:26:59 -04:00
Florian Didron
37d0686bd0 Restores Ergodox default Debounce value 2019-05-17 00:20:21 +09:00
Florian Didron
8ca41899d2 Merge pull request #49 from zsa/fix/planck_ez_a5_high
make a5 high when not in use
2019-05-15 09:51:01 +09:00
XScorpion2
95e4c8a461 Fix for Solid Reactive mode bug (#5846)
derp, forgot to remove the pragma once
2019-05-11 12:35:12 -07:00
Drashna Jaelre
c4f2f95db8 Enable additional animation modes for the Glow keyboards 2019-05-10 23:06:45 -07:00
XScorpion2
a8ed2608b5 RGB Matrix Effects: Cycle Out to In & Cycle Out to In Dual (#5812) 2019-05-10 23:02:43 -07:00
XScorpion2
665e719e31 Cleanup/rgb matrix (#5811)
* clean up rgb matrix extern usage

Moved rgb matrix boiler plate into macros

Rebased onto typing heatmap pr

* Fixing the reversed frame buffer access in digital rain

* Fixing digital rain & typing heatmap if keyreactive effects are not enabled

* Apply suggestions from code review

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

* Adding parenthesizes to DRIVER_LED_TOTAL where necessary

* Updated docs

* added notes about parentheses
2019-05-10 23:02:43 -07:00
Rainer Clasen
5d9a4c4414 [Split] fix split_common i2c backlight disabling (#3886)
slave backlight was always on - as get_backlight_level() doesn't
indicate if the backlight is enabled or not.

also updated the corosponding code for serial transport to stop peeking
directly at 'internal' backlight_config structure.
2019-05-10 18:36:35 -07:00
XScorpion2
b4dab5b09b RGB Matrix Typing Heatmap (#5786)
* RGB Matrix Typing Heatmap Effect

* Fixing file name and effect init
2019-05-07 21:49:07 -07:00
XScorpion2
4d57a049b5 rgb_led struct conversion (aka: Per led (key) type rgb matrix effects - part 2) (#5783)
* Initial conversion of the rgb_led struct

* Converting last keyboard & updating effects to take advantage of the new structure

* New struct should not be const

* Updated docs

* Changing define ___ for no led to NO_LED

* Missed converting some keymap usages of the old struct layout
2019-05-07 21:48:47 -07:00
XScorpion2
6364fe4efb Updated rgb_led struct field modifier to flags (#5619)
Updated effects to test led flags
Updated massdrop to use new flags field for led toggle
2019-05-07 21:45:35 -07:00
Jack Humbert
51cc6f398d make a5 high when not in use 2019-05-07 09:48:43 -07:00
skullydazed
9ab77d760c Make python a required build dependency (#5784)
* Make python a required build dependency

* Add missing color

* fixup sabayon linux per @BlitzKraft
2019-05-06 23:43:56 -07:00
Drashna Jaelre
be58a68473 Re-fix Mousekey Movements (#5740)
* Re-fix Mousekey Movements

After the new movement model was instroduced, it broke diagonal momement, again.  Reapplying fix from #3147 to both old and new acceleration method.

* Make diagonal mouse report checks more readable

Co-Authored-By: drashna <drashna@live.com>
2019-05-06 23:35:36 -07:00
XScorpion2
4b5a0375d4 Fix issuse with OLED Driver and Split Keyboard code 2019-05-06 23:27:30 -07:00
Florian Didron
ff3e430970 Merge pull request #45 from zsa/feature/unicode_map_improvements
New keycode macro (XP) for shifted character pairs using UNICODEMAP +…
2019-05-06 10:35:55 +09:00
Florian Didron
270ab0d3fb Merge branch 'master' into feature/unicode_map_improvements 2019-05-06 10:35:24 +09:00
Florian Didron
43aae47b38 Merge pull request #44 from zsa/enable_lto_option
Add option to enable LTO easily  (#5674)
2019-05-06 10:32:42 +09:00
Florian Didron
c7d9b48cc9 Merge branch 'master' into enable_lto_option 2019-05-06 10:32:32 +09:00
Florian Didron
3c5dd583e1 Merge pull request #43 from zsa/fix/space_cadet
Space Cadet: Reducing unnecessary reported keypresses (#5781)
2019-05-06 10:29:48 +09:00
Florian Didron
3504bf30e1 Merge pull request #42 from zsa/feature/add_dfu_util_signature
Add DFU Suffix for ARM boards (#5763)
2019-05-06 10:04:59 +09:00
Florian Didron
7a136f7440 Merge pull request #41 from zsa/fix/lib_src_insert_point
Fix LIB_SRC insert position (#5731)
2019-05-06 10:03:10 +09:00
Florian Didron
8e9ac7d142 Merge pull request #40 from zsa/feature/rgblight_static_breathing_table
Use a fixed table if breathing center is not defined for RGB Light
2019-05-06 10:01:42 +09:00
Florian Didron
46ea7dfd51 Merge pull request #39 from zsa/fix/hue_to_rgb_tuning
Adjusted the linear led table and hsv_to_rgb to better handle 255 hue
2019-05-06 09:58:00 +09:00
Florian Didron
1f3fd52b6d Merge pull request #38 from zsa/fix/rgb_matrix_simple_reaction_tracking
Simple fix for selecting which tracked key press to work off of for s…
2019-05-06 09:57:16 +09:00
Florian Didron
e622e6d1bb Merge pull request #37 from zsa/feature/rgb_matrix_led_lookup
Implement kb function for rgb matrix to led lookup
2019-05-06 09:54:03 +09:00
Florian Didron
2a70dc8eea Merge pull request #36 from zsa/fix/ws2812_matrix_refs
Fixing incorrect usage of RGBLED_NUM in ws2812 driver when used with RGB Matrix (#5744)
2019-05-06 09:53:18 +09:00
Florian Didron
feb7c58f30 Merge pull request #35 from zsa/fix/rgblight_hue_range
Realign RGB Light HUE range
2019-05-06 09:52:39 +09:00
Konstantin Đorđević
4f2efc06ce New keycode macro (XP) for shifted character pairs using UNICODEMAP + bug fixes and improvements (#4803)
* Expose unicode_saved_mods

* Add UNICODEMAP shift pair functionality and XS keycode

* Add XS to keycode reference documentation

* Pick pair index based on both Shift and Caps Lock state

* Add XS to Unicode feature docs

* Clean up process_unicode* headers

* Extract unicode_map index calculation into function

* Pick pair index as XOR rather than OR of Shift and Caps states

* unicode_input_start() has to be called before the unicode_map index is calculated

* Replace unicodemap_input_error() with more generic unicode_input_cancel()

* Replace register+tap+unregister with tap_code16(LCTL(LSFT(KC_U)))

* UNICODE_OSX_KEY → UNICODE_KEY_OSX, UNICODE_WINC_KEY → UNICODE_KEY_WINC

* Make keycode range checks more robust

* Fix keycode range checks for different input modes

* Add UNICODE_KEY_LNX, update docs

* QK_UNICODEMAP_SHIFT → QK_UNICODEMAP_PAIR

* XS → XP, update docs

* Tweak Unicode docs

* Use recently added MOD_MASK_SHIFT and IS_HOST_LED_ON helpers

* Update Unicode table in docs/keycodes.md

* Update Unicode docs per review comments

* Replace references to Mac OS X with macOS in Unicode docs

* As of v0.9.0, WinCompose supports all possible code points

* Expand descriptions in XP docs

* Update keycode table and cycling docs

* Further expand cycling docs
2019-05-05 17:42:18 -07:00
Drashna Jaelre
8903b7913a Add option to enable LTO easily (#5674)
* Add option to enable LTO easily and disable features that cause compiling errors with LTO

* Add documentation about LTO option

* Add to show_options
2019-05-05 17:31:48 -07:00
XScorpion2
25aa7bcbdb Space Cadet: Reducing unnecessary reported keypresses (#5781)
* Reducing unnecessary reported keypresses and minor docs / variable name changes

* Apply suggestions from code review

Co-Authored-By: XScorpion2 <rcalt2vt@gmail.com>
2019-05-05 16:40:51 -07:00
Takeshi ISHII
19c6b7fe10 Fix LIB_SRC insert position (#5731)
The insertion point for `$(patsubst %.c,%.clib,$(LIB_SRC))` must be after all normal `SRC += ..` . I modified it to be so.

Because LIB_SRC and SRC are assumed to be used in pairs. Similarly, QUANTUM_LIB_SRC and QUANTUM_SRC are assumed to be used in pairs.
2019-05-03 08:38:46 -07:00
Drashna Jaelre
caef39bf2a Add DFU Suffix for ARM boards (#5763)
* Add DFU Suffix for ARM boards

* Blindly flash DFU SUFFIX ARGS for now

* Fix commented out check

* Fix DFU Suffix Argument check

Thank you jack!

* Update Travis CI Scripts to include dfu-util

So we can get dfu-suffix as well

* Manually add dfu-suffix package

* Use external repo for newer version of dfu-util

One that includes dfu-suffix

* Update .travis.yml

* Silence unnecessary output from dfu-suffix
2019-05-03 08:36:43 -07:00
Takeshi ISHII
4550e29f95 If RGBLIGHT_EFFECT_BREATHE_CENTER is undefined, use fixed breathe table instead of exp() and sin() (#5484)
* If RGBLIGHT_EFFECT_BREATHE_CENTER is undefined, use fixed breathe table instead of exp() and sin()

* Change rgblight breathing table size to be easily selectable.

add RGBLIGHT_BREATHE_TABLE_SIZE macro for customize breathing effect.
2019-05-02 09:12:28 -07:00
XScorpion2
22426a4b4a Adjusted the linear led table and hsv_to_rgb to better handle 255 hue (#5739)
* Adjusted the linear led table and hsv_to_rgb to better handle 255 hue

* small math adjustments to better handle specific uint8_t rounding and overflows
2019-05-01 19:08:52 -07:00
XScorpion2
2351739cd9 Simple fix for selecting which tracked key press to work off of for simple reactive effects (#5745) 2019-05-01 13:27:44 -07:00
XScorpion2
882b8df7af Implement kb function for rgb matrix to led lookup (#5738) 2019-05-01 08:57:17 -07:00
XScorpion2
fd776b06b3 Fixing incorrect usage of RGBLED_NUM in ws2812 driver when used with RGB Matrix (#5744) 2019-05-01 08:52:54 -07:00
XScorpion2
8a9e766bdc rgblight 255 hue (#5547) 2019-05-01 08:47:37 -07:00
Florian Didron
59d28fe288 Merge pull request #34 from zsa/fix/mouse_movement
Re-fix Mousekey Movements
2019-04-30 15:42:23 +09:00
Florian Didron
fd06a342ee Merge pull request #33 from zsa/feature/per_level_matrix_effects
RGB Matrix: Custom effects on a kb/user level
2019-04-30 15:42:06 +09:00
Drashna Jaelre
c382378a35 Re-fix Mousekey Movements 2019-04-29 23:15:08 -07:00
Florian Didron
882651dc06 Merge pull request #31 from zsa/fix/lib8tion_functions
Fix/lib8tion functions
2019-04-30 15:14:37 +09:00
Florian Didron
c3d6f89274 Merge pull request #30 from zsa/feature/space_cadet
Simple extended space cadet (#5277)
2019-04-30 15:12:53 +09:00
Florian Didron
f6743b86a9 Merge pull request #29 from zsa/fix/planck_ez_leds
[Keyboard] Fix red an green leds location (qmk#5698)
2019-04-30 15:11:58 +09:00
Florian Didron
edf5c533d6 Merge pull request #28 from zsa/fix/wake_on_chibos
Fix wakeup function on ChibiOS
2019-04-30 15:11:26 +09:00
Daniel Prilik
b6648f46a8 RGB Matrix: Custom effects on a kb/user level (#5338)
* Revamped custom effects approach

See docs for example usage

* push-up RGB Matrix default mode

Override default effect using RGB_MATRIX_STARTUP_MODE.
Useful on boards without EEPROM support
(*cough* Massdrop ALT/CTRL *cough*)

* update docs
2019-04-29 22:32:18 -07:00
XScorpion2
51b568a197 Removed forced in lining for lib8tion functions (#5670) 2019-04-29 22:24:52 -07:00
Alec Geatches
396c6adaa8 Change lib8tion library to be usable in user keymaps (#5598)
* Move lib8tion header-defined constant into implementation file, add to build

* Move b_m16_interleave initializtion to lib8tion.c, change build to include lib8tion.c in QUANTUM_LIB_SRC

* Remove left-over whitespace

* Move lib8tion include by RGB_MATRIX_ENABLE code in makefile

* Revert build changes and change lib8tion b_m16_interleave constant to static
2019-04-29 22:24:51 -07:00
XScorpion2
38c65e4928 Simple extended space cadet (#5277)
* Simplifying and Extending Space Cadet to work on Ctrl and Alt keys

* PR Review feedback

* Reverting back to keycodes
2019-04-29 22:11:57 -07:00
Florian Didron
9e8cd4f5ea [Keyboard] Fix red an green leds location (#5698) 2019-04-28 02:11:06 -07:00
Florian Didron
c941ef0f09 Merge pull request #27 from zsa/src_fix
Src fix
2019-04-26 11:16:03 +09:00
Florian Didron
eedffbdfc4 Merge branch 'master' into src_fix 2019-04-26 11:15:53 +09:00
Florian Didron
1a3d6cd98f Merge pull request #26 from zsa/rgb_updates
RGB Light Updates
2019-04-26 11:13:40 +09:00
Drashna Jaelre
cc1e4cde13 Fix wakeup function on ChibiOS
Somebody was a very, very bad boy, and did a poor job of copy-pasting
2019-04-25 18:59:31 -07:00
Drashna Jaelre
98a35272cf Add changelog 2019-04-24 15:25:43 -07:00
Takeshi ISHII
d663b42978 fix LIB_SRC and QUANTUM_LIB_SRC for ARM (#5623)
* fix LIB_SRC and QUANTUM_LIB_SRC for ARM(chibios)

* remove ARFLAGS

* tmk_core/arm_atsam.mk:AR: remove 'rcs'
2019-04-24 15:20:32 -07:00
Drashna Jaelre
ebca01b46b Add changelog 2019-04-24 15:18:44 -07:00
Rockman18
d1d0211bf1 [FIX] Misspelled RGB_YELLOW (#5692) 2019-04-24 15:17:55 -07:00
Erovia
190bc5bada Define RGB colors (#5300)
* Define RGB colors
Define RGB colors and pass them to the rgblight functions, instead of
defining multiple macros.
2019-04-24 15:17:21 -07:00
mtei
5a7085b642 add RGBLIGHT_SPLIT_SET_CHANGE_MODEHSVS; to rgblight_update_dword() 2019-04-24 15:15:29 -07:00
mtei
2e76759f76 add RGBLIGHT_SPLIT_SET_CHANGE_MODEHSVS; to eeconfig_update_rgblight_default() 2019-04-24 15:15:21 -07:00
Florian Didron
b71e3e80c6 Merge pull request #25 from zsa/fix/travis_check
Improve Travis CI Script
2019-04-24 09:19:42 +09:00
Drashna Jaelre
8eb37fa4f3 Add proper keymaps for glow and reactive glow 2019-04-23 08:34:37 -07:00
Drashna Jaelre
57bfdd8b50 Remove additional unneeded Planck files 2019-04-23 08:23:32 -07:00
Drashna Jaelre
1267504957 Compile all keymaps
Specifically, we want to make sure that the Ergodox EZ Glow keymap is compiled here
2019-04-23 08:22:32 -07:00
Florian Didron
9f37354851 Merge pull request #24 from zsa/fix/rgb_matrix_init
Fix RGB Matrix EEPROM initialization
2019-04-23 11:08:31 +09:00
Florian Didron
bd66bf5f8f Merge branch 'master' into fix/rgb_matrix_init 2019-04-23 11:08:16 +09:00
Florian Didron
f93b7b53b7 Merge pull request #23 from zsa/fix/avr_gcc_compiler
Fix AVR GCC 8.x compiler error
2019-04-23 11:06:56 +09:00
Florian Didron
2d95c30c28 Merge branch 'master' into fix/avr_gcc_compiler 2019-04-23 11:06:48 +09:00
Florian Didron
7ca465911d Merge pull request #22 from zsa/mouse_keys
Improvements to Mousekey's Constant speed mode
2019-04-23 08:46:25 +09:00
Florian Didron
d22fda3ca4 Merge branch 'master' into mouse_keys 2019-04-23 08:46:07 +09:00
Florian Didron
ff2838d2dd Merge pull request #21 from zsa/feature/more_reactive_modes
Adds three addition RGB Matrix Reactive modes
2019-04-23 08:45:08 +09:00
Florian Didron
86f437c81f Merge branch 'master' into feature/more_reactive_modes 2019-04-23 08:44:46 +09:00
Florian Didron
95462d0d65 Merge pull request #20 from zsa/feature/oled_driver
Adds support for OLED Driver
2019-04-23 08:44:02 +09:00
Florian Didron
c3a160bf72 Merge branch 'master' into feature/oled_driver 2019-04-23 08:43:47 +09:00
Florian Didron
70945f1146 Merge pull request #19 from zsa/feature/split_rgb
Adds the Split RGBLight support
2019-04-23 08:42:36 +09:00
Drashna Jaelre
9470a4b17d Add changelog 2019-04-22 10:16:43 -07:00
Drashna Jaelre
3dbbb83d59 Init RGB Matrix EEPROM
I'm not sure how to check if it's the same as RGBLIGHT's EEPROM, but if you don't init it, it **will not** work properly until it is initialized.
2019-04-22 10:16:09 -07:00
Drashna Jaelre
e0fe8edb2d Add changelog 2019-04-22 10:14:50 -07:00
Danny Nguyen
25c88b2bb4 Make sure NOBITS is set on reset_key
Patch from https://github.com/qmk/qmk_firmware/issues/3657#issuecomment-415147411

Long story short, in avr-gcc pre-8.2, reset_key was assigned to a memory area that was in a normal range, but when 8.2 came out, that memory got moved to an out of range area, causing errors like 0x800293 out of range. Apparently, this was fixed up in avr-gcc, but we haven't seen a release with the fix yet (we expected it in 8.3, but that didn't happen for some reason).

What this commit does is move the reset_key back to the original memory location it was in before.
2019-04-22 10:14:29 -07:00
Drashna Jaelre
9f180afb25 Add changelog 2019-04-22 10:12:18 -07:00
Markus Weimar
3fe282f1c1 Improve mouse keys docs and constant speed mode 2019-04-22 10:11:20 -07:00
Drashna Jaelre
5959e23fd0 Add changelog 2019-04-22 10:02:46 -07:00
M-AS
6cb88628e9 RGB Matrix Animations: Three/six new reactive effects (wide, cross, nexus) (#5602)
* added 3 new RGB_Matrix effects

* made cross effect behavior smoother

* removed dead code

* added effect descriptions
2019-04-22 10:00:54 -07:00
Drashna Jaelre
28cbf7c352 Add changelog 2019-04-22 09:58:01 -07:00
Ryan Caltabiano
95f8ac3424 OLED Driver Feature 2019-04-22 09:55:39 -07:00
Drashna Jaelre
4bbdd77e83 Add Changelog 2019-04-22 09:49:38 -07:00
Takeshi ISHII
cedda573be Change split_common to use RGBLIGHT_SPLIT (#5509)
* add I2C_slave_buffer_t to quantum/split_common/transport.c

Improvements to ease the maintenance of the I2C slave buffer layout. And this commit does not change the compilation results.

* add temporary pdhelix(Patched Helix) code

* temporary cherry-pick from #5020

add new version(#5020) quantum/rgblight.[ch], quantum/rgblight_modes.h

* add post_config.h support to build_keyboard.mk

* add quantum/rgblight_post_config.h, quantum/split_common/post_config.h

Add quantum/rgblight_post_config.h and quantum/split_common/post_config.h using POST_CONFIG_H variable of build_keyboard.mk.

quantum/rgblight_post_config.h additionally defines RGBLIGHT_SPLIT if RGBLED_SPIT is defined.

quantum/split_common/post_config.h defines RGBLIGHT_SPLIT additionally when master-slave communication is I2C.

* Change split_common's transport.c I2C to use the synchronization feature of rgblight.c

* Change split_common's transport.c serial to use the synchronization feature of rgblight.c

* test RGBLIGHT_SPLIT on keyboards/handwired/pdhelix

* Test End Revert "test RGBLIGHT_SPLIT on keyboards/handwired/pdhelix"

This reverts commit 80118a6bbd3d9fc4c7797fef0c34bc67aa73aa98.

[x] make RGBLIGHT_TEST=1 handwired/pdhelix/i2c:default
[x] make RGBLIGHT_TEST=2 handwired/pdhelix/i2c:default (same RGBLIGHT_TEST=3)
[x] make RGBLIGHT_TEST=3 handwired/pdhelix/i2c:default

[x] make RGBLIGHT_TEST=1 handwired/pdhelix/pd2:default
[x] make RGBLIGHT_TEST=2 handwired/pdhelix/pd2:default
[x] make RGBLIGHT_TEST=3 handwired/pdhelix/pd2:default

[x] make RGBLIGHT_TEST=1 handwired/pdhelix/pd2_2oled:default
[x] make RGBLIGHT_TEST=2 handwired/pdhelix/pd2_2oled:default
[x] make RGBLIGHT_TEST=3 handwired/pdhelix/pd2_2oled:default

* Test End, Revert "temporary cherry-pick from #5020"

This reverts commit d35069f68bda0c50370442a5c7aae60c2f4ce5c0.

* Test End, Revert "add temporary pdhelix(Patched Helix) code"

This reverts commit aebddfc1a879796afae297ef0723a4fe73af3660.

* temporarily cherry-pick from #5020 to see if it passes the travis-ci test.

add new version(#5020) quantum/rgblight.[ch], quantum/rgblight_modes.h

* Passed the travis-ci test. Revert "temporarily cherry-pick from #5020 to see if it passes the travis-ci test."

This reverts commit 647c0a9755eb6a05f76d09b2d59bce67b85a841f.

* update docs/config_options.md

* update split_common/transport.c, improves maintainability of serial transaction IDs.

No change in build result.

* temporary cherry-pick from #5020

* fix build fail keebio/iris/rev3:default

* fix build fail lets_split_eh/eh:default

* Revert "temporary cherry-pick from #5020"

This reverts commit be48ca1b4515366a097af8dd1cd7b28b7ee09947.

* temporary cherry-pick from #5020 (0.6.336)

* Revert "temporary cherry-pick from #5020 (0.6.336)"

This reverts commit 978d26a8b3cf0acc485838a7d76d6128b77c630c.

* temporary cherry-pick from #5020 (0.6.336)
2019-04-22 09:48:10 -07:00
Takeshi ISHII
f661d86d97 Add function to support split-keyboard in rgblight.[ch]. (#5020)
* add temporary file that is rgblight.c call graph

* add rgblight_update_hook()

* update rgblight-call-graph.dot (temporary file)

* add more hook point

* add TODO comment

* temporary Revert "add TODO comment"

This reverts commit df6165aac9b3a31d1d3e31ce52aadc134b84eac2.

* temporary Revert "add more hook point"

This reverts commit 64592b06f3bcdaac47c59f922018a273bef76776.

* temporary Revert "add rgblight_update_hook()"

This reverts commit 432b74c912ed4333e6633e20a1bcda10c6a10eaf.

* add rgblight_update_hook()

* add more hook point

* add TODO comment

* implement rgblight_update_hook()

* remove rgblight_update_hook(), add RGBLIGHT_SPLIT_SET_CHANGE_XXXX

rgblight_update_hook() is too large.
change to simple flag setting.

* shrink rgblight_config_t

* implement rgblight_update_sync()

Note: The animation synchronization process has not been implemented yet.

* update quantum/rgblight-call-graph.dot (temporary file)

* rmove quantum/rgblight-call-graph.dot (temporary file)

* update rgblight.c

* Add temporary code to Helix keyboard 'five_rows' keymap to test rgblight.c .

* fix build break rgblight_update_sync() when all animation off

* fix quantum/rgblight.c:rgblight_disable_XX() add RGBLIGHT_SPLIT_SET_CHANGE_MODE

* quantum/rgblight.c change code order: move rgblight_update_sync()

* add mode_base_table[] to quantum/rgblight.c

* quantum/rgblight.c use mode_base_table[] and rgblight_status.base_mode

* quantum/rgblkght.c animation timer integration

* quantum/rgblkght.c add animation sync for split keyboard

* fix mode_base_table[] and snake effect

* fix build break keyboards/mxss.

keyboards/mxss's local rgblight.c need old version rgblight.h

* rgblight.c: fix animation sync

* quantum/rgblight.c: fix snake effect sync

* quantum/rgblight.c: animation sync interverl 30 sec

* quantum/rgblight.c: fix rgblight_effect_rainbow_swirl() and rgblight_effect_knight()

* quantum/rgblight.c: add macro RGBLIGHT_SPLIT_ANIMATION

* cherry-pick from 'rgblight_modes.h sample implementation'

* fix RGBLIGHT_SPLIT_ANIMATION check position

* Update temporary code in Helix keyboard 'five_rows' keymap to test rgblight.c

* Reduce the firmware size by 1500 bytes when rgblight_effect_breathing() is enabled.

* Changed to rgblight_sethsv_eeprom_helper() for easier reading.

* add fail-safe code to quantum/rgblight.c:rgblight_task(),rgblight_timer_enable()

* remove temporary code in Helix keyboard 'five_rows' keymap

* quantum/rgblight.c: add split-keyboard master side sync functions

add functions:
  uint8_t rgblight_get_change_flags(void);
  void rgblight_clear_change_flags(void);
  void rgblight_get_syncinfo(rgblight_syncinfo_t *syncinfo);

change function:
  void rgblight_update_sync(rgblight_syncinfo_t *syncinfo, bool write_to_eeprom);

* Change rgblight_update_sync() to use write_to_eeprom.

* remove TODO comment from quantum/rgblight.h

* Revert "fix build break keyboards/mxss."

This reverts commit 90b9a1aa7d8af226751500e49e3ea0214cc4e024.
(Separated this change into the newly opened PR #5461.)

* Revert "Reduce the firmware size by 1500 bytes when rgblight_effect_breathing() is enabled."

This reverts commit b61004e63e82cf5334cee4def4ba10cffa88885f.

* update quantum/rgblight.c: Code size reduction when not using RGBLIGHT_SPLIT.

* Add temporary code to Helix keyboard 'five_rows' keymap to test rgblight.c .

* add temporary pdhelix(Patched Helix) code

* Add temporary code to split_common/transport.c to test rgblight.c.

* Finish testing rgblight.c with helix keyboard.

Revert "Add temporary code to Helix keyboard 'five_rows' keymap to test rgblight.c ."

This reverts commit 0bf81a4723a977adc0cb09b4272ee5c9b4f2bbbb.

* Finish testing rgblight.c with quantum/split_common code.

Revert "Add temporary code to split_common/transport.c to test rgblight.c."

This reverts commit 71db3e24eef40d4c455fb9fd1664e4487c9d927a.

* remove temporary pdhelix(Patched Helix) code

This reverts commit 5287e51a394741bcb6028c7cfc0dd0c984645f76.

* Added description of RGBLIGHT_SPLIT macro to docs/feature_rgblight.md.

* add RGBLIGHT_SPLIT_SET_CHANGE_HSVS to rgblight_init()

* Changed to restart animation only when changing mode.

When changing hue, sat and val, the animation is not restarted and continues.
2019-04-22 09:47:36 -07:00
Florian Didron
0a04a0e419 Merge pull request #18 from ErgoDox-EZ/fix/rgb_matrix_toggle
Only increment Enable status for RGB Matrix if it supports it
2019-04-21 06:28:25 +09:00
Drashna Jaelre
0886c7ce57 Update rgb_matrix.c 2019-04-20 09:28:44 -07:00
Drashna Jaelre
60204faed0 Only increment Enable status for RGB Matrix if it supports it 2019-04-20 09:20:26 -07:00
Florian Didron
0612c9968b Merge pull request #17 from ErgoDox-EZ/fix/eager_pr_bug
Fix the Eager Per Row debouncing bug
2019-04-19 08:16:24 +09:00
Florian Didron
c8cbf4733a Merge branch 'master' into fix/eager_pr_bug 2019-04-19 08:03:50 +09:00
Florian Didron
021df9d028 Merge pull request #16 from ErgoDox-EZ/f/change-ergodox-debounce
Change ErgodoxEZ default debounce
2019-04-19 08:03:07 +09:00
Drashna Jaelre
9c17531c19 Add changelog for eager PR fix 2019-04-18 15:48:58 -07:00
Alex Ong
bcb37d5f57 [core] Fix for eager_pr #5643
Added extra transfer_matrix_values() call whenever counters don't need updating
2019-04-18 15:48:00 -07:00
Florian Didron
69ab70c97c Merge branch 'master' into f/change-ergodox-debounce 2019-04-18 11:09:57 +09:00
Florian Didron
f5e47ed1e5 Merge pull request #15 from ErgoDox-EZ/fix/changelog-formatting
Fixes the changelog formatting.
2019-04-18 11:09:20 +09:00
Florian Didron
52044905a4 Update changelog.md 2019-04-18 11:08:57 +09:00
Florian Didron
c752284c7c Set default debounce to 5 2019-04-18 11:03:58 +09:00
Florian Didron
ad02b62dd2 Fixes the changelog formatting. 2019-04-18 10:21:16 +09:00
Florian Didron
25a9a2f91c Merge pull request #14 from ErgoDox-EZ/remove_music
Remove all potentially copyrighted sounds from the repo
2019-04-18 10:05:13 +09:00
Florian Didron
b51f1e0971 Merge pull request #13 from ErgoDox-EZ/feature/ws2812_matrix
Features/ws2812 matrix driver (#5418)
2019-04-18 10:04:32 +09:00
Florian Didron
51a682bb9c Merge branch 'master' into feature/ws2812_matrix 2019-04-18 10:03:45 +09:00
Florian Didron
09d1ff9a32 Merge pull request #12 from ErgoDox-EZ/fix/configurator_change
Fix Ergodox EZ keyboard dimensions in info.json
2019-04-18 09:59:52 +09:00
Florian Didron
5f65ba63e7 Merge branch 'master' into fix/configurator_change 2019-04-18 09:59:43 +09:00
Florian Didron
362eaec0a3 Merge pull request #11 from ErgoDox-EZ/fix/combo_logic
Fixes logic for Combo Feature
2019-04-18 09:58:13 +09:00
Florian Didron
12c0611189 Merge branch 'master' into fix/combo_logic 2019-04-18 09:57:19 +09:00
Florian Didron
54a7f66aee Merge pull request #10 from ErgoDox-EZ/fix/eager_debouncing
Eager pk/pr optimization
2019-04-18 09:46:44 +09:00
Drashna Jaelre
eed7c15c2f Remove any potentially copyrighted soungs/sounds from the repo 2019-04-17 13:36:14 -07:00
Drashna Jaelre
7b3545c3d8 Update changelog.md 2019-04-16 18:21:13 -07:00
Alex Ong
4c2444a4e2 Eager pk/pr optimization (#5621)
* Optimizations to eager_pk

* eager_pr also uses changed boolean now.
2019-04-16 18:19:25 -07:00
Drashna Jaelre
a5ded39656 Update changelog.md 2019-04-16 18:18:57 -07:00
Drashna Jaelre
e26b21baf4 Update changelog.md 2019-04-16 18:18:15 -07:00
Drashna Jaelre
7f3d1b627c Update changelog.md 2019-04-16 18:16:26 -07:00
XScorpion2
e3fce19c55 Features/ws2812 matrix driver (#5418)
* WS2812 driver implementation for RGB Matrix

* Added driver configuration docs
2019-04-16 18:11:33 -07:00
noroadsleft
417d80d421 Fix Ergodox EZ keyboard dimensions in info.json 2019-04-16 18:05:44 -07:00
Bob
637c276070 fix combo enabling logic (#5610) 2019-04-16 18:04:58 -07:00
Florian Didron
590a07bf94 Merge pull request #9 from ErgoDox-EZ/simplify_travis
Streamline Travis CI scripting
2019-04-16 18:58:54 +09:00
Florian Didron
743fda2658 Merge pull request #8 from ErgoDox-EZ/readme_update
Readme Update
2019-04-16 18:56:34 +09:00
Florian Didron
7b19fcc9e9 Merge pull request #7 from ErgoDox-EZ/alt_gr_send_string
Alt gr send string
2019-04-16 18:52:44 +09:00
Florian Didron
72537dd8e9 Merge branch 'master' into alt_gr_send_string 2019-04-16 18:45:44 +09:00
Florian Didron
7a5cbcac9f Merge pull request #5 from ErgoDox-EZ/ble_naming
Remove keyboard description from Adafruit BLE device name
2019-04-16 18:42:16 +09:00
Florian Didron
bb91bc4309 Merge pull request #4 from ErgoDox-EZ/updates_zsa
Port DIRECT_PINS from split_common/matrix.c to matrix.c (qmk#5091)
2019-04-16 18:41:12 +09:00
Erez Zukerman
1fa1feec59 Update readme.md
Co-Authored-By: drashna <drashna@live.com>
2019-04-15 17:26:03 -07:00
Erez Zukerman
8b5c5b5699 Update readme.md
Co-Authored-By: drashna <drashna@live.com>
2019-04-15 17:25:24 -07:00
Erez Zukerman
cd1a59c614 Update readme.md
Co-Authored-By: drashna <drashna@live.com>
2019-04-15 17:25:01 -07:00
Drashna Jaelre
e2f96b9d53 Streamline Travis CI scripting
We don't need anything fancy, just a few tests, and that's it. All of the QMK Firmware stuff is excessive for what we need.
2019-04-12 17:19:50 -07:00
Drashna Jaelre
33178f1261 update readme 2019-04-12 15:11:44 -07:00
Drashna Jaelre
36f667f09e Add changelog 2019-04-12 14:55:50 -07:00
Drashna Jaelre
6e57437c42 Add AltGr/RALT support to Send String qmk#4046) 2019-04-12 14:54:40 -07:00
Drashna Jaelre
317735239f Create/update changelog.md 2019-04-12 14:39:54 -07:00
fauxpark
4506931676 Remove keyboard description from Adafruit BLE device name 2019-04-12 11:00:56 -07:00
zvecr
60ffa59a77 Port DIRECT_PINS from split_common/matrix.c to matrix.c (#5091)
* Port DIRECT_PINS from split_common/matrix.c to matrix.c

* Reorder matrix.c to remove foward declaration and match split_common/matrix.c

* Refactor nano to use DIRECT_PINS

* Reorder matrix.c to remove foward declaration and match split_common/matrix.c

* Add DIRECT_PINS documentation

* Reorder matrix.c to remove foward declaration and match split_common/matrix.c - fix logic from inherited from split_common

* Add DIRECT_PINS documentation - review comments
2019-04-12 10:56:50 -07:00
Florian Didron
ea4581cef1 Merge pull request #2 from drashna/ez_update_rgb
Update Ergodox EZ Repo with RGB Overhaul (Proper)
2019-04-10 18:39:47 +02:00
Alex Ong
4a98f1e7a0 ergodox_ez: fixed bug where debounce() was called without calculating changed (#5589) 2019-04-09 09:50:10 -07:00
Jack Humbert
f2332d2bcb Adds the Planck EZ, 3737 RGB, fixes out-of-tune notes (#5532)
* RGB Matrix overhaul
Breakout of animations to separate files
Integration of optimized int based math lib
Overhaul of rgb_matrix.c and animations for performance

* Updating effect function api for future extensions

* Combined the keypresses || keyreleases define checks into a single define so I stop forgetting it where necessary

* Moving define RGB_MATRIX_KEYREACTIVE_ENABLED earlier in the include chain

* Adds the Planck EZ, 3737 RGB, fixes out-of-tune notes

* fix bug in quantum/rgb_matrix_drivers.c

Co-Authored-By: jackhumbert <jack.humb@gmail.com>

* update command setting to the correct default

* correct rgb config

* remove commented-out lines

* update docs for the 3737

* Update docs/feature_rgb_matrix.md

Co-Authored-By: jackhumbert <jack.humb@gmail.com>
2019-04-09 09:50:09 -07:00
Bob
dc9736a806 Switch process_combo to using global register and timer (#2561)
Since combos keep local state about what keys have been previously pressed, when combos are layered, multiple keypresses will register for any key with multiple combos assigned to it. In order to fix this, I switched process_combo to use a global keycode / keyrecord register and timer. When a keypress is consumed by a combo, it gets stored in the register and the timer is updated; when the next keypress takes too long or a key is pressed that isn't part of any combo, the buffer is emitted and the timer reset. This has a few side effects. For instance, I couldn't _not_ fix combo keys printing out of order while also fixing this bug, so combo keys print in order correctly when a combo fails. since combos no longer have local timers, the logic around when combos time out has changed. now that there is a single timer pressing any combo key (including one in a different combo) will reset the timer for all combos, making combo entry a little more lenient. Since combos no longer have local keycode / keyrecord state, there is an edge case where incomplete combo keys can be consumed. if you have a combo for a+s = tab and a combo for b+n = space, if you press a+b+n, only a space will be emitted. This is because when b+n completes successfully, it drops the register.
2019-04-09 09:49:50 -07:00
Wilba6582
a98777199e Added SS_TAP_CODE, SS_DOWN_CODE, SS_UP_CODE 2019-04-09 09:49:25 -07:00
Wilba6582
7661468719 Fixed tap/down/up handling in dynamic keymap macros 2019-04-09 09:49:25 -07:00
Lenbok
45207b079b Fix bugs that cause compile failures when enabling only some animations. 2019-04-09 09:49:24 -07:00
Drashna Jaelre
431766476b Custom Tapping Term per key (#5009)
* Add customizable tapping terms

* Add Documentation

* Fix function

* Fixes

* It's not a pointer

* Add debugging output

* Update documentation to be at least vaguely accurate

* Use `get_tapping_term(tapping_key.event)` instead

`e` doesn't include column and row information, properly. It registers as 255, regardless of the actual keypress.

However `tapping_key.event` actually gives the correct column and row information.  It appears be the correct structure to use. 

In fact, it looks like the issue is that `e` is actually the "TICK" structure, as defined in keyboard.h

* Use variable tapping term value rather than define

* Silly drashna - tapping_key.event, not event

* add get_event_keycode() function

* Fix typo

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

* Remove post_process_record_quantum since it's the wrong PR

* Update quantum/quantum.c

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

* Better handle ifdef statement for permissive hold

Since we can't be sure that tapping term is actually 500

* Update quantum.c comments based on feedback

* Clean up get_tapping_term function

Clean up function so that users don't need to call the event function, and instead only check the keycode

* Add ability to run functionality on and off

* Make ifdef's more compact
2019-04-09 09:49:24 -07:00
Daniel Prilik
5f8fdefe3a RGB Matrix support for Massdrop CTRL/ALT (#5328)
* port Massdrop CTRL/ALT to use RGB Matrix

Co-authored-by: Matt Schneeberger <helluvamatt@gmail.com>

* Massdrop lighting support working

This commit is to get the Massdrop lighting code working again through use of the compilation define USE_MASSDROP_CONFIGURATOR added to a keymap's rules.mk.
Added keymaps for both CTRL and ALT named default_md and mac_md. These should be used if the Massdrop style lighting is desired.

* Updating config based on testing results with patrickmt & compile errors

* Updates for PR5328

For CTRL and ALT:
Moved location of new RGB Matrix macros from config_led.h to config.h.
Added RGB_MATRIX_LED_FLUSH_LIMIT (time between flushes) to config.h for correct LED driver update timing.
Re-added missing breathing code for when Massdrop configurator mode is defined.

* remove prilik keymap form PR
2019-04-09 09:48:42 -07:00
XScorpion2
6acfceaeb4 Added encoder support to split common code (#5477)
* Added slave encoder support to split common

* Fixing handwired/xealous/rev1 compile error

* Removed unnecessary ifdef
2019-04-09 09:47:46 -07:00
Alex Ong
5747449ca5 Eager Per Row Debouncing added (added to Ergodox) (#5498)
* Implemented Eager Per Row debouncing algorithm.

Good for when fingers can only press one row at a time (e.g. when keyboard is wired so that "rows" are vertical)

* Added documentation for eager_pr

* Ported ergodox_ez to eager_pr debouncing.

* Removed check for changes in matrix_scan.

* Added further clarification in docs.

* Accidental merge with ergodox_ez

* Small cleanup in eager_pr

* Forgot to debounce_init - this would probably cause seg-faults.
2019-04-09 09:47:45 -07:00
XScorpion2
fd770232d9 RGB Matrix Overhaul (#5372)
* RGB Matrix overhaul
Breakout of animations to separate files
Integration of optimized int based math lib
Overhaul of rgb_matrix.c and animations for performance

* Updating effect function api for future extensions

* Combined the keypresses || keyreleases define checks into a single define so I stop forgetting it where necessary

* Moving define RGB_MATRIX_KEYREACTIVE_ENABLED earlier in the include chain
2019-04-09 09:46:45 -07:00
DDRnJn
c846f82fa7 Added some new songs (#5525)
Added Fantasie Impromptu and Nocturne Op. 9 No. 1 in B flat minor by Chopin
Added Isabella's Lullaby from The Promised Neverland
Added Renai Circulation and Platinum Disco from Monogatari
Added Terra's theme from Final Fantasy 6
2019-04-09 09:45:47 -07:00
Mikhail Goncharov
399b992b01 Update build instructions and Dockerfile to download submodules 2019-04-09 09:44:55 -07:00
Florian Didron
ffd18ce409 Merge pull request #3 from ErgoDox-EZ/repo_prune
Repo Pruning and cleanup
2019-04-09 18:28:01 +02:00
Drashna Jaelre
25609b09ae Remove vscode folder 2019-04-09 09:26:32 -07:00
Drashna Jaelre
51a7fb1f1e Remove documentation folder 2019-04-09 09:26:11 -07:00
Drashna Jaelre
7c9d1d58ee Remove non-default keymaps 2019-04-09 09:01:04 -07:00
Drashna Jaelre
b6850bc043 remove all keyboards but ergodox and planck 2019-04-09 08:58:11 -07:00
Drashna Jaelre
19ed62114a Remove layouts 2019-04-09 08:57:34 -07:00
Drashna Jaelre
6baec0fffd Remove Userspace folders 2019-04-09 08:57:19 -07:00
Drashna Jaelre
23a52e40b3 update gitignore to exclude everything we don't need 2019-04-09 08:56:51 -07:00
4432 changed files with 487884 additions and 252688 deletions

View File

@@ -1,13 +1,10 @@
---
---
BasedOnStyle: Google
AlignAfterOpenBracket: Align
AlignConsecutiveAssignments: 'true'
AlignConsecutiveDeclarations: 'true'
AlignOperands: 'true'
AllowAllParametersOfDeclarationOnNextLine: 'false'
AllowShortCaseLabelsOnASingleLine: 'false'
AllowShortFunctionsOnASingleLine: Empty
AllowShortLoopsOnASingleLine: 'false'
AlwaysBreakAfterDefinitionReturnType: None
AlwaysBreakAfterReturnType: None
AlwaysBreakBeforeMultilineStrings: 'false'
@@ -16,15 +13,14 @@ BinPackParameters: 'true'
ColumnLimit: '1000'
IndentCaseLabels: 'true'
IndentPPDirectives: AfterHash
IndentWidth: '4'
IndentWidth: '2'
MaxEmptyLinesToKeep: '1'
PointerAlignment: Right
SortIncludes: 'false'
SpaceBeforeAssignmentOperators: 'true'
SpaceBeforeParens: ControlStatements
SpaceInEmptyParentheses: 'false'
SpacesBeforeTrailingComments: 1
TabWidth: '4'
TabWidth: '2'
UseTab: Never
...

24
.clang_complete Normal file
View File

@@ -0,0 +1,24 @@
-I.
-I./drivers
-I./drivers/avr
-I./keyboards/ergodox_ez
-I./keyboards/ergodox_ez/keymaps/vim
-I./lib
-I./lib/lufa
-I./quantum
-I./quantum/api
-I./quantum/audio
-I./quantum/keymap_extras
-I./quantum/process_keycode
-I./quantum/serial_link
-I./quantum/template
-I./quantum/tools
-I./quantum/visualizer
-I./tmk_core
-I./tmk_core/common
-I./tmk_core/common/debug.h
-I./tmk_core/protocol
-I./tmk_core/protocol/lufa
-I./util
-DQMK_KEYBOARD=\"$(KEYBOARD)\" -DQMK_KEYMAP=\"$(KEYMAP)\"

View File

@@ -1,4 +0,0 @@
CompileFlags:
Add: [-Wno-unknown-attributes, -Wno-maybe-uninitialized, -Wno-unknown-warning-option]
Remove: [-W*, -mmcu=*, -mcpu=*, -mfpu=*, -mfloat-abi=*, -mno-unaligned-access, -mno-thumb-interwork, -mcall-prologues]
Compiler: clang

View File

@@ -4,39 +4,39 @@
root = true
[*]
end_of_line = lf
indent_style = space
indent_size = 4
indent_size = 2
# We recommend you to keep these unchanged
charset = utf-8
trim_trailing_whitespace = true
insert_final_newline = true
[{*.yaml,*.yml}] # To match GitHub Actions formatting
indent_size = 2
[*.md]
trim_trailing_whitespace = false
indent_size = 4
[{Makefile,*.mk}]
[{qmk,*.py}]
charset = utf-8
max_line_length = 200
# Make these match what we have in .gitattributes
[*.mk]
end_of_line = lf
indent_style = tab
# Don't override anything in `lib/`...
[lib/**]
indent_style = unset
indent_size = unset
tab_width = unset
end_of_line = unset
charset = unset
spelling_language = unset
trim_trailing_whitespace = unset
insert_final_newline = unset
# ...except QMK's `lib/python`.
[{*.py,lib/python/**.py}]
[Makefile]
end_of_line = lf
indent_style = space
indent_size = 4
charset = utf-8
trim_trailing_whitespace = true
insert_final_newline = true
max_line_length = 200
indent_style = tab
[*.sh]
end_of_line = lf
# The gitattributes file will handle the line endings conversion properly according to the operating system settings for other files
# We don't have gitattributes properly for these
# So if the user have for example core.autocrlf set to true
# the line endings would be wrong.
[lib/**]
end_of_line = unset

114
.gitattributes vendored
View File

@@ -2,70 +2,69 @@
* text=auto
# sources
*.c text eol=lf
*.cc text eol=lf
*.cxx text eol=lf
*.cpp text eol=lf
*.c++ text eol=lf
*.hpp text eol=lf
*.h text eol=lf
*.h++ text eol=lf
*.hh text eol=lf
*.bat text eol=crlf
*.cmd text eol=crlf
*.coffee text eol=lf
*.css text eol=lf
*.htm text eol=lf
*.html text eol=lf
*.inc text eol=lf
*.ini text eol=crlf
*.js text eol=lf
*.jsx text eol=lf
*.json text eol=lf
*.less text eol=lf
*.php text eol=lf
*.pl text eol=lf
*.py text eol=lf
*.rb text eol=lf
*.sass text eol=lf
*.scm text eol=lf
*.scss text eol=lf
*.sh text eol=lf
*.sql text eol=lf
*.styl text eol=lf
*.ts text eol=lf
*.xml text eol=lf
*.xhtml text eol=lf
*.c text
*.cc text
*.cxx text
*.cpp text
*.c++ text
*.hpp text
*.h text
*.h++ text
*.hh text
*.bat text
*.coffee text
*.css text
*.htm text
*.html text
*.inc text
*.ini text
*.js text
*.jsx text
*.json text
*.less text
*.php text
*.pl text
*.py text
*.rb text
*.sass text
*.scm text
*.scss text
*.sh text
*.sql text
*.styl text
*.ts text
*.xml text
*.xhtml text
# make files (need to always use lf for compatibility with Windows 10 bash)
Makefile eol=lf
*.mk eol=lf
*.mk eol=lf
# make files (need to always use lf for compatibility with Windows 10 bash)
*.sh eol=lf
# documentation
*.markdown text eol=lf
*.md text eol=lf
*.mdwn text eol=lf
*.mdown text eol=lf
*.mkd text eol=lf
*.mkdn text eol=lf
*.mdtxt text eol=lf
*.mdtext text eol=lf
*.txt text eol=lf
AUTHORS text eol=lf
CHANGELOG text eol=lf
CHANGES text eol=lf
CONTRIBUTING text eol=lf
COPYING text eol=lf
INSTALL text eol=lf
license text eol=lf
LICENSE text eol=lf
NEWS text eol=lf
readme text eol=lf
*README* text eol=lf
TODO text eol=lf
*.markdown text
*.md text
*.mdwn text
*.mdown text
*.mkd text
*.mkdn text
*.mdtxt text
*.mdtext text
*.txt text
AUTHORS text
CHANGELOG text
CHANGES text
CONTRIBUTING text
COPYING text
INSTALL text
license text
LICENSE text
NEWS text
readme text
*README* text
TODO text
GRAPHICS
*.ai binary
@@ -83,7 +82,7 @@ GRAPHICS
*.png binary
*.psb binary
*.psd binary
*.svg text eol=lf
*.svg text
*.svgz binary
*.tif binary
*.tiff binary
@@ -93,4 +92,3 @@ GRAPHICS
# hex files
*.hex binary
*.eep binary
nix/sources.nix linguist-generated=true

5
.github/ISSUE_TEMPLATE/blank.md vendored Normal file
View File

@@ -0,0 +1,5 @@
---
name: Blank issue
about: If you're 100% sure that you don't need one of the other issue templates, use this one instead.
---

32
.github/ISSUE_TEMPLATE/bug_report.md vendored Normal file
View File

@@ -0,0 +1,32 @@
---
name: Bug report
about: Create a report to help us improve the QMK Firmware
---
<!-- Provide a general summary of the bug in the title above. -->
<!--- This template is entirely optional and can be removed, but is here to help both you and us. -->
<!--- Anything on lines wrapped in comments like these will not show up in the final text. -->
## Describe the Bug
<!-- A clear and concise description of what the bug is. -->
## System Information
- Keyboard:
- Revision (if applicable):
- Operating system:
- AVR GCC version:
<!-- Run `avr-gcc --version` to find this out. -->
- ARM GCC version:
<!-- Run `arm-none-eabi-gcc --version` to find this out. -->
- QMK Firmware version:
<!-- Run `git describe --abbrev=0 --tags` to find this out. -->
- Any keyboard related software installed?
- [ ] AutoHotKey
- [ ] Karabiner
- [ ] Other:
## Additional Context
<!-- Add any other relevant information about the problem here. -->

View File

@@ -1,41 +0,0 @@
name: Bug report
description: Create a report to help us improve QMK Firmware.
title: "[Bug] "
labels: ["bug", "help wanted"]
body:
- type: markdown
attributes:
value: |
Provide a general summary of the bug in the title above.
- type: textarea
attributes:
label: Describe the Bug
description: A clear and concise description of what the bug is.
- type: input
attributes:
label: Keyboard Used
description: The name of the keyboard from the `make` or `qmk compile`/`qmk flash` commands, eg. `planck/rev6`.
- type: input
attributes:
label: Link to product page (if applicable)
- type: input
attributes:
label: Operating System
- type: textarea
attributes:
label: qmk doctor Output
description: Output from running the `qmk doctor` command.
render: text
- type: checkboxes
attributes:
label: Is AutoHotKey / Karabiner installed
options:
- label: AutoHotKey (Windows)
- label: Karabiner (macOS)
- type: input
attributes:
label: Other keyboard-related software installed
- type: textarea
attributes:
label: Additional Context
description: Add any other relevant information about the problem here.

View File

@@ -1,8 +0,0 @@
blank_issues_enabled: false
contact_links:
- name: QMK Discord
url: https://discord.gg/Uq7gcHh
about: Ask questions, discuss issues and features. Chill.
- name: OLKB Subreddit
url: https://www.reddit.com/r/olkb
about: All things OLKB and QMK.

View File

@@ -0,0 +1,19 @@
---
name: Feature request
about: Suggest a new feature or changes to existing features
---
<!--- Provide a general summary of the changes you want in the title above. -->
<!--- This template is entirely optional and can be removed, but is here to help both you and us. -->
<!--- Anything on lines wrapped in comments like these will not show up in the final text. -->
## Feature Request Type
- [ ] Core functionality
- [ ] Add-on hardware support (eg. audio, RGB, OLED screen, etc.)
- [ ] Alteration (enhancement/optimization) of existing feature(s)
- [ ] New behavior
## Description
<!-- A few sentences describing what it is that you'd like to see in QMK. Additional information (such as links to spec sheets, licensing info, other related issues or PRs, etc) would be helpful. -->

View File

@@ -1,24 +0,0 @@
name: Feature request
description: Suggest a new feature or changes to existing features.
title: "[Feature Request] "
labels: ["enhancement", "help wanted"]
body:
- type: markdown
attributes:
value: |
Provide a general summary of the changes you want in the title above.
Please refrain from asking maintainers to add support for specific keyboards -- it is unlikely they will have hardware available, and will not be able to help.
Your best bet is to take the initiative, add support, then submit a PR yourself.
- type: checkboxes
attributes:
label: Feature Request Type
options:
- label: Core functionality
- label: Add-on hardware support (eg. audio, RGB, OLED screen, etc.)
- label: Alteration (enhancement/optimization) of existing feature(s)
- label: New behavior
- type: textarea
attributes:
label: Description
description: A few sentences describing what it is that you'd like to see in QMK. Additional information (such as links to spec sheets, licensing info, other related issues or PRs, etc) would be helpful.

View File

@@ -0,0 +1,9 @@
---
name: Other issues
about: Anything else that doesn't fall into the above categories.
---
<!--- Provide a general summary of the changes you want in the title above. -->
<!--- Anything on lines wrapped in comments like these will not show up in the final text. -->
<!-- Please check https://docs.qmk.fm/#/support for additional resources first. If that doesn't answer your question, choose the bug report template instead, as that may be more appropriate. -->

View File

@@ -1,19 +0,0 @@
name: Other issues
description: Anything else that doesn't fall into the above categories.
labels: ["help wanted", "question"]
body:
- type: markdown
attributes:
value: |
Provide a general summary of the changes you want in the title above.
- type: markdown
attributes:
value: |
Please check [https://docs.qmk.fm/#/support](https://docs.qmk.fm/#/support) for additional resources first. If that doesn't answer your question, choose the bug report template instead, as that may be more appropriate.
Please refrain from asking maintainers to add support for specific keyboards -- it is unlikely they will have hardware available, and will not be able to help.
Your best bet is to take the initiative, add support, then submit a PR yourself.
- type: textarea
attributes:
label: Issue Description
description: Describe your issue in as much detail as possible.

View File

@@ -1,11 +0,0 @@
---
name: Blank issue
about: If you're 100% sure that you don't need one of the other issue templates, use
this one instead.
title: ''
labels: help wanted, question
assignees: ''
---

View File

@@ -26,8 +26,7 @@
<!--- Go over all the following points, and put an `x` in all the boxes that apply. -->
<!--- If you're unsure about any of these, don't hesitate to ask. We're here to help! -->
- [ ] My code follows the code style of this project: [**C**](https://docs.qmk.fm/#/coding_conventions_c), [**Python**](https://docs.qmk.fm/#/coding_conventions_python)
- [ ] I have read the [**PR Checklist** document](https://docs.qmk.fm/#/pr_checklist) and have made the appropriate changes.
- [ ] My code follows the code style of this project.
- [ ] My change requires a change to the documentation.
- [ ] I have updated the documentation accordingly.
- [ ] I have read the [**CONTRIBUTING** document](https://docs.qmk.fm/#/contributing).

View File

@@ -1,9 +0,0 @@
version: 2
updates:
- package-ecosystem: "github-actions"
directory: "/"
labels: CI
reviewers:
- "qmk/collaborators"
schedule:
interval: "daily"

46
.github/labeler.yml vendored
View File

@@ -1,46 +0,0 @@
core:
- quantum/**/*
- tmk_core/**/*
- drivers/**/*
- tests/**/*
- util/**/*
- platforms/**/*
- builddefs/**/*
- Makefile
- '*.mk'
dependencies:
- any:
- 'lib/**/*'
- '!lib/python/**/*'
keyboard:
- any:
- 'keyboards/**/*'
- '!keyboards/**/keymaps/**/*'
keymap:
- users/**/*
- layouts/**/*
- keyboards/**/keymaps/**/*
via:
- keyboards/**/keymaps/via/*
cli:
- requirements.txt
- lib/python/**/*
python:
- '**/*.py'
documentation:
- docs/**/*
translation:
- docs/fr-fr/**/*
- docs/es/**/*
- docs/ja/**/*
- docs/he-il/**/*
- docs/pt-br/**/*
- docs/zh-cn/**/*
- docs/de/**/*
- docs/ru-ru/**/*
CI:
- .github/**/*
dd:
- data/constants/**/*
- data/mappings/**/*
- data/schemas/**/*

View File

@@ -1,34 +0,0 @@
name: Build firmware
on:
push:
paths-ignore:
- '**.md'
pull_request:
paths-ignore:
- '**.md'
workflow_dispatch:
jobs:
build-firmware:
runs-on: ubuntu-latest
container: qmkfm/qmk_cli
strategy:
fail-fast: false
matrix:
keymap:
- default
- oryx
steps:
- name: Checkout QMK Firmware
uses: actions/checkout@v4
with:
fetch-depth: 1
persist-credentials: false
submodules: true
- name: Build
id: build
run: |
qmk mass-compile -f manufacturer="ZSA Technology Labs" -km ${{ matrix.keymap }} -e SKIP_GIT=1

View File

@@ -1,57 +0,0 @@
name: PR Lint Format
permissions:
contents: read
on:
pull_request:
paths:
- 'drivers/**'
- 'lib/arm_atsam/**'
- 'lib/lib8tion/**'
- 'lib/python/**'
- 'platforms/**'
- 'quantum/**'
- 'tests/**'
- 'tmk_core/**'
jobs:
lint:
runs-on: ubuntu-latest
container: ghcr.io/qmk/qmk_cli
steps:
- name: Disable safe.directory check
run : git config --global --add safe.directory '*'
- uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Install dependencies
run: |
pip3 install -r requirements-dev.txt
- name: Get changed files
id: file_changes
uses: tj-actions/changed-files@v44
with:
use_rest_api: true
- name: Run qmk formatters
shell: 'bash {0}'
run: |
echo '${{ steps.file_changes.outputs.added_files}}' '${{ steps.file_changes.outputs.modified_files}}' > ~/files_changed.txt
qmk format-c --core-only $(< ~/files_changed.txt) || true
qmk format-python $(< ~/files_changed.txt) || true
qmk format-text $(< ~/files_changed.txt) || true
- name: Fail when formatting required
run: |
git diff
for file in $(git diff --name-only); do
echo "File '${file}' Requires Formatting"
echo "::error file=${file}::Requires Formatting"
done
test -z "$(git diff --name-only)"

View File

@@ -1,18 +0,0 @@
name: "Pull Request Labeler"
permissions:
contents: read
pull-requests: write
on:
pull_request_target:
types: [opened, synchronize, reopened, ready_for_review, locked]
jobs:
triage:
runs-on: ubuntu-latest
steps:
- uses: actions/labeler@v4
with:
repo-token: "${{ secrets.GITHUB_TOKEN }}"
configuration-path: '.github/labeler.yml'

View File

@@ -1,87 +0,0 @@
name: PR Lint keyboards
permissions:
contents: read
on:
pull_request:
paths:
- 'keyboards/**'
jobs:
lint:
runs-on: ubuntu-latest
container: ghcr.io/qmk/qmk_cli
steps:
- name: Disable safe.directory check
run : git config --global --add safe.directory '*'
- uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Install dependencies
run: pip3 install -r requirements-dev.txt
- name: Get changed files
id: file_changes
uses: tj-actions/changed-files@v44
with:
use_rest_api: true
- name: Print info
run: |
git rev-parse --short HEAD
echo ${{ github.event.pull_request.base.sha }}
echo '${{ steps.file_changes.outputs.all_changed_files}}'
- name: Run qmk lint
if: always()
shell: 'bash {0}'
run: |
QMK_CHANGES=$(echo -e '${{ steps.file_changes.outputs.all_changed_files}}' | sed 's/ /\n/g')
QMK_KEYBOARDS=$(qmk list-keyboards)
exit_code=0
for KB in $QMK_KEYBOARDS; do
KEYBOARD_CHANGES=$(echo "$QMK_CHANGES" | grep -E '^(keyboards/'${KB}'/)')
if [[ -z "$KEYBOARD_CHANGES" ]]; then
# skip as no changes for this keyboard
continue
fi
KEYMAP_ONLY=$(echo "$KEYBOARD_CHANGES" | grep -cv /keymaps/)
if [[ $KEYMAP_ONLY -gt 0 ]]; then
echo "linting ${KB}"
qmk lint --keyboard ${KB} && qmk info -l --keyboard ${KB}
exit_code=$(($exit_code + $?))
fi
done
qmk format-text ${{ steps.file_changes.outputs.all_changed_files}} || true
for file in ${{ steps.file_changes.outputs.all_changed_files}}; do
if [[ -f $file ]]; then
if ! git diff --quiet $file; then
echo "File '${file}' Requires Formatting"
echo "::error file=${file}::Requires Formatting"
exit_code=$(($exit_code + 1))
fi
fi
done
if [[ $exit_code -gt 255 ]]; then
exit 255
fi
exit $exit_code
- name: Verify keyboard aliases
if: always()
shell: 'bash {0}'
run: |
git reset --hard
git clean -xfd
qmk ci-validate-aliases

View File

@@ -1,36 +0,0 @@
name: PR Regenerate Files
permissions:
contents: read
on:
pull_request:
paths:
- 'data/constants/**'
- 'lib/python/**'
jobs:
regen:
runs-on: ubuntu-latest
container: ghcr.io/qmk/qmk_cli
steps:
- name: Disable safe.directory check
run : git config --global --add safe.directory '*'
- uses: actions/checkout@v4
- name: Run qmk generators
run: |
util/regen.sh
git diff
- name: Fail when regeneration required
run: |
git diff
for file in $(git diff --name-only); do
echo "File '${file}' Requires Regeneration"
echo "::error file=${file}::Requires Regeneration"
done
test -z "$(git diff --name-only)"

View File

@@ -1,35 +0,0 @@
name: Unit Tests
permissions:
contents: read
on:
push:
branches:
- master
- develop
pull_request:
paths:
- 'builddefs/**'
- 'quantum/**'
- 'platforms/**'
- 'tmk_core/**'
- 'tests/**'
- '*.mk'
- 'Makefile'
- '.github/workflows/unit_test.yml'
jobs:
test:
runs-on: ubuntu-latest
container: ghcr.io/qmk/qmk_cli
steps:
- uses: actions/checkout@v4
with:
submodules: recursive
- name: Install dependencies
run: pip3 install -r requirements-dev.txt
- name: Run tests
run: qmk test-c

154
.gitignore vendored
View File

@@ -1,132 +1,68 @@
# Junk files
*.bak
*.swp
*~
.DS_Store
._*
# Merge files
*.orig
*.rej
# Build artifacts
.clang_complete
.build/
.history/
.dep
*.o
*.bin
*.eep
*.elf
*.hex
*.qmk
!util/bootloader.hex
!quantum/tools/eeprom_reset.hex
*.log
*.lss
*.lst
*.map
*.o
*.a
*.so
*.dylib
*.dll
*.la
*.stackdump
*.sym
# QMK-specific
api_data/v1
*.swp
tags
*~
build/
.build/
*.bak
.vagrant/
quantum/version.h
*.bin
*.eep
*.hex
*.qmk
*.uf2
# DD config at wrong location
/keyboards/**/keymaps/*/info.json
/keyboards/**/keymaps/*/keyboard.json
# Old-style QMK Makefiles
/keyboards/**/Makefile
# kbfirmware....
/keyboards/**/kb.h
/keyboards/**/kb.c
.idea/
CMakeLists.txt
cmake-build-debug
doxygen/
.DS_STORE
/util/wsl_downloaded
/util/win_downloaded
/users/
/layouts/
/keyboards/*/Makefile
!/keyboards/ergodox_ez/
!/keyboards/planck/
# Eclipse/PyCharm/Other IDE Settings
*.iml
.browse.VC.db*
.cproject
.idea
.idea/
.project
.settings/
# ?
.dep
.history/
build/
cmake-build-debug
CMakeLists.txt
*.pdf
.idea
*.iml
.browse.VC.db*
*.stackdump
util/Win_Check_Output.txt
# Let these ones be user specific, since we have so many different configurations
*.code-workspace
.stfolder
.tags
.vscode/c_cpp_properties.json
.vscode/ipch/
.vscode/last.sql
.vscode/launch.json
.vscode/tasks.json
.vscode/last.sql
.vscode/temp.sql
tags
.stfolder
.tags
# Ignore image/font files
*.bmp
*.wbmp
*.gif
*.jpg
*.jpeg
# ignore image files
*.png
*.apng
*.mng
*.svg
*.webp
*.webm
*.avi
*.mp4
*.mpeg
*.ttf
*.otf
*.jpg
*.gif
# Things Travis sees
/.vs
id_rsa_*
# Do not ignore MiniDox left/right hand eeprom files
# things travis sees
secrets.tar
id_rsa_*
/.vs
# Python things
# python things
__pycache__
.python-version
.venv
# Prerequisites for updating ChibiOS
/util/fmpp*
# Allow to exist but don't include it in the repo
user_song_list.h
# clangd
compile_commands.json
.clangd/
.cache/
# VIA(L) files that don't belong in QMK repo
via*.json
/keyboards/**/keymaps/vial/*
# ZSA Specific ignores
/docs/**
/users/**
/layouts/community/**
/keyboards/**
!/keyboards/zsa/
!/keyboards/zsa/**
/keyboards/zsa/**/keymaps/**
!/keyboards/zsa/**/keymaps/default
!/keyboards/zsa/**/keymaps/default/**
!/keyboards/zsa/**/keymaps/oryx
!/keyboards/zsa/**/keymaps/oryx/**

24
.gitmodules vendored
View File

@@ -1,27 +1,13 @@
[submodule "lib/chibios"]
path = lib/chibios
url = https://github.com/qmk/ChibiOS
branch = master
[submodule "lib/chibios-contrib"]
path = lib/chibios-contrib
url = https://github.com/qmk/ChibiOS-Contrib
branch = master
branch = k-type-fix
[submodule "lib/ugfx"]
path = lib/ugfx
url = https://github.com/qmk/uGFX
[submodule "lib/googletest"]
path = lib/googletest
url = https://github.com/qmk/googletest
[submodule "lib/lufa"]
path = lib/lufa
url = https://github.com/qmk/lufa
[submodule "lib/vusb"]
path = lib/vusb
url = https://github.com/qmk/v-usb
[submodule "lib/printf"]
path = lib/printf
url = https://github.com/qmk/printf
[submodule "lib/pico-sdk"]
path = lib/pico-sdk
url = https://github.com/qmk/pico-sdk.git
[submodule "lib/lvgl"]
path = lib/lvgl
url = https://github.com/qmk/lvgl.git
branch = release/v8.2
url = https://github.com/google/googletest

28
.travis.yml Normal file
View File

@@ -0,0 +1,28 @@
os: linux
dist: trusty
sudo: required
group: edge
language: c
branches:
except:
- /^.*-automated-build$/
- /^[0-9]+\.[0-9]+\.[0-9]+/
env:
global:
- secure: vBTSL34BDPxDilKUuTXqU4CJ26Pv5hogD2nghatkxSQkI1/jbdnLj/DQdPUrMJFDIY6TK3AltsBx72MaMsLQ1JO/Ou24IeHINHXzUC1FlS9yQa48cpxnhX5kzXNyGs3oa0qaFbvnr7RgYRWtmD52n4bIZuSuW+xpBv05x2OCizdT2ZonH33nATaHGFasxROm4qYZ241VfzcUv766V6RVHgL4x9V08warugs+RENVkfzxxwhk3NmkrISabze0gSVJLHBPHxroZC6EUcf/ocobcuDrCwFqtEt90i7pNIAFUE7gZsN2uE75LmpzAWin21G7lLPcPL2k4FJVd8an1HiP2WmscJU6U89fOfMb2viObnKcCzebozBCmKGtHEuXZo9FcReOx49AnQSpmESJGs+q2dL/FApkTjQiyT4J6O5dJpoww0/r57Wx0cmmqjETKBb5rSgXM51Etk3wO09mvcPHsEwrT7qH8r9XWdyCDoEn7FCLX3/LYnf/D4SmZ633YPl5gv3v9XEwxR5+04akjgnvWDSNIaDbWBdxHNb7l4pMc+WR1bwCyMyA7KXj0RrftEGOrm9ZRLe6BkbT4cycA+j77nbPOMcyZChliV9pPQos+4TOJoTzcK2L8yWVoY409aDNVuAjdP6Yum0R2maBGl/etLmIMpJC35C5/lZ+dUNjJAM=
- MAKEFLAGS="-j3 --output-sync"
services:
- docker
install:
- npm install -g moxygen
script:
- git rev-parse --short HEAD
- bash util/travis_test.sh
- bash util/travis_build.sh
addons:
apt:
packages:
- pandoc
- diffutils
- dos2unix
- doxygen

View File

@@ -1,10 +0,0 @@
// Suggested extensions
{
"recommendations": [
"EditorConfig.EditorConfig",
"xaver.clang-format",
"llvm-vs-code-extensions.vscode-clangd",
"bierner.github-markdown-preview",
"donjayamanne.git-extension-pack"
]
}

34
.vscode/settings.json vendored
View File

@@ -1,34 +0,0 @@
// Place your settings in this file to overwrite default and user settings.
{
// Unofficially, QMK uses spaces for indentation
"editor.insertSpaces": true,
// Configure glob patterns for excluding files and folders.
"files.exclude": {
"**/.build": true,
"**/*.hex": true,
"**/*.bin": true,
"**/*.uf2": true
},
"files.associations": {
"*.h": "c",
"*.c": "c",
"*.inc": "c",
"*.cpp": "cpp",
"*.hpp": "cpp",
"xstddef": "c",
"type_traits": "c",
"utility": "c",
"ranges": "c"
},
"[markdown]": {
"editor.trimAutoWhitespace": false,
"files.trimTrailingWhitespace": false
},
"python.formatting.provider": "yapf",
"[json]": {
"editor.formatOnSave": false
},
"clangd.arguments": [
"--header-insertion=never"
]
}

15
CODE_OF_CONDUCT.md Normal file
View File

@@ -0,0 +1,15 @@
# Code Of Conduct
QMK strives to be an inclusive, tolerant, and welcoming community. We encourage participation from anyone regardless of age, disability, ethnicity, gender identity and expression, level of experience, nationality, personal appearance, political belief, race, religion, or sexual identity and orientation.
> “A gentle word turns away wrath, but a harsh word stirs up anger."
Our users, contributors, and collaborators are expected to treat each other with kindness and respect, to assume good intentions, and to gently correct, where possible, rather than react with escalation. While our goal is to be as accurate as possible, kindness and understanding are more valuable than correctness. Some examples of behavior we will not tolerate include, but is not limited to:
* The use of sexualized language or imagery
* Unwelcome advances, sexual or otherwise
* Insults or derogatory comments, or personal or political attacks
* Publishing others private information without explicit permission
* Other conduct which could reasonably be considered inappropriate in a professional setting
If someone is violating this Code of Conduct you may email hello@qmk.fm to bring your concern to the Members. All complaints will be reviewed and investigated and will result in a response that is deemed necessary and appropriate to the circumstances. The project team is obligated to maintain confidentiality with regard to the reporter of an incident.

7
Dockerfile Normal file
View File

@@ -0,0 +1,7 @@
FROM qmkfm/base_container
VOLUME /qmk_firmware
WORKDIR /qmk_firmware
COPY . .
CMD make all:all

View File

@@ -21,7 +21,7 @@ DOXYFILE_ENCODING = UTF-8
PROJECT_NAME = "QMK Firmware"
PROJECT_NUMBER = https://github.com/qmk/qmk_firmware
PROJECT_BRIEF = "Keyboard controller firmware for Atmel AVR and ARM USB families"
OUTPUT_DIRECTORY = .build/docs/static/doxygen
OUTPUT_DIRECTORY = doxygen
ALLOW_UNICODE_NAMES = NO
OUTPUT_LANGUAGE = English
BRIEF_MEMBER_DESC = YES
@@ -40,8 +40,8 @@ ABBREVIATE_BRIEF = "The $name class" \
ALWAYS_DETAILED_SEC = NO
INLINE_INHERITED_MEMB = NO
FULL_PATH_NAMES = YES
STRIP_FROM_PATH =
STRIP_FROM_INC_PATH =
STRIP_FROM_PATH =
STRIP_FROM_INC_PATH =
SHORT_NAMES = NO
JAVADOC_AUTOBRIEF = NO
QT_AUTOBRIEF = NO
@@ -49,13 +49,13 @@ MULTILINE_CPP_IS_BRIEF = NO
INHERIT_DOCS = YES
SEPARATE_MEMBER_PAGES = NO
TAB_SIZE = 4
ALIASES =
TCL_SUBST =
ALIASES =
TCL_SUBST =
OPTIMIZE_OUTPUT_FOR_C = YES
OPTIMIZE_OUTPUT_JAVA = NO
OPTIMIZE_FOR_FORTRAN = NO
OPTIMIZE_OUTPUT_VHDL = NO
EXTENSION_MAPPING =
EXTENSION_MAPPING =
MARKDOWN_SUPPORT = YES
TOC_INCLUDE_HEADINGS = 2
AUTOLINK_SUPPORT = YES
@@ -104,14 +104,14 @@ GENERATE_TODOLIST = YES
GENERATE_TESTLIST = YES
GENERATE_BUGLIST = YES
GENERATE_DEPRECATEDLIST= YES
ENABLED_SECTIONS =
ENABLED_SECTIONS =
MAX_INITIALIZER_LINES = 30
SHOW_USED_FILES = YES
SHOW_FILES = YES
SHOW_NAMESPACES = YES
FILE_VERSION_FILTER =
LAYOUT_FILE =
CITE_BIB_FILES =
FILE_VERSION_FILTER =
LAYOUT_FILE =
CITE_BIB_FILES =
#---------------------------------------------------------------------------
# Configuration options related to warning and progress messages
@@ -124,7 +124,7 @@ WARN_IF_DOC_ERROR = YES
WARN_NO_PARAMDOC = NO
WARN_AS_ERROR = NO
WARN_FORMAT = "$file:$line: $text"
WARN_LOGFILE =
WARN_LOGFILE =
#---------------------------------------------------------------------------
# Configuration options related to the input files
@@ -143,19 +143,19 @@ FILE_PATTERNS = *.c \
*.hpp \
*.h++
RECURSIVE = YES
EXCLUDE =
EXCLUDE =
EXCLUDE_SYMLINKS = NO
EXCLUDE_PATTERNS = */protocol/arm_atsam/*
EXCLUDE_SYMBOLS =
EXAMPLE_PATH =
EXCLUDE_PATTERNS =
EXCLUDE_SYMBOLS =
EXAMPLE_PATH =
EXAMPLE_PATTERNS = *
EXAMPLE_RECURSIVE = NO
IMAGE_PATH =
INPUT_FILTER =
FILTER_PATTERNS =
IMAGE_PATH =
INPUT_FILTER =
FILTER_PATTERNS =
FILTER_SOURCE_FILES = NO
FILTER_SOURCE_PATTERNS =
USE_MDFILE_AS_MAINPAGE =
FILTER_SOURCE_PATTERNS =
USE_MDFILE_AS_MAINPAGE =
#---------------------------------------------------------------------------
# Configuration options related to source browsing
@@ -177,7 +177,7 @@ VERBATIM_HEADERS = YES
ALPHABETICAL_INDEX = YES
COLS_IN_ALPHA_INDEX = 5
IGNORE_PREFIX =
IGNORE_PREFIX =
#---------------------------------------------------------------------------
# Configuration options related to disabled outputs
@@ -207,18 +207,18 @@ ENABLE_PREPROCESSING = YES
MACRO_EXPANSION = NO
EXPAND_ONLY_PREDEF = NO
SEARCH_INCLUDES = YES
INCLUDE_PATH =
INCLUDE_FILE_PATTERNS =
PREDEFINED = __DOXYGEN__ PROGMEM
EXPAND_AS_DEFINED =
INCLUDE_PATH =
INCLUDE_FILE_PATTERNS =
PREDEFINED =
EXPAND_AS_DEFINED =
SKIP_FUNCTION_MACROS = YES
#---------------------------------------------------------------------------
# Configuration options related to external references
#---------------------------------------------------------------------------
TAGFILES =
GENERATE_TAGFILE =
TAGFILES =
GENERATE_TAGFILE =
ALLEXTERNALS = NO
EXTERNAL_GROUPS = YES
EXTERNAL_PAGES = YES
@@ -229,14 +229,14 @@ PERL_PATH = /usr/bin/perl
#---------------------------------------------------------------------------
CLASS_DIAGRAMS = YES
MSCGEN_PATH =
DIA_PATH =
MSCGEN_PATH =
DIA_PATH =
HIDE_UNDOC_RELATIONS = YES
HAVE_DOT = NO
DOT_NUM_THREADS = 0
DOT_FONTNAME = Helvetica
DOT_FONTSIZE = 10
DOT_FONTPATH =
DOT_FONTPATH =
CLASS_GRAPH = YES
COLLABORATION_GRAPH = YES
GROUP_GRAPHS = YES
@@ -251,13 +251,13 @@ GRAPHICAL_HIERARCHY = YES
DIRECTORY_GRAPH = YES
DOT_IMAGE_FORMAT = png
INTERACTIVE_SVG = NO
DOT_PATH =
DOTFILE_DIRS =
MSCFILE_DIRS =
DIAFILE_DIRS =
PLANTUML_JAR_PATH =
PLANTUML_CFG_FILE =
PLANTUML_INCLUDE_PATH =
DOT_PATH =
DOTFILE_DIRS =
MSCFILE_DIRS =
DIAFILE_DIRS =
PLANTUML_JAR_PATH =
PLANTUML_CFG_FILE =
PLANTUML_INCLUDE_PATH =
DOT_GRAPH_MAX_NODES = 50
MAX_DOT_GRAPH_DEPTH = 0
DOT_TRANSPARENT = NO

451
Makefile
View File

@@ -19,51 +19,150 @@ endif
# Otherwise the [OK], [ERROR] and [WARN] messages won't be displayed correctly
override SILENT := false
ifeq ($(shell git rev-parse --is-inside-work-tree 2>/dev/null),)
export SKIP_GIT := yes
export NOT_REPO := yes
endif
ifdef SKIP_VERSION
export SKIP_GIT := yes
endif
ifndef SUB_IS_SILENT
ifndef SKIP_GIT
QMK_VERSION := $(shell git describe --abbrev=0 --tags 2>/dev/null)
endif
QMK_VERSION := $(shell git describe --abbrev=0 --tags 2>/dev/null)
ifneq ($(QMK_VERSION),)
$(info QMK Firmware $(QMK_VERSION))
endif
endif
# Try to determine userspace from qmk config, if set.
ifeq ($(QMK_USERSPACE),)
QMK_USERSPACE = $(shell qmk config -ro user.overlay_dir | cut -d= -f2 | sed -e 's@^None$$@@g')
endif
# Determine which qmk cli to use
QMK_BIN := qmk
# avoid 'Entering|Leaving directory' messages
MAKEFLAGS += --no-print-directory
ON_ERROR := error_occurred=1
BREAK_ON_ERRORS = no
ROOT_DIR := $(dir $(lastword $(MAKEFILE_LIST)))
STARTING_MAKEFILE := $(firstword $(MAKEFILE_LIST))
ROOT_MAKEFILE := $(lastword $(MAKEFILE_LIST))
ROOT_DIR := $(dir $(ROOT_MAKEFILE))
ifeq ($(ROOT_DIR),)
ROOT_DIR := .
endif
include paths.mk
TEST_OUTPUT_DIR := $(BUILD_DIR)/test
ABS_STARTING_MAKEFILE := $(abspath $(STARTING_MAKEFILE))
ABS_ROOT_MAKEFILE := $(abspath $(ROOT_MAKEFILE))
ABS_STARTING_DIR := $(dir $(ABS_STARTING_MAKEFILE))
ABS_ROOT_DIR := $(dir $(ABS_ROOT_MAKEFILE))
STARTING_DIR := $(subst $(ABS_ROOT_DIR),,$(ABS_STARTING_DIR))
BUILD_DIR := $(ROOT_DIR)/.build
TEST_DIR := $(BUILD_DIR)/test
ERROR_FILE := $(BUILD_DIR)/error_occurred
MAKEFILE_INCLUDED=yes
# Helper function to process the newt element of a space separated path
# It works a bit like the traditional functional head tail
# so the CURRENT_PATH_ELEMENT will become the new head
# and the PATH_ELEMENTS are the rest that are still unprocessed
define NEXT_PATH_ELEMENT
$$(eval CURRENT_PATH_ELEMENT := $$(firstword $$(PATH_ELEMENTS)))
$$(eval PATH_ELEMENTS := $$(wordlist 2,9999,$$(PATH_ELEMENTS)))
endef
# We change the / to spaces so that we more easily can work with the elements
# separately
PATH_ELEMENTS := $(subst /, ,$(STARTING_DIR))
# Initialize the path elements list for further processing
$(eval $(call NEXT_PATH_ELEMENT))
# This function sets the KEYBOARD; KEYMAP and SUBPROJECT to the correct
# variables depending on which directory you stand in.
# It's really a very simple if else chain, if you squint enough,
# but the makefile syntax makes it very verbose.
# If we are in a subfolder of keyboards
#
# *** No longer needed **
#
# ifeq ($(CURRENT_PATH_ELEMENT),keyboards)
# $(eval $(call NEXT_PATH_ELEMENT))
# KEYBOARD := $(CURRENT_PATH_ELEMENT)
# $(eval $(call NEXT_PATH_ELEMENT))
# # If we are in a subfolder of keymaps, or in other words in a keymap
# # folder
# ifeq ($(CURRENT_PATH_ELEMENT),keymaps)
# $(eval $(call NEXT_PATH_ELEMENT))
# KEYMAP := $(CURRENT_PATH_ELEMENT)
# # else if we are not in the keyboard folder itself
# else ifneq ($(CURRENT_PATH_ELEMENT),)
# # the we can assume it's a subproject, as no other folders
# # should have make files in them
# SUBPROJECT := $(CURRENT_PATH_ELEMENT)
# $(eval $(call NEXT_PATH_ELEMENT))
# # if we are inside a keymap folder of a subproject
# ifeq ($(CURRENT_PATH_ELEMENT),keymaps)
# $(eval $(call NEXT_PATH_ELEMENT))
# KEYMAP := $(CURRENT_PATH_ELEMENT)
# endif
# endif
# endif
define GET_KEYBOARDS
All_RULES_MK := $$(patsubst $(ROOT_DIR)/keyboards/%/rules.mk,%,$$(wildcard $(ROOT_DIR)/keyboards/*/rules.mk))
All_RULES_MK += $$(patsubst $(ROOT_DIR)/keyboards/%/rules.mk,%,$$(wildcard $(ROOT_DIR)/keyboards/*/*/rules.mk))
All_RULES_MK += $$(patsubst $(ROOT_DIR)/keyboards/%/rules.mk,%,$$(wildcard $(ROOT_DIR)/keyboards/*/*/*/rules.mk))
All_RULES_MK += $$(patsubst $(ROOT_DIR)/keyboards/%/rules.mk,%,$$(wildcard $(ROOT_DIR)/keyboards/*/*/*/*/rules.mk))
KEYMAPS_MK := $$(patsubst $(ROOT_DIR)/keyboards/%/rules.mk,%,$$(wildcard $(ROOT_DIR)/keyboards/*/keymaps/*/rules.mk))
KEYMAPS_MK += $$(patsubst $(ROOT_DIR)/keyboards/%/rules.mk,%,$$(wildcard $(ROOT_DIR)/keyboards/*/*/keymaps/*/rules.mk))
KEYMAPS_MK += $$(patsubst $(ROOT_DIR)/keyboards/%/rules.mk,%,$$(wildcard $(ROOT_DIR)/keyboards/*/*/*/keymaps/*/rules.mk))
KEYMAPS_MK += $$(patsubst $(ROOT_DIR)/keyboards/%/rules.mk,%,$$(wildcard $(ROOT_DIR)/keyboards/*/*/*/*/keymaps/*/rules.mk))
KEYBOARDS := $$(sort $$(filter-out $$(KEYMAPS_MK), $$(All_RULES_MK)))
endef
$(eval $(call GET_KEYBOARDS))
# Only consider folders with makefiles, to prevent errors in case there are extra folders
#KEYBOARDS += $(patsubst $(ROOD_DIR)/keyboards/%/rules.mk,%,$(wildcard $(ROOT_DIR)/keyboards/*/*/rules.mk))
.PHONY: list-keyboards
list-keyboards:
echo $(KEYBOARDS)
define PRINT_KEYBOARD
$(info $(PRINTING_KEYBOARD))
endef
.PHONY: generate-keyboards-file
generate-keyboards-file:
$(foreach PRINTING_KEYBOARD,$(KEYBOARDS),$(eval $(call PRINT_KEYBOARD)))
.PHONY: clean
clean:
echo -n 'Deleting .build/ ... '
rm -rf $(BUILD_DIR)
echo 'done.'
.PHONY: distclean
distclean: clean
echo -n 'Deleting *.bin and *.hex ... '
rm -f *.bin *.hex
echo 'done.'
#Compatibility with the old make variables, anything you specify directly on the command line
# always overrides the detected folders
ifdef keyboard
KEYBOARD := $(keyboard)
endif
ifdef keymap
KEYMAP := $(keymap)
endif
# Uncomment these for debugging
# $(info Keyboard: $(KEYBOARD))
# $(info Keymap: $(KEYMAP))
# $(info Subproject: $(SUBPROJECT))
# $(info Keyboards: $(KEYBOARDS))
# Set the default goal depending on where we are running make from
# this handles the case where you run make without any arguments
.DEFAULT_GOAL := all:all
ifneq ($(KEYMAP),)
.DEFAULT_GOAL := $(KEYBOARD):$(KEYMAP)
else ifneq ($(KEYBOARD),)
# Inside a keyboard folder, build all keymaps for all subprojects
# Note that this is different from the old behaviour, which would
# build only the default keymap of the default keyboard
.DEFAULT_GOAL := $(KEYBOARD):all
endif
# Compare the start of the RULE variable with the first argument($1)
@@ -90,20 +189,54 @@ endef
# a function that returns the value
COMPARE_AND_REMOVE_FROM_RULE = $(eval $(call COMPARE_AND_REMOVE_FROM_RULE_HELPER,$1))$(RULE_FOUND)
# Try to find a match for the start of the rule to be checked
# Recursively try to find a match for the start of the rule to be checked
# $1 The list to be checked
# If a match is found, then RULE_FOUND is set to true
# and MATCHED_ITEM to the item that was matched
define TRY_TO_MATCH_RULE_FROM_LIST_HELPER3
ifneq ($1,)
ifeq ($$(call COMPARE_AND_REMOVE_FROM_RULE,$$(firstword $1)),true)
MATCHED_ITEM := $$(firstword $1)
else
$$(eval $$(call TRY_TO_MATCH_RULE_FROM_LIST_HELPER3,$$(wordlist 2,9999,$1)))
endif
endif
endef
# A recursive helper function for finding the longest match
# $1 The list to be checked
# It works by always removing the currently matched item from the list
# and call itself recursively, until a match is found
define TRY_TO_MATCH_RULE_FROM_LIST_HELPER2
# Stop the recursion when the list is empty
ifneq ($1,)
RULE_BEFORE := $$(RULE)
$$(eval $$(call TRY_TO_MATCH_RULE_FROM_LIST_HELPER3,$1))
# If a match is found in the current list, otherwise just return what we had before
ifeq ($$(RULE_FOUND),true)
# Save the best match so far and call itself recursively
BEST_MATCH := $$(MATCHED_ITEM)
BEST_MATCH_RULE := $$(RULE)
RULE_FOUND := false
RULE := $$(RULE_BEFORE)
$$(eval $$(call TRY_TO_MATCH_RULE_FROM_LIST_HELPER2,$$(filter-out $$(MATCHED_ITEM),$1)))
endif
endif
endef
# Recursively try to find the longest match for the start of the rule to be checked
# $1 The list to be checked
# If a match is found, then RULE_FOUND is set to true
# and MATCHED_ITEM to the item that was matched
define TRY_TO_MATCH_RULE_FROM_LIST_HELPER
# Split on ":", padding with empty strings to avoid indexing issues
TOKEN1:=$$(shell python3 -c "import sys; print((sys.argv[1].split(':',1)+[''])[0])" $$(RULE))
TOKENr:=$$(shell python3 -c "import sys; print((sys.argv[1].split(':',1)+[''])[1])" $$(RULE))
FOUNDx:=$$(shell echo $1 | tr " " "\n" | grep -Fx $$(TOKEN1))
ifneq ($$(FOUNDx),)
RULE := $$(TOKENr)
BEST_MATCH :=
$$(eval $$(call TRY_TO_MATCH_RULE_FROM_LIST_HELPER2,$1))
ifneq ($$(BEST_MATCH),)
RULE_FOUND := true
MATCHED_ITEM := $$(TOKEN1)
RULE := $$(BEST_MATCH_RULE)
MATCHED_ITEM := $$(BEST_MATCH)
else
RULE_FOUND := false
MATCHED_ITEM :=
@@ -132,32 +265,25 @@ define PARSE_RULE
# If the rule starts with all, then continue the parsing from
# PARSE_ALL_KEYBOARDS
ifeq ($$(call COMPARE_AND_REMOVE_FROM_RULE,all),true)
KEYBOARD_RULE=all
$$(eval $$(call PARSE_ALL_KEYBOARDS))
else ifeq ($$(call COMPARE_AND_REMOVE_FROM_RULE,test),true)
$$(eval $$(call PARSE_TEST))
# If the rule starts with the name of a known keyboard, then continue
# the parsing from PARSE_KEYBOARD
else ifeq ($$(call TRY_TO_MATCH_RULE_FROM_LIST,$$(shell $(QMK_BIN) list-keyboards --no-resolve-defaults)),true)
KEYBOARD_RULE=$$(MATCHED_ITEM)
else ifeq ($$(call TRY_TO_MATCH_RULE_FROM_LIST,$$(KEYBOARDS)),true)
$$(eval $$(call PARSE_KEYBOARD,$$(MATCHED_ITEM)))
# Otherwise use the KEYBOARD variable, which is determined either by
# the current directory you run make from, or passed in as an argument
else ifneq ($$(KEYBOARD),)
$$(eval $$(call PARSE_KEYBOARD,$$(KEYBOARD)))
else
$$(info make: *** No rule to make target '$1'. Stop.)
$$(info |)
$$(info | QMK's make format is:)
$$(info | make keyboard_folder:keymap_folder[:target])
$$(info |)
$$(info | Where `keyboard_folder` is the path to the keyboard relative to)
$$(info | `qmk_firmware/keyboards/`, and `keymap_folder` is the name of the)
$$(info | keymap folder under that board's `keymaps/` directory.)
$$(info |)
$$(info | Examples:)
$$(info | keyboards/dz60, keyboards/dz60/keymaps/default)
$$(info | -> make dz60:default)
$$(info | -> qmk compile -kb dz60 -km default)
$$(info | keyboards/planck/rev6, keyboards/planck/keymaps/default)
$$(info | -> make planck/rev6:default:flash)
$$(info | -> qmk flash -kb planck/rev6 -km default)
$$(info | QMK's make format recently changed to use folder locations and colons:)
$$(info | make project_folder:keymap[:target])
$$(info | Examples:)
$$(info | make planck/rev4:default:dfu)
$$(info | make planck:default)
$$(info |)
endif
endef
@@ -195,21 +321,39 @@ define PARSE_KEYBOARD
KEYMAPS += $$(notdir $$(patsubst %/.,%,$$(wildcard $(ROOT_DIR)/keyboards/$$(KEYBOARD_FOLDER_PATH_3)/keymaps/*/.)))
KEYMAPS += $$(notdir $$(patsubst %/.,%,$$(wildcard $(ROOT_DIR)/keyboards/$$(KEYBOARD_FOLDER_PATH_4)/keymaps/*/.)))
KEYMAPS += $$(notdir $$(patsubst %/.,%,$$(wildcard $(ROOT_DIR)/keyboards/$$(KEYBOARD_FOLDER_PATH_5)/keymaps/*/.)))
# this might be needed, but in a different form
#KEYMAPS := $$(sort $$(filter-out $$(KEYBOARD_FOLDER_1) $$(KEYBOARD_FOLDER_2) \
$$(KEYBOARD_FOLDER_3) $$(KEYBOARD_FOLDER_4) $$(KEYBOARD_FOLDER_5), $$(KEYMAPS)))
ifneq ($(QMK_USERSPACE),)
KEYMAPS += $$(notdir $$(patsubst %/.,%,$$(wildcard $(QMK_USERSPACE)/keyboards/$$(KEYBOARD_FOLDER_PATH_1)/keymaps/*/.)))
KEYMAPS += $$(notdir $$(patsubst %/.,%,$$(wildcard $(QMK_USERSPACE)/keyboards/$$(KEYBOARD_FOLDER_PATH_2)/keymaps/*/.)))
KEYMAPS += $$(notdir $$(patsubst %/.,%,$$(wildcard $(QMK_USERSPACE)/keyboards/$$(KEYBOARD_FOLDER_PATH_3)/keymaps/*/.)))
KEYMAPS += $$(notdir $$(patsubst %/.,%,$$(wildcard $(QMK_USERSPACE)/keyboards/$$(KEYBOARD_FOLDER_PATH_4)/keymaps/*/.)))
KEYMAPS += $$(notdir $$(patsubst %/.,%,$$(wildcard $(QMK_USERSPACE)/keyboards/$$(KEYBOARD_FOLDER_PATH_5)/keymaps/*/.)))
KEYBOARD_LAYOUTS :=
ifneq ("$$(wildcard $(ROOT_DIR)/keyboards/$$(KEYBOARD_FOLDER_PATH_5)/rules.mk)","")
LAYOUTS :=
$$(eval include $(ROOT_DIR)/keyboards/$$(KEYBOARD_FOLDER_PATH_5)/rules.mk)
KEYBOARD_LAYOUTS := $$(sort $$(LAYOUTS) $$(KEYBOARD_LAYOUTS))
endif
ifneq ("$$(wildcard $(ROOT_DIR)/keyboards/$$(KEYBOARD_FOLDER_PATH_4)/rules.mk)","")
LAYOUTS :=
$$(eval include $(ROOT_DIR)/keyboards/$$(KEYBOARD_FOLDER_PATH_4)/rules.mk)
KEYBOARD_LAYOUTS := $$(sort $$(LAYOUTS) $$(KEYBOARD_LAYOUTS))
endif
ifneq ("$$(wildcard $(ROOT_DIR)/keyboards/$$(KEYBOARD_FOLDER_PATH_3)/rules.mk)","")
LAYOUTS :=
$$(eval include $(ROOT_DIR)/keyboards/$$(KEYBOARD_FOLDER_PATH_3)/rules.mk)
KEYBOARD_LAYOUTS := $$(sort $$(LAYOUTS) $$(KEYBOARD_LAYOUTS))
endif
ifneq ("$$(wildcard $(ROOT_DIR)/keyboards/$$(KEYBOARD_FOLDER_PATH_2)/rules.mk)","")
LAYOUTS :=
$$(eval include $(ROOT_DIR)/keyboards/$$(KEYBOARD_FOLDER_PATH_2)/rules.mk)
KEYBOARD_LAYOUTS := $$(sort $$(LAYOUTS) $$(KEYBOARD_LAYOUTS))
endif
ifneq ("$$(wildcard $(ROOT_DIR)/keyboards/$$(KEYBOARD_FOLDER_PATH_1)/rules.mk)","")
LAYOUTS :=
$$(eval include $(ROOT_DIR)/keyboards/$$(KEYBOARD_FOLDER_PATH_1)/rules.mk)
KEYBOARD_LAYOUTS := $$(sort $$(LAYOUTS) $$(KEYBOARD_LAYOUTS))
endif
KEYBOARD_LAYOUTS := $(shell $(QMK_BIN) list-layouts --keyboard $1)
LAYOUT_KEYMAPS :=
$$(foreach LAYOUT,$$(KEYBOARD_LAYOUTS),$$(eval LAYOUT_KEYMAPS += $$(notdir $$(patsubst %/.,%,$$(wildcard $(ROOT_DIR)/layouts/*/$$(LAYOUT)/*/.)))))
ifneq ($(QMK_USERSPACE),)
$$(foreach LAYOUT,$$(KEYBOARD_LAYOUTS),$$(eval LAYOUT_KEYMAPS += $$(notdir $$(patsubst %/.,%,$$(wildcard $(QMK_USERSPACE)/layouts/$$(LAYOUT)/*/.)))))
endif
KEYMAPS := $$(sort $$(KEYMAPS) $$(LAYOUT_KEYMAPS))
@@ -220,18 +364,12 @@ define PARSE_KEYBOARD
# The same if all was specified
else ifeq ($$(call COMPARE_AND_REMOVE_FROM_RULE,all),true)
$$(eval $$(call PARSE_ALL_KEYMAPS))
# List all keymaps for the given keyboard
else ifeq ($$(call COMPARE_AND_REMOVE_FROM_RULE,list-keymaps),true)
$$(eval $$(call LIST_ALL_KEYMAPS))
# Try to match the specified keyamp with the list of known keymaps
else ifeq ($$(call TRY_TO_MATCH_RULE_FROM_LIST,$$(KEYMAPS)),true)
$$(eval $$(call PARSE_KEYMAP,$$(MATCHED_ITEM)))
# Otherwise try to match the keymap from the current folder, or arguments to the make command
else ifneq ($$(KEYMAP),)
$$(eval $$(call PARSE_KEYMAP,$$(KEYMAP)))
# Otherwise if we are running make all:<user> just skip
else ifeq ($$(KEYBOARD_RULE),all)
# $$(info Skipping: No user keymap for $$(CURRENT_KB))
# Otherwise, make all keymaps, again this is consistent with how it works without
# any arguments
else
@@ -242,18 +380,25 @@ endef
# if we are going to compile all keyboards, match the rest of the rule
# for each of them
define PARSE_ALL_KEYBOARDS
$$(eval $$(call PARSE_ALL_IN_LIST,PARSE_KEYBOARD,$(shell $(QMK_BIN) list-keyboards --no-resolve-defaults)))
$$(eval $$(call PARSE_ALL_IN_LIST,PARSE_KEYBOARD,$(KEYBOARDS)))
endef
# Prints a list of all known keymaps for the given keyboard
define LIST_ALL_KEYMAPS
COMMAND_true_LIST_KEYMAPS := \
printf "$$(KEYMAPS)\n";
COMMAND_false_LIST_KEYMAPS := \
printf "$$(MSG_AVAILABLE_KEYMAPS)\n"; \
printf "$$(KEYMAPS)\n";
COMMANDS += LIST_KEYMAPS
endef
# $1 Subproject
# When entering this, the keyboard and subproject are known, so now we need
# to determine which keymaps are going to get compiled
# define PARSE_SUBPROJECT
# endef
# If we want to parse all subprojects, but the keyboard doesn't have any,
# then use defaultsp instead
# define PARSE_ALL_SUBPROJECTS
# ifeq ($$(SUBPROJECTS),)
# $$(eval $$(call PARSE_SUBPROJECT,defaultsp))
# else
# $$(eval $$(call PARSE_ALL_IN_LIST,PARSE_SUBPROJECT,$$(SUBPROJECTS)))
# endif
# endef
# $1 Keymap
# This is the meat of compiling a keyboard, when entering this, everything is known
@@ -265,7 +410,7 @@ define PARSE_KEYMAP
# The rest of the rule is the target
# Remove the leading ":" from the target, as it acts as a separator
MAKE_TARGET := $$(patsubst :%,%,$$(RULE))
# We need to generate an unique identifier to append to the COMMANDS list
# We need to generate an unique indentifer to append to the COMMANDS list
CURRENT_KB_UNDER := $$(subst /,_,$$(CURRENT_KB))
COMMAND := COMMAND_KEYBOARD_$$(CURRENT_KB_UNDER)_KEYMAP_$$(CURRENT_KM)
# If we are compiling a keyboard without a subproject, we want to display just the name
@@ -274,9 +419,9 @@ 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) QMK_BIN=$$(QMK_BIN)
MAKE_VARS := KEYBOARD=$$(CURRENT_KB) KEYMAP=$$(CURRENT_KM)
# And the first part of the make command
MAKE_CMD := $$(MAKE) -r -R -C $(ROOT_DIR) -f $(BUILDDEFS_PATH)/build_keyboard.mk $$(MAKE_TARGET)
MAKE_CMD := $$(MAKE) -r -R -C $(ROOT_DIR) -f build_keyboard.mk $$(MAKE_TARGET)
# The message to display
MAKE_MSG := $$(MSG_MAKE_KB)
# We run the command differently, depending on if we want more output or not
@@ -293,8 +438,6 @@ define BUILD
LOG=$$$$($$(MAKE_CMD) $$(MAKE_VARS) SILENT=true 2>&1) ; \
if [ $$$$? -gt 0 ]; \
then $$(PRINT_ERROR_PLAIN); \
elif [ "$$$$LOG" = "skipped" ] ; \
then $$(PRINT_SKIPPED_PLAIN); \
elif [ "$$$$LOG" != "" ] ; \
then $$(PRINT_WARNING_PLAIN); \
else \
@@ -314,20 +457,18 @@ define PARSE_ALL_KEYMAPS
endef
define BUILD_TEST
TEST_PATH := $1
TEST_NAME := $$(notdir $$(TEST_PATH))
TEST_FULL_NAME := $$(subst /,_,$$(patsubst $$(ROOT_DIR)tests/%,%,$$(TEST_PATH)))
TEST_NAME := $1
MAKE_TARGET := $2
COMMAND := $1
MAKE_CMD := $$(MAKE) -r -R -C $(ROOT_DIR) -f $(BUILDDEFS_PATH)/build_test.mk $$(MAKE_TARGET)
MAKE_VARS := TEST=$$(TEST_NAME) TEST_OUTPUT=$$(TEST_FULL_NAME) TEST_PATH=$$(TEST_PATH) FULL_TESTS="$$(FULL_TESTS)"
MAKE_CMD := $$(MAKE) -r -R -C $(ROOT_DIR) -f build_test.mk $$(MAKE_TARGET)
MAKE_VARS := TEST=$$(TEST_NAME) FULL_TESTS="$$(FULL_TESTS)"
MAKE_MSG := $$(MSG_MAKE_TEST)
$$(eval $$(call BUILD))
ifneq ($$(MAKE_TARGET),clean)
TEST_EXECUTABLE := $$(TEST_OUTPUT_DIR)/$$(TEST_FULL_NAME).elf
TESTS += $$(TEST_FULL_NAME)
TEST_EXECUTABLE := $$(TEST_DIR)/$$(TEST_NAME).elf
TESTS += $$(TEST_NAME)
TEST_MSG := $$(MSG_TEST)
$$(TEST_FULL_NAME)_COMMAND := \
$$(TEST_NAME)_COMMAND := \
printf "$$(TEST_MSG)\n"; \
$$(TEST_EXECUTABLE); \
if [ $$$$? -gt 0 ]; \
@@ -337,21 +478,14 @@ define BUILD_TEST
endif
endef
define LIST_TEST
include $(BUILDDEFS_PATH)/testlist.mk
FOUND_TESTS := $$(patsubst ./tests/%,%,$$(TEST_LIST))
$$(info $$(FOUND_TESTS))
endef
define PARSE_TEST
TESTS :=
TEST_NAME := $$(firstword $$(subst :, ,$$(RULE)))
TEST_TARGET := $$(subst $$(TEST_NAME),,$$(subst $$(TEST_NAME):,,$$(RULE)))
include $(BUILDDEFS_PATH)/testlist.mk
ifeq ($$(TEST_NAME),all)
MATCHED_TESTS := $$(TEST_LIST)
else
MATCHED_TESTS := $$(foreach TEST, $$(TEST_LIST),$$(if $$(findstring x$$(TEST_NAME)x, x$$(patsubst ./tests/%,%,$$(TEST)x)), $$(TEST),))
MATCHED_TESTS := $$(foreach TEST,$$(TEST_LIST),$$(if $$(findstring $$(TEST_NAME),$$(TEST)),$$(TEST),))
endif
$$(foreach TEST,$$(MATCHED_TESTS),$$(eval $$(call BUILD_TEST,$$(TEST),$$(TEST_TARGET))))
endef
@@ -370,7 +504,7 @@ define SET_SILENT_MODE
endif
endef
include $(BUILDDEFS_PATH)/message.mk
include $(ROOT_DIR)/message.mk
ifeq ($(strip $(BREAK_ON_ERRORS)), yes)
HANDLE_ERROR = exit 1
@@ -395,18 +529,25 @@ if [ $$error_occurred -gt 0 ]; then $(HANDLE_ERROR); fi;
endef
# Catch everything and parse the command line ourselves.
# Let's match everything, we handle all the rule parsing ourselves
.PHONY: %
%:
# Ensure that $(QMK_BIN) works.
if ! $(QMK_BIN) hello 1> /dev/null 2>&1; then printf "$(MSG_PYTHON_MISSING)"; exit 1; fi
ifdef NOT_REPO
printf "$(MSG_NOT_REPO)"
endif
ifndef SKIP_GIT
$(QMK_BIN) git-submodule --sync
# 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 python3 is installed. This check can be removed after python is used in more places.
if ! python3 --version 1> /dev/null 2>&1; then printf "$(MSG_PYTHON_MISSING)"; fi
# Check if the submodules are dirty, and display a warning if they are
if ! $(QMK_BIN) git-submodule --check 1> /dev/null 2>&1; then printf "$(MSG_SUBMODULE_DIRTY)"; fi
ifndef SKIP_GIT
if [ ! -e lib/chibios ]; then git submodule sync lib/chibios && git submodule update --depth 1 --init lib/chibios; fi
if [ ! -e lib/chibios-contrib ]; then git submodule sync lib/chibios-contrib && git submodule update --depth 1 --init lib/chibios-contrib; fi
if [ ! -e lib/ugfx ]; then git submodule sync lib/ugfx && git submodule update --depth 1 --init lib/ugfx; fi
git submodule status --recursive 2>/dev/null | \
while IFS= read -r x; do \
case "$$x" in \
\ *) ;; \
*) printf "$(MSG_SUBMODULE_DIRTY)";break;; \
esac \
done
endif
rm -f $(ERROR_FILE) > /dev/null 2>&1
$(eval $(call PARSE_RULE,$@))
@@ -421,62 +562,50 @@ endif
$(foreach TEST,$(sort $(TESTS)),$(RUN_TEST))
if [ -f $(ERROR_FILE) ]; then printf "$(MSG_ERRORS)" & exit 1; fi;
# These no longer work because of the colon system
# All should compile everything
# .PHONY: all
# all: all-keyboards test-all
# Define some shortcuts, mostly for compatibility with the old syntax
# .PHONY: all-keyboards
# all-keyboards: all\:all\:all
# .PHONY: all-keyboards-defaults
# all-keyboards-defaults: all\:default
# .PHONY: test
# test: test-all
# .PHONY: test-clean
# test-clean: test-all-clean
lib/%:
git submodule sync $?
git submodule update --init $?
.PHONY: git-submodule
git-submodule:
$(QMK_BIN) git-submodule
git submodule sync --recursive
git submodule update --init --recursive --progress
.PHONY: git-submodules
git-submodules: git-submodule
.PHONY: list-keyboards
list-keyboards:
$(QMK_BIN) list-keyboards --no-resolve-defaults | tr '\n' ' '
.PHONY: list-tests
list-tests:
$(eval $(call LIST_TEST))
.PHONY: generate-keyboards-file
generate-keyboards-file:
$(QMK_BIN) list-keyboards --no-resolve-defaults
.PHONY: clean
clean:
echo -n 'Deleting .build/ ... '
rm -rf $(BUILD_DIR)
echo 'done.'
.PHONY: distclean distclean_qmk
distclean: distclean_qmk
distclean_qmk: clean
echo -n 'Deleting *.bin, *.hex, and *.uf2 ... '
rm -f *.bin *.hex *.uf2
echo 'done.'
ifneq ($(QMK_USERSPACE),)
.PHONY: distclean_userspace
distclean: distclean_userspace
distclean_userspace: clean
echo -n 'Deleting userspace *.bin, *.hex, and *.uf2 ... '
rm -f $(QMK_USERSPACE)/*.bin $(QMK_USERSPACE)/*.hex $(QMK_USERSPACE)/*.uf2
echo 'done.'
ifdef SKIP_VERSION
SKIP_GIT := yes
endif
# Extra targets for formatting and/or pytest, running within the qmk/qmk_cli container to match GHA.
CONTAINER_PREAMBLE := export HOME="/tmp"; export PATH="/tmp/.local/bin:\$$PATH"; python3 -m pip install --upgrade pip; python3 -m pip install -r requirements-dev.txt
# Generate the version.h file
ifndef SKIP_GIT
GIT_VERSION := $(shell git describe --abbrev=6 --dirty --always --tags 2>/dev/null || date +"%Y-%m-%d-%H:%M:%S")
else
GIT_VERSION := NA
endif
ifndef SKIP_VERSION
BUILD_DATE := $(shell date +"%Y-%m-%d-%H:%M:%S")
$(shell echo '#define QMK_VERSION "$(GIT_VERSION)"' > $(ROOT_DIR)/quantum/version.h)
$(shell echo '#define QMK_BUILDDATE "$(BUILD_DATE)"' >> $(ROOT_DIR)/quantum/version.h)
else
BUILD_DATE := NA
endif
.PHONY: format-core
format-core:
RUNTIME=docker ./util/docker_cmd.sh bash -lic "$(CONTAINER_PREAMBLE); qmk format-c --core-only -a && qmk format-python -a"
.PHONY: pytest
pytest:
RUNTIME=docker ./util/docker_cmd.sh bash -lic "$(CONTAINER_PREAMBLE); qmk pytest"
.PHONY: format-and-pytest
format-and-pytest:
RUNTIME=docker ./util/docker_cmd.sh bash -lic "$(CONTAINER_PREAMBLE); qmk format-c --core-only -a && qmk format-python -a && qmk pytest"
include $(ROOT_DIR)/testlist.mk

93
Vagrantfile vendored Normal file
View File

@@ -0,0 +1,93 @@
# -*- mode: ruby -*-
# vi: set ft=ruby :
Vagrant.configure(2) do |config|
# define a name instead of just 'default'
config.vm.define "qmk_firmware"
# VMware/Virtualbox ( and also Hyperv/Parallels) 64 bit
config.vm.box = "generic/debian9"
# This section allows you to customize the Virtualbox VM
# settings, ie showing the GUI or upping the memory
# or cores if desired
config.vm.provider "virtualbox" do |vb|
# Hide the VirtualBox GUI when booting the machine
vb.gui = false
# Uncomment the below lines if you want to program
# your Teensy via the VM rather than your host OS
#vb.customize ['modifyvm', :id, '--usb', 'on']
#vb.customize ['usbfilter', 'add', '0',
# '--target', :id,
# '--name', 'teensy',
# '--vendorid', '0x16c0',
# '--productid','0x0478'
# ]
# Customize the amount of memory on the VM:
vb.memory = "512"
# Uncomment the below lines if you have time sync
# issues with make and incremental builds
#vb.customize [ "guestproperty", "set", :id, "/VirtualBox/GuestAdd/VBoxService/--timesync-set-threshold", 1000 ]
end
# This section allows you to customize the VMware VM
# settings, ie showing the GUI or upping the memory
# or cores if desired
config.vm.provider "vmware_workstation" do |vmw|
# Hide the VMware GUI when booting the machine
vmw.gui = false
# Customize the amount of memory on the VM:
vmw.memory = "512"
end
config.vm.provider "vmware_fusion" do |vmf|
# Hide the vmfare GUI when booting the machine
vmf.gui = false
# Customize the amount of memory on the VM:
vmf.memory = "512"
end
# Docker provider pulls from hub.docker.com respecting docker.image if
# config.vm.box is nil. In this case, we adhoc build util/vagrant/Dockerfile.
# Note that this bind-mounts from the current dir to
# /vagrant in the guest, so unless your UID is 1000 to match vagrant in the
# image, you'll need to: chmod -R a+rw .
config.vm.provider "docker" do |docker, override|
override.vm.box = nil
docker.build_dir = "util/vagrant"
docker.has_ssh = true
end
# Unless we are running the docker container directly
# 1. run container detached on vm
# 2. attach on 'vagrant ssh'
["virtualbox", "vmware_workstation", "vmware_fusion"].each do |type|
config.vm.provider type do |virt, override|
override.vm.provision "docker" do |d|
d.run "qmkfm/base_container",
cmd: "tail -f /dev/null",
args: "--privileged -v /dev:/dev -v '/vagrant:/vagrant'"
end
override.vm.provision "shell", inline: <<-SHELL
echo 'docker restart qmkfm-base_container && exec docker exec -it qmkfm-base_container /bin/bash -l' >> ~vagrant/.bashrc
SHELL
end
end
config.vm.post_up_message = <<-EOT
Log into the environment using 'vagrant ssh'. QMK directory synchronized with
host is located at /vagrant
To compile the .hex files use make command inside this directory, e.g.
cd /vagrant
make <keyboard>:default
Examples:
make planck/rev4:default:dfu
make planck:default
EOT
end

1
autocomplete.sh Normal file

File diff suppressed because one or more lines are too long

97
bin/qmk Executable file
View File

@@ -0,0 +1,97 @@
#!/usr/bin/env python3
"""CLI wrapper for running QMK commands.
"""
import os
import subprocess
import sys
from glob import glob
from time import strftime
from importlib import import_module
from importlib.util import find_spec
# Add the QMK python libs to our path
script_dir = os.path.dirname(os.path.realpath(__file__))
qmk_dir = os.path.abspath(os.path.join(script_dir, '..'))
python_lib_dir = os.path.abspath(os.path.join(qmk_dir, 'lib', 'python'))
sys.path.append(python_lib_dir)
# Change to the root of our checkout
os.environ['ORIG_CWD'] = os.getcwd()
os.chdir(qmk_dir)
# Make sure our modules have been setup
with open('requirements.txt', 'r') as fd:
for line in fd.readlines():
line = line.strip().replace('<', '=').replace('>', '=')
if line[0] == '#':
continue
if '#' in line:
line = line.split('#')[0]
module = line.split('=')[0] if '=' in line else line
if not find_spec(module):
print('Your QMK build environment is not fully setup!\n')
print('Please run `./util/qmk_install.sh` to setup QMK.')
exit(255)
# Figure out our version
command = ['git', 'describe', '--abbrev=6', '--dirty', '--always', '--tags']
result = subprocess.run(command, text=True, capture_output=True)
if result.returncode == 0:
os.environ['QMK_VERSION'] = 'QMK ' + result.stdout.strip()
else:
os.environ['QMK_VERSION'] = 'QMK ' + strftime('%Y-%m-%d-%H:%M:%S')
# Setup the CLI
import milc
milc.EMOJI_LOGLEVELS['INFO'] = '{fg_blue}ψ{style_reset_all}'
# If we were invoked as `qmk <cmd>` massage sys.argv into `qmk-<cmd>`.
# This means we can't accept arguments to the qmk script itself.
script_name = os.path.basename(sys.argv[0])
if script_name == 'qmk':
if len(sys.argv) == 1:
milc.cli.log.error('No subcommand specified!\n')
if len(sys.argv) == 1 or sys.argv[1] in ['-h', '--help']:
milc.cli.echo('usage: qmk <subcommand> [...]')
milc.cli.echo('\nsubcommands:')
subcommands = glob(os.path.join(qmk_dir, 'bin', 'qmk-*'))
for subcommand in sorted(subcommands):
subcommand = os.path.basename(subcommand).split('-', 1)[1]
milc.cli.echo('\t%s', subcommand)
milc.cli.echo('\nqmk <subcommand> --help for more information')
exit(1)
if sys.argv[1] in ['-V', '--version']:
milc.cli.echo(os.environ['QMK_VERSION'])
exit(0)
sys.argv[0] = script_name = '-'.join((script_name, sys.argv[1]))
del sys.argv[1]
# Look for which module to import
if script_name == 'qmk':
milc.cli.print_help()
exit(0)
elif not script_name.startswith('qmk-'):
milc.cli.log.error('Invalid symlink, must start with "qmk-": %s', script_name)
else:
subcommand = script_name.replace('-', '.').replace('_', '.').split('.')
subcommand.insert(1, 'cli')
subcommand = '.'.join(subcommand)
try:
import_module(subcommand)
except ModuleNotFoundError as e:
if e.__class__.__name__ != subcommand:
raise
milc.cli.log.error('Invalid subcommand! Could not import %s.', subcommand)
exit(1)
if __name__ == '__main__':
milc.cli()

1
bin/qmk-compile-json Symbolic link
View File

@@ -0,0 +1 @@
qmk

1
bin/qmk-doctor Symbolic link
View File

@@ -0,0 +1 @@
qmk

1
bin/qmk-hello Symbolic link
View File

@@ -0,0 +1 @@
qmk

1
bin/qmk-json-keymap Symbolic link
View File

@@ -0,0 +1 @@
qmk

46
book.json Normal file
View File

@@ -0,0 +1,46 @@
{
"structure": {
"summary": "_summary.md"
},
"plugins" : [
"edit-link",
"forkmegithub",
"hints",
"page-toc",
"terminal",
"toolbar",
"bulk-redirect"
],
"pluginsConfig": {
"edit-link": {
"base": "https://github.com/qmk/qmk_firmware/edit/master/docs",
"label": "Suggest an edit"
},
"forkmegithub": {
"color": "red",
"url": "https://github.com/qmk/qmk_firmware"
},
"page-toc": {
"selector": ".markdown-section h1, .markdown-section h2"
},
"terminal": {
"copyButtons": true,
"fade": false,
"style": "flat"
},
"toolbar": {
"buttons": [
{
"label": "QMK Firmware",
"icon": "fa fa-github",
"url": "https://github.com/qmk/qmk_firmware"
}
]
},
"bulk-redirect": {
"basepath": "/",
"redirectsFile": "docs/redirects.json"
}
},
"root": "./docs/"
}

86
bootloader.mk Normal file
View File

@@ -0,0 +1,86 @@
# Copyright 2017 Jack Humbert
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
# If it's possible that multiple bootloaders can be used for one project,
# you can leave this unset, and the correct size will be selected
# automatically.
#
# Sets the bootloader defined in the keyboard's/keymap's rules.mk
# Current options:
# atmel-dfu
# lufa-dfu
# qmk-dfu
# halfkay
# caterina
# bootloadHID
#
# BOOTLOADER_SIZE can still be defined manually, but it's recommended
# you add any possible configuration to this list
ifeq ($(strip $(BOOTLOADER)), atmel-dfu)
OPT_DEFS += -DBOOTLOADER_ATMEL_DFU
OPT_DEFS += -DBOOTLOADER_DFU
ifeq ($(strip $(MCU)), atmega32u4)
BOOTLOADER_SIZE = 4096
endif
ifeq ($(strip $(MCU)), at90usb1286)
BOOTLOADER_SIZE = 8192
endif
endif
ifeq ($(strip $(BOOTLOADER)), lufa-dfu)
OPT_DEFS += -DBOOTLOADER_LUFA_DFU
OPT_DEFS += -DBOOTLOADER_DFU
ifeq ($(strip $(MCU)), atmega32u4)
BOOTLOADER_SIZE = 4096
endif
ifeq ($(strip $(MCU)), at90usb1286)
BOOTLOADER_SIZE = 8192
endif
endif
ifeq ($(strip $(BOOTLOADER)), qmk-dfu)
OPT_DEFS += -DBOOTLOADER_QMK_DFU
OPT_DEFS += -DBOOTLOADER_DFU
ifeq ($(strip $(MCU)), atmega32u4)
BOOTLOADER_SIZE = 4096
endif
ifeq ($(strip $(MCU)), at90usb1286)
BOOTLOADER_SIZE = 8192
endif
endif
ifeq ($(strip $(BOOTLOADER)), halfkay)
OPT_DEFS += -DBOOTLOADER_HALFKAY
ifeq ($(strip $(MCU)), atmega32u4)
BOOTLOADER_SIZE = 512
endif
ifeq ($(strip $(MCU)), at90usb1286)
BOOTLOADER_SIZE = 1024
endif
endif
ifeq ($(strip $(BOOTLOADER)), caterina)
OPT_DEFS += -DBOOTLOADER_CATERINA
BOOTLOADER_SIZE = 4096
endif
ifeq ($(strip $(BOOTLOADER)), bootloadHID)
OPT_DEFS += -DBOOTLOADER_BOOTLOADHID
BOOTLOADER_SIZE = 4096
endif
ifeq ($(strip $(BOOTLOADER)), USBasp)
OPT_DEFS += -DBOOTLOADER_USBASP
BOOTLOADER_SIZE = 4096
endif
ifdef BOOTLOADER_SIZE
OPT_DEFS += -DBOOTLOADER_SIZE=$(strip $(BOOTLOADER_SIZE))
endif

33
build_full_test.mk Normal file
View File

@@ -0,0 +1,33 @@
# Copyright 2017 Fred Sundvik
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#include $(TMK_PATH)/protocol.mk
TEST_PATH=tests/$(TEST)
$(TEST)_SRC= \
$(TEST_PATH)/keymap.c \
$(TMK_COMMON_SRC) \
$(QUANTUM_SRC) \
$(SRC) \
tests/test_common/matrix.c \
tests/test_common/test_driver.cpp \
tests/test_common/keyboard_report_util.cpp \
tests/test_common/test_fixture.cpp
$(TEST)_SRC += $(patsubst $(ROOTDIR)/%,%,$(wildcard $(TEST_PATH)/*.cpp))
$(TEST)_DEFS=$(TMK_COMMON_DEFS) $(OPT_DEFS)
$(TEST)_CONFIG=$(TEST_PATH)/config.h
VPATH+=$(TOP_DIR)/tests/test_common

27
build_json.mk Normal file
View File

@@ -0,0 +1,27 @@
# Look for a json keymap file
ifneq ("$(wildcard $(MAIN_KEYMAP_PATH_5)/keymap.json)","")
KEYMAP_C := $(KEYBOARD_OUTPUT)/src/keymap.c
KEYMAP_JSON := $(MAIN_KEYMAP_PATH_5)/keymap.json
KEYMAP_PATH := $(MAIN_KEYMAP_PATH_5)
else ifneq ("$(wildcard $(MAIN_KEYMAP_PATH_4)/keymap.json)","")
KEYMAP_C := $(KEYBOARD_OUTPUT)/src/keymap.c
KEYMAP_JSON := $(MAIN_KEYMAP_PATH_4)/keymap.json
KEYMAP_PATH := $(MAIN_KEYMAP_PATH_4)
else ifneq ("$(wildcard $(MAIN_KEYMAP_PATH_3)/keymap.json)","")
KEYMAP_C := $(KEYBOARD_OUTPUT)/src/keymap.c
KEYMAP_JSON := $(MAIN_KEYMAP_PATH_3)/keymap.json
KEYMAP_PATH := $(MAIN_KEYMAP_PATH_3)
else ifneq ("$(wildcard $(MAIN_KEYMAP_PATH_2)/keymap.json)","")
KEYMAP_C := $(KEYBOARD_OUTPUT)/src/keymap.c
KEYMAP_JSON := $(MAIN_KEYMAP_PATH_2)/keymap.json
KEYMAP_PATH := $(MAIN_KEYMAP_PATH_2)
else ifneq ("$(wildcard $(MAIN_KEYMAP_PATH_1)/keymap.json)","")
KEYMAP_C := $(KEYBOARD_OUTPUT)/src/keymap.c
KEYMAP_JSON := $(MAIN_KEYMAP_PATH_1)/keymap.json
KEYMAP_PATH := $(MAIN_KEYMAP_PATH_1)
endif
# Generate the keymap.c
ifneq ("$(KEYMAP_JSON)","")
_ = $(shell test -e $(KEYMAP_C) || bin/qmk-json-keymap $(KEYMAP_JSON) -o $(KEYMAP_C))
endif

404
build_keyboard.mk Normal file
View File

@@ -0,0 +1,404 @@
# Determine what keyboard we are building and setup the build environment.
#
# We support folders up to 5 levels deep below `keyboards/`. This file is
# responsible for determining which folder is being used and doing the
# corresponding environment setup.
ifndef VERBOSE
.SILENT:
endif
.DEFAULT_GOAL := all
include common.mk
# Set the filename for the final firmware binary
KEYBOARD_FILESAFE := $(subst /,_,$(KEYBOARD))
TARGET ?= $(KEYBOARD_FILESAFE)_$(KEYMAP)
KEYBOARD_OUTPUT := $(BUILD_DIR)/obj_$(KEYBOARD_FILESAFE)
STM32_PATH := quantum/stm32
# Force expansion
TARGET := $(TARGET)
# For split boards we need to set a master half.
MASTER ?= left
ifdef master
MASTER = $(master)
endif
ifeq ($(MASTER),right)
OPT_DEFS += -DMASTER_IS_ON_RIGHT
else
ifneq ($(MASTER),left)
$(error MASTER does not have a valid value(left/right))
endif
endif
ifdef SKIP_VERSION
OPT_DEFS += -DSKIP_VERSION
endif
# Determine which subfolders exist.
KEYBOARD_FOLDER_PATH_1 := $(KEYBOARD)
KEYBOARD_FOLDER_PATH_2 := $(patsubst %/,%,$(dir $(KEYBOARD_FOLDER_PATH_1)))
KEYBOARD_FOLDER_PATH_3 := $(patsubst %/,%,$(dir $(KEYBOARD_FOLDER_PATH_2)))
KEYBOARD_FOLDER_PATH_4 := $(patsubst %/,%,$(dir $(KEYBOARD_FOLDER_PATH_3)))
KEYBOARD_FOLDER_PATH_5 := $(patsubst %/,%,$(dir $(KEYBOARD_FOLDER_PATH_4)))
KEYBOARD_FOLDER_1 := $(notdir $(KEYBOARD_FOLDER_PATH_1))
KEYBOARD_FOLDER_2 := $(notdir $(KEYBOARD_FOLDER_PATH_2))
KEYBOARD_FOLDER_3 := $(notdir $(KEYBOARD_FOLDER_PATH_3))
KEYBOARD_FOLDER_4 := $(notdir $(KEYBOARD_FOLDER_PATH_4))
KEYBOARD_FOLDER_5 := $(notdir $(KEYBOARD_FOLDER_PATH_5))
KEYBOARD_PATHS :=
KEYBOARD_PATH_1 := keyboards/$(KEYBOARD_FOLDER_PATH_1)
KEYBOARD_PATH_2 := keyboards/$(KEYBOARD_FOLDER_PATH_2)
KEYBOARD_PATH_3 := keyboards/$(KEYBOARD_FOLDER_PATH_3)
KEYBOARD_PATH_4 := keyboards/$(KEYBOARD_FOLDER_PATH_4)
KEYBOARD_PATH_5 := keyboards/$(KEYBOARD_FOLDER_PATH_5)
ifneq ("$(wildcard $(KEYBOARD_PATH_5)/)","")
KEYBOARD_PATHS += $(KEYBOARD_PATH_5)
endif
ifneq ("$(wildcard $(KEYBOARD_PATH_4)/)","")
KEYBOARD_PATHS += $(KEYBOARD_PATH_4)
endif
ifneq ("$(wildcard $(KEYBOARD_PATH_3)/)","")
KEYBOARD_PATHS += $(KEYBOARD_PATH_3)
endif
ifneq ("$(wildcard $(KEYBOARD_PATH_2)/)","")
KEYBOARD_PATHS += $(KEYBOARD_PATH_2)
endif
ifneq ("$(wildcard $(KEYBOARD_PATH_1)/)","")
KEYBOARD_PATHS += $(KEYBOARD_PATH_1)
endif
# Pull in rules.mk files from all our subfolders
ifneq ("$(wildcard $(KEYBOARD_PATH_5)/rules.mk)","")
include $(KEYBOARD_PATH_5)/rules.mk
endif
ifneq ("$(wildcard $(KEYBOARD_PATH_4)/rules.mk)","")
include $(KEYBOARD_PATH_4)/rules.mk
endif
ifneq ("$(wildcard $(KEYBOARD_PATH_3)/rules.mk)","")
include $(KEYBOARD_PATH_3)/rules.mk
endif
ifneq ("$(wildcard $(KEYBOARD_PATH_2)/rules.mk)","")
include $(KEYBOARD_PATH_2)/rules.mk
endif
ifneq ("$(wildcard $(KEYBOARD_PATH_1)/rules.mk)","")
include $(KEYBOARD_PATH_1)/rules.mk
endif
MAIN_KEYMAP_PATH_1 := $(KEYBOARD_PATH_1)/keymaps/$(KEYMAP)
MAIN_KEYMAP_PATH_2 := $(KEYBOARD_PATH_2)/keymaps/$(KEYMAP)
MAIN_KEYMAP_PATH_3 := $(KEYBOARD_PATH_3)/keymaps/$(KEYMAP)
MAIN_KEYMAP_PATH_4 := $(KEYBOARD_PATH_4)/keymaps/$(KEYMAP)
MAIN_KEYMAP_PATH_5 := $(KEYBOARD_PATH_5)/keymaps/$(KEYMAP)
# Check for keymap.json first, so we can regenerate keymap.c
include build_json.mk
ifeq ("$(wildcard $(KEYMAP_PATH))", "")
# Look through the possible keymap folders until we find a matching keymap.c
ifneq ("$(wildcard $(MAIN_KEYMAP_PATH_5)/keymap.c)","")
-include $(MAIN_KEYMAP_PATH_5)/rules.mk
KEYMAP_C := $(MAIN_KEYMAP_PATH_5)/keymap.c
KEYMAP_PATH := $(MAIN_KEYMAP_PATH_5)
else ifneq ("$(wildcard $(MAIN_KEYMAP_PATH_4)/keymap.c)","")
-include $(MAIN_KEYMAP_PATH_4)/rules.mk
KEYMAP_C := $(MAIN_KEYMAP_PATH_4)/keymap.c
KEYMAP_PATH := $(MAIN_KEYMAP_PATH_4)
else ifneq ("$(wildcard $(MAIN_KEYMAP_PATH_3)/keymap.c)","")
-include $(MAIN_KEYMAP_PATH_3)/rules.mk
KEYMAP_C := $(MAIN_KEYMAP_PATH_3)/keymap.c
KEYMAP_PATH := $(MAIN_KEYMAP_PATH_3)
else ifneq ("$(wildcard $(MAIN_KEYMAP_PATH_2)/keymap.c)","")
-include $(MAIN_KEYMAP_PATH_2)/rules.mk
KEYMAP_C := $(MAIN_KEYMAP_PATH_2)/keymap.c
KEYMAP_PATH := $(MAIN_KEYMAP_PATH_2)
else ifneq ("$(wildcard $(MAIN_KEYMAP_PATH_1)/keymap.c)","")
-include $(MAIN_KEYMAP_PATH_1)/rules.mk
KEYMAP_C := $(MAIN_KEYMAP_PATH_1)/keymap.c
KEYMAP_PATH := $(MAIN_KEYMAP_PATH_1)
else ifneq ($(LAYOUTS),)
# If we haven't found a keymap yet fall back to community layouts
include build_layout.mk
else
$(error Could not find keymap)
# this state should never be reached
endif
endif
ifeq ($(strip $(CTPC)), yes)
CONVERT_TO_PROTON_C=yes
endif
ifeq ($(strip $(CONVERT_TO_PROTON_C)), yes)
TARGET := $(TARGET)_proton_c
include $(STM32_PATH)/proton_c.mk
OPT_DEFS += -DCONVERT_TO_PROTON_C
endif
ifneq ($(FORCE_LAYOUT),)
TARGET := $(TARGET)_$(FORCE_LAYOUT)
endif
include quantum/mcu_selection.mk
ifdef MCU_FAMILY
OPT_DEFS += -DQMK_STM32
KEYBOARD_PATHS += $(STM32_PATH)
endif
# Find all the C source files to be compiled in subfolders.
KEYBOARD_SRC :=
KEYBOARD_C_1 := $(KEYBOARD_PATH_1)/$(KEYBOARD_FOLDER_1).c
KEYBOARD_C_2 := $(KEYBOARD_PATH_2)/$(KEYBOARD_FOLDER_2).c
KEYBOARD_C_3 := $(KEYBOARD_PATH_3)/$(KEYBOARD_FOLDER_3).c
KEYBOARD_C_4 := $(KEYBOARD_PATH_4)/$(KEYBOARD_FOLDER_4).c
KEYBOARD_C_5 := $(KEYBOARD_PATH_5)/$(KEYBOARD_FOLDER_5).c
ifneq ("$(wildcard $(KEYBOARD_C_5))","")
KEYBOARD_SRC += $(KEYBOARD_C_5)
endif
ifneq ("$(wildcard $(KEYBOARD_C_4))","")
KEYBOARD_SRC += $(KEYBOARD_C_4)
endif
ifneq ("$(wildcard $(KEYBOARD_C_3))","")
KEYBOARD_SRC += $(KEYBOARD_C_3)
endif
ifneq ("$(wildcard $(KEYBOARD_C_2))","")
KEYBOARD_SRC += $(KEYBOARD_C_2)
endif
ifneq ("$(wildcard $(KEYBOARD_C_1))","")
KEYBOARD_SRC += $(KEYBOARD_C_1)
endif
# Generate KEYBOARD_name_subname for all levels of the keyboard folder
KEYBOARD_FILESAFE_1 := $(subst .,,$(subst /,_,$(KEYBOARD_FOLDER_PATH_1)))
KEYBOARD_FILESAFE_2 := $(subst .,,$(subst /,_,$(KEYBOARD_FOLDER_PATH_2)))
KEYBOARD_FILESAFE_3 := $(subst .,,$(subst /,_,$(KEYBOARD_FOLDER_PATH_3)))
KEYBOARD_FILESAFE_4 := $(subst .,,$(subst /,_,$(KEYBOARD_FOLDER_PATH_4)))
KEYBOARD_FILESAFE_5 := $(subst .,,$(subst /,_,$(KEYBOARD_FOLDER_PATH_5)))
ifneq ("$(wildcard $(KEYBOARD_PATH_5)/)","")
OPT_DEFS += -DKEYBOARD_$(KEYBOARD_FILESAFE_5)
endif
ifneq ("$(wildcard $(KEYBOARD_PATH_4)/)","")
OPT_DEFS += -DKEYBOARD_$(KEYBOARD_FILESAFE_4)
endif
ifneq ("$(wildcard $(KEYBOARD_PATH_3)/)","")
OPT_DEFS += -DKEYBOARD_$(KEYBOARD_FILESAFE_3)
endif
ifneq ("$(wildcard $(KEYBOARD_PATH_2)/)","")
OPT_DEFS += -DKEYBOARD_$(KEYBOARD_FILESAFE_2)
endif
ifneq ("$(wildcard $(KEYBOARD_PATH_1)/)","")
OPT_DEFS += -DKEYBOARD_$(KEYBOARD_FILESAFE_1)
endif
# Setup the define for QMK_KEYBOARD_H. This is used inside of keymaps so
# that the same keymap may be used on multiple keyboards.
#
# We grab the most top-level include file that we can. That file should
# use #ifdef statements to include all the neccesary subfolder includes,
# as described here:
#
# https://docs.qmk.fm/#/feature_layouts?id=tips-for-making-layouts-keyboard-agnostic
#
ifneq ("$(wildcard $(KEYBOARD_PATH_1)/$(KEYBOARD_FOLDER_1).h)","")
QMK_KEYBOARD_H = $(KEYBOARD_FOLDER_1).h
endif
ifneq ("$(wildcard $(KEYBOARD_PATH_2)/$(KEYBOARD_FOLDER_2).h)","")
QMK_KEYBOARD_H = $(KEYBOARD_FOLDER_2).h
endif
ifneq ("$(wildcard $(KEYBOARD_PATH_3)/$(KEYBOARD_FOLDER_3).h)","")
QMK_KEYBOARD_H = $(KEYBOARD_FOLDER_3).h
endif
ifneq ("$(wildcard $(KEYBOARD_PATH_4)/$(KEYBOARD_FOLDER_4).h)","")
QMK_KEYBOARD_H = $(KEYBOARD_FOLDER_4).h
endif
ifneq ("$(wildcard $(KEYBOARD_PATH_5)/$(KEYBOARD_FOLDER_5).h)","")
QMK_KEYBOARD_H = $(KEYBOARD_FOLDER_5).h
endif
# Determine and set parameters based on the keyboard's processor family.
# We can assume a ChibiOS target When MCU_FAMILY is defined since it's
# not used for LUFA
ifdef MCU_FAMILY
FIRMWARE_FORMAT?=bin
PLATFORM=CHIBIOS
else ifdef ARM_ATSAM
PLATFORM=ARM_ATSAM
FIRMWARE_FORMAT=bin
else
PLATFORM=AVR
FIRMWARE_FORMAT?=hex
endif
ifeq ($(PLATFORM),CHIBIOS)
include $(TMK_PATH)/chibios.mk
OPT_OS = chibios
ifneq ("$(wildcard $(KEYBOARD_PATH_5)/bootloader_defs.h)","")
OPT_DEFS += -include $(KEYBOARD_PATH_5)/bootloader_defs.h
else ifneq ("$(wildcard $(KEYBOARD_PATH_5)/boards/$(BOARD)/bootloader_defs.h)","")
OPT_DEFS += -include $(KEYBOARD_PATH_5)/boards/$(BOARD)/bootloader_defs.h
else ifneq ("$(wildcard $(KEYBOARD_PATH_4)/bootloader_defs.h)","")
OPT_DEFS += -include $(KEYBOARD_PATH_4)/bootloader_defs.h
else ifneq ("$(wildcard $(KEYBOARD_PATH_4)/boards/$(BOARD)/bootloader_defs.h)","")
OPT_DEFS += -include $(KEYBOARD_PATH_4)/boards/$(BOARD)/bootloader_defs.h
else ifneq ("$(wildcard $(KEYBOARD_PATH_3)/bootloader_defs.h)","")
OPT_DEFS += -include $(KEYBOARD_PATH_3)/bootloader_defs.h
else ifneq ("$(wildcard $(KEYBOARD_PATH_3)/boards/$(BOARD)/bootloader_defs.h)","")
OPT_DEFS += -include $(KEYBOARD_PATH_3)/boards/$(BOARD)/bootloader_defs.h
else ifneq ("$(wildcard $(KEYBOARD_PATH_2)/bootloader_defs.h)","")
OPT_DEFS += -include $(KEYBOARD_PATH_2)/bootloader_defs.h
else ifneq ("$(wildcard $(KEYBOARD_PATH_2)/boards/$(BOARD)/bootloader_defs.h)","")
OPT_DEFS += -include $(KEYBOARD_PATH_2)/boards/$(BOARD)/bootloader_defs.h
else ifneq ("$(wildcard $(KEYBOARD_PATH_1)/bootloader_defs.h)","")
OPT_DEFS += -include $(KEYBOARD_PATH_1)/bootloader_defs.h
else ifneq ("$(wildcard $(KEYBOARD_PATH_1)/boards/$(BOARD)/bootloader_defs.h)","")
OPT_DEFS += -include $(KEYBOARD_PATH_1)/boards/$(BOARD)/bootloader_defs.h
else ifneq ("$(wildcard $(TOP_DIR)/drivers/boards/$(BOARD)/bootloader_defs.h)","")
OPT_DEFS += -include $(TOP_DIR)/drivers/boards/$(BOARD)/bootloader_defs.h
endif
endif
# Find all of the config.h files and add them to our CONFIG_H define.
CONFIG_H :=
ifneq ("$(wildcard $(KEYBOARD_PATH_5)/config.h)","")
CONFIG_H += $(KEYBOARD_PATH_5)/config.h
endif
ifneq ("$(wildcard $(KEYBOARD_PATH_4)/config.h)","")
CONFIG_H += $(KEYBOARD_PATH_4)/config.h
endif
ifneq ("$(wildcard $(KEYBOARD_PATH_3)/config.h)","")
CONFIG_H += $(KEYBOARD_PATH_3)/config.h
endif
ifneq ("$(wildcard $(KEYBOARD_PATH_2)/config.h)","")
CONFIG_H += $(KEYBOARD_PATH_2)/config.h
endif
ifneq ("$(wildcard $(KEYBOARD_PATH_1)/config.h)","")
CONFIG_H += $(KEYBOARD_PATH_1)/config.h
endif
POST_CONFIG_H :=
ifneq ("$(wildcard $(KEYBOARD_PATH_1)/post_config.h)","")
POST_CONFIG_H += $(KEYBOARD_PATH_1)/post_config.h
endif
ifneq ("$(wildcard $(KEYBOARD_PATH_2)/post_config.h)","")
POST_CONFIG_H += $(KEYBOARD_PATH_2)/post_config.h
endif
ifneq ("$(wildcard $(KEYBOARD_PATH_3)/post_config.h)","")
POST_CONFIG_H += $(KEYBOARD_PATH_3)/post_config.h
endif
ifneq ("$(wildcard $(KEYBOARD_PATH_4)/post_config.h)","")
POST_CONFIG_H += $(KEYBOARD_PATH_4)/post_config.h
endif
ifneq ("$(wildcard $(KEYBOARD_PATH_5)/post_config.h)","")
POST_CONFIG_H += $(KEYBOARD_PATH_5)/post_config.h
endif
# Save the defines and includes here, so we don't include any keymap specific ones
PROJECT_DEFS := $(OPT_DEFS)
PROJECT_INC := $(VPATH) $(EXTRAINCDIRS) $(KEYBOARD_PATHS)
PROJECT_CONFIG := $(CONFIG_H)
# Userspace setup and definitions
ifeq ("$(USER_NAME)","")
USER_NAME := $(KEYMAP)
endif
USER_PATH := users/$(USER_NAME)
-include $(USER_PATH)/rules.mk
ifneq ("$(wildcard $(USER_PATH)/config.h)","")
CONFIG_H += $(USER_PATH)/config.h
endif
# Object files directory
# To put object files in current directory, use a dot (.), do NOT make
# this an empty or blank macro!
KEYMAP_OUTPUT := $(BUILD_DIR)/obj_$(TARGET)
ifneq ("$(wildcard $(KEYMAP_PATH)/config.h)","")
CONFIG_H += $(KEYMAP_PATH)/config.h
endif
# project specific files
SRC += $(KEYBOARD_SRC) \
$(KEYMAP_C) \
$(QUANTUM_SRC)
# Optimize size but this may cause error "relocation truncated to fit"
#EXTRALDFLAGS = -Wl,--relax
# Search Path
VPATH += $(KEYMAP_PATH)
VPATH += $(KEYBOARD_PATHS)
VPATH += $(COMMON_VPATH)
VPATH += $(USER_PATH)
include common_features.mk
include $(TMK_PATH)/protocol.mk
include $(TMK_PATH)/common.mk
include bootloader.mk
SRC += $(patsubst %.c,%.clib,$(LIB_SRC))
SRC += $(patsubst %.c,%.clib,$(QUANTUM_LIB_SRC))
SRC += $(TMK_COMMON_SRC)
OPT_DEFS += $(TMK_COMMON_DEFS)
EXTRALDFLAGS += $(TMK_COMMON_LDFLAGS)
ifeq ($(PLATFORM),AVR)
ifeq ($(strip $(PROTOCOL)), VUSB)
include $(TMK_PATH)/protocol/vusb.mk
else
include $(TMK_PATH)/protocol/lufa.mk
endif
include $(TMK_PATH)/avr.mk
endif
ifeq ($(PLATFORM),ARM_ATSAM)
include $(TMK_PATH)/arm_atsam.mk
include $(TMK_PATH)/protocol/arm_atsam.mk
endif
ifeq ($(PLATFORM),CHIBIOS)
include $(TMK_PATH)/protocol/chibios.mk
endif
ifeq ($(strip $(VISUALIZER_ENABLE)), yes)
VISUALIZER_DIR = $(QUANTUM_DIR)/visualizer
VISUALIZER_PATH = $(QUANTUM_PATH)/visualizer
include $(VISUALIZER_PATH)/visualizer.mk
endif
CONFIG_H += $(POST_CONFIG_H)
ALL_CONFIGS := $(PROJECT_CONFIG) $(CONFIG_H)
OUTPUTS := $(KEYMAP_OUTPUT) $(KEYBOARD_OUTPUT)
$(KEYMAP_OUTPUT)_SRC := $(SRC)
$(KEYMAP_OUTPUT)_DEFS := $(OPT_DEFS) $(GFXDEFS) \
-DQMK_KEYBOARD=\"$(KEYBOARD)\" -DQMK_KEYBOARD_H=\"$(QMK_KEYBOARD_H)\" -DQMK_KEYBOARD_CONFIG_H=\"$(KEYBOARD_PATH_1)/config.h\" \
-DQMK_KEYMAP=\"$(KEYMAP)\" -DQMK_KEYMAP_H=\"$(KEYMAP).h\" -DQMK_KEYMAP_CONFIG_H=\"$(KEYMAP_PATH)/config.h\" \
-DQMK_SUBPROJECT -DQMK_SUBPROJECT_H -DQMK_SUBPROJECT_CONFIG_H
$(KEYMAP_OUTPUT)_INC := $(VPATH) $(EXTRAINCDIRS)
$(KEYMAP_OUTPUT)_CONFIG := $(CONFIG_H)
$(KEYBOARD_OUTPUT)_SRC := $(CHIBISRC) $(GFXSRC)
$(KEYBOARD_OUTPUT)_DEFS := $(PROJECT_DEFS) $(GFXDEFS)
$(KEYBOARD_OUTPUT)_INC := $(PROJECT_INC) $(GFXINC)
$(KEYBOARD_OUTPUT)_CONFIG := $(PROJECT_CONFIG)
# Default target.
all: build check-size
build: elf cpfirmware
check-size: build
objs-size: build
include show_options.mk
include $(TMK_PATH)/rules.mk

27
build_layout.mk Normal file
View File

@@ -0,0 +1,27 @@
LAYOUTS_PATH := layouts
LAYOUTS_REPOS := $(patsubst %/,%,$(sort $(dir $(wildcard $(LAYOUTS_PATH)/*/))))
define SEARCH_LAYOUTS_REPO
LAYOUT_KEYMAP_PATH := $$(LAYOUTS_REPO)/$$(LAYOUT)/$$(KEYMAP)
LAYOUT_KEYMAP_C := $$(LAYOUT_KEYMAP_PATH)/keymap.c
ifneq ("$$(wildcard $$(LAYOUT_KEYMAP_C))","")
-include $$(LAYOUT_KEYMAP_PATH)/rules.mk
KEYMAP_C := $$(LAYOUT_KEYMAP_C)
KEYMAP_PATH := $$(LAYOUT_KEYMAP_PATH)
endif
endef
define SEARCH_LAYOUTS
$$(foreach LAYOUTS_REPO,$$(LAYOUTS_REPOS),$$(eval $$(call SEARCH_LAYOUTS_REPO)))
endef
ifneq ($(FORCE_LAYOUT),)
ifneq (,$(findstring $(FORCE_LAYOUT),$(LAYOUTS)))
$(info Forcing layout: $(FORCE_LAYOUT))
LAYOUTS := $(FORCE_LAYOUT)
else
$(error Forced layout does not exist)
endif
endif
$(foreach LAYOUT,$(LAYOUTS),$(eval $(call SEARCH_LAYOUTS)))

67
build_test.mk Normal file
View File

@@ -0,0 +1,67 @@
ifndef VERBOSE
.SILENT:
endif
.DEFAULT_GOAL := all
include common.mk
TARGET=test/$(TEST)
GTEST_OUTPUT = $(BUILD_DIR)/gtest
TEST_OBJ = $(BUILD_DIR)/test_obj
OUTPUTS := $(TEST_OBJ)/$(TEST) $(GTEST_OUTPUT)
GTEST_INC := \
$(LIB_PATH)/googletest/googletest/include\
$(LIB_PATH)/googletest/googlemock/include\
GTEST_INTERNAL_INC :=\
$(LIB_PATH)/googletest/googletest\
$(LIB_PATH)/googletest/googlemock
$(GTEST_OUTPUT)_SRC :=\
googletest/src/gtest-all.cc\
googletest/src/gtest_main.cc\
googlemock/src/gmock-all.cc
$(GTEST_OUTPUT)_DEFS :=
$(GTEST_OUTPUT)_INC := $(GTEST_INC) $(GTEST_INTERNAL_INC)
LDFLAGS += -lstdc++ -lpthread -shared-libgcc
CREATE_MAP := no
VPATH +=\
$(LIB_PATH)/googletest\
$(LIB_PATH)/googlemock
all: elf
VPATH += $(COMMON_VPATH)
PLATFORM:=TEST
ifneq ($(filter $(FULL_TESTS),$(TEST)),)
include tests/$(TEST)/rules.mk
endif
include common_features.mk
include $(TMK_PATH)/common.mk
include $(QUANTUM_PATH)/serial_link/tests/rules.mk
ifneq ($(filter $(FULL_TESTS),$(TEST)),)
include build_full_test.mk
endif
$(TEST_OBJ)/$(TEST)_SRC := $($(TEST)_SRC)
$(TEST_OBJ)/$(TEST)_INC := $($(TEST)_INC) $(VPATH) $(GTEST_INC)
$(TEST_OBJ)/$(TEST)_DEFS := $($(TEST)_DEFS)
$(TEST_OBJ)/$(TEST)_CONFIG := $($(TEST)_CONFIG)
include $(TMK_PATH)/native.mk
include $(TMK_PATH)/rules.mk
$(shell mkdir -p $(BUILD_DIR)/test 2>/dev/null)
$(shell mkdir -p $(TEST_OBJ) 2>/dev/null)

View File

@@ -1,37 +0,0 @@
# Copyright 2017 Fred Sundvik
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
$(TEST_OUTPUT)_INC := \
tests/test_common/common_config.h
$(TEST_OUTPUT)_SRC := \
$(QUANTUM_SRC) \
$(SRC) \
$(QUANTUM_PATH)/keymap_introspection.c \
tests/test_common/matrix.c \
tests/test_common/test_driver.cpp \
tests/test_common/keyboard_report_util.cpp \
tests/test_common/keycode_util.cpp \
tests/test_common/keycode_table.cpp \
tests/test_common/test_fixture.cpp \
tests/test_common/test_keymap_key.cpp \
tests/test_common/test_logger.cpp \
$(patsubst $(ROOTDIR)/%,%,$(wildcard $(TEST_PATH)/*.cpp))
$(TEST_OUTPUT)_DEFS := $(OPT_DEFS) "-DKEYMAP_C=\"keymap.c\""
$(TEST_OUTPUT)_CONFIG := $(TEST_PATH)/config.h
VPATH += $(TOP_DIR)/tests/test_common

View File

@@ -1,36 +0,0 @@
# Look for a json keymap file
ifneq ("$(wildcard $(MAIN_KEYMAP_PATH_5)/keymap.json)","")
KEYMAP_JSON := $(MAIN_KEYMAP_PATH_5)/keymap.json
KEYMAP_JSON_PATH := $(MAIN_KEYMAP_PATH_5)
else ifneq ("$(wildcard $(MAIN_KEYMAP_PATH_4)/keymap.json)","")
KEYMAP_JSON := $(MAIN_KEYMAP_PATH_4)/keymap.json
KEYMAP_JSON_PATH := $(MAIN_KEYMAP_PATH_4)
else ifneq ("$(wildcard $(MAIN_KEYMAP_PATH_3)/keymap.json)","")
KEYMAP_JSON := $(MAIN_KEYMAP_PATH_3)/keymap.json
KEYMAP_JSON_PATH := $(MAIN_KEYMAP_PATH_3)
else ifneq ("$(wildcard $(MAIN_KEYMAP_PATH_2)/keymap.json)","")
KEYMAP_JSON := $(MAIN_KEYMAP_PATH_2)/keymap.json
KEYMAP_JSON_PATH := $(MAIN_KEYMAP_PATH_2)
else ifneq ("$(wildcard $(MAIN_KEYMAP_PATH_1)/keymap.json)","")
KEYMAP_JSON := $(MAIN_KEYMAP_PATH_1)/keymap.json
KEYMAP_JSON_PATH := $(MAIN_KEYMAP_PATH_1)
endif
ifneq ($(QMK_USERSPACE),)
ifneq ("$(wildcard $(QMK_USERSPACE)/$(MAIN_KEYMAP_PATH_5)/keymap.json)","")
KEYMAP_JSON := $(QMK_USERSPACE)/$(MAIN_KEYMAP_PATH_5)/keymap.json
KEYMAP_PATH := $(QMK_USERSPACE)/$(MAIN_KEYMAP_PATH_5)
else ifneq ("$(wildcard $(QMK_USERSPACE)/$(MAIN_KEYMAP_PATH_4)/keymap.json)","")
KEYMAP_JSON := $(QMK_USERSPACE)/$(MAIN_KEYMAP_PATH_4)/keymap.json
KEYMAP_PATH := $(QMK_USERSPACE)/$(MAIN_KEYMAP_PATH_4)
else ifneq ("$(wildcard $(QMK_USERSPACE)/$(MAIN_KEYMAP_PATH_3)/keymap.json)","")
KEYMAP_JSON := $(QMK_USERSPACE)/$(MAIN_KEYMAP_PATH_3)/keymap.json
KEYMAP_PATH := $(QMK_USERSPACE)/$(MAIN_KEYMAP_PATH_3)
else ifneq ("$(wildcard $(QMK_USERSPACE)/$(MAIN_KEYMAP_PATH_2)/keymap.json)","")
KEYMAP_JSON := $(QMK_USERSPACE)/$(MAIN_KEYMAP_PATH_2)/keymap.json
KEYMAP_PATH := $(QMK_USERSPACE)/$(MAIN_KEYMAP_PATH_2)
else ifneq ("$(wildcard $(QMK_USERSPACE)/$(MAIN_KEYMAP_PATH_1)/keymap.json)","")
KEYMAP_JSON := $(QMK_USERSPACE)/$(MAIN_KEYMAP_PATH_1)/keymap.json
KEYMAP_PATH := $(QMK_USERSPACE)/$(MAIN_KEYMAP_PATH_1)
endif
endif

View File

@@ -1,566 +0,0 @@
# Determine what keyboard we are building and setup the build environment.
#
# We support folders up to 5 levels deep below `keyboards/`. This file is
# responsible for determining which folder is being used and doing the
# corresponding environment setup.
ifndef VERBOSE
.SILENT:
endif
.DEFAULT_GOAL := all
include paths.mk
include $(BUILDDEFS_PATH)/message.mk
# Helper to add defines with a 'QMK_' prefix
define add_qmk_prefix_defs
ifdef $1
# Need to cater for 'STM32L4xx+'
OPT_DEFS += -DQMK_$(2)="$($1)" -DQMK_$(2)_$(shell echo $($1) | sed -e 's@+@Plus@g' -e 's@[^a-zA-Z0-9]@_@g' | tr '[:lower:]' '[:upper:]')
endif
endef
# 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)
ifeq ($(strip $(DUMP_CI_METADATA)),yes)
$(info CI Metadata: KEYBOARD=$(KEYBOARD))
$(info CI Metadata: KEYMAP=$(KEYMAP))
endif
# Force expansion
TARGET := $(TARGET)
ifneq ($(FORCE_LAYOUT),)
TARGET := $(TARGET)_$(FORCE_LAYOUT)
endif
# Object files and generated keymap directory
# To put object files in current directory, use a dot (.), do NOT make
# this an empty or blank macro!
INTERMEDIATE_OUTPUT := $(BUILD_DIR)/obj_$(TARGET)
ifdef SKIP_VERSION
OPT_DEFS += -DSKIP_VERSION
endif
# Generate the version.h file
VERSION_H_FLAGS :=
ifdef SKIP_VERSION
VERSION_H_FLAGS += --skip-all
endif
ifdef SKIP_GIT
VERSION_H_FLAGS += --skip-git
endif
# Generate the board's version.h file.
$(shell $(QMK_BIN) generate-version-h $(VERSION_H_FLAGS) -q -o $(INTERMEDIATE_OUTPUT)/src/version.h)
# Determine which subfolders exist.
KEYBOARD_FOLDER_PATH_1 := $(KEYBOARD)
KEYBOARD_FOLDER_PATH_2 := $(patsubst %/,%,$(dir $(KEYBOARD_FOLDER_PATH_1)))
KEYBOARD_FOLDER_PATH_3 := $(patsubst %/,%,$(dir $(KEYBOARD_FOLDER_PATH_2)))
KEYBOARD_FOLDER_PATH_4 := $(patsubst %/,%,$(dir $(KEYBOARD_FOLDER_PATH_3)))
KEYBOARD_FOLDER_PATH_5 := $(patsubst %/,%,$(dir $(KEYBOARD_FOLDER_PATH_4)))
KEYBOARD_FOLDER_1 := $(notdir $(KEYBOARD_FOLDER_PATH_1))
KEYBOARD_FOLDER_2 := $(notdir $(KEYBOARD_FOLDER_PATH_2))
KEYBOARD_FOLDER_3 := $(notdir $(KEYBOARD_FOLDER_PATH_3))
KEYBOARD_FOLDER_4 := $(notdir $(KEYBOARD_FOLDER_PATH_4))
KEYBOARD_FOLDER_5 := $(notdir $(KEYBOARD_FOLDER_PATH_5))
KEYBOARD_PATHS :=
KEYBOARD_PATH_1 := keyboards/$(KEYBOARD_FOLDER_PATH_1)
KEYBOARD_PATH_2 := keyboards/$(KEYBOARD_FOLDER_PATH_2)
KEYBOARD_PATH_3 := keyboards/$(KEYBOARD_FOLDER_PATH_3)
KEYBOARD_PATH_4 := keyboards/$(KEYBOARD_FOLDER_PATH_4)
KEYBOARD_PATH_5 := keyboards/$(KEYBOARD_FOLDER_PATH_5)
ifneq ("$(wildcard $(KEYBOARD_PATH_5)/)","")
KEYBOARD_PATHS += $(KEYBOARD_PATH_5)
endif
ifneq ("$(wildcard $(KEYBOARD_PATH_4)/)","")
KEYBOARD_PATHS += $(KEYBOARD_PATH_4)
endif
ifneq ("$(wildcard $(KEYBOARD_PATH_3)/)","")
KEYBOARD_PATHS += $(KEYBOARD_PATH_3)
endif
ifneq ("$(wildcard $(KEYBOARD_PATH_2)/)","")
KEYBOARD_PATHS += $(KEYBOARD_PATH_2)
endif
ifneq ("$(wildcard $(KEYBOARD_PATH_1)/)","")
KEYBOARD_PATHS += $(KEYBOARD_PATH_1)
endif
# Pull in rules.mk files from all our subfolders
ifneq ("$(wildcard $(KEYBOARD_PATH_5)/rules.mk)","")
include $(KEYBOARD_PATH_5)/rules.mk
endif
ifneq ("$(wildcard $(KEYBOARD_PATH_4)/rules.mk)","")
include $(KEYBOARD_PATH_4)/rules.mk
endif
ifneq ("$(wildcard $(KEYBOARD_PATH_3)/rules.mk)","")
include $(KEYBOARD_PATH_3)/rules.mk
endif
ifneq ("$(wildcard $(KEYBOARD_PATH_2)/rules.mk)","")
include $(KEYBOARD_PATH_2)/rules.mk
endif
ifneq ("$(wildcard $(KEYBOARD_PATH_1)/rules.mk)","")
include $(KEYBOARD_PATH_1)/rules.mk
endif
MAIN_KEYMAP_PATH_1 := $(KEYBOARD_PATH_1)/keymaps/$(KEYMAP)
MAIN_KEYMAP_PATH_2 := $(KEYBOARD_PATH_2)/keymaps/$(KEYMAP)
MAIN_KEYMAP_PATH_3 := $(KEYBOARD_PATH_3)/keymaps/$(KEYMAP)
MAIN_KEYMAP_PATH_4 := $(KEYBOARD_PATH_4)/keymaps/$(KEYMAP)
MAIN_KEYMAP_PATH_5 := $(KEYBOARD_PATH_5)/keymaps/$(KEYMAP)
# Pull in rules from DD keyboard config
INFO_RULES_MK = $(shell $(QMK_BIN) generate-rules-mk --quiet --escape --keyboard $(KEYBOARD) --output $(INTERMEDIATE_OUTPUT)/src/info_rules.mk)
include $(INFO_RULES_MK)
# Check for keymap.json first, so we can regenerate keymap.c
include $(BUILDDEFS_PATH)/build_json.mk
# Pull in keymap level rules.mk
ifeq ("$(wildcard $(KEYMAP_PATH))", "")
# Look through the possible keymap folders until we find a matching keymap.c
ifneq ($(QMK_USERSPACE),)
ifneq ("$(wildcard $(QMK_USERSPACE)/$(MAIN_KEYMAP_PATH_1)/keymap.c)","")
-include $(QMK_USERSPACE)/$(MAIN_KEYMAP_PATH_1)/rules.mk
KEYMAP_C := $(QMK_USERSPACE)/$(MAIN_KEYMAP_PATH_1)/keymap.c
KEYMAP_PATH := $(QMK_USERSPACE)/$(MAIN_KEYMAP_PATH_1)
else ifneq ("$(wildcard $(QMK_USERSPACE)/$(MAIN_KEYMAP_PATH_2)/keymap.c)","")
-include $(QMK_USERSPACE)/$(MAIN_KEYMAP_PATH_2)/rules.mk
KEYMAP_C := $(QMK_USERSPACE)/$(MAIN_KEYMAP_PATH_2)/keymap.c
KEYMAP_PATH := $(QMK_USERSPACE)/$(MAIN_KEYMAP_PATH_2)
else ifneq ("$(wildcard $(QMK_USERSPACE)/$(MAIN_KEYMAP_PATH_3)/keymap.c)","")
-include $(QMK_USERSPACE)/$(MAIN_KEYMAP_PATH_3)/rules.mk
KEYMAP_C := $(QMK_USERSPACE)/$(MAIN_KEYMAP_PATH_3)/keymap.c
KEYMAP_PATH := $(QMK_USERSPACE)/$(MAIN_KEYMAP_PATH_3)
else ifneq ("$(wildcard $(QMK_USERSPACE)/$(MAIN_KEYMAP_PATH_4)/keymap.c)","")
-include $(QMK_USERSPACE)/$(MAIN_KEYMAP_PATH_4)/rules.mk
KEYMAP_C := $(QMK_USERSPACE)/$(MAIN_KEYMAP_PATH_4)/keymap.c
KEYMAP_PATH := $(QMK_USERSPACE)/$(MAIN_KEYMAP_PATH_4)
else ifneq ("$(wildcard $(QMK_USERSPACE)/$(MAIN_KEYMAP_PATH_5)/keymap.c)","")
-include $(QMK_USERSPACE)/$(MAIN_KEYMAP_PATH_5)/rules.mk
KEYMAP_C := $(QMK_USERSPACE)/$(MAIN_KEYMAP_PATH_5)/keymap.c
KEYMAP_PATH := $(QMK_USERSPACE)/$(MAIN_KEYMAP_PATH_5)
endif
endif
ifeq ($(KEYMAP_PATH),)
ifneq ("$(wildcard $(MAIN_KEYMAP_PATH_1)/keymap.c)","")
-include $(MAIN_KEYMAP_PATH_1)/rules.mk
KEYMAP_C := $(MAIN_KEYMAP_PATH_1)/keymap.c
KEYMAP_PATH := $(MAIN_KEYMAP_PATH_1)
else ifneq ("$(wildcard $(MAIN_KEYMAP_PATH_2)/keymap.c)","")
-include $(MAIN_KEYMAP_PATH_2)/rules.mk
KEYMAP_C := $(MAIN_KEYMAP_PATH_2)/keymap.c
KEYMAP_PATH := $(MAIN_KEYMAP_PATH_2)
else ifneq ("$(wildcard $(MAIN_KEYMAP_PATH_3)/keymap.c)","")
-include $(MAIN_KEYMAP_PATH_3)/rules.mk
KEYMAP_C := $(MAIN_KEYMAP_PATH_3)/keymap.c
KEYMAP_PATH := $(MAIN_KEYMAP_PATH_3)
else ifneq ("$(wildcard $(MAIN_KEYMAP_PATH_4)/keymap.c)","")
-include $(MAIN_KEYMAP_PATH_4)/rules.mk
KEYMAP_C := $(MAIN_KEYMAP_PATH_4)/keymap.c
KEYMAP_PATH := $(MAIN_KEYMAP_PATH_4)
else ifneq ("$(wildcard $(MAIN_KEYMAP_PATH_5)/keymap.c)","")
-include $(MAIN_KEYMAP_PATH_5)/rules.mk
KEYMAP_C := $(MAIN_KEYMAP_PATH_5)/keymap.c
KEYMAP_PATH := $(MAIN_KEYMAP_PATH_5)
else ifneq ($(LAYOUTS),)
# If we haven't found a keymap yet fall back to community layouts
include $(BUILDDEFS_PATH)/build_layout.mk
else ifeq ("$(wildcard $(KEYMAP_JSON_PATH))", "") # Not finding keymap.c is fine if we found a keymap.json
$(call CATASTROPHIC_ERROR,Invalid keymap,Could not find keymap)
# this state should never be reached
endif
endif
endif
# Have we found a keymap.json?
ifneq ("$(wildcard $(KEYMAP_JSON))", "")
ifneq ("$(wildcard $(KEYMAP_C))", "")
$(call WARNING_MESSAGE,Keymap is specified as both keymap.json and keymap.c -- keymap.json file wins.)
endif
KEYMAP_PATH := $(KEYMAP_JSON_PATH)
KEYMAP_C := $(INTERMEDIATE_OUTPUT)/src/keymap.c
KEYMAP_H := $(INTERMEDIATE_OUTPUT)/src/config.h
# Load the keymap-level rules.mk if exists
-include $(KEYMAP_PATH)/rules.mk
# Load any rules.mk content from keymap.json
INFO_RULES_MK = $(shell $(QMK_BIN) generate-rules-mk --quiet --escape --output $(INTERMEDIATE_OUTPUT)/src/rules.mk $(KEYMAP_JSON))
include $(INFO_RULES_MK)
# Add rules to generate the keymap files - indentation here is important
$(INTERMEDIATE_OUTPUT)/src/keymap.c: $(KEYMAP_JSON)
@$(SILENT) || printf "$(MSG_GENERATING) $@" | $(AWK_CMD)
$(eval CMD=$(QMK_BIN) json2c --quiet --output $(KEYMAP_C) $(KEYMAP_JSON))
@$(BUILD_CMD)
$(INTERMEDIATE_OUTPUT)/src/config.h: $(KEYMAP_JSON)
@$(SILENT) || printf "$(MSG_GENERATING) $@" | $(AWK_CMD)
$(eval CMD=$(QMK_BIN) generate-config-h --quiet --output $(KEYMAP_H) $(KEYMAP_JSON))
@$(BUILD_CMD)
generated-files: $(INTERMEDIATE_OUTPUT)/src/config.h $(INTERMEDIATE_OUTPUT)/src/keymap.c
endif
include $(BUILDDEFS_PATH)/converters.mk
MCU_ORIG := $(MCU)
include $(wildcard $(PLATFORM_PATH)/*/mcu_selection.mk)
# PLATFORM_KEY should be detected in DD keyboard config via key 'processor' (or rules.mk 'MCU')
ifeq ($(PLATFORM_KEY),)
$(call CATASTROPHIC_ERROR,Platform not defined)
endif
PLATFORM=$(shell echo $(PLATFORM_KEY) | tr '[:lower:]' '[:upper:]')
# Find all the C source files to be compiled in subfolders.
KEYBOARD_SRC :=
KEYBOARD_C_1 := $(KEYBOARD_PATH_1)/$(KEYBOARD_FOLDER_1).c
KEYBOARD_C_2 := $(KEYBOARD_PATH_2)/$(KEYBOARD_FOLDER_2).c
KEYBOARD_C_3 := $(KEYBOARD_PATH_3)/$(KEYBOARD_FOLDER_3).c
KEYBOARD_C_4 := $(KEYBOARD_PATH_4)/$(KEYBOARD_FOLDER_4).c
KEYBOARD_C_5 := $(KEYBOARD_PATH_5)/$(KEYBOARD_FOLDER_5).c
ifneq ("$(wildcard $(KEYBOARD_C_5))","")
KEYBOARD_SRC += $(KEYBOARD_C_5)
endif
ifneq ("$(wildcard $(KEYBOARD_C_4))","")
KEYBOARD_SRC += $(KEYBOARD_C_4)
endif
ifneq ("$(wildcard $(KEYBOARD_C_3))","")
KEYBOARD_SRC += $(KEYBOARD_C_3)
endif
ifneq ("$(wildcard $(KEYBOARD_C_2))","")
KEYBOARD_SRC += $(KEYBOARD_C_2)
endif
ifneq ("$(wildcard $(KEYBOARD_C_1))","")
KEYBOARD_SRC += $(KEYBOARD_C_1)
endif
# Generate KEYBOARD_name_subname for all levels of the keyboard folder
KEYBOARD_FILESAFE_1 := $(subst .,,$(subst /,_,$(KEYBOARD_FOLDER_PATH_1)))
KEYBOARD_FILESAFE_2 := $(subst .,,$(subst /,_,$(KEYBOARD_FOLDER_PATH_2)))
KEYBOARD_FILESAFE_3 := $(subst .,,$(subst /,_,$(KEYBOARD_FOLDER_PATH_3)))
KEYBOARD_FILESAFE_4 := $(subst .,,$(subst /,_,$(KEYBOARD_FOLDER_PATH_4)))
KEYBOARD_FILESAFE_5 := $(subst .,,$(subst /,_,$(KEYBOARD_FOLDER_PATH_5)))
ifneq ("$(wildcard $(KEYBOARD_PATH_5)/)","")
OPT_DEFS += -DKEYBOARD_$(KEYBOARD_FILESAFE_5)
endif
ifneq ("$(wildcard $(KEYBOARD_PATH_4)/)","")
OPT_DEFS += -DKEYBOARD_$(KEYBOARD_FILESAFE_4)
endif
ifneq ("$(wildcard $(KEYBOARD_PATH_3)/)","")
OPT_DEFS += -DKEYBOARD_$(KEYBOARD_FILESAFE_3)
endif
ifneq ("$(wildcard $(KEYBOARD_PATH_2)/)","")
OPT_DEFS += -DKEYBOARD_$(KEYBOARD_FILESAFE_2)
endif
ifneq ("$(wildcard $(KEYBOARD_PATH_1)/)","")
OPT_DEFS += -DKEYBOARD_$(KEYBOARD_FILESAFE_1)
endif
# Setup the define for QMK_KEYBOARD_H. This is used inside of keymaps so
# that the same keymap may be used on multiple keyboards.
#
# We grab the most top-level include file that we can. That file should
# use #ifdef statements to include all the necessary subfolder includes,
# as described here:
#
# https://docs.qmk.fm/#/feature_layouts?id=tips-for-making-layouts-keyboard-agnostic
#
ifneq ("$(wildcard $(KEYBOARD_PATH_1)/$(KEYBOARD_FOLDER_1).h)","")
FOUND_KEYBOARD_H = $(KEYBOARD_FOLDER_1).h
endif
ifneq ("$(wildcard $(KEYBOARD_PATH_2)/$(KEYBOARD_FOLDER_2).h)","")
FOUND_KEYBOARD_H = $(KEYBOARD_FOLDER_2).h
endif
ifneq ("$(wildcard $(KEYBOARD_PATH_3)/$(KEYBOARD_FOLDER_3).h)","")
FOUND_KEYBOARD_H = $(KEYBOARD_FOLDER_3).h
endif
ifneq ("$(wildcard $(KEYBOARD_PATH_4)/$(KEYBOARD_FOLDER_4).h)","")
FOUND_KEYBOARD_H = $(KEYBOARD_FOLDER_4).h
endif
ifneq ("$(wildcard $(KEYBOARD_PATH_5)/$(KEYBOARD_FOLDER_5).h)","")
FOUND_KEYBOARD_H = $(KEYBOARD_FOLDER_5).h
endif
# Find all of the config.h files and add them to our CONFIG_H define.
CONFIG_H :=
ifneq ("$(wildcard $(KEYBOARD_PATH_5)/config.h)","")
CONFIG_H += $(KEYBOARD_PATH_5)/config.h
endif
ifneq ("$(wildcard $(KEYBOARD_PATH_4)/config.h)","")
CONFIG_H += $(KEYBOARD_PATH_4)/config.h
endif
ifneq ("$(wildcard $(KEYBOARD_PATH_3)/config.h)","")
CONFIG_H += $(KEYBOARD_PATH_3)/config.h
endif
ifneq ("$(wildcard $(KEYBOARD_PATH_2)/config.h)","")
CONFIG_H += $(KEYBOARD_PATH_2)/config.h
endif
ifneq ("$(wildcard $(KEYBOARD_PATH_1)/config.h)","")
CONFIG_H += $(KEYBOARD_PATH_1)/config.h
endif
POST_CONFIG_H :=
ifneq ("$(wildcard $(KEYBOARD_PATH_1)/post_config.h)","")
POST_CONFIG_H += $(KEYBOARD_PATH_1)/post_config.h
endif
ifneq ("$(wildcard $(KEYBOARD_PATH_2)/post_config.h)","")
POST_CONFIG_H += $(KEYBOARD_PATH_2)/post_config.h
endif
ifneq ("$(wildcard $(KEYBOARD_PATH_3)/post_config.h)","")
POST_CONFIG_H += $(KEYBOARD_PATH_3)/post_config.h
endif
ifneq ("$(wildcard $(KEYBOARD_PATH_4)/post_config.h)","")
POST_CONFIG_H += $(KEYBOARD_PATH_4)/post_config.h
endif
ifneq ("$(wildcard $(KEYBOARD_PATH_5)/post_config.h)","")
POST_CONFIG_H += $(KEYBOARD_PATH_5)/post_config.h
endif
# Create dependencies on DD keyboard config - structure validated elsewhere
DD_CONFIG_FILES :=
ifneq ("$(wildcard $(KEYBOARD_PATH_1)/info.json)","")
DD_CONFIG_FILES += $(KEYBOARD_PATH_1)/info.json
endif
ifneq ("$(wildcard $(KEYBOARD_PATH_2)/info.json)","")
DD_CONFIG_FILES += $(KEYBOARD_PATH_2)/info.json
endif
ifneq ("$(wildcard $(KEYBOARD_PATH_3)/info.json)","")
DD_CONFIG_FILES += $(KEYBOARD_PATH_3)/info.json
endif
ifneq ("$(wildcard $(KEYBOARD_PATH_4)/info.json)","")
DD_CONFIG_FILES += $(KEYBOARD_PATH_4)/info.json
endif
ifneq ("$(wildcard $(KEYBOARD_PATH_5)/info.json)","")
DD_CONFIG_FILES += $(KEYBOARD_PATH_5)/info.json
endif
ifneq ("$(wildcard $(KEYBOARD_PATH_1)/keyboard.json)","")
DD_CONFIG_FILES += $(KEYBOARD_PATH_1)/keyboard.json
endif
ifneq ("$(wildcard $(KEYBOARD_PATH_2)/keyboard.json)","")
DD_CONFIG_FILES += $(KEYBOARD_PATH_2)/keyboard.json
endif
ifneq ("$(wildcard $(KEYBOARD_PATH_3)/keyboard.json)","")
DD_CONFIG_FILES += $(KEYBOARD_PATH_3)/keyboard.json
endif
ifneq ("$(wildcard $(KEYBOARD_PATH_4)/keyboard.json)","")
DD_CONFIG_FILES += $(KEYBOARD_PATH_4)/keyboard.json
endif
ifneq ("$(wildcard $(KEYBOARD_PATH_5)/keyboard.json)","")
DD_CONFIG_FILES += $(KEYBOARD_PATH_5)/keyboard.json
endif
CONFIG_H += $(INTERMEDIATE_OUTPUT)/src/info_config.h
KEYBOARD_SRC += $(INTERMEDIATE_OUTPUT)/src/default_keyboard.c
$(INTERMEDIATE_OUTPUT)/src/info_config.h: $(DD_CONFIG_FILES)
@$(SILENT) || printf "$(MSG_GENERATING) $@" | $(AWK_CMD)
$(eval CMD=$(QMK_BIN) generate-config-h --quiet --keyboard $(KEYBOARD) --output $(INTERMEDIATE_OUTPUT)/src/info_config.h)
@$(BUILD_CMD)
$(INTERMEDIATE_OUTPUT)/src/default_keyboard.c: $(DD_CONFIG_FILES)
@$(SILENT) || printf "$(MSG_GENERATING) $@" | $(AWK_CMD)
$(eval CMD=$(QMK_BIN) generate-keyboard-c --quiet --keyboard $(KEYBOARD) --output $(INTERMEDIATE_OUTPUT)/src/default_keyboard.c)
@$(BUILD_CMD)
$(INTERMEDIATE_OUTPUT)/src/default_keyboard.h: $(DD_CONFIG_FILES)
@$(SILENT) || printf "$(MSG_GENERATING) $@" | $(AWK_CMD)
$(eval CMD=$(QMK_BIN) generate-keyboard-h --quiet --keyboard $(KEYBOARD) --include $(FOUND_KEYBOARD_H) --output $(INTERMEDIATE_OUTPUT)/src/default_keyboard.h)
@$(BUILD_CMD)
generated-files: $(INTERMEDIATE_OUTPUT)/src/info_config.h $(INTERMEDIATE_OUTPUT)/src/default_keyboard.c $(INTERMEDIATE_OUTPUT)/src/default_keyboard.h
generated-files: $(INTERMEDIATE_OUTPUT)/src/info_deps.d
$(INTERMEDIATE_OUTPUT)/src/info_deps.d:
@$(SILENT) || printf "$(MSG_GENERATING) $@" | $(AWK_CMD)
$(eval CMD=$(QMK_BIN) generate-make-dependencies -kb $(KEYBOARD) -km $(KEYMAP) -o $(INTERMEDIATE_OUTPUT)/src/info_deps.d)
@$(BUILD_CMD)
-include $(INTERMEDIATE_OUTPUT)/src/info_deps.d
.INTERMEDIATE : generated-files
# Userspace setup and definitions
ifeq ("$(USER_NAME)","")
USER_NAME := $(KEYMAP)
endif
USER_PATH := users/$(USER_NAME)
# If we have userspace, then add it to the lookup VPATH
ifneq ($(wildcard $(QMK_USERSPACE)),)
VPATH += $(QMK_USERSPACE)
endif
# If the equivalent users directory exists in userspace, use that in preference to anything currently in the main repo
ifneq ($(wildcard $(QMK_USERSPACE)/$(USER_PATH)),)
USER_PATH := $(QMK_USERSPACE)/$(USER_PATH)
endif
# Pull in user level rules.mk
-include $(USER_PATH)/rules.mk
ifneq ("$(wildcard $(USER_PATH)/config.h)","")
CONFIG_H += $(USER_PATH)/config.h
endif
ifneq ("$(wildcard $(USER_PATH)/post_config.h)","")
POST_CONFIG_H += $(USER_PATH)/post_config.h
endif
# Disable features that a keyboard doesn't support
-include $(BUILDDEFS_PATH)/disable_features.mk
ifneq ("$(CONVERTER)","")
-include $(CONVERTER)/post_converter.mk
endif
# Pull in post_rules.mk files from all our subfolders
ifneq ("$(wildcard $(KEYBOARD_PATH_1)/post_rules.mk)","")
include $(KEYBOARD_PATH_1)/post_rules.mk
endif
ifneq ("$(wildcard $(KEYBOARD_PATH_2)/post_rules.mk)","")
include $(KEYBOARD_PATH_2)/post_rules.mk
endif
ifneq ("$(wildcard $(KEYBOARD_PATH_3)/post_rules.mk)","")
include $(KEYBOARD_PATH_3)/post_rules.mk
endif
ifneq ("$(wildcard $(KEYBOARD_PATH_4)/post_rules.mk)","")
include $(KEYBOARD_PATH_4)/post_rules.mk
endif
ifneq ("$(wildcard $(KEYBOARD_PATH_5)/post_rules.mk)","")
include $(KEYBOARD_PATH_5)/post_rules.mk
endif
ifneq ("$(wildcard $(KEYMAP_PATH)/config.h)","")
CONFIG_H += $(KEYMAP_PATH)/config.h
endif
ifneq ("$(KEYMAP_H)","")
CONFIG_H += $(KEYMAP_H)
endif
ifeq ($(KEYMAP_C),)
$(call CATASTROPHIC_ERROR,Invalid keymap,Could not find keymap)
endif
OPT_DEFS += -DKEYMAP_C=\"$(KEYMAP_C)\"
# If a keymap or userspace places their keymap array in another file instead, allow for it to be included
# !!NOTE!! -- For this to work, the source file cannot be part of $(SRC), so users should not add it via `SRC += <file>`
ifneq ($(strip $(INTROSPECTION_KEYMAP_C)),)
OPT_DEFS += -DINTROSPECTION_KEYMAP_C=\"$(strip $(INTROSPECTION_KEYMAP_C))\"
endif
# project specific files
SRC += \
$(KEYBOARD_SRC) \
$(QUANTUM_DIR)/keymap_introspection.c \
$(QUANTUM_SRC) \
$(QUANTUM_DIR)/main.c \
# Optimize size but this may cause error "relocation truncated to fit"
#EXTRALDFLAGS = -Wl,--relax
# Search Path
VPATH += $(KEYMAP_PATH)
VPATH += $(USER_PATH)
VPATH += $(KEYBOARD_PATHS)
VPATH += $(COMMON_VPATH)
VPATH += $(INTERMEDIATE_OUTPUT)/src
include $(BUILDDEFS_PATH)/common_features.mk
include $(BUILDDEFS_PATH)/generic_features.mk
include $(TMK_PATH)/protocol.mk
include $(PLATFORM_PATH)/common.mk
SRC += $(patsubst %.c,%.clib,$(LIB_SRC))
SRC += $(patsubst %.c,%.clib,$(QUANTUM_LIB_SRC))
-include $(PLATFORM_PATH)/$(PLATFORM_KEY)/bootloader.mk
include $(PLATFORM_PATH)/$(PLATFORM_KEY)/platform.mk
-include $(PLATFORM_PATH)/$(PLATFORM_KEY)/flash.mk
ifneq ($(strip $(PROTOCOL)),)
PROTOCOL_KEY = $(strip $(shell echo $(PROTOCOL) | tr '[:upper:]' '[:lower:]'))
else
PROTOCOL_KEY = $(PLATFORM_KEY)
endif
include $(TMK_PATH)/protocol/$(PROTOCOL_KEY)/$(PROTOCOL_KEY).mk
# Setup definitions based on the selected MCU
$(eval $(call add_qmk_prefix_defs,MCU_ORIG,MCU))
$(eval $(call add_qmk_prefix_defs,MCU_ARCH,MCU_ARCH))
$(eval $(call add_qmk_prefix_defs,MCU_PORT_NAME,MCU_PORT_NAME))
$(eval $(call add_qmk_prefix_defs,MCU_FAMILY,MCU_FAMILY))
$(eval $(call add_qmk_prefix_defs,MCU_SERIES,MCU_SERIES))
$(eval $(call add_qmk_prefix_defs,BOARD,BOARD))
$(eval $(call add_qmk_prefix_defs,OPT,OPT))
# Control whether intermediate file listings are generated
# e.g.:
# make handwired/onekey/blackpill_f411:default KEEP_INTERMEDIATES=yes
# cat .build/obj_handwired_onekey_blackpill_f411_default/quantum/quantum.i | sed -e 's@^#.*@@g' -e 's@^\s*//.*@@g' -e '/^\s*$/d' | clang-format
ifeq ($(strip $(KEEP_INTERMEDIATES)), yes)
OPT_DEFS += -save-temps=obj
endif
OUTPUTS := $(INTERMEDIATE_OUTPUT)
$(INTERMEDIATE_OUTPUT)_SRC := $(SRC) $(PLATFORM_SRC)
$(INTERMEDIATE_OUTPUT)_DEFS := \
-DQMK_KEYBOARD=\"$(KEYBOARD)\" -DQMK_KEYBOARD_H=\"$(INTERMEDIATE_OUTPUT)/src/default_keyboard.h\" \
-DQMK_KEYMAP=\"$(KEYMAP)\" -DQMK_KEYMAP_H=\"$(KEYMAP).h\" -DQMK_KEYMAP_CONFIG_H=\"$(KEYMAP_PATH)/config.h\" \
$(OPT_DEFS)
$(INTERMEDIATE_OUTPUT)_INC := $(VPATH) $(EXTRAINCDIRS) $(KEYBOARD_PATHS)
$(INTERMEDIATE_OUTPUT)_CONFIG := $(CONFIG_H) $(POST_CONFIG_H)
# Default target.
all: build check-size
build: elf cpfirmware
check-size: build
check-md5: build
objs-size: build
ifneq ($(strip $(TOP_SYMBOLS)),)
ifeq ($(strip $(TOP_SYMBOLS)),yes)
NUM_TOP_SYMBOLS := 10
else
NUM_TOP_SYMBOLS := $(strip $(TOP_SYMBOLS))
endif
all: top-symbols
check-size: top-symbols
top-symbols: build
echo "###########################################"
echo "# Highest flash usage:"
$(NM) -Crtd --size-sort $(BUILD_DIR)/$(TARGET).elf | grep ' [RrTt] ' | head -n$(NUM_TOP_SYMBOLS) | sed -e 's#^0000000# #g' -e 's#^000000# #g' -e 's#^00000# #g' -e 's#^0000# #g' -e 's#^000# #g' -e 's#^00# #g' -e 's#^0# #g'
echo "###########################################"
echo "# Highest RAM usage:"
$(NM) -Crtd --size-sort $(BUILD_DIR)/$(TARGET).elf | grep ' [BbCDdGgSs] ' | head -n$(NUM_TOP_SYMBOLS) | sed -e 's#^0000000# #g' -e 's#^000000# #g' -e 's#^00000# #g' -e 's#^0000# #g' -e 's#^000# #g' -e 's#^00# #g' -e 's#^0# #g'
echo "###########################################"
endif
include $(BUILDDEFS_PATH)/show_options.mk
include $(BUILDDEFS_PATH)/common_rules.mk
# Ensure we have generated files available for each of the objects
define GEN_FILES
$1: generated-files
endef
$(foreach O,$(OBJ),$(eval $(call GEN_FILES,$(patsubst %.a,%.o,$(O)))))

View File

@@ -1,36 +0,0 @@
LAYOUTS_PATH := layouts
LAYOUTS_REPOS := $(patsubst %/,%,$(sort $(dir $(wildcard $(LAYOUTS_PATH)/*/))))
ifneq ($(QMK_USERSPACE),)
LAYOUTS_REPOS += $(patsubst %/,%,$(QMK_USERSPACE)/$(LAYOUTS_PATH))
endif
define SEARCH_LAYOUTS_REPO
LAYOUT_KEYMAP_PATH := $$(LAYOUTS_REPO)/$$(LAYOUT)/$$(KEYMAP)
LAYOUT_KEYMAP_JSON := $$(LAYOUT_KEYMAP_PATH)/keymap.json
LAYOUT_KEYMAP_C := $$(LAYOUT_KEYMAP_PATH)/keymap.c
ifneq ("$$(wildcard $$(LAYOUT_KEYMAP_JSON))","")
-include $$(LAYOUT_KEYMAP_PATH)/rules.mk
KEYMAP_JSON := $$(LAYOUT_KEYMAP_JSON)
KEYMAP_PATH := $$(LAYOUT_KEYMAP_PATH)
else ifneq ("$$(wildcard $$(LAYOUT_KEYMAP_C))","")
-include $$(LAYOUT_KEYMAP_PATH)/rules.mk
KEYMAP_C := $$(LAYOUT_KEYMAP_C)
KEYMAP_PATH := $$(LAYOUT_KEYMAP_PATH)
endif
endef
define SEARCH_LAYOUTS
$$(foreach LAYOUTS_REPO,$$(LAYOUTS_REPOS),$$(eval $$(call SEARCH_LAYOUTS_REPO)))
endef
ifneq ($(FORCE_LAYOUT),)
ifneq (,$(findstring $(FORCE_LAYOUT),$(LAYOUTS)))
$(info Forcing layout: $(FORCE_LAYOUT))
LAYOUTS := $(FORCE_LAYOUT)
else
$(call CATASTROPHIC_ERROR,Invalid layout,Forced layout does not exist)
endif
endif
$(foreach LAYOUT,$(LAYOUTS),$(eval $(call SEARCH_LAYOUTS)))

View File

@@ -1,92 +0,0 @@
ifndef VERBOSE
.SILENT:
endif
.DEFAULT_GOAL := all
OPT = g
include paths.mk
include $(BUILDDEFS_PATH)/message.mk
TARGET=test/$(TEST_OUTPUT)
GTEST_OUTPUT = $(BUILD_DIR)/gtest
TEST_OBJ = $(BUILD_DIR)/test_obj
OUTPUTS := $(TEST_OBJ)/$(TEST_OUTPUT) $(GTEST_OUTPUT)
GTEST_INC := \
$(LIB_PATH)/googletest/googletest/include \
$(LIB_PATH)/googletest/googlemock/include
GTEST_INTERNAL_INC := \
$(LIB_PATH)/googletest/googletest \
$(LIB_PATH)/googletest/googlemock
$(GTEST_OUTPUT)_SRC := \
googletest/src/gtest-all.cc\
googlemock/src/gmock-all.cc
$(GTEST_OUTPUT)_DEFS :=
$(GTEST_OUTPUT)_INC := $(GTEST_INC) $(GTEST_INTERNAL_INC)
LDFLAGS += -lstdc++ -lpthread -shared-libgcc
CREATE_MAP := no
VPATH += \
$(LIB_PATH)/googletest \
$(LIB_PATH)/googlemock \
$(COMMON_VPATH) \
$(TEST_PATH)
all: elf
PLATFORM:=TEST
PLATFORM_KEY:=test
BOOTLOADER_TYPE:=none
ifeq ($(strip $(DEBUG)), 1)
CONSOLE_ENABLE = yes
endif
ifneq ($(filter $(FULL_TESTS),$(TEST)),)
include tests/test_common/build.mk
include $(TEST_PATH)/test.mk
endif
include $(BUILDDEFS_PATH)/common_features.mk
include $(BUILDDEFS_PATH)/generic_features.mk
include $(PLATFORM_PATH)/common.mk
include $(TMK_PATH)/protocol.mk
include $(QUANTUM_PATH)/debounce/tests/rules.mk
include $(QUANTUM_PATH)/encoder/tests/rules.mk
include $(QUANTUM_PATH)/os_detection/tests/rules.mk
include $(QUANTUM_PATH)/sequencer/tests/rules.mk
include $(QUANTUM_PATH)/wear_leveling/tests/rules.mk
include $(QUANTUM_PATH)/logging/print.mk
include $(PLATFORM_PATH)/test/rules.mk
ifneq ($(filter $(FULL_TESTS),$(TEST)),)
include $(BUILDDEFS_PATH)/build_full_test.mk
endif
$(TEST_OUTPUT)_SRC += \
tests/test_common/main.cpp \
$(QUANTUM_PATH)/logging/print.c
ifneq ($(strip $(INTROSPECTION_KEYMAP_C)),)
$(TEST_OUTPUT)_DEFS += -DINTROSPECTION_KEYMAP_C=\"$(strip $(INTROSPECTION_KEYMAP_C))\"
endif
$(TEST_OBJ)/$(TEST_OUTPUT)_SRC := $($(TEST_OUTPUT)_SRC)
$(TEST_OBJ)/$(TEST_OUTPUT)_INC := $($(TEST_OUTPUT)_INC) $(VPATH) $(GTEST_INC)
$(TEST_OBJ)/$(TEST_OUTPUT)_DEFS := $($(TEST_OUTPUT)_DEFS)
$(TEST_OBJ)/$(TEST_OUTPUT)_CONFIG := $($(TEST_OUTPUT)_CONFIG)
include $(PLATFORM_PATH)/$(PLATFORM_KEY)/platform.mk
include $(BUILDDEFS_PATH)/common_rules.mk
$(shell mkdir -p $(BUILD_DIR)/test 2>/dev/null)
$(shell mkdir -p $(TEST_OBJ) 2>/dev/null)

View File

@@ -1,992 +0,0 @@
# Copyright 2017 Fred Sundvik
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
QUANTUM_SRC += \
$(QUANTUM_DIR)/quantum.c \
$(QUANTUM_DIR)/bitwise.c \
$(QUANTUM_DIR)/led.c \
$(QUANTUM_DIR)/action.c \
$(QUANTUM_DIR)/action_layer.c \
$(QUANTUM_DIR)/action_tapping.c \
$(QUANTUM_DIR)/action_util.c \
$(QUANTUM_DIR)/eeconfig.c \
$(QUANTUM_DIR)/keyboard.c \
$(QUANTUM_DIR)/keymap_common.c \
$(QUANTUM_DIR)/keycode_config.c \
$(QUANTUM_DIR)/sync_timer.c \
$(QUANTUM_DIR)/logging/debug.c \
$(QUANTUM_DIR)/logging/sendchar.c \
VPATH += $(QUANTUM_DIR)/logging
# Fall back to lib/printf if there is no platform provided print
ifeq ("$(wildcard $(PLATFORM_PATH)/$(PLATFORM_KEY)/printf.mk)","")
include $(QUANTUM_PATH)/logging/print.mk
else
include $(PLATFORM_PATH)/$(PLATFORM_KEY)/printf.mk
endif
ifeq ($(strip $(DEBUG_MATRIX_SCAN_RATE_ENABLE)), yes)
OPT_DEFS += -DDEBUG_MATRIX_SCAN_RATE
CONSOLE_ENABLE = yes
else ifeq ($(strip $(DEBUG_MATRIX_SCAN_RATE_ENABLE)), api)
OPT_DEFS += -DDEBUG_MATRIX_SCAN_RATE
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
COMMON_VPATH += $(QUANTUM_PATH)/audio
MUSIC_ENABLE = yes
SRC += $(QUANTUM_DIR)/process_keycode/process_audio.c
SRC += $(QUANTUM_DIR)/process_keycode/process_clicky.c
SRC += $(QUANTUM_DIR)/audio/audio.c ## common audio code, hardware agnostic
SRC += $(PLATFORM_PATH)/$(PLATFORM_KEY)/$(DRIVER_DIR)/audio_$(strip $(AUDIO_DRIVER)).c
SRC += $(QUANTUM_DIR)/audio/voices.c
SRC += $(QUANTUM_DIR)/audio/luts.c
endif
ifeq ($(strip $(SEQUENCER_ENABLE)), yes)
MUSIC_ENABLE = yes
endif
ifeq ($(strip $(MIDI_ENABLE)), yes)
OPT_DEFS += -DMIDI_ENABLE
MUSIC_ENABLE = yes
COMMON_VPATH += $(QUANTUM_PATH)/midi
SRC += $(QUANTUM_DIR)/midi/midi.c
SRC += $(QUANTUM_DIR)/midi/midi_device.c
SRC += $(QUANTUM_DIR)/midi/qmk_midi.c
SRC += $(QUANTUM_DIR)/midi/sysex_tools.c
SRC += $(QUANTUM_DIR)/midi/bytequeue/bytequeue.c
SRC += $(QUANTUM_DIR)/midi/bytequeue/interrupt_setting.c
SRC += $(QUANTUM_DIR)/process_keycode/process_midi.c
endif
VALID_STENO_PROTOCOL_TYPES := geminipr txbolt all
STENO_PROTOCOL ?= all
ifeq ($(strip $(STENO_ENABLE)), yes)
ifeq ($(filter $(STENO_PROTOCOL),$(VALID_STENO_PROTOCOL_TYPES)),)
$(call CATASTROPHIC_ERROR,Invalid STENO_PROTOCOL,STENO_PROTOCOL="$(STENO_PROTOCOL)" is not a valid stenography protocol)
else
OPT_DEFS += -DSTENO_ENABLE
VIRTSER_ENABLE ?= yes
ifeq ($(strip $(STENO_PROTOCOL)), geminipr)
OPT_DEFS += -DSTENO_ENABLE_GEMINI
endif
ifeq ($(strip $(STENO_PROTOCOL)), txbolt)
OPT_DEFS += -DSTENO_ENABLE_BOLT
endif
ifeq ($(strip $(STENO_PROTOCOL)), all)
OPT_DEFS += -DSTENO_ENABLE_ALL
OPT_DEFS += -DSTENO_ENABLE_GEMINI
OPT_DEFS += -DSTENO_ENABLE_BOLT
endif
SRC += $(QUANTUM_DIR)/process_keycode/process_steno.c
endif
endif
ifeq ($(strip $(MOUSEKEY_ENABLE)), yes)
MOUSE_ENABLE := yes
endif
VALID_POINTING_DEVICE_DRIVER_TYPES := adns5050 adns9800 analog_joystick azoteq_iqs5xx cirque_pinnacle_i2c cirque_pinnacle_spi paw3204 pmw3320 pmw3360 pmw3389 pimoroni_trackball custom
ifeq ($(strip $(POINTING_DEVICE_ENABLE)), yes)
ifeq ($(filter $(POINTING_DEVICE_DRIVER),$(VALID_POINTING_DEVICE_DRIVER_TYPES)),)
$(call CATASTROPHIC_ERROR,Invalid POINTING_DEVICE_DRIVER,POINTING_DEVICE_DRIVER="$(POINTING_DEVICE_DRIVER)" is not a valid pointing device type)
else
OPT_DEFS += -DPOINTING_DEVICE_ENABLE
MOUSE_ENABLE := yes
VPATH += $(QUANTUM_DIR)/pointing_device
SRC += $(QUANTUM_DIR)/pointing_device/pointing_device.c
SRC += $(QUANTUM_DIR)/pointing_device/pointing_device_drivers.c
SRC += $(QUANTUM_DIR)/pointing_device/pointing_device_auto_mouse.c
ifneq ($(strip $(POINTING_DEVICE_DRIVER)), custom)
SRC += drivers/sensors/$(strip $(POINTING_DEVICE_DRIVER)).c
OPT_DEFS += -DPOINTING_DEVICE_DRIVER_$(strip $(shell echo $(POINTING_DEVICE_DRIVER) | tr '[:lower:]' '[:upper:]'))
endif
OPT_DEFS += -DPOINTING_DEVICE_DRIVER_$(strip $(POINTING_DEVICE_DRIVER))
ifeq ($(strip $(POINTING_DEVICE_DRIVER)), adns9800)
SPI_DRIVER_REQUIRED = yes
else ifeq ($(strip $(POINTING_DEVICE_DRIVER)), analog_joystick)
ANALOG_DRIVER_REQUIRED = yes
else ifeq ($(strip $(POINTING_DEVICE_DRIVER)), azoteq_iqs5xx)
I2C_DRIVER_REQUIRED = yes
else ifeq ($(strip $(POINTING_DEVICE_DRIVER)), cirque_pinnacle_i2c)
I2C_DRIVER_REQUIRED = yes
SRC += drivers/sensors/cirque_pinnacle.c
SRC += drivers/sensors/cirque_pinnacle_gestures.c
SRC += $(QUANTUM_DIR)/pointing_device/pointing_device_gestures.c
else ifeq ($(strip $(POINTING_DEVICE_DRIVER)), cirque_pinnacle_spi)
SPI_DRIVER_REQUIRED = yes
SRC += drivers/sensors/cirque_pinnacle.c
SRC += drivers/sensors/cirque_pinnacle_gestures.c
SRC += $(QUANTUM_DIR)/pointing_device/pointing_device_gestures.c
else ifeq ($(strip $(POINTING_DEVICE_DRIVER)), pimoroni_trackball)
I2C_DRIVER_REQUIRED = yes
else ifneq ($(filter $(strip $(POINTING_DEVICE_DRIVER)),pmw3360 pmw3389),)
SPI_DRIVER_REQUIRED = yes
SRC += drivers/sensors/pmw33xx_common.c
endif
endif
endif
QUANTUM_PAINTER_ENABLE ?= no
ifeq ($(strip $(QUANTUM_PAINTER_ENABLE)), yes)
include $(QUANTUM_DIR)/painter/rules.mk
endif
VALID_EEPROM_DRIVER_TYPES := vendor custom transient i2c spi wear_leveling legacy_stm32_flash
EEPROM_DRIVER ?= vendor
ifeq ($(filter $(EEPROM_DRIVER),$(VALID_EEPROM_DRIVER_TYPES)),)
$(call CATASTROPHIC_ERROR,Invalid EEPROM_DRIVER,EEPROM_DRIVER="$(EEPROM_DRIVER)" is not a valid EEPROM driver)
else
OPT_DEFS += -DEEPROM_ENABLE
COMMON_VPATH += $(PLATFORM_PATH)/$(PLATFORM_KEY)/$(DRIVER_DIR)/eeprom
COMMON_VPATH += $(DRIVER_PATH)/eeprom
COMMON_VPATH += $(PLATFORM_COMMON_DIR)
ifeq ($(strip $(EEPROM_DRIVER)), custom)
# Custom EEPROM implementation -- only needs to implement init/erase/read_block/write_block
OPT_DEFS += -DEEPROM_DRIVER -DEEPROM_CUSTOM
SRC += eeprom_driver.c
else ifeq ($(strip $(EEPROM_DRIVER)), wear_leveling)
# Wear-leveling EEPROM implementation
OPT_DEFS += -DEEPROM_DRIVER -DEEPROM_WEAR_LEVELING
SRC += eeprom_driver.c eeprom_wear_leveling.c
else ifeq ($(strip $(EEPROM_DRIVER)), i2c)
# External I2C EEPROM implementation
OPT_DEFS += -DEEPROM_DRIVER -DEEPROM_I2C
I2C_DRIVER_REQUIRED = yes
SRC += eeprom_driver.c eeprom_i2c.c
else ifeq ($(strip $(EEPROM_DRIVER)), spi)
# External SPI EEPROM implementation
OPT_DEFS += -DEEPROM_DRIVER -DEEPROM_SPI
SPI_DRIVER_REQUIRED = yes
SRC += eeprom_driver.c eeprom_spi.c
else ifeq ($(strip $(EEPROM_DRIVER)), legacy_stm32_flash)
# STM32 Emulated EEPROM, backed by MCU flash (soon to be deprecated)
OPT_DEFS += -DEEPROM_DRIVER -DEEPROM_LEGACY_EMULATED_FLASH
COMMON_VPATH += $(PLATFORM_PATH)/$(PLATFORM_KEY)/$(DRIVER_DIR)/flash
COMMON_VPATH += $(DRIVER_PATH)/flash
SRC += eeprom_driver.c eeprom_legacy_emulated_flash.c legacy_flash_ops.c
else ifeq ($(strip $(EEPROM_DRIVER)), transient)
# Transient EEPROM implementation -- no data storage but provides runtime area for it
OPT_DEFS += -DEEPROM_DRIVER -DEEPROM_TRANSIENT
SRC += eeprom_driver.c eeprom_transient.c
else ifeq ($(strip $(EEPROM_DRIVER)), vendor)
# Vendor-implemented EEPROM
OPT_DEFS += -DEEPROM_VENDOR
ifeq ($(PLATFORM),AVR)
# Automatically provided by avr-libc, nothing required
else ifeq ($(PLATFORM),CHIBIOS)
ifneq ($(filter %_STM32F072xB %_STM32F042x6, $(MCU_SERIES)_$(MCU_LDSCRIPT)),)
# STM32 Emulated EEPROM, backed by MCU flash (soon to be deprecated)
OPT_DEFS += -DEEPROM_DRIVER -DEEPROM_LEGACY_EMULATED_FLASH
COMMON_VPATH += $(PLATFORM_PATH)/$(PLATFORM_KEY)/$(DRIVER_DIR)/flash
COMMON_VPATH += $(DRIVER_PATH)/flash
SRC += eeprom_driver.c eeprom_legacy_emulated_flash.c legacy_flash_ops.c
else ifneq ($(filter $(MCU_SERIES),STM32F1xx STM32F3xx STM32F4xx STM32L4xx STM32G4xx WB32F3G71xx WB32FQ95xx GD32VF103),)
# Wear-leveling EEPROM implementation, backed by MCU flash
OPT_DEFS += -DEEPROM_DRIVER -DEEPROM_WEAR_LEVELING
SRC += eeprom_driver.c eeprom_wear_leveling.c
WEAR_LEVELING_DRIVER ?= embedded_flash
else ifneq ($(filter $(MCU_SERIES),STM32L0xx STM32L1xx),)
# True EEPROM on STM32L0xx, L1xx
OPT_DEFS += -DEEPROM_DRIVER -DEEPROM_STM32_L0_L1
SRC += eeprom_driver.c eeprom_stm32_L0_L1.c
else ifneq ($(filter $(MCU_SERIES),RP2040),)
# Wear-leveling EEPROM implementation, backed by RP2040 flash
OPT_DEFS += -DEEPROM_DRIVER -DEEPROM_WEAR_LEVELING
SRC += eeprom_driver.c eeprom_wear_leveling.c
WEAR_LEVELING_DRIVER ?= rp2040_flash
else ifneq ($(filter $(MCU_SERIES),KL2x K20x),)
# Teensy EEPROM implementations
OPT_DEFS += -DEEPROM_KINETIS_FLEXRAM
SRC += eeprom_kinetis_flexram.c
else
# Fall back to transient, i.e. non-persistent
OPT_DEFS += -DEEPROM_DRIVER -DEEPROM_TRANSIENT
SRC += eeprom_driver.c eeprom_transient.c
endif
else ifeq ($(PLATFORM),ARM_ATSAM)
# arm_atsam EEPROM
OPT_DEFS += -DEEPROM_SAMD
SRC += eeprom_samd.c
else ifeq ($(PLATFORM),TEST)
# Test harness "EEPROM"
OPT_DEFS += -DEEPROM_TEST_HARNESS
SRC += eeprom.c
endif
endif
endif
VALID_WEAR_LEVELING_DRIVER_TYPES := custom embedded_flash spi_flash rp2040_flash legacy
WEAR_LEVELING_DRIVER ?= none
ifneq ($(strip $(WEAR_LEVELING_DRIVER)),none)
ifeq ($(filter $(WEAR_LEVELING_DRIVER),$(VALID_WEAR_LEVELING_DRIVER_TYPES)),)
$(call CATASTROPHIC_ERROR,Invalid WEAR_LEVELING_DRIVER,WEAR_LEVELING_DRIVER="$(WEAR_LEVELING_DRIVER)" is not a valid wear leveling driver)
else
FNV_ENABLE := yes
OPT_DEFS += -DWEAR_LEVELING_ENABLE
OPT_DEFS += -DWEAR_LEVELING_$(strip $(shell echo $(WEAR_LEVELING_DRIVER) | tr '[:lower:]' '[:upper:]'))
COMMON_VPATH += $(PLATFORM_PATH)/$(PLATFORM_KEY)/$(DRIVER_DIR)/wear_leveling
COMMON_VPATH += $(DRIVER_PATH)/wear_leveling
COMMON_VPATH += $(QUANTUM_DIR)/wear_leveling
SRC += wear_leveling.c
ifeq ($(strip $(WEAR_LEVELING_DRIVER)), embedded_flash)
OPT_DEFS += -DHAL_USE_EFL
SRC += wear_leveling_efl.c
POST_CONFIG_H += $(PLATFORM_PATH)/$(PLATFORM_KEY)/$(DRIVER_DIR)/wear_leveling/wear_leveling_efl_config.h
else ifeq ($(strip $(WEAR_LEVELING_DRIVER)), spi_flash)
FLASH_DRIVER := spi
SRC += wear_leveling_flash_spi.c
POST_CONFIG_H += $(DRIVER_PATH)/wear_leveling/wear_leveling_flash_spi_config.h
else ifeq ($(strip $(WEAR_LEVELING_DRIVER)), rp2040_flash)
SRC += wear_leveling_rp2040_flash.c
POST_CONFIG_H += $(PLATFORM_PATH)/$(PLATFORM_KEY)/$(DRIVER_PATH)/wear_leveling/wear_leveling_rp2040_flash_config.h
else ifeq ($(strip $(WEAR_LEVELING_DRIVER)), legacy)
COMMON_VPATH += $(PLATFORM_PATH)/$(PLATFORM_KEY)/$(DRIVER_DIR)/flash
SRC += legacy_flash_ops.c wear_leveling_legacy.c
POST_CONFIG_H += $(PLATFORM_PATH)/$(PLATFORM_KEY)/$(DRIVER_DIR)/wear_leveling/wear_leveling_legacy_config.h
endif
endif
endif
VALID_FLASH_DRIVER_TYPES := spi
FLASH_DRIVER ?= none
ifneq ($(strip $(FLASH_DRIVER)), none)
ifeq ($(filter $(FLASH_DRIVER),$(VALID_FLASH_DRIVER_TYPES)),)
$(call CATASTROPHIC_ERROR,Invalid FLASH_DRIVER,FLASH_DRIVER="$(FLASH_DRIVER)" is not a valid flash driver)
else
OPT_DEFS += -DFLASH_ENABLE
ifeq ($(strip $(FLASH_DRIVER)),spi)
SPI_DRIVER_REQUIRED = yes
OPT_DEFS += -DFLASH_DRIVER -DFLASH_SPI
COMMON_VPATH += $(DRIVER_PATH)/flash
SRC += flash_spi.c
endif
endif
endif
RGBLIGHT_ENABLE ?= no
VALID_RGBLIGHT_TYPES := ws2812 apa102 custom
ifeq ($(strip $(RGBLIGHT_ENABLE)), yes)
RGBLIGHT_DRIVER ?= ws2812
ifeq ($(filter $(RGBLIGHT_DRIVER),$(VALID_RGBLIGHT_TYPES)),)
$(call CATASTROPHIC_ERROR,Invalid RGBLIGHT_DRIVER,RGBLIGHT_DRIVER="$(RGBLIGHT_DRIVER)" is not a valid RGB type)
else
COMMON_VPATH += $(QUANTUM_DIR)/rgblight
POST_CONFIG_H += $(QUANTUM_DIR)/rgblight/rgblight_post_config.h
OPT_DEFS += -DRGBLIGHT_ENABLE
OPT_DEFS += -DRGBLIGHT_$(strip $(shell echo $(RGBLIGHT_DRIVER) | tr '[:lower:]' '[:upper:]'))
SRC += $(QUANTUM_DIR)/color.c
SRC += $(QUANTUM_DIR)/rgblight/rgblight.c
SRC += $(QUANTUM_DIR)/rgblight/rgblight_drivers.c
CIE1931_CURVE := yes
RGB_KEYCODES_ENABLE := yes
endif
ifeq ($(strip $(RGBLIGHT_DRIVER)), ws2812)
WS2812_DRIVER_REQUIRED := yes
endif
ifeq ($(strip $(RGBLIGHT_DRIVER)), apa102)
APA102_DRIVER_REQUIRED := yes
endif
ifeq ($(strip $(VELOCIKEY_ENABLE)), yes)
OPT_DEFS += -DVELOCIKEY_ENABLE
endif
endif
# Deprecated driver names - do not use
ifeq ($(strip $(LED_MATRIX_DRIVER)), aw20216)
LED_MATRIX_DRIVER := aw20216s
endif
ifeq ($(strip $(LED_MATRIX_DRIVER)), ckled2001)
LED_MATRIX_DRIVER := snled27351
endif
LED_MATRIX_ENABLE ?= no
VALID_LED_MATRIX_TYPES := is31fl3218 is31fl3236 is31fl3729 is31fl3731 is31fl3733 is31fl3736 is31fl3737 is31fl3741 is31fl3742a is31fl3743a is31fl3745 is31fl3746a snled27351 custom
ifeq ($(strip $(LED_MATRIX_ENABLE)), yes)
ifeq ($(filter $(LED_MATRIX_DRIVER),$(VALID_LED_MATRIX_TYPES)),)
$(call CATASTROPHIC_ERROR,Invalid LED_MATRIX_DRIVER,LED_MATRIX_DRIVER="$(LED_MATRIX_DRIVER)" is not a valid matrix type)
endif
OPT_DEFS += -DLED_MATRIX_ENABLE
OPT_DEFS += -DLED_MATRIX_$(strip $(shell echo $(LED_MATRIX_DRIVER) | tr '[:lower:]' '[:upper:]'))
COMMON_VPATH += $(QUANTUM_DIR)/led_matrix
COMMON_VPATH += $(QUANTUM_DIR)/led_matrix/animations
COMMON_VPATH += $(QUANTUM_DIR)/led_matrix/animations/runners
POST_CONFIG_H += $(QUANTUM_DIR)/led_matrix/post_config.h
SRC += $(QUANTUM_DIR)/process_keycode/process_led_matrix.c
SRC += $(QUANTUM_DIR)/led_matrix/led_matrix.c
SRC += $(QUANTUM_DIR)/led_matrix/led_matrix_drivers.c
LIB8TION_ENABLE := yes
CIE1931_CURVE := yes
ifeq ($(strip $(LED_MATRIX_DRIVER)), is31fl3218)
I2C_DRIVER_REQUIRED = yes
COMMON_VPATH += $(DRIVER_PATH)/led/issi
SRC += is31fl3218-mono.c
endif
ifeq ($(strip $(LED_MATRIX_DRIVER)), is31fl3236)
I2C_DRIVER_REQUIRED = yes
COMMON_VPATH += $(DRIVER_PATH)/led/issi
SRC += is31fl3236-mono.c
endif
ifeq ($(strip $(LED_MATRIX_DRIVER)), is31fl3729)
I2C_DRIVER_REQUIRED = yes
COMMON_VPATH += $(DRIVER_PATH)/led/issi
SRC += is31fl3729-mono.c
endif
ifeq ($(strip $(LED_MATRIX_DRIVER)), is31fl3731)
I2C_DRIVER_REQUIRED = yes
COMMON_VPATH += $(DRIVER_PATH)/led/issi
SRC += is31fl3731-mono.c
endif
ifeq ($(strip $(LED_MATRIX_DRIVER)), is31fl3733)
I2C_DRIVER_REQUIRED = yes
COMMON_VPATH += $(DRIVER_PATH)/led/issi
SRC += is31fl3733-mono.c
endif
ifeq ($(strip $(LED_MATRIX_DRIVER)), is31fl3736)
I2C_DRIVER_REQUIRED = yes
COMMON_VPATH += $(DRIVER_PATH)/led/issi
SRC += is31fl3736-mono.c
endif
ifeq ($(strip $(LED_MATRIX_DRIVER)), is31fl3737)
I2C_DRIVER_REQUIRED = yes
COMMON_VPATH += $(DRIVER_PATH)/led/issi
SRC += is31fl3737-mono.c
endif
ifeq ($(strip $(LED_MATRIX_DRIVER)), is31fl3741)
I2C_DRIVER_REQUIRED = yes
COMMON_VPATH += $(DRIVER_PATH)/led/issi
SRC += is31fl3741-mono.c
endif
ifeq ($(strip $(LED_MATRIX_DRIVER)), is31fl3742a)
I2C_DRIVER_REQUIRED = yes
COMMON_VPATH += $(DRIVER_PATH)/led/issi
SRC += is31fl3742a-mono.c
endif
ifeq ($(strip $(LED_MATRIX_DRIVER)), is31fl3743a)
I2C_DRIVER_REQUIRED = yes
COMMON_VPATH += $(DRIVER_PATH)/led/issi
SRC += is31fl3743a-mono.c
endif
ifeq ($(strip $(LED_MATRIX_DRIVER)), is31fl3745)
I2C_DRIVER_REQUIRED = yes
COMMON_VPATH += $(DRIVER_PATH)/led/issi
SRC += is31fl3745-mono.c
endif
ifeq ($(strip $(LED_MATRIX_DRIVER)), is31fl3746a)
I2C_DRIVER_REQUIRED = yes
COMMON_VPATH += $(DRIVER_PATH)/led/issi
SRC += is31fl3746a-mono.c
endif
ifeq ($(strip $(LED_MATRIX_DRIVER)), snled27351)
I2C_DRIVER_REQUIRED = yes
COMMON_VPATH += $(DRIVER_PATH)/led
SRC += snled27351-mono.c
endif
endif
# Deprecated driver names - do not use
ifeq ($(strip $(RGB_MATRIX_DRIVER)), aw20216)
RGB_MATRIX_DRIVER := aw20216s
endif
ifeq ($(strip $(RGB_MATRIX_DRIVER)), ckled2001)
RGB_MATRIX_DRIVER := snled27351
endif
RGB_MATRIX_ENABLE ?= no
VALID_RGB_MATRIX_TYPES := aw20216s is31fl3218 is31fl3236 is31fl3729 is31fl3731 is31fl3733 is31fl3736 is31fl3737 is31fl3741 is31fl3742a is31fl3743a is31fl3745 is31fl3746a snled27351 ws2812 custom
ifeq ($(strip $(RGB_MATRIX_ENABLE)), yes)
ifeq ($(filter $(RGB_MATRIX_DRIVER),$(VALID_RGB_MATRIX_TYPES)),)
$(call CATASTROPHIC_ERROR,Invalid RGB_MATRIX_DRIVER,RGB_MATRIX_DRIVER="$(RGB_MATRIX_DRIVER)" is not a valid matrix type)
endif
OPT_DEFS += -DRGB_MATRIX_ENABLE
OPT_DEFS += -DRGB_MATRIX_$(strip $(shell echo $(RGB_MATRIX_DRIVER) | tr '[:lower:]' '[:upper:]'))
COMMON_VPATH += $(QUANTUM_DIR)/rgb_matrix
COMMON_VPATH += $(QUANTUM_DIR)/rgb_matrix/animations
COMMON_VPATH += $(QUANTUM_DIR)/rgb_matrix/animations/runners
POST_CONFIG_H += $(QUANTUM_DIR)/rgb_matrix/post_config.h
SRC += $(QUANTUM_DIR)/color.c
SRC += $(QUANTUM_DIR)/rgb_matrix/rgb_matrix.c
SRC += $(QUANTUM_DIR)/rgb_matrix/rgb_matrix_drivers.c
LIB8TION_ENABLE := yes
CIE1931_CURVE := yes
RGB_KEYCODES_ENABLE := yes
ifeq ($(strip $(RGB_MATRIX_DRIVER)), aw20216s)
SPI_DRIVER_REQUIRED = yes
COMMON_VPATH += $(DRIVER_PATH)/led
SRC += aw20216s.c
endif
ifeq ($(strip $(RGB_MATRIX_DRIVER)), is31fl3218)
I2C_DRIVER_REQUIRED = yes
COMMON_VPATH += $(DRIVER_PATH)/led/issi
SRC += is31fl3218.c
endif
ifeq ($(strip $(RGB_MATRIX_DRIVER)), is31fl3236)
I2C_DRIVER_REQUIRED = yes
COMMON_VPATH += $(DRIVER_PATH)/led/issi
SRC += is31fl3236.c
endif
ifeq ($(strip $(RGB_MATRIX_DRIVER)), is31fl3729)
I2C_DRIVER_REQUIRED = yes
COMMON_VPATH += $(DRIVER_PATH)/led/issi
SRC += is31fl3729.c
endif
ifeq ($(strip $(RGB_MATRIX_DRIVER)), is31fl3731)
I2C_DRIVER_REQUIRED = yes
COMMON_VPATH += $(DRIVER_PATH)/led/issi
SRC += is31fl3731.c
endif
ifeq ($(strip $(RGB_MATRIX_DRIVER)), is31fl3733)
I2C_DRIVER_REQUIRED = yes
COMMON_VPATH += $(DRIVER_PATH)/led/issi
SRC += is31fl3733.c
endif
ifeq ($(strip $(RGB_MATRIX_DRIVER)), is31fl3736)
I2C_DRIVER_REQUIRED = yes
COMMON_VPATH += $(DRIVER_PATH)/led/issi
SRC += is31fl3736.c
endif
ifeq ($(strip $(RGB_MATRIX_DRIVER)), is31fl3737)
I2C_DRIVER_REQUIRED = yes
COMMON_VPATH += $(DRIVER_PATH)/led/issi
SRC += is31fl3737.c
endif
ifeq ($(strip $(RGB_MATRIX_DRIVER)), is31fl3741)
I2C_DRIVER_REQUIRED = yes
COMMON_VPATH += $(DRIVER_PATH)/led/issi
SRC += is31fl3741.c
endif
ifeq ($(strip $(RGB_MATRIX_DRIVER)), is31fl3742a)
I2C_DRIVER_REQUIRED = yes
COMMON_VPATH += $(DRIVER_PATH)/led/issi
SRC += is31fl3742a.c
endif
ifeq ($(strip $(RGB_MATRIX_DRIVER)), is31fl3743a)
I2C_DRIVER_REQUIRED = yes
COMMON_VPATH += $(DRIVER_PATH)/led/issi
SRC += is31fl3743a.c
endif
ifeq ($(strip $(RGB_MATRIX_DRIVER)), is31fl3745)
I2C_DRIVER_REQUIRED = yes
COMMON_VPATH += $(DRIVER_PATH)/led/issi
SRC += is31fl3745.c
endif
ifeq ($(strip $(RGB_MATRIX_DRIVER)), is31fl3746a)
I2C_DRIVER_REQUIRED = yes
COMMON_VPATH += $(DRIVER_PATH)/led/issi
SRC += is31fl3746a.c
endif
ifeq ($(strip $(RGB_MATRIX_DRIVER)), snled27351)
I2C_DRIVER_REQUIRED = yes
COMMON_VPATH += $(DRIVER_PATH)/led
SRC += snled27351.c
endif
ifeq ($(strip $(RGB_MATRIX_DRIVER)), ws2812)
WS2812_DRIVER_REQUIRED := yes
endif
ifeq ($(strip $(RGB_MATRIX_DRIVER)), apa102)
APA102_DRIVER_REQUIRED := yes
endif
ifeq ($(strip $(RGB_MATRIX_CUSTOM_KB)), yes)
OPT_DEFS += -DRGB_MATRIX_CUSTOM_KB
endif
ifeq ($(strip $(RGB_MATRIX_CUSTOM_USER)), yes)
OPT_DEFS += -DRGB_MATRIX_CUSTOM_USER
endif
endif
ifeq ($(strip $(RGB_KEYCODES_ENABLE)), yes)
SRC += $(QUANTUM_DIR)/process_keycode/process_rgb.c
endif
VARIABLE_TRACE ?= no
ifneq ($(strip $(VARIABLE_TRACE)),no)
SRC += $(QUANTUM_DIR)/variable_trace.c
OPT_DEFS += -DNUM_TRACED_VARIABLES=$(strip $(VARIABLE_TRACE))
ifneq ($(strip $(MAX_VARIABLE_TRACE_SIZE)),)
OPT_DEFS += -DMAX_VARIABLE_TRACE_SIZE=$(strip $(MAX_VARIABLE_TRACE_SIZE))
endif
endif
ifeq ($(strip $(SLEEP_LED_ENABLE)), yes)
SRC += $(PLATFORM_COMMON_DIR)/sleep_led.c
OPT_DEFS += -DSLEEP_LED_ENABLE
NO_SUSPEND_POWER_DOWN := yes
endif
VALID_BACKLIGHT_TYPES := pwm timer software custom
BACKLIGHT_ENABLE ?= no
BACKLIGHT_DRIVER ?= pwm
ifeq ($(strip $(BACKLIGHT_ENABLE)), yes)
ifeq ($(filter $(BACKLIGHT_DRIVER),$(VALID_BACKLIGHT_TYPES)),)
$(call CATASTROPHIC_ERROR,Invalid BACKLIGHT_DRIVER,BACKLIGHT_DRIVER="$(BACKLIGHT_DRIVER)" is not a valid backlight type)
endif
COMMON_VPATH += $(QUANTUM_DIR)/backlight
COMMON_VPATH += $(DRIVER_PATH)/backlight
SRC += $(QUANTUM_DIR)/backlight/backlight.c
SRC += $(QUANTUM_DIR)/process_keycode/process_backlight.c
OPT_DEFS += -DBACKLIGHT_ENABLE
OPT_DEFS += -DBACKLIGHT_$(strip $(shell echo $(BACKLIGHT_DRIVER) | tr '[:lower:]' '[:upper:]'))
ifneq ($(strip $(BACKLIGHT_DRIVER)), custom)
SRC += $(QUANTUM_DIR)/backlight/backlight_driver_common.c
ifeq ($(strip $(BACKLIGHT_DRIVER)), software)
SRC += $(DRIVER_PATH)/backlight/backlight_software.c
else
SRC += $(PLATFORM_PATH)/$(PLATFORM_KEY)/$(DRIVER_DIR)/backlight_$(strip $(BACKLIGHT_DRIVER)).c
endif
endif
endif
ifeq ($(strip $(CIE1931_CURVE)), yes)
OPT_DEFS += -DUSE_CIE1931_CURVE
LED_TABLES := yes
endif
ifeq ($(strip $(LED_TABLES)), yes)
SRC += $(QUANTUM_DIR)/led_tables.c
endif
ifeq ($(strip $(VIA_ENABLE)), yes)
DYNAMIC_KEYMAP_ENABLE := yes
RAW_ENABLE := yes
BOOTMAGIC_ENABLE := yes
TRI_LAYER_ENABLE := yes
endif
VALID_CUSTOM_MATRIX_TYPES:= yes lite no
CUSTOM_MATRIX ?= no
ifneq ($(strip $(CUSTOM_MATRIX)), yes)
ifeq ($(filter $(CUSTOM_MATRIX),$(VALID_CUSTOM_MATRIX_TYPES)),)
$(call CATASTROPHIC_ERROR,Invalid CUSTOM_MATRIX,CUSTOM_MATRIX="$(CUSTOM_MATRIX)" is not a valid custom matrix type)
endif
# Include common stuff for all non custom matrix users
QUANTUM_SRC += $(QUANTUM_DIR)/matrix_common.c
# if 'lite' then skip the actual matrix implementation
ifneq ($(strip $(CUSTOM_MATRIX)), lite)
# Include the standard or split matrix code if needed
QUANTUM_SRC += $(QUANTUM_DIR)/matrix.c
endif
endif
# Debounce Modules. Set DEBOUNCE_TYPE=custom if including one manually.
DEBOUNCE_TYPE ?= sym_defer_g
ifneq ($(strip $(DEBOUNCE_TYPE)), custom)
QUANTUM_SRC += $(QUANTUM_DIR)/debounce/$(strip $(DEBOUNCE_TYPE)).c
endif
VALID_SERIAL_DRIVER_TYPES := bitbang usart vendor
SERIAL_DRIVER ?= bitbang
ifeq ($(filter $(SERIAL_DRIVER),$(VALID_SERIAL_DRIVER_TYPES)),)
$(call CATASTROPHIC_ERROR,Invalid SERIAL_DRIVER,SERIAL_DRIVER="$(SERIAL_DRIVER)" is not a valid SERIAL driver)
endif
ifeq ($(strip $(SPLIT_KEYBOARD)), yes)
POST_CONFIG_H += $(QUANTUM_DIR)/split_common/post_config.h
OPT_DEFS += -DSPLIT_KEYBOARD
CRC_ENABLE := yes
# Include files used by all split keyboards
QUANTUM_SRC += $(QUANTUM_DIR)/split_common/split_util.c
# Determine which (if any) transport files are required
ifneq ($(strip $(SPLIT_TRANSPORT)), custom)
QUANTUM_SRC += $(QUANTUM_DIR)/split_common/transport.c \
$(QUANTUM_DIR)/split_common/transactions.c
OPT_DEFS += -DSPLIT_COMMON_TRANSACTIONS
# 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)
ifneq ($(NO_I2C),yes)
QUANTUM_LIB_SRC += i2c_master.c \
i2c_slave.c
endif
endif
OPT_DEFS += -DSERIAL_DRIVER_$(strip $(shell echo $(SERIAL_DRIVER) | tr '[:lower:]' '[:upper:]'))
ifeq ($(strip $(SERIAL_DRIVER)), bitbang)
QUANTUM_LIB_SRC += serial.c
else
QUANTUM_LIB_SRC += serial_protocol.c
QUANTUM_LIB_SRC += serial_$(strip $(SERIAL_DRIVER)).c
endif
endif
COMMON_VPATH += $(QUANTUM_PATH)/split_common
endif
ifeq ($(strip $(FNV_ENABLE)), yes)
OPT_DEFS += -DFNV_ENABLE
VPATH += $(LIB_PATH)/fnv
SRC += qmk_fnv_type_validation.c hash_32a.c hash_64a.c
endif
ifeq ($(strip $(LIB8TION_ENABLE)), yes)
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 += $(LIB_PATH)/lib8tion/lib8tion.c
endif
VALID_HAPTIC_DRIVER_TYPES := drv2605l solenoid
ifeq ($(strip $(HAPTIC_ENABLE)),yes)
ifeq ($(filter $(HAPTIC_DRIVER),$(VALID_HAPTIC_DRIVER_TYPES)),)
$(call CATASTROPHIC_ERROR,Invalid HAPTIC_DRIVER,HAPTIC_DRIVER="$(HAPTIC_DRIVER)" is not a valid Haptic driver)
else
OPT_DEFS += -DHAPTIC_$(strip $(shell echo $(HAPTIC_DRIVER) | tr '[:lower:]' '[:upper:]'))
COMMON_VPATH += $(DRIVER_PATH)/haptic
ifeq ($(strip $(HAPTIC_DRIVER)), drv2605l)
I2C_DRIVER_REQUIRED = yes
SRC += drv2605l.c
endif
ifeq ($(strip $(HAPTIC_DRIVER)), solenoid)
SRC += solenoid.c
endif
endif
endif
ifeq ($(strip $(HD44780_ENABLE)), yes)
OPT_DEFS += -DHD44780_ENABLE
COMMON_VPATH += $(DRIVER_PATH)/lcd
SRC += hd44780.c
endif
VALID_OLED_DRIVER_TYPES := custom ssd1306
OLED_DRIVER ?= ssd1306
VALID_OLED_TRANSPORT_TYPES := i2c spi custom
OLED_TRANSPORT ?= i2c
ifeq ($(strip $(OLED_ENABLE)), yes)
ifeq ($(filter $(OLED_DRIVER),$(VALID_OLED_DRIVER_TYPES)),)
$(call CATASTROPHIC_ERROR,Invalid OLED_DRIVER,OLED_DRIVER="$(OLED_DRIVER)" is not a valid OLED driver)
else
ifeq ($(filter $(OLED_TRANSPORT),$(VALID_OLED_TRANSPORT_TYPES)),)
$(call CATASTROPHIC_ERROR,Invalid OLED_TRANSPORT,OLED_TRANSPORT="$(OLED_TRANSPORT)" is not a valid OLED transport)
else
OPT_DEFS += -DOLED_ENABLE
OPT_DEFS += -DOLED_$(strip $(shell echo $(OLED_DRIVER) | tr '[:lower:]' '[:upper:]'))
COMMON_VPATH += $(DRIVER_PATH)/oled
ifneq ($(strip $(OLED_DRIVER)), custom)
SRC += oled_driver.c
endif
OPT_DEFS += -DOLED_TRANSPORT_$(strip $(shell echo $(OLED_TRANSPORT) | tr '[:lower:]' '[:upper:]'))
ifeq ($(strip $(OLED_TRANSPORT)), i2c)
I2C_DRIVER_REQUIRED = yes
endif
ifeq ($(strip $(OLED_TRANSPORT)), spi)
SPI_DRIVER_REQUIRED = yes
endif
endif
endif
endif
ifeq ($(strip $(ST7565_ENABLE)), yes)
OPT_DEFS += -DST7565_ENABLE
SPI_DRIVER_REQUIRED = yes
COMMON_VPATH += $(DRIVER_PATH)/oled # For glcdfont.h
COMMON_VPATH += $(DRIVER_PATH)/lcd
SRC += st7565.c
endif
ifeq ($(strip $(UCIS_ENABLE)), yes)
OPT_DEFS += -DUCIS_ENABLE
UNICODE_COMMON := yes
SRC += $(QUANTUM_DIR)/process_keycode/process_ucis.c \
$(QUANTUM_DIR)/unicode/ucis.c
endif
ifeq ($(strip $(UNICODEMAP_ENABLE)), yes)
OPT_DEFS += -DUNICODEMAP_ENABLE
UNICODE_COMMON := yes
SRC += $(QUANTUM_DIR)/process_keycode/process_unicodemap.c \
$(QUANTUM_DIR)/unicode/unicodemap.c
endif
ifeq ($(strip $(UNICODE_ENABLE)), yes)
OPT_DEFS += -DUNICODE_ENABLE
UNICODE_COMMON := yes
SRC += $(QUANTUM_DIR)/process_keycode/process_unicode.c
endif
ifeq ($(strip $(UNICODE_COMMON)), yes)
OPT_DEFS += -DUNICODE_COMMON_ENABLE
COMMON_VPATH += $(QUANTUM_DIR)/unicode
SRC += $(QUANTUM_DIR)/process_keycode/process_unicode_common.c \
$(QUANTUM_DIR)/unicode/unicode.c \
$(QUANTUM_DIR)/unicode/utf8.c
endif
ifeq ($(strip $(PS2_MOUSE_ENABLE)), yes)
PS2_ENABLE := yes
MOUSE_ENABLE := yes
SRC += ps2_mouse.c
OPT_DEFS += -DPS2_MOUSE_ENABLE
endif
VALID_PS2_DRIVER_TYPES := busywait interrupt usart vendor
PS2_DRIVER ?= busywait
ifeq ($(strip $(PS2_ENABLE)), yes)
ifeq ($(filter $(PS2_DRIVER),$(VALID_PS2_DRIVER_TYPES)),)
$(call CATASTROPHIC_ERROR,Invalid PS2_DRIVER,PS2_DRIVER="$(PS2_DRIVER)" is not a valid PS/2 driver)
endif
OPT_DEFS += -DPS2_DRIVER_$(strip $(shell echo $(PS2_DRIVER) | tr '[:lower:]' '[:upper:]'))
COMMON_VPATH += $(DRIVER_PATH)/ps2
COMMON_VPATH += $(PLATFORM_PATH)/$(PLATFORM_KEY)/$(DRIVER_DIR)/ps2
OPT_DEFS += -DPS2_ENABLE
ifneq ($(strip $(PS2_DRIVER)), vendor)
SRC += ps2_io.c
endif
SRC += ps2_$(strip $(PS2_DRIVER)).c
endif
JOYSTICK_ENABLE ?= no
VALID_JOYSTICK_TYPES := analog digital
JOYSTICK_DRIVER ?= analog
ifeq ($(strip $(JOYSTICK_ENABLE)), yes)
ifeq ($(filter $(JOYSTICK_DRIVER),$(VALID_JOYSTICK_TYPES)),)
$(call CATASTROPHIC_ERROR,Invalid JOYSTICK_DRIVER,JOYSTICK_DRIVER="$(JOYSTICK_DRIVER)" is not a valid joystick driver)
endif
OPT_DEFS += -DJOYSTICK_ENABLE
OPT_DEFS += -DJOYSTICK_$(strip $(shell echo $(JOYSTICK_DRIVER) | tr '[:lower:]' '[:upper:]'))
SRC += $(QUANTUM_DIR)/process_keycode/process_joystick.c
SRC += $(QUANTUM_DIR)/joystick.c
ifeq ($(strip $(JOYSTICK_DRIVER)), analog)
ANALOG_DRIVER_REQUIRED = yes
endif
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)),)
$(call CATASTROPHIC_ERROR,Invalid USBPD_DRIVER,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
$(call CATASTROPHIC_ERROR,Invalid USBPD_DRIVER,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
BLUETOOTH_ENABLE ?= no
VALID_BLUETOOTH_DRIVER_TYPES := bluefruit_le custom rn42
ifeq ($(strip $(BLUETOOTH_ENABLE)), yes)
ifeq ($(filter $(strip $(BLUETOOTH_DRIVER)),$(VALID_BLUETOOTH_DRIVER_TYPES)),)
$(call CATASTROPHIC_ERROR,Invalid BLUETOOTH_DRIVER,BLUETOOTH_DRIVER="$(BLUETOOTH_DRIVER)" is not a valid Bluetooth driver type)
endif
OPT_DEFS += -DBLUETOOTH_ENABLE
OPT_DEFS += -DBLUETOOTH_$(strip $(shell echo $(BLUETOOTH_DRIVER) | tr '[:lower:]' '[:upper:]'))
NO_USB_STARTUP_CHECK := yes
COMMON_VPATH += $(DRIVER_PATH)/bluetooth
SRC += outputselect.c
ifeq ($(strip $(BLUETOOTH_DRIVER)), bluefruit_le)
SPI_DRIVER_REQUIRED = yes
ANALOG_DRIVER_REQUIRED = yes
SRC += $(DRIVER_PATH)/bluetooth/bluetooth.c
SRC += $(DRIVER_PATH)/bluetooth/bluefruit_le.cpp
endif
ifeq ($(strip $(BLUETOOTH_DRIVER)), rn42)
UART_DRIVER_REQUIRED = yes
SRC += $(DRIVER_PATH)/bluetooth/bluetooth.c
SRC += $(DRIVER_PATH)/bluetooth/rn42.c
endif
endif
ENCODER_ENABLE ?= no
ENCODER_DRIVER ?= quadrature
VALID_ENCODER_DRIVER_TYPES := quadrature custom
ifeq ($(strip $(ENCODER_ENABLE)), yes)
ifeq ($(filter $(ENCODER_DRIVER),$(VALID_ENCODER_DRIVER_TYPES)),)
$(call CATASTROPHIC_ERROR,Invalid ENCODER_DRIVER,ENCODER_DRIVER="$(ENCODER_DRIVER)" is not a valid encoder driver)
endif
SRC += $(QUANTUM_DIR)/encoder.c
OPT_DEFS += -DENCODER_ENABLE
OPT_DEFS += -DENCODER_DRIVER_$(strip $(shell echo $(ENCODER_DRIVER) | tr '[:lower:]' '[:upper:]'))
COMMON_VPATH += $(PLATFORM_PATH)/$(PLATFORM_KEY)/$(DRIVER_DIR)/encoder
COMMON_VPATH += $(DRIVER_PATH)/encoder
ifneq ($(strip $(ENCODER_DRIVER)), custom)
SRC += encoder_$(strip $(ENCODER_DRIVER)).c
endif
ifeq ($(strip $(ENCODER_MAP_ENABLE)), yes)
OPT_DEFS += -DENCODER_MAP_ENABLE
endif
endif
ifeq ($(strip $(DIP_SWITCH_ENABLE)), yes)
ifeq ($(strip $(DIP_SWITCH_MAP_ENABLE)), yes)
OPT_DEFS += -DDIP_SWITCH_MAP_ENABLE
endif
endif
VALID_WS2812_DRIVER_TYPES := bitbang custom i2c pwm spi vendor
WS2812_DRIVER ?= bitbang
ifeq ($(strip $(WS2812_DRIVER_REQUIRED)), yes)
ifeq ($(filter $(WS2812_DRIVER),$(VALID_WS2812_DRIVER_TYPES)),)
$(call CATASTROPHIC_ERROR,Invalid WS2812_DRIVER,WS2812_DRIVER="$(WS2812_DRIVER)" is not a valid WS2812 driver)
endif
OPT_DEFS += -DWS2812_$(strip $(shell echo $(WS2812_DRIVER) | tr '[:lower:]' '[:upper:]'))
SRC += ws2812_$(strip $(WS2812_DRIVER)).c
ifeq ($(strip $(PLATFORM)), CHIBIOS)
ifeq ($(strip $(WS2812_DRIVER)), pwm)
OPT_DEFS += -DSTM32_DMA_REQUIRED=TRUE
endif
endif
# add extra deps
ifeq ($(strip $(WS2812_DRIVER)), i2c)
I2C_DRIVER_REQUIRED = yes
endif
endif
ifeq ($(strip $(APA102_DRIVER_REQUIRED)), yes)
COMMON_VPATH += $(DRIVER_PATH)/led
SRC += apa102.c
endif
ifeq ($(strip $(ANALOG_DRIVER_REQUIRED)), yes)
OPT_DEFS += -DHAL_USE_ADC=TRUE
QUANTUM_LIB_SRC += analog.c
endif
ifeq ($(strip $(I2C_DRIVER_REQUIRED)), yes)
OPT_DEFS += -DHAL_USE_I2C=TRUE
QUANTUM_LIB_SRC += i2c_master.c
endif
ifeq ($(strip $(SPI_DRIVER_REQUIRED)), yes)
OPT_DEFS += -DHAL_USE_SPI=TRUE
QUANTUM_LIB_SRC += spi_master.c
endif
ifeq ($(strip $(UART_DRIVER_REQUIRED)), yes)
ifeq ($(strip $(PLATFORM)), CHIBIOS)
ifneq ($(filter $(MCU_SERIES),RP2040),)
OPT_DEFS += -DHAL_USE_SIO=TRUE
QUANTUM_LIB_SRC += uart_sio.c
else
OPT_DEFS += -DHAL_USE_SERIAL=TRUE
QUANTUM_LIB_SRC += uart_serial.c
endif
else
QUANTUM_LIB_SRC += uart.c
endif
endif
ifeq ($(strip $(ACHORDION_ENABLE)), yes)
OPT_DEFS += -DACHORDION_ENABLE -DPERMISSIVE_HOLD
SRC += $(QUANTUM_DIR)/process_keycode/process_achordion.c
endif

View File

@@ -1,419 +0,0 @@
# Hey Emacs, this is a -*- makefile -*-
#----------------------------------------------------------------------------
# Enable vpath searching for source files only
# Without this, output files, could be read from the wrong .build directories
VPATH_SRC := $(VPATH)
vpath %.c $(VPATH_SRC)
vpath %.h $(VPATH_SRC)
vpath %.cpp $(VPATH_SRC)
vpath %.cc $(VPATH_SRC)
vpath %.hpp $(VPATH_SRC)
vpath %.S $(VPATH_SRC)
VPATH :=
# Helper to return the distinct elements of a list
uniq = $(if $1,$(firstword $1) $(call uniq,$(filter-out $(firstword $1),$1)))
# Convert all SRC to OBJ
define OBJ_FROM_SRC
$(patsubst %.c,$1/%.o,$(patsubst %.cpp,$1/%.o,$(patsubst %.cc,$1/%.o,$(patsubst %.S,$1/%.o,$(patsubst %.clib,$1/%.a,$($1_SRC))))))
endef
$(foreach OUTPUT,$(OUTPUTS),$(eval $(OUTPUT)_OBJ +=$(call OBJ_FROM_SRC,$(OUTPUT))))
# Define a list of all objects
OBJ := $(foreach OUTPUT,$(OUTPUTS),$($(OUTPUT)_OBJ))
NO_LTO_OBJ := $(filter %.a,$(OBJ))
MASTER_OUTPUT := $(firstword $(OUTPUTS))
# Output format. (can be srec, ihex, binary)
FORMAT = ihex
# Optimization level, can be [0, 1, 2, 3, s].
OPT ?= s
# Compiler flag to set the C and C++ language standard level
CSTANDARD = -std=gnu11
CXXSTANDARD = -std=gnu++14
# Speed up recompilations by opt-in usage of ccache
USE_CCACHE ?= no
ifneq ($(USE_CCACHE),no)
CC_PREFIX ?= ccache
endif
#---------------- C Compiler Options ----------------
ifeq ($(strip $(LTO_ENABLE)), yes)
ifeq ($(PLATFORM),ARM_ATSAM)
$(info Enabling LTO on arm_atsam-targeting boards is known to have a high likelihood of failure.)
$(info If unsure, set LTO_ENABLE = no.)
endif
CDEFS += -flto
CDEFS += -DLTO_ENABLE
endif
DEBUG_ENABLE ?= yes
ifeq ($(strip $(SKIP_DEBUG_INFO)),yes)
DEBUG_ENABLE=no
endif
ifeq ($(strip $(DEBUG_ENABLE)),yes)
CFLAGS += -g$(DEBUG)
endif
CFLAGS += $(CDEFS)
CFLAGS += -O$(OPT)
# add color
ifeq ($(COLOR),true)
ifeq ("$(shell echo "int main(){}" | $(CC) -fdiagnostics-color -x c - -o /dev/null 2>&1)", "")
CFLAGS+= -fdiagnostics-color
endif
endif
CFLAGS += -Wall
CFLAGS += -Wstrict-prototypes
ifneq ($(strip $(ALLOW_WARNINGS)), yes)
CFLAGS += -Werror
endif
CFLAGS += $(CSTANDARD)
# This fixes lots of keyboards linking errors but SHOULDN'T BE A FINAL SOLUTION
# Fixing of multiple variable definitions must be made.
CFLAGS += -fcommon
#---------------- C++ Compiler Options ----------------
ifeq ($(strip $(DEBUG_ENABLE)),yes)
CXXFLAGS += -g$(DEBUG)
endif
CXXFLAGS += $(CXXDEFS)
CXXFLAGS += -O$(OPT)
# to suppress "warning: only initialized variables can be placed into program memory area"
CXXFLAGS += -w
CXXFLAGS += -Wall
CXXFLAGS += -Wundef
ifneq ($(strip $(ALLOW_WARNINGS)), yes)
CXXFLAGS += -Werror
endif
#---------------- Assembler Options ----------------
ASFLAGS += $(ADEFS)
ifeq ($(VERBOSE_AS_CMD),yes)
ASFLAGS += -v
endif
#---------------- Linker Options ----------------
CREATE_MAP ?= yes
ifeq ($(CREATE_MAP),yes)
LDFLAGS += -Wl,-Map=$(BUILD_DIR)/$(TARGET).map,--cref
endif
ifeq ($(VERBOSE_LD_CMD),yes)
LDFLAGS += -v
endif
#LDFLAGS += -Wl,--relax
LDFLAGS += $(EXTMEMOPTS)
LDFLAGS += $(patsubst %,-L%,$(EXTRALIBDIRS))
LDFLAGS += -lm
# You can give EXTRALDFLAGS at 'make' command line.
LDFLAGS += $(EXTRALDFLAGS)
#---------------- Assembler Listings ----------------
ADHLNS_ENABLE ?= no
ifeq ($(ADHLNS_ENABLE),yes)
# Avoid "Options to '-Xassembler' do not match" - only specify assembler options at LTO link time
ifeq ($(strip $(LTO_ENABLE)), yes)
LDFLAGS += -Wa,-adhlns=$(BUILD_DIR)/$(TARGET).lst
else
CFLAGS += -Wa,-adhlns=$(@:%.o=%.lst)
CXXFLAGS += -Wa,-adhlns=$(@:%.o=%.lst)
ifeq ($(strip $(DEBUG_ENABLE)),yes)
ASFLAGS = -Wa,-adhlns=$(@:%.o=%.lst),-gstabs,--listing-cont-lines=100
else
ASFLAGS = -Wa,-adhlns=$(@:%.o=%.lst),--listing-cont-lines=100
endif
endif
endif
# Define programs and commands.
SHELL = sh
SED = sed
REMOVE = rm -f
REMOVEDIR = rmdir
COPY = cp
WINSHELL = cmd
SECHO = $(SILENT) || echo
MD5SUM ?= md5sum
ifneq ($(filter Darwin FreeBSD,$(shell uname -s)),)
MD5SUM = md5
endif
# UF2 format settings
# To produce a UF2 file in your build, add to your keyboard's rules.mk:
# FIRMWARE_FORMAT = uf2
UF2CONV = $(TOP_DIR)/util/uf2conv.py
UF2CONV_ARGS ?=
UF2_FAMILY ?= 0x0
# Compiler flags to generate dependency files.
#GENDEPFLAGS = -MMD -MP -MF .dep/$(@F).d
GENDEPFLAGS = -MMD -MP -MF $(patsubst %.o,%.td,$@)
# Combine all necessary flags and optional flags.
# Add target processor to flags.
# You can give extra flags at 'make' command line like: make EXTRAFLAGS=-DFOO=bar
ALL_CFLAGS = $(MCUFLAGS) $(CFLAGS) $(EXTRAFLAGS)
ALL_CXXFLAGS = $(MCUFLAGS) -x c++ $(CXXFLAGS) $(EXTRAFLAGS)
ALL_ASFLAGS = $(MCUFLAGS) -x assembler-with-cpp $(ASFLAGS) $(EXTRAFLAGS)
define NO_LTO
$(patsubst %.a,%.o,$1): NOLTO_CFLAGS += -fno-lto
endef
$(foreach LOBJ, $(NO_LTO_OBJ), $(eval $(call NO_LTO,$(LOBJ))))
MOVE_DEP = mv -f $(patsubst %.o,%.td,$@) $(patsubst %.o,%.d,$@)
# For a ChibiOS build, ensure that the board files have the hook overrides injected
define BOARDSRC_INJECT_HOOKS
$(INTERMEDIATE_OUTPUT)/$(patsubst %.c,%.o,$(patsubst ./%,%,$1)): INIT_HOOK_CFLAGS += -include $(TOP_DIR)/tmk_core/protocol/chibios/init_hooks.h
endef
$(foreach LOBJ, $(BOARDSRC), $(eval $(call BOARDSRC_INJECT_HOOKS,$(LOBJ))))
# Add QMK specific flags
DFU_SUFFIX ?= dfu-suffix
DFU_SUFFIX_ARGS ?=
elf: $(BUILD_DIR)/$(TARGET).elf
hex: $(BUILD_DIR)/$(TARGET).hex
uf2: $(BUILD_DIR)/$(TARGET).uf2
cpfirmware_qmk: $(FIRMWARE_FORMAT)
$(SILENT) || printf "Copying $(TARGET).$(FIRMWARE_FORMAT) to qmk_firmware folder" | $(AWK_CMD)
$(COPY) $(BUILD_DIR)/$(TARGET).$(FIRMWARE_FORMAT) $(TARGET).$(FIRMWARE_FORMAT) && $(PRINT_OK)
eep: $(BUILD_DIR)/$(TARGET).eep
lss: $(BUILD_DIR)/$(TARGET).lss
sym: $(BUILD_DIR)/$(TARGET).sym
LIBNAME=lib$(TARGET).a
lib: $(LIBNAME)
cpfirmware: cpfirmware_qmk
ifneq ($(QMK_USERSPACE),)
cpfirmware: cpfirmware_userspace
cpfirmware_userspace: cpfirmware_qmk
$(SILENT) || printf "Copying $(TARGET).$(FIRMWARE_FORMAT) to userspace folder" | $(AWK_CMD)
$(COPY) $(BUILD_DIR)/$(TARGET).$(FIRMWARE_FORMAT) $(QMK_USERSPACE)/$(TARGET).$(FIRMWARE_FORMAT) && $(PRINT_OK)
endif
# Display size of file, modifying the output so people don't mistakenly grab the hex output
BINARY_SIZE = $(SIZE) --target=$(FORMAT) $(BUILD_DIR)/$(TARGET).hex | $(SED) -e 's/\.build\/.*$$/$(TARGET).$(FIRMWARE_FORMAT)/g'
sizebefore:
@if test -f $(BUILD_DIR)/$(TARGET).hex; then $(SECHO) $(MSG_SIZE_BEFORE); $(SILENT) || $(BINARY_SIZE); \
2>/dev/null; $(SECHO); fi
sizeafter: $(BUILD_DIR)/$(TARGET).hex
@if test -f $(BUILD_DIR)/$(TARGET).hex; then $(SECHO); $(SECHO) $(MSG_SIZE_AFTER); $(SILENT) || $(BINARY_SIZE); \
2>/dev/null; $(SECHO); fi
# Display compiler version information.
gccversion :
@$(SILENT) || $(CC) --version
# Create final output files (.hex, .eep) from ELF output file.
%.hex: %.elf
$(eval CMD=$(HEX) $< $@)
#@$(SILENT) || printf "$(MSG_EXECUTING) '$(CMD)':\n"
@$(SILENT) || printf "$(MSG_FLASH) $@" | $(AWK_CMD)
@$(BUILD_CMD)
%.uf2: %.elf
$(eval CMD=$(HEX) $< $(BUILD_DIR)/$(TARGET).tmp && $(UF2CONV) $(UF2CONV_ARGS) $(BUILD_DIR)/$(TARGET).tmp --output $@ --convert --family $(UF2_FAMILY) >/dev/null 2>&1)
#@$(SILENT) || printf "$(MSG_EXECUTING) '$(CMD)':\n"
@$(SILENT) || printf "$(MSG_UF2) $@" | $(AWK_CMD)
@$(BUILD_CMD)
%.eep: %.elf
$(eval CMD=$(EEP) $< $@ || exit 0)
#@$(SILENT) || printf "$(MSG_EXECUTING) '$(CMD)':\n"
@$(SILENT) || printf "$(MSG_EEPROM) $@" | $(AWK_CMD)
@$(BUILD_CMD)
# Create extended listing file from ELF output file.
%.lss: %.elf
$(eval CMD=$(OBJDUMP) -h -S -z $< > $@)
#@$(SILENT) || printf "$(MSG_EXECUTING) '$(CMD)':\n"
@$(SILENT) || printf "$(MSG_EXTENDED_LISTING) $@" | $(AWK_CMD)
@$(BUILD_CMD)
# Create a symbol table from ELF output file.
%.sym: %.elf
$(eval CMD=$(NM) -n $< > $@ )
#@$(SILENT) || printf "$(MSG_EXECUTING) '$(CMD)':\n"
@$(SILENT) || printf "$(MSG_SYMBOL_TABLE) $@" | $(AWK_CMD)
@$(BUILD_CMD)
%.bin: %.elf
$(eval CMD=$(BIN) $< $@ || exit 0)
#@$(SILENT) || printf "$(MSG_EXECUTING) '$(CMD)':\n"
@$(SILENT) || printf "$(MSG_BIN) $@" | $(AWK_CMD)
@$(BUILD_CMD)
if [ ! -z "$(DFU_SUFFIX_ARGS)" ]; then \
$(DFU_SUFFIX) $(DFU_SUFFIX_ARGS) -a $(BUILD_DIR)/$(TARGET).bin 1>/dev/null ;\
fi
#$(SILENT) || printf "$(MSG_EXECUTING) '$(DFU_SUFFIX) $(DFU_SUFFIX_ARGS) -a $(BUILD_DIR)/$(TARGET).bin 1>/dev/null':\n" ;\
$(COPY) $(BUILD_DIR)/$(TARGET).bin $(TARGET).bin;
BEGIN = gccversion sizebefore
# Link: create ELF output file from object files.
.SECONDARY : $(BUILD_DIR)/$(TARGET).elf
.PRECIOUS : $(OBJ)
# Note the obj.txt depeendency is there to force linking if a source file is deleted
%.elf: $(OBJ) $(MASTER_OUTPUT)/cflags.txt $(MASTER_OUTPUT)/ldflags.txt $(MASTER_OUTPUT)/obj.txt | $(BEGIN)
@$(SILENT) || printf "$(MSG_LINKING) $@" | $(AWK_CMD)
$(eval CMD=MAKE=$(MAKE) $(CC) $(ALL_CFLAGS) $(call uniq,$(OBJ)) --output $@ $(LDFLAGS))
@$(BUILD_CMD)
define GEN_OBJRULE
$1_INCFLAGS := $$(patsubst %,-I%,$$($1_INC))
ifdef $1_CONFIG
$1_CONFIG_FLAGS += $$(patsubst %,-include %,$$($1_CONFIG))
endif
$1_CFLAGS = $$(ALL_CFLAGS) $$($1_DEFS) $$($1_INCFLAGS) $$($1_CONFIG_FLAGS) $$(NOLTO_CFLAGS)
$1_CXXFLAGS = $$(ALL_CXXFLAGS) $$($1_DEFS) $$($1_INCFLAGS) $$($1_CONFIG_FLAGS) $$(NOLTO_CFLAGS)
$1_ASFLAGS = $$(ALL_ASFLAGS) $$($1_DEFS) $$($1_INCFLAGS) $$($1_CONFIG_FLAGS)
# Compile: create object files from C source files.
$1/%.o : %.c $1/%.d $1/cflags.txt $1/compiler.txt | $(BEGIN)
@mkdir -p $$(@D)
@$$(SILENT) || printf "$$(MSG_COMPILING) $$<" | $$(AWK_CMD)
$$(eval CC_EXEC := $$(CC))
ifneq ($$(VERBOSE_C_CMD),)
$$(if $$(filter $$(notdir $$(VERBOSE_C_CMD)),$$(notdir $$<)),$$(eval CC_EXEC += -v))
endif
ifneq ($$(VERBOSE_C_INCLUDE),)
$$(if $$(filter $$(notdir $$(VERBOSE_C_INCLUDE)),$$(notdir $$<)),$$(eval CC_EXEC += -H))
endif
$$(eval CMD := $$(CC_EXEC) -c $$($1_CFLAGS) $$(INIT_HOOK_CFLAGS) $$(GENDEPFLAGS) $$< -o $$@ && $$(MOVE_DEP))
@$$(BUILD_CMD)
ifneq ($$(DUMP_C_MACROS),)
$$(eval CMD := $$(CC) -E -dM $$($1_CFLAGS) $$(INIT_HOOK_CFLAGS) $$(GENDEPFLAGS) $$<)
@$$(if $$(filter $$(notdir $$(DUMP_C_MACROS)),$$(notdir $$<)),$$(BUILD_CMD))
endif
# Compile: create object files from C++ source files.
$1/%.o : %.cpp $1/%.d $1/cxxflags.txt $1/compiler.txt | $(BEGIN)
@mkdir -p $$(@D)
@$$(SILENT) || printf "$$(MSG_COMPILING_CXX) $$<" | $$(AWK_CMD)
$$(eval CMD=$$(CC) -c $$($1_CXXFLAGS) $$(INIT_HOOK_CFLAGS) $$(GENDEPFLAGS) $$< -o $$@ && $$(MOVE_DEP))
@$$(BUILD_CMD)
$1/%.o : %.cc $1/%.d $1/cxxflags.txt $1/compiler.txt | $(BEGIN)
@mkdir -p $$(@D)
@$$(SILENT) || printf "$$(MSG_COMPILING_CXX) $$<" | $$(AWK_CMD)
$$(eval CMD=$$(CC) -c $$($1_CXXFLAGS) $$(INIT_HOOK_CFLAGS) $$(GENDEPFLAGS) $$< -o $$@ && $$(MOVE_DEP))
@$$(BUILD_CMD)
# Assemble: create object files from assembler source files.
$1/%.o : %.S $1/asflags.txt $1/compiler.txt | $(BEGIN)
@mkdir -p $$(@D)
@$(SILENT) || printf "$$(MSG_ASSEMBLING) $$<" | $$(AWK_CMD)
$$(eval CMD=$$(CC) -c $$($1_ASFLAGS) $$< -o $$@)
@$$(BUILD_CMD)
$1/%.a : $1/%.o
@mkdir -p $$(@D)
@$(SILENT) || printf "Archiving: $$<" | $$(AWK_CMD)
$$(eval CMD=$$(AR) rcs $$@ $$<)
@$$(BUILD_CMD)
$1/force:
$1/cflags.txt: $1/force
echo '$$($1_CFLAGS)' | cmp -s - $$@ || echo '$$($1_CFLAGS)' > $$@
$1/cxxflags.txt: $1/force
echo '$$($1_CXXFLAGS)' | cmp -s - $$@ || echo '$$($1_CXXFLAGS)' > $$@
$1/asflags.txt: $1/force
echo '$$($1_ASFLAGS)' | cmp -s - $$@ || echo '$$($1_ASFLAGS)' > $$@
$1/compiler.txt: $1/force
test -f $$@ || touch $$@
$$(CC) --version | cmp -s - $$@ || $$(CC) --version > $$@
endef
.PRECIOUS: $(MASTER_OUTPUT)/obj.txt
$(MASTER_OUTPUT)/obj.txt: $(MASTER_OUTPUT)/force
echo '$(OBJ)' | cmp -s - $@ || echo '$(OBJ)' > $@
.PRECIOUS: $(MASTER_OUTPUT)/ldflags.txt
$(MASTER_OUTPUT)/ldflags.txt: $(MASTER_OUTPUT)/force
echo '$(LDFLAGS)' | cmp -s - $@ || echo '$(LDFLAGS)' > $@
# We have to use static rules for the .d files for some reason
DEPS = $(patsubst %.o,%.d,$(patsubst %.a,%.o,$(OBJ)))
# Keep the .d files
.PRECIOUS: $(DEPS)
# Empty rule to force recompilation if the .d file is missing
$(DEPS):
$(foreach OUTPUT,$(OUTPUTS),$(eval $(call GEN_OBJRULE,$(OUTPUT))))
# Create preprocessed source for use in sending a bug report.
%.i : %.c | $(BEGIN)
$(CC) -E -mmcu=$(MCU) $(CFLAGS) $< -o $@
# Target: clean project.
clean:
$(foreach OUTPUT,$(OUTPUTS), $(REMOVE) -r $(OUTPUT) 2>/dev/null)
$(REMOVE) $(BUILD_DIR)/$(TARGET).*
show_path:
@echo VPATH=$(VPATH)
@echo SRC=$(SRC)
@echo OBJ=$(OBJ)
dump_vars: ERROR_IF_EMPTY=""
dump_vars: ERROR_IF_NONBOOL=""
dump_vars: ERROR_IF_UNSET=""
dump_vars: CATASTROPHIC_ERROR=""
dump_vars:
@$(foreach V,$(sort $(.VARIABLES)),$(if $(filter-out environment% default automatic,$(origin $V)),$(info $V=$($V))))
objs-size:
for i in $(OBJ); do echo $$i; done | sort | xargs $(SIZE)
# size check optionally implemented in its platform.mk
check-size:
check-md5:
$(MD5SUM) $(BUILD_DIR)/$(TARGET).$(FIRMWARE_FORMAT)
# Create build directory
$(shell mkdir -p $(BUILD_DIR) 2>/dev/null)
# Create object files directory
$(eval $(foreach OUTPUT,$(OUTPUTS),$(shell mkdir -p $(OUTPUT) 2>/dev/null)))
# Include the dependency files.
-include $(patsubst %.o,%.d,$(patsubst %.a,%.o,$(OBJ)))
# Listing of phony targets.
.PHONY : all dump_vars finish sizebefore sizeafter qmkversion \
gccversion build elf hex uf2 eep lss sym coff extcoff \
clean clean_list debug gdb-config show_path \
program teensy dfu dfu-ee dfu-start \
flash dfu-split-left dfu-split-right \
avrdude-split-left avrdude-split-right \
avrdude-loop usbasp

View File

@@ -1,49 +0,0 @@
# Note for new boards -- CTPC and CONVERT_TO_PROTON_C are deprecated terms
# and should not be replicated for new boards. These will be removed from
# documentation as well as existing keymaps in due course.
ifneq ($(findstring yes, $(CTPC)$(CONVERT_TO_PROTON_C)),)
$(call CATASTROPHIC_ERROR,The `CONVERT_TO_PROTON_C` and `CTPC` options are now deprecated. `CONVERT_TO=proton_c` should be used instead.)
endif
ifneq (,$(filter $(MCU),atmega32u4))
# TODO: opt in rather than assume everything uses a pro micro
PIN_COMPATIBLE ?= promicro
endif
# Remove whitespace from any rule.mk provided vars
# - env cannot be overwritten but cannot have whitespace anyway
CONVERT_TO:=$(strip $(CONVERT_TO))
ifneq ($(CONVERT_TO),)
# stash so we can overwrite env provided vars if needed
ACTIVE_CONVERTER=$(CONVERT_TO)
ifeq ($(PIN_COMPATIBLE),)
$(call CATASTROPHIC_ERROR,Converting to '$(CONVERT_TO)' not possible!)
endif
# glob to search each platfrorm and/or check for valid converter
CONVERTER := $(wildcard $(PLATFORM_PATH)/*/converters/$(PIN_COMPATIBLE)_to_$(CONVERT_TO)/)
ifeq ($(CONVERTER),)
$(call CATASTROPHIC_ERROR,Converting from '$(PIN_COMPATIBLE)' to '$(CONVERT_TO)' not possible!)
endif
-include $(CONVERTER)/pre_converter.mk
PLATFORM_KEY = $(shell echo $(CONVERTER) | cut -d "/" -f2)
# force setting as value can be from environment
override TARGET := $(TARGET)_$(CONVERT_TO)
# Configure any defaults
OPT_DEFS += -DCONVERT_TO_$(shell echo $(CONVERT_TO) | tr '[:lower:]' '[:upper:]')
OPT_DEFS += -DCONVERTER_TARGET=\"$(CONVERT_TO)\"
OPT_DEFS += -DCONVERTER_ENABLED
VPATH += $(CONVERTER)
# Configure for "alias" - worst case it produces an idential define
OPT_DEFS += -DCONVERT_TO_$(shell echo $(ACTIVE_CONVERTER) | tr '[:lower:]' '[:upper:]')
# Finally run any converter specific logic
include $(CONVERTER)/converter.mk
endif

View File

@@ -1,27 +0,0 @@
# Unconditionally disable features that a keyboard advertises it doesn't support
FEATURE_NAMES :=
FEATURE_NAMES += AUDIO
FEATURE_NAMES += BACKLIGHT
FEATURE_NAMES += BLUETOOTH
FEATURE_NAMES += DIP_SWITCH
FEATURE_NAMES += DYNAMIC_KEYMAP
FEATURE_NAMES += ENCODER
FEATURE_NAMES += HAPTIC
FEATURE_NAMES += HD44780
FEATURE_NAMES += IOS_DEVICE
FEATURE_NAMES += LCD_BACKLIGHT
FEATURE_NAMES += LCD
FEATURE_NAMES += OLED
FEATURE_NAMES += POINTING_DEVICE
FEATURE_NAMES += PS2_MOUSE
FEATURE_NAMES += RGBLIGHT
FEATURE_NAMES += RGB_MATRIX
FEATURE_NAMES += SLEEP_LED
FEATURE_NAMES += STENO
FEATURE_NAMES += SWAP_HANDS
FEATURE_NAMES += WATCHDOG
FEATURE_NAMES += XT
$(foreach AFEATURE,$(FEATURE_NAMES),\
$(if $(filter $($(AFEATURE)_SUPPORTED),no),$(eval $(AFEATURE)_ENABLE=no)))

View File

@@ -1,5 +0,0 @@
node_modules
.vitepress/cache
.vitepress/.temp
.vitepress/dist
docs

View File

@@ -1,51 +0,0 @@
import { defineConfig } from "vitepress";
import { tabsMarkdownPlugin } from "vitepress-plugin-tabs";
import sidebar from "../../../docs/_sidebar.json";
// https://vitepress.dev/reference/site-config
export default defineConfig(({ mode }) => {
const prod = mode === "production";
return {
title: "QMK Firmware",
description: "Documentation for QMK Firmware",
srcDir: prod ? "docs" : "../../docs",
outDir: "../../.build/docs",
cleanUrls: true,
markdown: {
config(md) {
md.use(tabsMarkdownPlugin);
},
},
vite: {
resolve: {
preserveSymlinks: true,
},
},
themeConfig: {
// https://vitepress.dev/reference/default-theme-config
logo: {
light: "/qmk-logo-light.svg",
dark: "/qmk-logo-dark.svg",
},
title: 'QMK Firmware',
nav: [{ text: "Home", link: "./" }],
search: {
provider: "local",
},
sidebar: sidebar,
socialLinks: [
{ icon: { svg: '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 50 50" width="50px" height="50px"><path d="M 29 3 C 28.0625 3 27.164063 3.382813 26.5 4 C 25.835938 4.617188 25.363281 5.433594 25 6.40625 C 24.355469 8.140625 24.085938 10.394531 24.03125 13.03125 C 19.234375 13.179688 14.820313 14.421875 11.28125 16.46875 C 10.214844 15.46875 8.855469 14.96875 7.5 14.96875 C 6.089844 14.96875 4.675781 15.511719 3.59375 16.59375 C 1.425781 18.761719 1.425781 22.238281 3.59375 24.40625 L 3.84375 24.65625 C 3.3125 26.035156 3 27.488281 3 29 C 3 33.527344 5.566406 37.585938 9.5625 40.4375 C 13.558594 43.289063 19.007813 45 25 45 C 30.992188 45 36.441406 43.289063 40.4375 40.4375 C 44.433594 37.585938 47 33.527344 47 29 C 47 27.488281 46.6875 26.035156 46.15625 24.65625 L 46.40625 24.40625 C 48.574219 22.238281 48.574219 18.761719 46.40625 16.59375 C 45.324219 15.511719 43.910156 14.96875 42.5 14.96875 C 41.144531 14.96875 39.785156 15.46875 38.71875 16.46875 C 35.195313 14.433594 30.800781 13.191406 26.03125 13.03125 C 26.09375 10.546875 26.363281 8.46875 26.875 7.09375 C 27.164063 6.316406 27.527344 5.757813 27.875 5.4375 C 28.222656 5.117188 28.539063 5 29 5 C 29.460938 5 29.683594 5.125 30.03125 5.40625 C 30.378906 5.6875 30.785156 6.148438 31.3125 6.6875 C 32.253906 7.652344 33.695313 8.714844 36.09375 8.9375 C 36.539063 11.238281 38.574219 13 41 13 C 43.75 13 46 10.75 46 8 C 46 5.25 43.75 3 41 3 C 38.605469 3 36.574219 4.710938 36.09375 6.96875 C 34.3125 6.796875 33.527344 6.109375 32.75 5.3125 C 32.300781 4.851563 31.886719 4.3125 31.3125 3.84375 C 30.738281 3.375 29.9375 3 29 3 Z M 41 5 C 42.667969 5 44 6.332031 44 8 C 44 9.667969 42.667969 11 41 11 C 39.332031 11 38 9.667969 38 8 C 38 6.332031 39.332031 5 41 5 Z M 25 15 C 30.609375 15 35.675781 16.613281 39.28125 19.1875 C 42.886719 21.761719 45 25.226563 45 29 C 45 32.773438 42.886719 36.238281 39.28125 38.8125 C 35.675781 41.386719 30.609375 43 25 43 C 19.390625 43 14.324219 41.386719 10.71875 38.8125 C 7.113281 36.238281 5 32.773438 5 29 C 5 25.226563 7.113281 21.761719 10.71875 19.1875 C 14.324219 16.613281 19.390625 15 25 15 Z M 7.5 16.9375 C 8.203125 16.9375 8.914063 17.148438 9.53125 17.59375 C 7.527344 19.03125 5.886719 20.769531 4.75 22.71875 C 3.582031 21.296875 3.660156 19.339844 5 18 C 5.714844 17.285156 6.609375 16.9375 7.5 16.9375 Z M 42.5 16.9375 C 43.390625 16.9375 44.285156 17.285156 45 18 C 46.339844 19.339844 46.417969 21.296875 45.25 22.71875 C 44.113281 20.769531 42.472656 19.03125 40.46875 17.59375 C 41.085938 17.148438 41.796875 16.9375 42.5 16.9375 Z M 17 22 C 14.800781 22 13 23.800781 13 26 C 13 28.199219 14.800781 30 17 30 C 19.199219 30 21 28.199219 21 26 C 21 23.800781 19.199219 22 17 22 Z M 33 22 C 30.800781 22 29 23.800781 29 26 C 29 28.199219 30.800781 30 33 30 C 35.199219 30 37 28.199219 37 26 C 37 23.800781 35.199219 22 33 22 Z M 17 24 C 18.117188 24 19 24.882813 19 26 C 19 27.117188 18.117188 28 17 28 C 15.882813 28 15 27.117188 15 26 C 15 24.882813 15.882813 24 17 24 Z M 33 24 C 34.117188 24 35 24.882813 35 26 C 35 27.117188 34.117188 28 33 28 C 31.882813 28 31 27.117188 31 26 C 31 24.882813 31.882813 24 33 24 Z M 34.15625 33.84375 C 34.101563 33.851563 34.050781 33.859375 34 33.875 C 33.683594 33.9375 33.417969 34.144531 33.28125 34.4375 C 33.28125 34.4375 32.757813 35.164063 31.4375 36 C 30.117188 36.835938 28.058594 37.6875 25 37.6875 C 21.941406 37.6875 19.882813 36.835938 18.5625 36 C 17.242188 35.164063 16.71875 34.4375 16.71875 34.4375 C 16.492188 34.082031 16.066406 33.90625 15.65625 34 C 15.332031 34.082031 15.070313 34.316406 14.957031 34.632813 C 14.84375 34.945313 14.894531 35.292969 15.09375 35.5625 C 15.09375 35.5625 15.863281 36.671875 17.46875 37.6875 C 19.074219 38.703125 21.558594 39.6875 25 39.6875 C 28.441406 39.6875 30.925781 38.703125 32.53125 37.6875 C 34.136719 36.671875 34.90625 35.5625 34.90625 35.5625 C 35.207031 35.273438 35.296875 34.824219 35.128906 34.441406 C 34.960938 34.058594 34.574219 33.820313 34.15625 33.84375 Z"/></svg>' }, link: "https://reddit.com/r/olkb" },
{ icon: "discord", link: "https://discord.gg/qmk" },
{ icon: "github", link: "https://github.com/qmk/qmk_firmware" },
],
}
};
});

View File

@@ -1,29 +0,0 @@
<script setup>
import DefaultTheme from 'vitepress/theme'
import { useRouter } from 'vitepress'
import { onBeforeMount } from 'vue';
import aliases from "../../../../docs/_aliases.json";
const router = useRouter()
onBeforeMount(async () => {
// Convert from docsify-style to vitepress-style URLs
let newUrl = window.location.href.replace(/\/#\//, '/').replace(/\?id=/, '#');
// Convert any aliases
let testUrl = new URL(newUrl);
while (testUrl.pathname in aliases) {
testUrl.pathname = aliases[testUrl.pathname];
}
newUrl = testUrl.toString();
// Redirect if required
if (newUrl != window.location.href) {
window.history.replaceState({}, '', newUrl);
await router.go(newUrl);
}
});
</script>
<template>
<DefaultTheme.Layout/>
</template>

View File

@@ -1,19 +0,0 @@
/* Override <kbd> as vitepress doesn't put them with borders */
kbd {
border: 1px solid var(--vp-c-text-1);
border-radius: 5px;
margin: 0.2em;
padding: 0.2em;
}
:root {
--vp-nav-logo-height: 32px;
--vp-layout-max-width: calc(98% + 64px);
--vp-sidebar-width: 300px;
}
.VPDoc.has-aside .content-container {
max-width: unset !important;
}

View File

@@ -1,13 +0,0 @@
import type { Theme } from 'vitepress'
import DefaultTheme from 'vitepress/theme'
import { enhanceAppWithTabs } from 'vitepress-plugin-tabs/client'
import QMKLayout from './QMKLayout.vue'
import './custom.css'
export default {
extends: DefaultTheme,
Layout: QMKLayout,
enhanceApp({ app }) {
enhanceAppWithTabs(app)
}
} satisfies Theme

View File

@@ -1,6 +0,0 @@
#!/usr/bin/env bash
cd "$(dirname "$(realpath "${BASH_SOURCE[0]}")")"
yarn install
[[ -e docs ]] || ln -sf ../../docs docs
DEBUG='vitepress:*,vite:*' yarn run docs:build

View File

@@ -1,14 +0,0 @@
{
"license": "GPL-2.0-or-later",
"devDependencies": {
"vite": "^5.2.10",
"vitepress": "^1.1.0",
"vitepress-plugin-tabs": "^0.5.0",
"vue": "^3.4.24"
},
"scripts": {
"docs:dev": "vitepress dev --host 0.0.0.0",
"docs:build": "vitepress build",
"docs:preview": "vitepress preview --host 0.0.0.0"
}
}

View File

@@ -1,5 +0,0 @@
#!/usr/bin/env bash
cd "$(dirname "$(realpath "${BASH_SOURCE[0]}")")"
yarn install
DEBUG='vitepress:*,vite:*' yarn run docs:dev

View File

@@ -1,797 +0,0 @@
# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
# yarn lockfile v1
"@algolia/autocomplete-core@1.9.3":
version "1.9.3"
resolved "https://registry.yarnpkg.com/@algolia/autocomplete-core/-/autocomplete-core-1.9.3.tgz#1d56482a768c33aae0868c8533049e02e8961be7"
integrity sha512-009HdfugtGCdC4JdXUbVJClA0q0zh24yyePn+KUGk3rP7j8FEe/m5Yo/z65gn6nP/cM39PxpzqKrL7A6fP6PPw==
dependencies:
"@algolia/autocomplete-plugin-algolia-insights" "1.9.3"
"@algolia/autocomplete-shared" "1.9.3"
"@algolia/autocomplete-plugin-algolia-insights@1.9.3":
version "1.9.3"
resolved "https://registry.yarnpkg.com/@algolia/autocomplete-plugin-algolia-insights/-/autocomplete-plugin-algolia-insights-1.9.3.tgz#9b7f8641052c8ead6d66c1623d444cbe19dde587"
integrity sha512-a/yTUkcO/Vyy+JffmAnTWbr4/90cLzw+CC3bRbhnULr/EM0fGNvM13oQQ14f2moLMcVDyAx/leczLlAOovhSZg==
dependencies:
"@algolia/autocomplete-shared" "1.9.3"
"@algolia/autocomplete-preset-algolia@1.9.3":
version "1.9.3"
resolved "https://registry.yarnpkg.com/@algolia/autocomplete-preset-algolia/-/autocomplete-preset-algolia-1.9.3.tgz#64cca4a4304cfcad2cf730e83067e0c1b2f485da"
integrity sha512-d4qlt6YmrLMYy95n5TB52wtNDr6EgAIPH81dvvvW8UmuWRgxEtY0NJiPwl/h95JtG2vmRM804M0DSwMCNZlzRA==
dependencies:
"@algolia/autocomplete-shared" "1.9.3"
"@algolia/autocomplete-shared@1.9.3":
version "1.9.3"
resolved "https://registry.yarnpkg.com/@algolia/autocomplete-shared/-/autocomplete-shared-1.9.3.tgz#2e22e830d36f0a9cf2c0ccd3c7f6d59435b77dfa"
integrity sha512-Wnm9E4Ye6Rl6sTTqjoymD+l8DjSTHsHboVRYrKgEt8Q7UHm9nYbqhN/i0fhUYA3OAEH7WA8x3jfpnmJm3rKvaQ==
"@algolia/cache-browser-local-storage@4.23.3":
version "4.23.3"
resolved "https://registry.yarnpkg.com/@algolia/cache-browser-local-storage/-/cache-browser-local-storage-4.23.3.tgz#0cc26b96085e1115dac5fcb9d826651ba57faabc"
integrity sha512-vRHXYCpPlTDE7i6UOy2xE03zHF2C8MEFjPN2v7fRbqVpcOvAUQK81x3Kc21xyb5aSIpYCjWCZbYZuz8Glyzyyg==
dependencies:
"@algolia/cache-common" "4.23.3"
"@algolia/cache-common@4.23.3":
version "4.23.3"
resolved "https://registry.yarnpkg.com/@algolia/cache-common/-/cache-common-4.23.3.tgz#3bec79092d512a96c9bfbdeec7cff4ad36367166"
integrity sha512-h9XcNI6lxYStaw32pHpB1TMm0RuxphF+Ik4o7tcQiodEdpKK+wKufY6QXtba7t3k8eseirEMVB83uFFF3Nu54A==
"@algolia/cache-in-memory@4.23.3":
version "4.23.3"
resolved "https://registry.yarnpkg.com/@algolia/cache-in-memory/-/cache-in-memory-4.23.3.tgz#3945f87cd21ffa2bec23890c85305b6b11192423"
integrity sha512-yvpbuUXg/+0rbcagxNT7un0eo3czx2Uf0y4eiR4z4SD7SiptwYTpbuS0IHxcLHG3lq22ukx1T6Kjtk/rT+mqNg==
dependencies:
"@algolia/cache-common" "4.23.3"
"@algolia/client-account@4.23.3":
version "4.23.3"
resolved "https://registry.yarnpkg.com/@algolia/client-account/-/client-account-4.23.3.tgz#8751bbf636e6741c95e7c778488dee3ee430ac6f"
integrity sha512-hpa6S5d7iQmretHHF40QGq6hz0anWEHGlULcTIT9tbUssWUriN9AUXIFQ8Ei4w9azD0hc1rUok9/DeQQobhQMA==
dependencies:
"@algolia/client-common" "4.23.3"
"@algolia/client-search" "4.23.3"
"@algolia/transporter" "4.23.3"
"@algolia/client-analytics@4.23.3":
version "4.23.3"
resolved "https://registry.yarnpkg.com/@algolia/client-analytics/-/client-analytics-4.23.3.tgz#f88710885278fe6fb6964384af59004a5a6f161d"
integrity sha512-LBsEARGS9cj8VkTAVEZphjxTjMVCci+zIIiRhpFun9jGDUlS1XmhCW7CTrnaWeIuCQS/2iPyRqSy1nXPjcBLRA==
dependencies:
"@algolia/client-common" "4.23.3"
"@algolia/client-search" "4.23.3"
"@algolia/requester-common" "4.23.3"
"@algolia/transporter" "4.23.3"
"@algolia/client-common@4.23.3":
version "4.23.3"
resolved "https://registry.yarnpkg.com/@algolia/client-common/-/client-common-4.23.3.tgz#891116aa0db75055a7ecc107649f7f0965774704"
integrity sha512-l6EiPxdAlg8CYhroqS5ybfIczsGUIAC47slLPOMDeKSVXYG1n0qGiz4RjAHLw2aD0xzh2EXZ7aRguPfz7UKDKw==
dependencies:
"@algolia/requester-common" "4.23.3"
"@algolia/transporter" "4.23.3"
"@algolia/client-personalization@4.23.3":
version "4.23.3"
resolved "https://registry.yarnpkg.com/@algolia/client-personalization/-/client-personalization-4.23.3.tgz#35fa8e5699b0295fbc400a8eb211dc711e5909db"
integrity sha512-3E3yF3Ocr1tB/xOZiuC3doHQBQ2zu2MPTYZ0d4lpfWads2WTKG7ZzmGnsHmm63RflvDeLK/UVx7j2b3QuwKQ2g==
dependencies:
"@algolia/client-common" "4.23.3"
"@algolia/requester-common" "4.23.3"
"@algolia/transporter" "4.23.3"
"@algolia/client-search@4.23.3":
version "4.23.3"
resolved "https://registry.yarnpkg.com/@algolia/client-search/-/client-search-4.23.3.tgz#a3486e6af13a231ec4ab43a915a1f318787b937f"
integrity sha512-P4VAKFHqU0wx9O+q29Q8YVuaowaZ5EM77rxfmGnkHUJggh28useXQdopokgwMeYw2XUht49WX5RcTQ40rZIabw==
dependencies:
"@algolia/client-common" "4.23.3"
"@algolia/requester-common" "4.23.3"
"@algolia/transporter" "4.23.3"
"@algolia/logger-common@4.23.3":
version "4.23.3"
resolved "https://registry.yarnpkg.com/@algolia/logger-common/-/logger-common-4.23.3.tgz#35c6d833cbf41e853a4f36ba37c6e5864920bfe9"
integrity sha512-y9kBtmJwiZ9ZZ+1Ek66P0M68mHQzKRxkW5kAAXYN/rdzgDN0d2COsViEFufxJ0pb45K4FRcfC7+33YB4BLrZ+g==
"@algolia/logger-console@4.23.3":
version "4.23.3"
resolved "https://registry.yarnpkg.com/@algolia/logger-console/-/logger-console-4.23.3.tgz#30f916781826c4db5f51fcd9a8a264a06e136985"
integrity sha512-8xoiseoWDKuCVnWP8jHthgaeobDLolh00KJAdMe9XPrWPuf1by732jSpgy2BlsLTaT9m32pHI8CRfrOqQzHv3A==
dependencies:
"@algolia/logger-common" "4.23.3"
"@algolia/recommend@4.23.3":
version "4.23.3"
resolved "https://registry.yarnpkg.com/@algolia/recommend/-/recommend-4.23.3.tgz#53d4f194d22d9c72dc05f3f7514c5878f87c5890"
integrity sha512-9fK4nXZF0bFkdcLBRDexsnGzVmu4TSYZqxdpgBW2tEyfuSSY54D4qSRkLmNkrrz4YFvdh2GM1gA8vSsnZPR73w==
dependencies:
"@algolia/cache-browser-local-storage" "4.23.3"
"@algolia/cache-common" "4.23.3"
"@algolia/cache-in-memory" "4.23.3"
"@algolia/client-common" "4.23.3"
"@algolia/client-search" "4.23.3"
"@algolia/logger-common" "4.23.3"
"@algolia/logger-console" "4.23.3"
"@algolia/requester-browser-xhr" "4.23.3"
"@algolia/requester-common" "4.23.3"
"@algolia/requester-node-http" "4.23.3"
"@algolia/transporter" "4.23.3"
"@algolia/requester-browser-xhr@4.23.3":
version "4.23.3"
resolved "https://registry.yarnpkg.com/@algolia/requester-browser-xhr/-/requester-browser-xhr-4.23.3.tgz#9e47e76f60d540acc8b27b4ebc7a80d1b41938b9"
integrity sha512-jDWGIQ96BhXbmONAQsasIpTYWslyjkiGu0Quydjlowe+ciqySpiDUrJHERIRfELE5+wFc7hc1Q5hqjGoV7yghw==
dependencies:
"@algolia/requester-common" "4.23.3"
"@algolia/requester-common@4.23.3":
version "4.23.3"
resolved "https://registry.yarnpkg.com/@algolia/requester-common/-/requester-common-4.23.3.tgz#7dbae896e41adfaaf1d1fa5f317f83a99afb04b3"
integrity sha512-xloIdr/bedtYEGcXCiF2muajyvRhwop4cMZo+K2qzNht0CMzlRkm8YsDdj5IaBhshqfgmBb3rTg4sL4/PpvLYw==
"@algolia/requester-node-http@4.23.3":
version "4.23.3"
resolved "https://registry.yarnpkg.com/@algolia/requester-node-http/-/requester-node-http-4.23.3.tgz#c9f94a5cb96a15f48cea338ab6ef16bbd0ff989f"
integrity sha512-zgu++8Uj03IWDEJM3fuNl34s746JnZOWn1Uz5taV1dFyJhVM/kTNw9Ik7YJWiUNHJQXcaD8IXD1eCb0nq/aByA==
dependencies:
"@algolia/requester-common" "4.23.3"
"@algolia/transporter@4.23.3":
version "4.23.3"
resolved "https://registry.yarnpkg.com/@algolia/transporter/-/transporter-4.23.3.tgz#545b045b67db3850ddf0bbecbc6c84ff1f3398b7"
integrity sha512-Wjl5gttqnf/gQKJA+dafnD0Y6Yw97yvfY8R9h0dQltX1GXTgNs1zWgvtWW0tHl1EgMdhAyw189uWiZMnL3QebQ==
dependencies:
"@algolia/cache-common" "4.23.3"
"@algolia/logger-common" "4.23.3"
"@algolia/requester-common" "4.23.3"
"@babel/parser@^7.24.4":
version "7.24.4"
resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.24.4.tgz#234487a110d89ad5a3ed4a8a566c36b9453e8c88"
integrity sha512-zTvEBcghmeBma9QIGunWevvBAp4/Qu9Bdq+2k0Ot4fVMD6v3dsC9WOcRSKk7tRRyBM/53yKMJko9xOatGQAwSg==
"@docsearch/css@3.6.0", "@docsearch/css@^3.6.0":
version "3.6.0"
resolved "https://registry.yarnpkg.com/@docsearch/css/-/css-3.6.0.tgz#0e9f56f704b3a34d044d15fd9962ebc1536ba4fb"
integrity sha512-+sbxb71sWre+PwDK7X2T8+bhS6clcVMLwBPznX45Qu6opJcgRjAp7gYSDzVFp187J+feSj5dNBN1mJoi6ckkUQ==
"@docsearch/js@^3.6.0":
version "3.6.0"
resolved "https://registry.yarnpkg.com/@docsearch/js/-/js-3.6.0.tgz#f9e46943449b9092d874944f7a80bcc071004cfb"
integrity sha512-QujhqINEElrkIfKwyyyTfbsfMAYCkylInLYMRqHy7PHc8xTBQCow73tlo/Kc7oIwBrCLf0P3YhjlOeV4v8hevQ==
dependencies:
"@docsearch/react" "3.6.0"
preact "^10.0.0"
"@docsearch/react@3.6.0":
version "3.6.0"
resolved "https://registry.yarnpkg.com/@docsearch/react/-/react-3.6.0.tgz#b4f25228ecb7fc473741aefac592121e86dd2958"
integrity sha512-HUFut4ztcVNmqy9gp/wxNbC7pTOHhgVVkHVGCACTuLhUKUhKAF9KYHJtMiLUJxEqiFLQiuri1fWF8zqwM/cu1w==
dependencies:
"@algolia/autocomplete-core" "1.9.3"
"@algolia/autocomplete-preset-algolia" "1.9.3"
"@docsearch/css" "3.6.0"
algoliasearch "^4.19.1"
"@esbuild/aix-ppc64@0.20.2":
version "0.20.2"
resolved "https://registry.yarnpkg.com/@esbuild/aix-ppc64/-/aix-ppc64-0.20.2.tgz#a70f4ac11c6a1dfc18b8bbb13284155d933b9537"
integrity sha512-D+EBOJHXdNZcLJRBkhENNG8Wji2kgc9AZ9KiPr1JuZjsNtyHzrsfLRrY0tk2H2aoFu6RANO1y1iPPUCDYWkb5g==
"@esbuild/android-arm64@0.20.2":
version "0.20.2"
resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.20.2.tgz#db1c9202a5bc92ea04c7b6840f1bbe09ebf9e6b9"
integrity sha512-mRzjLacRtl/tWU0SvD8lUEwb61yP9cqQo6noDZP/O8VkwafSYwZ4yWy24kan8jE/IMERpYncRt2dw438LP3Xmg==
"@esbuild/android-arm@0.20.2":
version "0.20.2"
resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.20.2.tgz#3b488c49aee9d491c2c8f98a909b785870d6e995"
integrity sha512-t98Ra6pw2VaDhqNWO2Oph2LXbz/EJcnLmKLGBJwEwXX/JAN83Fym1rU8l0JUWK6HkIbWONCSSatf4sf2NBRx/w==
"@esbuild/android-x64@0.20.2":
version "0.20.2"
resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.20.2.tgz#3b1628029e5576249d2b2d766696e50768449f98"
integrity sha512-btzExgV+/lMGDDa194CcUQm53ncxzeBrWJcncOBxuC6ndBkKxnHdFJn86mCIgTELsooUmwUm9FkhSp5HYu00Rg==
"@esbuild/darwin-arm64@0.20.2":
version "0.20.2"
resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.20.2.tgz#6e8517a045ddd86ae30c6608c8475ebc0c4000bb"
integrity sha512-4J6IRT+10J3aJH3l1yzEg9y3wkTDgDk7TSDFX+wKFiWjqWp/iCfLIYzGyasx9l0SAFPT1HwSCR+0w/h1ES/MjA==
"@esbuild/darwin-x64@0.20.2":
version "0.20.2"
resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.20.2.tgz#90ed098e1f9dd8a9381695b207e1cff45540a0d0"
integrity sha512-tBcXp9KNphnNH0dfhv8KYkZhjc+H3XBkF5DKtswJblV7KlT9EI2+jeA8DgBjp908WEuYll6pF+UStUCfEpdysA==
"@esbuild/freebsd-arm64@0.20.2":
version "0.20.2"
resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.20.2.tgz#d71502d1ee89a1130327e890364666c760a2a911"
integrity sha512-d3qI41G4SuLiCGCFGUrKsSeTXyWG6yem1KcGZVS+3FYlYhtNoNgYrWcvkOoaqMhwXSMrZRl69ArHsGJ9mYdbbw==
"@esbuild/freebsd-x64@0.20.2":
version "0.20.2"
resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.20.2.tgz#aa5ea58d9c1dd9af688b8b6f63ef0d3d60cea53c"
integrity sha512-d+DipyvHRuqEeM5zDivKV1KuXn9WeRX6vqSqIDgwIfPQtwMP4jaDsQsDncjTDDsExT4lR/91OLjRo8bmC1e+Cw==
"@esbuild/linux-arm64@0.20.2":
version "0.20.2"
resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.20.2.tgz#055b63725df678379b0f6db9d0fa85463755b2e5"
integrity sha512-9pb6rBjGvTFNira2FLIWqDk/uaf42sSyLE8j1rnUpuzsODBq7FvpwHYZxQ/It/8b+QOS1RYfqgGFNLRI+qlq2A==
"@esbuild/linux-arm@0.20.2":
version "0.20.2"
resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.20.2.tgz#76b3b98cb1f87936fbc37f073efabad49dcd889c"
integrity sha512-VhLPeR8HTMPccbuWWcEUD1Az68TqaTYyj6nfE4QByZIQEQVWBB8vup8PpR7y1QHL3CpcF6xd5WVBU/+SBEvGTg==
"@esbuild/linux-ia32@0.20.2":
version "0.20.2"
resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.20.2.tgz#c0e5e787c285264e5dfc7a79f04b8b4eefdad7fa"
integrity sha512-o10utieEkNPFDZFQm9CoP7Tvb33UutoJqg3qKf1PWVeeJhJw0Q347PxMvBgVVFgouYLGIhFYG0UGdBumROyiig==
"@esbuild/linux-loong64@0.20.2":
version "0.20.2"
resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.20.2.tgz#a6184e62bd7cdc63e0c0448b83801001653219c5"
integrity sha512-PR7sp6R/UC4CFVomVINKJ80pMFlfDfMQMYynX7t1tNTeivQ6XdX5r2XovMmha/VjR1YN/HgHWsVcTRIMkymrgQ==
"@esbuild/linux-mips64el@0.20.2":
version "0.20.2"
resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.20.2.tgz#d08e39ce86f45ef8fc88549d29c62b8acf5649aa"
integrity sha512-4BlTqeutE/KnOiTG5Y6Sb/Hw6hsBOZapOVF6njAESHInhlQAghVVZL1ZpIctBOoTFbQyGW+LsVYZ8lSSB3wkjA==
"@esbuild/linux-ppc64@0.20.2":
version "0.20.2"
resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.20.2.tgz#8d252f0b7756ffd6d1cbde5ea67ff8fd20437f20"
integrity sha512-rD3KsaDprDcfajSKdn25ooz5J5/fWBylaaXkuotBDGnMnDP1Uv5DLAN/45qfnf3JDYyJv/ytGHQaziHUdyzaAg==
"@esbuild/linux-riscv64@0.20.2":
version "0.20.2"
resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.20.2.tgz#19f6dcdb14409dae607f66ca1181dd4e9db81300"
integrity sha512-snwmBKacKmwTMmhLlz/3aH1Q9T8v45bKYGE3j26TsaOVtjIag4wLfWSiZykXzXuE1kbCE+zJRmwp+ZbIHinnVg==
"@esbuild/linux-s390x@0.20.2":
version "0.20.2"
resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.20.2.tgz#3c830c90f1a5d7dd1473d5595ea4ebb920988685"
integrity sha512-wcWISOobRWNm3cezm5HOZcYz1sKoHLd8VL1dl309DiixxVFoFe/o8HnwuIwn6sXre88Nwj+VwZUvJf4AFxkyrQ==
"@esbuild/linux-x64@0.20.2":
version "0.20.2"
resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.20.2.tgz#86eca35203afc0d9de0694c64ec0ab0a378f6fff"
integrity sha512-1MdwI6OOTsfQfek8sLwgyjOXAu+wKhLEoaOLTjbijk6E2WONYpH9ZU2mNtR+lZ2B4uwr+usqGuVfFT9tMtGvGw==
"@esbuild/netbsd-x64@0.20.2":
version "0.20.2"
resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.20.2.tgz#e771c8eb0e0f6e1877ffd4220036b98aed5915e6"
integrity sha512-K8/DhBxcVQkzYc43yJXDSyjlFeHQJBiowJ0uVL6Tor3jGQfSGHNNJcWxNbOI8v5k82prYqzPuwkzHt3J1T1iZQ==
"@esbuild/openbsd-x64@0.20.2":
version "0.20.2"
resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.20.2.tgz#9a795ae4b4e37e674f0f4d716f3e226dd7c39baf"
integrity sha512-eMpKlV0SThJmmJgiVyN9jTPJ2VBPquf6Kt/nAoo6DgHAoN57K15ZghiHaMvqjCye/uU4X5u3YSMgVBI1h3vKrQ==
"@esbuild/sunos-x64@0.20.2":
version "0.20.2"
resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.20.2.tgz#7df23b61a497b8ac189def6e25a95673caedb03f"
integrity sha512-2UyFtRC6cXLyejf/YEld4Hajo7UHILetzE1vsRcGL3earZEW77JxrFjH4Ez2qaTiEfMgAXxfAZCm1fvM/G/o8w==
"@esbuild/win32-arm64@0.20.2":
version "0.20.2"
resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.20.2.tgz#f1ae5abf9ca052ae11c1bc806fb4c0f519bacf90"
integrity sha512-GRibxoawM9ZCnDxnP3usoUDO9vUkpAxIIZ6GQI+IlVmr5kP3zUq+l17xELTHMWTWzjxa2guPNyrpq1GWmPvcGQ==
"@esbuild/win32-ia32@0.20.2":
version "0.20.2"
resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.20.2.tgz#241fe62c34d8e8461cd708277813e1d0ba55ce23"
integrity sha512-HfLOfn9YWmkSKRQqovpnITazdtquEW8/SoHW7pWpuEeguaZI4QnCRW6b+oZTztdBnZOS2hqJ6im/D5cPzBTTlQ==
"@esbuild/win32-x64@0.20.2":
version "0.20.2"
resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.20.2.tgz#9c907b21e30a52db959ba4f80bb01a0cc403d5cc"
integrity sha512-N49X4lJX27+l9jbLKSqZ6bKNjzQvHaT8IIFUy+YIqmXQdjYCToGWwOItDrfby14c78aDd5NHQl29xingXfCdLQ==
"@jridgewell/sourcemap-codec@^1.4.15":
version "1.4.15"
resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz#d7c6e6755c78567a951e04ab52ef0fd26de59f32"
integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==
"@rollup/rollup-android-arm-eabi@4.16.4":
version "4.16.4"
resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.16.4.tgz#5e8930291f1e5ead7fb1171d53ba5c87718de062"
integrity sha512-GkhjAaQ8oUTOKE4g4gsZ0u8K/IHU1+2WQSgS1TwTcYvL+sjbaQjNHFXbOJ6kgqGHIO1DfUhI/Sphi9GkRT9K+Q==
"@rollup/rollup-android-arm64@4.16.4":
version "4.16.4"
resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.16.4.tgz#ffb84f1359c04ec8a022a97110e18a5600f5f638"
integrity sha512-Bvm6D+NPbGMQOcxvS1zUl8H7DWlywSXsphAeOnVeiZLQ+0J6Is8T7SrjGTH29KtYkiY9vld8ZnpV3G2EPbom+w==
"@rollup/rollup-darwin-arm64@4.16.4":
version "4.16.4"
resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.16.4.tgz#b2fcee8d4806a0b1b9185ac038cc428ddedce9f4"
integrity sha512-i5d64MlnYBO9EkCOGe5vPR/EeDwjnKOGGdd7zKFhU5y8haKhQZTN2DgVtpODDMxUr4t2K90wTUJg7ilgND6bXw==
"@rollup/rollup-darwin-x64@4.16.4":
version "4.16.4"
resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.16.4.tgz#fcb25ccbaa3dd33a6490e9d1c64bab2e0e16b932"
integrity sha512-WZupV1+CdUYehaZqjaFTClJI72fjJEgTXdf4NbW69I9XyvdmztUExBtcI2yIIU6hJtYvtwS6pkTkHJz+k08mAQ==
"@rollup/rollup-linux-arm-gnueabihf@4.16.4":
version "4.16.4"
resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.16.4.tgz#40d46bdfe667e5eca31bf40047460e326d2e26bb"
integrity sha512-ADm/xt86JUnmAfA9mBqFcRp//RVRt1ohGOYF6yL+IFCYqOBNwy5lbEK05xTsEoJq+/tJzg8ICUtS82WinJRuIw==
"@rollup/rollup-linux-arm-musleabihf@4.16.4":
version "4.16.4"
resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.16.4.tgz#7741df2448c11c56588b50835dbfe91b1a10b375"
integrity sha512-tJfJaXPiFAG+Jn3cutp7mCs1ePltuAgRqdDZrzb1aeE3TktWWJ+g7xK9SNlaSUFw6IU4QgOxAY4rA+wZUT5Wfg==
"@rollup/rollup-linux-arm64-gnu@4.16.4":
version "4.16.4"
resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.16.4.tgz#0a23b02d2933e4c4872ad18d879890b6a4a295df"
integrity sha512-7dy1BzQkgYlUTapDTvK997cgi0Orh5Iu7JlZVBy1MBURk7/HSbHkzRnXZa19ozy+wwD8/SlpJnOOckuNZtJR9w==
"@rollup/rollup-linux-arm64-musl@4.16.4":
version "4.16.4"
resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.16.4.tgz#e37ef259358aa886cc07d782220a4fb83c1e6970"
integrity sha512-zsFwdUw5XLD1gQe0aoU2HVceI6NEW7q7m05wA46eUAyrkeNYExObfRFQcvA6zw8lfRc5BHtan3tBpo+kqEOxmg==
"@rollup/rollup-linux-powerpc64le-gnu@4.16.4":
version "4.16.4"
resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.16.4.tgz#8c69218b6de05ee2ba211664a2d2ac1e54e43f94"
integrity sha512-p8C3NnxXooRdNrdv6dBmRTddEapfESEUflpICDNKXpHvTjRRq1J82CbU5G3XfebIZyI3B0s074JHMWD36qOW6w==
"@rollup/rollup-linux-riscv64-gnu@4.16.4":
version "4.16.4"
resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.16.4.tgz#d32727dab8f538d9a4a7c03bcf58c436aecd0139"
integrity sha512-Lh/8ckoar4s4Id2foY7jNgitTOUQczwMWNYi+Mjt0eQ9LKhr6sK477REqQkmy8YHY3Ca3A2JJVdXnfb3Rrwkng==
"@rollup/rollup-linux-s390x-gnu@4.16.4":
version "4.16.4"
resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.16.4.tgz#d46097246a187d99fc9451fe8393b7155b47c5ec"
integrity sha512-1xwwn9ZCQYuqGmulGsTZoKrrn0z2fAur2ujE60QgyDpHmBbXbxLaQiEvzJWDrscRq43c8DnuHx3QorhMTZgisQ==
"@rollup/rollup-linux-x64-gnu@4.16.4":
version "4.16.4"
resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.16.4.tgz#6356c5a03a4afb1c3057490fc51b4764e109dbc7"
integrity sha512-LuOGGKAJ7dfRtxVnO1i3qWc6N9sh0Em/8aZ3CezixSTM+E9Oq3OvTsvC4sm6wWjzpsIlOCnZjdluINKESflJLA==
"@rollup/rollup-linux-x64-musl@4.16.4":
version "4.16.4"
resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.16.4.tgz#03a5831a9c0d05877b94653b5ddd3020d3c6fb06"
integrity sha512-ch86i7KkJKkLybDP2AtySFTRi5fM3KXp0PnHocHuJMdZwu7BuyIKi35BE9guMlmTpwwBTB3ljHj9IQXnTCD0vA==
"@rollup/rollup-win32-arm64-msvc@4.16.4":
version "4.16.4"
resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.16.4.tgz#6cc0db57750376b9303bdb6f5482af8974fcae35"
integrity sha512-Ma4PwyLfOWZWayfEsNQzTDBVW8PZ6TUUN1uFTBQbF2Chv/+sjenE86lpiEwj2FiviSmSZ4Ap4MaAfl1ciF4aSA==
"@rollup/rollup-win32-ia32-msvc@4.16.4":
version "4.16.4"
resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.16.4.tgz#aea0b7e492bd9ed46971cb80bc34f1eb14e07789"
integrity sha512-9m/ZDrQsdo/c06uOlP3W9G2ENRVzgzbSXmXHT4hwVaDQhYcRpi9bgBT0FTG9OhESxwK0WjQxYOSfv40cU+T69w==
"@rollup/rollup-win32-x64-msvc@4.16.4":
version "4.16.4"
resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.16.4.tgz#c09ad9a132ccb5a67c4f211d909323ab1294f95f"
integrity sha512-YunpoOAyGLDseanENHmbFvQSfVL5BxW3k7hhy0eN4rb3gS/ct75dVD0EXOWIqFT/nE8XYW6LP6vz6ctKRi0k9A==
"@shikijs/core@1.3.0", "@shikijs/core@^1.3.0":
version "1.3.0"
resolved "https://registry.yarnpkg.com/@shikijs/core/-/core-1.3.0.tgz#5b93b51ddb8def1e3a1543107f9b5b0540f716f6"
integrity sha512-7fedsBfuILDTBmrYZNFI8B6ATTxhQAasUHllHmjvSZPnoq4bULWoTpHwmuQvZ8Aq03/tAa2IGo6RXqWtHdWaCA==
"@shikijs/transformers@^1.3.0":
version "1.3.0"
resolved "https://registry.yarnpkg.com/@shikijs/transformers/-/transformers-1.3.0.tgz#b03c5733ef61e25e4f53666bf11889f8876f34e9"
integrity sha512-3mlpg2I9CjhjE96dEWQOGeCWoPcyTov3s4aAsHmgvnTHa8MBknEnCQy8/xivJPSpD+olqOqIEoHnLfbNJK29AA==
dependencies:
shiki "1.3.0"
"@types/estree@1.0.5":
version "1.0.5"
resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.5.tgz#a6ce3e556e00fd9895dd872dd172ad0d4bd687f4"
integrity sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==
"@types/linkify-it@*":
version "3.0.5"
resolved "https://registry.yarnpkg.com/@types/linkify-it/-/linkify-it-3.0.5.tgz#1e78a3ac2428e6d7e6c05c1665c242023a4601d8"
integrity sha512-yg6E+u0/+Zjva+buc3EIb+29XEg4wltq7cSmd4Uc2EE/1nUVmxyzpX6gUXD0V8jIrG0r7YeOGVIbYRkxeooCtw==
"@types/markdown-it@^14.0.1":
version "14.0.1"
resolved "https://registry.yarnpkg.com/@types/markdown-it/-/markdown-it-14.0.1.tgz#3d3fdf9dba83b69edececc070d39ec72b84270a7"
integrity sha512-6WfOG3jXR78DW8L5cTYCVVGAsIFZskRHCDo5tbqa+qtKVt4oDRVH7hyIWu1SpDQJlmIoEivNQZ5h+AGAOrgOtQ==
dependencies:
"@types/linkify-it" "*"
"@types/mdurl" "*"
"@types/mdurl@*":
version "1.0.5"
resolved "https://registry.yarnpkg.com/@types/mdurl/-/mdurl-1.0.5.tgz#3e0d2db570e9fb6ccb2dc8fde0be1d79ac810d39"
integrity sha512-6L6VymKTzYSrEf4Nev4Xa1LCHKrlTlYCBMTlQKFuddo1CvQcE52I0mwfOJayueUC7MJuXOeHTcIU683lzd0cUA==
"@types/web-bluetooth@^0.0.20":
version "0.0.20"
resolved "https://registry.yarnpkg.com/@types/web-bluetooth/-/web-bluetooth-0.0.20.tgz#f066abfcd1cbe66267cdbbf0de010d8a41b41597"
integrity sha512-g9gZnnXVq7gM7v3tJCWV/qw7w+KeOlSHAhgF9RytFyifW6AF61hdT2ucrYhPq9hLs5JIryeupHV3qGk95dH9ow==
"@vitejs/plugin-vue@^5.0.4":
version "5.0.4"
resolved "https://registry.yarnpkg.com/@vitejs/plugin-vue/-/plugin-vue-5.0.4.tgz#508d6a0f2440f86945835d903fcc0d95d1bb8a37"
integrity sha512-WS3hevEszI6CEVEx28F8RjTX97k3KsrcY6kvTg7+Whm5y3oYvcqzVeGCU3hxSAn4uY2CLCkeokkGKpoctccilQ==
"@vue/compiler-core@3.4.24":
version "3.4.24"
resolved "https://registry.yarnpkg.com/@vue/compiler-core/-/compiler-core-3.4.24.tgz#6b4a5ffddcd874a692f2acfa68981201bcd7096b"
integrity sha512-vbW/tgbwJYj62N/Ww99x0zhFTkZDTcGh3uwJEuadZ/nF9/xuFMC4693P9r+3sxGXISABpDKvffY5ApH9pmdd1A==
dependencies:
"@babel/parser" "^7.24.4"
"@vue/shared" "3.4.24"
entities "^4.5.0"
estree-walker "^2.0.2"
source-map-js "^1.2.0"
"@vue/compiler-dom@3.4.24":
version "3.4.24"
resolved "https://registry.yarnpkg.com/@vue/compiler-dom/-/compiler-dom-3.4.24.tgz#b7335a49f095b6d35e48b6f7be8da513c1fa52b8"
integrity sha512-4XgABML/4cNndVsQndG6BbGN7+EoisDwi3oXNovqL/4jdNhwvP8/rfRMTb6FxkxIxUUtg6AI1/qZvwfSjxJiWA==
dependencies:
"@vue/compiler-core" "3.4.24"
"@vue/shared" "3.4.24"
"@vue/compiler-sfc@3.4.24":
version "3.4.24"
resolved "https://registry.yarnpkg.com/@vue/compiler-sfc/-/compiler-sfc-3.4.24.tgz#2872e353147ce2a145169a33ddd4d68dc95c3a18"
integrity sha512-nRAlJUK02FTWfA2nuvNBAqsDZuERGFgxZ8sGH62XgFSvMxO2URblzulExsmj4gFZ8e+VAyDooU9oAoXfEDNxTA==
dependencies:
"@babel/parser" "^7.24.4"
"@vue/compiler-core" "3.4.24"
"@vue/compiler-dom" "3.4.24"
"@vue/compiler-ssr" "3.4.24"
"@vue/shared" "3.4.24"
estree-walker "^2.0.2"
magic-string "^0.30.10"
postcss "^8.4.38"
source-map-js "^1.2.0"
"@vue/compiler-ssr@3.4.24":
version "3.4.24"
resolved "https://registry.yarnpkg.com/@vue/compiler-ssr/-/compiler-ssr-3.4.24.tgz#0d11fe54dabd17cbd6393a16bf7f785da1cfab46"
integrity sha512-ZsAtr4fhaUFnVcDqwW3bYCSDwq+9Gk69q2r/7dAHDrOMw41kylaMgOP4zRnn6GIEJkQznKgrMOGPMFnLB52RbQ==
dependencies:
"@vue/compiler-dom" "3.4.24"
"@vue/shared" "3.4.24"
"@vue/devtools-api@^7.0.27":
version "7.1.2"
resolved "https://registry.yarnpkg.com/@vue/devtools-api/-/devtools-api-7.1.2.tgz#8808b0f008842b756bf1e9c30788837abb62ab3a"
integrity sha512-AKd49cN3BdRgttmX5Aw8op7sx6jmaPwaILcDjaa05UKc1yIHDYST7P8yGZs6zd2pKFETAQz40gmyG7+b57slsQ==
dependencies:
"@vue/devtools-kit" "^7.1.2"
"@vue/devtools-kit@^7.1.2":
version "7.1.2"
resolved "https://registry.yarnpkg.com/@vue/devtools-kit/-/devtools-kit-7.1.2.tgz#dfb7306edf895dadc556dd5f0c516809c2f94826"
integrity sha512-UTrcUSOhlI9eXqbPMHUWwA6NQiiPT3onzXsVk2JHGR8ZFFSkzsWTTpHyVA1woG8zvgu2HNV/wigW2k87p858zw==
dependencies:
"@vue/devtools-shared" "^7.1.2"
hookable "^5.5.3"
mitt "^3.0.1"
perfect-debounce "^1.0.0"
speakingurl "^14.0.1"
"@vue/devtools-shared@^7.1.2":
version "7.1.2"
resolved "https://registry.yarnpkg.com/@vue/devtools-shared/-/devtools-shared-7.1.2.tgz#7b1c1de10bab4756f271c377370a62833b4ee94b"
integrity sha512-r9cUf93VMhKSsxF2/cBbf6Lm1nRBx+r1pRuji5CiAf3JIPYPOjeEqJ13OuwP1fauYh1tyBFcCxt3eJPvHT59gg==
dependencies:
rfdc "^1.3.1"
"@vue/reactivity@3.4.24":
version "3.4.24"
resolved "https://registry.yarnpkg.com/@vue/reactivity/-/reactivity-3.4.24.tgz#150584316ca2acc4ed19a24f9f29863c3a17a7b2"
integrity sha512-nup3fSYg4i4LtNvu9slF/HF/0dkMQYfepUdORBcMSsankzRPzE7ypAFurpwyRBfU1i7Dn1kcwpYsE1wETSh91g==
dependencies:
"@vue/shared" "3.4.24"
"@vue/runtime-core@3.4.24":
version "3.4.24"
resolved "https://registry.yarnpkg.com/@vue/runtime-core/-/runtime-core-3.4.24.tgz#066c544dc59a07a96c12874a57b750c239124874"
integrity sha512-c7iMfj6cJMeAG3s5yOn9Rc5D9e2/wIuaozmGf/ICGCY3KV5H7mbTVdvEkd4ZshTq7RUZqj2k7LMJWVx+EBiY1g==
dependencies:
"@vue/reactivity" "3.4.24"
"@vue/shared" "3.4.24"
"@vue/runtime-dom@3.4.24":
version "3.4.24"
resolved "https://registry.yarnpkg.com/@vue/runtime-dom/-/runtime-dom-3.4.24.tgz#4f8e7acbe1e8ffa7c55af1366e4438729ebe9b20"
integrity sha512-uXKzuh/Emfad2Y7Qm0ABsLZZV6H3mAJ5ZVqmAOlrNQRf+T5mxpPGZBfec1hkP41t6h6FwF6RSGCs/gd8WbuySQ==
dependencies:
"@vue/runtime-core" "3.4.24"
"@vue/shared" "3.4.24"
csstype "^3.1.3"
"@vue/server-renderer@3.4.24":
version "3.4.24"
resolved "https://registry.yarnpkg.com/@vue/server-renderer/-/server-renderer-3.4.24.tgz#80dd546f8d6a9f5c4f8b68083fe9cc2d62299332"
integrity sha512-H+DLK4sQF6sRgzKyofmlEVBIV/9KrQU6HIV7nt6yIwSGGKvSwlV8pqJlebUKLpbXaNHugdSfAbP6YmXF69lxow==
dependencies:
"@vue/compiler-ssr" "3.4.24"
"@vue/shared" "3.4.24"
"@vue/shared@3.4.24":
version "3.4.24"
resolved "https://registry.yarnpkg.com/@vue/shared/-/shared-3.4.24.tgz#278ac71f492b392b9b17fe8fc7d324db1a8842db"
integrity sha512-BW4tajrJBM9AGAknnyEw5tO2xTmnqgup0VTnDAMcxYmqOX0RG0b9aSUGAbEKolD91tdwpA6oCwbltoJoNzpItw==
"@vueuse/core@10.9.0", "@vueuse/core@^10.9.0":
version "10.9.0"
resolved "https://registry.yarnpkg.com/@vueuse/core/-/core-10.9.0.tgz#7d779a95cf0189de176fee63cee4ba44b3c85d64"
integrity sha512-/1vjTol8SXnx6xewDEKfS0Ra//ncg4Hb0DaZiwKf7drgfMsKFExQ+FnnENcN6efPen+1kIzhLQoGSy0eDUVOMg==
dependencies:
"@types/web-bluetooth" "^0.0.20"
"@vueuse/metadata" "10.9.0"
"@vueuse/shared" "10.9.0"
vue-demi ">=0.14.7"
"@vueuse/integrations@^10.9.0":
version "10.9.0"
resolved "https://registry.yarnpkg.com/@vueuse/integrations/-/integrations-10.9.0.tgz#2b1a9556215ad3c1f96d39cbfbef102cf6e0ec05"
integrity sha512-acK+A01AYdWSvL4BZmCoJAcyHJ6EqhmkQEXbQLwev1MY7NBnS+hcEMx/BzVoR9zKI+UqEPMD9u6PsyAuiTRT4Q==
dependencies:
"@vueuse/core" "10.9.0"
"@vueuse/shared" "10.9.0"
vue-demi ">=0.14.7"
"@vueuse/metadata@10.9.0":
version "10.9.0"
resolved "https://registry.yarnpkg.com/@vueuse/metadata/-/metadata-10.9.0.tgz#769a1a9db65daac15cf98084cbf7819ed3758620"
integrity sha512-iddNbg3yZM0X7qFY2sAotomgdHK7YJ6sKUvQqbvwnf7TmaVPxS4EJydcNsVejNdS8iWCtDk+fYXr7E32nyTnGA==
"@vueuse/shared@10.9.0":
version "10.9.0"
resolved "https://registry.yarnpkg.com/@vueuse/shared/-/shared-10.9.0.tgz#13af2a348de15d07b7be2fd0c7fc9853a69d8fe0"
integrity sha512-Uud2IWncmAfJvRaFYzv5OHDli+FbOzxiVEQdLCKQKLyhz94PIyFC3CHcH7EDMwIn8NPtD06+PNbC/PiO0LGLtw==
dependencies:
vue-demi ">=0.14.7"
algoliasearch@^4.19.1:
version "4.23.3"
resolved "https://registry.yarnpkg.com/algoliasearch/-/algoliasearch-4.23.3.tgz#e09011d0a3b0651444916a3e6bbcba064ec44b60"
integrity sha512-Le/3YgNvjW9zxIQMRhUHuhiUjAlKY/zsdZpfq4dlLqg6mEm0nL6yk+7f2hDOtLpxsgE4jSzDmvHL7nXdBp5feg==
dependencies:
"@algolia/cache-browser-local-storage" "4.23.3"
"@algolia/cache-common" "4.23.3"
"@algolia/cache-in-memory" "4.23.3"
"@algolia/client-account" "4.23.3"
"@algolia/client-analytics" "4.23.3"
"@algolia/client-common" "4.23.3"
"@algolia/client-personalization" "4.23.3"
"@algolia/client-search" "4.23.3"
"@algolia/logger-common" "4.23.3"
"@algolia/logger-console" "4.23.3"
"@algolia/recommend" "4.23.3"
"@algolia/requester-browser-xhr" "4.23.3"
"@algolia/requester-common" "4.23.3"
"@algolia/requester-node-http" "4.23.3"
"@algolia/transporter" "4.23.3"
csstype@^3.1.3:
version "3.1.3"
resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.1.3.tgz#d80ff294d114fb0e6ac500fbf85b60137d7eff81"
integrity sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==
entities@^4.5.0:
version "4.5.0"
resolved "https://registry.yarnpkg.com/entities/-/entities-4.5.0.tgz#5d268ea5e7113ec74c4d033b79ea5a35a488fb48"
integrity sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==
esbuild@^0.20.1:
version "0.20.2"
resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.20.2.tgz#9d6b2386561766ee6b5a55196c6d766d28c87ea1"
integrity sha512-WdOOppmUNU+IbZ0PaDiTst80zjnrOkyJNHoKupIcVyU8Lvla3Ugx94VzkQ32Ijqd7UhHJy75gNWDMUekcrSJ6g==
optionalDependencies:
"@esbuild/aix-ppc64" "0.20.2"
"@esbuild/android-arm" "0.20.2"
"@esbuild/android-arm64" "0.20.2"
"@esbuild/android-x64" "0.20.2"
"@esbuild/darwin-arm64" "0.20.2"
"@esbuild/darwin-x64" "0.20.2"
"@esbuild/freebsd-arm64" "0.20.2"
"@esbuild/freebsd-x64" "0.20.2"
"@esbuild/linux-arm" "0.20.2"
"@esbuild/linux-arm64" "0.20.2"
"@esbuild/linux-ia32" "0.20.2"
"@esbuild/linux-loong64" "0.20.2"
"@esbuild/linux-mips64el" "0.20.2"
"@esbuild/linux-ppc64" "0.20.2"
"@esbuild/linux-riscv64" "0.20.2"
"@esbuild/linux-s390x" "0.20.2"
"@esbuild/linux-x64" "0.20.2"
"@esbuild/netbsd-x64" "0.20.2"
"@esbuild/openbsd-x64" "0.20.2"
"@esbuild/sunos-x64" "0.20.2"
"@esbuild/win32-arm64" "0.20.2"
"@esbuild/win32-ia32" "0.20.2"
"@esbuild/win32-x64" "0.20.2"
estree-walker@^2.0.2:
version "2.0.2"
resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-2.0.2.tgz#52f010178c2a4c117a7757cfe942adb7d2da4cac"
integrity sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==
focus-trap@^7.5.4:
version "7.5.4"
resolved "https://registry.yarnpkg.com/focus-trap/-/focus-trap-7.5.4.tgz#6c4e342fe1dae6add9c2aa332a6e7a0bbd495ba2"
integrity sha512-N7kHdlgsO/v+iD/dMoJKtsSqs5Dz/dXZVebRgJw23LDk+jMi/974zyiOYDziY2JPp8xivq9BmUGwIJMiuSBi7w==
dependencies:
tabbable "^6.2.0"
fsevents@~2.3.2, fsevents@~2.3.3:
version "2.3.3"
resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6"
integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==
hookable@^5.5.3:
version "5.5.3"
resolved "https://registry.yarnpkg.com/hookable/-/hookable-5.5.3.tgz#6cfc358984a1ef991e2518cb9ed4a778bbd3215d"
integrity sha512-Yc+BQe8SvoXH1643Qez1zqLRmbA5rCL+sSmk6TVos0LWVfNIB7PGncdlId77WzLGSIB5KaWgTaNTs2lNVEI6VQ==
magic-string@^0.30.10:
version "0.30.10"
resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.30.10.tgz#123d9c41a0cb5640c892b041d4cfb3bd0aa4b39e"
integrity sha512-iIRwTIf0QKV3UAnYK4PU8uiEc4SRh5jX0mwpIwETPpHdhVM4f53RSwS/vXvN1JhGX+Cs7B8qIq3d6AH49O5fAQ==
dependencies:
"@jridgewell/sourcemap-codec" "^1.4.15"
mark.js@8.11.1:
version "8.11.1"
resolved "https://registry.yarnpkg.com/mark.js/-/mark.js-8.11.1.tgz#180f1f9ebef8b0e638e4166ad52db879beb2ffc5"
integrity sha512-1I+1qpDt4idfgLQG+BNWmrqku+7/2bi5nLf4YwF8y8zXvmfiTBY3PV3ZibfrjBueCByROpuBjLLFCajqkgYoLQ==
minisearch@^6.3.0:
version "6.3.0"
resolved "https://registry.yarnpkg.com/minisearch/-/minisearch-6.3.0.tgz#985a2f1ca3c73c2d65af94f0616bfe57164b0b6b"
integrity sha512-ihFnidEeU8iXzcVHy74dhkxh/dn8Dc08ERl0xwoMMGqp4+LvRSCgicb+zGqWthVokQKvCSxITlh3P08OzdTYCQ==
mitt@^3.0.1:
version "3.0.1"
resolved "https://registry.yarnpkg.com/mitt/-/mitt-3.0.1.tgz#ea36cf0cc30403601ae074c8f77b7092cdab36d1"
integrity sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==
nanoid@^3.3.7:
version "3.3.7"
resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.7.tgz#d0c301a691bc8d54efa0a2226ccf3fe2fd656bd8"
integrity sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==
perfect-debounce@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/perfect-debounce/-/perfect-debounce-1.0.0.tgz#9c2e8bc30b169cc984a58b7d5b28049839591d2a"
integrity sha512-xCy9V055GLEqoFaHoC1SoLIaLmWctgCUaBaWxDZ7/Zx4CTyX7cJQLJOok/orfjZAh9kEYpjJa4d0KcJmCbctZA==
picocolors@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c"
integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==
postcss@^8.4.38:
version "8.4.38"
resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.38.tgz#b387d533baf2054288e337066d81c6bee9db9e0e"
integrity sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A==
dependencies:
nanoid "^3.3.7"
picocolors "^1.0.0"
source-map-js "^1.2.0"
preact@^10.0.0:
version "10.20.2"
resolved "https://registry.yarnpkg.com/preact/-/preact-10.20.2.tgz#0b343299a8c020562311cc25db93b3d832ec5e71"
integrity sha512-S1d1ernz3KQ+Y2awUxKakpfOg2CEmJmwOP+6igPx6dgr6pgDvenqYviyokWso2rhHvGtTlWWnJDa7RaPbQerTg==
rfdc@^1.3.1:
version "1.3.1"
resolved "https://registry.yarnpkg.com/rfdc/-/rfdc-1.3.1.tgz#2b6d4df52dffe8bb346992a10ea9451f24373a8f"
integrity sha512-r5a3l5HzYlIC68TpmYKlxWjmOP6wiPJ1vWv2HeLhNsRZMrCkxeqxiHlQ21oXmQ4F3SiryXBHhAD7JZqvOJjFmg==
rollup@^4.13.0:
version "4.16.4"
resolved "https://registry.yarnpkg.com/rollup/-/rollup-4.16.4.tgz#fe328eb41293f20c9593a095ec23bdc4b5d93317"
integrity sha512-kuaTJSUbz+Wsb2ATGvEknkI12XV40vIiHmLuFlejoo7HtDok/O5eDDD0UpCVY5bBX5U5RYo8wWP83H7ZsqVEnA==
dependencies:
"@types/estree" "1.0.5"
optionalDependencies:
"@rollup/rollup-android-arm-eabi" "4.16.4"
"@rollup/rollup-android-arm64" "4.16.4"
"@rollup/rollup-darwin-arm64" "4.16.4"
"@rollup/rollup-darwin-x64" "4.16.4"
"@rollup/rollup-linux-arm-gnueabihf" "4.16.4"
"@rollup/rollup-linux-arm-musleabihf" "4.16.4"
"@rollup/rollup-linux-arm64-gnu" "4.16.4"
"@rollup/rollup-linux-arm64-musl" "4.16.4"
"@rollup/rollup-linux-powerpc64le-gnu" "4.16.4"
"@rollup/rollup-linux-riscv64-gnu" "4.16.4"
"@rollup/rollup-linux-s390x-gnu" "4.16.4"
"@rollup/rollup-linux-x64-gnu" "4.16.4"
"@rollup/rollup-linux-x64-musl" "4.16.4"
"@rollup/rollup-win32-arm64-msvc" "4.16.4"
"@rollup/rollup-win32-ia32-msvc" "4.16.4"
"@rollup/rollup-win32-x64-msvc" "4.16.4"
fsevents "~2.3.2"
shiki@1.3.0, shiki@^1.3.0:
version "1.3.0"
resolved "https://registry.yarnpkg.com/shiki/-/shiki-1.3.0.tgz#3eda35cb49f6f0a98525e9da48fc072e6c655a3f"
integrity sha512-9aNdQy/etMXctnPzsje1h1XIGm9YfRcSksKOGqZWXA/qP9G18/8fpz5Bjpma8bOgz3tqIpjERAd6/lLjFyzoww==
dependencies:
"@shikijs/core" "1.3.0"
source-map-js@^1.2.0:
version "1.2.0"
resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.2.0.tgz#16b809c162517b5b8c3e7dcd315a2a5c2612b2af"
integrity sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==
speakingurl@^14.0.1:
version "14.0.1"
resolved "https://registry.yarnpkg.com/speakingurl/-/speakingurl-14.0.1.tgz#f37ec8ddc4ab98e9600c1c9ec324a8c48d772a53"
integrity sha512-1POYv7uv2gXoyGFpBCmpDVSNV74IfsWlDW216UPjbWufNf+bSU6GdbDsxdcxtfwb4xlI3yxzOTKClUosxARYrQ==
tabbable@^6.2.0:
version "6.2.0"
resolved "https://registry.yarnpkg.com/tabbable/-/tabbable-6.2.0.tgz#732fb62bc0175cfcec257330be187dcfba1f3b97"
integrity sha512-Cat63mxsVJlzYvN51JmVXIgNoUokrIaT2zLclCXjRd8boZ0004U4KCs/sToJ75C6sdlByWxpYnb5Boif1VSFew==
vite@^5.2.10, vite@^5.2.9:
version "5.2.10"
resolved "https://registry.yarnpkg.com/vite/-/vite-5.2.10.tgz#2ac927c91e99d51b376a5c73c0e4b059705f5bd7"
integrity sha512-PAzgUZbP7msvQvqdSD+ErD5qGnSFiGOoWmV5yAKUEI0kdhjbH6nMWVyZQC/hSc4aXwc0oJ9aEdIiF9Oje0JFCw==
dependencies:
esbuild "^0.20.1"
postcss "^8.4.38"
rollup "^4.13.0"
optionalDependencies:
fsevents "~2.3.3"
vitepress-plugin-tabs@^0.5.0:
version "0.5.0"
resolved "https://registry.yarnpkg.com/vitepress-plugin-tabs/-/vitepress-plugin-tabs-0.5.0.tgz#2b193a72ed36b9fcd63e3907d3044fe7b6cf3e4e"
integrity sha512-SIhFWwGsUkTByfc2b279ray/E0Jt8vDTsM1LiHxmCOBAEMmvzIBZSuYYT1DpdDTiS3SuJieBheJkYnwCq/yD9A==
vitepress@^1.1.0:
version "1.1.3"
resolved "https://registry.yarnpkg.com/vitepress/-/vitepress-1.1.3.tgz#ded22392f5274680aaba8bb81dd4fb1c4741c02e"
integrity sha512-hGrIYN0w9IHWs0NQSnlMjKV/v/HLfD+Ywv5QdvCSkiT32mpNOOwUrZjnqZv/JL/WBPpUc94eghTUvmipxw0xrA==
dependencies:
"@docsearch/css" "^3.6.0"
"@docsearch/js" "^3.6.0"
"@shikijs/core" "^1.3.0"
"@shikijs/transformers" "^1.3.0"
"@types/markdown-it" "^14.0.1"
"@vitejs/plugin-vue" "^5.0.4"
"@vue/devtools-api" "^7.0.27"
"@vueuse/core" "^10.9.0"
"@vueuse/integrations" "^10.9.0"
focus-trap "^7.5.4"
mark.js "8.11.1"
minisearch "^6.3.0"
shiki "^1.3.0"
vite "^5.2.9"
vue "^3.4.23"
vue-demi@>=0.14.7:
version "0.14.7"
resolved "https://registry.yarnpkg.com/vue-demi/-/vue-demi-0.14.7.tgz#8317536b3ef74c5b09f268f7782e70194567d8f2"
integrity sha512-EOG8KXDQNwkJILkx/gPcoL/7vH+hORoBaKgGe+6W7VFMvCYJfmF2dGbvgDroVnI8LU7/kTu8mbjRZGBU1z9NTA==
vue@^3.4.23, vue@^3.4.24:
version "3.4.24"
resolved "https://registry.yarnpkg.com/vue/-/vue-3.4.24.tgz#f269549939a6c092480f018aa0bd886ba64f4c6f"
integrity sha512-NPdx7dLGyHmKHGRRU5bMRYVE+rechR+KDU5R2tSTNG36PuMwbfAJ+amEvOAw7BPfZp5sQulNELSLm5YUkau+Sg==
dependencies:
"@vue/compiler-dom" "3.4.24"
"@vue/compiler-sfc" "3.4.24"
"@vue/runtime-dom" "3.4.24"
"@vue/server-renderer" "3.4.24"
"@vue/shared" "3.4.24"

View File

@@ -1,71 +0,0 @@
# 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 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
GRAVE_ESC_ENABLE ?= yes
MAGIC_ENABLE ?= yes
SEND_STRING_ENABLE ?= yes
SPACE_CADET_ENABLE ?= yes
GENERIC_FEATURES = \
AUTO_SHIFT \
AUTOCORRECT \
BOOTMAGIC \
CAPS_WORD \
COMBO \
COMMAND \
CRC \
DEFERRED_EXEC \
DIGITIZER \
DIP_SWITCH \
DYNAMIC_KEYMAP \
DYNAMIC_MACRO \
DYNAMIC_TAPPING_TERM \
GRAVE_ESC \
HAPTIC \
KEY_LOCK \
KEY_OVERRIDE \
LAYER_LOCK \
LEADER \
MAGIC \
MOUSEKEY \
MUSIC \
OS_DETECTION \
PROGRAMMABLE_BUTTON \
REPEAT_KEY \
SECURE \
SEND_STRING \
SEQUENCER \
SPACE_CADET \
SWAP_HANDS \
TAP_DANCE \
TRI_LAYER \
VIA \
VIRTSER \
WPM \
define HANDLE_GENERIC_FEATURE
# $$(info "Processing: $1_ENABLE $2.c")
SRC += $$(wildcard $$(QUANTUM_DIR)/process_keycode/process_$2.c)
SRC += $$(wildcard $$(QUANTUM_DIR)/$2/$2.c)
SRC += $$(wildcard $$(QUANTUM_DIR)/$2.c)
VPATH += $$(wildcard $$(QUANTUM_DIR)/$2/)
OPT_DEFS += -D$1_ENABLE
endef
$(foreach F,$(GENERIC_FEATURES),\
$(if $(filter yes, $(strip $($(F)_ENABLE))),\
$(eval $(call HANDLE_GENERIC_FEATURE,$(F),$(shell echo $(F) | tr '[:upper:]' '[:lower:]'))) \
) \
)

View File

@@ -1,116 +0,0 @@
COLOR ?= true
ifeq ($(COLOR),true)
NO_COLOR=\033[0m
OK_COLOR=\033[32;01m
ERROR_COLOR=\033[31;01m
WARN_COLOR=\033[33;01m
SKIPPED_COLOR=\033[36;01m
BLUE=\033[0;34m
BOLD=\033[1m
endif
ifneq ($(shell echo "1 2 3" | awk '{ printf "%2s", $$3; }' 2>/dev/null)," 3")
AWK=awk
else
AWK=cat && test
endif
ON_ERROR ?= exit 1
OK_STRING=$(OK_COLOR)[OK]$(NO_COLOR)\n
ERROR_STRING=$(ERROR_COLOR)[ERRORS]$(NO_COLOR)\n
WARN_STRING=$(WARN_COLOR)[WARNINGS]$(NO_COLOR)\n
SKIPPED_STRING=$(SKIPPED_COLOR)[SKIPPED]$(NO_COLOR)\n
TAB_LOG = printf "\n%s\n\n" "$$LOG" | $(AWK) '{ sub(/^/," | "); print }'
TAB_LOG_PLAIN = printf "%s\n" "$$LOG"
AWK_STATUS = $(AWK) '{ printf " %-10s\n", $$1; }'
AWK_CMD = $(AWK) '{ printf "%-99s", $$0; }'
PRINT_ERROR = ($(SILENT) ||printf " $(ERROR_STRING)" | $(AWK_STATUS)) && $(TAB_LOG) && $(ON_ERROR)
PRINT_WARNING = ($(SILENT) || printf " $(WARN_STRING)" | $(AWK_STATUS)) && $(TAB_LOG)
PRINT_ERROR_PLAIN = ($(SILENT) ||printf " $(ERROR_STRING)" | $(AWK_STATUS)) && $(TAB_LOG_PLAIN) && $(ON_ERROR)
PRINT_WARNING_PLAIN = ($(SILENT) || printf " $(WARN_STRING)" | $(AWK_STATUS)) && $(TAB_LOG_PLAIN)
PRINT_SKIPPED_PLAIN = ($(SILENT) || printf " $(SKIPPED_STRING)" | $(AWK_STATUS))
PRINT_OK = $(SILENT) || printf " $(OK_STRING)" | $(AWK_STATUS)
BUILD_CMD = LOG=$$($(CMD) 2>&1) ; if [ $$? -gt 0 ]; then $(PRINT_ERROR); elif [ "$$LOG" != "" ] ; then $(PRINT_WARNING); else $(PRINT_OK); fi;
MAKE_MSG_FORMAT = $(AWK) '{ printf "%-118s", $$0;}'
# The UNSYNC_OUTPUT_CMD command disables the `--output-sync` for the current command, if the `--output-sync` granularity is `target` or lower.
# This is achieved by telling make to treat the current command as if it invokes a recursive make subcommand (as if by calling `$(MAKE)`).
UNSYNC_OUTPUT_CMD = +true
# Define Messages
# English
MSG_ERRORS_NONE = Errors: none
MSG_ERRORS = $(ERROR_COLOR)Make finished with errors\n$(NO_COLOR)
MSG_BEGIN = -------- begin --------
MSG_END = -------- end --------
MSG_SIZE_BEFORE = Size before:
MSG_SIZE_AFTER = Size after:
MSG_COFF = Converting to AVR COFF:
MSG_EXTENDED_COFF = Converting to AVR Extended COFF:
MSG_FLASH = Creating load file for flashing:
MSG_UF2 = Creating UF2 file for deployment:
MSG_EEPROM = Creating load file for EEPROM:
MSG_BIN = Creating binary load file for flashing:
MSG_EXTENDED_LISTING = Creating Extended Listing:
MSG_SYMBOL_TABLE = Creating Symbol Table:
MSG_EXECUTING = Executing:
MSG_LINKING = Linking:
MSG_COMPILING = Compiling:
MSG_COMPILING_CXX = Compiling:
MSG_ASSEMBLING = Assembling:
MSG_CLEANING = Cleaning project:
MSG_CREATING_LIBRARY = Creating library:
MSG_GENERATING = Generating:
MSG_NOT_REPO = $(WARN_COLOR)WARNING:$(NO_COLOR) Target folder is not a git repo, you probably downloaded a zip file instead of cloning.\n\
Please consider following $(BOLD)https://docs.qmk.fm/\#/newbs_getting_started$(NO_COLOR).\n\n
MSG_SUBMODULE_DIRTY = $(WARN_COLOR)WARNING:$(NO_COLOR) Some git submodules are out of date or modified.\n\
Please consider running $(BOLD)qmk git-submodule$(NO_COLOR).\n\n
define GENERATE_MSG_MAKE_KB
MSG_MAKE_KB_ACTUAL := Making $$(KB_SP) with keymap $(BOLD)$$(CURRENT_KM)$(NO_COLOR)
ifneq ($$(MAKE_TARGET),)
MSG_MAKE_KB_ACTUAL += and target $(BOLD)$$(MAKE_TARGET)$(NO_COLOR)
endif
endef
MSG_MAKE_KB = $(eval $(call GENERATE_MSG_MAKE_KB))$(MSG_MAKE_KB_ACTUAL)
define GENERATE_MSG_MAKE_TEST
MSG_MAKE_TEST_ACTUAL := Making test $(BOLD)$(TEST_NAME)$(NO_COLOR)
ifneq ($$(MAKE_TARGET),)
MSG_MAKE_TEST_ACTUAL += with target $(BOLD)$$(MAKE_TARGET)$(NO_COLOR)
endif
endef
MSG_MAKE_TEST = $(eval $(call GENERATE_MSG_MAKE_TEST))$(MSG_MAKE_TEST_ACTUAL)
MSG_TEST = Testing $(BOLD)$(TEST_NAME)$(NO_COLOR)
define GENERATE_MSG_AVAILABLE_KEYMAPS
MSG_AVAILABLE_KEYMAPS_ACTUAL := Available keymaps for $(BOLD)$$(CURRENT_KB)$(NO_COLOR):
endef
MSG_AVAILABLE_KEYMAPS = $(eval $(call GENERATE_MSG_AVAILABLE_KEYMAPS))$(MSG_AVAILABLE_KEYMAPS_ACTUAL)
MSG_BOOTLOADER_NOT_FOUND_BASE = Bootloader not found. Make sure the board is in bootloader mode. See https://docs.qmk.fm/\#/newbs_flashing\n
MSG_CHECK_STACKSIZE = Checking stack size of $(TARGET)
MSG_CHECK_FILESIZE = Checking file size of $(TARGET).$(FIRMWARE_FORMAT)
MSG_MEMORY_OVERFLOW = $(ERROR_COLOR)RAM usage (not including stack) exceeds available RAM by $(RAM_OVERFLOW_AMOUNT) bytes\n
MSG_STACK_SIZE = Available stack size: $(STACK_SIZE) bytes\n
MSG_FILE_TOO_BIG = $(ERROR_COLOR)The firmware is too large!$(NO_COLOR) $(CURRENT_SIZE)/$(MAX_SIZE) ($(OVER_SIZE) bytes over)\n
MSG_FILE_TOO_SMALL = The firmware is too small! $(CURRENT_SIZE)/$(MAX_SIZE)\n
MSG_FILE_JUST_RIGHT = The firmware size is fine - $(CURRENT_SIZE)/$(MAX_SIZE) ($(PERCENT_SIZE)%%, $(FREE_SIZE) bytes free)\n
MSG_FILE_NEAR_LIMIT = The firmware size is approaching the maximum - $(CURRENT_SIZE)/$(MAX_SIZE) ($(PERCENT_SIZE)%%, $(FREE_SIZE) bytes free)\n
MSG_PYTHON_MISSING = $(ERROR_COLOR)ERROR:$(NO_COLOR) Cannot run \"qmk hello\"!\n\n\
Please run $(BOLD)qmk setup$(NO_COLOR) to install all the dependencies QMK requires.\n\n
MSG_FLASH_BOOTLOADER = $(WARN_COLOR)WARNING:$(NO_COLOR) This board's bootloader is not specified or is not supported by the \":flash\" target at this time.\n\n
MSG_FLASH_ARCH = $(WARN_COLOR)WARNING:$(NO_COLOR) This board's architecture is not supported by the \":flash\" target at this time.\n\n
MSG_BOOTLOADER_NOT_FOUND = $(ERROR_COLOR)ERROR:$(NO_COLOR) $(MSG_BOOTLOADER_NOT_FOUND_BASE) Trying again in 5s (Ctrl+C to cancel)\n
BOOTLOADER_RETRY_TIME ?= 0.5
MSG_BOOTLOADER_NOT_FOUND_QUICK_RETRY = $(MSG_BOOTLOADER_NOT_FOUND_BASE) Trying again every $(BOOTLOADER_RETRY_TIME)s (Ctrl+C to cancel)
define WARNING_MESSAGE
$(shell printf "\n %-99s $(WARN_STRING)\n" "$1" >&2)
endef
define CATASTROPHIC_ERROR
$(shell printf "\n * %-99s $(ERROR_STRING)\n" "$2" >&2)
$(error $1)
endef

View File

@@ -1,152 +0,0 @@
BUILD_OPTION_NAMES = \
BOOTMAGIC_ENABLE \
MOUSEKEY_ENABLE \
EXTRAKEY_ENABLE \
CONSOLE_ENABLE \
COMMAND_ENABLE \
NKRO_ENABLE \
CUSTOM_MATRIX \
DEBOUNCE_TYPE \
SPLIT_KEYBOARD \
DYNAMIC_KEYMAP_ENABLE \
USB_HID_ENABLE \
VIA_ENABLE
HARDWARE_OPTION_NAMES = \
SLEEP_LED_ENABLE \
BACKLIGHT_ENABLE \
BACKLIGHT_DRIVER \
RGBLIGHT_ENABLE \
RGBLIGHT_DRIVER \
RGB_MATRIX_ENABLE \
RGB_MATRIX_DRIVER \
CIE1931_CURVE \
MIDI_ENABLE \
BLUETOOTH_ENABLE \
BLUETOOTH_DRIVER \
AUDIO_ENABLE \
HD44780_ENABLE \
ENCODER_ENABLE \
LED_TABLES \
POINTING_DEVICE_ENABLE \
DIP_SWITCH_ENABLE
OTHER_OPTION_NAMES = \
UNICODE_ENABLE \
UCIS_ENABLE \
UNICODEMAP_ENABLE \
UNICODE_COMMON \
AUTO_SHIFT_ENABLE \
DYNAMIC_TAPPING_TERM_ENABLE \
COMBO_ENABLE \
KEY_LOCK_ENABLE \
KEY_OVERRIDE_ENABLE \
LEADER_ENABLE \
STENO_ENABLE \
STENO_PROTOCOL \
TAP_DANCE_ENABLE \
VIRTSER_ENABLE \
OLED_ENABLE \
OLED_DRIVER \
LED_BACK_ENABLE \
LED_UNDERGLOW_ENABLE \
LED_ANIMATIONS \
IOS_DEVICE_ENABLE \
HELIX ZINC \
AUTOLOG_ENABLE \
DEBUG_ENABLE \
ENCODER_MAP_ENABLE \
ENCODER_ENABLE_CUSTOM \
GERMAN_ENABLE \
HAPTIC_ENABLE \
KEYLOGGER_ENABLE \
LCD_BACKLIGHT_ENABLE \
MACROS_ENABLED \
PS2_ENABLE \
PS2_MOUSE_ENABLE \
PS2_DRIVER \
RAW_ENABLE \
SWAP_HANDS_ENABLE \
RING_BUFFERED_6KRO_REPORT_ENABLE \
WATCHDOG_ENABLE \
ERGOINU \
NO_USB_STARTUP_CHECK \
DISABLE_PROMICRO_LEDs \
MITOSIS_DATAGROK_BOTTOMSPACE \
MITOSIS_DATAGROK_SLOWUART \
RGB_MATRIX_KEYPRESSES \
LED_MIRRORED \
RGBLIGHT_FULL_POWER \
LTO_ENABLE \
PROGRAMMABLE_BUTTON_ENABLE \
SECURE_ENABLE \
CAPS_WORD_ENABLE \
AUTOCORRECT_ENABLE \
TRI_LAYER_ENABLE \
REPEAT_KEY_ENABLE
define NAME_ECHO
@printf " %-30s = %-16s # %s\\n" "$1" "$($1)" "$(origin $1)"
endef
define YAML_NAME_ECHO
@echo ' $1 : "$(strip $($1))"'
endef
.PHONY: show_build_options0 show_build_options
show_build_options0:
@echo " KEYBOARD = $(KEYBOARD)"
@echo " KEYMAP = $(KEYMAP)"
@echo " MCU = $(MCU)"
@echo " MCU_SERIES = $(MCU_SERIES)"
@echo " PLATFORM = $(PLATFORM)"
@echo " BOOTLOADER = $(BOOTLOADER)"
@echo " FIRMWARE_FORMAT = $(FIRMWARE_FORMAT)"
@echo
@echo "Build Options:"
$(foreach A_OPTION_NAME,$(sort $(BUILD_OPTION_NAMES)),\
$(call NAME_ECHO,$(A_OPTION_NAME)))
show_build_options: show_build_options0
@echo
@echo "If you want to know more, please try 'show_all_features' or 'show_full_features'"
@echo
.PHONY: show_all_features
show_all_features: show_build_options0
@echo
@echo "Hardware Options:"
$(foreach A_OPTION_NAME,$(sort $(HARDWARE_OPTION_NAMES)),\
$(if $($(A_OPTION_NAME)),$(call NAME_ECHO,$(A_OPTION_NAME))))
@echo
@echo "Other Options:"
$(foreach A_OPTION_NAME,$(sort $(OTHER_OPTION_NAMES)),\
$(if $($(A_OPTION_NAME)),$(call NAME_ECHO,$(A_OPTION_NAME))))
.PHONY: show_full_features
show_full_features: show_build_options0
@echo
@echo "Hardware Options:"
$(foreach A_OPTION_NAME,$(sort $(HARDWARE_OPTION_NAMES)),\
$(call NAME_ECHO,$(A_OPTION_NAME)))
@echo
@echo "Other Options:"
$(foreach A_OPTION_NAME,$(sort $(OTHER_OPTION_NAMES)),\
$(call NAME_ECHO,$(A_OPTION_NAME)))
.PHONY: yaml_build_options
yaml_build_options:
@echo '- KEYBOARD : "$(KEYBOARD)"'
@echo ' KEYMAP : "$(KEYMAP)"'
@echo ' MCU : "$(MCU)"'
@echo ' MCU_SERIES : "$(MCU_SERIES)"'
@echo ' PLATFORM : "$(PLATFORM)"'
@echo ' FIRMWARE_FORMAT : "$(FIRMWARE_FORMAT)"'
$(foreach A_OPTION_NAME,$(sort $(BUILD_OPTION_NAMES)),\
$(call YAML_NAME_ECHO,$(A_OPTION_NAME)))
$(foreach A_OPTION_NAME,$(sort $(HARDWARE_OPTION_NAMES)),\
$(if $($(A_OPTION_NAME)),$(call YAML_NAME_ECHO,$(A_OPTION_NAME))))
$(foreach A_OPTION_NAME,$(sort $(OTHER_OPTION_NAMES)),\
$(if $($(A_OPTION_NAME)),$(call YAML_NAME_ECHO,$(A_OPTION_NAME))))

View File

@@ -1,22 +0,0 @@
TEST_LIST = $(sort $(patsubst %/test.mk,%, $(shell find $(ROOT_DIR)tests -type f -name test.mk)))
FULL_TESTS := $(notdir $(TEST_LIST))
include $(QUANTUM_PATH)/debounce/tests/testlist.mk
include $(QUANTUM_PATH)/encoder/tests/testlist.mk
include $(QUANTUM_PATH)/os_detection/tests/testlist.mk
include $(QUANTUM_PATH)/sequencer/tests/testlist.mk
include $(QUANTUM_PATH)/wear_leveling/tests/testlist.mk
include $(PLATFORM_PATH)/test/testlist.mk
define VALIDATE_TEST_LIST
ifneq ($1,)
ifeq ($$(findstring -,$1),-)
$$(call CATASTROPHIC_ERROR,Invalid test name,Test names can't contain '-', but '$1' does.)
else
$$(eval $$(call VALIDATE_TEST_LIST,$$(firstword $2),$$(wordlist 2,9999,$2)))
endif
endif
endef
$(eval $(call VALIDATE_TEST_LIST,$(firstword $(TEST_LIST)),$(wordlist 2,9999,$(TEST_LIST))))

24
common.mk Normal file
View File

@@ -0,0 +1,24 @@
include message.mk
# Directory common source files exist
TOP_DIR = .
TMK_DIR = tmk_core
TMK_PATH = $(TMK_DIR)
LIB_PATH = lib
QUANTUM_DIR = quantum
QUANTUM_PATH = $(QUANTUM_DIR)
DRIVER_DIR = drivers
DRIVER_PATH = $(DRIVER_DIR)
BUILD_DIR := .build
COMMON_VPATH := $(TOP_DIR)
COMMON_VPATH += $(TMK_PATH)
COMMON_VPATH += $(QUANTUM_PATH)
COMMON_VPATH += $(QUANTUM_PATH)/keymap_extras
COMMON_VPATH += $(QUANTUM_PATH)/audio
COMMON_VPATH += $(QUANTUM_PATH)/process_keycode
COMMON_VPATH += $(QUANTUM_PATH)/api
COMMON_VPATH += $(DRIVER_PATH)

360
common_features.mk Normal file
View File

@@ -0,0 +1,360 @@
# Copyright 2017 Fred Sundvik
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
SERIAL_DIR := $(QUANTUM_DIR)/serial_link
SERIAL_PATH := $(QUANTUM_PATH)/serial_link
SERIAL_SRC := $(wildcard $(SERIAL_PATH)/protocol/*.c)
SERIAL_SRC += $(wildcard $(SERIAL_PATH)/system/*.c)
SERIAL_DEFS += -DSERIAL_LINK_ENABLE
COMMON_VPATH += $(SERIAL_PATH)
ifeq ($(strip $(API_SYSEX_ENABLE)), yes)
OPT_DEFS += -DAPI_SYSEX_ENABLE
SRC += $(QUANTUM_DIR)/api/api_sysex.c
OPT_DEFS += -DAPI_ENABLE
SRC += $(QUANTUM_DIR)/api.c
MIDI_ENABLE=yes
endif
MUSIC_ENABLE := 0
ifeq ($(strip $(AUDIO_ENABLE)), yes)
OPT_DEFS += -DAUDIO_ENABLE
MUSIC_ENABLE := 1
SRC += $(QUANTUM_DIR)/process_keycode/process_audio.c
SRC += $(QUANTUM_DIR)/process_keycode/process_clicky.c
ifeq ($(PLATFORM),AVR)
SRC += $(QUANTUM_DIR)/audio/audio.c
else
SRC += $(QUANTUM_DIR)/audio/audio_arm.c
endif
SRC += $(QUANTUM_DIR)/audio/voices.c
SRC += $(QUANTUM_DIR)/audio/luts.c
endif
ifeq ($(strip $(MIDI_ENABLE)), yes)
OPT_DEFS += -DMIDI_ENABLE
MUSIC_ENABLE := 1
SRC += $(QUANTUM_DIR)/process_keycode/process_midi.c
endif
ifeq ($(MUSIC_ENABLE), 1)
SRC += $(QUANTUM_DIR)/process_keycode/process_music.c
endif
ifeq ($(strip $(COMBO_ENABLE)), yes)
OPT_DEFS += -DCOMBO_ENABLE
SRC += $(QUANTUM_DIR)/process_keycode/process_combo.c
endif
ifeq ($(strip $(STENO_ENABLE)), yes)
OPT_DEFS += -DSTENO_ENABLE
VIRTSER_ENABLE := yes
SRC += $(QUANTUM_DIR)/process_keycode/process_steno.c
endif
ifeq ($(strip $(VIRTSER_ENABLE)), yes)
OPT_DEFS += -DVIRTSER_ENABLE
endif
ifeq ($(strip $(FAUXCLICKY_ENABLE)), yes)
OPT_DEFS += -DFAUXCLICKY_ENABLE
SRC += $(QUANTUM_DIR)/fauxclicky.c
endif
ifeq ($(strip $(POINTING_DEVICE_ENABLE)), yes)
OPT_DEFS += -DPOINTING_DEVICE_ENABLE
OPT_DEFS += -DMOUSE_ENABLE
SRC += $(QUANTUM_DIR)/pointing_device.c
endif
ifeq ($(strip $(UCIS_ENABLE)), yes)
OPT_DEFS += -DUCIS_ENABLE
UNICODE_COMMON = yes
SRC += $(QUANTUM_DIR)/process_keycode/process_ucis.c
endif
ifeq ($(strip $(UNICODEMAP_ENABLE)), yes)
OPT_DEFS += -DUNICODEMAP_ENABLE
UNICODE_COMMON = yes
SRC += $(QUANTUM_DIR)/process_keycode/process_unicodemap.c
endif
ifeq ($(strip $(UNICODE_ENABLE)), yes)
OPT_DEFS += -DUNICODE_ENABLE
UNICODE_COMMON = yes
SRC += $(QUANTUM_DIR)/process_keycode/process_unicode.c
endif
ifeq ($(strip $(UNICODE_COMMON)), yes)
SRC += $(QUANTUM_DIR)/process_keycode/process_unicode_common.c
endif
ifeq ($(strip $(RGBLIGHT_ENABLE)), yes)
POST_CONFIG_H += $(QUANTUM_DIR)/rgblight_post_config.h
OPT_DEFS += -DRGBLIGHT_ENABLE
SRC += $(QUANTUM_DIR)/color.c
SRC += $(QUANTUM_DIR)/rgblight.c
CIE1931_CURVE = yes
LED_BREATHING_TABLE = yes
ifeq ($(strip $(RGBLIGHT_CUSTOM_DRIVER)), yes)
OPT_DEFS += -DRGBLIGHT_CUSTOM_DRIVER
else
SRC += ws2812.c
endif
endif
VALID_MATRIX_TYPES := yes IS31FL3731 IS31FL3733 IS31FL3737 WS2812 custom
LED_MATRIX_ENABLE ?= no
ifneq ($(strip $(LED_MATRIX_ENABLE)), no)
ifeq ($(filter $(LED_MATRIX_ENABLE),$(VALID_MATRIX_TYPES)),)
$(error LED_MATRIX_ENABLE="$(LED_MATRIX_ENABLE)" is not a valid matrix type)
else
OPT_DEFS += -DLED_MATRIX_ENABLE -DBACKLIGHT_ENABLE -DBACKLIGHT_CUSTOM_DRIVER
SRC += $(QUANTUM_DIR)/led_matrix.c
SRC += $(QUANTUM_DIR)/led_matrix_drivers.c
endif
endif
ifeq ($(strip $(LED_MATRIX_ENABLE)), IS31FL3731)
OPT_DEFS += -DIS31FL3731
COMMON_VPATH += $(DRIVER_PATH)/issi
SRC += is31fl3731-simple.c
QUANTUM_LIB_SRC += i2c_master.c
endif
RGB_MATRIX_ENABLE ?= no
ifneq ($(strip $(RGB_MATRIX_ENABLE)), no)
ifeq ($(filter $(RGB_MATRIX_ENABLE),$(VALID_MATRIX_TYPES)),)
$(error RGB_MATRIX_ENABLE="$(RGB_MATRIX_ENABLE)" is not a valid matrix type)
endif
OPT_DEFS += -DRGB_MATRIX_ENABLE
SRC += $(QUANTUM_DIR)/color.c
SRC += $(QUANTUM_DIR)/rgb_matrix.c
SRC += $(QUANTUM_DIR)/rgb_matrix_drivers.c
CIE1931_CURVE = yes
endif
ifeq ($(strip $(RGB_MATRIX_ENABLE)), yes)
RGB_MATRIX_ENABLE = IS31FL3731
endif
ifeq ($(strip $(RGB_MATRIX_ENABLE)), IS31FL3731)
OPT_DEFS += -DIS31FL3731 -DSTM32_I2C -DHAL_USE_I2C=TRUE
COMMON_VPATH += $(DRIVER_PATH)/issi
SRC += is31fl3731.c
QUANTUM_LIB_SRC += i2c_master.c
endif
ifeq ($(strip $(RGB_MATRIX_ENABLE)), IS31FL3733)
OPT_DEFS += -DIS31FL3733 -DSTM32_I2C -DHAL_USE_I2C=TRUE
COMMON_VPATH += $(DRIVER_PATH)/issi
SRC += is31fl3733.c
QUANTUM_LIB_SRC += i2c_master.c
endif
ifeq ($(strip $(RGB_MATRIX_ENABLE)), IS31FL3737)
OPT_DEFS += -DIS31FL3737 -DSTM32_I2C -DHAL_USE_I2C=TRUE
COMMON_VPATH += $(DRIVER_PATH)/issi
SRC += is31fl3737.c
QUANTUM_LIB_SRC += i2c_master.c
endif
ifeq ($(strip $(RGB_MATRIX_ENABLE)), WS2812)
OPT_DEFS += -DWS2812
SRC += ws2812.c
endif
ifeq ($(strip $(RGB_MATRIX_CUSTOM_KB)), yes)
OPT_DEFS += -DRGB_MATRIX_CUSTOM_KB
endif
ifeq ($(strip $(RGB_MATRIX_CUSTOM_USER)), yes)
OPT_DEFS += -DRGB_MATRIX_CUSTOM_USER
endif
ifeq ($(strip $(TAP_DANCE_ENABLE)), yes)
OPT_DEFS += -DTAP_DANCE_ENABLE
SRC += $(QUANTUM_DIR)/process_keycode/process_tap_dance.c
endif
ifeq ($(strip $(KEY_LOCK_ENABLE)), yes)
OPT_DEFS += -DKEY_LOCK_ENABLE
SRC += $(QUANTUM_DIR)/process_keycode/process_key_lock.c
endif
ifeq ($(strip $(PRINTING_ENABLE)), yes)
OPT_DEFS += -DPRINTING_ENABLE
SRC += $(QUANTUM_DIR)/process_keycode/process_printer.c
SRC += $(TMK_DIR)/protocol/serial_uart.c
endif
ifeq ($(strip $(AUTO_SHIFT_ENABLE)), yes)
OPT_DEFS += -DAUTO_SHIFT_ENABLE
SRC += $(QUANTUM_DIR)/process_keycode/process_auto_shift.c
ifeq ($(strip $(AUTO_SHIFT_MODIFIERS)), yes)
OPT_DEFS += -DAUTO_SHIFT_MODIFIERS
endif
endif
ifeq ($(strip $(SERIAL_LINK_ENABLE)), yes)
SRC += $(patsubst $(QUANTUM_PATH)/%,%,$(SERIAL_SRC))
OPT_DEFS += $(SERIAL_DEFS)
VAPTH += $(SERIAL_PATH)
endif
ifneq ($(strip $(VARIABLE_TRACE)),)
SRC += $(QUANTUM_DIR)/variable_trace.c
OPT_DEFS += -DNUM_TRACED_VARIABLES=$(strip $(VARIABLE_TRACE))
ifneq ($(strip $(MAX_VARIABLE_TRACE_SIZE)),)
OPT_DEFS += -DMAX_VARIABLE_TRACE_SIZE=$(strip $(MAX_VARIABLE_TRACE_SIZE))
endif
endif
ifeq ($(strip $(LCD_ENABLE)), yes)
CIE1931_CURVE = yes
endif
ifeq ($(strip $(BACKLIGHT_ENABLE)), yes)
ifeq ($(strip $(VISUALIZER_ENABLE)), yes)
CIE1931_CURVE = yes
endif
ifeq ($(strip $(BACKLIGHT_CUSTOM_DRIVER)), yes)
OPT_DEFS += -DBACKLIGHT_CUSTOM_DRIVER
endif
endif
ifeq ($(strip $(CIE1931_CURVE)), yes)
OPT_DEFS += -DUSE_CIE1931_CURVE
LED_TABLES = yes
endif
ifeq ($(strip $(LED_BREATHING_TABLE)), yes)
OPT_DEFS += -DUSE_LED_BREATHING_TABLE
LED_TABLES = yes
endif
ifeq ($(strip $(LED_TABLES)), yes)
SRC += $(QUANTUM_DIR)/led_tables.c
endif
ifeq ($(strip $(TERMINAL_ENABLE)), yes)
SRC += $(QUANTUM_DIR)/process_keycode/process_terminal.c
OPT_DEFS += -DTERMINAL_ENABLE
OPT_DEFS += -DUSER_PRINT
endif
ifeq ($(strip $(USB_HID_ENABLE)), yes)
include $(TMK_DIR)/protocol/usb_hid.mk
endif
ifeq ($(strip $(ENCODER_ENABLE)), yes)
SRC += $(QUANTUM_DIR)/encoder.c
OPT_DEFS += -DENCODER_ENABLE
endif
ifeq ($(strip $(HAPTIC_ENABLE)), DRV2605L)
COMMON_VPATH += $(DRIVER_PATH)/haptic
SRC += haptic.c
SRC += DRV2605L.c
QUANTUM_LIB_SRC += i2c_master.c
OPT_DEFS += -DHAPTIC_ENABLE
OPT_DEFS += -DDRV2605L
endif
ifeq ($(strip $(HAPTIC_ENABLE)), SOLENOID)
COMMON_VPATH += $(DRIVER_PATH)/haptic
SRC += haptic.c
SRC += solenoid.c
OPT_DEFS += -DHAPTIC_ENABLE
OPT_DEFS += -DSOLENOID_ENABLE
endif
ifeq ($(strip $(HD44780_ENABLE)), yes)
SRC += drivers/avr/hd44780.c
OPT_DEFS += -DHD44780_ENABLE
endif
ifeq ($(strip $(VELOCIKEY_ENABLE)), yes)
OPT_DEFS += -DVELOCIKEY_ENABLE
SRC += $(QUANTUM_DIR)/velocikey.c
endif
ifeq ($(strip $(DYNAMIC_KEYMAP_ENABLE)), yes)
OPT_DEFS += -DDYNAMIC_KEYMAP_ENABLE
SRC += $(QUANTUM_DIR)/dynamic_keymap.c
endif
ifeq ($(strip $(LEADER_ENABLE)), yes)
SRC += $(QUANTUM_DIR)/process_keycode/process_leader.c
OPT_DEFS += -DLEADER_ENABLE
endif
include $(DRIVER_PATH)/qwiic/qwiic.mk
QUANTUM_SRC:= \
$(QUANTUM_DIR)/quantum.c \
$(QUANTUM_DIR)/keymap_common.c \
$(QUANTUM_DIR)/keycode_config.c
# Include the standard or split matrix code if needed
ifneq ($(strip $(CUSTOM_MATRIX)), yes)
ifeq ($(strip $(SPLIT_KEYBOARD)), yes)
QUANTUM_SRC += $(QUANTUM_DIR)/split_common/matrix.c
else
QUANTUM_SRC += $(QUANTUM_DIR)/matrix.c
endif
endif
DEBOUNCE_DIR:= $(QUANTUM_DIR)/debounce
# Debounce Modules. Set DEBOUNCE_TYPE=custom if including one manually.
DEBOUNCE_TYPE?= sym_g
ifneq ($(strip $(DEBOUNCE_TYPE)), custom)
QUANTUM_SRC += $(DEBOUNCE_DIR)/$(strip $(DEBOUNCE_TYPE)).c
endif
ifeq ($(strip $(SPLIT_KEYBOARD)), yes)
POST_CONFIG_H += $(QUANTUM_DIR)/split_common/post_config.h
OPT_DEFS += -DSPLIT_KEYBOARD
# Include files used by all split keyboards
QUANTUM_SRC += $(QUANTUM_DIR)/split_common/split_util.c
# Determine which (if any) transport files are required
ifneq ($(strip $(SPLIT_TRANSPORT)), custom)
QUANTUM_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.
QUANTUM_LIB_SRC += $(QUANTUM_DIR)/split_common/serial.c \
i2c_master.c \
i2c_slave.c
endif
COMMON_VPATH += $(QUANTUM_PATH)/split_common
endif
ifeq ($(strip $(OLED_DRIVER_ENABLE)), yes)
OPT_DEFS += -DOLED_DRIVER_ENABLE
COMMON_VPATH += $(DRIVER_PATH)/oled
QUANTUM_LIB_SRC += i2c_master.c
SRC += oled_driver.c
endif
SPACE_CADET_ENABLE ?= yes
ifeq ($(strip $(SPACE_CADET_ENABLE)), yes)
SRC += $(QUANTUM_DIR)/process_keycode/process_space_cadet.c
OPT_DEFS += -DSPACE_CADET_ENABLE
endif

View File

@@ -1,375 +0,0 @@
{
"aliases": {
/*
* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐
* │ ² │ & │ é │ " │ ' │ ( │ § │ è │ ! │ ç │ à │ ) │ - │ │
* ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤
* │ │ A │ Z │ E │ R │ T │ Y │ U │ I │ O │ P │ ^ │ $ │ │
* ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │
* │ │ Q │ S │ D │ F │ G │ H │ J │ K │ L │ M │ ù │ µ │ │
* ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤
* │ │ < │ W │ X │ C │ V │ B │ N │ , │ ; │ : │ = │ │
* ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤
* │ │ │ │ │ │ │ │ │
* └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘
*/
"KC_GRV": {
"key": "BE_SUP2",
"label": "²",
}
"KC_1": {
"key": "BE_AMPR",
"label": "&",
}
"KC_2": {
"key": "BE_EACU",
"label": "é",
}
"KC_3": {
"key": "BE_DQUO",
"label": "\"",
}
"KC_4": {
"key": "BE_QUOT",
"label": "'",
}
"KC_5": {
"key": "BE_LPRN",
"label": "(",
}
"KC_6": {
"key": "BE_SECT",
"label": "§",
}
"KC_7": {
"key": "BE_EGRV",
"label": "è",
}
"KC_8": {
"key": "BE_EXLM",
"label": "!",
}
"KC_9": {
"key": "BE_CCED",
"label": "ç",
}
"KC_0": {
"key": "BE_AGRV",
"label": "à",
}
"KC_MINS": {
"key": "BE_RPRN",
"label": ")",
}
"KC_EQL": {
"key": "BE_MINS",
"label": "-",
}
"KC_Q": {
"key": "BE_A",
"label": "A",
}
"KC_W": {
"key": "BE_Z",
"label": "Z",
}
"KC_E": {
"key": "BE_E",
"label": "E",
}
"KC_R": {
"key": "BE_R",
"label": "R",
}
"KC_T": {
"key": "BE_T",
"label": "T",
}
"KC_Y": {
"key": "BE_Y",
"label": "Y",
}
"KC_U": {
"key": "BE_U",
"label": "U",
}
"KC_I": {
"key": "BE_I",
"label": "I",
}
"KC_O": {
"key": "BE_O",
"label": "O",
}
"KC_P": {
"key": "BE_P",
"label": "P",
}
"KC_LBRC": {
"key": "BE_DCIR",
"label": "^ (dead)",
}
"KC_RBRC": {
"key": "BE_DLR",
"label": "$",
}
"KC_A": {
"key": "BE_Q",
"label": "Q",
}
"KC_S": {
"key": "BE_S",
"label": "S",
}
"KC_D": {
"key": "BE_D",
"label": "D",
}
"KC_F": {
"key": "BE_F",
"label": "F",
}
"KC_G": {
"key": "BE_G",
"label": "G",
}
"KC_H": {
"key": "BE_H",
"label": "H",
}
"KC_J": {
"key": "BE_J",
"label": "J",
}
"KC_K": {
"key": "BE_K",
"label": "K",
}
"KC_L": {
"key": "BE_L",
"label": "L",
}
"KC_SCLN": {
"key": "BE_M",
"label": "M",
}
"KC_QUOT": {
"key": "BE_UGRV",
"label": "ù",
}
"KC_NUHS": {
"key": "BE_MICR",
"label": "µ",
}
"KC_NUBS": {
"key": "BE_LABK",
"label": "<",
}
"KC_Z": {
"key": "BE_W",
"label": "W",
}
"KC_X": {
"key": "BE_X",
"label": "X",
}
"KC_C": {
"key": "BE_C",
"label": "C",
}
"KC_V": {
"key": "BE_V",
"label": "V",
}
"KC_B": {
"key": "BE_B",
"label": "B",
}
"KC_N": {
"key": "BE_N",
"label": "N",
}
"KC_M": {
"key": "BE_COMM",
"label": ",",
}
"KC_COMM": {
"key": "BE_SCLN",
"label": ";",
}
"KC_DOT": {
"key": "BE_COLN",
"label": ":",
}
"KC_SLSH": {
"key": "BE_EQL",
"label": "=",
}
/* Shifted symbols
* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐
* │ ³ │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ ° │ _ │ │
* ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤
* │ │ │ │ │ │ │ │ │ │ │ │ ¨ │ * │ │
* ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │
* │ │ │ │ │ │ │ │ │ │ │ │ % │ £ │ │
* ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤
* │ │ > │ │ │ │ │ │ │ ? │ . │ / │ + │ │
* ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤
* │ │ │ │ │ │ │ │ │
* └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘
*/
"S(BE_SUP2)": {
"key": "BE_SUP3",
"label": "³",
}
"S(BE_AMPR)": {
"key": "BE_1",
"label": "1",
}
"S(BE_EACU)": {
"key": "BE_2",
"label": "2",
}
"S(BE_DQUO)": {
"key": "BE_3",
"label": "3",
}
"S(BE_QUOT)": {
"key": "BE_4",
"label": "4",
}
"S(BE_LPRN)": {
"key": "BE_5",
"label": "5",
}
"S(BE_SECT)": {
"key": "BE_6",
"label": "6",
}
"S(BE_EGRV)": {
"key": "BE_7",
"label": "7",
}
"S(BE_EXLM)": {
"key": "BE_8",
"label": "8",
}
"S(BE_CCED)": {
"key": "BE_9",
"label": "9",
}
"S(BE_AGRV)": {
"key": "BE_0",
"label": "0",
}
"S(BE_RPRN)": {
"key": "BE_DEG",
"label": "°",
}
"S(BE_MINS)": {
"key": "BE_UNDS",
"label": "_",
}
"S(BE_DCIR)": {
"key": "BE_DIAE",
"label": "¨ (dead)",
}
"S(BE_DLR)": {
"key": "BE_ASTR",
"label": "*",
}
"S(BE_UGRV)": {
"key": "BE_PERC",
"label": "%",
}
"S(BE_MICR)": {
"key": "BE_PND",
"label": "£",
}
"S(BE_LABK)": {
"key": "BE_RABK",
"label": ">",
}
"S(BE_COMM)": {
"key": "BE_QUES",
"label": "?",
}
"S(BE_SCLN)": {
"key": "BE_DOT",
"label": ".",
}
"S(BE_COLN)": {
"key": "BE_SLSH",
"label": "/",
}
"S(BE_EQL)": {
"key": "BE_PLUS",
"label": "+",
}
/* AltGr symbols
* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐
* │ │ | │ @ │ # │ │ │ ^ │ │ │ { │ } │ │ │ │
* ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤
* │ │ │ │ € │ │ │ │ │ │ │ │ [ │ ] │ │
* ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │
* │ │ │ │ │ │ │ │ │ │ │ │ ´ │ ` │ │
* ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤
* │ │ \ │ │ │ │ │ │ │ │ │ │ ~ │ │
* ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤
* │ │ │ │ │ │ │ │ │
* └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘
*/
"ALGR(BE_AMPR)": {
"key": "BE_PIPE",
"label": "|",
}
"ALGR(BE_EACU)": {
"key": "BE_AT",
"label": "@",
}
"ALGR(BE_DQUO)": {
"key": "BE_HASH",
"label": "#",
}
"ALGR(BE_SECT)": {
"key": "BE_CIRC",
"label": "^",
}
"ALGR(BE_CCED)": {
"key": "BE_LCBR",
"label": "{",
}
"ALGR(BE_AGRV)": {
"key": "BE_RCBR",
"label": "}",
}
"ALGR(BE_E)": {
"key": "BE_EURO",
"label": "€",
}
"ALGR(BE_DCIR)": {
"key": "BE_LBRC",
"label": "[",
}
"ALGR(BE_DLR)": {
"key": "BE_RBRC",
"label": "]",
}
"ALGR(BE_UGRV)": {
"key": "BE_ACUT",
"label": "´ (dead)",
}
"ALGR(BE_MICR)": {
"key": "BE_GRV",
"label": "` (dead)",
}
"ALGR(BE_LABK)": {
"key": "BE_BSLS",
"label": "\\",
}
"ALGR(BE_EQL)": {
"key": "BE_TILD",
"label": "~",
}
}
}

View File

@@ -1,632 +0,0 @@
{
"aliases": {
/*
* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐
* │ $ │ " │ « │ » │ ( │ ) │ @ │ + │ - │ / │ * │ = │ % │ │
* ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤
* │ │ B │ É │ P │ O │ È │ ^ │ V │ D │ L │ J │ Z │ W │ │
* ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │
* │ │ A │ U │ I │ E │ , │ C │ T │ S │ R │ N │ M │ Ç │ │
* ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤
* │ │ Ê │ À │ Y │ X │ . │ K │ ' │ Q │ G │ H │ F │ │
* ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤
* │ │ │ │ │ │ │ │ │
* └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘
*/
"KC_GRV": {
"key": "BP_DLR",
"label": "$",
}
"KC_1": {
"key": "BP_DQUO",
"label": "\"",
}
"KC_2": {
"key": "BP_LDAQ",
"label": "«",
}
"KC_3": {
"key": "BP_RDAQ",
"label": "»",
}
"KC_4": {
"key": "BP_LPRN",
"label": "(",
}
"KC_5": {
"key": "BP_RPRN",
"label": ")",
}
"KC_6": {
"key": "BP_AT",
"label": "@",
}
"KC_7": {
"key": "BP_PLUS",
"label": "+",
}
"KC_8": {
"key": "BP_MINS",
"label": "-",
}
"KC_9": {
"key": "BP_SLSH",
"label": "/",
}
"KC_0": {
"key": "BP_ASTR",
"label": "*",
}
"KC_MINS": {
"key": "BP_EQL",
"label": "=",
}
"KC_EQL": {
"key": "BP_PERC",
"label": "%",
}
"KC_Q": {
"key": "BP_B",
"label": "B",
}
"KC_W": {
"key": "BP_EACU",
"label": "É",
}
"KC_E": {
"key": "BP_P",
"label": "P",
}
"KC_R": {
"key": "BP_O",
"label": "O",
}
"KC_T": {
"key": "BP_EGRV",
"label": "È",
}
"KC_Y": {
"key": "BP_DCIR",
"label": "^ (dead)",
}
"KC_U": {
"key": "BP_V",
"label": "V",
}
"KC_I": {
"key": "BP_D",
"label": "D",
}
"KC_O": {
"key": "BP_L",
"label": "L",
}
"KC_P": {
"key": "BP_J",
"label": "J",
}
"KC_LBRC": {
"key": "BP_Z",
"label": "Z",
}
"KC_RBRC": {
"key": "BP_W",
"label": "W",
}
"KC_A": {
"key": "BP_A",
"label": "A",
}
"KC_S": {
"key": "BP_U",
"label": "U",
}
"KC_D": {
"key": "BP_I",
"label": "I",
}
"KC_F": {
"key": "BP_E",
"label": "E",
}
"KC_G": {
"key": "BP_COMM",
"label": ",",
}
"KC_H": {
"key": "BP_C",
"label": "C",
}
"KC_J": {
"key": "BP_T",
"label": "T",
}
"KC_K": {
"key": "BP_S",
"label": "S",
}
"KC_L": {
"key": "BP_R",
"label": "R",
}
"KC_SCLN": {
"key": "BP_N",
"label": "N",
}
"KC_QUOT": {
"key": "BP_M",
"label": "M",
}
"KC_BSLS": {
"key": "BP_CCED",
"label": "Ç",
}
"KC_NUBS": {
"key": "BP_ECIR",
"label": "Ê",
}
"KC_Z": {
"key": "BP_AGRV",
"label": "À",
}
"KC_X": {
"key": "BP_Y",
"label": "Y",
}
"KC_C": {
"key": "BP_X",
"label": "X",
}
"KC_V": {
"key": "BP_DOT",
"label": ".",
}
"KC_B": {
"key": "BP_K",
"label": "K",
}
"KC_N": {
"key": "BP_QUOT",
"label": "'",
}
"KC_M": {
"key": "BP_Q",
"label": "Q",
}
"KC_COMM": {
"key": "BP_G",
"label": "G",
}
"KC_DOT": {
"key": "BP_H",
"label": "H",
}
"KC_SLSH": {
"key": "BP_F",
"label": "F",
}
/* Shifted symbols
* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐
* │ # │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ ° │ ` │ │
* ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤
* │ │ │ │ │ │ │ ! │ │ │ │ │ │ │ │
* ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │
* │ │ │ │ │ │ ; │ │ │ │ │ │ │ │ │
* ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤
* │ │ │ │ │ │ : │ │ ? │ │ │ │ │ │
* ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤
* │ │ │ │ │ │ │ │ │
* └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘
*/
"S(BP_DLR)": {
"key": "BP_HASH",
"label": "#",
}
"S(BP_DQUO)": {
"key": "BP_1",
"label": "1",
}
"S(BP_LDAQ)": {
"key": "BP_2",
"label": "2",
}
"S(BP_RDAQ)": {
"key": "BP_3",
"label": "3",
}
"S(BP_LPRN)": {
"key": "BP_4",
"label": "4",
}
"S(BP_RPRN)": {
"key": "BP_5",
"label": "5",
}
"S(BP_AT)": {
"key": "BP_6",
"label": "6",
}
"S(BP_PLUS)": {
"key": "BP_7",
"label": "7",
}
"S(BP_MINS)": {
"key": "BP_8",
"label": "8",
}
"S(BP_SLSH)": {
"key": "BP_9",
"label": "9",
}
"S(BP_ASTR)": {
"key": "BP_0",
"label": "0",
}
"S(BP_EQL)": {
"key": "BP_DEG",
"label": "°",
}
"S(BP_PERC)": {
"key": "BP_GRV",
"label": "`",
}
"S(BP_DCIR)": {
"key": "BP_EXLM",
"label": "!",
}
"S(BP_COMM)": {
"key": "BP_SCLN",
"label": ";",
}
"S(BP_DOT)": {
"key": "BP_COLN",
"label": ":",
}
"S(BP_QUOT)": {
"key": "BP_QUES",
"label": "?",
}
"S(KC_SPC)": {
"key": "BP_NBSP",
"label": "(non-breaking space)",
}
/* AltGr symbols
* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐
* │ │ — │ < │ > │ [ │ ] │ ^ │ ± │ │ ÷ │ × │ ≠ │ ‰ │ │
* ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤
* │ │ | │ ´ │ & │ Œ │ ` │ ¡ │ ˇ │ Ð │ / │ IJ │ Ə │ ˘ │ │
* ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │
* │ │ Æ │ Ù │ ¨ │ € │ │ © │ Þ │ ẞ │ ® │ ~ │ ¯ │ ¸ │ │
* ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤
* │ │ │ \ │ { │ } │ … │ ~ │ ¿ │ ° │ │ † │ ˛ │ │
* ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤
* │ │ │ │ _ │ │ │ │ │
* └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘
*/
"ALGR(BP_DLR)": {
"key": "BP_NDSH",
"label": "",
}
"ALGR(BP_DQUO)": {
"key": "BP_MDSH",
"label": "—",
}
"ALGR(BP_LDAQ)": {
"key": "BP_LABK",
"label": "<",
}
"ALGR(BP_RDAQ)": {
"key": "BP_RABK",
"label": ">",
}
"ALGR(BP_LPRN)": {
"key": "BP_LBRC",
"label": "[",
}
"ALGR(BP_RPRN)": {
"key": "BP_RBRC",
"label": "]",
}
"ALGR(BP_AT)": {
"key": "BP_CIRC",
"label": "^",
}
"ALGR(BP_PLUS)": {
"key": "BP_PLMN",
"label": "±",
}
"ALGR(BP_MINS)": {
"key": "BP_MMNS",
"label": "",
}
"ALGR(BP_SLSH)": {
"key": "BP_DIV",
"label": "÷",
}
"ALGR(BP_ASTR)": {
"key": "BP_MUL",
"label": "×",
}
"ALGR(BP_EQL)": {
"key": "BP_NEQL",
"label": "≠",
}
"ALGR(BP_PERC)": {
"key": "BP_PERM",
"label": "‰",
}
"ALGR(BP_B)": {
"key": "BP_PIPE",
"label": "|",
}
"ALGR(BP_EACU)": {
"key": "BP_ACUT",
"label": "´ (dead)",
}
"ALGR(BP_P)": {
"key": "BP_AMPR",
"label": "&",
}
"ALGR(BP_O)": {
"key": "BP_OE",
"label": "Œ",
}
"ALGR(BP_EGRV)": {
"key": "BP_DGRV",
"label": "` (dead)",
}
"ALGR(BP_DCIR)": {
"key": "BP_IEXL",
"label": "¡",
}
"ALGR(BP_V)": {
"key": "BP_CARN",
"label": "ˇ (dead)",
}
"ALGR(BP_D)": {
"key": "BP_ETH",
"label": "Ð",
}
"ALGR(BP_L)": {
"key": "BP_DSLS",
"label": "/ (dead)",
}
"ALGR(BP_J)": {
"key": "BP_IJ",
"label": "IJ",
}
"ALGR(BP_Z)": {
"key": "BP_SCHW",
"label": "Ə",
}
"ALGR(BP_W)": {
"key": "BP_BREV",
"label": "˘ (dead)",
}
"ALGR(BP_A)": {
"key": "BP_AE",
"label": "Æ",
}
"ALGR(BP_U)": {
"key": "BP_UGRV",
"label": "Ù",
}
"ALGR(BP_I)": {
"key": "BP_DIAE",
"label": "¨ (dead)",
}
"ALGR(BP_E)": {
"key": "BP_EURO",
"label": "€",
}
"ALGR(BP_C)": {
"key": "BP_COPY",
"label": "©",
}
"ALGR(BP_T)": {
"key": "BP_THRN",
"label": "Þ",
}
"ALGR(BP_S)": {
"key": "BP_SS",
"label": "ẞ",
}
"ALGR(BP_R)": {
"key": "BP_REGD",
"label": "®",
}
"ALGR(BP_N)": {
"key": "BP_DTIL",
"label": "~ (dead)",
}
"ALGR(BP_M)": {
"key": "BP_MACR",
"label": "¯ (dead)",
}
"ALGR(BP_CCED)": {
"key": "BP_CEDL",
"label": "¸ (dead)",
}
"ALGR(BP_AGRV)": {
"key": "BP_BSLS",
"label": "\\",
}
"ALGR(BP_Y)": {
"key": "BP_LCBR",
"label": "{",
}
"ALGR(BP_X)": {
"key": "BP_RCBR",
"label": "}",
}
"ALGR(BP_DOT)": {
"key": "BP_ELLP",
"label": "…",
}
"ALGR(BP_K)": {
"key": "BP_TILD",
"label": "~",
}
"ALGR(BP_QUES)": {
"key": "BP_IQUE",
"label": "¿",
}
"ALGR(BP_Q)": {
"key": "BP_RNGA",
"label": "° (dead)",
}
"ALGR(BP_G)": {
"key": "BP_DGRK",
"label": "µ (dead Greek key)",
}
"ALGR(BP_H)": {
"key": "BP_DAGG",
"label": "†",
}
"ALGR(BP_F)": {
"key": "BP_OGON",
"label": "˛ (dead)",
}
"ALGR(KC_SPC)": {
"key": "BP_UNDS",
"label": "_",
}
/* Shift+AltGr symbols
* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐
* │ ¶ │ „ │ “ │ ” │ ≤ │ ≥ │ │ ¬ │ ¼ │ ½ │ ¾ │ │ ″ │ │
* ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤
* │ │ ¦ │ ˝ │ § │ │ │ │ │ │ │ │ │ │ │
* ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │
* │ │ │ │ ˙ │ ¤ │ ̛ │ ſ │ │ │ ™ │ │ º │ , │ │
* ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤
* │ │ │ │ │ · │ ⌨ │ ̉ │ ̣ │ │ ‡ │ ª │ │
* ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤
* │ │ │ │ │ │ │ │ │
* └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘
*/
"S(ALGR(BP_DLR))": {
"key": "BP_PARA",
"label": "¶",
}
"S(ALGR(BP_DQUO))": {
"key": "BP_DLQU",
"label": "„",
}
"S(ALGR(BP_LDAQ))": {
"key": "BP_LDQU",
"label": "“",
}
"S(ALGR(BP_RDAQ))": {
"key": "BP_RDQU",
"label": "”",
}
"S(ALGR(BP_LPRN))": {
"key": "BP_LEQL",
"label": "≤",
}
"S(ALGR(BP_RPRN))": {
"key": "BP_GEQL",
"label": "≥",
}
"S(ALGR(BP_PLUS))": {
"key": "BP_NOT",
"label": "¬",
}
"S(ALGR(BP_MINS))": {
"key": "BP_QRTR",
"label": "¼",
}
"S(ALGR(BP_SLSH))": {
"key": "BP_HALF",
"label": "½",
}
"S(ALGR(BP_ASTR))": {
"key": "BP_TQTR",
"label": "¾",
}
"S(ALGR(BP_EQL))": {
"key": "BP_PRIM",
"label": "",
}
"S(ALGR(BP_PERC))": {
"key": "BP_DPRM",
"label": "″",
}
"S(ALGR(BP_B))": {
"key": "BP_BRKP",
"label": "¦",
}
"S(ALGR(BP_EACU))": {
"key": "BP_DACU",
"label": "˝ (dead)",
}
"S(ALGR(BP_P))": {
"key": "BP_SECT",
"label": "§",
}
"S(ALGR(BP_I))": {
"key": "BP_DOTA",
"label": "˙ (dead)",
}
"S(ALGR(BP_E))": {
"key": "BP_CURR",
"label": "¤ (dead)",
}
"S(ALGR(BP_COMM))": {
"key": "BP_HORN",
"label": "̛ (dead)",
}
"S(ALGR(BP_C))": {
"key": "BP_LNGS",
"label": "ſ",
}
"S(ALGR(BP_R))": {
"key": "BP_TM",
"label": "™",
}
"S(ALGR(BP_M))": {
"key": "BP_MORD",
"label": "º",
}
"S(ALGR(BP_CCED))": {
"key": "BP_DCMM",
"label": ", (dead)",
}
"S(ALGR(BP_Y))": {
"key": "BP_LSQU",
"label": "",
}
"S(ALGR(BP_X))": {
"key": "BP_RSQU",
"label": "",
}
"S(ALGR(BP_DOT))": {
"key": "BP_MDDT",
"label": "·",
}
"S(ALGR(BP_K))": {
"key": "BP_KEYB",
"label": "⌨",
}
"S(ALGR(BP_QUOT))": {
"key": "BP_HOKA",
"label": "̉ (dead)",
}
"S(ALGR(BP_Q))": {
"key": "BP_DOTB",
"label": "̣ (dead)",
}
"S(ALGR(BP_H))": {
"key": "BP_DDAG",
"label": "‡",
}
"S(ALGR(BP_F))": {
"key": "BP_FORD",
"label": "ª",
}
"S(ALGR(KC_SPC))": {
"key": "BP_NNBS",
"label": "(narrow non-breaking space)",
}
}
}

View File

@@ -1,379 +0,0 @@
{
"aliases": {
/*
* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐
* │ ' │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │ │
* ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤
* │ │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ ´ │ [ │ │
* ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │
* │ │ A │ S │ D │ F │ G │ H │ J │ K │ L │ Ç │ ~ │ ] │ │
* ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┤
* │ │ \ │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ ; │ / │ │
* ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬──┴─┬────┤
* │ │ │ │ │ │ │ │ │
* └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘
*/
"KC_GRV": {
"key": "BR_QUOT",
"label": "'",
}
"KC_1": {
"key": "BR_1",
"label": "1",
}
"KC_2": {
"key": "BR_2",
"label": "2",
}
"KC_3": {
"key": "BR_3",
"label": "3",
}
"KC_4": {
"key": "BR_4",
"label": "4",
}
"KC_5": {
"key": "BR_5",
"label": "5",
}
"KC_6": {
"key": "BR_6",
"label": "6",
}
"KC_7": {
"key": "BR_7",
"label": "7",
}
"KC_8": {
"key": "BR_8",
"label": "8",
}
"KC_9": {
"key": "BR_9",
"label": "9",
}
"KC_0": {
"key": "BR_0",
"label": "0",
}
"KC_MINS": {
"key": "BR_MINS",
"label": "-",
}
"KC_EQL": {
"key": "BR_EQL",
"label": "=",
}
"KC_Q": {
"key": "BR_Q",
"label": "Q",
}
"KC_W": {
"key": "BR_W",
"label": "W",
}
"KC_E": {
"key": "BR_E",
"label": "E",
}
"KC_R": {
"key": "BR_R",
"label": "R",
}
"KC_T": {
"key": "BR_T",
"label": "T",
}
"KC_Y": {
"key": "BR_Y",
"label": "Y",
}
"KC_U": {
"key": "BR_U",
"label": "U",
}
"KC_I": {
"key": "BR_I",
"label": "I",
}
"KC_O": {
"key": "BR_O",
"label": "O",
}
"KC_P": {
"key": "BR_P",
"label": "P",
}
"KC_LBRC": {
"key": "BR_ACUT",
"label": "´ (dead)",
}
"KC_RBRC": {
"key": "BR_LBRC",
"label": "[",
}
"KC_A": {
"key": "BR_A",
"label": "A",
}
"KC_S": {
"key": "BR_S",
"label": "S",
}
"KC_D": {
"key": "BR_D",
"label": "D",
}
"KC_F": {
"key": "BR_F",
"label": "F",
}
"KC_G": {
"key": "BR_G",
"label": "G",
}
"KC_H": {
"key": "BR_H",
"label": "H",
}
"KC_J": {
"key": "BR_J",
"label": "J",
}
"KC_K": {
"key": "BR_K",
"label": "K",
}
"KC_L": {
"key": "BR_L",
"label": "L",
}
"KC_SCLN": {
"key": "BR_CCED",
"label": "Ç",
}
"KC_QUOT": {
"key": "BR_TILD",
"label": "~ (dead)",
}
"KC_BSLS": {
"key": "BR_RBRC",
"label": "]",
}
"KC_NUBS": {
"key": "BR_BSLS",
"label": "\\",
}
"KC_Z": {
"key": "BR_Z",
"label": "Z",
}
"KC_X": {
"key": "BR_X",
"label": "X",
}
"KC_C": {
"key": "BR_C",
"label": "C",
}
"KC_V": {
"key": "BR_V",
"label": "V",
}
"KC_B": {
"key": "BR_B",
"label": "B",
}
"KC_N": {
"key": "BR_N",
"label": "N",
}
"KC_M": {
"key": "BR_M",
"label": "M",
}
"KC_COMM": {
"key": "BR_COMM",
"label": ",",
}
"KC_DOT": {
"key": "BR_DOT",
"label": ".",
}
"KC_SLSH": {
"key": "BR_SCLN",
"label": ";",
}
"KC_INT1": {
"key": "BR_SLSH",
"label": "/",
}
"KC_PCMM": {
"key": "BR_PDOT",
"label": ".",
}
"KC_PDOT": {
"key": "BR_PCMM",
"label": ",",
}
/* Shifted symbols
* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐
* │ " │ ! │ @ │ # │ $ │ % │ ¨ │ & │ * │ ( │ ) │ _ │ + │ │
* ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤
* │ │ │ │ │ │ │ │ │ │ │ │ ` │ { │ │
* ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │
* │ │ │ │ │ │ │ │ │ │ │ │ ^ │ } │ │
* ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┤
* │ │ | │ │ │ │ │ │ │ │ < │ > │ : │ ? │ │
* ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬──┴─┬────┤
* │ │ │ │ │ │ │ │ │
* └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘
*/
"S(BR_QUOT)": {
"key": "BR_DQUO",
"label": "\"",
}
"S(BR_1)": {
"key": "BR_EXLM",
"label": "!",
}
"S(BR_2)": {
"key": "BR_AT",
"label": "@",
}
"S(BR_3)": {
"key": "BR_HASH",
"label": "#",
}
"S(BR_4)": {
"key": "BR_DLR",
"label": "$",
}
"S(BR_5)": {
"key": "BR_PERC",
"label": "%",
}
"S(BR_6)": {
"key": "BR_DIAE",
"label": "¨ (dead)",
}
"S(BR_7)": {
"key": "BR_AMPR",
"label": "&",
}
"S(BR_8)": {
"key": "BR_ASTR",
"label": "*",
}
"S(BR_9)": {
"key": "BR_LPRN",
"label": "(",
}
"S(BR_0)": {
"key": "BR_RPRN",
"label": ")",
}
"S(BR_MINS)": {
"key": "BR_UNDS",
"label": "_",
}
"S(BR_EQL)": {
"key": "BR_PLUS",
"label": "+",
}
"S(BR_ACUT)": {
"key": "BR_GRV",
"label": "` (dead)",
}
"S(BR_LBRC)": {
"key": "BR_LCBR",
"label": "{",
}
"S(BR_TILD)": {
"key": "BR_CIRC",
"label": "^ (dead)",
}
"S(BR_RBRC)": {
"key": "BR_RCBR",
"label": "}",
}
"S(BR_BSLS)": {
"key": "BR_PIPE",
"label": "|",
}
"S(BR_COMM)": {
"key": "BR_LABK",
"label": "<",
}
"S(BR_DOT)": {
"key": "BR_RABK",
"label": ">",
}
"S(BR_SCLN)": {
"key": "BR_COLN",
"label": ":",
}
"S(BR_SLSH)": {
"key": "BR_QUES",
"label": "?",
}
/* AltGr symbols
* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐
* │ │ ¹ │ ² │ ³ │ £ │ ¢ │ ¬ │ │ │ │ │ │ § │ │
* ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤
* │ │ │ │ ° │ │ │ │ │ │ │ │ │ ª │ │
* ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │
* │ │ │ │ │ │ │ │ │ │ │ │ │ º │ │
* ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┤
* │ │ │ │ │ ₢ │ │ │ │ │ │ │ │ │ │
* ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬──┴─┬────┤
* │ │ │ │ │ │ │ │ │
* └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘
*/
"ALGR(BR_1)": {
"key": "BR_SUP1",
"label": "¹",
}
"ALGR(BR_2)": {
"key": "BR_SUP2",
"label": "²",
}
"ALGR(BR_3)": {
"key": "BR_SUP3",
"label": "³",
}
"ALGR(BR_4)": {
"key": "BR_PND",
"label": "£",
}
"ALGR(BR_5)": {
"key": "BR_CENT",
"label": "¢",
}
"ALGR(BR_6)": {
"key": "BR_NOT",
"label": "¬",
}
"ALGR(BR_EQL)": {
"key": "BR_SECT",
"label": "§",
}
"ALGR(BR_E)": {
"key": "BR_DEG",
"label": "°",
}
"ALGR(BR_LBRC)": {
"key": "BR_FORD",
"label": "ª",
}
"ALGR(BR_RBRC)": {
"key": "BR_MORD",
"label": "º",
}
"ALGR(BR_C)": {
"key": "BR_CRUZ",
"label": "₢",
}
}
}

View File

@@ -1,407 +0,0 @@
{
"aliases": {
/*
* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐
* │ # │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │ │
* ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤
* │ │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ ^ │ ¸ │ │
* ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │
* │ │ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ ` │ < │ │
* ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤
* │ │ « │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ É │ │
* ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤
* │ │ │ │ │ │ │ │ │
* └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘
*/
"KC_GRV": {
"key": "FR_HASH",
"label": "#",
}
"KC_1": {
"key": "FR_1",
"label": "1",
}
"KC_2": {
"key": "FR_2",
"label": "2",
}
"KC_3": {
"key": "FR_3",
"label": "3",
}
"KC_4": {
"key": "FR_4",
"label": "4",
}
"KC_5": {
"key": "FR_5",
"label": "5",
}
"KC_6": {
"key": "FR_6",
"label": "6",
}
"KC_7": {
"key": "FR_7",
"label": "7",
}
"KC_8": {
"key": "FR_8",
"label": "8",
}
"KC_9": {
"key": "FR_9",
"label": "9",
}
"KC_0": {
"key": "FR_0",
"label": "0",
}
"KC_MINS": {
"key": "FR_MINS",
"label": "-",
}
"KC_EQL": {
"key": "FR_EQL",
"label": "=",
}
"KC_Q": {
"key": "FR_Q",
"label": "Q",
}
"KC_W": {
"key": "FR_W",
"label": "W",
}
"KC_E": {
"key": "FR_E",
"label": "E",
}
"KC_R": {
"key": "FR_R",
"label": "R",
}
"KC_T": {
"key": "FR_T",
"label": "T",
}
"KC_Y": {
"key": "FR_Y",
"label": "Y",
}
"KC_U": {
"key": "FR_U",
"label": "U",
}
"KC_I": {
"key": "FR_I",
"label": "I",
}
"KC_O": {
"key": "FR_O",
"label": "O",
}
"KC_P": {
"key": "FR_P",
"label": "P",
}
"KC_LBRC": {
"key": "FR_DCIR",
"label": "^ (dead)",
}
"KC_RBRC": {
"key": "FR_CEDL",
"label": "¸ (dead)",
}
"KC_A": {
"key": "FR_A",
"label": "A",
}
"KC_S": {
"key": "FR_S",
"label": "S",
}
"KC_D": {
"key": "FR_D",
"label": "D",
}
"KC_F": {
"key": "FR_F",
"label": "F",
}
"KC_G": {
"key": "FR_G",
"label": "G",
}
"KC_H": {
"key": "FR_H",
"label": "H",
}
"KC_J": {
"key": "FR_J",
"label": "J",
}
"KC_K": {
"key": "FR_K",
"label": "K",
}
"KC_L": {
"key": "FR_L",
"label": "L",
}
"KC_SCLN": {
"key": "FR_SCLN",
"label": ";",
}
"KC_QUOT": {
"key": "FR_DGRV",
"label": "` (dead)",
}
"KC_NUHS": {
"key": "FR_LABK",
"label": "<",
}
"KC_NUBS": {
"key": "FR_LDAQ",
"label": "«",
}
"KC_Z": {
"key": "FR_Z",
"label": "Z",
}
"KC_X": {
"key": "FR_X",
"label": "X",
}
"KC_C": {
"key": "FR_C",
"label": "C",
}
"KC_V": {
"key": "FR_V",
"label": "V",
}
"KC_B": {
"key": "FR_B",
"label": "B",
}
"KC_N": {
"key": "FR_N",
"label": "N",
}
"KC_M": {
"key": "FR_M",
"label": "M",
}
"KC_COMM": {
"key": "FR_COMM",
"label": ",",
}
"KC_DOT": {
"key": "FR_DOT",
"label": ".",
}
"KC_SLSH": {
"key": "FR_EACU",
"label": "É",
}
/* Shifted symbols
* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐
* │ | │ ! │ " │ / │ $ │ % │ ? │ & │ * │ ( │ ) │ _ │ + │ │
* ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤
* │ │ │ │ │ │ │ │ │ │ │ │ │ ¨ │ │
* ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │
* │ │ │ │ │ │ │ │ │ │ │ : │ │ > │ │
* ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤
* │ │ » │ │ │ │ │ │ │ │ ' │ │ │ │
* ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤
* │ │ │ │ │ │ │ │ │
* └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘
*/
"S(FR_HASH)": {
"key": "FR_PIPE",
"label": "|",
}
"S(FR_1)": {
"key": "FR_EXLM",
"label": "!",
}
"S(FR_2)": {
"key": "FR_DQUO",
"label": "\"",
}
"S(FR_3)": {
"key": "FR_SLSH",
"label": "/",
}
"S(FR_4)": {
"key": "FR_DLR",
"label": "$",
}
"S(FR_5)": {
"key": "FR_PERC",
"label": "%",
}
"S(FR_6)": {
"key": "FR_QUES",
"label": "?",
}
"S(FR_7)": {
"key": "FR_AMPR",
"label": "&",
}
"S(FR_8)": {
"key": "FR_ASTR",
"label": "*",
}
"S(FR_9)": {
"key": "FR_LPRN",
"label": "(",
}
"S(FR_0)": {
"key": "FR_RPRN",
"label": ")",
}
"S(FR_MINS)": {
"key": "FR_UNDS",
"label": "_",
}
"S(FR_EQL)": {
"key": "FR_PLUS",
"label": "+",
}
"S(FR_CEDL)": {
"key": "FR_DIAE",
"label": "¨ (dead)",
}
"S(FR_SCLN)": {
"key": "FR_COLN",
"label": ":",
}
"S(FR_LABK)": {
"key": "FR_RABK",
"label": ">",
}
"S(FR_LDAQ)": {
"key": "FR_RDAQ",
"label": "»",
}
"S(FR_COMM)": {
"key": "FR_QUOT",
"label": "'",
}
/* AltGr symbols
* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐
* │ \ │ ± │ @ │ £ │ ¢ │ ¤ │ ¬ │ ¦ │ ² │ ³ │ ¼ │ ½ │ ¾ │ │
* ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤
* │ │ │ │ │ │ │ │ │ │ § │ ¶ │ [ │ ] │ │
* ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │
* │ │ │ │ │ │ │ │ │ │ │ ~ │ { │ } │ │
* ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤
* │ │ ° │ │ │ │ │ │ │ µ │ ¯ │ - │ ´ │ │
* ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤
* │ │ │ │ │ │ │ │ │
* └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘
*/
"ALGR(FR_HASH)": {
"key": "FR_BSLS",
"label": "\\",
}
"ALGR(FR_1)": {
"key": "FR_PLMN",
"label": "±",
}
"ALGR(FR_2)": {
"key": "FR_AT",
"label": "@",
}
"ALGR(FR_3)": {
"key": "FR_PND",
"label": "£",
}
"ALGR(FR_4)": {
"key": "FR_CENT",
"label": "¢",
}
"ALGR(FR_5)": {
"key": "FR_CURR",
"label": "¤",
}
"ALGR(FR_6)": {
"key": "FR_NOT",
"label": "¬",
}
"ALGR(FR_7)": {
"key": "FR_BRKP",
"label": "¦",
}
"ALGR(FR_8)": {
"key": "FR_SUP2",
"label": "²",
}
"ALGR(FR_9)": {
"key": "FR_SUP3",
"label": "³",
}
"ALGR(FR_0)": {
"key": "FR_QRTR",
"label": "¼",
}
"ALGR(FR_MINS)": {
"key": "FR_HALF",
"label": "½",
}
"ALGR(FR_EQL)": {
"key": "FR_TQTR",
"label": "¾",
}
"ALGR(FR_O)": {
"key": "FR_SECT",
"label": "§",
}
"ALGR(FR_P)": {
"key": "FR_PARA",
"label": "¶",
}
"ALGR(FR_DCIR)": {
"key": "FR_LBRC",
"label": "[",
}
"ALGR(FR_CEDL)": {
"key": "FR_RBRC",
"label": "]",
}
"ALGR(FR_SCLN)": {
"key": "FR_TILD",
"label": "~",
}
"ALGR(FR_DGRV)": {
"key": "FR_LCBR",
"label": "{",
}
"ALGR(FR_LABK)": {
"key": "FR_RCBR",
"label": "}",
}
"ALGR(FR_LDAQ)": {
"key": "FR_DEG",
"label": "°",
}
"ALGR(FR_M)": {
"key": "FR_MICR",
"label": "µ",
}
"ALGR(FR_COMM)": {
"key": "FR_MACR",
"label": "¯",
}
"ALGR(FR_DOT)": {
"key": "FR_SHYP",
"label": "­ (soft hyphen)",
}
"ALGR(FR_EACU)": {
"key": "FR_ACUT",
"label": "´ (dead)",
}
}
}

View File

@@ -1,641 +0,0 @@
{
"aliases": {
/*
* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐
* │ / │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │ │
* ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤
* │ │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ ^ │ Ç │ │
* ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │
* │ │ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ È │ À │ │
* ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤
* │ │ Ù │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ É │ │
* ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤
* │ │ │ │ │ │ │ │ │
* └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘
*/
"KC_GRV": {
"key": "CA_SLSH",
"label": "/",
}
"KC_1": {
"key": "CA_1",
"label": "1",
}
"KC_2": {
"key": "CA_2",
"label": "2",
}
"KC_3": {
"key": "CA_3",
"label": "3",
}
"KC_4": {
"key": "CA_4",
"label": "4",
}
"KC_5": {
"key": "CA_5",
"label": "5",
}
"KC_6": {
"key": "CA_6",
"label": "6",
}
"KC_7": {
"key": "CA_7",
"label": "7",
}
"KC_8": {
"key": "CA_8",
"label": "8",
}
"KC_9": {
"key": "CA_9",
"label": "9",
}
"KC_0": {
"key": "CA_0",
"label": "0",
}
"KC_MINS": {
"key": "CA_MINS",
"label": "-",
}
"KC_EQL": {
"key": "CA_EQL",
"label": "=",
}
"KC_Q": {
"key": "CA_Q",
"label": "Q",
}
"KC_W": {
"key": "CA_W",
"label": "W",
}
"KC_E": {
"key": "CA_E",
"label": "E",
}
"KC_R": {
"key": "CA_R",
"label": "R",
}
"KC_T": {
"key": "CA_T",
"label": "T",
}
"KC_Y": {
"key": "CA_Y",
"label": "Y",
}
"KC_U": {
"key": "CA_U",
"label": "U",
}
"KC_I": {
"key": "CA_I",
"label": "I",
}
"KC_O": {
"key": "CA_O",
"label": "O",
}
"KC_P": {
"key": "CA_P",
"label": "P",
}
"KC_LBRC": {
"key": "CA_CIRC",
"label": "^ (dead)",
}
"KC_RBRC": {
"key": "CA_CCED",
"label": "Ç",
}
"KC_A": {
"key": "CA_A",
"label": "A",
}
"KC_S": {
"key": "CA_S",
"label": "S",
}
"KC_D": {
"key": "CA_D",
"label": "D",
}
"KC_F": {
"key": "CA_F",
"label": "F",
}
"KC_G": {
"key": "CA_G",
"label": "G",
}
"KC_H": {
"key": "CA_H",
"label": "H",
}
"KC_J": {
"key": "CA_J",
"label": "J",
}
"KC_K": {
"key": "CA_K",
"label": "K",
}
"KC_L": {
"key": "CA_L",
"label": "L",
}
"KC_SCLN": {
"key": "CA_SCLN",
"label": ";",
}
"KC_QUOT": {
"key": "CA_EGRV",
"label": "É",
}
"KC_NUHS": {
"key": "CA_AGRV",
"label": "À",
}
"KC_NUBS": {
"key": "CA_UGRV",
"label": "Ù",
}
"KC_Z": {
"key": "CA_Z",
"label": "Z",
}
"KC_X": {
"key": "CA_X",
"label": "X",
}
"KC_C": {
"key": "CA_C",
"label": "C",
}
"KC_V": {
"key": "CA_V",
"label": "V",
}
"KC_B": {
"key": "CA_B",
"label": "B",
}
"KC_N": {
"key": "CA_N",
"label": "N",
}
"KC_M": {
"key": "CA_M",
"label": "M",
}
"KC_COMM": {
"key": "CA_COMM",
"label": ",",
}
"KC_DOT": {
"key": "CA_DOT",
"label": ".",
}
"KC_SLSH": {
"key": "CA_EACU",
"label": "É",
}
/* Shifted symbols
* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐
* │ \ │ ! │ @ │ # │ $ │ % │ ? │ & │ * │ ( │ ) │ _ │ + │ │
* ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤
* │ │ │ │ │ │ │ │ │ │ │ │ ¨ │ │ │
* ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │
* │ │ │ │ │ │ │ │ │ │ │ : │ │ │ │
* ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤
* │ │ │ │ │ │ │ │ │ │ ' │ " │ │ │
* ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤
* │ │ │ │ │ │ │ │ │
* └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘
*/
"S(CA_SLSH)": {
"key": "CA_BSLS",
"label": "\\",
}
"S(CA_1)": {
"key": "CA_EXLM",
"label": "!",
}
"S(CA_2)": {
"key": "CA_AT",
"label": "@",
}
"S(CA_3)": {
"key": "CA_HASH",
"label": "#",
}
"S(CA_4)": {
"key": "CA_DLR",
"label": "$",
}
"S(CA_5)": {
"key": "CA_PERC",
"label": "%",
}
"S(CA_6)": {
"key": "CA_QUES",
"label": "?",
}
"S(CA_7)": {
"key": "CA_AMPR",
"label": "&",
}
"S(CA_8)": {
"key": "CA_ASTR",
"label": "*",
}
"S(CA_9)": {
"key": "CA_LPRN",
"label": "(",
}
"S(CA_0)": {
"key": "CA_RPRN",
"label": ")",
}
"S(CA_MINS)": {
"key": "CA_UNDS",
"label": "_",
}
"S(CA_EQL)": {
"key": "CA_PLUS",
"label": "+",
}
"S(CA_CIRC)": {
"key": "CA_DIAE",
"label": "¨ (dead)",
}
"S(CA_SCLN)": {
"key": "CA_COLN",
"label": ":",
}
"S(CA_COMM)": {
"key": "CA_QUOT",
"label": "'",
}
"S(CA_DOT)": {
"key": "CA_DQUO",
"label": "\"",
}
/* AltGr symbols
* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐
* │ | │ │ │ │ ¤ │ │ │ { │ } │ [ │ ] │ │ ¬ │ │
* ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤
* │ │ │ │ € │ │ │ │ │ │ │ │ ` │ ~ │ │
* ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │
* │ │ │ │ │ │ │ │ │ │ │ ° │ │ │ │
* ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤
* │ │ │ « │ » │ │ │ │ │ │ < │ > │ │ │
* ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤
* │ │ │ │ │ │ │ │ │
* └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘
*/
"ALGR(CA_SLSH)": {
"key": "CA_PIPE",
"label": "|",
}
"ALGR(CA_4)": {
"key": "CA_CURR",
"label": "¤",
}
"ALGR(CA_7)": {
"key": "CA_LCBR",
"label": "{",
}
"ALGR(CA_8)": {
"key": "CA_RCBR",
"label": "}",
}
"ALGR(CA_9)": {
"key": "CA_LBRC",
"label": "[",
}
"ALGR(CA_0)": {
"key": "CA_RBRC",
"label": "]",
}
"ALGR(CA_EQL)": {
"key": "CA_NOT",
"label": "¬",
}
"ALGR(CA_E)": {
"key": "CA_EURO",
"label": "€",
}
"ALGR(CA_CIRC)": {
"key": "CA_GRV",
"label": "` (dead)",
}
"ALGR(CA_CCED)": {
"key": "CA_DTIL",
"label": "~ (dead)",
}
"ALGR(CA_SCLN)": {
"key": "CA_DEG",
"label": "°",
}
"ALGR(CA_Z)": {
"key": "CA_LDAQ",
"label": "«",
}
"ALGR(CA_X)": {
"key": "CA_RDAQ",
"label": "»",
}
"ALGR(CA_COMM)": {
"key": "CA_LABK",
"label": "<",
}
"ALGR(CA_DOT)": {
"key": "CA_RABK",
"label": ">",
}
/* Right Ctrl symbols
* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐
* │ │ ¹ │ ² │ ³ │ ¼ │ ½ │ ¾ │ │ │ │ │ │ ¸ │ │
* ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤
* │ │ Ω │ Ł │ Œ │ ¶ │ Ŧ │ ← │ ↓ │ → │ Ø │ Þ │ │ ~ │ │
* ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │
* │ │ Æ │ ß │ Ð │ │ Ŋ │ Ħ │ IJ │ ĸ │ Ŀ │ ´ │ │ │ │
* ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤
* │ │ │ │ │ ¢ │ “ │ ” │ ʼn │ μ │ ― │ ˙ │ │ │
* ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤
* │ │ │ │ │ │ │ │ │
* └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘
*/
"RCTL(CA_1)": {
"key": "CA_SUP1",
"label": "¹",
}
"RCTL(CA_2)": {
"key": "CA_SUP2",
"label": "²",
}
"RCTL(CA_3)": {
"key": "CA_SUP3",
"label": "³",
}
"RCTL(CA_4)": {
"key": "CA_QRTR",
"label": "¼",
}
"RCTL(CA_5)": {
"key": "CA_HALF",
"label": "½",
}
"RCTL(CA_6)": {
"key": "CA_TQTR",
"label": "¾",
}
"RCTL(CA_EQL)": {
"key": "CA_CEDL",
"label": "¸ (dead)",
}
"RCTL(CA_Q)": {
"key": "CA_OMEG",
"label": "Ω",
}
"RCTL(CA_W)": {
"key": "CA_LSTR",
"label": "Ł",
}
"RCTL(CA_E)": {
"key": "CA_OE",
"label": "Œ",
}
"RCTL(CA_R)": {
"key": "CA_PARA",
"label": "¶",
}
"RCTL(CA_T)": {
"key": "CA_TSTR",
"label": "Ŧ",
}
"RCTL(CA_Y)": {
"key": "CA_LARR",
"label": "←",
}
"RCTL(CA_U)": {
"key": "CA_DARR",
"label": "↓",
}
"RCTL(CA_I)": {
"key": "CA_RARR",
"label": "→",
}
"RCTL(CA_O)": {
"key": "CA_OSTR",
"label": "Ø",
}
"RCTL(CA_P)": {
"key": "CA_THRN",
"label": "Þ",
}
"RCTL(CA_CCED)": {
"key": "CA_TILD",
"label": "~",
}
"RCTL(CA_A)": {
"key": "CA_AE",
"label": "Æ",
}
"RCTL(CA_S)": {
"key": "CA_SS",
"label": "ß",
}
"RCTL(CA_D)": {
"key": "CA_ETH",
"label": "Ð",
}
"RCTL(CA_G)": {
"key": "CA_ENG",
"label": "Ŋ",
}
"RCTL(CA_H)": {
"key": "CA_HSTR",
"label": "Ħ",
}
"RCTL(CA_J)": {
"key": "CA_IJ",
"label": "IJ",
}
"RCTL(CA_K)": {
"key": "CA_KRA",
"label": "ĸ",
}
"RCTL(CA_L)": {
"key": "CA_LMDT",
"label": "Ŀ",
}
"RCTL(CA_SCLN)": {
"key": "CA_ACUT",
"label": "´ (dead)",
}
"RCTL(CA_C)": {
"key": "CA_CENT",
"label": "¢",
}
"RCTL(CA_V)": {
"key": "CA_LDQU",
"label": "“",
}
"RCTL(CA_B)": {
"key": "CA_RDQU",
"label": "”",
}
"RCTL(CA_N)": {
"key": "CA_APSN",
"label": "ʼn",
}
"RCTL(CA_M)": {
"key": "CA_MICR",
"label": "μ",
}
"RCTL(CA_COMM)": {
"key": "CA_HRZB",
"label": "―",
}
"RCTL(CA_DOT)": {
"key": "CA_DOTA",
"label": "˙ (dead)",
}
/* Shift+Right Ctrl symbols
* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐
* │ - │ ¡ │ │ £ │ │ ⅜ │ ⅝ │ ⅞ │ ™ │ ± │ │ ¿ │ ˛ │ │
* ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤
* │ │ │ │ │ ® │ │ ¥ │ ↑ │ ı │ │ │ ° │ ¯ │ │
* ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │
* │ │ │ § │ │ ª │ │ │ │ │ │ ˝ │ ˇ │ ˘ │ │
* ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤
* │ │ ¦ │ │ │ © │ │ ♪ │ º │ × │ ÷ │ │ │
* ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤
* │ │ │ │ │ │ │ │ │
* └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘
*/
"RCTL(S(CA_SLSH))": {
"key": "CA_SHYP",
"label": "­ (soft hyphen)",
}
"RCTL(S(CA_1))": {
"key": "CA_IEXL",
"label": "¡",
}
"RCTL(S(CA_3))": {
"key": "CA_PND",
"label": "£",
}
"RCTL(S(CA_5))": {
"key": "CA_TEIG",
"label": "⅜",
}
"RCTL(S(CA_6))": {
"key": "CA_FEIG",
"label": "⅝",
}
"RCTL(S(CA_7))": {
"key": "CA_SEIG",
"label": "⅞",
}
"RCTL(S(CA_8))": {
"key": "CA_TM",
"label": "™",
}
"RCTL(S(CA_9))": {
"key": "CA_PLMN",
"label": "±",
}
"RCTL(S(CA_MINS))": {
"key": "CA_IQUE",
"label": "¿",
}
"RCTL(S(CA_EQL))": {
"key": "CA_OGON",
"label": "˛ (dead)",
}
"RCTL(S(CA_R))": {
"key": "CA_REGD",
"label": "®",
}
"RCTL(S(CA_Y))": {
"key": "CA_YEN",
"label": "¥",
}
"RCTL(S(CA_U))": {
"key": "CA_UARR",
"label": "↑",
}
"RCTL(S(CA_I))": {
"key": "CA_DLSI",
"label": "ı",
}
"RCTL(S(CA_CIRC))": {
"key": "CA_RNGA",
"label": "° (dead)",
}
"RCTL(S(CA_CCED))": {
"key": "CA_MACR",
"label": "¯ (dead)",
}
"RCTL(S(CA_S))": {
"key": "CA_SECT",
"label": "§",
}
"RCTL(S(CA_F))": {
"key": "CA_FORD",
"label": "ª",
}
"RCTL(S(CA_SCLN))": {
"key": "CA_DACU",
"label": "˝ (dead)",
}
"RCTL(S(CA_EGRV))": {
"key": "CA_CARN",
"label": "ˇ (dead)",
}
"RCTL(S(CA_AGRV))": {
"key": "CA_BREV",
"label": "˘ (dead)",
}
"RCTL(S(CA_UGRV))": {
"key": "CA_BRKP",
"label": "¦",
}
"RCTL(S(CA_C))": {
"key": "CA_COPY",
"label": "©",
}
"RCTL(S(CA_V))": {
"key": "CA_LSQU",
"label": "",
}
"RCTL(S(CA_B))": {
"key": "CA_RSQU",
"label": "",
}
"RCTL(S(CA_N))": {
"key": "CA_ENOT",
"label": "♪",
}
"RCTL(S(CA_M))": {
"key": "CA_MORD",
"label": "º",
}
"RCTL(S(CA_COMM))": {
"key": "CA_MUL",
"label": "×",
}
"RCTL(S(CA_DOT))": {
"key": "CA_DIV",
"label": "÷",
}
}
}

View File

@@ -1,302 +0,0 @@
{
"aliases": {
/*
* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐
* │ ` │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │ │
* ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤
* │ │ Q │ W │ F │ P │ G │ J │ L │ U │ Y │ ; │ [ │ ] │ \ │
* ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤
* │ │ A │ R │ S │ T │ D │ H │ N │ E │ I │ O │ ' │ │
* ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────────┤
* │ │ Z │ X │ C │ V │ B │ K │ M │ , │ . │ / │ │
* ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤
* │ │ │ │ │ │ │ │ │
* └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘
*/
"KC_GRV": {
"key": "CM_GRV",
"label": "`",
}
"KC_1": {
"key": "CM_1",
"label": "1",
}
"KC_2": {
"key": "CM_2",
"label": "2",
}
"KC_3": {
"key": "CM_3",
"label": "3",
}
"KC_4": {
"key": "CM_4",
"label": "4",
}
"KC_5": {
"key": "CM_5",
"label": "5",
}
"KC_6": {
"key": "CM_6",
"label": "6",
}
"KC_7": {
"key": "CM_7",
"label": "7",
}
"KC_8": {
"key": "CM_8",
"label": "8",
}
"KC_9": {
"key": "CM_9",
"label": "9",
}
"KC_0": {
"key": "CM_0",
"label": "0",
}
"KC_MINS": {
"key": "CM_MINS",
"label": "-",
}
"KC_EQL": {
"key": "CM_EQL",
"label": "=",
}
"KC_Q": {
"key": "CM_Q",
"label": "Q",
}
"KC_W": {
"key": "CM_W",
"label": "W",
}
"KC_E": {
"key": "CM_F",
"label": "F",
}
"KC_R": {
"key": "CM_P",
"label": "P",
}
"KC_T": {
"key": "CM_G",
"label": "G",
}
"KC_Y": {
"key": "CM_J",
"label": "J",
}
"KC_U": {
"key": "CM_L",
"label": "L",
}
"KC_I": {
"key": "CM_U",
"label": "U",
}
"KC_O": {
"key": "CM_Y",
"label": "Y",
}
"KC_P": {
"key": "CM_SCLN",
"label": ";",
}
"KC_LBRC": {
"key": "CM_LBRC",
"label": "[",
}
"KC_RBRC": {
"key": "CM_RBRC",
"label": "]",
}
"KC_BSLS": {
"key": "CM_BSLS",
"label": "\\",
}
"KC_A": {
"key": "CM_A",
"label": "A",
}
"KC_S": {
"key": "CM_R",
"label": "R",
}
"KC_D": {
"key": "CM_S",
"label": "S",
}
"KC_F": {
"key": "CM_T",
"label": "T",
}
"KC_G": {
"key": "CM_D",
"label": "D",
}
"KC_H": {
"key": "CM_H",
"label": "H",
}
"KC_J": {
"key": "CM_N",
"label": "N",
}
"KC_K": {
"key": "CM_E",
"label": "E",
}
"KC_L": {
"key": "CM_I",
"label": "I",
}
"KC_SCLN": {
"key": "CM_O",
"label": "O",
}
"KC_QUOT": {
"key": "CM_QUOT",
"label": "'",
}
"KC_Z": {
"key": "CM_Z",
"label": "Z",
}
"KC_X": {
"key": "CM_X",
"label": "X",
}
"KC_C": {
"key": "CM_C",
"label": "C",
}
"KC_V": {
"key": "CM_V",
"label": "V",
}
"KC_B": {
"key": "CM_B",
"label": "B",
}
"KC_N": {
"key": "CM_K",
"label": "K",
}
"KC_M": {
"key": "CM_M",
"label": "M",
}
"KC_COMM": {
"key": "CM_COMM",
"label": ",",
}
"KC_DOT": {
"key": "CM_DOT",
"label": ".",
}
"KC_SLSH": {
"key": "CM_SLSH",
"label": "/",
}
/* Shifted symbols
* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐
* │ ~ │ ! │ @ │ # │ $ │ % │ ^ │ & │ * │ ( │ ) │ _ │ + │ │
* ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤
* │ │ │ │ │ │ │ │ │ │ │ : │ { │ } │ | │
* ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤
* │ │ │ │ │ │ │ │ │ │ │ │ " │ │
* ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────────┤
* │ │ │ │ │ │ │ │ │ < │ > │ ? │ │
* ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤
* │ │ │ │ │ │ │ │ │
* └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘
*/
"S(CM_GRV)": {
"key": "CM_TILD",
"label": "~",
}
"S(CM_1)": {
"key": "CM_EXLM",
"label": "!",
}
"S(CM_2)": {
"key": "CM_AT",
"label": "@",
}
"S(CM_3)": {
"key": "CM_HASH",
"label": "#",
}
"S(CM_4)": {
"key": "CM_DLR",
"label": "$",
}
"S(CM_5)": {
"key": "CM_PERC",
"label": "%",
}
"S(CM_6)": {
"key": "CM_CIRC",
"label": "^",
}
"S(CM_7)": {
"key": "CM_AMPR",
"label": "&",
}
"S(CM_8)": {
"key": "CM_ASTR",
"label": "*",
}
"S(CM_9)": {
"key": "CM_LPRN",
"label": "(",
}
"S(CM_0)": {
"key": "CM_RPRN",
"label": ")",
}
"S(CM_MINS)": {
"key": "CM_UNDS",
"label": "_",
}
"S(CM_EQL)": {
"key": "CM_PLUS",
"label": "+",
}
"S(CM_SCLN)": {
"key": "CM_COLN",
"label": ":",
}
"S(CM_LBRC)": {
"key": "CM_LCBR",
"label": "{",
}
"S(CM_RBRC)": {
"key": "CM_RCBR",
"label": "}",
}
"S(CM_BSLS)": {
"key": "CM_PIPE",
"label": "|",
}
"S(CM_QUOT)": {
"key": "CM_DQUO",
"label": "\"",
}
"S(CM_COMM)": {
"key": "CM_LABK",
"label": "<",
}
"S(CM_DOT)": {
"key": "CM_RABK",
"label": ">",
}
"S(CM_SLSH)": {
"key": "CM_QUES",
"label": "?",
}
}
}

View File

@@ -1,403 +0,0 @@
{
"aliases": {
/*
* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐
* │ ¸ │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ ' │ + │ │
* ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤
* │ │ Q │ W │ E │ R │ T │ Z │ U │ I │ O │ P │ Š │ Đ │ │
* ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │
* │ │ A │ S │ D │ F │ G │ H │ J │ K │ L │ Č │ Ć │ Ž │ │
* ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤
* │ │ < │ Y │ X │ C │ V │ B │ N │ M │ , │ . │ - │ │
* ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤
* │ │ │ │ │ │ │ │ │
* └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘
*/
"KC_GRV": {
"key": "HR_CEDL",
"label": "¸ (dead)",
}
"KC_1": {
"key": "HR_1",
"label": "1",
}
"KC_2": {
"key": "HR_2",
"label": "2",
}
"KC_3": {
"key": "HR_3",
"label": "3",
}
"KC_4": {
"key": "HR_4",
"label": "4",
}
"KC_5": {
"key": "HR_5",
"label": "5",
}
"KC_6": {
"key": "HR_6",
"label": "6",
}
"KC_7": {
"key": "HR_7",
"label": "7",
}
"KC_8": {
"key": "HR_8",
"label": "8",
}
"KC_9": {
"key": "HR_9",
"label": "9",
}
"KC_0": {
"key": "HR_0",
"label": "0",
}
"KC_MINS": {
"key": "HR_QUOT",
"label": "'",
}
"KC_EQL": {
"key": "HR_PLUS",
"label": "+",
}
"KC_Q": {
"key": "HR_Q",
"label": "Q",
}
"KC_W": {
"key": "HR_W",
"label": "W",
}
"KC_E": {
"key": "HR_E",
"label": "E",
}
"KC_R": {
"key": "HR_R",
"label": "R",
}
"KC_T": {
"key": "HR_T",
"label": "T",
}
"KC_Y": {
"key": "HR_Z",
"label": "Z",
}
"KC_U": {
"key": "HR_U",
"label": "U",
}
"KC_I": {
"key": "HR_I",
"label": "I",
}
"KC_O": {
"key": "HR_O",
"label": "O",
}
"KC_P": {
"key": "HR_P",
"label": "P",
}
"KC_LBRC": {
"key": "HR_SCAR",
"label": "Š",
}
"KC_RBRC": {
"key": "HR_DSTR",
"label": "Đ",
}
"KC_A": {
"key": "HR_A",
"label": "A",
}
"KC_S": {
"key": "HR_S",
"label": "S",
}
"KC_D": {
"key": "HR_D",
"label": "D",
}
"KC_F": {
"key": "HR_F",
"label": "F",
}
"KC_G": {
"key": "HR_G",
"label": "G",
}
"KC_H": {
"key": "HR_H",
"label": "H",
}
"KC_J": {
"key": "HR_J",
"label": "J",
}
"KC_K": {
"key": "HR_K",
"label": "K",
}
"KC_L": {
"key": "HR_L",
"label": "L",
}
"KC_SCLN": {
"key": "HR_CCAR",
"label": "Č",
}
"KC_QUOT": {
"key": "HR_CACU",
"label": "Ć",
}
"KC_NUHS": {
"key": "HR_ZCAR",
"label": "Ž",
}
"KC_NUBS": {
"key": "HR_LABK",
"label": "<",
}
"KC_Z": {
"key": "HR_Y",
"label": "Y",
}
"KC_X": {
"key": "HR_X",
"label": "X",
}
"KC_C": {
"key": "HR_C",
"label": "C",
}
"KC_V": {
"key": "HR_V",
"label": "V",
}
"KC_B": {
"key": "HR_B",
"label": "B",
}
"KC_N": {
"key": "HR_N",
"label": "N",
}
"KC_M": {
"key": "HR_M",
"label": "M",
}
"KC_COMM": {
"key": "HR_COMM",
"label": ",",
}
"KC_DOT": {
"key": "HR_DOT",
"label": ".",
}
"KC_SLSH": {
"key": "HR_MINS",
"label": "-",
}
/* Shifted symbols
* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐
* │ ¨ │ ! │ " │ # │ $ │ % │ & │ / │ ( │ ) │ = │ ? │ * │ │
* ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤
* │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
* ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │
* │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
* ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤
* │ │ > │ │ │ │ │ │ │ │ ; │ : │ _ │ │
* ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤
* │ │ │ │ │ │ │ │ │
* └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘
*/
"S(HR_CEDL)": {
"key": "HR_DIAE",
"label": "¨ (dead)",
}
"S(HR_1)": {
"key": "HR_EXLM",
"label": "!",
}
"S(HR_2)": {
"key": "HR_DQUO",
"label": "\"",
}
"S(HR_3)": {
"key": "HR_HASH",
"label": "#",
}
"S(HR_4)": {
"key": "HR_DLR",
"label": "$",
}
"S(HR_5)": {
"key": "HR_PERC",
"label": "%",
}
"S(HR_6)": {
"key": "HR_AMPR",
"label": "&",
}
"S(HR_7)": {
"key": "HR_SLSH",
"label": "/",
}
"S(HR_8)": {
"key": "HR_LPRN",
"label": "(",
}
"S(HR_9)": {
"key": "HR_RPRN",
"label": ")",
}
"S(HR_0)": {
"key": "HR_EQL",
"label": "=",
}
"S(HR_QUOT)": {
"key": "HR_QUES",
"label": "?",
}
"S(HR_PLUS)": {
"key": "HR_ASTR",
"label": "*",
}
"S(HR_LABK)": {
"key": "HR_RABK",
"label": ">",
}
"S(HR_COMM)": {
"key": "HR_SCLN",
"label": ";",
}
"S(HR_DOT)": {
"key": "HR_COLN",
"label": ":",
}
"S(HR_MINS)": {
"key": "HR_UNDS",
"label": "_",
}
/* AltGr symbols
* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐
* │ │ ~ │ ˇ │ ^ │ ˘ │ ° │ ˛ │ ` │ ˙ │ ´ │ ˝ │ │ │ │
* ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤
* │ │ \ │ | │ € │ │ │ │ │ │ │ │ ÷ │ × │ │
* ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │
* │ │ │ │ │ [ │ ] │ │ │ ł │ Ł │ │ ß │ ¤ │ │
* ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤
* │ │ │ │ │ │ @ │ { │ } │ § │ │ │ │ │
* ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤
* │ │ │ │ │ │ │ │ │
* └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘
*/
"ALGR(HR_1)": {
"key": "HR_TILD",
"label": "~",
}
"ALGR(HR_2)": {
"key": "HR_CARN",
"label": "ˇ (dead)",
}
"ALGR(HR_3)": {
"key": "HR_CIRC",
"label": "^ (dead)",
}
"ALGR(HR_4)": {
"key": "HR_BREV",
"label": "˘ (dead)",
}
"ALGR(HR_5)": {
"key": "HR_RNGA",
"label": "° (dead)",
}
"ALGR(HR_6)": {
"key": "HR_OGON",
"label": "˛ (dead)",
}
"ALGR(HR_7)": {
"key": "HR_GRV",
"label": "`",
}
"ALGR(HR_8)": {
"key": "HR_DOTA",
"label": "˙ (dead)",
}
"ALGR(HR_9)": {
"key": "HR_ACUT",
"label": "´ (dead)",
}
"ALGR(HR_0)": {
"key": "HR_DACU",
"label": "˝ (dead)",
}
"ALGR(HR_Q)": {
"key": "HR_BSLS",
"label": "\\",
}
"ALGR(HR_W)": {
"key": "HR_PIPE",
"label": "|",
}
"ALGR(HR_E)": {
"key": "HR_EURO",
"label": "€",
}
"ALGR(HR_SCAR)": {
"key": "HR_DIV",
"label": "÷",
}
"ALGR(HR_DSTR)": {
"key": "HR_MUL",
"label": "×",
}
"ALGR(HR_F)": {
"key": "HR_LBRC",
"label": "[",
}
"ALGR(HR_G)": {
"key": "HR_RBRC",
"label": "]",
}
"ALGR(HR_K)": {
"key": "HR_LLST",
"label": "ł",
}
"ALGR(HR_L)": {
"key": "HR_CLST",
"label": "Ł",
}
"ALGR(HR_CACU)": {
"key": "HR_SS",
"label": "ß",
}
"ALGR(HR_ZCAR)": {
"key": "HR_CURR",
"label": "¤",
}
"ALGR(HR_V)": {
"key": "HR_AT",
"label": "@",
}
"ALGR(HR_B)": {
"key": "HR_LCBR",
"label": "{",
}
"ALGR(HR_N)": {
"key": "HR_RCBR",
"label": "}",
}
"ALGR(HR_M)": {
"key": "HR_SECT",
"label": "§",
}
}
}

View File

@@ -1,435 +0,0 @@
{
"aliases": {
/*
* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐
* │ ; │ + │ ě │ š │ č │ ř │ ž │ ý │ á │ í │ é │ = │ ´ │ │
* ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤
* │ │ Q │ W │ E │ R │ T │ Z │ U │ I │ O │ P │ ú │ ) │ │
* ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │
* │ │ A │ S │ D │ F │ G │ H │ J │ K │ L │ ů │ § │ ¨ │ │
* ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤
* │ │ \ │ Y │ X │ C │ V │ B │ N │ M │ , │ . │ - │ │
* ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤
* │ │ │ │ │ │ │ │ │
* └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘
*/
"KC_GRV": {
"key": "CZ_SCLN",
"label": ";",
}
"KC_1": {
"key": "CZ_PLUS",
"label": "+",
}
"KC_2": {
"key": "CZ_ECAR",
"label": "ě",
}
"KC_3": {
"key": "CZ_SCAR",
"label": "š",
}
"KC_4": {
"key": "CZ_CCAR",
"label": "č",
}
"KC_5": {
"key": "CZ_RCAR",
"label": "ř",
}
"KC_6": {
"key": "CZ_ZCAR",
"label": "ž",
}
"KC_7": {
"key": "CZ_YACU",
"label": "ý",
}
"KC_8": {
"key": "CZ_AACU",
"label": "á",
}
"KC_9": {
"key": "CZ_IACU",
"label": "í",
}
"KC_0": {
"key": "CZ_EACU",
"label": "é",
}
"KC_MINS": {
"key": "CZ_EQL",
"label": "=",
}
"KC_EQL": {
"key": "CZ_ACUT",
"label": "´ (dead)",
}
"KC_Q": {
"key": "CZ_Q",
"label": "Q",
}
"KC_W": {
"key": "CZ_W",
"label": "W",
}
"KC_E": {
"key": "CZ_E",
"label": "E",
}
"KC_R": {
"key": "CZ_R",
"label": "R",
}
"KC_T": {
"key": "CZ_T",
"label": "T",
}
"KC_Y": {
"key": "CZ_Z",
"label": "Z",
}
"KC_U": {
"key": "CZ_U",
"label": "U",
}
"KC_I": {
"key": "CZ_I",
"label": "I",
}
"KC_O": {
"key": "CZ_O",
"label": "O",
}
"KC_P": {
"key": "CZ_P",
"label": "P",
}
"KC_LBRC": {
"key": "CZ_UACU",
"label": "ú",
}
"KC_RBRC": {
"key": "CZ_RPRN",
"label": ")",
}
"KC_A": {
"key": "CZ_A",
"label": "A",
}
"KC_S": {
"key": "CZ_S",
"label": "S",
}
"KC_D": {
"key": "CZ_D",
"label": "D",
}
"KC_F": {
"key": "CZ_F",
"label": "F",
}
"KC_G": {
"key": "CZ_G",
"label": "G",
}
"KC_H": {
"key": "CZ_H",
"label": "H",
}
"KC_J": {
"key": "CZ_J",
"label": "J",
}
"KC_K": {
"key": "CZ_K",
"label": "K",
}
"KC_L": {
"key": "CZ_L",
"label": "L",
}
"KC_SCLN": {
"key": "CZ_URNG",
"label": "ů",
}
"KC_QUOT": {
"key": "CZ_SECT",
"label": "§",
}
"KC_NUHS": {
"key": "CZ_DIAE",
"label": "¨ (dead)",
}
"KC_NUBS": {
"key": "CZ_BSLS",
"label": "\\",
}
"KC_Z": {
"key": "CZ_Y",
"label": "Y",
}
"KC_X": {
"key": "CZ_X",
"label": "X",
}
"KC_C": {
"key": "CZ_C",
"label": "C",
}
"KC_V": {
"key": "CZ_V",
"label": "V",
}
"KC_B": {
"key": "CZ_B",
"label": "B",
}
"KC_N": {
"key": "CZ_N",
"label": "N",
}
"KC_M": {
"key": "CZ_M",
"label": "M",
}
"KC_COMM": {
"key": "CZ_COMM",
"label": ",",
}
"KC_DOT": {
"key": "CZ_DOT",
"label": ".",
}
"KC_SLSH": {
"key": "CZ_MINS",
"label": "-",
}
/* Shifted symbols
* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐
* │ ° │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ % │ ˇ │ │
* ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤
* │ │ │ │ │ │ │ │ │ │ │ │ / │ ( │ │
* ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │
* │ │ │ │ │ │ │ │ │ │ │ " │ ! │ ' │ │
* ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤
* │ │ | │ │ │ │ │ │ │ │ ? │ : │ _ │ │
* ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤
* │ │ │ │ │ │ │ │ │
* └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘
*/
"S(CZ_SCLN)": {
"key": "CZ_RNGA",
"label": "° (dead)",
}
"S(CZ_PLUS)": {
"key": "CZ_1",
"label": "1",
}
"S(CZ_ECAR)": {
"key": "CZ_2",
"label": "2",
}
"S(CZ_SCAR)": {
"key": "CZ_3",
"label": "3",
}
"S(CZ_CCAR)": {
"key": "CZ_4",
"label": "4",
}
"S(CZ_RCAR)": {
"key": "CZ_5",
"label": "5",
}
"S(CZ_ZCAR)": {
"key": "CZ_6",
"label": "6",
}
"S(CZ_YACU)": {
"key": "CZ_7",
"label": "7",
}
"S(CZ_AACU)": {
"key": "CZ_8",
"label": "8",
}
"S(CZ_IACU)": {
"key": "CZ_9",
"label": "9",
}
"S(CZ_EACU)": {
"key": "CZ_0",
"label": "0",
}
"S(CZ_EQL)": {
"key": "CZ_PERC",
"label": "%",
}
"S(CZ_ACUT)": {
"key": "CZ_CARN",
"label": "ˇ (dead)",
}
"S(CZ_UACU)": {
"key": "CZ_SLSH",
"label": "/",
}
"S(CZ_RPRN)": {
"key": "CZ_LPRN",
"label": "(",
}
"S(CZ_URNG)": {
"key": "CZ_DQUO",
"label": "\"",
}
"S(CZ_SECT)": {
"key": "CZ_EXLM",
"label": "!",
}
"S(CZ_DIAE)": {
"key": "CZ_QUOT",
"label": "'",
}
"S(CZ_BSLS)": {
"key": "CZ_PIPE",
"label": "|",
}
"S(CZ_COMM)": {
"key": "CZ_QUES",
"label": "?",
}
"S(CZ_DOT)": {
"key": "CZ_COLN",
"label": ":",
}
"S(CZ_MINS)": {
"key": "CZ_UNDS",
"label": "_",
}
/* AltGr symbols
* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐
* │ │ ~ │ │ ^ │ ˘ │ │ ˛ │ ` │ ˙ │ │ ˝ │ │ ¸ │ │
* ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤
* │ │ │ │ € │ │ │ │ │ │ │ │ ÷ │ × │ │
* ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │
* │ │ │ đ │ Đ │ [ │ ] │ │ │ ł │ Ł │ $ │ ß │ ¤ │ │
* ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤
* │ │ │ │ # │ & │ @ │ { │ } │ │ < │ > │ * │ │
* ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤
* │ │ │ │ │ │ │ │ │
* └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘
*/
"ALGR(CZ_PLUS)": {
"key": "CZ_TILD",
"label": "~",
}
"ALGR(CZ_SCAR)": {
"key": "CZ_CIRC",
"label": "^ (dead)",
}
"ALGR(CZ_CCAR)": {
"key": "CZ_BREV",
"label": "˘ (dead)",
}
"ALGR(CZ_ZCAR)": {
"key": "CZ_OGON",
"label": "˛ (dead)",
}
"ALGR(CZ_YACU)": {
"key": "CZ_GRV",
"label": "` (dead)",
}
"ALGR(CZ_AACU)": {
"key": "CZ_DOTA",
"label": "˙ (dead)",
}
"ALGR(CZ_EACU)": {
"key": "CZ_DACU",
"label": "˝ (dead)",
}
"ALGR(CZ_ACUT)": {
"key": "CZ_CEDL",
"label": "¸ (dead)",
}
"ALGR(CZ_E)": {
"key": "CZ_EURO",
"label": "€",
}
"ALGR(CZ_UACU)": {
"key": "CZ_DIV",
"label": "÷",
}
"ALGR(CZ_RPRN)": {
"key": "CZ_MUL",
"label": "×",
}
"ALGR(CZ_S)": {
"key": "CZ_LDST",
"label": "đ",
}
"ALGR(CZ_D)": {
"key": "CZ_CDST",
"label": "Đ",
}
"ALGR(CZ_F)": {
"key": "CZ_LBRC",
"label": "[",
}
"ALGR(CZ_G)": {
"key": "CZ_RBRC",
"label": "]",
}
"ALGR(CZ_K)": {
"key": "CZ_LLST",
"label": "ł",
}
"ALGR(CZ_L)": {
"key": "CZ_CLST",
"label": "Ł",
}
"ALGR(CZ_URNG)": {
"key": "CZ_DLR",
"label": "$",
}
"ALGR(CZ_SECT)": {
"key": "CZ_SS",
"label": "ß",
}
"ALGR(CZ_DIAE)": {
"key": "CZ_CURR",
"label": "¤",
}
"ALGR(CZ_X)": {
"key": "CZ_HASH",
"label": "#",
}
"ALGR(CZ_C)": {
"key": "CZ_AMPR",
"label": "&",
}
"ALGR(CZ_V)": {
"key": "CZ_AT",
"label": "@",
}
"ALGR(CZ_B)": {
"key": "CZ_LCBR",
"label": "{",
}
"ALGR(CZ_N)": {
"key": "CZ_RCBR",
"label": "}",
}
"ALGR(CZ_COMM)": {
"key": "CZ_LABK",
"label": "<",
}
"ALGR(CZ_DOT)": {
"key": "CZ_RABK",
"label": ">",
}
"ALGR(CZ_MINS)": {
"key": "CZ_ASTR",
"label": "*",
}
}
}

View File

@@ -1,580 +0,0 @@
{
"aliases": {
/*
* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬─────┐
* │ \ │ + │ ě │ š │ č │ ř │ ž │ ý │ á │ í │ é │ = │ ' │ │
* ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬───┤
* │ │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ ú │ ) │ ¨ │
* ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴───┤
* │ │ A │ S │ D │ F │ G │ H │ J │ K │ L │ ů │ § │ │
* ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴──────┤
* │ │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ - │ │
* ├─────┬──┴─┬─┴───┼───┴───┴───┴───┴───┴───┼───┴─┬─┴──┬─────┤
* │ │ │ │ │ │ │ │
* └─────┴────┴─────┴───────────────────────┴─────┴────┴─────┘
*/
"KC_GRV": {
"key": "CZ_BSLS",
"label": "\\",
}
"KC_1": {
"key": "CZ_PLUS",
"label": "+",
}
"KC_2": {
"key": "CZ_ECAR",
"label": "ě",
}
"KC_3": {
"key": "CZ_SCAR",
"label": "š",
}
"KC_4": {
"key": "CZ_CCAR",
"label": "č",
}
"KC_5": {
"key": "CZ_RCAR",
"label": "ř",
}
"KC_6": {
"key": "CZ_ZCAR",
"label": "ž",
}
"KC_7": {
"key": "CZ_YACU",
"label": "ý",
}
"KC_8": {
"key": "CZ_AACU",
"label": "á",
}
"KC_9": {
"key": "CZ_IACU",
"label": "í",
}
"KC_0": {
"key": "CZ_EACU",
"label": "é",
}
"KC_MINS": {
"key": "CZ_EQL",
"label": "=",
}
"KC_EQL": {
"key": "CZ_ACUT",
"label": "' (dead)",
}
"KC_Q": {
"key": "CZ_Q",
"label": "Q",
}
"KC_W": {
"key": "CZ_W",
"label": "W",
}
"KC_E": {
"key": "CZ_E",
"label": "E",
}
"KC_R": {
"key": "CZ_R",
"label": "R",
}
"KC_T": {
"key": "CZ_T",
"label": "T",
}
"KC_Y": {
"key": "CZ_Z",
"label": "Z",
}
"KC_U": {
"key": "CZ_U",
"label": "U",
}
"KC_I": {
"key": "CZ_I",
"label": "I",
}
"KC_O": {
"key": "CZ_O",
"label": "O",
}
"KC_P": {
"key": "CZ_P",
"label": "P",
}
"KC_LBRC": {
"key": "CZ_UACU",
"label": "ú",
}
"KC_RBRC": {
"key": "CZ_RPRN",
"label": ")",
}
"KC_NUHS": {
"key": "CZ_DIAE",
"label": "¨ (dead)",
}
"KC_A": {
"key": "CZ_A",
"label": "A",
}
"KC_S": {
"key": "CZ_S",
"label": "S",
}
"KC_D": {
"key": "CZ_D",
"label": "D",
}
"KC_F": {
"key": "CZ_F",
"label": "F",
}
"KC_G": {
"key": "CZ_G",
"label": "G",
}
"KC_H": {
"key": "CZ_H",
"label": "H",
}
"KC_J": {
"key": "CZ_J",
"label": "J",
}
"KC_K": {
"key": "CZ_K",
"label": "K",
}
"KC_L": {
"key": "CZ_L",
"label": "L",
}
"KC_SCLN": {
"key": "CZ_URNG",
"label": "ů",
}
"KC_QUOT": {
"key": "CZ_SECT",
"label": "§",
}
"KC_Z": {
"key": "CZ_Y",
"label": "Y",
}
"KC_X": {
"key": "CZ_X",
"label": "X",
}
"KC_C": {
"key": "CZ_C",
"label": "C",
}
"KC_V": {
"key": "CZ_V",
"label": "V",
}
"KC_B": {
"key": "CZ_B",
"label": "B",
}
"KC_N": {
"key": "CZ_N",
"label": "N",
}
"KC_M": {
"key": "CZ_M",
"label": "M",
}
"KC_COMM": {
"key": "CZ_COMM",
"label": ",",
}
"KC_DOT": {
"key": "CZ_DOT",
"label": ".",
}
"KC_SLSH": {
"key": "CZ_MINS",
"label": "-",
}
/* Shifted symbols
* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬─────┐
* │ | │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ % │ ˇ │ │
* ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬───┤
* │ │ │ │ │ │ │ │ │ │ │ │ / │ ( │ ` │
* ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴───┤
* │ │ │ │ │ │ │ │ │ │ │ " │ ! │ │
* ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴──────┤
* │ │ │ │ │ │ │ │ │ ? │ : │ _ │ │
* ├─────┬──┴─┬─┴───┼───┴───┴───┴───┴───┴───┼───┴─┬─┴──┬─────┤
* │ │ │ │ │ │ │ │
* └─────┴────┴─────┴───────────────────────┴─────┴────┴─────┘
*/
"S(CZ_BSLS)": {
"key": "CZ_PIPE",
"label": "|",
}
"S(CZ_PLUS)": {
"key": "CZ_1",
"label": "1",
}
"S(CZ_ECAR)": {
"key": "CZ_2",
"label": "2",
}
"S(CZ_SCAR)": {
"key": "CZ_3",
"label": "3",
}
"S(CZ_CCAR)": {
"key": "CZ_4",
"label": "4",
}
"S(CZ_RCAR)": {
"key": "CZ_5",
"label": "5",
}
"S(CZ_ZCAR)": {
"key": "CZ_6",
"label": "6",
}
"S(CZ_YACU)": {
"key": "CZ_7",
"label": "7",
}
"S(CZ_AACU)": {
"key": "CZ_8",
"label": "8",
}
"S(CZ_IACU)": {
"key": "CZ_9",
"label": "9",
}
"S(CZ_EACU)": {
"key": "CZ_0",
"label": "0",
}
"S(CZ_EQL)": {
"key": "CZ_PERC",
"label": "%",
}
"S(CZ_ACUT)": {
"key": "CZ_CARN",
"label": "ˇ (dead)",
}
"S(CZ_UACU)": {
"key": "CZ_SLSH",
"label": "/",
}
"S(CZ_RPRN)": {
"key": "CZ_LPRN",
"label": "(",
}
"S(CZ_DIAE)": {
"key": "CZ_GRV",
"label": "`",
}
"S(CZ_URNG)": {
"key": "CZ_DQUO",
"label": "\"",
}
"S(CZ_SECT)": {
"key": "CZ_EXLM",
"label": "!",
}
"S(CZ_COMM)": {
"key": "CZ_QUES",
"label": "?",
}
"S(CZ_DOT)": {
"key": "CZ_COLN",
"label": ":",
}
"S(CZ_MINS)": {
"key": "CZ_UNDS",
"label": "_",
}
/* Alted symbols
* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬─────┐
* │ │ │ @ │ # │ $ │ ~ │ ^ │ & │ * │ { │ } │ ° │ ^ │ │
* ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬───┤
* │ │ │ ė │ ę │ € │ │ │ │ │ │ │ [ │ ] │ │
* ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴───┤
* │ │ ą │ ß │ ∂ │ │ │ │ │ ł │ ; │ ' │ │
* ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴──────┤
* │ │ │ │ │ │ │ │ │ < │ > │ │ │
* ├─────┬──┴─┬─┴───┼───┴───┴───┴───┴───┴───┼───┴─┬─┴──┬─────┤
* │ │ │ │ │ │ │ │
* └─────┴────┴─────┴───────────────────────┴─────┴────┴─────┘
*/
"A(CZ_ECAR)": {
"key": "CZ_AT",
"label": "@",
}
"A(CZ_SCAR)": {
"key": "CZ_HASH",
"label": "#",
}
"A(CZ_CCAR)": {
"key": "CZ_DLR",
"label": "$",
}
"A(CZ_RCAR)": {
"key": "CZ_TILD",
"label": "~",
}
"A(CZ_ZCAR)": {
"key": "CZ_CIRC",
"label": "^",
}
"A(CZ_YACU)": {
"key": "CZ_AMPR",
"label": "&",
}
"A(CZ_AACU)": {
"key": "CZ_ASTR",
"label": "*",
}
"A(CZ_IACU)": {
"key": "CZ_LCBR",
"label": "{",
}
"A(CZ_EACU)": {
"key": "CZ_RCBR",
"label": "}",
}
"A(CZ_EQL)": {
"key": "CZ_RNGA",
"label": "° (dead)",
}
"A(CZ_ACUT)": {
"key": "CZ_DCIR",
"label": "^ (dead)",
}
"A(CZ_W)": {
"key": "CZ_LEDT",
"label": "ė",
}
"A(CZ_E)": {
"key": "CZ_LEOG",
"label": "ę",
}
"A(CZ_R)": {
"key": "CZ_EURO",
"label": "€",
}
"A(CZ_Z)": {
"key": "CZ_LZDT",
"label": "ż",
}
"A(CZ_UACU)": {
"key": "CZ_LBRC",
"label": "[",
}
"A(CZ_RPRN)": {
"key": "CZ_RBRC",
"label": "]",
}
"A(CZ_A)": {
"key": "CZ_LAOG",
"label": "ą",
}
"A(CZ_S)": {
"key": "CZ_SS",
"label": "ß",
}
"A(CZ_D)": {
"key": "CZ_PDIF",
"label": "∂",
}
"A(CZ_H)": {
"key": "CZ_LSQU",
"label": "",
}
"A(CZ_J)": {
"key": "CZ_RSQU",
"label": "",
}
"A(CZ_L)": {
"key": "CZ_LLST",
"label": "ł",
}
"A(CZ_URNG)": {
"key": "CZ_SCLN",
"label": ";",
}
"A(CZ_SECT)": {
"key": "CZ_QUOT",
"label": "'",
}
"A(CZ_N)": {
"key": "CZ_SLQU",
"label": "",
}
"A(CZ_COMM)": {
"key": "CZ_LABK",
"label": "<",
}
"A(CZ_DOT)": {
"key": "CZ_RABK",
"label": ">",
}
"A(CZ_MINS)": {
"key": "CZ_NDSH",
"label": "",
}
/* Shift+Alted symbols
* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬─────┐
* │ │ ¬ │ • │ ≠ │ £ │ ◊ │ † │ ¶ │ ÷ │ « │ » │ , │ - │ │
* ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬───┤
* │ │ │ Ė │ Ę │ ® │ ™ │ Ż │ │ │ │ │ │ " │
* ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴───┤
* │ │ Ą │ ∑ │ ∆ │ │ │ “ │ ” │ │ Ł │ … │ ~ │ │
* ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴──────┤
* │ │ │ │ © │ √ │ │ „ │ │ ≤ │ ≥ │ — │ │
* ├─────┬──┴─┬─┴───┼───┴───┴───┴───┴───┴───┼───┴─┬─┴──┬─────┤
* │ │ │ │ │ │ │ │
* └─────┴────┴─────┴───────────────────────┴─────┴────┴─────┘
*/
"S(A(CZ_1))": {
"key": "CZ_NOT",
"label": "¬",
}
"S(A(CZ_2))": {
"key": "CZ_BULT",
"label": "•",
}
"S(A(CZ_3))": {
"key": "CZ_NEQL",
"label": "≠",
}
"S(A(CZ_4))": {
"key": "CZ_PND",
"label": "£",
}
"S(A(CZ_5))": {
"key": "CZ_LOZN",
"label": "◊",
}
"S(A(CZ_6))": {
"key": "CZ_DAGG",
"label": "†",
}
"S(A(CZ_7))": {
"key": "CZ_PARA",
"label": "¶",
}
"S(A(CZ_8))": {
"key": "CZ_DIV",
"label": "÷",
}
"S(A(CZ_9))": {
"key": "CZ_LDAQ",
"label": "«",
}
"S(A(CZ_0))": {
"key": "CZ_RDAQ",
"label": "»",
}
"S(A(CZ_EQL))": {
"key": "CZ_DCOM",
"label": ", (dead)",
}
"S(A(CZ_ACUT))": {
"key": "CZ_DHPN",
"label": "- (dead)",
}
"S(A(CZ_W))": {
"key": "CZ_CEDT",
"label": "Ė",
}
"S(A(CZ_E))": {
"key": "CZ_CEOG",
"label": "Ę",
}
"S(A(CZ_R))": {
"key": "CZ_REGD",
"label": "®",
}
"S(A(CZ_T))": {
"key": "CZ_TM",
"label": "™",
}
"S(A(CZ_Z))": {
"key": "CZ_CZDT",
"label": "Ż",
}
"S(A(CZ_UACU))": {
"key": "CZ_LSAQ",
"label": "",
}
"S(A(CZ_RPRN))": {
"key": "CZ_RSAQ",
"label": "",
}
"S(A(CZ_DIAE))": {
"key": "CZ_DDQT",
"label": "\" (dead)",
}
"S(A(CZ_A))": {
"key": "CZ_CAOG",
"label": "Ą",
}
"S(A(CZ_S))": {
"key": "CZ_NARS",
"label": "∑",
}
"S(A(CZ_D))": {
"key": "CZ_INCR",
"label": "∆",
}
"S(A(CZ_H))": {
"key": "CZ_LDQU",
"label": "“",
}
"S(A(CZ_J))": {
"key": "CZ_RDQU",
"label": "”",
}
"S(A(CZ_L))": {
"key": "CZ_CLST",
"label": "Ł",
}
"S(A(CZ_URNG))": {
"key": "CZ_ELLP",
"label": "…",
}
"S(A(CZ_SECT))": {
"key": "CZ_DTIL",
"label": "~ (dead)",
}
"S(A(CZ_C))": {
"key": "CZ_COPY",
"label": "©",
}
"S(A(CZ_V))": {
"key": "CZ_SQRT",
"label": "√",
}
"S(A(CZ_N))": {
"key": "CZ_DLQU",
"label": "„",
}
"S(A(CZ_COMM))": {
"key": "CZ_LEQL",
"label": "≤",
}
"S(A(CZ_DOT))": {
"key": "CZ_GEQL",
"label": "≥",
}
"S(A(CZ_MINS))": {
"key": "CZ_MDSH",
"label": "—",
}
}
}

View File

@@ -1,580 +0,0 @@
{
"aliases": {
/*
* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬─────┐
* │ │ + │ ě │ š │ č │ ř │ ž │ ý │ á │ í │ é │ = │ ' │ │
* ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬───┤
* │ │ Q │ W │ E │ R │ T │ Z │ U │ I │ O │ P │ ú │ ) │ │
* ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │
* │ │ A │ S │ D │ F │ G │ H │ J │ K │ L │ ů │ § │ ¨ │ │
* ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴──┤
* │ │ \ │ Y │ X │ C │ V │ B │ N │ M │ , │ . │ - │ │
* ├────┴┬──┴─┬─┴───┼───┴───┴───┴───┴───┴───┼───┴─┬─┴──┬─────┤
* │ │ │ │ │ │ │ │
* └─────┴────┴─────┴───────────────────────┴─────┴────┴─────┘
*/
"KC_1": {
"key": "CZ_PLUS",
"label": "+",
}
"KC_2": {
"key": "CZ_ECAR",
"label": "ě",
}
"KC_3": {
"key": "CZ_SCAR",
"label": "š",
}
"KC_4": {
"key": "CZ_CCAR",
"label": "č",
}
"KC_5": {
"key": "CZ_RCAR",
"label": "ř",
}
"KC_6": {
"key": "CZ_ZCAR",
"label": "ž",
}
"KC_7": {
"key": "CZ_YACU",
"label": "ý",
}
"KC_8": {
"key": "CZ_AACU",
"label": "á",
}
"KC_9": {
"key": "CZ_IACU",
"label": "í",
}
"KC_0": {
"key": "CZ_EACU",
"label": "é",
}
"KC_MINS": {
"key": "CZ_EQL",
"label": "=",
}
"KC_EQL": {
"key": "CZ_ACUT",
"label": "' (dead)",
}
"KC_Q": {
"key": "CZ_Q",
"label": "Q",
}
"KC_W": {
"key": "CZ_W",
"label": "W",
}
"KC_E": {
"key": "CZ_E",
"label": "E",
}
"KC_R": {
"key": "CZ_R",
"label": "R",
}
"KC_T": {
"key": "CZ_T",
"label": "T",
}
"KC_Y": {
"key": "CZ_Z",
"label": "Z",
}
"KC_U": {
"key": "CZ_U",
"label": "U",
}
"KC_I": {
"key": "CZ_I",
"label": "I",
}
"KC_O": {
"key": "CZ_O",
"label": "O",
}
"KC_P": {
"key": "CZ_P",
"label": "P",
}
"KC_LBRC": {
"key": "CZ_UACU",
"label": "ú",
}
"KC_RBRC": {
"key": "CZ_RPRN",
"label": ")",
}
"KC_A": {
"key": "CZ_A",
"label": "A",
}
"KC_S": {
"key": "CZ_S",
"label": "S",
}
"KC_D": {
"key": "CZ_D",
"label": "D",
}
"KC_F": {
"key": "CZ_F",
"label": "F",
}
"KC_G": {
"key": "CZ_G",
"label": "G",
}
"KC_H": {
"key": "CZ_H",
"label": "H",
}
"KC_J": {
"key": "CZ_J",
"label": "J",
}
"KC_K": {
"key": "CZ_K",
"label": "K",
}
"KC_L": {
"key": "CZ_L",
"label": "L",
}
"KC_SCLN": {
"key": "CZ_URNG",
"label": "ů",
}
"KC_QUOT": {
"key": "CZ_SECT",
"label": "§",
}
"KC_NUHS": {
"key": "CZ_DIAE",
"label": "¨ (dead)",
}
"KC_NUBS": {
"key": "CZ_BSLS",
"label": "\\",
}
"KC_Z": {
"key": "CZ_Y",
"label": "Y",
}
"KC_X": {
"key": "CZ_X",
"label": "X",
}
"KC_C": {
"key": "CZ_C",
"label": "C",
}
"KC_V": {
"key": "CZ_V",
"label": "V",
}
"KC_B": {
"key": "CZ_B",
"label": "B",
}
"KC_N": {
"key": "CZ_N",
"label": "N",
}
"KC_M": {
"key": "CZ_M",
"label": "M",
}
"KC_COMM": {
"key": "CZ_COMM",
"label": ",",
}
"KC_DOT": {
"key": "CZ_DOT",
"label": ".",
}
"KC_SLSH": {
"key": "CZ_MINS",
"label": "-",
}
/* Shifted symbols
* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬─────┐
* │ │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ % │ ˇ │ │
* ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬───┤
* │ │ │ │ │ │ │ │ │ │ │ │ / │ ( │ │
* ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │
* │ │ │ │ │ │ │ │ │ │ │ " │ ! │ ` │ │
* ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴──┤
* │ │ | │ │ │ │ │ │ │ │ ? │ : │ _ │ │
* ├────┴┬──┴─┬─┴───┼───┴───┴───┴───┴───┴───┼───┴─┬─┴──┬─────┤
* │ │ │ │ │ │ │ │
* └─────┴────┴─────┴───────────────────────┴─────┴────┴─────┘
*/
"S(CZ_PLUS)": {
"key": "CZ_1",
"label": "1",
}
"S(CZ_ECAR)": {
"key": "CZ_2",
"label": "2",
}
"S(CZ_SCAR)": {
"key": "CZ_3",
"label": "3",
}
"S(CZ_CCAR)": {
"key": "CZ_4",
"label": "4",
}
"S(CZ_RCAR)": {
"key": "CZ_5",
"label": "5",
}
"S(CZ_ZCAR)": {
"key": "CZ_6",
"label": "6",
}
"S(CZ_YACU)": {
"key": "CZ_7",
"label": "7",
}
"S(CZ_AACU)": {
"key": "CZ_8",
"label": "8",
}
"S(CZ_IACU)": {
"key": "CZ_9",
"label": "9",
}
"S(CZ_EACU)": {
"key": "CZ_0",
"label": "0",
}
"S(CZ_EQL)": {
"key": "CZ_PERC",
"label": "%",
}
"S(CZ_ACUT)": {
"key": "CZ_CARN",
"label": "ˇ (dead)",
}
"S(CZ_UACU)": {
"key": "CZ_SLSH",
"label": "/",
}
"S(CZ_RPRN)": {
"key": "CZ_LPRN",
"label": "(",
}
"S(CZ_URNG)": {
"key": "CZ_DQUO",
"label": "\"",
}
"S(CZ_SECT)": {
"key": "CZ_EXLM",
"label": "!",
}
"S(CZ_DIAE)": {
"key": "CZ_GRV",
"label": "`",
}
"S(CZ_BSLS)": {
"key": "CZ_PIPE",
"label": "|",
}
"S(CZ_COMM)": {
"key": "CZ_QUES",
"label": "?",
}
"S(CZ_DOT)": {
"key": "CZ_COLN",
"label": ":",
}
"S(CZ_MINS)": {
"key": "CZ_UNDS",
"label": "_",
}
/* Alted symbols
* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬─────┐
* │ │ │ @ │ # │ $ │ ~ │ ^ │ & │ * │ { │ } │ ° │ ^ │ │
* ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬───┤
* │ │ │ ė │ ę │ € │ │ ż │ │ │ │ │ [ │ ] │ │
* ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │
* │ │ ą │ ß │ ∂ │ │ │ │ │ ł │ ; │ ' │ │ │
* ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴──┤
* │ │ │ │ │ │ │ │ │ │ < │ > │ │ │
* ├────┴┬──┴─┬─┴───┼───┴───┴───┴───┴───┴───┼───┴─┬─┴──┬─────┤
* │ │ │ │ │ │ │ │
* └─────┴────┴─────┴───────────────────────┴─────┴────┴─────┘
*/
"A(CZ_ECAR)": {
"key": "CZ_AT",
"label": "@",
}
"A(CZ_SCAR)": {
"key": "CZ_HASH",
"label": "#",
}
"A(CZ_CCAR)": {
"key": "CZ_DLR",
"label": "$",
}
"A(CZ_RCAR)": {
"key": "CZ_TILD",
"label": "~",
}
"A(CZ_ZCAR)": {
"key": "CZ_CIRC",
"label": "^",
}
"A(CZ_YACU)": {
"key": "CZ_AMPR",
"label": "&",
}
"A(CZ_AACU)": {
"key": "CZ_ASTR",
"label": "*",
}
"A(CZ_IACU)": {
"key": "CZ_LCBR",
"label": "{",
}
"A(CZ_EACU)": {
"key": "CZ_RCBR",
"label": "}",
}
"A(CZ_EQL)": {
"key": "CZ_RNGA",
"label": "° (dead)",
}
"A(CZ_ACUT)": {
"key": "CZ_DCIR",
"label": "^ (dead)",
}
"A(CZ_W)": {
"key": "CZ_LEDT",
"label": "ė",
}
"A(CZ_E)": {
"key": "CZ_LEOG",
"label": "ę",
}
"A(CZ_R)": {
"key": "CZ_EURO",
"label": "€",
}
"A(CZ_Z)": {
"key": "CZ_LZDT",
"label": "ż",
}
"A(CZ_UACU)": {
"key": "CZ_LBRC",
"label": "[",
}
"A(CZ_RPRN)": {
"key": "CZ_RBRC",
"label": "]",
}
"A(CZ_A)": {
"key": "CZ_LAOG",
"label": "ą",
}
"A(CZ_S)": {
"key": "CZ_SS",
"label": "ß",
}
"A(CZ_D)": {
"key": "CZ_PDIF",
"label": "∂",
}
"A(CZ_H)": {
"key": "CZ_LSQU",
"label": "",
}
"A(CZ_J)": {
"key": "CZ_RSQU",
"label": "",
}
"A(CZ_L)": {
"key": "CZ_LLST",
"label": "ł",
}
"A(CZ_URNG)": {
"key": "CZ_SCLN",
"label": ";",
}
"A(CZ_SECT)": {
"key": "CZ_QUOT",
"label": "'",
}
"A(CZ_N)": {
"key": "CZ_SLQU",
"label": "",
}
"A(CZ_COMM)": {
"key": "CZ_LABK",
"label": "<",
}
"A(CZ_DOT)": {
"key": "CZ_RABK",
"label": ">",
}
"A(CZ_MINS)": {
"key": "CZ_NDSH",
"label": "",
}
/* Shift+Alted symbols
* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬─────┐
* │ │ ¬ │ • │ ≠ │ £ │ ◊ │ † │ ¶ │ ÷ │ « │ » │ , │ - │ │
* ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬───┤
* │ │ │ Ė │ Ę │ ® │ ™ │ Ż │ │ │ │ │ │ │
* ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │
* │ │ Ą │ ∑ │ ∆ │ │ │ “ │ ” │ │ Ł │ … │ ~ │ " │ │
* ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴──┤
* │ │ │ │ │ © │ √ │ │ „ │ │ ≤ │ ≥ │ — │ │
* ├────┴┬──┴─┬─┴───┼───┴───┴───┴───┴───┴───┼───┴─┬─┴──┬─────┤
* │ │ │ │ │ │ │ │
* └─────┴────┴─────┴───────────────────────┴─────┴────┴─────┘
*/
"S(A(CZ_1))": {
"key": "CZ_NOT",
"label": "¬",
}
"S(A(CZ_2))": {
"key": "CZ_BULT",
"label": "•",
}
"S(A(CZ_3))": {
"key": "CZ_NEQL",
"label": "≠",
}
"S(A(CZ_4))": {
"key": "CZ_PND",
"label": "£",
}
"S(A(CZ_5))": {
"key": "CZ_LOZN",
"label": "◊",
}
"S(A(CZ_6))": {
"key": "CZ_DAGG",
"label": "†",
}
"S(A(CZ_7))": {
"key": "CZ_PARA",
"label": "¶",
}
"S(A(CZ_8))": {
"key": "CZ_DIV",
"label": "÷",
}
"S(A(CZ_9))": {
"key": "CZ_LDAQ",
"label": "«",
}
"S(A(CZ_0))": {
"key": "CZ_RDAQ",
"label": "»",
}
"S(A(CZ_EQL))": {
"key": "CZ_DCOM",
"label": ", (dead)",
}
"S(A(CZ_ACUT))": {
"key": "CZ_DHPN",
"label": "- (dead)",
}
"S(A(CZ_W))": {
"key": "CZ_CEDT",
"label": "Ė",
}
"S(A(CZ_E))": {
"key": "CZ_CEOG",
"label": "Ę",
}
"S(A(CZ_R))": {
"key": "CZ_REGD",
"label": "®",
}
"S(A(CZ_T))": {
"key": "CZ_TM",
"label": "™",
}
"S(A(CZ_Z))": {
"key": "CZ_CZDT",
"label": "Ż",
}
"S(A(CZ_UACU))": {
"key": "CZ_LSAQ",
"label": "",
}
"S(A(CZ_RPRN))": {
"key": "CZ_RSAQ",
"label": "",
}
"S(A(CZ_A))": {
"key": "CZ_CAOG",
"label": "Ą",
}
"S(A(CZ_S))": {
"key": "CZ_NARS",
"label": "∑",
}
"S(A(CZ_D))": {
"key": "CZ_INCR",
"label": "∆",
}
"S(A(CZ_H))": {
"key": "CZ_LDQU",
"label": "“",
}
"S(A(CZ_J))": {
"key": "CZ_RDQU",
"label": "”",
}
"S(A(CZ_L))": {
"key": "CZ_CLST",
"label": "Ł",
}
"S(A(CZ_URNG))": {
"key": "CZ_ELLP",
"label": "…",
}
"S(A(CZ_SECT))": {
"key": "CZ_DTIL",
"label": "~ (dead)",
}
"S(A(CZ_DIAE))": {
"key": "CZ_DDQT",
"label": "\" (dead)",
}
"S(A(CZ_C))": {
"key": "CZ_COPY",
"label": "©",
}
"S(A(CZ_V))": {
"key": "CZ_SQRT",
"label": "√",
}
"S(A(CZ_N))": {
"key": "CZ_DLQU",
"label": "„",
}
"S(A(CZ_COMM))": {
"key": "CZ_LEQL",
"label": "≤",
}
"S(A(CZ_DOT))": {
"key": "CZ_GEQL",
"label": "≥",
}
"S(A(CZ_MINS))": {
"key": "CZ_MDSH",
"label": "—",
}
}
}

View File

@@ -1,359 +0,0 @@
{
"aliases": {
/*
* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐
* │ ½ │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ + │ ´ │ │
* ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤
* │ │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ Å │ ¨ │ │
* ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │
* │ │ A │ S │ D │ F │ G │ H │ J │ K │ L │ Æ │ Ø │ ' │ │
* ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤
* │ │ < │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ - │ │
* ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤
* │ │ │ │ │ │ │ │ │
* └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘
*/
"KC_GRV": {
"key": "DK_HALF",
"label": "½",
}
"KC_1": {
"key": "DK_1",
"label": "1",
}
"KC_2": {
"key": "DK_2",
"label": "2",
}
"KC_3": {
"key": "DK_3",
"label": "3",
}
"KC_4": {
"key": "DK_4",
"label": "4",
}
"KC_5": {
"key": "DK_5",
"label": "5",
}
"KC_6": {
"key": "DK_6",
"label": "6",
}
"KC_7": {
"key": "DK_7",
"label": "7",
}
"KC_8": {
"key": "DK_8",
"label": "8",
}
"KC_9": {
"key": "DK_9",
"label": "9",
}
"KC_0": {
"key": "DK_0",
"label": "0",
}
"KC_MINS": {
"key": "DK_PLUS",
"label": "+",
}
"KC_EQL": {
"key": "DK_ACUT",
"label": "´ (dead)",
}
"KC_Q": {
"key": "DK_Q",
"label": "Q",
}
"KC_W": {
"key": "DK_W",
"label": "W",
}
"KC_E": {
"key": "DK_E",
"label": "E",
}
"KC_R": {
"key": "DK_R",
"label": "R",
}
"KC_T": {
"key": "DK_T",
"label": "T",
}
"KC_Y": {
"key": "DK_Y",
"label": "Y",
}
"KC_U": {
"key": "DK_U",
"label": "U",
}
"KC_I": {
"key": "DK_I",
"label": "I",
}
"KC_O": {
"key": "DK_O",
"label": "O",
}
"KC_P": {
"key": "DK_P",
"label": "P",
}
"KC_LBRC": {
"key": "DK_ARNG",
"label": "Å",
}
"KC_RBRC": {
"key": "DK_DIAE",
"label": "¨ (dead)",
}
"KC_A": {
"key": "DK_A",
"label": "A",
}
"KC_S": {
"key": "DK_S",
"label": "S",
}
"KC_D": {
"key": "DK_D",
"label": "D",
}
"KC_F": {
"key": "DK_F",
"label": "F",
}
"KC_G": {
"key": "DK_G",
"label": "G",
}
"KC_H": {
"key": "DK_H",
"label": "H",
}
"KC_J": {
"key": "DK_J",
"label": "J",
}
"KC_K": {
"key": "DK_K",
"label": "K",
}
"KC_L": {
"key": "DK_L",
"label": "L",
}
"KC_SCLN": {
"key": "DK_AE",
"label": "Æ",
}
"KC_QUOT": {
"key": "DK_OSTR",
"label": "Ø",
}
"KC_NUHS": {
"key": "DK_QUOT",
"label": "'",
}
"KC_NUBS": {
"key": "DK_LABK",
"label": "<",
}
"KC_Z": {
"key": "DK_Z",
"label": "Z",
}
"KC_X": {
"key": "DK_X",
"label": "X",
}
"KC_C": {
"key": "DK_C",
"label": "C",
}
"KC_V": {
"key": "DK_V",
"label": "V",
}
"KC_B": {
"key": "DK_B",
"label": "B",
}
"KC_N": {
"key": "DK_N",
"label": "N",
}
"KC_M": {
"key": "DK_M",
"label": "M",
}
"KC_COMM": {
"key": "DK_COMM",
"label": ",",
}
"KC_DOT": {
"key": "DK_DOT",
"label": ".",
}
"KC_SLSH": {
"key": "DK_MINS",
"label": "-",
}
/* Shifted symbols
* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐
* │ § │ ! │ " │ # │ ¤ │ % │ & │ / │ ( │ ) │ = │ ? │ ` │ │
* ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤
* │ │ │ │ │ │ │ │ │ │ │ │ │ ^ │ │
* ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │
* │ │ │ │ │ │ │ │ │ │ │ │ │ * │ │
* ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤
* │ │ > │ │ │ │ │ │ │ │ ; │ : │ _ │ │
* ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤
* │ │ │ │ │ │ │ │ │
* └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘
*/
"S(DK_HALF)": {
"key": "DK_SECT",
"label": "§",
}
"S(DK_1)": {
"key": "DK_EXLM",
"label": "!",
}
"S(DK_2)": {
"key": "DK_DQUO",
"label": "\"",
}
"S(DK_3)": {
"key": "DK_HASH",
"label": "#",
}
"S(DK_4)": {
"key": "DK_CURR",
"label": "¤",
}
"S(DK_5)": {
"key": "DK_PERC",
"label": "%",
}
"S(DK_6)": {
"key": "DK_AMPR",
"label": "&",
}
"S(DK_7)": {
"key": "DK_SLSH",
"label": "/",
}
"S(DK_8)": {
"key": "DK_LPRN",
"label": "(",
}
"S(DK_9)": {
"key": "DK_RPRN",
"label": ")",
}
"S(DK_0)": {
"key": "DK_EQL",
"label": "=",
}
"S(DK_PLUS)": {
"key": "DK_QUES",
"label": "?",
}
"S(DK_ACUT)": {
"key": "DK_GRV",
"label": "` (dead)",
}
"S(DK_DIAE)": {
"key": "DK_CIRC",
"label": "^ (dead)",
}
"S(DK_QUOT)": {
"key": "DK_ASTR",
"label": "*",
}
"S(DK_LABK)": {
"key": "DK_RABK",
"label": ">",
}
"S(DK_COMM)": {
"key": "DK_SCLN",
"label": ";",
}
"S(DK_DOT)": {
"key": "DK_COLN",
"label": ":",
}
"S(DK_MINS)": {
"key": "DK_UNDS",
"label": "_",
}
/* AltGr symbols
* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐
* │ │ │ @ │ £ │ $ │ € │ │ { │ [ │ ] │ } │ │ | │ │
* ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤
* │ │ │ │ │ │ │ │ │ │ │ │ │ ~ │ │
* ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │
* │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
* ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤
* │ │ \ │ │ │ │ │ │ │ µ │ │ │ │ │
* ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤
* │ │ │ │ │ │ │ │ │
* └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘
*/
"ALGR(DK_2)": {
"key": "DK_AT",
"label": "@",
}
"ALGR(DK_3)": {
"key": "DK_PND",
"label": "£",
}
"ALGR(DK_4)": {
"key": "DK_DLR",
"label": "$",
}
"ALGR(DK_5)": {
"key": "DK_EURO",
"label": "€",
}
"ALGR(DK_7)": {
"key": "DK_LCBR",
"label": "{",
}
"ALGR(DK_8)": {
"key": "DK_LBRC",
"label": "[",
}
"ALGR(DK_9)": {
"key": "DK_RBRC",
"label": "]",
}
"ALGR(DK_0)": {
"key": "DK_RCBR",
"label": "}",
}
"ALGR(DK_ACUT)": {
"key": "DK_PIPE",
"label": "|",
}
"ALGR(DK_DIAE)": {
"key": "DK_TILD",
"label": "~ (dead)",
}
"ALGR(DK_LABK)": {
"key": "DK_BSLS",
"label": "\\",
}
"ALGR(DK_M)": {
"key": "DK_MICR",
"label": "µ",
}
}
}

View File

@@ -1,302 +0,0 @@
{
"aliases": {
/*
* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐
* │ ` │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ [ │ ] │ │
* ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤
* │ │ ' │ , │ . │ P │ Y │ F │ G │ C │ R │ L │ / │ = │ \ │
* ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤
* │ │ A │ O │ E │ U │ I │ D │ H │ T │ N │ S │ - │ │
* ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────────┤
* │ │ ; │ Q │ J │ K │ X │ B │ M │ W │ V │ Z │ │
* ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤
* │ │ │ │ │ │ │ │ │
* └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘
*/
"KC_GRV": {
"key": "DV_GRV",
"label": "`",
}
"KC_1": {
"key": "DV_1",
"label": "1",
}
"KC_2": {
"key": "DV_2",
"label": "2",
}
"KC_3": {
"key": "DV_3",
"label": "3",
}
"KC_4": {
"key": "DV_4",
"label": "4",
}
"KC_5": {
"key": "DV_5",
"label": "5",
}
"KC_6": {
"key": "DV_6",
"label": "6",
}
"KC_7": {
"key": "DV_7",
"label": "7",
}
"KC_8": {
"key": "DV_8",
"label": "8",
}
"KC_9": {
"key": "DV_9",
"label": "9",
}
"KC_0": {
"key": "DV_0",
"label": "0",
}
"KC_MINS": {
"key": "DV_LBRC",
"label": "[",
}
"KC_EQL": {
"key": "DV_RBRC",
"label": "]",
}
"KC_Q": {
"key": "DV_QUOT",
"label": "'",
}
"KC_W": {
"key": "DV_COMM",
"label": ",",
}
"KC_E": {
"key": "DV_DOT",
"label": ".",
}
"KC_R": {
"key": "DV_P",
"label": "P",
}
"KC_T": {
"key": "DV_Y",
"label": "Y",
}
"KC_Y": {
"key": "DV_F",
"label": "F",
}
"KC_U": {
"key": "DV_G",
"label": "G",
}
"KC_I": {
"key": "DV_C",
"label": "C",
}
"KC_O": {
"key": "DV_R",
"label": "R",
}
"KC_P": {
"key": "DV_L",
"label": "L",
}
"KC_LBRC": {
"key": "DV_SLSH",
"label": "/",
}
"KC_RBRC": {
"key": "DV_EQL",
"label": "=",
}
"KC_BSLS": {
"key": "DV_BSLS",
"label": "\\",
}
"KC_A": {
"key": "DV_A",
"label": "A",
}
"KC_S": {
"key": "DV_O",
"label": "O",
}
"KC_D": {
"key": "DV_E",
"label": "E",
}
"KC_F": {
"key": "DV_U",
"label": "U",
}
"KC_G": {
"key": "DV_I",
"label": "I",
}
"KC_H": {
"key": "DV_D",
"label": "D",
}
"KC_J": {
"key": "DV_H",
"label": "H",
}
"KC_K": {
"key": "DV_T",
"label": "T",
}
"KC_L": {
"key": "DV_N",
"label": "N",
}
"KC_SCLN": {
"key": "DV_S",
"label": "S",
}
"KC_QUOT": {
"key": "DV_MINS",
"label": "-",
}
"KC_Z": {
"key": "DV_SCLN",
"label": ";",
}
"KC_X": {
"key": "DV_Q",
"label": "Q",
}
"KC_C": {
"key": "DV_J",
"label": "J",
}
"KC_V": {
"key": "DV_K",
"label": "K",
}
"KC_B": {
"key": "DV_X",
"label": "X",
}
"KC_N": {
"key": "DV_B",
"label": "B",
}
"KC_M": {
"key": "DV_M",
"label": "M",
}
"KC_COMM": {
"key": "DV_W",
"label": "W",
}
"KC_DOT": {
"key": "DV_V",
"label": "V",
}
"KC_SLSH": {
"key": "DV_Z",
"label": "Z",
}
/* Shifted symbols
* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐
* │ ~ │ ! │ @ │ # │ $ │ % │ ^ │ & │ * │ ( │ ) │ { │ } │ │
* ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤
* │ │ " │ < │ > │ │ │ │ │ │ │ │ ? │ + │ | │
* ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤
* │ │ │ │ │ │ │ │ │ │ │ │ _ │ │
* ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────────┤
* │ │ : │ │ │ │ │ │ │ │ │ │ │
* ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤
* │ │ │ │ │ │ │ │ │
* └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘
*/
"S(DV_GRV)": {
"key": "DV_TILD",
"label": "~",
}
"S(DV_1)": {
"key": "DV_EXLM",
"label": "!",
}
"S(DV_2)": {
"key": "DV_AT",
"label": "@",
}
"S(DV_3)": {
"key": "DV_HASH",
"label": "#",
}
"S(DV_4)": {
"key": "DV_DLR",
"label": "$",
}
"S(DV_5)": {
"key": "DV_PERC",
"label": "%",
}
"S(DV_6)": {
"key": "DV_CIRC",
"label": "^",
}
"S(DV_7)": {
"key": "DV_AMPR",
"label": "&",
}
"S(DV_8)": {
"key": "DV_ASTR",
"label": "*",
}
"S(DV_9)": {
"key": "DV_LPRN",
"label": "(",
}
"S(DV_0)": {
"key": "DV_RPRN",
"label": ")",
}
"S(DV_LBRC)": {
"key": "DV_LCBR",
"label": "{",
}
"S(DV_RBRC)": {
"key": "DV_RCBR",
"label": "}",
}
"S(DV_QUOT)": {
"key": "DV_DQUO",
"label": "\"",
}
"S(DV_COMM)": {
"key": "DV_LABK",
"label": "<",
}
"S(DV_DOT)": {
"key": "DV_RABK",
"label": ">",
}
"S(DV_SLSH)": {
"key": "DV_QUES",
"label": "?",
}
"S(DV_EQL)": {
"key": "DV_PLUS",
"label": "+",
}
"S(DV_BSLS)": {
"key": "DV_PIPE",
"label": "|",
}
"S(DV_MINS)": {
"key": "DV_UNDS",
"label": "_",
}
"S(DV_SCLN)": {
"key": "DV_COLN",
"label": ":",
}
}
}

View File

@@ -1,317 +0,0 @@
{
"aliases": {
/* Dvorak for the French language
* Version: 2
*
* The layout is designed by Francis Leboutte <dvorak-fr@algo.be>
*
* Source: https://algo.be/ergo/dvorak-fr.html
*/
/*
* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐
* │ « │ » │ / │ - │ è │ \ │ ^ │ ( │ ` │ ) │ _ │ [ │ ] │ │
* ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤
* │ │ : │ ' │ é │ G │ . │ H │ V │ C │ M │ K │ Z │ ¨ │ │
* ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │
* │ │ O │ A │ U │ E │ B │ F │ S │ T │ N │ D │ W │ ~ │ │
* ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤
* │ │ à │ ; │ Q │ , │ I │ Y │ X │ R │ L │ P │ J │ │
* ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤
* │ │ │ │ │ │ │ │ │
* └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘
*/
"KC_GRV": {
"key": "DV_LDAQ",
"label": "«",
}
"KC_1": {
"key": "DV_RDAQ",
"label": "»",
}
"KC_2": {
"key": "DV_SLSH",
"label": "/",
}
"KC_3": {
"key": "DV_MINS",
"label": "-",
}
"KC_4": {
"key": "DV_EGRV",
"label": "è",
}
"KC_5": {
"key": "DV_BSLS",
"label": "\\",
}
"KC_6": {
"key": "DV_CIRC",
"label": "^ (dead)",
}
"KC_7": {
"key": "DV_LPRN",
"label": "(",
}
"KC_8": {
"key": "DV_GRV",
"label": "` (dead)",
}
"KC_9": {
"key": "DV_RPRN",
"label": ")",
}
"KC_0": {
"key": "DV_UNDS",
"label": "_",
}
"KC_MINS": {
"key": "DV_LBRC",
"label": "[",
}
"KC_EQL": {
"key": "DV_RBRC",
"label": "]",
}
"KC_Q": {
"key": "DV_COLN",
"label": ":",
}
"KC_W": {
"key": "DV_QUOT",
"label": "'",
}
"KC_E": {
"key": "DV_EACU",
"label": "é",
}
"KC_R": {
"key": "DV_G",
"label": "G",
}
"KC_T": {
"key": "DV_DOT",
"label": ".",
}
"KC_Y": {
"key": "DV_H",
"label": "H",
}
"KC_U": {
"key": "DV_V",
"label": "V",
}
"KC_I": {
"key": "DV_C",
"label": "C",
}
"KC_O": {
"key": "DV_M",
"label": "M",
}
"KC_P": {
"key": "DV_K",
"label": "K",
}
"KC_LBRC": {
"key": "DV_Z",
"label": "Z",
}
"KC_RBRC": {
"key": "DV_DIAE",
"label": "¨ (dead)",
}
"KC_A": {
"key": "DV_O",
"label": "O",
}
"KC_S": {
"key": "DV_A",
"label": "A",
}
"KC_D": {
"key": "DV_U",
"label": "U",
}
"KC_F": {
"key": "DV_E",
"label": "E",
}
"KC_G": {
"key": "DV_B",
"label": "B",
}
"KC_H": {
"key": "DV_F",
"label": "F",
}
"KC_J": {
"key": "DV_S",
"label": "S",
}
"KC_K": {
"key": "DV_T",
"label": "T",
}
"KC_L": {
"key": "DV_N",
"label": "N",
}
"KC_SCLN": {
"key": "DV_D",
"label": "D",
}
"KC_QUOT": {
"key": "DV_W",
"label": "W",
}
"KC_NUHS": {
"key": "DV_TILD",
"label": "~ (dead)",
}
"KC_NUBS": {
"key": "DV_AGRV",
"label": "à",
}
"KC_Z": {
"key": "DV_SCLN",
"label": ";",
}
"KC_X": {
"key": "DV_Q",
"label": "Q",
}
"KC_C": {
"key": "DV_COMM",
"label": ",",
}
"KC_V": {
"key": "DV_I",
"label": "I",
}
"KC_B": {
"key": "DV_Y",
"label": "Y",
}
"KC_N": {
"key": "DV_X",
"label": "X",
}
"KC_M": {
"key": "DV_R",
"label": "R",
}
"KC_COMM": {
"key": "DV_L",
"label": "L",
}
"KC_DOT": {
"key": "DV_P",
"label": "P",
}
"KC_SLSH": {
"key": "DV_J",
"label": "J",
}
/* Shifted symbols
* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐
* │ * │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 0 │ 0 │ + │ % │ │
* ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤
* │ │ ? │ < │ > │ │ ! │ │ │ │ │ │ │ = │ │
* ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │
* │ │ │ │ │ │ │ │ │ │ │ │ │ # │ │
* ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤
* │ │ ç │ | │ │ @ │ │ │ │ │ │ │ │ │
* ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤
* │ │ │ │ │ │ │ │ │
* └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘
*/
"S(DV_LDAQ)": {
"key": "DV_ASTR",
"label": "*",
}
"S(DV_RDAQ)": {
"key": "DV_1",
"label": "1",
}
"S(DV_SLSH)": {
"key": "DV_2",
"label": "2",
}
"S(DV_MINS)": {
"key": "DV_3",
"label": "3",
}
"S(DV_EGRV)": {
"key": "DV_4",
"label": "4",
}
"S(DV_BSLS)": {
"key": "DV_5",
"label": "5",
}
"S(DV_CIRC)": {
"key": "DV_6",
"label": "6",
}
"S(DV_LPRN)": {
"key": "DV_7",
"label": "7",
}
"S(DV_GRV)": {
"key": "DV_8",
"label": "8",
}
"S(DV_RPRN)": {
"key": "DV_9",
"label": "9",
}
"S(DV_UNDS)": {
"key": "DV_0",
"label": "0",
}
"S(DV_LBRC)": {
"key": "DV_PLUS",
"label": "+",
}
"S(DV_RBRC)": {
"key": "DV_PERC",
"label": "%",
}
"S(DV_COLN)": {
"key": "DV_QUES",
"label": "?",
}
"S(DV_QUOT)": {
"key": "DV_LABK",
"label": "<",
}
"S(DV_EACU)": {
"key": "DV_RABK",
"label": ">",
}
"S(DV_DOT)": {
"key": "DV_EXLM",
"label": "!",
}
"S(DV_DIAE)": {
"key": "DV_EQL",
"label": "=",
}
"S(DV_TILD)": {
"key": "DV_HASH",
"label": "#",
}
"S(DV_AGRV)": {
"key": "DV_CCED",
"label": "ç",
}
"S(DV_SCLN)": {
"key": "DV_PIPE",
"label": "|",
}
"S(DV_COMM)": {
"key": "DV_AT",
"label": "@",
}
}
}

View File

@@ -1,302 +0,0 @@
{
"aliases": {
/*
* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐
* │ $ │ & │ [ │ { │ } │ ( │ = │ * │ ) │ + │ ] │ ! │ # │ │
* ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤
* │ │ ; │ , │ . │ P │ Y │ F │ G │ C │ R │ L │ / │ @ │ \ │
* ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤
* │ │ A │ O │ E │ U │ I │ D │ H │ T │ N │ S │ - │ │
* ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────────┤
* │ │ ' │ Q │ J │ K │ X │ B │ M │ W │ V │ Z │ │
* ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤
* │ │ │ │ │ │ │ │ │
* └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘
*/
"KC_GRV": {
"key": "DP_DLR",
"label": "$",
}
"KC_1": {
"key": "DP_AMPR",
"label": "&",
}
"KC_2": {
"key": "DP_LBRC",
"label": "[",
}
"KC_3": {
"key": "DP_LCBR",
"label": "{",
}
"KC_4": {
"key": "DP_RCBR",
"label": "}",
}
"KC_5": {
"key": "DP_LPRN",
"label": "(",
}
"KC_6": {
"key": "DP_EQL",
"label": "=",
}
"KC_7": {
"key": "DP_ASTR",
"label": "*",
}
"KC_8": {
"key": "DP_RPRN",
"label": ")",
}
"KC_9": {
"key": "DP_PLUS",
"label": "+",
}
"KC_0": {
"key": "DP_RBRC",
"label": "]",
}
"KC_MINS": {
"key": "DP_EXLM",
"label": "!",
}
"KC_EQL": {
"key": "DP_HASH",
"label": "#",
}
"KC_Q": {
"key": "DP_SCLN",
"label": ";",
}
"KC_W": {
"key": "DP_COMM",
"label": ",",
}
"KC_E": {
"key": "DP_DOT",
"label": ".",
}
"KC_R": {
"key": "DP_P",
"label": "P",
}
"KC_T": {
"key": "DP_Y",
"label": "Y",
}
"KC_Y": {
"key": "DP_F",
"label": "F",
}
"KC_U": {
"key": "DP_G",
"label": "G",
}
"KC_I": {
"key": "DP_C",
"label": "C",
}
"KC_O": {
"key": "DP_R",
"label": "R",
}
"KC_P": {
"key": "DP_L",
"label": "L",
}
"KC_LBRC": {
"key": "DP_SLSH",
"label": "/",
}
"KC_RBRC": {
"key": "DP_AT",
"label": "@",
}
"KC_BSLS": {
"key": "DP_BSLS",
"label": "\\",
}
"KC_A": {
"key": "DP_A",
"label": "A",
}
"KC_S": {
"key": "DP_O",
"label": "O",
}
"KC_D": {
"key": "DP_E",
"label": "E",
}
"KC_F": {
"key": "DP_U",
"label": "U",
}
"KC_G": {
"key": "DP_I",
"label": "I",
}
"KC_H": {
"key": "DP_D",
"label": "D",
}
"KC_J": {
"key": "DP_H",
"label": "H",
}
"KC_K": {
"key": "DP_T",
"label": "T",
}
"KC_L": {
"key": "DP_N",
"label": "N",
}
"KC_SCLN": {
"key": "DP_S",
"label": "S",
}
"KC_QUOT": {
"key": "DP_MINS",
"label": "-",
}
"KC_Z": {
"key": "DP_QUOT",
"label": "'",
}
"KC_X": {
"key": "DP_Q",
"label": "Q",
}
"KC_C": {
"key": "DP_J",
"label": "J",
}
"KC_V": {
"key": "DP_K",
"label": "K",
}
"KC_B": {
"key": "DP_X",
"label": "X",
}
"KC_N": {
"key": "DP_B",
"label": "B",
}
"KC_M": {
"key": "DP_M",
"label": "M",
}
"KC_COMM": {
"key": "DP_W",
"label": "W",
}
"KC_DOT": {
"key": "DP_V",
"label": "V",
}
"KC_SLSH": {
"key": "DP_Z",
"label": "Z",
}
/* Shifted symbols
* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐
* │ ~ │ % │ 7 │ 5 │ 3 │ 1 │ 9 │ 0 │ 2 │ 4 │ 6 │ 8 │ ` │ │
* ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤
* │ │ : │ < │ > │ │ │ │ │ │ │ │ ? │ ^ │ | │
* ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤
* │ │ │ │ │ │ │ │ │ │ │ │ _ │ │
* ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────────┤
* │ │ " │ │ │ │ │ │ │ │ │ │ │
* ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤
* │ │ │ │ │ │ │ │ │
* └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘
*/
"S(DP_DLR)": {
"key": "DP_TILD",
"label": "~",
}
"S(DP_AMPR)": {
"key": "DP_PERC",
"label": "%",
}
"S(DP_LBRC)": {
"key": "DP_7",
"label": "7",
}
"S(DP_LCBR)": {
"key": "DP_5",
"label": "5",
}
"S(DP_RCBR)": {
"key": "DP_3",
"label": "3",
}
"S(DP_LPRN)": {
"key": "DP_1",
"label": "1",
}
"S(DP_EQL)": {
"key": "DP_9",
"label": "9",
}
"S(DP_ASTR)": {
"key": "DP_0",
"label": "0",
}
"S(DP_RPRN)": {
"key": "DP_2",
"label": "2",
}
"S(DP_PLUS)": {
"key": "DP_4",
"label": "4",
}
"S(DP_RBRC)": {
"key": "DP_6",
"label": "6",
}
"S(DP_EXLM)": {
"key": "DP_8",
"label": "8",
}
"S(DP_HASH)": {
"key": "DP_GRV",
"label": "`",
}
"S(DP_SCLN)": {
"key": "DP_COLN",
"label": ":",
}
"S(DP_COMM)": {
"key": "DP_LABK",
"label": "<",
}
"S(DP_DOT)": {
"key": "DP_RABK",
"label": ">",
}
"S(DP_SLSH)": {
"key": "DP_QUES",
"label": "?",
}
"S(DP_AT)": {
"key": "DP_CIRC",
"label": "^",
}
"S(DP_BSLS)": {
"key": "DP_PIPE",
"label": "|",
}
"S(DP_MINS)": {
"key": "DP_UNDS",
"label": "_",
}
"S(DP_QUOT)": {
"key": "DP_DQUO",
"label": "\"",
}
}
}

View File

@@ -1,367 +0,0 @@
{
"aliases": {
/*
* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐
* │ ˇ │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ + │ ´ │ │
* ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤
* │ │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ Ü │ Õ │ │
* ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │
* │ │ A │ S │ D │ F │ G │ H │ J │ K │ L │ Ö │ Ä │ ' │ │
* ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤
* │ │ < │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ - │ │
* ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤
* │ │ │ │ │ │ │ │ │
* └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘
*/
"KC_GRV": {
"key": "EE_CARN",
"label": "ˇ (dead)",
}
"KC_1": {
"key": "EE_1",
"label": "1",
}
"KC_2": {
"key": "EE_2",
"label": "2",
}
"KC_3": {
"key": "EE_3",
"label": "3",
}
"KC_4": {
"key": "EE_4",
"label": "4",
}
"KC_5": {
"key": "EE_5",
"label": "5",
}
"KC_6": {
"key": "EE_6",
"label": "6",
}
"KC_7": {
"key": "EE_7",
"label": "7",
}
"KC_8": {
"key": "EE_8",
"label": "8",
}
"KC_9": {
"key": "EE_9",
"label": "9",
}
"KC_0": {
"key": "EE_0",
"label": "0",
}
"KC_MINS": {
"key": "EE_PLUS",
"label": "+",
}
"KC_EQL": {
"key": "EE_ACUT",
"label": "´ (dead)",
}
"KC_Q": {
"key": "EE_Q",
"label": "Q",
}
"KC_W": {
"key": "EE_W",
"label": "W",
}
"KC_E": {
"key": "EE_E",
"label": "E",
}
"KC_R": {
"key": "EE_R",
"label": "R",
}
"KC_T": {
"key": "EE_T",
"label": "T",
}
"KC_Y": {
"key": "EE_Y",
"label": "Y",
}
"KC_U": {
"key": "EE_U",
"label": "U",
}
"KC_I": {
"key": "EE_I",
"label": "I",
}
"KC_O": {
"key": "EE_O",
"label": "O",
}
"KC_P": {
"key": "EE_P",
"label": "P",
}
"KC_LBRC": {
"key": "EE_UDIA",
"label": "Ü",
}
"KC_RBRC": {
"key": "EE_OTIL",
"label": "Õ",
}
"KC_A": {
"key": "EE_A",
"label": "A",
}
"KC_S": {
"key": "EE_S",
"label": "S",
}
"KC_D": {
"key": "EE_D",
"label": "D",
}
"KC_F": {
"key": "EE_F",
"label": "F",
}
"KC_G": {
"key": "EE_G",
"label": "G",
}
"KC_H": {
"key": "EE_H",
"label": "H",
}
"KC_J": {
"key": "EE_J",
"label": "J",
}
"KC_K": {
"key": "EE_K",
"label": "K",
}
"KC_L": {
"key": "EE_L",
"label": "L",
}
"KC_SCLN": {
"key": "EE_ODIA",
"label": "Ö",
}
"KC_QUOT": {
"key": "EE_ADIA",
"label": "Ä",
}
"KC_NUHS": {
"key": "EE_QUOT",
"label": "'",
}
"KC_NUBS": {
"key": "EE_LABK",
"label": "<",
}
"KC_Z": {
"key": "EE_Z",
"label": "Z",
}
"KC_X": {
"key": "EE_X",
"label": "X",
}
"KC_C": {
"key": "EE_C",
"label": "C",
}
"KC_V": {
"key": "EE_V",
"label": "V",
}
"KC_B": {
"key": "EE_B",
"label": "B",
}
"KC_N": {
"key": "EE_N",
"label": "N",
}
"KC_M": {
"key": "EE_M",
"label": "M",
}
"KC_COMM": {
"key": "EE_COMM",
"label": ",",
}
"KC_DOT": {
"key": "EE_DOT",
"label": ".",
}
"KC_SLSH": {
"key": "EE_MINS",
"label": "-",
}
/* Shifted symbols
* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐
* │ ~ │ ! │ " │ # │ ¤ │ % │ & │ / │ ( │ ) │ = │ ? │ ` │ │
* ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤
* │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
* ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │
* │ │ │ │ │ │ │ │ │ │ │ │ │ * │ │
* ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤
* │ │ > │ │ │ │ │ │ │ │ ; │ : │ _ │ │
* ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤
* │ │ │ │ │ │ │ │ │
* └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘
*/
"S(EE_CARN)": {
"key": "EE_TILD",
"label": "~ (dead)",
}
"S(EE_1)": {
"key": "EE_EXLM",
"label": "!",
}
"S(EE_2)": {
"key": "EE_DQUO",
"label": "\"",
}
"S(EE_3)": {
"key": "EE_HASH",
"label": "#",
}
"S(EE_4)": {
"key": "EE_CURR",
"label": "¤",
}
"S(EE_5)": {
"key": "EE_PERC",
"label": "%",
}
"S(EE_6)": {
"key": "EE_AMPR",
"label": "&",
}
"S(EE_7)": {
"key": "EE_SLSH",
"label": "/",
}
"S(EE_8)": {
"key": "EE_LPRN",
"label": "(",
}
"S(EE_9)": {
"key": "EE_RPRN",
"label": ")",
}
"S(EE_0)": {
"key": "EE_EQL",
"label": "=",
}
"S(EE_PLUS)": {
"key": "EE_QUES",
"label": "?",
}
"S(EE_ACUT)": {
"key": "EE_GRV",
"label": "` (dead)",
}
"S(EE_QUOT)": {
"key": "EE_ASTR",
"label": "*",
}
"S(EE_LABK)": {
"key": "EE_RABK",
"label": ">",
}
"S(EE_COMM)": {
"key": "EE_SCLN",
"label": ";",
}
"S(EE_DOT)": {
"key": "EE_COLN",
"label": ":",
}
"S(EE_MINS)": {
"key": "EE_UNDS",
"label": "_",
}
/* AltGr symbols
* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐
* │ │ │ @ │ £ │ $ │ € │ │ { │ [ │ ] │ } │ \ │ │ │
* ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤
* │ │ │ │ │ │ │ │ │ │ │ │ │ § │ │
* ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │
* │ │ │ š │ │ │ │ │ │ │ │ │ ^ │ ½ │ │
* ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤
* │ │ | │ ž │ │ │ │ │ │ │ │ │ │ │
* ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤
* │ │ │ │ │ │ │ │ │
* └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘
*/
"ALGR(EE_2)": {
"key": "EE_AT",
"label": "@",
}
"ALGR(EE_3)": {
"key": "EE_PND",
"label": "£",
}
"ALGR(EE_4)": {
"key": "EE_DLR",
"label": "$",
}
"ALGR(EE_5)": {
"key": "EE_EURO",
"label": "€",
}
"ALGR(EE_7)": {
"key": "EE_LCBR",
"label": "{",
}
"ALGR(EE_8)": {
"key": "EE_LBRC",
"label": "[",
}
"ALGR(EE_9)": {
"key": "EE_RBRC",
"label": "]",
}
"ALGR(EE_0)": {
"key": "EE_RCBR",
"label": "}",
}
"ALGR(EE_PLUS)": {
"key": "EE_BSLS",
"label": "\\",
}
"ALGR(EE_OTIL)": {
"key": "EE_SECT",
"label": "§",
}
"ALGR(EE_S)": {
"key": "EE_SCAR",
"label": "š",
}
"ALGR(EE_ADIA)": {
"key": "EE_CIRC",
"label": "^ (dead)",
}
"ALGR(EE_QUOT)": {
"key": "EE_HALF",
"label": "½",
}
"ALGR(EE_LABK)": {
"key": "EE_PIPE",
"label": "|",
}
"ALGR(EE_Z)": {
"key": "EE_ZCAR",
"label": "ž",
}
}
}

View File

@@ -1,359 +0,0 @@
{
"aliases": {
/*
* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐
* │ § │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ + │ ´ │ │
* ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤
* │ │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ Å │ ¨ │ │
* ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │
* │ │ A │ S │ D │ F │ G │ H │ J │ K │ L │ Ö │ Ä │ ' │ │
* ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤
* │ │ < │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ - │ │
* ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤
* │ │ │ │ │ │ │ │ │
* └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘
*/
"KC_GRV": {
"key": "FI_SECT",
"label": "§",
}
"KC_1": {
"key": "FI_1",
"label": "1",
}
"KC_2": {
"key": "FI_2",
"label": "2",
}
"KC_3": {
"key": "FI_3",
"label": "3",
}
"KC_4": {
"key": "FI_4",
"label": "4",
}
"KC_5": {
"key": "FI_5",
"label": "5",
}
"KC_6": {
"key": "FI_6",
"label": "6",
}
"KC_7": {
"key": "FI_7",
"label": "7",
}
"KC_8": {
"key": "FI_8",
"label": "8",
}
"KC_9": {
"key": "FI_9",
"label": "9",
}
"KC_0": {
"key": "FI_0",
"label": "0",
}
"KC_MINS": {
"key": "FI_PLUS",
"label": "+",
}
"KC_EQL": {
"key": "FI_ACUT",
"label": "´ (dead)",
}
"KC_Q": {
"key": "FI_Q",
"label": "Q",
}
"KC_W": {
"key": "FI_W",
"label": "W",
}
"KC_E": {
"key": "FI_E",
"label": "E",
}
"KC_R": {
"key": "FI_R",
"label": "R",
}
"KC_T": {
"key": "FI_T",
"label": "T",
}
"KC_Y": {
"key": "FI_Y",
"label": "Y",
}
"KC_U": {
"key": "FI_U",
"label": "U",
}
"KC_I": {
"key": "FI_I",
"label": "I",
}
"KC_O": {
"key": "FI_O",
"label": "O",
}
"KC_P": {
"key": "FI_P",
"label": "P",
}
"KC_LBRC": {
"key": "FI_ARNG",
"label": "Å",
}
"KC_RBRC": {
"key": "FI_DIAE",
"label": "¨ (dead)",
}
"KC_A": {
"key": "FI_A",
"label": "A",
}
"KC_S": {
"key": "FI_S",
"label": "S",
}
"KC_D": {
"key": "FI_D",
"label": "D",
}
"KC_F": {
"key": "FI_F",
"label": "F",
}
"KC_G": {
"key": "FI_G",
"label": "G",
}
"KC_H": {
"key": "FI_H",
"label": "H",
}
"KC_J": {
"key": "FI_J",
"label": "J",
}
"KC_K": {
"key": "FI_K",
"label": "K",
}
"KC_L": {
"key": "FI_L",
"label": "L",
}
"KC_SCLN": {
"key": "FI_ODIA",
"label": "Ö",
}
"KC_QUOT": {
"key": "FI_ADIA",
"label": "Ä",
}
"KC_NUHS": {
"key": "FI_QUOT",
"label": "'",
}
"KC_NUBS": {
"key": "FI_LABK",
"label": "<",
}
"KC_Z": {
"key": "FI_Z",
"label": "Z",
}
"KC_X": {
"key": "FI_X",
"label": "X",
}
"KC_C": {
"key": "FI_C",
"label": "C",
}
"KC_V": {
"key": "FI_V",
"label": "V",
}
"KC_B": {
"key": "FI_B",
"label": "B",
}
"KC_N": {
"key": "FI_N",
"label": "N",
}
"KC_M": {
"key": "FI_M",
"label": "M",
}
"KC_COMM": {
"key": "FI_COMM",
"label": ",",
}
"KC_DOT": {
"key": "FI_DOT",
"label": ".",
}
"KC_SLSH": {
"key": "FI_MINS",
"label": "-",
}
/* Shifted symbols
* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐
* │ ½ │ ! │ " │ # │ ¤ │ % │ & │ / │ ( │ ) │ = │ ? │ ` │ │
* ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤
* │ │ │ │ │ │ │ │ │ │ │ │ │ ^ │ │
* ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │
* │ │ │ │ │ │ │ │ │ │ │ │ │ * │ │
* ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤
* │ │ > │ │ │ │ │ │ │ │ ; │ : │ _ │ │
* ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤
* │ │ │ │ │ │ │ │ │
* └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘
*/
"S(FI_SECT)": {
"key": "FI_HALF",
"label": "½",
}
"S(FI_1)": {
"key": "FI_EXLM",
"label": "!",
}
"S(FI_2)": {
"key": "FI_DQUO",
"label": "\"",
}
"S(FI_3)": {
"key": "FI_HASH",
"label": "#",
}
"S(FI_4)": {
"key": "FI_CURR",
"label": "¤",
}
"S(FI_5)": {
"key": "FI_PERC",
"label": "%",
}
"S(FI_6)": {
"key": "FI_AMPR",
"label": "&",
}
"S(FI_7)": {
"key": "FI_SLSH",
"label": "/",
}
"S(FI_8)": {
"key": "FI_LPRN",
"label": "(",
}
"S(FI_9)": {
"key": "FI_RPRN",
"label": ")",
}
"S(FI_0)": {
"key": "FI_EQL",
"label": "=",
}
"S(FI_PLUS)": {
"key": "FI_QUES",
"label": "?",
}
"S(FI_ACUT)": {
"key": "FI_GRV",
"label": "` (dead)",
}
"S(FI_DIAE)": {
"key": "FI_CIRC",
"label": "^ (dead)",
}
"S(FI_QUOT)": {
"key": "FI_ASTR",
"label": "*",
}
"S(FI_LABK)": {
"key": "FI_RABK",
"label": ">",
}
"S(FI_COMM)": {
"key": "FI_SCLN",
"label": ";",
}
"S(FI_DOT)": {
"key": "FI_COLN",
"label": ":",
}
"S(FI_MINS)": {
"key": "FI_UNDS",
"label": "_",
}
/* AltGr symbols
* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐
* │ │ │ @ │ £ │ $ │ € │ │ { │ [ │ ] │ } │ \ │ │ │
* ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤
* │ │ │ │ │ │ │ │ │ │ │ │ │ ~ │ │
* ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │
* │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
* ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤
* │ │ | │ │ │ │ │ │ │ µ │ │ │ │ │
* ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤
* │ │ │ │ │ │ │ │ │
* └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘
*/
"ALGR(FI_2)": {
"key": "FI_AT",
"label": "@",
}
"ALGR(FI_3)": {
"key": "FI_PND",
"label": "£",
}
"ALGR(FI_4)": {
"key": "FI_DLR",
"label": "$",
}
"ALGR(FI_5)": {
"key": "FI_EURO",
"label": "€",
}
"ALGR(FI_7)": {
"key": "FI_LCBR",
"label": "{",
}
"ALGR(FI_8)": {
"key": "FI_LBRC",
"label": "[",
}
"ALGR(FI_9)": {
"key": "FI_RBRC",
"label": "]",
}
"ALGR(FI_0)": {
"key": "FI_RCBR",
"label": "}",
}
"ALGR(FI_PLUS)": {
"key": "FI_BSLS",
"label": "\\",
}
"ALGR(FI_DIAE)": {
"key": "FI_TILD",
"label": "~ (dead)",
}
"ALGR(FI_LABK)": {
"key": "FI_PIPE",
"label": "|",
}
"ALGR(FI_M)": {
"key": "FI_MICR",
"label": "µ",
}
}
}

View File

@@ -1,367 +0,0 @@
{
"aliases": {
/*
* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐
* │ ² │ & │ é │ " │ ' │ ( │ - │ è │ _ │ ç │ à │ ) │ = │ │
* ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤
* │ │ A │ Z │ E │ R │ T │ Y │ U │ I │ O │ P │ ^ │ $ │ │
* ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │
* │ │ Q │ S │ D │ F │ G │ H │ J │ K │ L │ M │ ù │ * │ │
* ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤
* │ │ < │ W │ X │ C │ V │ B │ N │ , │ ; │ : │ ! │ │
* ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤
* │ │ │ │ │ │ │ │ │
* └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘
*/
"KC_GRV": {
"key": "FR_SUP2",
"label": "²",
}
"KC_1": {
"key": "FR_AMPR",
"label": "&",
}
"KC_2": {
"key": "FR_EACU",
"label": "é",
}
"KC_3": {
"key": "FR_DQUO",
"label": "\"",
}
"KC_4": {
"key": "FR_QUOT",
"label": "'",
}
"KC_5": {
"key": "FR_LPRN",
"label": "(",
}
"KC_6": {
"key": "FR_MINS",
"label": "-",
}
"KC_7": {
"key": "FR_EGRV",
"label": "è",
}
"KC_8": {
"key": "FR_UNDS",
"label": "_",
}
"KC_9": {
"key": "FR_CCED",
"label": "ç",
}
"KC_0": {
"key": "FR_AGRV",
"label": "à",
}
"KC_MINS": {
"key": "FR_RPRN",
"label": ")",
}
"KC_EQL": {
"key": "FR_EQL",
"label": "=",
}
"KC_Q": {
"key": "FR_A",
"label": "A",
}
"KC_W": {
"key": "FR_Z",
"label": "Z",
}
"KC_E": {
"key": "FR_E",
"label": "E",
}
"KC_R": {
"key": "FR_R",
"label": "R",
}
"KC_T": {
"key": "FR_T",
"label": "T",
}
"KC_Y": {
"key": "FR_Y",
"label": "Y",
}
"KC_U": {
"key": "FR_U",
"label": "U",
}
"KC_I": {
"key": "FR_I",
"label": "I",
}
"KC_O": {
"key": "FR_O",
"label": "O",
}
"KC_P": {
"key": "FR_P",
"label": "P",
}
"KC_LBRC": {
"key": "FR_CIRC",
"label": "^ (dead)",
}
"KC_RBRC": {
"key": "FR_DLR",
"label": "$",
}
"KC_A": {
"key": "FR_Q",
"label": "Q",
}
"KC_S": {
"key": "FR_S",
"label": "S",
}
"KC_D": {
"key": "FR_D",
"label": "D",
}
"KC_F": {
"key": "FR_F",
"label": "F",
}
"KC_G": {
"key": "FR_G",
"label": "G",
}
"KC_H": {
"key": "FR_H",
"label": "H",
}
"KC_J": {
"key": "FR_J",
"label": "J",
}
"KC_K": {
"key": "FR_K",
"label": "K",
}
"KC_L": {
"key": "FR_L",
"label": "L",
}
"KC_SCLN": {
"key": "FR_M",
"label": "M",
}
"KC_QUOT": {
"key": "FR_UGRV",
"label": "ù",
}
"KC_NUHS": {
"key": "FR_ASTR",
"label": "*",
}
"KC_NUBS": {
"key": "FR_LABK",
"label": "<",
}
"KC_Z": {
"key": "FR_W",
"label": "W",
}
"KC_X": {
"key": "FR_X",
"label": "X",
}
"KC_C": {
"key": "FR_C",
"label": "C",
}
"KC_V": {
"key": "FR_V",
"label": "V",
}
"KC_B": {
"key": "FR_B",
"label": "B",
}
"KC_N": {
"key": "FR_N",
"label": "N",
}
"KC_M": {
"key": "FR_COMM",
"label": ",",
}
"KC_COMM": {
"key": "FR_SCLN",
"label": ";",
}
"KC_DOT": {
"key": "FR_COLN",
"label": ":",
}
"KC_SLSH": {
"key": "FR_EXLM",
"label": "!",
}
/* Shifted symbols
* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐
* │ │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ ° │ + │ │
* ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤
* │ │ │ │ │ │ │ │ │ │ │ │ ¨ │ £ │ │
* ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │
* │ │ │ │ │ │ │ │ │ │ │ │ % │ µ │ │
* ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤
* │ │ > │ │ │ │ │ │ │ ? │ . │ / │ § │ │
* ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤
* │ │ │ │ │ │ │ │ │
* └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘
*/
"S(FR_AMPR)": {
"key": "FR_1",
"label": "1",
}
"S(FR_EACU)": {
"key": "FR_2",
"label": "2",
}
"S(FR_DQUO)": {
"key": "FR_3",
"label": "3",
}
"S(FR_QUOT)": {
"key": "FR_4",
"label": "4",
}
"S(FR_LPRN)": {
"key": "FR_5",
"label": "5",
}
"S(FR_MINS)": {
"key": "FR_6",
"label": "6",
}
"S(FR_EGRV)": {
"key": "FR_7",
"label": "7",
}
"S(FR_UNDS)": {
"key": "FR_8",
"label": "8",
}
"S(FR_CCED)": {
"key": "FR_9",
"label": "9",
}
"S(FR_AGRV)": {
"key": "FR_0",
"label": "0",
}
"S(FR_RPRN)": {
"key": "FR_DEG",
"label": "°",
}
"S(FR_EQL)": {
"key": "FR_PLUS",
"label": "+",
}
"S(FR_CIRC)": {
"key": "FR_DIAE",
"label": "¨ (dead)",
}
"S(FR_DLR)": {
"key": "FR_PND",
"label": "£",
}
"S(FR_UGRV)": {
"key": "FR_PERC",
"label": "%",
}
"S(FR_ASTR)": {
"key": "FR_MICR",
"label": "µ",
}
"S(FR_LABK)": {
"key": "FR_RABK",
"label": ">",
}
"S(FR_COMM)": {
"key": "FR_QUES",
"label": "?",
}
"S(FR_SCLN)": {
"key": "FR_DOT",
"label": ".",
}
"S(FR_COLN)": {
"key": "FR_SLSH",
"label": "/",
}
"S(FR_EXLM)": {
"key": "FR_SECT",
"label": "§",
}
/* AltGr symbols
* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐
* │ │ │ ~ │ # │ { │ [ │ | │ ` │ \ │ │ @ │ ] │ } │ │
* ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤
* │ │ │ │ € │ │ │ │ │ │ │ │ │ ¤ │ │
* ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │
* │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
* ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤
* │ │ │ │ │ │ │ │ │ │ │ │ │ │
* ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤
* │ │ │ │ │ │ │ │ │
* └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘
*/
"ALGR(FR_EACU)": {
"key": "FR_TILD",
"label": "~ (dead)",
}
"ALGR(FR_DQUO)": {
"key": "FR_HASH",
"label": "#",
}
"ALGR(FR_QUOT)": {
"key": "FR_LCBR",
"label": "{",
}
"ALGR(FR_LPRN)": {
"key": "FR_LBRC",
"label": "[",
}
"ALGR(FR_MINS)": {
"key": "FR_PIPE",
"label": "|",
}
"ALGR(FR_EGRV)": {
"key": "FR_GRV",
"label": "` (dead)",
}
"ALGR(FR_UNDS)": {
"key": "FR_BSLS",
"label": "\\",
}
"ALGR(FR_AGRV)": {
"key": "FR_AT",
"label": "@",
}
"ALGR(FR_RPRN)": {
"key": "FR_RBRC",
"label": "]",
}
"ALGR(FR_EQL)": {
"key": "FR_RCBR",
"label": "}",
}
"ALGR(KC_E)": {
"key": "FR_EURO",
"label": "€",
}
"ALGR(FR_DLR)": {
"key": "FR_CURR",
"label": "¤",
}
}
}

View File

@@ -1,623 +0,0 @@
{
"aliases": {
/* French AZERTY - AFNOR NF Z71-300
*
* A standard for the French keyboard
*
* The project was launched at the end of 2015 on the proposal of the General
* Delegation for the French language and the languages of France (Ministry
* of Culture), starting from the observation that the current "azerty"
* keyboards constrain the writing of French, languages regional and European
* languages with Latin alphabet.
*
* For the first time, a standard (NF Z71-300) defines the placement of
* characters on the French keyboard. It offers two layouts, one of which
* closely follows the QWERTY keyboard used by most people who write in French.
*
* However, it is in many ways superior to the old keyboard:
*
* - it contains all the characters required to enter text in French (for example É, œ and ")
* - it is designed to be more ergonomic and allow faster typing
* - it includes almost 60 additional characters for entering foreign languages, technical content, etc
* - however, the characters remain easy to locate thanks to intuitive groupings
*
* Source: https://norme-azerty.fr
*/
/*
* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐
* │ @ │ à │ é │ è │ ê │ ( │ ) │ │ « │ » │ ' │ ^ │ │
* ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤
* │ │ A │ Z │ E │ R │ T │ Y │ U │ I │ O │ P │ - │ + │ │
* ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │
* │ │ Q │ S │ D │ F │ G │ H │ J │ K │ L │ M │ / │ * │ │
* ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤
* │ │ < │ W │ X │ C │ V │ B │ N │ . │ , │ : │ ; │ │
* ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤
* │ │ │ │ │ │ │ │ │
* └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘
*/
"KC_GRV": {
"key": "FR_AT",
"label": "@",
}
"KC_1": {
"key": "FR_AGRV",
"label": "à",
}
"KC_2": {
"key": "FR_EACU",
"label": "é",
}
"KC_3": {
"key": "FR_EGRV",
"label": "è",
}
"KC_4": {
"key": "FR_ECIR",
"label": "ê",
}
"KC_5": {
"key": "FR_LPRN",
"label": "(",
}
"KC_6": {
"key": "FR_RPRN",
"label": ")",
}
"KC_7": {
"key": "FR_LSQU",
"label": "",
}
"KC_8": {
"key": "FR_RSQU",
"label": "",
}
"KC_9": {
"key": "FR_LDAQ",
"label": "«",
}
"KC_0": {
"key": "FR_RDAQ",
"label": "»",
}
"KC_MINS": {
"key": "FR_QUOT",
"label": "'",
}
"KC_EQL": {
"key": "FR_DCIR",
"label": "^ (dead)",
}
"KC_Q": {
"key": "FR_A",
"label": "A",
}
"KC_W": {
"key": "FR_Z",
"label": "Z",
}
"KC_E": {
"key": "FR_E",
"label": "E",
}
"KC_R": {
"key": "FR_R",
"label": "R",
}
"KC_T": {
"key": "FR_T",
"label": "T",
}
"KC_Y": {
"key": "FR_Y",
"label": "Y",
}
"KC_U": {
"key": "FR_U",
"label": "U",
}
"KC_I": {
"key": "FR_I",
"label": "I",
}
"KC_O": {
"key": "FR_O",
"label": "O",
}
"KC_P": {
"key": "FR_P",
"label": "P",
}
"KC_LBRC": {
"key": "FR_MINS",
"label": "-",
}
"KC_RBRC": {
"key": "FR_PLUS",
"label": "+",
}
"KC_A": {
"key": "FR_Q",
"label": "Q",
}
"KC_S": {
"key": "FR_S",
"label": "S",
}
"KC_D": {
"key": "FR_D",
"label": "D",
}
"KC_F": {
"key": "FR_F",
"label": "F",
}
"KC_G": {
"key": "FR_G",
"label": "G",
}
"KC_H": {
"key": "FR_H",
"label": "H",
}
"KC_J": {
"key": "FR_J",
"label": "J",
}
"KC_K": {
"key": "FR_K",
"label": "K",
}
"KC_L": {
"key": "FR_L",
"label": "L",
}
"KC_SCLN": {
"key": "FR_M",
"label": "M",
}
"KC_QUOT": {
"key": "FR_SLSH",
"label": "/",
}
"KC_NUHS": {
"key": "FR_ASTR",
"label": "*",
}
"KC_NUBS": {
"key": "FR_LABK",
"label": "<",
}
"KC_Z": {
"key": "FR_W",
"label": "W",
}
"KC_X": {
"key": "FR_X",
"label": "X",
}
"KC_C": {
"key": "FR_C",
"label": "C",
}
"KC_V": {
"key": "FR_V",
"label": "V",
}
"KC_B": {
"key": "FR_B",
"label": "B",
}
"KC_N": {
"key": "FR_N",
"label": "N",
}
"KC_M": {
"key": "FR_DOT",
"label": ".",
}
"KC_COMM": {
"key": "FR_COMM",
"label": ",",
}
"KC_DOT": {
"key": "FR_COLN",
"label": ":",
}
"KC_SLSH": {
"key": "FR_SCLN",
"label": ";",
}
/* Shifted symbols
* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐
* │ # │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ " │ ¨ │ │
* ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤
* │ │ │ │ │ │ │ │ │ │ │ │ │ ± │ │
* ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │
* │ │ │ │ │ │ │ │ │ │ │ │ \ │ ½ │ │
* ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤
* │ │ > │ │ │ │ │ │ │ ? │ ! │ … │ = │ │
* ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤
* │ │ │ │ │ │ │ │ │
* └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘
*/
"S(FR_AT)": {
"key": "FR_HASH",
"label": "#",
}
"S(FR_AGRV)": {
"key": "FR_1",
"label": "1",
}
"S(FR_EACU)": {
"key": "FR_2",
"label": "2",
}
"S(FR_EGRV)": {
"key": "FR_3",
"label": "3",
}
"S(FR_ECIR)": {
"key": "FR_4",
"label": "4",
}
"S(FR_LPRN)": {
"key": "FR_5",
"label": "5",
}
"S(FR_RPRN)": {
"key": "FR_6",
"label": "6",
}
"S(FR_LSQU)": {
"key": "FR_7",
"label": "7",
}
"S(FR_RSQU)": {
"key": "FR_8",
"label": "8",
}
"S(FR_LDAQ)": {
"key": "FR_9",
"label": "9",
}
"S(FR_RDAQ)": {
"key": "FR_0",
"label": "0",
}
"S(FR_QUOT)": {
"key": "FR_DQUO",
"label": "\"",
}
"S(FR_DCIR)": {
"key": "FR_DIAE",
"label": "¨ (dead)",
}
"S(FR_MINS)": {
"key": "FR_NDSH",
"label": "",
}
"S(FR_PLUS)": {
"key": "FR_PLMN",
"label": "±",
}
"S(FR_SLSH)": {
"key": "FR_BSLS",
"label": "\\",
}
"S(FR_ASTR)": {
"key": "FR_HALF",
"label": "½",
}
"S(FR_LABK)": {
"key": "FR_RABK",
"label": ">",
}
"S(FR_DOT)": {
"key": "FR_QUES",
"label": "?",
}
"S(FR_COMM)": {
"key": "FR_EXLM",
"label": "!",
}
"S(FR_COLN)": {
"key": "FR_ELLP",
"label": "…",
}
"S(FR_SCLN)": {
"key": "FR_EQL",
"label": "=",
}
/* AltGr symbols
* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐
* │ ˘ │ § │ ´ │ ` │ & │ [ │ ] │ ¯ │ _ │ “ │ ” │ ° │ ˇ │ │
* ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤
* │ │ æ │ £ │ € │ ® │ { │ } │ ù │ ˙ │ œ │ % │ │ † │ │
* ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │
* │ │ θ │ ß │ $ │ ¤ │ µ │ Eu│ │ │ | │ ∞ │ ÷ │ × │ │
* ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤
* │ │ ≤ │ ʒ │ © │ ç │ ¸ │ ~ │ ¿ │ ¡ │ · │ ≃ │ │
* ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤
* │ │ │ │ │ │ │ │ │
* └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘
*/
"ALGR(FR_AT)": {
"key": "FR_BREV",
"label": "˘ (dead)",
}
"ALGR(FR_AGRV)": {
"key": "FR_SECT",
"label": "§",
}
"ALGR(FR_EACU)": {
"key": "FR_ACUT",
"label": "´ (dead)",
}
"ALGR(FR_EGRV)": {
"key": "FR_GRV",
"label": "` (dead)",
}
"ALGR(FR_ECIR)": {
"key": "FR_AMPR",
"label": "&",
}
"ALGR(FR_LPRN)": {
"key": "FR_LBRC",
"label": "[",
}
"ALGR(FR_RPRN)": {
"key": "FR_RBRC",
"label": "]",
}
"ALGR(FR_LSQU)": {
"key": "FR_MACR",
"label": "¯ (dead)",
}
"ALGR(FR_RSQU)": {
"key": "FR_UNDS",
"label": "_",
}
"ALGR(FR_LDAQ)": {
"key": "FR_LDQU",
"label": "“",
}
"ALGR(FR_RDAQ)": {
"key": "FR_RDQU",
"label": "”",
}
"ALGR(FR_QUOT)": {
"key": "FR_DEG",
"label": "°",
}
"ALGR(FR_DCIR)": {
"key": "FR_CARN",
"label": "ˇ (dead)",
}
"ALGR(FR_A)": {
"key": "FR_AE",
"label": "æ",
}
"ALGR(FR_Z)": {
"key": "FR_PND",
"label": "£",
}
"ALGR(FR_E)": {
"key": "FR_EURO",
"label": "€",
}
"ALGR(FR_R)": {
"key": "FR_REGD",
"label": "®",
}
"ALGR(FR_T)": {
"key": "FR_LCBR",
"label": "{",
}
"ALGR(FR_Y)": {
"key": "FR_RCBR",
"label": "}",
}
"ALGR(FR_U)": {
"key": "FR_UGRV",
"label": "ù",
}
"ALGR(FR_I)": {
"key": "FR_DOTA",
"label": "˙ (dead)",
}
"ALGR(FR_O)": {
"key": "FR_OE",
"label": "œ",
}
"ALGR(FR_P)": {
"key": "FR_PERC",
"label": "%",
}
"ALGR(FR_MINS)": {
"key": "FR_MMNS",
"label": "",
}
"ALGR(FR_PLUS)": {
"key": "FR_DAGG",
"label": "†",
}
"ALGR(FR_Q)": {
"key": "FR_THET",
"label": "θ",
}
"ALGR(FR_S)": {
"key": "FR_SS",
"label": "ß",
}
"ALGR(FR_D)": {
"key": "FR_DLR",
"label": "$",
}
"ALGR(FR_F)": {
"key": "FR_CURR",
"label": "¤ (dead monetary key)",
}
"ALGR(FR_G)": {
"key": "FR_DGRK",
"label": "µ (dead Greek key)",
}
"ALGR(FR_H)": {
"key": "FR_EU",
"label": "Eu (dead European symbol key)",
}
"ALGR(FR_K)": {
"key": "FR_DSLS",
"label": " (dead)",
}
"ALGR(FR_L)": {
"key": "FR_PIPE",
"label": "|",
}
"ALGR(FR_M)": {
"key": "FR_INFN",
"label": "∞",
}
"ALGR(FR_SLSH)": {
"key": "FR_DIV",
"label": "÷",
}
"ALGR(FR_ASTR)": {
"key": "FR_MUL",
"label": "×",
}
"ALGR(FR_LABK)": {
"key": "FR_LEQL",
"label": "≤",
}
"ALGR(FR_W)": {
"key": "FR_EZH",
"label": "ʒ",
}
"ALGR(FR_X)": {
"key": "FR_COPY",
"label": "©",
}
"ALGR(FR_C)": {
"key": "FR_CCED",
"label": "ç",
}
"ALGR(FR_V)": {
"key": "FR_CEDL",
"label": "¸ (dead)",
}
"ALGR(FR_B)": {
"key": "FR_DMNS",
"label": " (dead)",
}
"ALGR(FR_N)": {
"key": "FR_DTIL",
"label": "~ (dead)",
}
"ALGR(FR_DOT)": {
"key": "FR_IQUE",
"label": "¿",
}
"ALGR(FR_COMM)": {
"key": "FR_IEXL",
"label": "¡",
}
"ALGR(FR_COLN)": {
"key": "FR_MDDT",
"label": "·",
}
"ALGR(FR_SCLN)": {
"key": "FR_AEQL",
"label": "≃",
}
/* Shift+AltGr symbols
* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐
* │ ̑ │ │ │ │ │ ˝ │ ̏ │ │ — │ │ ˚ │ │ │
* ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤
* │ │ │ │ │ │ ™ │ │ │ ̣ │ │ ‰ │ │ ‡ │ │
* ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │
* │ │ │ │ │ │ │ ˍ │ │ │ │ │ √ │ ¼ │ │
* ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤
* │ │ ≥ │ │ │ │ ˛ │ │ │ │ ̦ │ │ ≠ │ │
* ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤
* │ │ │ │ │ │ │ │ │
* └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘
*/
"S(ALGR(FR_AT))": {
"key": "FR_IBRV",
"label": "̑ (dead)",
}
"S(ALGR(FR_LPRN))": {
"key": "FR_DACU",
"label": "˝ (dead)",
}
"S(ALGR(FR_RPRN))": {
"key": "FR_DGRV",
"label": "̏ (dead)",
}
"S(ALGR(FR_RSQU))": {
"key": "FR_MDSH",
"label": "—",
}
"S(ALGR(FR_LDAQ))": {
"key": "FR_LSAQ",
"label": "",
}
"S(ALGR(FR_RDAQ))": {
"key": "FR_RSAQ",
"label": "",
}
"S(ALGR(FR_QUOT))": {
"key": "FR_RNGA",
"label": "˚ (dead)",
}
"S(ALGR(FR_T))": {
"key": "FR_TM",
"label": "™",
}
"S(ALGR(FR_I))": {
"key": "FR_DOTB",
"label": "̣ (dead)",
}
"S(ALGR(FR_P))": {
"key": "FR_PERM",
"label": "‰",
}
"S(ALGR(FR_MINS))": {
"key": "FR_NBHY",
"label": " (non-breaking hyphen)",
}
"S(ALGR(FR_PLUS))": {
"key": "FR_DDAG",
"label": "‡",
}
"S(ALGR(FR_H))": {
"key": "FR_MACB",
"label": "ˍ (dead)",
}
"S(ALGR(FR_SLSH))": {
"key": "FR_SQRT",
"label": "√",
}
"S(ALGR(FR_ASTR))": {
"key": "FR_QRTR",
"label": "¼",
}
"S(ALGR(FR_LABK))": {
"key": "FR_GEQL",
"label": "≥",
}
"S(ALGR(FR_V))": {
"key": "FR_OGON",
"label": "˛ (dead)",
}
"S(ALGR(FR_COMM))": {
"key": "FR_DCMM",
"label": "̦ (dead)",
}
"S(ALGR(FR_SCLN))": {
"key": "FR_NEQL",
"label": "≠",
}
}
}

View File

@@ -1,676 +0,0 @@
{
"aliases": {
/*
* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬─────┐
* │ @ │ & │ é │ " │ ' │ ( │ § │ è │ ! │ ç │ à │ ) │ - │ │
* ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬───┤
* │ │ A │ Z │ E │ R │ T │ Y │ U │ I │ O │ P │ ^ │ $ │ │
* ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │
* │ │ Q │ S │ D │ F │ G │ H │ J │ K │ L │ M │ ù │ ` │ │
* ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴──┤
* │ │ < │ W │ X │ C │ V │ B │ N │ , │ ; │ : │ = │ │
* ├────┴┬──┴─┬─┴───┼───┴───┴───┴───┴───┴───┼───┴─┬─┴──┬─────┤
* │ │ │ │ │ │ │ │
* └─────┴────┴─────┴───────────────────────┴─────┴────┴─────┘
*/
"KC_GRV": {
"key": "FR_AT",
"label": "@",
}
"KC_1": {
"key": "FR_AMPR",
"label": "&",
}
"KC_2": {
"key": "FR_LEAC",
"label": "é",
}
"KC_3": {
"key": "FR_DQUO",
"label": "\"",
}
"KC_4": {
"key": "FR_QUOT",
"label": "'",
}
"KC_5": {
"key": "FR_LPRN",
"label": "(",
}
"KC_6": {
"key": "FR_SECT",
"label": "§",
}
"KC_7": {
"key": "FR_LEGR",
"label": "è",
}
"KC_8": {
"key": "FR_EXLM",
"label": "!",
}
"KC_9": {
"key": "FR_LCCE",
"label": "ç",
}
"KC_0": {
"key": "FR_LAGR",
"label": "à",
}
"KC_MINS": {
"key": "FR_RPRN",
"label": ")",
}
"KC_EQL": {
"key": "FR_MINS",
"label": "-",
}
"KC_Q": {
"key": "FR_A",
"label": "A",
}
"KC_W": {
"key": "FR_Z",
"label": "Z",
}
"KC_E": {
"key": "FR_E",
"label": "E",
}
"KC_R": {
"key": "FR_R",
"label": "R",
}
"KC_T": {
"key": "FR_T",
"label": "T",
}
"KC_Y": {
"key": "FR_Y",
"label": "Y",
}
"KC_U": {
"key": "FR_U",
"label": "U",
}
"KC_I": {
"key": "FR_I",
"label": "I",
}
"KC_O": {
"key": "FR_O",
"label": "O",
}
"KC_P": {
"key": "FR_P",
"label": "P",
}
"KC_LBRC": {
"key": "FR_CIRC",
"label": "^",
}
"KC_RBRC": {
"key": "FR_DLR",
"label": "$",
}
"KC_A": {
"key": "FR_Q",
"label": "Q",
}
"KC_S": {
"key": "FR_S",
"label": "S",
}
"KC_D": {
"key": "FR_D",
"label": "D",
}
"KC_F": {
"key": "FR_F",
"label": "F",
}
"KC_G": {
"key": "FR_G",
"label": "G",
}
"KC_H": {
"key": "FR_H",
"label": "H",
}
"KC_J": {
"key": "FR_J",
"label": "J",
}
"KC_K": {
"key": "FR_K",
"label": "K",
}
"KC_L": {
"key": "FR_L",
"label": "L",
}
"KC_SCLN": {
"key": "FR_M",
"label": "M",
}
"KC_QUOT": {
"key": "FR_LUGR",
"label": "ù",
}
"KC_NUHS": {
"key": "FR_GRV",
"label": "`",
}
"KC_NUBS": {
"key": "FR_LABK",
"label": "<",
}
"KC_Z": {
"key": "FR_W",
"label": "W",
}
"KC_X": {
"key": "FR_X",
"label": "X",
}
"KC_C": {
"key": "FR_C",
"label": "C",
}
"KC_V": {
"key": "FR_V",
"label": "V",
}
"KC_B": {
"key": "FR_B",
"label": "B",
}
"KC_N": {
"key": "FR_N",
"label": "N",
}
"KC_M": {
"key": "FR_COMM",
"label": ",",
}
"KC_COMM": {
"key": "FR_SCLN",
"label": ";",
}
"KC_DOT": {
"key": "FR_COLN",
"label": ":",
}
"KC_SLSH": {
"key": "FR_EQL",
"label": "=",
}
/* Shifted symbols
* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬─────┐
* │ # │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ ° │ _ │ │
* ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬───┤
* │ │ │ │ │ │ │ │ │ │ │ │ ¨ │ * │ │
* ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │
* │ │ │ │ │ │ │ │ │ │ │ │ % │ £ │ │
* ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴──┤
* │ │ > │ │ │ │ │ │ │ ? │ . │ / │ + │ │
* ├────┴┬──┴─┬─┴───┼───┴───┴───┴───┴───┴───┼───┴─┬─┴──┬─────┤
* │ │ │ │ │ │ │ │
* └─────┴────┴─────┴───────────────────────┴─────┴────┴─────┘
*/
"S(FR_AT)": {
"key": "FR_HASH",
"label": "#",
}
"S(FR_AMPR)": {
"key": "FR_1",
"label": "1",
}
"S(FR_LEAC)": {
"key": "FR_2",
"label": "2",
}
"S(FR_DQUO)": {
"key": "FR_3",
"label": "3",
}
"S(FR_QUOT)": {
"key": "FR_4",
"label": "4",
}
"S(FR_LPRN)": {
"key": "FR_5",
"label": "5",
}
"S(FR_SECT)": {
"key": "FR_6",
"label": "6",
}
"S(FR_LEGR)": {
"key": "FR_7",
"label": "7",
}
"S(FR_EXLM)": {
"key": "FR_8",
"label": "8",
}
"S(FR_LCCE)": {
"key": "FR_9",
"label": "9",
}
"S(FR_LAGR)": {
"key": "FR_0",
"label": "0",
}
"S(FR_RPRN)": {
"key": "FR_DEG",
"label": "°",
}
"S(FR_MINS)": {
"key": "FR_UNDS",
"label": "_",
}
"S(FR_CIRC)": {
"key": "FR_DIAE",
"label": "¨ (dead)",
}
"S(FR_DLR)": {
"key": "FR_ASTR",
"label": "*",
}
"S(FR_LUGR)": {
"key": "FR_PERC",
"label": "%",
}
"S(FR_GRV)": {
"key": "FR_PND",
"label": "£",
}
"S(FR_LABK)": {
"key": "FR_RABK",
"label": ">",
}
"S(FR_COMM)": {
"key": "FR_QUES",
"label": "?",
}
"S(FR_SCLN)": {
"key": "FR_DOT",
"label": ".",
}
"S(FR_COLN)": {
"key": "FR_SLSH",
"label": "/",
}
"S(FR_EQL)": {
"key": "FR_PLUS",
"label": "+",
}
/* Alted symbols
* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬─────┐
* │ • │  │ ë │ “ │ │ { │ ¶ │ « │ ¡ │ Ç │ Ø │ } │ — │ │
* ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬───┤
* │ │ Æ │  │ Ê │ ® │ † │ Ú │ º │ î │ Œ │ π │ Ô │ € │ │
* ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │
* │ │ ‡ │ Ò │ ∂ │ ƒ │ fi │ Ì │ Ï │ È │ ¬ │ µ │ Ù │ │ │
* ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴──┤
* │ │ ≤ │ │ ≈ │ © │ ◊ │ ß │ ~ │ ∞ │ … │ ÷ │ ≠ │ │
* ├────┴┬──┴─┬─┴───┼───┴───┴───┴───┴───┴───┼───┴─┬─┴──┬─────┤
* │ │ │ │ │ │ │ │
* └─────┴────┴─────┴───────────────────────┴─────┴────┴─────┘
*/
"A(FR_AT)": {
"key": "FR_BULT",
"label": "•",
}
"A(FR_AMPR)": {
"key": "FR_APPL",
"label": " (Apple logo)",
}
"A(FR_LEAC)": {
"key": "FR_LEDI",
"label": "ë",
}
"A(FR_DQUO)": {
"key": "FR_LDQU",
"label": "“",
}
"A(FR_QUOT)": {
"key": "FR_LSQU",
"label": "",
}
"A(FR_LPRN)": {
"key": "FR_LCBR",
"label": "{",
}
"A(FR_SECT)": {
"key": "FR_PILC",
"label": "¶",
}
"A(FR_LEGR)": {
"key": "FR_LDAQ",
"label": "«",
}
"A(FR_EXLM)": {
"key": "FR_IEXL",
"label": "¡",
}
"A(FR_LCCE)": {
"key": "FR_CCCE",
"label": "Ç",
}
"A(FR_LAGR)": {
"key": "FR_OSTR",
"label": "Ø",
}
"A(FR_RPRN)": {
"key": "FR_RCBR",
"label": "}",
}
"A(FR_MINS)": {
"key": "FR_MDSH",
"label": "—",
}
"A(FR_A)": {
"key": "FR_AE",
"label": "Æ",
}
"A(FR_Z)": {
"key": "FR_CACI",
"label": "Â",
}
"A(FR_E)": {
"key": "FR_ECIR",
"label": "Ê",
}
"A(FR_R)": {
"key": "FR_REGD",
"label": "®",
}
"A(FR_T)": {
"key": "FR_DAGG",
"label": "†",
}
"A(FR_Y)": {
"key": "FR_CUAC",
"label": "Ú",
}
"A(FR_U)": {
"key": "FR_MORD",
"label": "º",
}
"A(FR_I)": {
"key": "FR_LICI",
"label": "î",
}
"A(FR_O)": {
"key": "FR_OE",
"label": "Œ",
}
"A(FR_P)": {
"key": "FR_PI",
"label": "π",
}
"A(FR_CIRC)": {
"key": "FR_OCIR",
"label": "Ô",
}
"A(FR_DLR)": {
"key": "FR_EURO",
"label": "€",
}
"A(FR_Q)": {
"key": "FR_DDAG",
"label": "‡",
}
"A(FR_S)": {
"key": "FR_COGR",
"label": "Ò",
}
"A(FR_D)": {
"key": "FR_PDIF",
"label": "∂",
}
"A(FR_F)": {
"key": "FR_FHK",
"label": "ƒ",
}
"A(FR_G)": {
"key": "FR_FI",
"label": "fi",
}
"A(FR_H)": {
"key": "FR_CIGR",
"label": "Ì",
}
"A(FR_J)": {
"key": "FR_CIDI",
"label": "Ï",
}
"A(FR_K)": {
"key": "FR_CEGR",
"label": "È",
}
"A(FR_L)": {
"key": "FR_NOT",
"label": "¬",
}
"A(FR_M)": {
"key": "FR_MICR",
"label": "µ",
}
"A(FR_LUGR)": {
"key": "FR_CUGR",
"label": "Ù",
}
"A(FR_LABK)": {
"key": "FR_LTEQ",
"label": "≤",
}
"A(FR_W)": {
"key": "FR_LSAQ",
"label": "",
}
"A(FR_X)": {
"key": "FR_AEQL",
"label": "≈",
}
"A(FR_C)": {
"key": "FR_COPY",
"label": "©",
}
"A(FR_V)": {
"key": "FR_LOZN",
"label": "◊",
}
"A(FR_B)": {
"key": "FR_SS",
"label": "ß",
}
"A(FR_N)": {
"key": "FR_TILD",
"label": "~ (dead)",
}
"A(FR_COMM)": {
"key": "FR_INFN",
"label": "∞",
}
"A(FR_SCLN)": {
"key": "FR_ELLP",
"label": "…",
}
"A(FR_COLN)": {
"key": "FR_DIV",
"label": "÷",
}
"A(FR_EQL)": {
"key": "FR_NEQL",
"label": "≠",
}
/* Shift+Alted symbols
* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬─────┐
* │ Ÿ │ ´ │ „ │ │ │ [ │ å │ » │ Û │ Á │ │ ] │ │ │
* ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬───┤
* │ │ │ Å │ │ │ ™ │ │ ª │ ï │ │ ∏ │ │ ¥ │ │
* ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │
* │ │ Ω │ ∑ │ ∆ │ · │ fl │ Î │ Í │ Ë │ | │ Ó │ ‰ │ │ │
* ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴──┤
* │ │ ≥ │ │ ¢ │ √ │ ∫ │ ı │ ¿ │ │ \ │ ± │ │
* ├────┴┬──┴─┬─┴───┼───┴───┴───┴───┴───┴───┼───┴─┬─┴──┬─────┤
* │ │ │ │ │ │ │ │
* └─────┴────┴─────┴───────────────────────┴─────┴────┴─────┘
*/
"S(A(FR_AT))": {
"key": "FR_CYDI",
"label": "Ÿ",
}
"S(A(FR_AMPR))": {
"key": "FR_ACUT",
"label": "´ (dead)",
}
"S(A(FR_LEAC))": {
"key": "FR_DLQU",
"label": "„",
}
"S(A(FR_LPRN))": {
"key": "FR_LBRC",
"label": "[",
}
"S(A(FR_SECT))": {
"key": "FR_LARI",
"label": "å",
}
"S(A(FR_LEGR))": {
"key": "FR_RDAQ",
"label": "»",
}
"S(A(FR_EXLM))": {
"key": "FR_CUCI",
"label": "Û",
}
"S(A(FR_LCCE))": {
"key": "FR_CAAC",
"label": "Á",
}
"S(A(FR_RPRN))": {
"key": "FR_RBRC",
"label": "]",
}
"S(A(FR_MINS))": {
"key": "FR_NDSH",
"label": "",
}
"S(A(FR_Z))": {
"key": "FR_CARI",
"label": "Å",
}
"S(A(FR_R))": {
"key": "FR_SLQU",
"label": "",
}
"S(A(FR_T))": {
"key": "FR_TM",
"label": "™",
}
"S(A(FR_U))": {
"key": "FR_FORD",
"label": "ª",
}
"S(A(FR_I))": {
"key": "FR_LIDI",
"label": "ï",
}
"S(A(FR_P))": {
"key": "FR_NARP",
"label": "∏",
}
"S(A(FR_DLR))": {
"key": "FR_YEN",
"label": "¥",
}
"S(A(FR_Q))": {
"key": "FR_OMEG",
"label": "Ω",
}
"S(A(FR_S))": {
"key": "FR_NARS",
"label": "∑",
}
"S(A(FR_D))": {
"key": "FR_INCR",
"label": "∆",
}
"S(A(FR_F))": {
"key": "FR_MDDT",
"label": "·",
}
"S(A(FR_G))": {
"key": "FR_FL",
"label": "fl",
}
"S(A(FR_H))": {
"key": "FR_CICI",
"label": "Î",
}
"S(A(FR_J))": {
"key": "FR_CIAC",
"label": "Í",
}
"S(A(FR_K))": {
"key": "FR_CEDI",
"label": "Ë",
}
"S(A(FR_L))": {
"key": "FR_PIPE",
"label": "|",
}
"S(A(FR_M))": {
"key": "FR_COAC",
"label": "Ó",
}
"S(A(FR_LUGR))": {
"key": "FR_PERM",
"label": "‰",
}
"S(A(FR_LABK))": {
"key": "FR_GTEQ",
"label": "≥",
}
"S(A(FR_W))": {
"key": "FR_RSAQ",
"label": "",
}
"S(A(FR_X))": {
"key": "FR_FRSL",
"label": "",
}
"S(A(FR_C))": {
"key": "FR_CENT",
"label": "¢",
}
"S(A(FR_V))": {
"key": "FR_SQRT",
"label": "√",
}
"S(A(FR_B))": {
"key": "FR_INTG",
"label": "∫",
}
"S(A(FR_N))": {
"key": "FR_DLSI",
"label": "ı",
}
"S(A(FR_COMM))": {
"key": "FR_IQUE",
"label": "¿",
}
"S(A(FR_COLN))": {
"key": "FR_BSLS",
"label": "\\",
}
"S(A(FR_EQL))": {
"key": "FR_PLMN",
"label": "±",
}
}
}

View File

@@ -1,359 +0,0 @@
{
"aliases": {
/*
* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐
* │ ^ │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ ß │ ´ │ │
* ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤
* │ │ Q │ W │ E │ R │ T │ Z │ U │ I │ O │ P │ Ü │ + │ │
* ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │
* │ │ A │ S │ D │ F │ G │ H │ J │ K │ L │ Ö │ Ä │ # │ │
* ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤
* │ │ < │ Y │ X │ C │ V │ B │ N │ M │ , │ . │ - │ │
* ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤
* │ │ │ │ │ │ │ │ │
* └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘
*/
"KC_GRV": {
"key": "DE_CIRC",
"label": "^ (dead)",
}
"KC_1": {
"key": "DE_1",
"label": "1",
}
"KC_2": {
"key": "DE_2",
"label": "2",
}
"KC_3": {
"key": "DE_3",
"label": "3",
}
"KC_4": {
"key": "DE_4",
"label": "4",
}
"KC_5": {
"key": "DE_5",
"label": "5",
}
"KC_6": {
"key": "DE_6",
"label": "6",
}
"KC_7": {
"key": "DE_7",
"label": "7",
}
"KC_8": {
"key": "DE_8",
"label": "8",
}
"KC_9": {
"key": "DE_9",
"label": "9",
}
"KC_0": {
"key": "DE_0",
"label": "0",
}
"KC_MINS": {
"key": "DE_SS",
"label": "ß",
}
"KC_EQL": {
"key": "DE_ACUT",
"label": "´ (dead)",
}
"KC_Q": {
"key": "DE_Q",
"label": "Q",
}
"KC_W": {
"key": "DE_W",
"label": "W",
}
"KC_E": {
"key": "DE_E",
"label": "E",
}
"KC_R": {
"key": "DE_R",
"label": "R",
}
"KC_T": {
"key": "DE_T",
"label": "T",
}
"KC_Y": {
"key": "DE_Z",
"label": "Z",
}
"KC_U": {
"key": "DE_U",
"label": "U",
}
"KC_I": {
"key": "DE_I",
"label": "I",
}
"KC_O": {
"key": "DE_O",
"label": "O",
}
"KC_P": {
"key": "DE_P",
"label": "P",
}
"KC_LBRC": {
"key": "DE_UDIA",
"label": "Ü",
}
"KC_RBRC": {
"key": "DE_PLUS",
"label": "+",
}
"KC_A": {
"key": "DE_A",
"label": "A",
}
"KC_S": {
"key": "DE_S",
"label": "S",
}
"KC_D": {
"key": "DE_D",
"label": "D",
}
"KC_F": {
"key": "DE_F",
"label": "F",
}
"KC_G": {
"key": "DE_G",
"label": "G",
}
"KC_H": {
"key": "DE_H",
"label": "H",
}
"KC_J": {
"key": "DE_J",
"label": "J",
}
"KC_K": {
"key": "DE_K",
"label": "K",
}
"KC_L": {
"key": "DE_L",
"label": "L",
}
"KC_SCLN": {
"key": "DE_ODIA",
"label": "Ö",
}
"KC_QUOT": {
"key": "DE_ADIA",
"label": "Ä",
}
"KC_NUHS": {
"key": "DE_HASH",
"label": "#",
}
"KC_NUBS": {
"key": "DE_LABK",
"label": "<",
}
"KC_Z": {
"key": "DE_Y",
"label": "Y",
}
"KC_X": {
"key": "DE_X",
"label": "X",
}
"KC_C": {
"key": "DE_C",
"label": "C",
}
"KC_V": {
"key": "DE_V",
"label": "V",
}
"KC_B": {
"key": "DE_B",
"label": "B",
}
"KC_N": {
"key": "DE_N",
"label": "N",
}
"KC_M": {
"key": "DE_M",
"label": "M",
}
"KC_COMM": {
"key": "DE_COMM",
"label": ",",
}
"KC_DOT": {
"key": "DE_DOT",
"label": ".",
}
"KC_SLSH": {
"key": "DE_MINS",
"label": "-",
}
/* Shifted symbols
* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐
* │ ° │ ! │ " │ § │ $ │ % │ & │ / │ ( │ ) │ = │ ? │ ` │ │
* ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤
* │ │ │ │ │ │ │ │ │ │ │ │ │ * │ │
* ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │
* │ │ │ │ │ │ │ │ │ │ │ │ │ ' │ │
* ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤
* │ │ > │ │ │ │ │ │ │ │ ; │ : │ _ │ │
* ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤
* │ │ │ │ │ │ │ │ │
* └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘
*/
"S(DE_CIRC)": {
"key": "DE_DEG",
"label": "°",
}
"S(DE_1)": {
"key": "DE_EXLM",
"label": "!",
}
"S(DE_2)": {
"key": "DE_DQUO",
"label": "\"",
}
"S(DE_3)": {
"key": "DE_SECT",
"label": "§",
}
"S(DE_4)": {
"key": "DE_DLR",
"label": "$",
}
"S(DE_5)": {
"key": "DE_PERC",
"label": "%",
}
"S(DE_6)": {
"key": "DE_AMPR",
"label": "&",
}
"S(DE_7)": {
"key": "DE_SLSH",
"label": "/",
}
"S(DE_8)": {
"key": "DE_LPRN",
"label": "(",
}
"S(DE_9)": {
"key": "DE_RPRN",
"label": ")",
}
"S(DE_0)": {
"key": "DE_EQL",
"label": "=",
}
"S(DE_SS)": {
"key": "DE_QUES",
"label": "?",
}
"S(DE_ACUT)": {
"key": "DE_GRV",
"label": "` (dead)",
}
"S(DE_PLUS)": {
"key": "DE_ASTR",
"label": "*",
}
"S(DE_HASH)": {
"key": "DE_QUOT",
"label": "'",
}
"S(DE_LABK)": {
"key": "DE_RABK",
"label": ">",
}
"S(DE_COMM)": {
"key": "DE_SCLN",
"label": ";",
}
"S(DE_DOT)": {
"key": "DE_COLN",
"label": ":",
}
"S(DE_MINS)": {
"key": "DE_UNDS",
"label": "_",
}
/* AltGr symbols
* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐
* │ │ │ ² │ ³ │ │ │ │ { │ [ │ ] │ } │ \ │ │ │
* ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤
* │ │ @ │ │ € │ │ │ │ │ │ │ │ │ ~ │ │
* ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │
* │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
* ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤
* │ │ | │ │ │ │ │ │ │ µ │ │ │ │ │
* ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤
* │ │ │ │ │ │ │ │ │
* └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘
*/
"ALGR(DE_2)": {
"key": "DE_SUP2",
"label": "²",
}
"ALGR(DE_3)": {
"key": "DE_SUP3",
"label": "³",
}
"ALGR(DE_7)": {
"key": "DE_LCBR",
"label": "{",
}
"ALGR(DE_8)": {
"key": "DE_LBRC",
"label": "[",
}
"ALGR(DE_9)": {
"key": "DE_RBRC",
"label": "]",
}
"ALGR(DE_0)": {
"key": "DE_RCBR",
"label": "}",
}
"ALGR(DE_SS)": {
"key": "DE_BSLS",
"label": "\\",
}
"ALGR(DE_Q)": {
"key": "DE_AT",
"label": "@",
}
"ALGR(DE_E)": {
"key": "DE_EURO",
"label": "€",
}
"ALGR(DE_PLUS)": {
"key": "DE_TILD",
"label": "~",
}
"ALGR(DE_LABK)": {
"key": "DE_PIPE",
"label": "|",
}
"ALGR(DE_M)": {
"key": "DE_MICR",
"label": "µ",
}
}
}

View File

@@ -1,656 +0,0 @@
{
"aliases": {
/*
* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬─────┐
* │ ^ │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ ß │ ´ │ │
* ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬───┤
* │ │ Q │ W │ E │ R │ T │ Z │ U │ I │ O │ P │ Ü │ + │ │
* ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │
* │ │ A │ S │ D │ F │ G │ H │ J │ K │ L │ Ö │ Ä │ # │ │
* ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴──┤
* │ │ < │ Y │ X │ C │ V │ B │ N │ M │ , │ . │ - │ │
* ├────┴┬──┴─┬─┴───┼───┴───┴───┴───┴───┴───┼───┴─┬─┴──┬─────┤
* │ │ │ │ │ │ │ │
* └─────┴────┴─────┴───────────────────────┴─────┴────┴─────┘
*/
"KC_GRV": {
"key": "DE_CIRC",
"label": "^ (dead)",
}
"KC_1": {
"key": "DE_1",
"label": "1",
}
"KC_2": {
"key": "DE_2",
"label": "2",
}
"KC_3": {
"key": "DE_3",
"label": "3",
}
"KC_4": {
"key": "DE_4",
"label": "4",
}
"KC_5": {
"key": "DE_5",
"label": "5",
}
"KC_6": {
"key": "DE_6",
"label": "6",
}
"KC_7": {
"key": "DE_7",
"label": "7",
}
"KC_8": {
"key": "DE_8",
"label": "8",
}
"KC_9": {
"key": "DE_9",
"label": "9",
}
"KC_0": {
"key": "DE_0",
"label": "0",
}
"KC_MINS": {
"key": "DE_SS",
"label": "ß",
}
"KC_EQL": {
"key": "DE_ACUT",
"label": "´ (dead)",
}
"KC_Q": {
"key": "DE_Q",
"label": "Q",
}
"KC_W": {
"key": "DE_W",
"label": "W",
}
"KC_E": {
"key": "DE_E",
"label": "E",
}
"KC_R": {
"key": "DE_R",
"label": "R",
}
"KC_T": {
"key": "DE_T",
"label": "T",
}
"KC_Y": {
"key": "DE_Z",
"label": "Z",
}
"KC_U": {
"key": "DE_U",
"label": "U",
}
"KC_I": {
"key": "DE_I",
"label": "I",
}
"KC_O": {
"key": "DE_O",
"label": "O",
}
"KC_P": {
"key": "DE_P",
"label": "P",
}
"KC_LBRC": {
"key": "DE_UDIA",
"label": "Ü",
}
"KC_RBRC": {
"key": "DE_PLUS",
"label": "+",
}
"KC_A": {
"key": "DE_A",
"label": "A",
}
"KC_S": {
"key": "DE_S",
"label": "S",
}
"KC_D": {
"key": "DE_D",
"label": "D",
}
"KC_F": {
"key": "DE_F",
"label": "F",
}
"KC_G": {
"key": "DE_G",
"label": "G",
}
"KC_H": {
"key": "DE_H",
"label": "H",
}
"KC_J": {
"key": "DE_J",
"label": "J",
}
"KC_K": {
"key": "DE_K",
"label": "K",
}
"KC_L": {
"key": "DE_L",
"label": "L",
}
"KC_SCLN": {
"key": "DE_ODIA",
"label": "Ö",
}
"KC_QUOT": {
"key": "DE_ADIA",
"label": "Ä",
}
"KC_NUHS": {
"key": "DE_HASH",
"label": "#",
}
"KC_NUBS": {
"key": "DE_LABK",
"label": "<",
}
"KC_Z": {
"key": "DE_Y",
"label": "Y",
}
"KC_X": {
"key": "DE_X",
"label": "X",
}
"KC_C": {
"key": "DE_C",
"label": "C",
}
"KC_V": {
"key": "DE_V",
"label": "V",
}
"KC_B": {
"key": "DE_B",
"label": "B",
}
"KC_N": {
"key": "DE_N",
"label": "N",
}
"KC_M": {
"key": "DE_M",
"label": "M",
}
"KC_COMM": {
"key": "DE_COMM",
"label": ",",
}
"KC_DOT": {
"key": "DE_DOT",
"label": ".",
}
"KC_SLSH": {
"key": "DE_MINS",
"label": "-",
}
/* Shifted symbols
* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬─────┐
* │ ° │ ! │ " │ § │ $ │ % │ & │ / │ ( │ ) │ = │ ? │ ` │ │
* ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬───┤
* │ │ │ │ │ │ │ │ │ │ │ │ │ * │ │
* ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │
* │ │ │ │ │ │ │ │ │ │ │ │ │ ' │ │
* ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴──┤
* │ │ > │ │ │ │ │ │ │ │ ; │ : │ _ │ │
* ├────┴┬──┴─┬─┴───┼───┴───┴───┴───┴───┴───┼───┴─┬─┴──┬─────┤
* │ │ │ │ │ │ │ │
* └─────┴────┴─────┴───────────────────────┴─────┴────┴─────┘
*/
"S(DE_CIRC)": {
"key": "DE_DEG",
"label": "°",
}
"S(DE_1)": {
"key": "DE_EXLM",
"label": "!",
}
"S(DE_2)": {
"key": "DE_DQUO",
"label": "\"",
}
"S(DE_3)": {
"key": "DE_SECT",
"label": "§",
}
"S(DE_4)": {
"key": "DE_DLR",
"label": "$",
}
"S(DE_5)": {
"key": "DE_PERC",
"label": "%",
}
"S(DE_6)": {
"key": "DE_AMPR",
"label": "&",
}
"S(DE_7)": {
"key": "DE_SLSH",
"label": "/",
}
"S(DE_8)": {
"key": "DE_LPRN",
"label": "(",
}
"S(DE_9)": {
"key": "DE_RPRN",
"label": ")",
}
"S(DE_0)": {
"key": "DE_EQL",
"label": "=",
}
"S(DE_SS)": {
"key": "DE_QUES",
"label": "?",
}
"S(DE_ACUT)": {
"key": "DE_GRV",
"label": "` (dead)",
}
"S(DE_PLUS)": {
"key": "DE_ASTR",
"label": "*",
}
"S(DE_HASH)": {
"key": "DE_QUOT",
"label": "'",
}
"S(DE_LABK)": {
"key": "DE_RABK",
"label": ">",
}
"S(DE_COMM)": {
"key": "DE_SCLN",
"label": ";",
}
"S(DE_DOT)": {
"key": "DE_COLN",
"label": ":",
}
"S(DE_MINS)": {
"key": "DE_UNDS",
"label": "_",
}
/* Alted symbols
* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬─────┐
* │ „ │ ¡ │ “ │ ¶ │ ¢ │ [ │ ] │ | │ { │ } │ ≠ │ ¿ │ │ │
* ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬───┤
* │ │ « │ ∑ │ € │ ® │ † │ Ω │ ¨ │ │ Ø │ π │ • │ ± │ │
* ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │
* │ │ Å │ │ ∂ │ ƒ │ © │ ª │ º │ ∆ │ @ │ Œ │ Æ │ │ │
* ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴──┤
* │ │ ≤ │ ¥ │ ≈ │ Ç │ √ │ ∫ │ ~ │ µ │ ∞ │ … │ │ │
* ├────┴┬──┴─┬─┴───┼───┴───┴───┴───┴───┴───┼───┴─┬─┴──┬─────┤
* │ │ │ │ │ │ │ │
* └─────┴────┴─────┴───────────────────────┴─────┴────┴─────┘
*/
"A(DE_CIRC)": {
"key": "DE_DLQU",
"label": "„",
}
"A(DE_1)": {
"key": "DE_IEXL",
"label": "¡",
}
"A(DE_2)": {
"key": "DE_LDQU",
"label": "“",
}
"A(DE_3)": {
"key": "DE_PILC",
"label": "¶",
}
"A(DE_4)": {
"key": "DE_CENT",
"label": "¢",
}
"A(DE_5)": {
"key": "DE_LBRC",
"label": "[",
}
"A(DE_6)": {
"key": "DE_RBRC",
"label": "]",
}
"A(DE_7)": {
"key": "DE_PIPE",
"label": "|",
}
"A(DE_8)": {
"key": "DE_LCBR",
"label": "{",
}
"A(DE_9)": {
"key": "DE_RCBR",
"label": "}",
}
"A(DE_0)": {
"key": "DE_NEQL",
"label": "≠",
}
"A(DE_SS)": {
"key": "DE_IQUE",
"label": "¿",
}
"A(DE_Q)": {
"key": "DE_LDAQ",
"label": "«",
}
"A(DE_W)": {
"key": "DE_NARS",
"label": "∑",
}
"A(DE_E)": {
"key": "DE_EURO",
"label": "€",
}
"A(DE_R)": {
"key": "DE_REGD",
"label": "®",
}
"A(DE_T)": {
"key": "DE_DAGG",
"label": "†",
}
"A(DE_Z)": {
"key": "DE_OMEG",
"label": "Ω",
}
"A(DE_U)": {
"key": "DE_DIAE",
"label": "¨ (dead)",
}
"A(DE_I)": {
"key": "DE_FRSL",
"label": "",
}
"A(DE_O)": {
"key": "DE_OSTR",
"label": "Ø",
}
"A(DE_P)": {
"key": "DE_PI",
"label": "π",
}
"A(DE_UDIA)": {
"key": "DE_BULT",
"label": "•",
}
"A(DE_PLUS)": {
"key": "DE_PLMN",
"label": "±",
}
"A(DE_A)": {
"key": "DE_ARNG",
"label": "Å",
}
"A(DE_S)": {
"key": "DE_SLQU",
"label": "",
}
"A(DE_D)": {
"key": "DE_PDIF",
"label": "∂",
}
"A(DE_F)": {
"key": "DE_FHK",
"label": "ƒ",
}
"A(DE_G)": {
"key": "DE_COPY",
"label": "©",
}
"A(DE_H)": {
"key": "DE_FORD",
"label": "ª",
}
"A(DE_J)": {
"key": "DE_MORD",
"label": "º",
}
"A(DE_K)": {
"key": "DE_INCR",
"label": "∆",
}
"A(DE_L)": {
"key": "DE_AT",
"label": "@",
}
"A(DE_ODIA)": {
"key": "DE_OE",
"label": "Œ",
}
"A(DE_ADIA)": {
"key": "DE_AE",
"label": "Æ",
}
"A(DE_HASH)": {
"key": "DE_LSQU",
"label": "",
}
"A(DE_LABK)": {
"key": "DE_LTEQ",
"label": "≤",
}
"A(DE_Y)": {
"key": "DE_YEN",
"label": "¥",
}
"A(DE_X)": {
"key": "DE_AEQL",
"label": "≈",
}
"A(DE_C)": {
"key": "DE_CCCE",
"label": "Ç",
}
"A(DE_V)": {
"key": "DE_SQRT",
"label": "√",
}
"A(DE_B)": {
"key": "DE_INTG",
"label": "∫",
}
"A(DE_N)": {
"key": "DE_TILD",
"label": "~ (dead)",
}
"A(DE_M)": {
"key": "DE_MICR",
"label": "µ",
}
"A(DE_COMM)": {
"key": "DE_INFN",
"label": "∞",
}
"A(DE_DOT)": {
"key": "DE_ELLP",
"label": "…",
}
"A(DE_MINS)": {
"key": "DE_NDSH",
"label": "",
}
/* Shift+Alted symbols
* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬─────┐
* │ │ ¬ │ ” │ │ £ │ fi │ │ \ │ ˜ │ · │ ¯ │ ˙ │ ˚ │ │
* ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬───┤
* │ │ » │ │ ‰ │ ¸ │ ˝ │ ˇ │ Á │ Û │ │ ∏ │ │  │ │
* ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │
* │ │ │ Í │ ™ │ Ï │ Ì │ Ó │ ı │ │ fl │ │ │ │ │
* ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴──┤
* │ │ ≥ │ ‡ │ Ù │ │ ◊ │ │ ˘ │ ˛ │ ÷ │ — │ │
* ├────┴┬──┴─┬─┴───┼───┴───┴───┴───┴───┴───┼───┴─┬─┴──┬─────┤
* │ │ │ │ │ │ │ │
* └─────┴────┴─────┴───────────────────────┴─────┴────┴─────┘
*/
"S(A(DE_1))": {
"key": "DE_NOT",
"label": "¬",
}
"S(A(DE_2))": {
"key": "DE_RDQU",
"label": "”",
}
"S(A(DE_4))": {
"key": "DE_PND",
"label": "£",
}
"S(A(DE_5))": {
"key": "DE_FI",
"label": "fi",
}
"S(A(DE_7))": {
"key": "DE_BSLS",
"label": "\\",
}
"S(A(DE_8))": {
"key": "DE_STIL",
"label": "˜",
}
"S(A(DE_9))": {
"key": "DE_MDDT",
"label": "·",
}
"S(A(DE_0))": {
"key": "DE_MACR",
"label": "¯",
}
"S(A(DE_SS))": {
"key": "DE_DOTA",
"label": "˙",
}
"S(A(DE_ACUT))": {
"key": "DE_RNGA",
"label": "˚",
}
"S(A(DE_Q))": {
"key": "DE_RDAQ",
"label": "»",
}
"S(A(DE_E))": {
"key": "DE_PERM",
"label": "‰",
}
"S(A(DE_R))": {
"key": "DE_CEDL",
"label": "¸",
}
"S(A(DE_T))": {
"key": "DE_DACU",
"label": "˝",
}
"S(A(DE_Z))": {
"key": "DE_CARN",
"label": "ˇ",
}
"S(A(DE_U))": {
"key": "DE_AACU",
"label": "Á",
}
"S(A(DE_I))": {
"key": "DE_UCIR",
"label": "Û",
}
"S(A(DE_P))": {
"key": "DE_NARP",
"label": "∏",
}
"S(A(DE_PLUS))": {
"key": "DE_APPL",
"label": " (Apple logo)",
}
"S(A(DE_S))": {
"key": "DE_IACU",
"label": "Í",
}
"S(A(DE_D))": {
"key": "DE_TM",
"label": "™",
}
"S(A(DE_F))": {
"key": "DE_IDIA",
"label": "Ï",
}
"S(A(DE_G))": {
"key": "DE_IGRV",
"label": "Ì",
}
"S(A(DE_H))": {
"key": "DE_OACU",
"label": "Ó",
}
"S(A(DE_J))": {
"key": "DE_DLSI",
"label": "ı",
}
"S(A(DE_L))": {
"key": "DE_FL",
"label": "fl",
}
"S(A(DE_LABK))": {
"key": "DE_GTEQ",
"label": "≥",
}
"S(A(DE_Y))": {
"key": "DE_DDAG",
"label": "‡",
}
"S(A(DE_X))": {
"key": "DE_UGRV",
"label": "Ù",
}
"S(A(DE_V))": {
"key": "DE_LOZN",
"label": "◊",
}
"S(A(DE_B))": {
"key": "DE_LSAQ",
"label": "",
}
"S(A(DE_N))": {
"key": "DE_RSAQ",
"label": "",
}
"S(A(DE_M))": {
"key": "DE_BREV",
"label": "˘",
}
"S(A(DE_COMM))": {
"key": "DE_OGON",
"label": "˛",
}
"S(A(DE_DOT))": {
"key": "DE_DIV",
"label": "÷",
}
"S(A(DE_MINS))": {
"key": "DE_MDSH",
"label": "—",
}
}
}

View File

@@ -1,391 +0,0 @@
{
"aliases": {
/*
* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐
* │ ` │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │ │
* ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤
* │ │ ; │ ς │ ΕΡΤΥ │ Θ │ ΙΟ │ Π │ [ │ ] │ │
* ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │
* │ │ Α │ Σ │ Δ │ Φ │ Γ │ Η │ Ξ │ Κ │ Λ │ ΄ │ ' │ \ │ │
* ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤
* │ │ │ ΖΧ │ Ψ │ Ω │ ΒΝΜ │ , │ . │ / │ │
* ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤
* │ │ │ │ │ │ │ │ │
* └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘
*/
"KC_GRV": {
"key": "GR_GRV",
"label": "`",
}
"KC_1": {
"key": "GR_1",
"label": "1",
}
"KC_2": {
"key": "GR_2",
"label": "2",
}
"KC_3": {
"key": "GR_3",
"label": "3",
}
"KC_4": {
"key": "GR_4",
"label": "4",
}
"KC_5": {
"key": "GR_5",
"label": "5",
}
"KC_6": {
"key": "GR_6",
"label": "6",
}
"KC_7": {
"key": "GR_7",
"label": "7",
}
"KC_8": {
"key": "GR_8",
"label": "8",
}
"KC_9": {
"key": "GR_9",
"label": "9",
}
"KC_0": {
"key": "GR_0",
"label": "0",
}
"KC_MINS": {
"key": "GR_MINS",
"label": "-",
}
"KC_EQL": {
"key": "GR_EQL",
"label": "=",
}
"KC_Q": {
"key": "GR_SCLN",
"label": ";",
}
"KC_W": {
"key": "GR_FSIG",
"label": "ς",
}
"KC_E": {
"key": "GR_EPSL",
"label": "Ε",
}
"KC_R": {
"key": "GR_RHO",
"label": "Ρ",
}
"KC_T": {
"key": "GR_TAU",
"label": "Τ",
}
"KC_Y": {
"key": "GR_UPSL",
"label": "Υ",
}
"KC_U": {
"key": "GR_THET",
"label": "Θ",
}
"KC_I": {
"key": "GR_IOTA",
"label": "Ι",
}
"KC_O": {
"key": "GR_OMCR",
"label": "Ο",
}
"KC_P": {
"key": "GR_PI",
"label": "Π",
}
"KC_LBRC": {
"key": "GR_LBRC",
"label": "[",
}
"KC_RBRC": {
"key": "GR_RBRC",
"label": "]",
}
"KC_A": {
"key": "GR_ALPH",
"label": "Α",
}
"KC_S": {
"key": "GR_SIGM",
"label": "Σ",
}
"KC_D": {
"key": "GR_DELT",
"label": "Δ",
}
"KC_F": {
"key": "GR_PHI",
"label": "Φ",
}
"KC_G": {
"key": "GR_GAMM",
"label": "Γ",
}
"KC_H": {
"key": "GR_ETA",
"label": "Η",
}
"KC_J": {
"key": "GR_XI",
"label": "Ξ",
}
"KC_K": {
"key": "GR_KAPP",
"label": "Κ",
}
"KC_L": {
"key": "GR_LAMB",
"label": "Λ",
}
"KC_SCLN": {
"key": "GR_TONS",
"label": "΄ (dead)",
}
"KC_QUOT": {
"key": "GR_QUOT",
"label": "'",
}
"KC_NUHS": {
"key": "GR_BSLS",
"label": "\\",
}
"KC_Z": {
"key": "GR_ZETA",
"label": "Ζ",
}
"KC_X": {
"key": "GR_CHI",
"label": "Χ",
}
"KC_C": {
"key": "GR_PSI",
"label": "Ψ",
}
"KC_V": {
"key": "GR_OMEG",
"label": "Ω",
}
"KC_B": {
"key": "GR_BETA",
"label": "Β",
}
"KC_N": {
"key": "GR_NU",
"label": "Ν",
}
"KC_M": {
"key": "GR_MU",
"label": "Μ",
}
"KC_COMM": {
"key": "GR_COMM",
"label": ",",
}
"KC_DOT": {
"key": "GR_DOT",
"label": ".",
}
"KC_SLSH": {
"key": "GR_SLSH",
"label": "/",
}
/* Shifted symbols
* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐
* │ ~ │ ! │ @ │ # │ $ │ % │ ^ │ & │ * │ ( │ ) │ _ │ + │ │
* ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤
* │ │ : │ ΅ │ │ │ │ │ │ │ │ │ { │ } │ │
* ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │
* │ │ │ │ │ │ │ │ │ │ │ ¨ │ " │ | │ │
* ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤
* │ │ │ │ │ │ │ │ │ │ < │ > │ ? │ │
* ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤
* │ │ │ │ │ │ │ │ │
* └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘
*/
"S(GR_GRV)": {
"key": "GR_TILD",
"label": "~",
}
"S(GR_1)": {
"key": "GR_EXLM",
"label": "!",
}
"S(GR_2)": {
"key": "GR_AT",
"label": "@",
}
"S(GR_3)": {
"key": "GR_HASH",
"label": "#",
}
"S(GR_4)": {
"key": "GR_DLR",
"label": "$",
}
"S(GR_5)": {
"key": "GR_PERC",
"label": "%",
}
"S(GR_6)": {
"key": "GR_CIRC",
"label": "^",
}
"S(GR_7)": {
"key": "GR_AMPR",
"label": "&",
}
"S(GR_8)": {
"key": "GR_ASTR",
"label": "*",
}
"S(GR_9)": {
"key": "GR_LPRN",
"label": "(",
}
"S(GR_0)": {
"key": "GR_RPRN",
"label": ")",
}
"S(GR_MINS)": {
"key": "GR_UNDS",
"label": "_",
}
"S(GR_EQL)": {
"key": "GR_PLUS",
"label": "+",
}
"S(GR_SCLN)": {
"key": "GR_COLN",
"label": ":",
}
"S(GR_FSIG)": {
"key": "GR_DIAT",
"label": "΅ (dead)",
}
"S(GR_LBRC)": {
"key": "GR_LCBR",
"label": "{",
}
"S(GR_RBRC)": {
"key": "GR_RCBR",
"label": "}",
}
"S(GR_TONS)": {
"key": "GR_DIAE",
"label": "¨ (dead)",
}
"S(GR_QUOT)": {
"key": "GR_DQUO",
"label": "\"",
}
"S(GR_BSLS)": {
"key": "GR_PIPE",
"label": "|",
}
"S(GR_COMM)": {
"key": "GR_LABK",
"label": "<",
}
"S(GR_DOT)": {
"key": "GR_RABK",
"label": ">",
}
"S(GR_SLSH)": {
"key": "GR_QUES",
"label": "?",
}
/* AltGr symbols
* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐
* │ │ │ ² │ ³ │ £ │ § │ ¶ │ │ ¤ │ ¦ │ ° │ ± │ ½ │ │
* ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤
* │ │ │ │ € │ ® │ │ ¥ │ │ │ │ │ « │ » │ │
* ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │
* │ │ │ │ │ │ │ │ │ │ │ │ │ ¬ │ │
* ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤
* │ │ │ │ │ © │ │ │ │ │ │ │ │ │
* ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤
* │ │ │ │ │ │ │ │ │
* └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘
*/
"ALGR(GR_2)": {
"key": "GR_SUP2",
"label": "²",
}
"ALGR(GR_3)": {
"key": "GR_SUP3",
"label": "³",
}
"ALGR(GR_4)": {
"key": "GR_PND",
"label": "£",
}
"ALGR(GR_5)": {
"key": "GR_SECT",
"label": "§",
}
"ALGR(GR_6)": {
"key": "GR_PILC",
"label": "¶",
}
"ALGR(GR_8)": {
"key": "GR_CURR",
"label": "¤",
}
"ALGR(GR_9)": {
"key": "GR_BRKP",
"label": "¦",
}
"ALGR(GR_0)": {
"key": "GR_DEG",
"label": "°",
}
"ALGR(GR_MINS)": {
"key": "GR_PLMN",
"label": "±",
}
"ALGR(GR_EQL)": {
"key": "GR_HALF",
"label": "½",
}
"ALGR(GR_EPSL)": {
"key": "GR_EURO",
"label": "€",
}
"ALGR(GR_RHO)": {
"key": "GR_REGD",
"label": "®",
}
"ALGR(GR_UPSL)": {
"key": "GR_YEN",
"label": "¥",
}
"ALGR(GR_LBRC)": {
"key": "GR_LDAQ",
"label": "«",
}
"ALGR(GR_RBRC)": {
"key": "GR_RDAQ",
"label": "»",
}
"ALGR(GR_BSLS)": {
"key": "GR_NOT",
"label": "¬",
}
"ALGR(GR_PSI)": {
"key": "GR_COPY",
"label": "©",
}
}
}

View File

@@ -1,347 +0,0 @@
{
"aliases": {
/*
* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐
* │ ; │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │ │
* ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤
* │ │ / │ ' │ פ │ ם │ ןוט │ א │ ר │ ק │ ] │ [ │ │
* ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │
* │ │ ף │ ך │ ל │ ח │ י │ ע │ כ │ ג │ ד │ ש │ , │ \ │ │
* ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤
* │ │ │ ץ │ ת │ צ │ מ │ נ │ ה │ ב │ ס │ ז │ . │ │
* ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤
* │ │ │ │ │ │ │ │ │
* └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘
*/
"KC_GRV": {
"key": "IL_SCLN",
"label": ";",
}
"KC_1": {
"key": "IL_1",
"label": "1",
}
"KC_2": {
"key": "IL_2",
"label": "2",
}
"KC_3": {
"key": "IL_3",
"label": "3",
}
"KC_4": {
"key": "IL_4",
"label": "4",
}
"KC_5": {
"key": "IL_5",
"label": "5",
}
"KC_6": {
"key": "IL_6",
"label": "6",
}
"KC_7": {
"key": "IL_7",
"label": "7",
}
"KC_8": {
"key": "IL_8",
"label": "8",
}
"KC_9": {
"key": "IL_9",
"label": "9",
}
"KC_0": {
"key": "IL_0",
"label": "0",
}
"KC_MINS": {
"key": "IL_MINS",
"label": "-",
}
"KC_EQL": {
"key": "IL_EQL",
"label": "=",
}
"KC_Q": {
"key": "IL_SLSH",
"label": "/",
}
"KC_W": {
"key": "IL_QUOT",
"label": "'",
}
"KC_E": {
"key": "IL_QOF",
"label": "ק",
}
"KC_R": {
"key": "IL_RESH",
"label": "ר",
}
"KC_T": {
"key": "IL_ALEF",
"label": "א",
}
"KC_Y": {
"key": "IL_TET",
"label": "ט",
}
"KC_U": {
"key": "IL_VAV",
"label": "ו",
}
"KC_I": {
"key": "IL_FNUN",
"label": "ן",
}
"KC_O": {
"key": "IL_FMEM",
"label": "ם",
}
"KC_P": {
"key": "IL_PE",
"label": "פ",
}
"KC_LBRC": {
"key": "IL_RBRC",
"label": "]",
}
"KC_RBRC": {
"key": "IL_LBRC",
"label": "[",
}
"KC_A": {
"key": "IL_SHIN",
"label": "ש",
}
"KC_S": {
"key": "IL_DALT",
"label": "ד",
}
"KC_D": {
"key": "IL_GIML",
"label": "ג",
}
"KC_F": {
"key": "IL_KAF",
"label": "כ",
}
"KC_G": {
"key": "IL_AYIN",
"label": "ע",
}
"KC_H": {
"key": "IL_YOD",
"label": "י",
}
"KC_J": {
"key": "IL_HET",
"label": "ח",
}
"KC_K": {
"key": "IL_LAMD",
"label": "ל",
}
"KC_L": {
"key": "IL_FKAF",
"label": "ך",
}
"KC_SCLN": {
"key": "IL_FPE",
"label": "ף",
}
"KC_QUOT": {
"key": "IL_COMM",
"label": ",",
}
"KC_NUHS": {
"key": "IL_BSLS",
"label": "\\",
}
"KC_Z": {
"key": "IL_ZAYN",
"label": "ז",
}
"KC_X": {
"key": "IL_SMKH",
"label": "ס",
}
"KC_C": {
"key": "IL_BET",
"label": "ב",
}
"KC_V": {
"key": "IL_HE",
"label": "ה",
}
"KC_B": {
"key": "IL_NUN",
"label": "נ",
}
"KC_N": {
"key": "IL_MEM",
"label": "מ",
}
"KC_M": {
"key": "IL_TSDI",
"label": "צ",
}
"KC_COMM": {
"key": "IL_TAV",
"label": "ת",
}
"KC_DOT": {
"key": "IL_FTSD",
"label": "ץ",
}
"KC_SLSH": {
"key": "IL_DOT",
"label": ".",
}
/* Shifted symbols
* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐
* │ ~ │ ! │ @ │ # │ $ │ % │ ^ │ & │ * │ ) │ ( │ _ │ + │ │
* ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤
* │ │ │ │ │ │ │ │ │ │ │ │ } │ { │ │
* ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │
* │ │ │ │ │ │ │ │ │ │ │ : │ " │ | │ │
* ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤
* │ │ │ │ │ │ │ │ │ │ > │ < │ ? │ │
* ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤
* │ │ │ │ │ │ │ │ │
* └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘
*/
"S(IL_SCLN)": {
"key": "IL_TILD",
"label": "~",
}
"S(IL_1)": {
"key": "IL_EXLM",
"label": "!",
}
"S(IL_2)": {
"key": "IL_AT",
"label": "@",
}
"S(IL_3)": {
"key": "IL_PND",
"label": "#",
}
"S(IL_4)": {
"key": "IL_DLR",
"label": "$",
}
"S(IL_5)": {
"key": "IL_PERC",
"label": "%",
}
"S(IL_6)": {
"key": "IL_CIRC",
"label": "^",
}
"S(IL_7)": {
"key": "IL_AMPR",
"label": "&",
}
"S(IL_8)": {
"key": "IL_ASTR",
"label": "*",
}
"S(IL_9)": {
"key": "IL_RPRN",
"label": ")",
}
"S(IL_0)": {
"key": "IL_LPRN",
"label": "(",
}
"S(IL_MINS)": {
"key": "IL_UNDS",
"label": "_",
}
"S(IL_EQL)": {
"key": "IL_PLUS",
"label": "+",
}
"S(IL_RBRC)": {
"key": "IL_RCBR",
"label": "}",
}
"S(IL_LBRC)": {
"key": "IL_LCBR",
"label": "{",
}
"S(IL_FPE)": {
"key": "IL_COLN",
"label": ":",
}
"S(IL_COMM)": {
"key": "IL_DQUO",
"label": "\"",
}
"S(IL_BSLS)": {
"key": "IL_PIPE",
"label": "|",
}
"S(IL_TAV)": {
"key": "IL_RABK",
"label": ">",
}
"S(IL_FTSD)": {
"key": "IL_LABK",
"label": "<",
}
"S(IL_DOT)": {
"key": "IL_QUES",
"label": "?",
}
/* AltGr symbols
* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐
* │ │ │ │ € │ ₪ │ ° │ │ │ × │ │ │ │ │ │
* ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤
* │ │ │ │ │ │ │ װ │ │ │ │ │ │ │ │
* ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │
* │ │ │ │ │ │ ײ │ ױ │ │ │ │ │ │ │ │
* ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤
* │ │ │ │ │ │ │ │ │ │ │ │ ÷ │ │
* ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤
* │ │ │ │ │ │ │ │ │
* └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘
*/
"ALGR(IL_3)": {
"key": "IL_EURO",
"label": "€",
}
"ALGR(IL_4)": {
"key": "IL_SHKL",
"label": "₪",
}
"ALGR(IL_5)": {
"key": "IL_DEG",
"label": "°",
}
"ALGR(IL_8)": {
"key": "IL_MUL",
"label": "×",
}
"ALGR(IL_TET)": {
"key": "IL_DVAV",
"label": "װ",
}
"ALGR(IL_AYIN)": {
"key": "IL_VYOD",
"label": "ױ",
}
"ALGR(IL_YOD)": {
"key": "IL_DYOD",
"label": "ײ",
}
"ALGR(IL_DOT)": {
"key": "IL_DIV",
"label": "÷",
}
}
}

View File

@@ -1,435 +0,0 @@
{
"aliases": {
/*
* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐
* │ 0 │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ Ö │ Ü │ Ó │ │
* ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤
* │ │ Q │ W │ E │ R │ T │ Z │ U │ I │ O │ P │ Ő │ Ú │ │
* ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │
* │ │ A │ S │ D │ F │ G │ H │ J │ K │ L │ É │ Á │ Ű │ │
* ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤
* │ │ Í │ Y │ X │ C │ V │ B │ N │ M │ , │ . │ - │ │
* ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤
* │ │ │ │ │ │ │ │ │
* └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘
*/
"KC_GRV": {
"key": "HU_0",
"label": "0",
}
"KC_1": {
"key": "HU_1",
"label": "1",
}
"KC_2": {
"key": "HU_2",
"label": "2",
}
"KC_3": {
"key": "HU_3",
"label": "3",
}
"KC_4": {
"key": "HU_4",
"label": "4",
}
"KC_5": {
"key": "HU_5",
"label": "5",
}
"KC_6": {
"key": "HU_6",
"label": "6",
}
"KC_7": {
"key": "HU_7",
"label": "7",
}
"KC_8": {
"key": "HU_8",
"label": "8",
}
"KC_9": {
"key": "HU_9",
"label": "9",
}
"KC_0": {
"key": "HU_ODIA",
"label": "Ö",
}
"KC_MINS": {
"key": "HU_UDIA",
"label": "Ü",
}
"KC_EQL": {
"key": "HU_OACU",
"label": "Ó",
}
"KC_Q": {
"key": "HU_Q",
"label": "Q",
}
"KC_W": {
"key": "HU_W",
"label": "W",
}
"KC_E": {
"key": "HU_E",
"label": "E",
}
"KC_R": {
"key": "HU_R",
"label": "R",
}
"KC_T": {
"key": "HU_T",
"label": "T",
}
"KC_Y": {
"key": "HU_Z",
"label": "Z",
}
"KC_U": {
"key": "HU_U",
"label": "U",
}
"KC_I": {
"key": "HU_I",
"label": "I",
}
"KC_O": {
"key": "HU_O",
"label": "O",
}
"KC_P": {
"key": "HU_P",
"label": "P",
}
"KC_LBRC": {
"key": "HU_ODAC",
"label": "Ő",
}
"KC_RBRC": {
"key": "HU_UACU",
"label": "Ú",
}
"KC_A": {
"key": "HU_A",
"label": "A",
}
"KC_S": {
"key": "HU_S",
"label": "S",
}
"KC_D": {
"key": "HU_D",
"label": "D",
}
"KC_F": {
"key": "HU_F",
"label": "F",
}
"KC_G": {
"key": "HU_G",
"label": "G",
}
"KC_H": {
"key": "HU_H",
"label": "H",
}
"KC_J": {
"key": "HU_J",
"label": "J",
}
"KC_K": {
"key": "HU_K",
"label": "K",
}
"KC_L": {
"key": "HU_L",
"label": "L",
}
"KC_SCLN": {
"key": "HU_EACU",
"label": "É",
}
"KC_QUOT": {
"key": "HU_AACU",
"label": "Á",
}
"KC_NUHS": {
"key": "HU_UDAC",
"label": "Ű",
}
"KC_NUBS": {
"key": "HU_IACU",
"label": "Í",
}
"KC_Z": {
"key": "HU_Y",
"label": "Y",
}
"KC_X": {
"key": "HU_X",
"label": "X",
}
"KC_C": {
"key": "HU_C",
"label": "C",
}
"KC_V": {
"key": "HU_V",
"label": "V",
}
"KC_B": {
"key": "HU_B",
"label": "B",
}
"KC_N": {
"key": "HU_N",
"label": "N",
}
"KC_M": {
"key": "HU_M",
"label": "M",
}
"KC_COMM": {
"key": "HU_COMM",
"label": ",",
}
"KC_DOT": {
"key": "HU_DOT",
"label": ".",
}
"KC_SLSH": {
"key": "HU_MINS",
"label": "-",
}
/* Shifted symbols
* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐
* │ § │ ' │ " │ + │ ! │ % │ / │ = │ ( │ ) │ │ │ │ │
* ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤
* │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
* ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │
* │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
* ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤
* │ │ │ │ │ │ │ │ │ │ ? │ : │ _ │ │
* ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤
* │ │ │ │ │ │ │ │ │
* └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘
*/
"S(HU_0)": {
"key": "HU_SECT",
"label": "§",
}
"S(HU_1)": {
"key": "HU_QUOT",
"label": "'",
}
"S(HU_2)": {
"key": "HU_DQUO",
"label": "\"",
}
"S(HU_3)": {
"key": "HU_PLUS",
"label": "+",
}
"S(HU_4)": {
"key": "HU_EXLM",
"label": "!",
}
"S(HU_5)": {
"key": "HU_PERC",
"label": "%",
}
"S(HU_6)": {
"key": "HU_SLSH",
"label": "/",
}
"S(HU_7)": {
"key": "HU_EQL",
"label": "=",
}
"S(HU_8)": {
"key": "HU_LPRN",
"label": "(",
}
"S(HU_9)": {
"key": "HU_RPRN",
"label": ")",
}
"S(HU_COMM)": {
"key": "HU_QUES",
"label": "?",
}
"S(HU_DOT)": {
"key": "HU_COLN",
"label": ":",
}
"S(HU_MINS)": {
"key": "HU_UNDS",
"label": "_",
}
/* AltGr symbols
* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐
* │ │ ~ │ ˇ │ ^ │ ˘ │ ° │ ˛ │ ` │ ˙ │ ´ │ ˝ │ ¨ │ ¸ │ │
* ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤
* │ │ \ │ | │ Ä │ │ │ │ € │ │ │ │ ÷ │ × │ │
* ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │
* │ │ ä │ đ │ Đ │ [ │ ] │ │ │ ł │ Ł │ $ │ ß │ ¤ │ │
* ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤
* │ │ < │ > │ # │ & │ @ │ { │ } │ │ ; │ │ * │ │
* ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤
* │ │ │ │ │ │ │ │ │
* └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘
*/
"ALGR(HU_1)": {
"key": "HU_TILD",
"label": "~",
}
"ALGR(HU_2)": {
"key": "HU_CARN",
"label": "ˇ (dead)",
}
"ALGR(HU_3)": {
"key": "HU_CIRC",
"label": "^ (dead)",
}
"ALGR(HU_4)": {
"key": "HU_BREV",
"label": "˘ (dead)",
}
"ALGR(HU_5)": {
"key": "HU_RNGA",
"label": "° (dead)",
}
"ALGR(HU_6)": {
"key": "HU_OGON",
"label": "˛ (dead)",
}
"ALGR(HU_7)": {
"key": "HU_GRV",
"label": "`",
}
"ALGR(HU_8)": {
"key": "HU_DOTA",
"label": "˙ (dead)",
}
"ALGR(HU_9)": {
"key": "HU_ACUT",
"label": "´ (dead)",
}
"ALGR(HU_ODIA)": {
"key": "HU_DACU",
"label": "˝ (dead)",
}
"ALGR(HU_UDIA)": {
"key": "HU_DIAE",
"label": "¨ (dead)",
}
"ALGR(HU_OACU)": {
"key": "HU_CEDL",
"label": "¸ (dead)",
}
"ALGR(HU_Q)": {
"key": "HU_BSLS",
"label": "\\",
}
"ALGR(HU_W)": {
"key": "HU_PIPE",
"label": "|",
}
"ALGR(HU_E)": {
"key": "HU_CADI",
"label": "Ä",
}
"ALGR(HU_U)": {
"key": "HU_EURO",
"label": "€",
}
"ALGR(HU_ODAC)": {
"key": "HU_DIV",
"label": "÷",
}
"ALGR(HU_UACU)": {
"key": "HU_MUL",
"label": "×",
}
"ALGR(HU_A)": {
"key": "HU_LADI",
"label": "ä",
}
"ALGR(HU_S)": {
"key": "HU_LDST",
"label": "đ",
}
"ALGR(HU_D)": {
"key": "HU_CDST",
"label": "Đ",
}
"ALGR(HU_F)": {
"key": "HU_LBRC",
"label": "[",
}
"ALGR(HU_G)": {
"key": "HU_RBRC",
"label": "]",
}
"ALGR(HU_K)": {
"key": "HU_LLST",
"label": "ł",
}
"ALGR(HU_L)": {
"key": "HU_CLST",
"label": "Ł",
}
"ALGR(HU_EACU)": {
"key": "HU_DLR",
"label": "$",
}
"ALGR(HU_AACU)": {
"key": "HU_SS",
"label": "ß",
}
"ALGR(HU_UDAC)": {
"key": "HU_CURR",
"label": "¤",
}
"ALGR(HU_IACU)": {
"key": "HU_LABK",
"label": "<",
}
"ALGR(HU_Y)": {
"key": "HU_RABK",
"label": ">",
}
"ALGR(HU_X)": {
"key": "HU_HASH",
"label": "#",
}
"ALGR(HU_C)": {
"key": "HU_AMPR",
"label": "&",
}
"ALGR(HU_V)": {
"key": "HU_AT",
"label": "@",
}
"ALGR(HU_B)": {
"key": "HU_LCBR",
"label": "{",
}
"ALGR(HU_N)": {
"key": "HU_RCBR",
"label": "}",
}
"ALGR(HU_COMM)": {
"key": "HU_SCLN",
"label": ";",
}
"ALGR(HU_MINS)": {
"key": "HU_ASTR",
"label": "*",
}
}
}

View File

@@ -1,355 +0,0 @@
{
"aliases": {
/*
* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐
* │ ° │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ Ö │ - │ │
* ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤
* │ │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ Ð │ ' │ │
* ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │
* │ │ A │ S │ D │ F │ G │ H │ J │ K │ L │ Æ │ ´ │ + │ │
* ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤
* │ │ < │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ Þ │ │
* ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤
* │ │ │ │ │ │ │ │ │
* └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘
*/
"KC_GRV": {
"key": "IS_RNGA",
"label": "° (dead)",
}
"KC_1": {
"key": "IS_1",
"label": "1",
}
"KC_2": {
"key": "IS_2",
"label": "2",
}
"KC_3": {
"key": "IS_3",
"label": "3",
}
"KC_4": {
"key": "IS_4",
"label": "4",
}
"KC_5": {
"key": "IS_5",
"label": "5",
}
"KC_6": {
"key": "IS_6",
"label": "6",
}
"KC_7": {
"key": "IS_7",
"label": "7",
}
"KC_8": {
"key": "IS_8",
"label": "8",
}
"KC_9": {
"key": "IS_9",
"label": "9",
}
"KC_0": {
"key": "IS_0",
"label": "0",
}
"KC_MINS": {
"key": "IS_ODIA",
"label": "Ö",
}
"KC_EQL": {
"key": "IS_MINS",
"label": "-",
}
"KC_Q": {
"key": "IS_Q",
"label": "Q",
}
"KC_W": {
"key": "IS_W",
"label": "W",
}
"KC_E": {
"key": "IS_E",
"label": "E",
}
"KC_R": {
"key": "IS_R",
"label": "R",
}
"KC_T": {
"key": "IS_T",
"label": "T",
}
"KC_Y": {
"key": "IS_Y",
"label": "Y",
}
"KC_U": {
"key": "IS_U",
"label": "U",
}
"KC_I": {
"key": "IS_I",
"label": "I",
}
"KC_O": {
"key": "IS_O",
"label": "O",
}
"KC_P": {
"key": "IS_P",
"label": "P",
}
"KC_LBRC": {
"key": "IS_ETH",
"label": "Ð",
}
"KC_RBRC": {
"key": "IS_QUOT",
"label": "'",
}
"KC_A": {
"key": "IS_A",
"label": "A",
}
"KC_S": {
"key": "IS_S",
"label": "S",
}
"KC_D": {
"key": "IS_D",
"label": "D",
}
"KC_F": {
"key": "IS_F",
"label": "F",
}
"KC_G": {
"key": "IS_G",
"label": "G",
}
"KC_H": {
"key": "IS_H",
"label": "H",
}
"KC_J": {
"key": "IS_J",
"label": "J",
}
"KC_K": {
"key": "IS_K",
"label": "K",
}
"KC_L": {
"key": "IS_L",
"label": "L",
}
"KC_SCLN": {
"key": "IS_AE",
"label": "Æ",
}
"KC_QUOT": {
"key": "IS_ACUT",
"label": "´ (dead)",
}
"KC_NUHS": {
"key": "IS_PLUS",
"label": "+",
}
"KC_NUBS": {
"key": "IS_LABK",
"label": "<",
}
"KC_Z": {
"key": "IS_Z",
"label": "Z",
}
"KC_X": {
"key": "IS_X",
"label": "X",
}
"KC_C": {
"key": "IS_C",
"label": "C",
}
"KC_V": {
"key": "IS_V",
"label": "V",
}
"KC_B": {
"key": "IS_B",
"label": "B",
}
"KC_N": {
"key": "IS_N",
"label": "N",
}
"KC_M": {
"key": "IS_M",
"label": "M",
}
"KC_COMM": {
"key": "IS_COMM",
"label": ",",
}
"KC_DOT": {
"key": "IS_DOT",
"label": ".",
}
"KC_SLSH": {
"key": "IS_THRN",
"label": "Þ",
}
/* Shifted symbols
* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐
* │ ¨ │ ! │ " │ # │ $ │ % │ & │ / │ ( │ ) │ = │ │ _ │ │
* ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤
* │ │ │ │ │ │ │ │ │ │ │ │ │ ? │ │
* ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │
* │ │ │ │ │ │ │ │ │ │ │ │ │ * │ │
* ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤
* │ │ > │ │ │ │ │ │ │ │ ; │ : │ │ │
* ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤
* │ │ │ │ │ │ │ │ │
* └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘
*/
"S(IS_RNGA)": {
"key": "IS_DIAE",
"label": "¨ (dead)",
}
"S(IS_1)": {
"key": "IS_EXLM",
"label": "!",
}
"S(IS_2)": {
"key": "IS_DQUO",
"label": "\"",
}
"S(IS_3)": {
"key": "IS_HASH",
"label": "#",
}
"S(IS_4)": {
"key": "IS_DLR",
"label": "$",
}
"S(IS_5)": {
"key": "IS_PERC",
"label": "%",
}
"S(IS_6)": {
"key": "IS_AMPR",
"label": "&",
}
"S(IS_7)": {
"key": "IS_SLSH",
"label": "/",
}
"S(IS_8)": {
"key": "IS_LPRN",
"label": "(",
}
"S(IS_9)": {
"key": "IS_RPRN",
"label": ")",
}
"S(IS_0)": {
"key": "IS_EQL",
"label": "=",
}
"S(IS_MINS)": {
"key": "IS_UNDS",
"label": "_",
}
"S(IS_QUOT)": {
"key": "IS_QUES",
"label": "?",
}
"S(IS_PLUS)": {
"key": "IS_ASTR",
"label": "*",
}
"S(IS_LABK)": {
"key": "IS_RABK",
"label": ">",
}
"S(IS_COMM)": {
"key": "IS_SCLN",
"label": ";",
}
"S(IS_DOT)": {
"key": "IS_COLN",
"label": ":",
}
/* AltGr symbols
* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐
* │ ° │ │ │ │ │ │ │ { │ [ │ ] │ } │ \ │ │ │
* ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤
* │ │ @ │ │ € │ │ │ │ │ │ │ │ │ ~ │ │
* ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │
* │ │ │ │ │ │ │ │ │ │ │ │ ^ │ ` │ │
* ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤
* │ │ | │ │ │ │ │ │ │ µ │ │ │ │ │
* ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤
* │ │ │ │ │ │ │ │ │
* └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘
*/
"ALGR(IS_RNGA)": {
"key": "IS_DEG",
"label": "°",
}
"ALGR(IS_7)": {
"key": "IS_LCBR",
"label": "{",
}
"ALGR(IS_8)": {
"key": "IS_LBRC",
"label": "[",
}
"ALGR(IS_9)": {
"key": "IS_RBRC",
"label": "]",
}
"ALGR(IS_0)": {
"key": "IS_RCBR",
"label": "}",
}
"ALGR(IS_ODIA)": {
"key": "IS_BSLS",
"label": "\\",
}
"ALGR(IS_Q)": {
"key": "IS_AT",
"label": "@",
}
"ALGR(IS_E)": {
"key": "IS_EURO",
"label": "€",
}
"ALGR(IS_QUOT)": {
"key": "IS_TILD",
"label": "~",
}
"ALGR(IS_ACUT)": {
"key": "IS_CIRC",
"label": "^ (dead)",
}
"ALGR(IS_PLUS)": {
"key": "IS_GRV",
"label": "` (dead)",
}
"ALGR(IS_LABK)": {
"key": "IS_PIPE",
"label": "|",
}
"ALGR(IS_M)": {
"key": "IS_MICR",
"label": "µ",
}
}
}

View File

@@ -1,355 +0,0 @@
{
"aliases": {
/*
* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐
* │ ` │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │ │
* ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤
* │ │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ [ │ ] │ │
* ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │
* │ │ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ ' │ # │ │
* ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤
* │ │ \ │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │ │
* ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤
* │ │ │ │ │ │ │ │ │
* └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘
*/
"KC_GRV": {
"key": "IE_GRV",
"label": "`",
}
"KC_1": {
"key": "IE_1",
"label": "1",
}
"KC_2": {
"key": "IE_2",
"label": "2",
}
"KC_3": {
"key": "IE_3",
"label": "3",
}
"KC_4": {
"key": "IE_4",
"label": "4",
}
"KC_5": {
"key": "IE_5",
"label": "5",
}
"KC_6": {
"key": "IE_6",
"label": "6",
}
"KC_7": {
"key": "IE_7",
"label": "7",
}
"KC_8": {
"key": "IE_8",
"label": "8",
}
"KC_9": {
"key": "IE_9",
"label": "9",
}
"KC_0": {
"key": "IE_0",
"label": "0",
}
"KC_MINS": {
"key": "IE_MINS",
"label": "-",
}
"KC_EQL": {
"key": "IE_EQL",
"label": "=",
}
"KC_Q": {
"key": "IE_Q",
"label": "Q",
}
"KC_W": {
"key": "IE_W",
"label": "W",
}
"KC_E": {
"key": "IE_E",
"label": "E",
}
"KC_R": {
"key": "IE_R",
"label": "R",
}
"KC_T": {
"key": "IE_T",
"label": "T",
}
"KC_Y": {
"key": "IE_Y",
"label": "Y",
}
"KC_U": {
"key": "IE_U",
"label": "U",
}
"KC_I": {
"key": "IE_I",
"label": "I",
}
"KC_O": {
"key": "IE_O",
"label": "O",
}
"KC_P": {
"key": "IE_P",
"label": "P",
}
"KC_LBRC": {
"key": "IE_LBRC",
"label": "[",
}
"KC_RBRC": {
"key": "IE_RBRC",
"label": "]",
}
"KC_A": {
"key": "IE_A",
"label": "A",
}
"KC_S": {
"key": "IE_S",
"label": "S",
}
"KC_D": {
"key": "IE_D",
"label": "D",
}
"KC_F": {
"key": "IE_F",
"label": "F",
}
"KC_G": {
"key": "IE_G",
"label": "G",
}
"KC_H": {
"key": "IE_H",
"label": "H",
}
"KC_J": {
"key": "IE_J",
"label": "J",
}
"KC_K": {
"key": "IE_K",
"label": "K",
}
"KC_L": {
"key": "IE_L",
"label": "L",
}
"KC_SCLN": {
"key": "IE_SCLN",
"label": ";",
}
"KC_QUOT": {
"key": "IE_QUOT",
"label": "'",
}
"KC_NUHS": {
"key": "IE_HASH",
"label": "#",
}
"KC_NUBS": {
"key": "IE_BSLS",
"label": "\\",
}
"KC_Z": {
"key": "IE_Z",
"label": "Z",
}
"KC_X": {
"key": "IE_X",
"label": "X",
}
"KC_C": {
"key": "IE_C",
"label": "C",
}
"KC_V": {
"key": "IE_V",
"label": "V",
}
"KC_B": {
"key": "IE_B",
"label": "B",
}
"KC_N": {
"key": "IE_N",
"label": "N",
}
"KC_M": {
"key": "IE_M",
"label": "M",
}
"KC_COMM": {
"key": "IE_COMM",
"label": ",",
}
"KC_DOT": {
"key": "IE_DOT",
"label": ".",
}
"KC_SLSH": {
"key": "IE_SLSH",
"label": "/",
}
/* Shifted symbols
* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐
* │ ¬ │ ! │ " │ £ │ $ │ % │ ^ │ & │ * │ ( │ ) │ _ │ + │ │
* ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤
* │ │ │ │ │ │ │ │ │ │ │ │ { │ } │ │
* ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │
* │ │ │ │ │ │ │ │ │ │ │ : │ @ │ ~ │ │
* ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤
* │ │ | │ │ │ │ │ │ │ │ < │ > │ ? │ │
* ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤
* │ │ │ │ │ │ │ │ │
* └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘
*/
"S(IE_GRV)": {
"key": "IE_NOT",
"label": "¬",
}
"S(IE_1)": {
"key": "IE_EXLM",
"label": "!",
}
"S(IE_2)": {
"key": "IE_DQUO",
"label": "\"",
}
"S(IE_3)": {
"key": "IE_PND",
"label": "£",
}
"S(IE_4)": {
"key": "IE_DLR",
"label": "$",
}
"S(IE_5)": {
"key": "IE_PERC",
"label": "%",
}
"S(IE_6)": {
"key": "IE_CIRC",
"label": "^",
}
"S(IE_7)": {
"key": "IE_AMPR",
"label": "&",
}
"S(IE_8)": {
"key": "IE_ASTR",
"label": "*",
}
"S(IE_9)": {
"key": "IE_LPRN",
"label": "(",
}
"S(IE_0)": {
"key": "IE_RPRN",
"label": ")",
}
"S(IE_MINS)": {
"key": "IE_UNDS",
"label": "_",
}
"S(IE_EQL)": {
"key": "IE_PLUS",
"label": "+",
}
"S(IE_LBRC)": {
"key": "IE_LCBR",
"label": "{",
}
"S(IE_RBRC)": {
"key": "IE_RCBR",
"label": "}",
}
"S(IE_SCLN)": {
"key": "IE_COLN",
"label": ":",
}
"S(IE_QUOT)": {
"key": "IE_AT",
"label": "@",
}
"S(IE_HASH)": {
"key": "IE_TILD",
"label": "~",
}
"S(IE_BSLS)": {
"key": "IE_PIPE",
"label": "|",
}
"S(IE_COMM)": {
"key": "IE_LABK",
"label": "<",
}
"S(IE_DOT)": {
"key": "IE_RABK",
"label": ">",
}
"S(IE_SLSH)": {
"key": "IE_QUES",
"label": "?",
}
/* AltGr symbols
* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐
* │ ¦ │ │ │ │ € │ │ │ │ │ │ │ │ │ │
* ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤
* │ │ │ │ É │ │ │ │ Ú │ Í │ Ó │ │ │ │ │
* ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │
* │ │ Á │ │ │ │ │ │ │ │ │ │ ´ │ │ │
* ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤
* │ │ │ │ │ │ │ │ │ │ │ │ │ │
* ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤
* │ │ │ │ │ │ │ │ │
* └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘
*/
"ALGR(IE_GRV)": {
"key": "IE_BRKP",
"label": "¦",
}
"ALGR(IE_4)": {
"key": "IE_EURO",
"label": "€",
}
"ALGR(IE_E)": {
"key": "IE_EACU",
"label": "É",
}
"ALGR(IE_U)": {
"key": "IE_UACU",
"label": "Ú",
}
"ALGR(IE_I)": {
"key": "IE_IACU",
"label": "Í",
}
"ALGR(IE_O)": {
"key": "IE_OACU",
"label": "Ó",
}
"ALGR(IE_A)": {
"key": "IE_AACU",
"label": "Á",
}
"ALGR(IE_QUOT)": {
"key": "IE_ACUT",
"label": "´ (dead)",
}
}
}

View File

@@ -1,364 +0,0 @@
{
"aliases": {
/*
* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐
* │ \ │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ ' │ ì │ │
* ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤
* │ │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ è │ + │ │
* ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │
* │ │ A │ S │ D │ F │ G │ H │ J │ K │ L │ ò │ à │ ù │ │
* ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤
* │ │ < │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ - │ │
* ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤
* │ │ │ │ │ │ │ │ │
* └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘
*/
"KC_GRV": {
"key": "IT_BSLS",
"label": "\\",
}
"KC_1": {
"key": "IT_1",
"label": "1",
}
"KC_2": {
"key": "IT_2",
"label": "2",
}
"KC_3": {
"key": "IT_3",
"label": "3",
}
"KC_4": {
"key": "IT_4",
"label": "4",
}
"KC_5": {
"key": "IT_5",
"label": "5",
}
"KC_6": {
"key": "IT_6",
"label": "6",
}
"KC_7": {
"key": "IT_7",
"label": "7",
}
"KC_8": {
"key": "IT_8",
"label": "8",
}
"KC_9": {
"key": "IT_9",
"label": "9",
}
"KC_0": {
"key": "IT_0",
"label": "0",
}
"KC_MINS": {
"key": "IT_QUOT",
"label": "'",
}
"KC_EQL": {
"key": "IT_IGRV",
"label": "ì",
}
"KC_Q": {
"key": "IT_Q",
"label": "Q",
}
"KC_W": {
"key": "IT_W",
"label": "W",
}
"KC_E": {
"key": "IT_E",
"label": "E",
}
"KC_R": {
"key": "IT_R",
"label": "R",
}
"KC_T": {
"key": "IT_T",
"label": "T",
}
"KC_Y": {
"key": "IT_Y",
"label": "Y",
}
"KC_U": {
"key": "IT_U",
"label": "U",
}
"KC_I": {
"key": "IT_I",
"label": "I",
}
"KC_O": {
"key": "IT_O",
"label": "O",
}
"KC_P": {
"key": "IT_P",
"label": "P",
}
"KC_LBRC": {
"key": "IT_EGRV",
"label": "è",
}
"KC_RBRC": {
"key": "IT_PLUS",
"label": "+",
}
"KC_A": {
"key": "IT_A",
"label": "A",
}
"KC_S": {
"key": "IT_S",
"label": "S",
}
"KC_D": {
"key": "IT_D",
"label": "D",
}
"KC_F": {
"key": "IT_F",
"label": "F",
}
"KC_G": {
"key": "IT_G",
"label": "G",
}
"KC_H": {
"key": "IT_H",
"label": "H",
}
"KC_J": {
"key": "IT_J",
"label": "J",
}
"KC_K": {
"key": "IT_K",
"label": "K",
}
"KC_L": {
"key": "IT_L",
"label": "L",
}
"KC_SCLN": {
"key": "IT_OGRV",
"label": "ò",
}
"KC_QUOT": {
"key": "IT_AGRV",
"label": "à",
}
"KC_NUHS": {
"key": "IT_UGRV",
"label": "ù",
}
"KC_NUBS": {
"key": "IT_LABK",
"label": "<",
}
"KC_Z": {
"key": "IT_Z",
"label": "Z",
}
"KC_X": {
"key": "IT_X",
"label": "X",
}
"KC_C": {
"key": "IT_C",
"label": "C",
}
"KC_B": {
"key": "IT_B",
"label": "B",
}
"KC_V": {
"key": "IT_V",
"label": "V",
}
"KC_N": {
"key": "IT_N",
"label": "N",
}
"KC_M": {
"key": "IT_M",
"label": "M",
}
"KC_COMM": {
"key": "IT_COMM",
"label": ",",
}
"KC_DOT": {
"key": "IT_DOT",
"label": ".",
}
"KC_SLSH": {
"key": "IT_MINS",
"label": "-",
}
/* Shifted symbols
* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐
* │ | │ ! │ " │ £ │ $ │ % │ & │ / │ ( │ ) │ = │ ? │ ^ │ │
* ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤
* │ │ │ │ │ │ │ │ │ │ │ │ é │ * │ │
* ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │
* │ │ │ │ │ │ │ │ │ │ │ ç │ ° │ § │ │
* ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤
* │ │ > │ │ │ │ │ │ │ │ ; │ : │ _ │ │
* ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤
* │ │ │ │ │ │ │ │ │
* └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘
*/
"S(IT_BSLS)": {
"key": "IT_PIPE",
"label": "|",
}
"S(IT_1)": {
"key": "IT_EXLM",
"label": "!",
}
"S(IT_2)": {
"key": "IT_DQUO",
"label": "\"",
}
"S(IT_3)": {
"key": "IT_PND",
"label": "£",
}
"S(IT_4)": {
"key": "IT_DLR",
"label": "$",
}
"S(IT_5)": {
"key": "IT_PERC",
"label": "%",
}
"S(IT_6)": {
"key": "IT_AMPR",
"label": "&",
}
"S(IT_7)": {
"key": "IT_SLSH",
"label": "/",
}
"S(IT_8)": {
"key": "IT_LPRN",
"label": "(",
}
"S(IT_9)": {
"key": "IT_RPRN",
"label": ")",
}
"S(IT_0)": {
"key": "IT_EQL",
"label": "=",
}
"S(IT_QUOT)": {
"key": "IT_QUES",
"label": "?",
}
"S(IT_IGRV)": {
"key": "IT_CIRC",
"label": "^",
}
"S(IT_EGRV)": {
"key": "IT_EACU",
"label": "é",
}
"S(IT_PLUS)": {
"key": "IT_ASTR",
"label": "*",
}
"S(IT_OGRV)": {
"key": "IT_CCED",
"label": "ç",
}
"S(IT_AGRV)": {
"key": "IT_DEG",
"label": "°",
}
"S(IT_UGRV)": {
"key": "IT_SECT",
"label": "§",
}
"S(IT_LABK)": {
"key": "IT_RABK",
"label": ">",
}
"S(IT_DOT)": {
"key": "IT_COLN",
"label": ":",
}
"S(IT_COMM)": {
"key": "IT_SCLN",
"label": ";",
}
"S(IT_MINS)": {
"key": "IT_UNDS",
"label": "_",
}
/* AltGr symbols
* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐
* │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
* ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤
* │ │ │ │ € │ │ │ │ │ │ │ │ [ │ ] │ │
* ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │
* │ │ │ │ │ │ │ │ │ │ │ @ │ # │ │ │
* ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤
* │ │ │ │ │ │ │ │ │ │ │ │ │ │
* ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤
* │ │ │ │ │ │ │ │ │
* └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘
*/
"ALGR(IT_E)": {
"key": "IT_EURO",
"label": "€",
}
"ALGR(IT_EGRV)": {
"key": "IT_LBRC",
"label": "[",
}
"ALGR(IT_PLUS)": {
"key": "IT_RBRC",
"label": "]",
}
"ALGR(IT_OGRV)": {
"key": "IT_AT",
"label": "@",
}
"ALGR(IT_AGRV)": {
"key": "IT_HASH",
"label": "#",
}
/* Shift+AltGr symbols
* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐
* │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
* ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤
* │ │ │ │ │ │ │ │ │ │ │ │ { │ } │ │
* ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │
* │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
* ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤
* │ │ │ │ │ │ │ │ │ │ │ │ │ │
* ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤
* │ │ │ │ │ │ │ │ │
* └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘
*/
"S(ALGR(IT_EGRV))": {
"key": "IT_LCBR",
"label": "{",
}
"S(ALGR(IT_PLUS))": {
"key": "IT_RCBR",
"label": "}",
}
}
}

View File

@@ -1,684 +0,0 @@
{
"aliases": {
/*
* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬─────┐
* │ < │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ ' │ ì │ │
* ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬───┤
* │ │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ è │ + │ ù │
* ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴───┤
* │ │ A │ S │ D │ F │ G │ H │ J │ K │ L │ ò │ à │ │
* ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴──────┤
* │ │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ - │ │
* ├─────┬──┴─┬─┴───┼───┴───┴───┴───┴───┴───┼───┴─┬─┴──┬─────┤
* │ │ │ │ │ │ │ │
* └─────┴────┴─────┴───────────────────────┴─────┴────┴─────┘
*/
"KC_GRV": {
"key": "IT_LABK",
"label": "<",
}
"KC_1": {
"key": "IT_1",
"label": "1",
}
"KC_2": {
"key": "IT_2",
"label": "2",
}
"KC_3": {
"key": "IT_3",
"label": "3",
}
"KC_4": {
"key": "IT_4",
"label": "4",
}
"KC_5": {
"key": "IT_5",
"label": "5",
}
"KC_6": {
"key": "IT_6",
"label": "6",
}
"KC_7": {
"key": "IT_7",
"label": "7",
}
"KC_8": {
"key": "IT_8",
"label": "8",
}
"KC_9": {
"key": "IT_9",
"label": "9",
}
"KC_0": {
"key": "IT_0",
"label": "0",
}
"KC_MINS": {
"key": "IT_QUOT",
"label": "'",
}
"KC_EQL": {
"key": "IT_IGRV",
"label": "ì",
}
"KC_Q": {
"key": "IT_Q",
"label": "Q",
}
"KC_W": {
"key": "IT_W",
"label": "W",
}
"KC_E": {
"key": "IT_E",
"label": "E",
}
"KC_R": {
"key": "IT_R",
"label": "R",
}
"KC_T": {
"key": "IT_T",
"label": "T",
}
"KC_Y": {
"key": "IT_Y",
"label": "Y",
}
"KC_U": {
"key": "IT_U",
"label": "U",
}
"KC_I": {
"key": "IT_I",
"label": "I",
}
"KC_O": {
"key": "IT_O",
"label": "O",
}
"KC_P": {
"key": "IT_P",
"label": "P",
}
"KC_LBRC": {
"key": "IT_EGRV",
"label": "è",
}
"KC_RBRC": {
"key": "IT_PLUS",
"label": "+",
}
"KC_BSLS": {
"key": "IT_UGRV",
"label": "ù",
}
"KC_A": {
"key": "IT_A",
"label": "A",
}
"KC_S": {
"key": "IT_S",
"label": "S",
}
"KC_D": {
"key": "IT_D",
"label": "D",
}
"KC_F": {
"key": "IT_F",
"label": "F",
}
"KC_G": {
"key": "IT_G",
"label": "G",
}
"KC_H": {
"key": "IT_H",
"label": "H",
}
"KC_J": {
"key": "IT_J",
"label": "J",
}
"KC_K": {
"key": "IT_K",
"label": "K",
}
"KC_L": {
"key": "IT_L",
"label": "L",
}
"KC_SCLN": {
"key": "IT_OGRV",
"label": "ò",
}
"KC_QUOT": {
"key": "IT_AGRV",
"label": "à",
}
"KC_NUBS": {
"key": "IT_BSLS",
"label": "(backslash, not physically present)",
}
"KC_Z": {
"key": "IT_Z",
"label": "Z",
}
"KC_X": {
"key": "IT_X",
"label": "X",
}
"KC_C": {
"key": "IT_C",
"label": "C",
}
"KC_V": {
"key": "IT_V",
"label": "V",
}
"KC_B": {
"key": "IT_B",
"label": "B",
}
"KC_N": {
"key": "IT_N",
"label": "N",
}
"KC_M": {
"key": "IT_M",
"label": "M",
}
"KC_COMM": {
"key": "IT_COMM",
"label": ",",
}
"KC_DOT": {
"key": "IT_DOT",
"label": ".",
}
"KC_SLSH": {
"key": "IT_MINS",
"label": "-",
}
/* Shifted symbols
* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬─────┐
* │ > │ ! │ " │ £ │ $ │ % │ & │ / │ ( │ ) │ = │ ? │ ^ │ │
* ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬───┤
* │ │ │ │ │ │ │ │ │ │ │ │ é │ * │ § │
* ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴───┤
* │ │ │ │ │ │ │ │ │ │ │ ç │ ° │ │
* ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴──────┤
* │ │ │ │ │ │ │ │ │ ; │ : │ _ │ │
* ├─────┬──┴─┬─┴───┼───┴───┴───┴───┴───┴───┼───┴─┬─┴──┬─────┤
* │ │ │ │ │ │ │ │
* └─────┴────┴─────┴───────────────────────┴─────┴────┴─────┘
*/
"S(IT_LABK)": {
"key": "IT_RABK",
"label": ">",
}
"S(IT_1)": {
"key": "IT_EXLM",
"label": "!",
}
"S(IT_2)": {
"key": "IT_DQUO",
"label": "\"",
}
"S(IT_3)": {
"key": "IT_PND",
"label": "£",
}
"S(IT_4)": {
"key": "IT_DLR",
"label": "$",
}
"S(IT_5)": {
"key": "IT_PERC",
"label": "%",
}
"S(IT_6)": {
"key": "IT_AMPR",
"label": "&",
}
"S(IT_7)": {
"key": "IT_SLSH",
"label": "/",
}
"S(IT_8)": {
"key": "IT_LPRN",
"label": "(",
}
"S(IT_9)": {
"key": "IT_RPRN",
"label": ")",
}
"S(IT_0)": {
"key": "IT_EQL",
"label": "=",
}
"S(IT_QUOT)": {
"key": "IT_QUES",
"label": "?",
}
"S(IT_IGRV)": {
"key": "IT_CIRC",
"label": "^",
}
"S(IT_EGRV)": {
"key": "IT_EACU",
"label": "é",
}
"S(IT_PLUS)": {
"key": "IT_ASTR",
"label": "*",
}
"S(IT_UGRV)": {
"key": "IT_SECT",
"label": "§",
}
"S(IT_OGRV)": {
"key": "IT_LCCE",
"label": "ç",
}
"S(IT_AGRV)": {
"key": "IT_DEG",
"label": "°",
}
"S(IT_BSLS)": {
"key": "IT_PIPE",
"label": "| (not physically present)",
}
"S(IT_COMM)": {
"key": "IT_SCLN",
"label": ";",
}
"S(IT_DOT)": {
"key": "IT_COLN",
"label": ":",
}
"S(IT_MINS)": {
"key": "IT_UNDS",
"label": "_",
}
/* Alted symbols
* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬─────┐
* │ ≤ │ « │ “ │ │ ¥ │ ~ │ │ ÷ │ ´ │ ` │ ≠ │ ¡ │ ˆ │ │
* ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬───┤
* │ │ „ │ Ω │ € │ ® │ ™ │ Æ │ ¨ │ Œ │ Ø │ π │ [ │ ] │ ¶ │
* ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴───┤
* │ │ Å │ ß │ ∂ │ ƒ │ ∞ │ ∆ │ ª │ º │ ¬ │ @ │ # │ │
* ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴──────┤
* │ │ ∑ │ † │ © │ √ │ ∫ │ ˜ │ µ │ … │ • │ │ │
* ├─────┬──┴─┬─┴───┼───┴───┴───┴───┴───┴───┼───┴─┬─┴──┬─────┤
* │ │ │ │ │ │ │ │
* └─────┴────┴─────┴───────────────────────┴─────┴────┴─────┘
*/
"A(IT_LABK)": {
"key": "IT_LTEQ",
"label": "≤",
}
"A(IT_1)": {
"key": "IT_LDAQ",
"label": "«",
}
"A(IT_2)": {
"key": "IT_LDQU",
"label": "“",
}
"A(IT_3)": {
"key": "IT_LSQU",
"label": "",
}
"A(IT_4)": {
"key": "IT_YEN",
"label": "¥",
}
"A(IT_5)": {
"key": "IT_TILD",
"label": "~",
}
"A(IT_6)": {
"key": "IT_LSAQ",
"label": "",
}
"A(IT_7)": {
"key": "IT_DIV",
"label": "÷",
}
"A(IT_8)": {
"key": "IT_ACUT",
"label": "´ (dead)",
}
"A(IT_9)": {
"key": "IT_DGRV",
"label": "` (dead)",
}
"A(IT_0)": {
"key": "IT_NEQL",
"label": "≠",
}
"A(IT_QUOT)": {
"key": "IT_IEXL",
"label": "¡",
}
"A(IT_IGRV)": {
"key": "IT_DCIR",
"label": "ˆ (dead)",
}
"A(IT_Q)": {
"key": "IT_DLQU",
"label": "„",
}
"A(IT_W)": {
"key": "IT_OMEG",
"label": "Ω",
}
"A(IT_E)": {
"key": "IT_EURO",
"label": "€",
}
"A(IT_R)": {
"key": "IT_REGD",
"label": "®",
}
"A(IT_T)": {
"key": "IT_TM",
"label": "™",
}
"A(IT_Y)": {
"key": "IT_AE",
"label": "Æ",
}
"A(IT_U)": {
"key": "IT_DIAE",
"label": "¨ (dead)",
}
"A(IT_I)": {
"key": "IT_OE",
"label": "Œ",
}
"A(IT_O)": {
"key": "IT_OSTR",
"label": "Ø",
}
"A(IT_P)": {
"key": "IT_PI",
"label": "π",
}
"A(IT_EGRV)": {
"key": "IT_LBRC",
"label": "[",
}
"A(IT_PLUS)": {
"key": "IT_RBRC",
"label": "]",
}
"A(IT_A)": {
"key": "IT_ARNG",
"label": "Å",
}
"A(IT_S)": {
"key": "IT_SS",
"label": "ß",
}
"A(IT_D)": {
"key": "IT_PDIF",
"label": "∂",
}
"A(IT_F)": {
"key": "IT_FHK",
"label": "ƒ",
}
"A(IT_G)": {
"key": "IT_INFN",
"label": "∞",
}
"A(IT_H)": {
"key": "IT_INCR",
"label": "∆",
}
"A(IT_J)": {
"key": "IT_FORD",
"label": "ª",
}
"A(IT_K)": {
"key": "IT_MORD",
"label": "º",
}
"A(IT_L)": {
"key": "IT_NOT",
"label": "¬",
}
"A(IT_OGRV)": {
"key": "IT_AT",
"label": "@",
}
"A(IT_AGRV)": {
"key": "IT_HASH",
"label": "#",
}
"A(IT_UGRV)": {
"key": "IT_PILC",
"label": "¶",
}
"A(IT_BSLS)": {
"key": "IT_GRV",
"label": "` (not physically present)",
}
"A(IT_Z)": {
"key": "IT_NARS",
"label": "∑",
}
"A(IT_X)": {
"key": "IT_DAGG",
"label": "†",
}
"A(IT_C)": {
"key": "IT_COPY",
"label": "©",
}
"A(IT_V)": {
"key": "IT_SQRT",
"label": "√",
}
"A(IT_B)": {
"key": "IT_INTG",
"label": "∫",
}
"A(IT_N)": {
"key": "IT_STIL",
"label": "˜ (dead)",
}
"A(IT_M)": {
"key": "IT_MICR",
"label": "µ",
}
"A(IT_COMM)": {
"key": "IT_ELLP",
"label": "…",
}
"A(IT_DOT)": {
"key": "IT_BULT",
"label": "•",
}
"A(IT_MINS)": {
"key": "IT_NDSH",
"label": "",
}
/* Shift+Alted symbols
* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬─────┐
* │ ≥ │ » │ ” │ │ ¢ │ ‰ │ │  │ │ ≈ │ ¿ │ ± │ │
* ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬───┤
* │ │ │ À │ È │ Ì │ Ò │ │ Ù │ │ │ ∏ │ { │ } │ ◊ │
* ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴───┤
* │ │ │ ¯ │ ˘ │ ˙ │ ˚ │ ¸ │ ˝ │ ˛ │ ˇ │ Ç │ ∞ │ │
* ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴──────┤
* │ │ │ ‡ │ Á │ É │ Í │ Ó │ Ú │ │ · │ — │ │
* ├─────┬──┴─┬─┴───┼───┴───┴───┴───┴───┴───┼───┴─┬─┴──┬─────┤
* │ │ │ │ │ │ │ │
* └─────┴────┴─────┴───────────────────────┴─────┴────┴─────┘
*/
"S(A(IT_LABK))": {
"key": "IT_GTEQ",
"label": "≥",
}
"S(A(IT_1))": {
"key": "IT_RDAQ",
"label": "»",
}
"S(A(IT_2))": {
"key": "IT_RDQU",
"label": "”",
}
"S(A(IT_3))": {
"key": "IT_RSQU",
"label": "",
}
"S(A(IT_4))": {
"key": "IT_CENT",
"label": "¢",
}
"S(A(IT_5))": {
"key": "IT_PERM",
"label": "‰",
}
"S(A(IT_6))": {
"key": "IT_RSAQ",
"label": "",
}
"S(A(IT_7))": {
"key": "IT_FRSL",
"label": "",
}
"S(A(IT_8))": {
"key": "IT_APPL",
"label": " (Apple logo)",
}
"S(A(IT_0))": {
"key": "IT_AEQL",
"label": "≈",
}
"S(A(IT_QUOT))": {
"key": "IT_IQUE",
"label": "¿",
}
"S(A(IT_IGRV))": {
"key": "IT_PLMN",
"label": "±",
}
"S(A(IT_Q))": {
"key": "IT_SLQU",
"label": "",
}
"S(A(IT_W))": {
"key": "IT_CAGR",
"label": "À",
}
"S(A(IT_E))": {
"key": "IT_CEGR",
"label": "È",
}
"S(A(IT_R))": {
"key": "IT_CIGR",
"label": "Ì",
}
"S(A(IT_T))": {
"key": "IT_COGR",
"label": "Ò",
}
"S(A(IT_U))": {
"key": "IT_CUGR",
"label": "Ù",
}
"S(A(IT_P))": {
"key": "IT_NARP",
"label": "∏",
}
"S(A(IT_EGRV))": {
"key": "IT_LCBR",
"label": "{",
}
"S(A(IT_PLUS))": {
"key": "IT_RCBR",
"label": "}",
}
"S(A(IT_UGRV))": {
"key": "IT_LOZN",
"label": "◊",
}
"S(A(IT_S))": {
"key": "IT_MACR",
"label": "¯",
}
"S(A(IT_D))": {
"key": "IT_BREV",
"label": "˘",
}
"S(A(IT_F))": {
"key": "IT_DOTA",
"label": "˙",
}
"S(A(IT_G))": {
"key": "IT_RGNA",
"label": "˚",
}
"S(A(IT_H))": {
"key": "IT_CEDL",
"label": "¸",
}
"S(A(IT_J))": {
"key": "IT_DACU",
"label": "˝",
}
"S(A(IT_K))": {
"key": "IT_OGON",
"label": "˛",
}
"S(A(IT_L))": {
"key": "IT_CARN",
"label": "ˇ",
}
"S(A(IT_OGRV))": {
"key": "IT_CCCE",
"label": "Ç",
}
"S(A(IT_X))": {
"key": "IT_DDAG",
"label": "‡",
}
"S(A(IT_C))": {
"key": "IT_CAAC",
"label": "Á",
}
"S(A(IT_V))": {
"key": "IT_CEAC",
"label": "É",
}
"S(A(IT_B))": {
"key": "IT_CIAC",
"label": "Í",
}
"S(A(IT_N))": {
"key": "IT_COAC",
"label": "Ó",
}
"S(A(IT_M))": {
"key": "IT_CUAC",
"label": "Ú",
}
"S(A(IT_DOT))": {
"key": "IT_MDDT",
"label": "·",
}
"S(A(IT_MINS))": {
"key": "IT_MDSH",
"label": "—",
}
}
}

View File

@@ -1,688 +0,0 @@
{
"aliases": {
/*
* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬─────┐
* │ \ │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ ' │ ì │ │
* ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬───┤
* │ │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ è │ + │ │
* ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │
* │ │ A │ S │ D │ F │ G │ H │ J │ K │ L │ ò │ à │ ù │ │
* ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴──┤
* │ │ < │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ - │ │
* ├────┴┬──┴─┬─┴───┼───┴───┴───┴───┴───┴───┼───┴─┬─┴──┬─────┤
* │ │ │ │ │ │ │ │
* └─────┴────┴─────┴───────────────────────┴─────┴────┴─────┘
*/
"KC_GRV": {
"key": "IT_BSLS",
"label": "\\",
}
"KC_1": {
"key": "IT_1",
"label": "1",
}
"KC_2": {
"key": "IT_2",
"label": "2",
}
"KC_3": {
"key": "IT_3",
"label": "3",
}
"KC_4": {
"key": "IT_4",
"label": "4",
}
"KC_5": {
"key": "IT_5",
"label": "5",
}
"KC_6": {
"key": "IT_6",
"label": "6",
}
"KC_7": {
"key": "IT_7",
"label": "7",
}
"KC_8": {
"key": "IT_8",
"label": "8",
}
"KC_9": {
"key": "IT_9",
"label": "9",
}
"KC_0": {
"key": "IT_0",
"label": "0",
}
"KC_MINS": {
"key": "IT_QUOT",
"label": "'",
}
"KC_EQL": {
"key": "IT_IGRV",
"label": "ì",
}
"KC_Q": {
"key": "IT_Q",
"label": "Q",
}
"KC_W": {
"key": "IT_W",
"label": "W",
}
"KC_E": {
"key": "IT_E",
"label": "E",
}
"KC_R": {
"key": "IT_R",
"label": "R",
}
"KC_T": {
"key": "IT_T",
"label": "T",
}
"KC_Y": {
"key": "IT_Y",
"label": "Y",
}
"KC_U": {
"key": "IT_U",
"label": "U",
}
"KC_I": {
"key": "IT_I",
"label": "I",
}
"KC_O": {
"key": "IT_O",
"label": "O",
}
"KC_P": {
"key": "IT_P",
"label": "P",
}
"KC_LBRC": {
"key": "IT_EGRV",
"label": "è",
}
"KC_RBRC": {
"key": "IT_PLUS",
"label": "+",
}
"KC_A": {
"key": "IT_A",
"label": "A",
}
"KC_S": {
"key": "IT_S",
"label": "S",
}
"KC_D": {
"key": "IT_D",
"label": "D",
}
"KC_F": {
"key": "IT_F",
"label": "F",
}
"KC_G": {
"key": "IT_G",
"label": "G",
}
"KC_H": {
"key": "IT_H",
"label": "H",
}
"KC_J": {
"key": "IT_J",
"label": "J",
}
"KC_K": {
"key": "IT_K",
"label": "K",
}
"KC_L": {
"key": "IT_L",
"label": "L",
}
"KC_SCLN": {
"key": "IT_OGRV",
"label": "ò",
}
"KC_QUOT": {
"key": "IT_AGRV",
"label": "à",
}
"KC_NUHS": {
"key": "IT_UGRV",
"label": "ù",
}
"KC_NUBS": {
"key": "IT_LABK",
"label": "<",
}
"KC_Z": {
"key": "IT_Z",
"label": "Z",
}
"KC_X": {
"key": "IT_X",
"label": "X",
}
"KC_C": {
"key": "IT_C",
"label": "C",
}
"KC_V": {
"key": "IT_V",
"label": "V",
}
"KC_B": {
"key": "IT_B",
"label": "B",
}
"KC_N": {
"key": "IT_N",
"label": "N",
}
"KC_M": {
"key": "IT_M",
"label": "M",
}
"KC_COMM": {
"key": "IT_COMM",
"label": ",",
}
"KC_DOT": {
"key": "IT_DOT",
"label": ".",
}
"KC_SLSH": {
"key": "IT_MINS",
"label": "-",
}
/* Shifted symbols
* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬─────┐
* │ | │ ! │ " │ £ │ $ │ % │ & │ / │ ( │ ) │ = │ ? │ ^ │ │
* ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬───┤
* │ │ │ │ │ │ │ │ │ │ │ │ é │ * │ │
* ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │
* │ │ │ │ │ │ │ │ │ │ │ ç │ ° │ § │ │
* ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴──┤
* │ │ > │ │ │ │ │ │ │ │ ; │ : │ _ │ │
* ├────┴┬──┴─┬─┴───┼───┴───┴───┴───┴───┴───┼───┴─┬─┴──┬─────┤
* │ │ │ │ │ │ │ │
* └─────┴────┴─────┴───────────────────────┴─────┴────┴─────┘
*/
"S(IT_BSLS)": {
"key": "IT_PIPE",
"label": "|",
}
"S(IT_1)": {
"key": "IT_EXLM",
"label": "!",
}
"S(IT_2)": {
"key": "IT_DQUO",
"label": "\"",
}
"S(IT_3)": {
"key": "IT_PND",
"label": "£",
}
"S(IT_4)": {
"key": "IT_DLR",
"label": "$",
}
"S(IT_5)": {
"key": "IT_PERC",
"label": "%",
}
"S(IT_6)": {
"key": "IT_AMPR",
"label": "&",
}
"S(IT_7)": {
"key": "IT_SLSH",
"label": "/",
}
"S(IT_8)": {
"key": "IT_LPRN",
"label": "(",
}
"S(IT_9)": {
"key": "IT_RPRN",
"label": ")",
}
"S(IT_0)": {
"key": "IT_EQL",
"label": "=",
}
"S(IT_QUOT)": {
"key": "IT_QUES",
"label": "?",
}
"S(IT_IGRV)": {
"key": "IT_CIRC",
"label": "^",
}
"S(IT_EGRV)": {
"key": "IT_EACU",
"label": "é",
}
"S(IT_PLUS)": {
"key": "IT_ASTR",
"label": "*",
}
"S(IT_OGRV)": {
"key": "IT_LCCE",
"label": "ç",
}
"S(IT_AGRV)": {
"key": "IT_DEG",
"label": "°",
}
"S(IT_UGRV)": {
"key": "IT_SECT",
"label": "§",
}
"S(IT_LABK)": {
"key": "IT_RABK",
"label": ">",
}
"S(IT_COMM)": {
"key": "IT_SCLN",
"label": ";",
}
"S(IT_DOT)": {
"key": "IT_COLN",
"label": ":",
}
"S(IT_MINS)": {
"key": "IT_UNDS",
"label": "_",
}
/* Alted symbols
* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬─────┐
* │ ` │ « │ “ │ │ ¥ │ ~ │ │ ÷ │ ´ │ ` │ ≠ │ ¡ │ ˆ │ │
* ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬───┤
* │ │ „ │ Ω │ € │ ® │ ™ │ Æ │ ¨ │ Œ │ Ø │ π │ [ │ ] │ │
* ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │
* │ │ Å │ ß │ ∂ │ ƒ │ ∞ │ ∆ │ ª │ º │ ¬ │ @ │ # │ ¶ │ │
* ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴──┤
* │ │ ≤ │ ∑ │ † │ © │ √ │ ∫ │ ˜ │ µ │ … │ • │ │ │
* ├────┴┬──┴─┬─┴───┼───┴───┴───┴───┴───┴───┼───┴─┬─┴──┬─────┤
* │ │ │ │ │ │ │ │
* └─────┴────┴─────┴───────────────────────┴─────┴────┴─────┘
*/
"A(IT_BSLS)": {
"key": "IT_GRV",
"label": "`",
}
"A(IT_1)": {
"key": "IT_LDAQ",
"label": "«",
}
"A(IT_2)": {
"key": "IT_LDQU",
"label": "“",
}
"A(IT_3)": {
"key": "IT_LSQU",
"label": "",
}
"A(IT_4)": {
"key": "IT_YEN",
"label": "¥",
}
"A(IT_5)": {
"key": "IT_TILD",
"label": "~",
}
"A(IT_6)": {
"key": "IT_LSAQ",
"label": "",
}
"A(IT_7)": {
"key": "IT_DIV",
"label": "÷",
}
"A(IT_8)": {
"key": "IT_ACUT",
"label": "´ (dead)",
}
"A(IT_9)": {
"key": "IT_DGRV",
"label": "` (dead)",
}
"A(IT_0)": {
"key": "IT_NEQL",
"label": "≠",
}
"A(IT_QUOT)": {
"key": "IT_IEXL",
"label": "¡",
}
"A(IT_IGRV)": {
"key": "IT_DCIR",
"label": "ˆ (dead)",
}
"A(IT_Q)": {
"key": "IT_DLQU",
"label": "„",
}
"A(IT_W)": {
"key": "IT_OMEG",
"label": "Ω",
}
"A(IT_E)": {
"key": "IT_EURO",
"label": "€",
}
"A(IT_R)": {
"key": "IT_REGD",
"label": "®",
}
"A(IT_T)": {
"key": "IT_TM",
"label": "™",
}
"A(IT_Y)": {
"key": "IT_AE",
"label": "Æ",
}
"A(IT_U)": {
"key": "IT_DIAE",
"label": "¨ (dead)",
}
"A(IT_I)": {
"key": "IT_OE",
"label": "Œ",
}
"A(IT_O)": {
"key": "IT_OSTR",
"label": "Ø",
}
"A(IT_P)": {
"key": "IT_PI",
"label": "π",
}
"A(IT_EGRV)": {
"key": "IT_LBRC",
"label": "[",
}
"A(IT_PLUS)": {
"key": "IT_RBRC",
"label": "]",
}
"A(IT_A)": {
"key": "IT_ARNG",
"label": "Å",
}
"A(IT_S)": {
"key": "IT_SS",
"label": "ß",
}
"A(IT_D)": {
"key": "IT_PDIF",
"label": "∂",
}
"A(IT_F)": {
"key": "IT_FHK",
"label": "ƒ",
}
"A(IT_G)": {
"key": "IT_INFN",
"label": "∞",
}
"A(IT_H)": {
"key": "IT_INCR",
"label": "∆",
}
"A(IT_J)": {
"key": "IT_FORD",
"label": "ª",
}
"A(IT_K)": {
"key": "IT_MORD",
"label": "º",
}
"A(IT_L)": {
"key": "IT_NOT",
"label": "¬",
}
"A(IT_OGRV)": {
"key": "IT_AT",
"label": "@",
}
"A(IT_AGRV)": {
"key": "IT_HASH",
"label": "#",
}
"A(IT_UGRV)": {
"key": "IT_PILC",
"label": "¶",
}
"A(IT_LABK)": {
"key": "IT_LTEQ",
"label": "≤",
}
"A(IT_Z)": {
"key": "IT_NARS",
"label": "∑",
}
"A(IT_X)": {
"key": "IT_DAGG",
"label": "†",
}
"A(IT_C)": {
"key": "IT_COPY",
"label": "©",
}
"A(IT_V)": {
"key": "IT_SQRT",
"label": "√",
}
"A(IT_B)": {
"key": "IT_INTG",
"label": "∫",
}
"A(IT_N)": {
"key": "IT_STIL",
"label": "˜ (dead)",
}
"A(IT_M)": {
"key": "IT_MICR",
"label": "µ",
}
"A(IT_COMM)": {
"key": "IT_ELLP",
"label": "…",
}
"A(IT_DOT)": {
"key": "IT_BULT",
"label": "•",
}
"A(IT_MINS)": {
"key": "IT_NDSH",
"label": "",
}
/* Shift+Alted symbols
* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬─────┐
* │ ı │ » │ ” │ │ ¢ │ ‰ │ │  │ │ ≈ │ ¿ │ ± │ │
* ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬───┤
* │ │ │ À │ È │ Ì │ Ò │ │ Ù │ │ │ ∏ │ { │ } │ │
* ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │
* │ │ │ ¯ │ ˘ │ ˙ │ ˚ │ ¸ │ ˝ │ ˛ │ ˇ │ Ç │ │ ◊ │ │
* ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴──┤
* │ │ ≥ │ │ ‡ │ Á │ É │ Í │ Ó │ Ú │ │ · │ — │ │
* ├────┴┬──┴─┬─┴───┼───┴───┴───┴───┴───┴───┼───┴─┬─┴──┬─────┤
* │ │ │ │ │ │ │ │
* └─────┴────┴─────┴───────────────────────┴─────┴────┴─────┘
*/
"S(A(IT_BSLS))": {
"key": "IT_DLSI",
"label": "ı",
}
"S(A(IT_1))": {
"key": "IT_RDAQ",
"label": "»",
}
"S(A(IT_2))": {
"key": "IT_RDQU",
"label": "”",
}
"S(A(IT_3))": {
"key": "IT_RSQU",
"label": "",
}
"S(A(IT_4))": {
"key": "IT_CENT",
"label": "¢",
}
"S(A(IT_5))": {
"key": "IT_PERM",
"label": "‰",
}
"S(A(IT_6))": {
"key": "IT_RSAQ",
"label": "",
}
"S(A(IT_7))": {
"key": "IT_FRSL",
"label": "",
}
"S(A(IT_8))": {
"key": "IT_APPL",
"label": " (Apple logo)",
}
"S(A(IT_0))": {
"key": "IT_AEQL",
"label": "≈",
}
"S(A(IT_QUOT))": {
"key": "IT_IQUE",
"label": "¿",
}
"S(A(IT_IGRV))": {
"key": "IT_PLMN",
"label": "±",
}
"S(A(IT_Q))": {
"key": "IT_SLQU",
"label": "",
}
"S(A(IT_W))": {
"key": "IT_CAGR",
"label": "À",
}
"S(A(IT_E))": {
"key": "IT_CEGR",
"label": "È",
}
"S(A(IT_R))": {
"key": "IT_CIGR",
"label": "Ì",
}
"S(A(IT_T))": {
"key": "IT_COGR",
"label": "Ò",
}
"S(A(IT_U))": {
"key": "IT_CUGR",
"label": "Ù",
}
"S(A(IT_P))": {
"key": "IT_NARP",
"label": "∏",
}
"S(A(IT_EGRV))": {
"key": "IT_LCBR",
"label": "{",
}
"S(A(IT_PLUS))": {
"key": "IT_RCBR",
"label": "}",
}
"S(A(IT_S))": {
"key": "IT_MACR",
"label": "¯",
}
"S(A(IT_D))": {
"key": "IT_BREV",
"label": "˘",
}
"S(A(IT_F))": {
"key": "IT_DOTA",
"label": "˙",
}
"S(A(IT_G))": {
"key": "IT_RNGA",
"label": "˚",
}
"S(A(IT_H))": {
"key": "IT_CEDL",
"label": "¸",
}
"S(A(IT_J))": {
"key": "IT_DACU",
"label": "˝",
}
"S(A(IT_K))": {
"key": "IT_OGON",
"label": "˛",
}
"S(A(IT_L))": {
"key": "IT_CARN",
"label": "ˇ",
}
"S(A(IT_OGRV))": {
"key": "IT_CCCE",
"label": "Ç",
}
"S(A(IT_UGRV))": {
"key": "IT_LOZN",
"label": "◊",
}
"S(A(IT_LABK))": {
"key": "IT_GTEQ",
"label": "≥",
}
"S(A(IT_X))": {
"key": "IT_DDAG",
"label": "‡",
}
"S(A(IT_C))": {
"key": "IT_CAAC",
"label": "Á",
}
"S(A(IT_V))": {
"key": "IT_CEAC",
"label": "É",
}
"S(A(IT_B))": {
"key": "IT_CIAC",
"label": "Í",
}
"S(A(IT_N))": {
"key": "IT_COAC",
"label": "Ó",
}
"S(A(IT_M))": {
"key": "IT_CUAC",
"label": "Ú",
}
"S(A(IT_DOT))": {
"key": "IT_MDDT",
"label": "·",
}
"S(A(IT_MINS))": {
"key": "IT_MDSH",
"label": "—",
}
}
}

View File

@@ -1,330 +0,0 @@
{
"aliases": {
/*
* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐
* │Z↔H│ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ ^ │ ¥ │ │
* ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤
* │ │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ @ │ [ │ │
* ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │
* │ Eisū │ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ : │ ] │ │
* ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┤
* │ │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │ \ │ │
* ├─────┬──┴┬──┴──┬┴───┴┬──┴───┴──┬┴───┴┬──┴┬──┴┬──┴┬──┴┬─────┤
* │ │ │ │Muhen│ │ Hen │K↔H│ │ │ │ │
* └─────┴───┴─────┴─────┴─────────┴─────┴───┴───┴───┴───┴─────┘
*/
"KC_GRV": {
"key": "JP_ZKHK",
"label": "Zenkaku ↔ Hankaku ↔ Kanji (半角 ↔ 全角 ↔ 漢字)",
}
"KC_1": {
"key": "JP_1",
"label": "1",
}
"KC_2": {
"key": "JP_2",
"label": "2",
}
"KC_3": {
"key": "JP_3",
"label": "3",
}
"KC_4": {
"key": "JP_4",
"label": "4",
}
"KC_5": {
"key": "JP_5",
"label": "5",
}
"KC_6": {
"key": "JP_6",
"label": "6",
}
"KC_7": {
"key": "JP_7",
"label": "7",
}
"KC_8": {
"key": "JP_8",
"label": "8",
}
"KC_9": {
"key": "JP_9",
"label": "9",
}
"KC_0": {
"key": "JP_0",
"label": "0",
}
"KC_MINS": {
"key": "JP_MINS",
"label": "-",
}
"KC_EQL": {
"key": "JP_CIRC",
"label": "^",
}
"KC_INT3": {
"key": "JP_YEN",
"label": "¥",
}
"KC_Q": {
"key": "JP_Q",
"label": "Q",
}
"KC_W": {
"key": "JP_W",
"label": "W",
}
"KC_E": {
"key": "JP_E",
"label": "E",
}
"KC_R": {
"key": "JP_R",
"label": "R",
}
"KC_T": {
"key": "JP_T",
"label": "T",
}
"KC_Y": {
"key": "JP_Y",
"label": "Y",
}
"KC_U": {
"key": "JP_U",
"label": "U",
}
"KC_I": {
"key": "JP_I",
"label": "I",
}
"KC_O": {
"key": "JP_O",
"label": "O",
}
"KC_P": {
"key": "JP_P",
"label": "P",
}
"KC_LBRC": {
"key": "JP_AT",
"label": "@",
}
"KC_RBRC": {
"key": "JP_LBRC",
"label": "[",
}
"KC_CAPS": {
"key": "JP_EISU",
"label": "Eisū (英数)",
}
"KC_A": {
"key": "JP_A",
"label": "A",
}
"KC_S": {
"key": "JP_S",
"label": "S",
}
"KC_D": {
"key": "JP_D",
"label": "D",
}
"KC_F": {
"key": "JP_F",
"label": "F",
}
"KC_G": {
"key": "JP_G",
"label": "G",
}
"KC_H": {
"key": "JP_H",
"label": "H",
}
"KC_J": {
"key": "JP_J",
"label": "J",
}
"KC_K": {
"key": "JP_K",
"label": "K",
}
"KC_L": {
"key": "JP_L",
"label": "L",
}
"KC_SCLN": {
"key": "JP_SCLN",
"label": ";",
}
"KC_QUOT": {
"key": "JP_COLN",
"label": ":",
}
"KC_NUHS": {
"key": "JP_RBRC",
"label": "]",
}
"KC_Z": {
"key": "JP_Z",
"label": "Z",
}
"KC_X": {
"key": "JP_X",
"label": "X",
}
"KC_C": {
"key": "JP_C",
"label": "C",
}
"KC_V": {
"key": "JP_V",
"label": "V",
}
"KC_B": {
"key": "JP_B",
"label": "B",
}
"KC_N": {
"key": "JP_N",
"label": "N",
}
"KC_M": {
"key": "JP_M",
"label": "M",
}
"KC_COMM": {
"key": "JP_COMM",
"label": ",",
}
"KC_DOT": {
"key": "JP_DOT",
"label": ".",
}
"KC_SLSH": {
"key": "JP_SLSH",
"label": "/",
}
"KC_INT1": {
"key": "JP_BSLS",
"label": "\\",
}
"KC_INT5": {
"key": "JP_MHEN",
"label": "Muhenkan (無変換)",
}
"KC_INT4": {
"key": "JP_HENK",
"label": "Henkan (変換)",
}
"KC_INT2": {
"key": "JP_KANA",
"label": "Katakana ↔ Hiragana ↔ Rōmaji (カタカナ ↔ ひらがな ↔ ローマ字)",
}
/* Shifted symbols
* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐
* │ │ ! │ " │ # │ $ │ % │ & │ ' │ ( │ ) │ │ = │ ~ │ | │ │
* ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤
* │ │ │ │ │ │ │ │ │ │ │ │ ` │ { │ │
* ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │
* │ Caps │ │ │ │ │ │ │ │ │ │ + │ * │ } │ │
* ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┤
* │ │ │ │ │ │ │ │ │ < │ > │ ? │ _ │ │
* ├─────┬──┴┬──┴──┬┴───┴┬──┴───┴──┬┴───┴┬──┴┬──┴┬──┴┬──┴┬─────┤
* │ │ │ │ │ │ │ │ │ │ │ │
* └─────┴───┴─────┴─────┴─────────┴─────┴───┴───┴───┴───┴─────┘
*/
"S(JP_1)": {
"key": "JP_EXLM",
"label": "!",
}
"S(JP_2)": {
"key": "JP_DQUO",
"label": "\"",
}
"S(JP_3)": {
"key": "JP_HASH",
"label": "#",
}
"S(JP_4)": {
"key": "JP_DLR",
"label": "$",
}
"S(JP_5)": {
"key": "JP_PERC",
"label": "%",
}
"S(JP_6)": {
"key": "JP_AMPR",
"label": "&",
}
"S(JP_7)": {
"key": "JP_QUOT",
"label": "'",
}
"S(JP_8)": {
"key": "JP_LPRN",
"label": "(",
}
"S(JP_9)": {
"key": "JP_RPRN",
"label": ")",
}
"S(JP_MINS)": {
"key": "JP_EQL",
"label": "=",
}
"S(JP_CIRC)": {
"key": "JP_TILD",
"label": "~",
}
"S(JP_YEN)": {
"key": "JP_PIPE",
"label": "|",
}
"S(JP_AT)": {
"key": "JP_GRV",
"label": "`",
}
"S(JP_LBRC)": {
"key": "JP_LCBR",
"label": "{",
}
"S(JP_EISU)": {
"key": "JP_CAPS",
"label": "Caps Lock",
}
"S(JP_SCLN)": {
"key": "JP_PLUS",
"label": "+",
}
"S(JP_COLN)": {
"key": "JP_ASTR",
"label": "*",
}
"S(JP_RBRC)": {
"key": "JP_RCBR",
"label": "}",
}
"S(JP_COMM)": {
"key": "JP_LABK",
"label": "<",
}
"S(JP_DOT)": {
"key": "JP_RABK",
"label": ">",
}
"S(JP_SLSH)": {
"key": "JP_QUES",
"label": "?",
}
"S(JP_BSLS)": {
"key": "JP_UNDS",
"label": "_",
}
}
}

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