1
0

Compare commits

..

1 Commits

Author SHA1 Message Date
Jack Humbert
fa09bc76c4 Merge b4e30d3929 into d639bd2021 2017-02-07 20:27:07 +00:00
24300 changed files with 277073 additions and 1807524 deletions

View File

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

33
.clangd
View File

@@ -1,33 +0,0 @@
CompileFlags:
Add:
[
-Wno-unknown-attributes,
-Wno-maybe-uninitialized,
-Wno-unknown-warning-option,
-Wno-pointer-to-int-cast,
-Wno-int-to-void-pointer-cast,
-DPROGMEM=,
]
Remove:
[
-W*,
-mmcu=*,
-mcpu=*,
-mfpu=*,
-mfloat-abi=*,
-mno-unaligned-access,
-mno-thumb-interwork,
-mcall-prologues,
-D__has_include*,
-mlra,
]
Compiler: clang
Diagnostics:
UnusedIncludes: None
Suppress:
[
asm_invalid_output_constraint,
asm_invalid_input_constraint,
invalid_asm_value_for_constraint,
anyx86_interrupt_attribute,
]

View File

@@ -1,43 +0,0 @@
# EditorConfig helps developers define and maintain consistent coding styles between different editors and IDEs
# editorconfig.org
root = true
[*]
end_of_line = lf
indent_style = space
indent_size = 4
charset = utf-8
trim_trailing_whitespace = true
insert_final_newline = true
# To match GitHub Actions formatting
[*.{yaml,yml}]
indent_size = 2
[*.md]
trim_trailing_whitespace = false
[{Makefile,*.mk}]
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}]
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

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

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/qmk
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

@@ -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

@@ -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

@@ -1,34 +0,0 @@
<!--- Provide a general summary of your changes in the title above. -->
<!--- Anything on lines wrapped in comments like these will not show up in the final text. -->
## Description
<!--- Describe your changes in detail here. -->
## Types of Changes
<!--- What types of changes does your code introduce? Put an `x` in all the boxes that apply. -->
- [ ] Core
- [ ] Bugfix
- [ ] New feature
- [ ] Enhancement/optimization
- [ ] Keyboard (addition or update)
- [ ] Keymap/layout (addition or update)
- [ ] Documentation
## Issues Fixed or Closed by This PR
*
## Checklist
<!--- 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 change requires a change to the documentation.
- [ ] I have updated the documentation accordingly.
- [ ] I have read the [**CONTRIBUTING** document](https://docs.qmk.fm/#/contributing).
- [ ] I have added tests to cover my changes.
- [ ] I have tested the changes and verified that they work and don't break anything (as well as I can manage).

View File

@@ -1,430 +0,0 @@
---
applyTo: "**"
excludeAgent:
- "coding-agent"
---
# GitHub Copilot Instructions for QMK Pull Request Review
This document provides automated review guidance based on the [QMK PR Checklist](https://docs.qmk.fm/pr_checklist) and it is intended only for use by GitHub Copilot code-review agent during pull request reviews.
## General PR Requirements
### Branch and Submission Standards
- **Source Branch Policy**: Verify PR is NOT submitted from submitter's own `master` branch
- Flag if submitter is using their own `master` branch as source
- Suggest using feature branches instead for cleaner fork management
- **Target Branch Policy**:
- **New keyboard additions** → `master` branch (new folders under `keyboards/`)
- **All other changes** → `develop` branch:
- Keyboard updates, refactors, or moves
- Core code changes
- Data-driven configuration migrations
- Any modifications to existing keyboards
- **PR Scope**: PRs should contain the smallest set of modifications for a single change
- Flag PRs that modify multiple keyboards simultaneously
- Suggest splitting large PRs into focused, incremental changes
- **Merge Conflicts**: Check for unresolved merge conflicts
### File Naming and Structure
- **Lowercase Requirement**: All new directories and filenames must be lowercase
- Exception: Upstream sources with original uppercase (LUFA, ChibiOS)
- Exception: Core files with valid justification
- **Reject**: Board designer preference for uppercase is NOT valid justification
### License Headers
- **Required**: Valid license headers on all `*.c` and `*.h` files
- **Recommended**: GPL2/GPL3 for consistency
- **Format**: Check for proper GPL2+ header or SPDX identifier
```c
// Copyright 2024 Your Name (@yourgithub)
// SPDX-License-Identifier: GPL-2.0-or-later
```
- **Exception**: Simple assignment-only `rules.mk` files don't need headers
- **Flag**: Missing or ambiguous license headers (blocks merge)
### QMK Best Practices
- **Include Guards**: Use `#pragma once` instead of `#ifndef` guards in headers
- **Abstractions Required**: No low-level GPIO/I2C/SPI functions
- Must use QMK abstractions (flag direct hardware access)
- **Timing Functions**:
- Use `wait_ms()` instead of `_delay_ms()`
- Remove `#include <util/delay.h>`
- Use `timer_read()`, `timer_read32()` from `timer.h`
- **New Abstractions**: If proposing new abstraction, suggest:
1. Prototype in own keyboard first
2. Discuss with QMK Collaborators on Discord
3. Refactor as separate core change
4. Remove the keyboard-specific implementation from board
---
## Keymap PR Reviews
**Scope**: These rules apply to files within `keyboards/*/keymaps/*` subdirectories.
### Note on Personal Keymaps
- **Policy Change**: Personal keymap submissions no longer accepted
- **Permitted**: Vendor-specific keymaps only
- Naming convention: `default_${vendor}` (e.g., `default_clueboard`)
- Can be more feature-rich than stock `default` keymaps
### Keymap Code Standards
- **Includes**: `#include QMK_KEYBOARD_H` preferred over specific board files
- **Enums**: Prefer layer enums to `#define`s
- **Custom Keycodes**: First entry must be `QK_USER`
- **Formatting**: Check spacing alignment on commas and keycodes (spaces, not tabs)
- **VIA**: Keymaps should NOT enable VIA
- VIA keymaps belong in [VIA QMK Userspace](https://github.com/the-via/qmk_userspace_via)
---
## Keyboard PR Reviews
**Scope**: These rules apply to keyboard-level files in `keyboards/*` directories, excluding files within the `keymaps/` subdirectories. This includes:
- `info.json` or `keyboard.json` (keyboard root or variant level)
- `readme.md` (keyboard level)
- `rules.mk` (keyboard level)
- `config.h` (keyboard level, not keymap level)
- `<keyboard>.c` and `<keyboard>.h` files
- Hardware configuration files (`halconf.h`, `mcuconf.h`, `chconf.h`)
### Branch Targeting
- **New Keyboards**: Target `master` branch
- New additions to `keyboards/` folder submit to `master`
- **Keyboard Moves**: Must target `develop` branch
- Check `data/mappings/keyboard_aliases.hjson` is updated for moves
- **Keyboard Updates/Refactors**: Must target `develop` to reduce merge conflicts
- **Data Driven Migration**: Must target `develop`
### info.json and keyboard.json Requirements
- **Data-Driven Configuration**: Encourage maximum use of `info.json` and `keyboard.json` schema features
- **Schema Validation**: All `info.json` and `keyboard.json` files must validate against `data/schemas/keyboard.jsonschema`
- Use QMK CLI: `qmk lint -kb <keyboard_name>` to validate
- Schema defines required fields, data types, and valid values
- Check for schema validation errors before submitting PR
- **Mandatory Elements**:
- Valid URL
- Valid maintainer
- Valid USB VID/PID and device version
- Displays correctly in Configurator (Ctrl+Shift+I to preview)
- `layout` definitions include matrix positions
- Standard layout definitions where applicable
- Community Layout macro names when applicable
- Microcontroller and bootloader specified
- Diode direction (if not using direct pins)
- **Layout Naming**:
- Single layout: Use `LAYOUT` or community layout name
- Multiple layouts: Include `LAYOUT_all` + alternate names
- Prefer community layout names (e.g., `LAYOUT_tkl_ansi`, `LAYOUT_ortho_4x4`)
- **Configuration in info.json or keyboard.json** (when applicable):
- Direct pin configuration
- Backlight, Split keyboard, Encoder, Bootmagic configs
- LED Indicator, RGB Light, RGB Matrix configs
- **Format**: Run `qmk format-json -i` before submitting
### USB VID/PID Uniqueness
VID+PID combination must be unique across all keyboards. Individual VID or PID values can be reused with different partners.
**Validation Steps:**
1. Extract VID and PID from keyboard.json/info.json in the PR
2. Search for existing usage: `grep -r '"vid".*"0xVVVV"' keyboards/ --include="*.json" | grep -l '"pid".*"0xPPPP"'`
3. If results found: Check if BOTH VID AND PID match in same file
- Both match = **COLLISION** - request different PID
- Only one matches = **OK** - different keyboards can share individual values
4. For keyboard variants/revisions under same keyboard folder:
- Different PID recommended for functionally different variants
- Same PID acceptable if revisions only differ in hardware routing/pin assignments
**Quick Reference:**
- Same PID + Different VID = Valid
- Same VID + Different PID = Valid
- Same VID + Same PID = Invalid
**Review Response:**
For collision:
```
VID+PID collision: 0xVVVV:0xPPPP already used by keyboards/[path]/file.json
+Please assign a different PID. VID can remain the same.
```
For uniqueness confirmed:
```
VID+PID validation: 0xVVVV:0xPPPP is unique (no collisions found)
```
### readme.md Requirements
- **Template**: Must follow [official template](https://github.com/qmk/qmk_firmware/blob/master/data/templates/keyboard/readme.md)
- **Flash Command**: Present with `:flash` at end
- **Hardware Link**: Valid availability link (unless handwired)
- Private groupbuys acceptable
- One-off prototypes will be questioned
- Open-source should link to files
- **Reset Instructions**: Clear bootloader mode instructions
- **Images Required**:
- Keyboard and PCB photos preferred
- Must be hosted externally (imgur, etc.)
- Direct image links required (not preview pages)
- Example: `https://i.imgur.com/vqgE7Ok.jpg` not `https://imgur.com/vqgE7Ok`
### rules.mk Standards
- **Removed Items**:
- `MIDI_ENABLE`, `FAUXCLICKY_ENABLE`, `HD44780_ENABLE`
- Size comments like `(-/+size)`
- Alternate bootloader lists if one specified
- MCU parameter re-definitions matching defaults in `mcu_selection.mk`
- **Comment Updates**: Change bootloader comments to generic
- **Forbidden Features at Keyboard Level** (these belong in keymap-level `rules.mk` only):
- `COMBO_ENABLE`
- `ENCODER_MAP_ENABLE`
### config.h Standards (Keyboard Level)
- **Prohibited**:
- `#define DESCRIPTION`
- Magic Key Options, MIDI Options, HD44780 configuration
- User preference `#define`s (belong in keymap)
- Re-defining default values (`DEBOUNCE`, RGB settings)
- Copy/pasted comment blocks explaining features
- Commented-out unused defines
- `#include "config_common.h"`
- `#define MATRIX_ROWS/COLS` (unless custom matrix)
- **Minimal Code**: Only critical board boot code required
- **No Vial**: Vial-related files/changes not accepted
### Keyboard Implementation Files
#### `<keyboard>.c`
- **Remove Empty Functions**: Delete empty or commented-out weak-defined functions
- `xxxx_xxxx_kb()`, `xxxx_xxxx_user()` implementations
- **Migration**: `matrix_init_board()` → `keyboard_pre_init_kb()`
- **Custom Matrix**: Use `lite` variant when possible for standard debounce
- `CUSTOM_MATRIX = lite` preferred
- Full custom matrix (`yes`) requires justification
- **LED Indicators**: Prefer Configuration Options over custom `led_update_*()` implementations
- **Hardware Configuration**: Basic functionality for OLED, encoders, etc. at keyboard level
#### `<keyboard>.h`
- **Include**: `#include "quantum.h"` at top
- **Layout Macros**: Move to `info.json` or `keyboard.json` (no longer in header)
### Default Keymap Standards
**Scope**: These rules specifically apply to files within `keyboards/*/keymaps/default/` directories.
- **Pristine Requirement**: Bare minimum clean slate
- No custom keycodes
- No advanced features (non-exhaustive list of examples: tap dance, macros)
- Basic mod taps and home row mods acceptable when necessary
- Standard layouts preferred -- see examples in `layouts/default/` and `layouts/community/`
- **Removed Examples**: Delete `QMKBEST`/`QMKURL` macros
- **Tri Layer**: Use Tri Layer feature instead of manual `layer_on/off()` + `update_tri_layer()`
- **Encoder Map**: Use encoder map feature, `encoder_update_user()` may not be present
- **No VIA**: Default keymap should not enable VIA
- **Additional Keymaps**: Example/bells-and-whistles keymaps acceptable in same PR (separate from default)
### Prohibited Files
- **No VIA JSON**: Belongs in [VIA Keyboard Repo](https://github.com/the-via/keyboards)
- **No KLE JSON**: Not used within QMK
- **No Cross-Keyboard Sources**: Don't include files from other keyboard vendors
- Exception: Core files (e.g., `drivers/sensors/pmw3360.c`)
- Use of vendor-specific code (e.g., `wilba_tech/wt_main.c`) only when keyboard exists in the same enclosing vendor folder (e.g. a `wilba_tech` keyboard)
- Multi-board code is candidate for core refactoring when intended for use by multiple vendors
### Wireless Keyboards
- **Policy**: Wireless/Bluetooth PRs rejected without complete wireless code
- Wireless code may not include anything resembling precompiled data such as `*.a` files or other libraries
- Firmware blobs are not permitted in raw form or as compiled C-style arrays either.
- GPL2+ license requires full source disclosure
- Historically abused for VIA compatibility without releasing sources
- PRs without wireless capability will be held indefinitely
- Existing merged wireless boards from same vendor held until sources provided
### ChibiOS-Specific Requirements
- **Board Definitions**: Strong preference for existing ChibiOS board definitions
- Use equivalent Nucleo boards when possible
- Example: STM32L082KZ can use `BOARD = ST_NUCLEO64_L073RZ`
- QMK is eliminating custom board definitions due to maintenance burden
- **New Board Definitions**:
- Must NOT be embedded in keyboard PR
- Submit as separate Core PR
- `board.c` must have standard `__early_init()` and empty `boardInit()`
- Migrate code intended for `__early_init()` → keyboard-local `early_hardware_init_pre/post()`
- Migrate code intended for `boardInit()` → keyboard-local `board_init()`
---
## Core PR Reviews
### Targeting and Scope
- **Branch**: All core PRs must target `develop` branch
- **Single Focus**: Smallest set of changes per PR
- PRs with multiple areas will be asked to split
- Keyboard/keymap changes only if affecting base builds or default-like keymaps
- Keymap modifications (non-default) should be followup PR after core merge
- Large refactoring PRs affecting other keymaps raised separately
### Testing Requirements
- **New Hardware Support**: Requires test keyboard under `keyboards/handwired/onekey`
- New MCUs: Add child keyboard targeting new MCU for build verification
- New hardware (displays, matrix, peripherals): Provide associated keymap
- Exception: If existing keymap can leverage functionality (consult Collaborators)
- **Callbacks**: New `_kb`/`_user` callbacks must return `bool` for user override
- **Unit Tests**: Strongly recommended, may be required
- Critical code areas (keycode pipeline) will require tests
- Boost confidence in current and future correctness
### Code Quality
- **Subjective Review**: Other requirements at QMK Collaborators' discretion
- **Documentation**: Core changes should be well-documented
---
## Automated Review Checklist
When reviewing PRs, check the following systematically:
### File Changes Review
1. **License headers** on all C/H files (GPL2+ preferred, others must be GPL2+ compatible, SPDX format preferred)
2. **File naming** lowercase (flag exceptions needing justification)
3. **Include guards** use `#pragma once`
4. **No low-level hardware access** (GPIO, I2C, SPI direct register writes)
5. **Timing abstractions** (`wait_ms()`, `timer_read()` usage)
### info.json and keyboard.json Validation
1. **Schema Compliance**: `keyboard.json` and `info.json` files validate against `data/schemas/keyboard.jsonschema`
- Both files are identical syntax, however the `keyboard.json` dictates a buildable target, `info.json` does not
- Run `qmk lint -kb <keyboard>` to check schema validation
- Check for proper data types (strings, integers, arrays, objects)
- Verify required fields are present
- Ensure enum values match allowed options in schema
2. All mandatory fields present and valid
3. `qmk format-json -i` has been run (formats and validates)
4. Layout macros moved from headers
5. Community layout names used where applicable
### rules.mk Cleanup
1. Deprecated features removed
2. No size comments
3. No keymap-only features at keyboard level
4. No redundant MCU parameter definitions
### config.h Cleanup
1. No `DESCRIPTION`, `config_common.h`, or prohibited includes
2. No default value re-definitions
3. No commented-out defines or feature documentation blocks
4. No user preference defines at keyboard level
### Keymap Quality
1. Default keymaps are pristine (no custom keycodes/advanced features)
2. No `QMKBEST`/`QMKURL` macros
3. Encoder map feature used instead of `encoder_update_user()`
4. Tri Layer feature used for multi-layer access
5. No VIA enabled in default keymap
### Documentation
1. readme.md follows template
2. Flash command present with `:flash`
3. Reset instructions clear
4. External image hosting (direct links)
5. Valid hardware availability link
### Code Organization
1. Empty weak-defined functions removed from `<keyboard>.c`
2. Proper migration of init functions
3. No cross-vendor source files
4. No VIA/KLE JSON files
### Branch and Scope
1. Not submitted from submitter's own `master` branch (use feature branches)
2. PR is focused on single change
3. Targets correct branch:
- `master` for new keyboard additions
- `develop` for keyboard updates/refactors/moves and core changes
4. No merge conflicts
---
## Review Response Templates
### For source master branch usage:
```
⚠️ This PR appears to be submitted from your own `master` branch. For future PRs, we recommend using feature branches instead of committing to your `master`. This makes it easier to keep your fork updated and manage multiple PRs.
See: [Best Practices: Your Fork's Master](https://docs.qmk.fm/newbs_git_using_your_master_branch)
```
### For incorrect target branch:
```
❌ This PR targets the wrong branch:
- **New keyboard additions** should target `master`
- **Keyboard updates/refactors/moves** should target `develop`
- **Core changes** should target `develop`
Please change the target branch accordingly.
```
### For missing license headers:
```
❌ Missing GPL-compatible license headers on the following files:
- [list files]
Please add GPL2+ headers (GPL2/GPL3 recommended). Example:
\`\`\`c
// Copyright 2024 Your Name (@yourgithub)
// SPDX-License-Identifier: GPL-2.0-or-later
\`\`\`
```
### For non-lowercase filenames:
```
❌ The following files/directories must be lowercase:
- [list files]
Exception: Only valid if from upstream sources (LUFA, ChibiOS) or justified by core consistency.
```
### For config.h violations:
```
⚠️ Found prohibited config.h elements:
- [list specific issues: DESCRIPTION, default value re-definitions, etc.]
Please remove these and refer to [Data Driven Configuration](https://docs.qmk.fm/data_driven_config).
```
### For info.json or keyboard.json issues:
```
⚠️ info.json or keyboard.json needs attention:
- [list missing mandatory fields]
- Please run: \`qmk format-json -i path/to/info.json\` (or keyboard.json)
- Validate with: \`qmk lint -kb <keyboard_name>\`
```
### For schema validation errors:
```
❌ Schema validation failed for info.json or keyboard.json:
- [list specific validation errors from schema]
- Check `data/schemas/keyboard.jsonschema` for valid field definitions
- Common issues:
- Invalid data types (e.g., string instead of integer)
- Missing required fields
- Invalid enum values
- Incorrectly formatted pin definitions
```
### For non-pristine default keymap:
```
⚠️ Default keymap should be pristine (clean slate for users):
- Remove: [custom keycodes/tap dance/macros/etc.]
- Keep it minimal with standard layouts where possible
Consider moving advanced features to a separate example keymap.
```
---
## Notes for GitHub Copilot
- Focus reviews on **objective checklist items** that can be automatically verified
- Flag **definite violations** with ❌
- Suggest improvements for **recommendations** with ⚠️
- **Provide specific file/line references** when flagging issues
- **Link to relevant QMK documentation** for each issue
- **Prioritize blocking issues** (license, merge conflicts, branch policy)
- **Be constructive**: Suggest fixes, not just problems
- **Acknowledge trade-offs**: Some guidelines have valid exceptions
This is meant as a **first-pass review** to catch common issues before human review. Complex architectural decisions, code quality, and subjective assessments still require human QMK Collaborator review.

View File

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

60
.github/labeler.yml vendored
View File

@@ -1,60 +0,0 @@
core:
- changed-files:
- any-glob-to-any-file:
- quantum/**
- tmk_core/**
- drivers/**
- tests/**
- util/**
- platforms/**
- builddefs/*.mk
- Makefile
- '*.mk'
dependencies:
- changed-files:
- all-globs-to-any-file:
- lib/**
- '!lib/python/**'
keyboard:
- changed-files:
- all-globs-to-any-file:
- keyboards/**
- '!keyboards/**/keymaps/**'
keymap:
- changed-files:
- any-glob-to-any-file:
- users/**
- layouts/**
- keyboards/**/keymaps/**
via:
- changed-files:
- any-glob-to-any-file:
- keyboards/**/keymaps/via/*
cli:
- changed-files:
- any-glob-to-any-file:
- requirements.txt
- lib/python/**
python:
- changed-files:
- any-glob-to-any-file:
- '**/*.py'
documentation:
- changed-files:
- any-glob-to-any-file:
- docs/**
- builddefs/docsgen/**
CI:
- changed-files:
- any-glob-to-any-file:
- .github/**
dd:
- changed-files:
- any-glob-to-any-file:
- data/constants/**
- data/mappings/**
- data/schemas/**
community_module:
- changed-files:
- any-glob-to-any-file:
- modules/**

View File

@@ -1,50 +0,0 @@
name: Update API Data
permissions:
contents: read
on:
push:
branches:
- master
- develop
paths:
- 'keyboards/**'
- 'layouts/community/**'
- 'lib/python/**'
- 'data/**'
- '.github/workflows/api.yml'
workflow_dispatch:
jobs:
api_data:
runs-on: ubuntu-latest
container: ghcr.io/qmk/qmk_cli
# protect against those who work in their fork on 'important' branches
if: github.repository == 'qmk/qmk_firmware'
steps:
- uses: actions/checkout@v6
with:
fetch-depth: 1
persist-credentials: false
- name: Install dependencies
run: |
pip3 install -r requirements-dev.txt
- name: Generate API Data
run: |
qmk generate-api
- name: Upload API Data
uses: jakejarvis/s3-sync-action@master
with:
args: --acl public-read --follow-symlinks --delete
env:
AWS_S3_BUCKET: ${{ github.ref == 'refs/heads/develop' && secrets['API_SPACE_DEVELOP'] || secrets['API_SPACE_MASTER'] }}
AWS_ACCESS_KEY_ID: ${{ secrets.SPACES_ACCESS_KEY }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.SPACES_SECRET_KEY }}
AWS_S3_ENDPOINT: https://nyc3.digitaloceanspaces.com
SOURCE_DIR: '.build/api_data'

View File

@@ -1,20 +0,0 @@
name: Automatic Approve
permissions: {}
on:
schedule:
- cron: "*/30 * * * *"
jobs:
automatic_approve:
runs-on: ubuntu-latest
if: github.repository == 'qmk/qmk_firmware'
steps:
- uses: zvecr/automatic-approve-action@safe_files
with:
token: ${{ secrets.QMK_BOT_TOKEN }}
workflows: "labeler.yml,lint.yml,docs.yml"
safe_files: "keyboards/,docs/"

View File

@@ -1,39 +0,0 @@
name: Essential files modified
permissions:
contents: write
on:
workflow_dispatch:
push:
branches:
- master
paths:
- builddefs/**/*
- drivers/**/*
- platforms/**/*
- quantum/**/*
- tests/**/*
- tmk_core/**/*
- lib/python/**/*
- util/**/*
- Makefile
- '*.mk'
jobs:
tag:
runs-on: ubuntu-latest
# protect against those who develop with their fork on master
if: github.repository == 'qmk/qmk_firmware'
steps:
- uses: actions/checkout@v6
with:
fetch-depth: 0
- name: Bump version and push tag
uses: anothrNick/github-tag-action@1.66.0
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
DEFAULT_BUMP: 'patch'

View File

@@ -1,289 +0,0 @@
name: Bootstrap Script Testing
on:
push:
branches: [master, develop, xap]
paths:
- 'util/env-bootstrap.sh'
- '.github/workflows/bootstrap_testing.yml'
pull_request:
paths:
- 'util/env-bootstrap.sh'
- '.github/workflows/bootstrap_testing.yml'
workflow_dispatch:
permissions:
contents: read
jobs:
prep:
runs-on: ubuntu-latest
outputs:
any_changed: ${{ steps.file_changes.outputs.any_changed }}
steps:
- name: Get changed files
id: file_changes
if: ${{ github.event_name == 'pull_request' }}
uses: tj-actions/changed-files@v47
with:
use_rest_api: true
files: |
util/env-bootstrap.sh
.github/workflows/bootstrap_testing.yml
bootstrap-test-linux:
name: Bootstrap (Linux)
needs: prep
if: ${{ github.event_name != 'pull_request' || needs.prep.outputs.any_changed == 'true' }}
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
distribution:
# Ubuntu/Debian based
- debian:11
- debian:12
- debian:13
- ubuntu:20.04
- ubuntu:22.04
- ubuntu:24.04
# RHEL/CentOS/Fedora based
- fedora:41
- fedora:42
- fedora:43
- rockylinux:8
- rockylinux:9
- rockylinux/rockylinux:10
- almalinux:8
- almalinux:9
- almalinux:10
# OpenSUSE based (we skip Tumbleweed as it has issues with package versions between pattern installs and other dependencies preinstalled into the base container)
- opensuse/leap:latest
# Gentoo-based
- gentoo/stage3:latest
# Arch based
- archlinux:latest
- cachyos/cachyos:latest
- manjarolinux/base:latest
container:
image: ${{ matrix.distribution }}
options: --privileged
steps:
- name: Install base dependencies
run: |
# Attempt to run the package installation up to 10 times to mitigate transient network issues
for n in $(seq 1 10); do
{
echo "Attempt #$n of 10 to install base dependencies:"
case "${{ matrix.distribution }}" in
*ubuntu*|*debian*)
apt-get update
apt-get install -y sudo git passwd
;;
*fedora*|*rockylinux*|*almalinux*)
dnf install -y sudo git passwd findutils # findutils=xargs
;;
*suse*)
zypper --non-interactive refresh
zypper --non-interactive install sudo git shadow findutils # findutils=xargs
;;
*gentoo*)
emerge-webrsync
emerge --noreplace --ask=n sudo dev-vcs/git shadow findutils # findutils=xargs
;;
*archlinux*|*cachyos*|*manjaro*)
pacman -Syu --noconfirm
pacman -S --noconfirm sudo git
;;
esac
} && break || sleep 10
done
# Fix PAM configuration for sudo in containers
# Fix /etc/shadow permissions - common issue in container environments
chmod 640 /etc/shadow || chmod 400 /etc/shadow || true
# Disable problematic PAM modules that commonly fail in RHEL-like containers
sed -i 's/^session.*pam_systemd.so/#&/' /etc/pam.d/sudo || true
sed -i 's/^session.*pam_loginuid.so/#&/' /etc/pam.d/sudo || true
# Ensure proper sudoers configuration
echo 'Defaults !requiretty' >> /etc/sudoers
echo 'Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"' >> /etc/sudoers
- name: Checkout repository
uses: actions/checkout@v6
with:
fetch-depth: 1
submodules: recursive
path: qmk_firmware
- name: Create test user
run: |
# Create a test user for the bootstrap script
useradd -m -s /bin/bash -U testuser
echo 'testuser:testpassword' | chpasswd || true
# Configure passwordless sudo
echo "root ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers # some distros complain about root not being in sudoers
echo "testuser ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers
# Test sudo functionality
sudo -u testuser whoami || echo "Sudo test failed, but continuing..."
- name: Move QMK repository to test user home
run: |
# Add upstream remote to the cloned repository so `qmk doctor` doesn't flag a warning
git -C qmk_firmware remote add upstream https://github.com/qmk/qmk_firmware.git
# Move the QMK repository to the test user's home directory
mv qmk_firmware /home/testuser/qmk_firmware
chown -R testuser:testuser /home/testuser/qmk_firmware
- name: Run bootstrap script
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
# Ensure the bootstrap script can access sudo
sudo -u testuser --preserve-env=GITHUB_TOKEN bash -c "
export CONFIRM=1
export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
cd /home/testuser
bash /home/testuser/qmk_firmware/util/env-bootstrap.sh
"
- name: Install dependencies
run: |
sudo -u testuser bash -c "
/home/testuser/.local/share/uv/tools/qmk/bin/python -m pip install -r /home/testuser/qmk_firmware/requirements.txt
"
- name: Test QMK CLI
run: |
sudo -u testuser bash -c "
export PATH=/home/testuser/.local/bin:\$PATH
cd /home/testuser
qmk setup -y -H /home/testuser/qmk_firmware # setup implies doctor, no need to run it separately
cd /home/testuser/qmk_firmware
qmk mass-compile -j $(nproc) -e DUMP_CI_METADATA=yes -f 'keyboard_name==*onekey*' -km reset -p || touch .failed # Compile a bunch of different platforms
"
cd /home/testuser/qmk_firmware
./util/ci/generate_failure_markdown.sh > $GITHUB_STEP_SUMMARY || true
[ ! -e .failed ] || exit 1
bootstrap-test-macos:
name: Bootstrap (macOS)
needs: prep
if: ${{ github.event_name != 'pull_request' || needs.prep.outputs.any_changed == 'true' }}
strategy:
fail-fast: false
matrix:
os:
- macos-14 # Apple Silicon ARM64
- macos-15 # Apple Silicon ARM64
- macos-15-intel # Intel x64
- macos-26 # Apple Silicon ARM64
runs-on: ${{ matrix.os }}
steps:
- name: Checkout repository
uses: actions/checkout@v6
with:
fetch-depth: 1
submodules: recursive
- name: Run bootstrap script
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
# Add upstream remote to the cloned repository so `qmk doctor` doesn't flag a warning
git remote add upstream https://github.com/qmk/qmk_firmware.git
# Run the bootstrap script
export CONFIRM=1
sh ./util/env-bootstrap.sh
- name: Install dependencies
run: |
$HOME/.local/share/uv/tools/qmk/bin/python -m pip install -r requirements.txt
- name: Test QMK CLI
run: |
# Add QMK CLI to PATH (bootstrap script installs it to ~/.local/bin on macOS)
export PATH="$HOME/.local/bin:$PATH"
qmk setup -y -H . # setup implies doctor, no need to run it separately
qmk mass-compile -j $(sysctl -n hw.ncpu) -e DUMP_CI_METADATA=yes -f 'keyboard_name==*onekey*' -km reset || touch .failed # Compile a bunch of different platforms
./util/ci/generate_failure_markdown.sh > $GITHUB_STEP_SUMMARY || true
[ ! -e .failed ] || exit 1
bootstrap-test-windows:
name: Bootstrap (Windows)
needs: prep
if: ${{ github.event_name != 'pull_request' || needs.prep.outputs.any_changed == 'true' }}
strategy:
fail-fast: false
matrix:
msys-variant:
- mingw64
- clang64
- ucrt64
runs-on: windows-latest
defaults:
run:
shell: msys2 {0}
steps:
- name: Install MSYS2
uses: msys2/setup-msys2@v2
with:
msystem: ${{ matrix.msys-variant }}
pacboy: >-
git:
- name: Checkout repository
uses: actions/checkout@v6
with:
fetch-depth: 1
submodules: recursive
- name: Run bootstrap script
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
# Add upstream remote to the cloned repository so `qmk doctor` doesn't flag a warning
git remote add upstream https://github.com/qmk/qmk_firmware.git
# Run the bootstrap script
export CONFIRM=1
sh ./util/env-bootstrap.sh
- name: Install dependencies
run: |
/opt/uv/tools/qmk/Scripts/python -m pip install -r requirements.txt
- name: Test QMK CLI
run: |
# Add QMK CLI to PATH (bootstrap script installs it to /opt/uv/tools/bin on Windows MSYS2)
export PATH="/opt/uv/tools/bin:$PATH"
qmk setup -y -H . # setup implies doctor, no need to run it separately
qmk mass-compile -j $(nproc) -e DUMP_CI_METADATA=yes -f 'keyboard_name==*onekey*' -km reset || touch .failed # Compile a bunch of different platforms
./util/ci/generate_failure_markdown.sh > $GITHUB_STEP_SUMMARY || true
[ ! -e .failed ] || exit 1

View File

@@ -1,138 +0,0 @@
name: CI Build Major Branch
permissions:
contents: read
actions: write
on:
push:
branches: [master, develop, xap]
workflow_dispatch:
inputs:
branch:
type: choice
description: "Branch to build"
options: [master, develop, xap]
env:
# https://docs.github.com/en/actions/learn-github-actions/usage-limits-billing-and-administration#usage-limits
# We've decreased it from 20 to 15 to allow for other GHA to run unimpeded
CONCURRENT_JOBS: 15
# Ensure we only have one build running at a time, cancelling any active builds if a new commit is pushed to the respective branch
concurrency:
group: ci_build-${{ github.event.inputs.branch || github.ref_name }}
cancel-in-progress: true
jobs:
determine_concurrency:
name: "Determine concurrency"
if: github.repository == 'qmk/qmk_firmware'
runs-on: ubuntu-latest
container: ghcr.io/qmk/qmk_cli
outputs:
keymaps: ${{ steps.generate_slice_length.outputs.keymaps }}
slice_length: ${{ steps.generate_slice_length.outputs.slice_length }}
steps:
- name: Disable safe.directory check
run: |
git config --global --add safe.directory '*'
- name: Checkout QMK Firmware
uses: actions/checkout@v6
- name: Install dependencies
run: pip3 install -r requirements-dev.txt
- name: Determine concurrency
id: generate_slice_length
shell: 'bash {0}'
run: |
targets=()
target_count=0
for target in "default" "xap"; do
count=$(qmk find -km $target 2>/dev/null | wc -l)
if [ $count -gt 0 ]; then
target_count=$(($target_count + $count))
targets+=($target)
fi
done
keymaps=$(jq -c -n '$ARGS.positional' --args "${targets[@]}")
slice_length=$((target_count / ($CONCURRENT_JOBS - 1))) # Err on the side of caution
echo "keymaps=$keymaps" >> $GITHUB_OUTPUT
echo "slice_length=$slice_length" >> $GITHUB_OUTPUT
build_targets:
name: "Compile keymap ${{ matrix.keymap }}"
needs: determine_concurrency
strategy:
fail-fast: false
matrix:
keymap: ${{ fromJson(needs.determine_concurrency.outputs.keymaps) }}
uses: ./.github/workflows/ci_build_major_branch_keymap.yml
with:
branch: ${{ inputs.branch || github.ref_name }}
keymap: ${{ matrix.keymap }}
slice_length: ${{ needs.determine_concurrency.outputs.slice_length }}
secrets: inherit
rollup_tasks:
name: "Consolidation"
needs: build_targets
runs-on: ubuntu-latest
steps:
- name: Disable safe.directory check
run: |
git config --global --add safe.directory '*'
- name: Checkout QMK Firmware
uses: actions/checkout@v6
with:
fetch-depth: 0
- name: Download firmwares
uses: actions/download-artifact@v8
with:
pattern: firmware-*
path: .
merge-multiple: true
- name: Generate index page
run: |
python3 -m pip install -r ./util/ci/requirements.txt
./util/ci/index_generator.py > index.html
./util/ci/firmware_list_generator.py > firmware_list.json
- name: Upload to https://ci.qmk.fm/${{ inputs.branch || github.ref_name }}/${{ github.sha }}
uses: jakejarvis/s3-sync-action@master
with:
args: --acl public-read --follow-symlinks --delete --exclude '*' --include 'index.html' --include 'firmware_list.json' --include '*.hex' --include '*.bin' --include '*.uf2'
env:
AWS_S3_BUCKET: ${{ vars.CI_QMK_FM_SPACES_BUCKET }}
AWS_ACCESS_KEY_ID: ${{ secrets.CI_QMK_FM_SPACES_KEY }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.CI_QMK_FM_SPACES_SECRET }}
AWS_REGION: ${{ vars.CI_QMK_FM_SPACES_REGION }}
AWS_S3_ENDPOINT: ${{ vars.CI_QMK_FM_SPACES_ENDPOINT }}
SOURCE_DIR: .
DEST_DIR: ${{ inputs.branch || github.ref_name }}/${{ github.sha }}
- name: Upload to https://ci.qmk.fm/${{ inputs.branch || github.ref_name }}/latest
uses: jakejarvis/s3-sync-action@master
with:
args: --acl public-read --follow-symlinks --delete --exclude '*' --include 'index.html' --include 'firmware_list.json' --include '*.hex' --include '*.bin' --include '*.uf2'
env:
AWS_S3_BUCKET: ${{ vars.CI_QMK_FM_SPACES_BUCKET }}
AWS_ACCESS_KEY_ID: ${{ secrets.CI_QMK_FM_SPACES_KEY }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.CI_QMK_FM_SPACES_SECRET }}
AWS_REGION: ${{ vars.CI_QMK_FM_SPACES_REGION }}
AWS_S3_ENDPOINT: ${{ vars.CI_QMK_FM_SPACES_ENDPOINT }}
SOURCE_DIR: .
DEST_DIR: ${{ inputs.branch || github.ref_name }}/latest
- name: Fail build if needed
run: |
# Exit with failure if the compilation stage failed
[ ! -e .failed ] || exit 1

View File

@@ -1,211 +0,0 @@
name: CI Build Major Branch Keymap
permissions:
contents: read
actions: write
on:
workflow_call:
inputs:
branch:
type: string
required: true
keymap:
type: string
required: true
slice_length:
type: string
required: true
jobs:
generate_targets:
name: "Generate targets (${{ inputs.keymap }})"
runs-on: ubuntu-latest
container: ghcr.io/qmk/qmk_cli
outputs:
targets: ${{ steps.generate_targets.outputs.targets }}
steps:
- name: Disable safe.directory check
run: |
git config --global --add safe.directory '*'
- name: Checkout QMK Firmware
uses: actions/checkout@v6
- name: Install dependencies
run: pip3 install -r requirements-dev.txt
- name: Generate build targets
shell: 'bash {0}'
id: generate_targets
run: |
{ # Intentionally use `shuf` here so that we share manufacturers across all build groups -- some have a lot of ARM-based boards which inherently take longer
counter=0
echo -n '{'
qmk find -km ${{ inputs.keymap }} 2>/dev/null | sort | uniq | shuf --random-source=<(openssl enc -aes-256-ctr -pass pass:qmk -nosalt </dev/zero 2>/dev/null) | xargs -L${{ inputs.slice_length }} | while IFS=$'\n' read target ; do
if [ $counter -gt 0 ]; then
echo -n ','
fi
counter=$((counter+1))
printf "\"group-%02d\":{" $counter
echo -n '"targets":"'
echo $target | tr ' ' '\n' | sort | uniq | xargs echo -n
echo -n '"}'
done
echo -n '}'
} | sed -e 's@\n@@g' > targets.json
# Output the target keys as a variable
echo "targets=$(jq -c 'keys' targets.json)" >> $GITHUB_OUTPUT
- name: Upload targets json
uses: actions/upload-artifact@v7
with:
name: targets-${{ inputs.keymap }}
path: targets.json
build_targets:
name: "Compile ${{ matrix.target }} (${{ inputs.keymap }})"
needs: generate_targets
runs-on: ubuntu-latest
container: ghcr.io/qmk/qmk_cli
continue-on-error: true
env:
CCACHE_CONFIGPATH: ~/.cache
strategy:
matrix:
target: ${{ fromJson(needs.generate_targets.outputs.targets) }}
steps:
- name: Disable safe.directory check
run: |
git config --global --add safe.directory '*'
- name: Checkout QMK Firmware
uses: actions/checkout@v6
with:
submodules: recursive
- name: Install dependencies
run: pip3 install -r requirements-dev.txt
- name: Get target definitions
uses: actions/download-artifact@v8
with:
name: targets-${{ inputs.keymap }}
path: .
- name: Dump targets
run: |
jq -r '.["${{ matrix.target }}"].targets' targets.json | tr ' ' '\n' | sort
- name: Restore Cache
id: cache
uses: actions/cache/restore@v5
with:
path: ${{ env.CCACHE_CONFIGPATH }}
key: compile-${{ inputs.keymap }}-${{ matrix.target }}
- name: Build targets
continue-on-error: true
run: |
targets=$(jq -r '.["${{ matrix.target }}"].targets' targets.json | tr ' ' '\n' | sort)
if [ -z "${targets}" ]; then
echo "Zero build targets detected"
exit 0
fi
qmk mass-compile -t -j $(nproc) -e DUMP_CI_METADATA=yes -e USE_CCACHE=yes $targets || touch .failed
- name: Dump ccache stats
run: |
ccache -s
# Delete the old cache on hit to emulate a cache update. See https://github.com/actions/cache/issues/342.
- name: Delete old cache
env:
GH_TOKEN: ${{ github.token }}
if: steps.cache.outputs.cache-hit
run: |
count=$(gh cache list --ref ${{ github.ref }} --key ${{ steps.cache.outputs.cache-primary-key }} --json id | jq length)
if [ $count -gt 0 ]; then
gh cache delete --ref ${{ github.ref }} ${{ steps.cache.outputs.cache-primary-key }}
fi
- name: Save Cache
uses: actions/cache/save@v5
with:
path: ${{ env.CCACHE_CONFIGPATH }}
key: compile-${{ inputs.keymap }}-${{ matrix.target }}
- name: Upload binaries
uses: actions/upload-artifact@v7
with:
name: firmware-${{ inputs.keymap }}-${{ matrix.target }}
if-no-files-found: ignore
path: |
*.bin
*.hex
*.uf2
.build/failed.*
.failed
- name: Fail build if any group failed
run: |
# Exit with failure if the compilation stage failed
[ ! -f .failed ] || exit 1
repack_firmware:
if: always()
name: "Repack artifacts"
needs: build_targets
runs-on: ubuntu-latest
steps:
- name: Checkout QMK Firmware
uses: actions/checkout@v6
- name: Download firmwares
uses: actions/download-artifact@v8
with:
pattern: firmware-${{ inputs.keymap }}-*
path: .
merge-multiple: true
- name: Upload all firmwares
uses: actions/upload-artifact@v7
with:
name: firmware-${{ inputs.keymap }}
if-no-files-found: ignore
path: |
*.bin
*.hex
*.uf2
.build/failed.*
.failed
- name: Generate output logs
run: |
# Generate the step summary markdown
./util/ci/generate_failure_markdown.sh > $GITHUB_STEP_SUMMARY || true
# Truncate to a maximum of 1MB to deal with GitHub workflow limit
truncate --size='<960K' $GITHUB_STEP_SUMMARY || true
- name: Delete temporary build artifacts
uses: geekyeggo/delete-artifact@v6
with:
name: |
firmware-${{ inputs.keymap }}-*
targets-${{ inputs.keymap }}
- name: 'CI Discord Notification'
if: always() && !cancelled()
working-directory: util/ci/
env:
DISCORD_WEBHOOK: ${{ secrets.CI_DISCORD_WEBHOOK }}
run: |
python3 -m pip install -r requirements.txt
python3 ./discord-results.py --branch ${{ inputs.branch || github.ref_name }} --sha $(git rev-parse HEAD) --keymap ${{ inputs.keymap }} --url ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}

View File

@@ -1,35 +0,0 @@
name: CLI CI
permissions:
contents: read
on:
push:
branches:
- master
- develop
pull_request:
paths:
- 'lib/python/**'
- 'requirements.txt'
- '.github/workflows/cli.yml'
jobs:
test:
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@v6
with:
submodules: recursive
- name: Install dependencies
run: pip3 install -r requirements-dev.txt
- name: Run tests
run: qmk pytest

View File

@@ -1,34 +0,0 @@
name: Generate Develop Docs
permissions:
contents: write
on:
push:
branches:
- develop
paths:
- 'builddefs/docsgen/**'
- 'tmk_core/**'
- 'quantum/**'
- 'platforms/**'
- 'docs/**'
- '.github/workflows/docs.yml'
jobs:
generate:
runs-on: ubuntu-latest
steps:
- name: Deploy Develop
if: ${{ github.repository == 'qmk/qmk_firmware' }}
uses: actions/github-script@v9
with:
github-token: ${{ secrets.QMK_BOT_TOKEN }}
script: |
const result = await github.rest.actions.createWorkflowDispatch({
owner: 'qmk',
repo: 'qmk_docs_devel',
workflow_id: 'develop.yml',
ref: 'main',
})

View File

@@ -1,37 +0,0 @@
name: Update develop after master merge
permissions:
contents: write
on:
push:
branches:
- master
jobs:
develop_update:
runs-on: ubuntu-latest
if: github.repository == 'qmk/qmk_firmware'
steps:
- uses: actions/checkout@v6
with:
token: ${{ secrets.QMK_BOT_TOKEN }}
fetch-depth: 0
- name: Disable automatic eol conversion
run: |
echo "* -text" > .git/info/attributes
- name: Checkout develop
run: |
git fetch origin master develop
git checkout develop
- name: Update develop from master
run: |
git config --global user.name "QMK Bot"
git config --global user.email "hello@qmk.fm"
git merge origin/master
git push origin develop

View File

@@ -1,66 +0,0 @@
name: Generate Docs
permissions:
contents: write
on:
push:
branches:
- master
paths:
- 'builddefs/docsgen/**'
- 'tmk_core/**'
- 'quantum/**'
- 'platforms/**'
- 'docs/**'
- '.github/workflows/docs.yml'
pull_request:
paths:
- 'builddefs/docsgen/**'
- 'docs/**'
- '.github/workflows/docs.yml'
defaults:
run:
shell: bash
jobs:
generate:
runs-on: ubuntu-latest
container: ghcr.io/qmk/qmk_cli
steps:
- uses: actions/checkout@v6
with:
fetch-depth: 1
- name: Install dependencies
run: pip3 install -r requirements-dev.txt
- name: Install nvm
run: |
touch $HOME/.bashrc
wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash
- name: Install node
run: |
source $HOME/.bashrc
nvm install 20
nvm use 20
corepack enable
- name: Build docs
run: |
source $HOME/.bashrc
nvm use 20
qmk --verbose generate-docs
- name: Deploy
if: ${{ github.event_name == 'push' && github.repository == 'qmk/qmk_firmware' }}
uses: JamesIves/github-pages-deploy-action@v4.8.0
with:
token: ${{ secrets.GITHUB_TOKEN }}
branch: gh-pages
folder: .build/docs
git-config-name: QMK Bot
git-config-email: hello@qmk.fm

View File

@@ -1,43 +0,0 @@
name: Update feature branches after develop merge
permissions:
contents: write
on:
push:
branches:
- develop
jobs:
feature_branch_update:
runs-on: ubuntu-latest
if: github.repository == 'qmk/qmk_firmware'
strategy:
matrix:
branch:
- xap
- riot
steps:
- uses: actions/checkout@v6
with:
token: ${{ secrets.QMK_BOT_TOKEN }}
fetch-depth: 0
- name: Disable automatic eol conversion
run: |
echo "* -text" > .git/info/attributes
- name: Checkout branch
run: |
git fetch origin develop ${{ matrix.branch }}
git checkout ${{ matrix.branch }}
- name: Update branch from develop
run: |
git config --global user.name "QMK Bot"
git config --global user.email "hello@qmk.fm"
git merge origin/develop
git push origin ${{ matrix.branch }}

View File

@@ -1,58 +0,0 @@
name: PR Lint Format
permissions:
contents: read
on:
pull_request:
paths:
- 'drivers/**'
- 'lib/arm_atsam/**'
- 'lib/lib8tion/**'
- 'lib/python/**'
- 'modules/**'
- '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@v6
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@v47
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,59 +0,0 @@
name: Lint Format
permissions:
contents: read
on:
push:
branches:
- master
- develop
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@v6
with:
fetch-depth: 0
- name: Disable automatic eol conversion
run: |
echo "* -text" > .git/info/attributes
- name: Install dependencies
run: |
pip3 install -r requirements-dev.txt
- name: Run qmk formatters
shell: 'bash {0}'
run: |
qmk format-c -a
qmk format-python -a
qmk format-text -a
git diff
- uses: rlespinasse/github-slug-action@v5
- name: Become QMK Bot
run: |
git config user.name 'QMK Bot'
git config user.email 'hello@qmk.fm'
- name: Create Pull Request
uses: peter-evans/create-pull-request@v8
if: ${{ github.repository == 'qmk/qmk_firmware'}}
with:
token: ${{ secrets.QMK_BOT_TOKEN }}
delete-branch: true
branch: bugfix/format_${{ env.GITHUB_REF_SLUG }}
author: QMK Bot <hello@qmk.fm>
committer: QMK Bot <hello@qmk.fm>
commit-message: Format code according to conventions
title: '[CI] Format code according to conventions'

View File

@@ -1,13 +0,0 @@
name: "Pull Request Labeler"
on:
- pull_request_target
jobs:
triage:
permissions:
contents: read
pull-requests: write
runs-on: ubuntu-latest
steps:
- uses: actions/labeler@v6

View File

@@ -1,98 +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@v6
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@v47
with:
use_rest_api: true
- name: Print git 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 --strict --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: Reset git repo
if: always()
shell: 'bash {0}'
run: |
git reset --hard
git clean -xfd
- name: Verify keyboard targets
if: always()
shell: 'bash {0}'
run: |
qmk ci-validate-keyboard-targets
- name: Verify keyboard aliases
if: always()
shell: 'bash {0}'
run: |
qmk ci-validate-aliases

View File

@@ -1,42 +0,0 @@
name: PR Regenerate Files
permissions:
contents: read
on:
pull_request:
paths:
- 'data/constants/**'
- 'lib/python/**'
- 'quantum/rgblight/rgblight_breathe_table.h'
- 'quantum/keycodes.h'
- 'quantum/keymap_extras/**'
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@v6
- name: Install dependencies
run: pip3 install -r requirements-dev.txt
- 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,49 +0,0 @@
name: Regenerate Files
permissions:
contents: write
on:
push:
branches:
- master
- develop
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@v6
- name: Install dependencies
run: pip3 install -r requirements-dev.txt
- name: Run qmk generators
run: |
util/regen.sh
git diff
- uses: rlespinasse/github-slug-action@v5
- name: Become QMK Bot
run: |
git config user.name 'QMK Bot'
git config user.email 'hello@qmk.fm'
- name: Create Pull Request
uses: peter-evans/create-pull-request@v8
if: ${{ github.repository == 'qmk/qmk_firmware'}}
with:
token: ${{ secrets.QMK_BOT_TOKEN }}
delete-branch: true
branch: bugfix/regen_${{ env.GITHUB_REF_SLUG }}
author: QMK Bot <hello@qmk.fm>
committer: QMK Bot <hello@qmk.fm>
commit-message: Regenerate Files
title: '[CI] Regenerate Files'

View File

@@ -1,66 +0,0 @@
name: 'Close stale issues and PRs'
permissions:
issues: write
pull-requests: write
actions: write
on:
schedule:
- cron: '30 1 * * *'
workflow_dispatch:
jobs:
stale:
runs-on: ubuntu-latest
steps:
- uses: actions/stale@main
with:
repo-token: ${{ secrets.GITHUB_TOKEN }}
remove-stale-when-updated: true
exempt-draft-pr: true
ascending: true
operations-per-run: 150
stale-issue-label: stale
days-before-issue-stale: 90
days-before-issue-close: 30
exempt-issue-labels: bug,in progress,on hold,discussion,to do
stale-issue-message: >
This issue has been automatically marked as stale because it has not had activity in the
last 90 days. It will be closed in the next 30 days unless it is tagged properly or other activity
occurs.
For maintainers: Please label with `bug`, `in progress`, `on hold`, `discussion` or `to do` to prevent
the issue from being re-flagged.
close-issue-message: >
This issue has been automatically closed because it has not had activity in the last 30 days.
If this issue is still valid, re-open the issue and let us know.
// [stale-action-closed]
stale-pr-label: stale
days-before-pr-stale: 45
days-before-pr-close: 30
exempt-pr-labels: bug,awaiting review,breaking_change,in progress,on hold,needs-core-wireless,crippled-firmware
stale-pr-message: >
Thank you for your contribution!
This pull request has been automatically marked as stale because it has not had
activity in the last 45 days. It will be closed in 30 days if no further activity occurs.
Please feel free to give a status update now, or re-open when it's ready.
For maintainers: Please label with `bug`, `awaiting review`, `breaking_change`, `in progress`, or `on hold`
to prevent the issue from being re-flagged.
close-pr-message: >
Thank you for your contribution!
This pull request has been automatically closed because it has not had activity in the last 30 days.
Please feel free to give a status update now, ping for review, or re-open when it's ready.
// [stale-action-closed]

View File

@@ -1,38 +0,0 @@
name: Unit Tests
permissions:
contents: read
on:
push:
branches:
- master
- develop
pull_request:
paths:
- 'builddefs/**'
- '!builddefs/docsgen/**'
- '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@v6
with:
submodules: recursive
- name: Install dependencies
run: pip3 install -r requirements-dev.txt
- name: Run tests
run: qmk test-c -j $(nproc)

138
.gitignore vendored
View File

@@ -1,130 +1,34 @@
# Junk files
*.bak
*.swp
*~
.DS_Store
._*
# Merge files
*.orig
*.rej
# Build artifacts
.clang_complete
.build/
.dep
*.o
*.eep
*.elf
*.hex
!util/bootloader.hex
!quantum/tools/eeprom_reset.hex
*.log
*.lss
*.lst
*.map
*.o
*.a
*.so
*.dylib
*.dll
*.la
*.stackdump
*.sym
index.html
firmware_list.json
# 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
.DS_STORE
# Eclipse/PyCharm/Other IDE Settings
*.iml
.browse.VC.db*
.cproject
.idea
.idea/
.project
.settings/
# ?
.dep
.history/
build/
cmake-build-debug
CMakeLists.txt
*.pdf
*.zip
.env
.envrc
# Let these ones be user specific, since we have so many different configurations
*.code-workspace
.idea
.browse.VC.db*
*.stackdump
util/Win_Check_Output.txt
.vscode
.stfolder
.tags
.vscode/c_cpp_properties.json
.vscode/ipch/
.vscode/last.sql
.vscode/launch.json
.vscode/tasks.json
.vscode/temp.sql
tags
# Ignore image/font files
*.bmp
*.wbmp
*.gif
*.jpg
*.jpeg
*.png
*.apng
*.mng
*.svg
*.webp
*.webm
*.avi
*.mp4
*.mpeg
*.ttf
*.otf
# Un-ignore limited image file formats in docs
!docs/public/**.gif
!docs/public/**.jpg
!docs/public/**.jpeg
!docs/public/**.png
# Things Travis sees
/.vs
id_rsa_*
secrets.tar
# 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/via/*
/keyboards/**/keymaps/vial/*

27
.gitmodules vendored
View File

@@ -1,27 +1,12 @@
[submodule "lib/chibios"]
path = lib/chibios
url = https://github.com/qmk/ChibiOS
branch = master
url = https://github.com/ChibiOS/ChibiOS.git
[submodule "lib/chibios-contrib"]
path = lib/chibios-contrib
url = https://github.com/qmk/ChibiOS-Contrib
branch = master
url = https://github.com/ChibiOS/ChibiOS-Contrib.git
[submodule "lib/ugfx"]
path = lib/ugfx
url = https://bitbucket.org/Tectu/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

32
.travis.yml Normal file
View File

@@ -0,0 +1,32 @@
os: linux
dist: trusty
sudo: required
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=
before_install:
- wget http://www.atmel.com/images/avr8-gnu-toolchain-3.5.4.1709-linux.any.x86_64.tar.gz
install:
- tar -zxf avr8-gnu-toolchain-3.5.4.1709-linux.any.x86_64.tar.gz
- export PATH="$PATH:$TRAVIS_BUILD_DIR/avr8-gnu-toolchain-linux_x86_64/bin"
before_script:
- avr-gcc --version
script:
- make test AUTOGEN=false
- bash util/travis_build.sh
addons:
apt:
packages:
- dfu-programmer
- pandoc
- gcc-arm-none-eabi
- binutils-arm-none-eabi
- libnewlib-arm-none-eabi
- diffutils
after_success:
bash util/travis_compiled_push.sh

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"
]
}

57
.vscode/settings.json vendored
View File

@@ -1,57 +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": {
// QMK Filetypes
"keyboard.json": "jsonc",
"info.json": "jsonc",
"keymap.json": "jsonc",
"qmk.json": "jsonc",
"qmk_module.json": "jsonc",
// Standard filetypes
"*.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"],
"json.schemas": [
{
"fileMatch": ["qmk.json"],
"url": "./data/schemas/user_repo_v1_1.jsonschema"
},
{
"fileMatch": ["qmk_module.json"],
"url": "./data/schemas/community_module.jsonschema"
},
{
"fileMatch": ["keyboard.json", "info.json"],
"url": "./data/schemas/keyboard.jsonschema"
},
{
"fileMatch": ["keymap.json"],
"url": "./data/schemas/keymap.jsonschema"
}
]
}

29
Dockerfile Normal file
View File

@@ -0,0 +1,29 @@
FROM debian:jessie
MAINTAINER Erik Dasque <erik@frenchguys.com>
RUN apt-get update
RUN apt-get install --no-install-recommends -y build-essential \
gcc \
unzip \
wget \
zip \
gcc-avr \
binutils-avr \
avr-libc \
dfu-programmer \
dfu-util \
gcc-arm-none-eabi \
binutils-arm-none-eabi \
libnewlib-arm-none-eabi \
git
RUN apt-get clean
RUN rm -rf /var/lib/apt/lists/*
ENV keyboard=ergodox
ENV subproject=ez
ENV keymap=default
VOLUME /qmk
WORKDIR /qmk
CMD make clean ; make keyboard=${keyboard} subproject=${subproject} keymap=${keymap}

266
Doxyfile
View File

@@ -1,266 +0,0 @@
# Doxyfile 1.8.14
# This file describes the settings to be used by the documentation system
# doxygen (www.doxygen.org) for qmk_firmware (github.com/qmk/qmk_firmware)
#
# All text after a double hash (##) is considered a comment and is placed in
# front of the TAG it is preceding.
#
# All text after a single hash (#) is considered a comment and will be ignored.
# The format is:
# TAG = value [value, ...]
# For lists, items can also be appended using:
# TAG += value [value, ...]
# Values that contain spaces should be placed between quotes (\" \").
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
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
ALLOW_UNICODE_NAMES = NO
OUTPUT_LANGUAGE = English
BRIEF_MEMBER_DESC = YES
REPEAT_BRIEF = YES
ABBREVIATE_BRIEF = "The $name class" \
"The $name widget" \
"The $name file" \
is \
provides \
specifies \
contains \
represents \
a \
an \
the
ALWAYS_DETAILED_SEC = NO
INLINE_INHERITED_MEMB = NO
FULL_PATH_NAMES = YES
STRIP_FROM_PATH =
STRIP_FROM_INC_PATH =
SHORT_NAMES = NO
JAVADOC_AUTOBRIEF = NO
QT_AUTOBRIEF = NO
MULTILINE_CPP_IS_BRIEF = NO
INHERIT_DOCS = YES
SEPARATE_MEMBER_PAGES = NO
TAB_SIZE = 4
ALIASES =
TCL_SUBST =
OPTIMIZE_OUTPUT_FOR_C = YES
OPTIMIZE_OUTPUT_JAVA = NO
OPTIMIZE_FOR_FORTRAN = NO
OPTIMIZE_OUTPUT_VHDL = NO
EXTENSION_MAPPING =
MARKDOWN_SUPPORT = YES
TOC_INCLUDE_HEADINGS = 2
AUTOLINK_SUPPORT = YES
BUILTIN_STL_SUPPORT = NO
CPP_CLI_SUPPORT = NO
SIP_SUPPORT = NO
IDL_PROPERTY_SUPPORT = YES
DISTRIBUTE_GROUP_DOC = NO
GROUP_NESTED_COMPOUNDS = NO
SUBGROUPING = YES
INLINE_GROUPED_CLASSES = NO
INLINE_SIMPLE_STRUCTS = NO
TYPEDEF_HIDES_STRUCT = NO
LOOKUP_CACHE_SIZE = 0
#---------------------------------------------------------------------------
# Build related configuration options
#---------------------------------------------------------------------------
EXTRACT_ALL = NO
EXTRACT_PRIVATE = NO
EXTRACT_PACKAGE = NO
EXTRACT_STATIC = NO
EXTRACT_LOCAL_CLASSES = YES
EXTRACT_LOCAL_METHODS = NO
EXTRACT_ANON_NSPACES = NO
HIDE_UNDOC_MEMBERS = NO
HIDE_UNDOC_CLASSES = NO
HIDE_FRIEND_COMPOUNDS = NO
HIDE_IN_BODY_DOCS = NO
INTERNAL_DOCS = NO
CASE_SENSE_NAMES = NO
HIDE_SCOPE_NAMES = YES
HIDE_COMPOUND_REFERENCE= NO
SHOW_INCLUDE_FILES = YES
SHOW_GROUPED_MEMB_INC = NO
FORCE_LOCAL_INCLUDES = NO
INLINE_INFO = YES
SORT_MEMBER_DOCS = YES
SORT_BRIEF_DOCS = NO
SORT_MEMBERS_CTORS_1ST = NO
SORT_GROUP_NAMES = NO
SORT_BY_SCOPE_NAME = NO
STRICT_PROTO_MATCHING = NO
GENERATE_TODOLIST = YES
GENERATE_TESTLIST = YES
GENERATE_BUGLIST = YES
GENERATE_DEPRECATEDLIST= YES
ENABLED_SECTIONS =
MAX_INITIALIZER_LINES = 30
SHOW_USED_FILES = YES
SHOW_FILES = YES
SHOW_NAMESPACES = YES
FILE_VERSION_FILTER =
LAYOUT_FILE =
CITE_BIB_FILES =
#---------------------------------------------------------------------------
# Configuration options related to warning and progress messages
#---------------------------------------------------------------------------
QUIET = NO
WARNINGS = YES
WARN_IF_UNDOCUMENTED = YES
WARN_IF_DOC_ERROR = YES
WARN_NO_PARAMDOC = NO
WARN_AS_ERROR = NO
WARN_FORMAT = "$file:$line: $text"
WARN_LOGFILE =
#---------------------------------------------------------------------------
# Configuration options related to the input files
#---------------------------------------------------------------------------
INPUT = tmk_core quantum drivers
INPUT_ENCODING = UTF-8
FILE_PATTERNS = *.c \
*.cc \
*.cxx \
*.cpp \
*.c++ \
*.h \
*.hh \
*.hxx \
*.hpp \
*.h++
RECURSIVE = YES
EXCLUDE =
EXCLUDE_SYMLINKS = NO
EXCLUDE_PATTERNS =
EXCLUDE_SYMBOLS =
EXAMPLE_PATH =
EXAMPLE_PATTERNS = *
EXAMPLE_RECURSIVE = NO
IMAGE_PATH =
INPUT_FILTER =
FILTER_PATTERNS =
FILTER_SOURCE_FILES = NO
FILTER_SOURCE_PATTERNS =
USE_MDFILE_AS_MAINPAGE =
#---------------------------------------------------------------------------
# Configuration options related to source browsing
#---------------------------------------------------------------------------
SOURCE_BROWSER = YES
INLINE_SOURCES = NO
STRIP_CODE_COMMENTS = YES
REFERENCED_BY_RELATION = NO
REFERENCES_RELATION = NO
REFERENCES_LINK_SOURCE = YES
SOURCE_TOOLTIPS = YES
USE_HTAGS = NO
VERBATIM_HEADERS = YES
#---------------------------------------------------------------------------
# Configuration options related to the alphabetical class index
#---------------------------------------------------------------------------
ALPHABETICAL_INDEX = YES
COLS_IN_ALPHA_INDEX = 5
IGNORE_PREFIX =
#---------------------------------------------------------------------------
# Configuration options related to disabled outputs
#---------------------------------------------------------------------------
GENERATE_HTML = NO
GENERATE_LATEX = NO
GENERATE_RTF = NO
GENERATE_MAN = NO
GENERATE_DOCBOOK = NO
GENERATE_AUTOGEN_DEF = NO
GENERATE_PERLMOD = NO
#---------------------------------------------------------------------------
# Configuration options related to the XML output
#---------------------------------------------------------------------------
GENERATE_XML = YES
XML_OUTPUT = xml
XML_PROGRAMLISTING = YES
#---------------------------------------------------------------------------
# Configuration options related to the preprocessor
#---------------------------------------------------------------------------
ENABLE_PREPROCESSING = YES
MACRO_EXPANSION = NO
EXPAND_ONLY_PREDEF = NO
SEARCH_INCLUDES = YES
INCLUDE_PATH =
INCLUDE_FILE_PATTERNS =
PREDEFINED = __DOXYGEN__ PROGMEM
EXPAND_AS_DEFINED =
SKIP_FUNCTION_MACROS = YES
#---------------------------------------------------------------------------
# Configuration options related to external references
#---------------------------------------------------------------------------
TAGFILES =
GENERATE_TAGFILE =
ALLEXTERNALS = NO
EXTERNAL_GROUPS = YES
EXTERNAL_PAGES = YES
PERL_PATH = /usr/bin/perl
#---------------------------------------------------------------------------
# Configuration options related to the dot tool
#---------------------------------------------------------------------------
CLASS_DIAGRAMS = YES
MSCGEN_PATH =
DIA_PATH =
HIDE_UNDOC_RELATIONS = YES
HAVE_DOT = NO
DOT_NUM_THREADS = 0
DOT_FONTNAME = Helvetica
DOT_FONTSIZE = 10
DOT_FONTPATH =
CLASS_GRAPH = YES
COLLABORATION_GRAPH = YES
GROUP_GRAPHS = YES
UML_LOOK = NO
UML_LIMIT_NUM_FIELDS = 10
TEMPLATE_RELATIONS = NO
INCLUDE_GRAPH = YES
INCLUDED_BY_GRAPH = YES
CALL_GRAPH = NO
CALLER_GRAPH = NO
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_GRAPH_MAX_NODES = 50
MAX_DOT_GRAPH_DEPTH = 0
DOT_TRANSPARENT = NO
DOT_MULTI_TARGETS = NO
GENERATE_LEGEND = YES
DOT_CLEANUP = YES

548
Makefile
View File

@@ -19,59 +19,119 @@ 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
ifneq ($(QMK_VERSION),)
$(info QMK Firmware $(QMK_VERSION))
endif
endif
# Determine which qmk cli to use
QMK_BIN := qmk
# Try to determine userspace from qmk config, if set. Handle direct query on qmk_cli>=1.1.7
# falling back to legacy method of only supporting user.overlay_dir config
# sort is used to buffer 'qmk env' output and avoid BrokenPipeError errors
export override QMK_USERSPACE := $(shell \
$(QMK_BIN) env | sort | grep -q QMK_USERSPACE \
&& $(QMK_BIN) env QMK_USERSPACE \
|| $(QMK_BIN) config -ro user.overlay_dir | cut -d= -f2 | sed -e 's@^None$$@@g')
# 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
include $(BUILDDEFS_PATH)/support.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
.DEFAULT_GOAL := all:all
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
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
# Only consider folders with makefiles, to prevent errors in case there are extra folders
KEYBOARDS := $(notdir $(patsubst %/Makefile,%,$(wildcard $(ROOT_DIR)/keyboards/*/Makefile)))
#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 sub
SUBPROJECT := $(sub)
endif
ifdef subproject
SUBPROJECT := $(subproject)
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
ifneq ($(KEYMAP),)
ifeq ($(SUBPROJECT),)
# Inside a keymap folder, just build the keymap, with the
# default subproject
.DEFAULT_GOAL := $(KEYBOARD)-$(KEYMAP)
else
# Inside a subproject keyamp folder, build the keymap
# for that subproject
.DEFAULT_GOAL := $(KEYBOARD)-$(SUBPROJECT)-$(KEYMAP)
endif
else ifneq ($(SUBPROJECT),)
# Inside a subproject folder, build all keymaps for that subproject
.DEFAULT_GOAL := $(KEYBOARD)-$(SUBPROJECT)-allkm
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)-allsp-allkm
endif
# Compare the start of the RULE variable with the first argument($1)
# If the rules equals $1 or starts with $1:, RULE_FOUND is set to true
# If the rules equals $1 or starts with $1-, RULE_FOUND is set to true
# and $1 is removed from the RULE variable
# Otherwise the RULE_FOUND variable is set to false, and RULE left as it was
# The function is a bit tricky, since there's no built in $(startswith) function
@@ -80,10 +140,10 @@ define COMPARE_AND_REMOVE_FROM_RULE_HELPER
RULE:=
RULE_FOUND := true
else
STARTCOLON_REMOVED=$$(subst START$1:,,START$$(RULE))
ifneq ($$(STARTCOLON_REMOVED),START$$(RULE))
STARTDASH_REMOVED=$$(subst START$1-,,START$$(RULE))
ifneq ($$(STARTDASH_REMOVED),START$$(RULE))
RULE_FOUND := true
RULE := $$(STARTCOLON_REMOVED)
RULE := $$(STARTDASH_REMOVED)
else
RULE_FOUND := false
endif
@@ -94,20 +154,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 :=
@@ -117,29 +211,6 @@ endef
# Make it easier to call TRY_TO_MATCH_RULE_FROM_LIST
TRY_TO_MATCH_RULE_FROM_LIST = $(eval $(call TRY_TO_MATCH_RULE_FROM_LIST_HELPER,$1))$(RULE_FOUND)
# As TRY_TO_MATCH_RULE_FROM_LIST_HELPER, but with additional
# resolution of keyboard_aliases.hjson for provided rule
define TRY_TO_MATCH_RULE_FROM_LIST_HELPER_KB
# 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))
TOKEN1:=$$(shell $(QMK_BIN) resolve-alias --allow-unknown $$(TOKEN1))
FOUNDx:=$$(shell echo $1 | tr " " "\n" | grep -Fx $$(TOKEN1))
ifneq ($$(FOUNDx),)
RULE := $$(TOKENr)
RULE_FOUND := true
MATCHED_ITEM := $$(TOKEN1)
else
RULE_FOUND := false
MATCHED_ITEM :=
endif
endef
# Make it easier to call TRY_TO_MATCH_RULE_FROM_LIST_KB
TRY_TO_MATCH_RULE_FROM_LIST_KB = $(eval $(call TRY_TO_MATCH_RULE_FROM_LIST_HELPER_KB,$1))$(RULE_FOUND)
define ALL_IN_LIST_LOOP
OLD_RULE$1 := $$(RULE)
$$(eval $$(call $1,$$(ITEM$1)))
@@ -151,92 +222,135 @@ define PARSE_ALL_IN_LIST
endef
# The entry point for rule parsing
# parses a rule in the format <keyboard>:<keymap>:<target>
# parses a rule in the format <keyboard>-<subproject>-<keymap>-<target>
# but this particular function only deals with the first <keyboard> part
define PARSE_RULE
RULE := $1
COMMANDS :=
# If the rule starts with all, then continue the parsing from
# If the rule starts with allkb, then continue the parsing from
# PARSE_ALL_KEYBOARDS
ifeq ($$(call COMPARE_AND_REMOVE_FROM_RULE,all),true)
KEYBOARD_RULE=all
ifeq ($$(call COMPARE_AND_REMOVE_FROM_RULE,allkb),true)
$$(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_KB,$$(shell $(QMK_BIN) list-keyboards)),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 |)
# Notice the tab instead of spaces below!
exit 1
endif
endef
# $1 = Keyboard
# Parses a rule in the format <keymap>:<target>
# Parses a rule in the format <subproject>-<keymap>-<target>
# the keyboard is already known when entering this function
define PARSE_KEYBOARD
CURRENT_KB := $1
KEYMAPS := $(shell $(QMK_BIN) list-keymaps --keyboard $1)
# if the rule after removing the start of it is empty (we haven't specified a kemap or target)
# compile all the keymaps
ifeq ($$(RULE),)
$$(eval $$(call PARSE_ALL_KEYMAPS))
# 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
# A subproject is any keyboard subfolder with a makefile
SUBPROJECTS := $$(notdir $$(patsubst %/Makefile,%,$$(wildcard $(ROOT_DIR)/keyboards/$$(CURRENT_KB)/*/Makefile)))
# if the rule starts with allsp, then continue with looping over all subprojects
ifeq ($$(call COMPARE_AND_REMOVE_FROM_RULE,allsp),true)
$$(eval $$(call PARSE_ALL_SUBPROJECTS))
# A special case for matching the defaultsp (default subproject)
else ifeq ($$(call COMPARE_AND_REMOVE_FROM_RULE,defaultsp),true)
$$(eval $$(call PARSE_SUBPROJECT,defaultsp))
# If the rule starts with the name of a known subproject
else ifeq ($$(call TRY_TO_MATCH_RULE_FROM_LIST,$$(SUBPROJECTS)),true)
$$(eval $$(call PARSE_SUBPROJECT,$$(MATCHED_ITEM)))
# Try to use the SUBPROJECT variable, which is either determined by the
# directory which invoked make, or passed as an argument to make
else ifneq ($$(SUBPROJECT),)
$$(eval $$(call PARSE_SUBPROJECT,$$(SUBPROJECT)))
# If there's no matching subproject, we assume it's the default
# This will allow you to leave the subproject part of the target out
else
$$(eval $$(call PARSE_ALL_KEYMAPS))
$$(eval $$(call PARSE_SUBPROJECT,))
endif
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)))
$$(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
# $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
# If we want to compile the default subproject, then we need to
# include the correct makefile to determine the actual name of it
CURRENT_SP := $1
ifeq ($$(CURRENT_SP),)
CURRENT_SP := defaultsp
endif
ifeq ($$(CURRENT_SP),defaultsp)
SUBPROJECT_DEFAULT=
$$(eval include $(ROOT_DIR)/keyboards/$$(CURRENT_KB)/Makefile)
CURRENT_SP := $$(SUBPROJECT_DEFAULT)
endif
# If current subproject is empty (the default was not defined), and we have a list of subproject
# then make all of them
ifeq ($$(CURRENT_SP),)
ifneq ($$(SUBPROJECTS),)
CURRENT_SP := allsp
endif
endif
# The special allsp is handled later
ifneq ($$(CURRENT_SP),allsp)
# get a list of all keymaps
KEYMAPS := $$(notdir $$(patsubst %/.,%,$$(wildcard $(ROOT_DIR)/keyboards/$$(CURRENT_KB)/keymaps/*/.)))
ifneq ($$(CURRENT_SP),)
# if the subproject is defined, then also look for keymaps inside the subproject folder
SP_KEYMAPS := $$(notdir $$(patsubst %/.,%,$$(wildcard $(ROOT_DIR)/keyboards/$$(CURRENT_KB)/$$(CURRENT_SP)/keymaps/*/.)))
KEYMAPS := $$(sort $$(KEYMAPS) $$(SP_KEYMAPS))
endif
# if the rule after removing the start of it is empty (we haven't specified a kemap or target)
# compile all the keymaps
ifeq ($$(RULE),)
$$(eval $$(call PARSE_ALL_KEYMAPS))
# The same if allkm was specified
else ifeq ($$(call COMPARE_AND_REMOVE_FROM_RULE,allkm),true)
$$(eval $$(call PARSE_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)))
# No matching keymap found, so we assume that the rest of the rule is the target
# If we haven't been able to parse out a subproject, then make all of them
# This is consistent with running make without any arguments from the keyboard
# folder
else ifeq ($1,)
$$(eval $$(call PARSE_ALL_SUBPROJECTS))
# Otherwise, make all keymaps, again this is consistent with how it works without
# any arguments
else
$$(eval $$(call PARSE_ALL_KEYMAPS))
endif
else
# As earlier mentioned when allsb is specified, we call our self recursively
# for all of the subprojects
$$(eval $$(call PARSE_ALL_IN_LIST,PARSE_SUBPROJECT,$(SUBPROJECTS)))
endif
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
@@ -247,20 +361,23 @@ endef
define PARSE_KEYMAP
CURRENT_KM = $1
# 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
CURRENT_KB_UNDER := $$(subst /,_,$$(CURRENT_KB))
COMMAND := COMMAND_KEYBOARD_$$(CURRENT_KB_UNDER)_KEYMAP_$$(CURRENT_KM)
# Remove the leading "-" from the target, as it acts as a separator
MAKE_TARGET := $$(patsubst -%,%,$$(RULE))
# We need to generate an unique indentifer to append to the COMMANDS list
COMMAND := COMMAND_KEYBOARD_$$(CURRENT_KB)_SUBPROJECT_$(CURRENT_SP)_KEYMAP_$$(CURRENT_KM)
# If we are compiling a keyboard without a subproject, we want to display just the name
# of the keyboard, otherwise keyboard/subproject
KB_SP := $$(CURRENT_KB)
ifeq ($$(CURRENT_SP),)
KB_SP := $(CURRENT_KB)
else
KB_SP := $(CURRENT_KB)/$$(CURRENT_SP)
endif
# 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) SUBPROJECT=$$(CURRENT_SP) 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
@@ -277,8 +394,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 \
@@ -298,20 +413,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)
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 ]; \
@@ -321,21 +434,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
TEST_NAME := $$(firstword $$(subst -, ,$$(RULE)))
TEST_TARGET := $$(subst $$(TEST_NAME),,$$(subst $$(TEST_NAME)-,,$$(RULE)))
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
@@ -354,43 +460,43 @@ define SET_SILENT_MODE
endif
endef
include $(BUILDDEFS_PATH)/message.mk
ifeq ($(strip $(BREAK_ON_ERRORS)), yes)
HANDLE_ERROR = exit 1
else
HANDLE_ERROR = echo $$error_occurred > $(ERROR_FILE)
endif
include $(ROOT_DIR)/message.mk
# The empty line is important here, as it will force a new shell to be created for each command
# Otherwise the command line will become too long with a lot of keyboards and keymaps
define RUN_COMMAND
+error_occurred=0;\
$(COMMAND_$(SILENT_MODE)_$(COMMAND))\
if [ $$error_occurred -gt 0 ]; then $(HANDLE_ERROR); fi;
if [ $$error_occurred -gt 0 ]; then echo $$error_occurred > $(ERROR_FILE); fi;
endef
define RUN_TEST
+error_occurred=0;\
$($(TEST)_COMMAND)\
if [ $$error_occurred -gt 0 ]; then $(HANDLE_ERROR); fi;
if [ $$error_occurred -gt 0 ]; then echo $$error_occurred > $(ERROR_FILE); fi;
endef
# Catch everything and parse the command line ourselves.
# Allow specifying just the subproject, in the keyboard directory, which will compile all keymaps
SUBPROJECTS := $(notdir $(patsubst %/Makefile,%,$(wildcard ./*/Makefile)))
.PHONY: $(SUBPROJECTS)
$(SUBPROJECTS): %: %-allkm
# 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;
# 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
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,$@))
@@ -399,68 +505,36 @@ endif
# it has to be there to allow parallel execution of the submake
# This always tries to compile everything, even if error occurs in the middle
# But we return the error code at the end, to trigger travis failures
# The sort at this point is to remove duplicates
$(foreach COMMAND,$(sort $(COMMANDS)),$(RUN_COMMAND))
$(foreach COMMAND,$(COMMANDS),$(RUN_COMMAND))
if [ -f $(ERROR_FILE) ]; then printf "$(MSG_ERRORS)" & exit 1; fi;
$(foreach TEST,$(sort $(TESTS)),$(RUN_TEST))
$(foreach TEST,$(TESTS),$(RUN_TEST))
if [ -f $(ERROR_FILE) ]; then printf "$(MSG_ERRORS)" & exit 1; fi;
lib/%:
git submodule sync $?
git submodule update --init $?
# All should compile everything
.PHONY: all
all: all-keyboards test-all
.PHONY: git-submodule
git-submodule:
$(QMK_BIN) git-submodule
# Define some shortcuts, mostly for compatibility with the old syntax
.PHONY: all-keyboards
all-keyboards: allkb-allsp-allkm
.PHONY: git-submodules
git-submodules: git-submodule
.PHONY: all-keyboards-defaults
all-keyboards-defaults: allkb-allsp-default
.PHONY: list-keyboards
list-keyboards:
$(QMK_BIN) list-keyboards | tr '\n' ' '
.PHONY: test
test: test-all
.PHONY: list-tests
list-tests:
$(eval $(call LIST_TEST))
.PHONY: test-clean
test-clean: test-all-clean
.PHONY: generate-keyboards-file
generate-keyboards-file:
$(QMK_BIN) list-keyboards
.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.'
# 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
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)
# 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
.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

98
Vagrantfile vendored Normal file
View File

@@ -0,0 +1,98 @@
# -*- mode: ruby -*-
# vi: set ft=ruby :
Vagrant.configure(2) do |config|
# You can only have one config.vm.box uncommented at a time
# Comment this and uncomment another if you don't want to use the minimal Arch box
#config.vm.box = "dragon788/arch-ala-elasticdog"
# VMware/Virtualbox 64 bit
config.vm.box = "phusion/ubuntu-14.04-amd64"
#
# VMware/Virtualbox 64 bit
#config.vm.box = "puphpet/centos65-x64"
#
# The opensuse boxes don't have dfu-util in their default repositories
#
# The virtualbox version has tools issues
# VMware/Virtualbox 64 bit
#config.vm.box = "bento/opensuse-13.2-x86_64"
#
# Virtualbox only
#config.vm.box = "bento/opensuse-13.2-i386"
# config.vm.box = ""
# config.vm.box = ""
# 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"
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. 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.image = "jesselang/debian-vagrant:jessie"
docker.has_ssh = true
end
# This script ensures the required packages for AVR programming are installed
# It also ensures the system always gets the latest updates when powered on
# If this causes issues you can run a 'vagrant destroy' and then
# add a # before ,args: and run 'vagrant up' to get a working
# non-updated box and then attempt to troubleshoot or open a Github issue
config.vm.provision "shell", run: "always", path: "./util/install_dependencies.sh", args: "-update"
config.vm.post_up_message = <<-EOT
Log into the VM using 'vagrant ssh' on OSX or from Git Bash (Win)
or 'vagrant ssh-config' and Putty or Bitvise SSH or another SSH tool
Change directory (cd) to the keyboard you wish to program
(Optionally) modify your layout,
then run 'make clean'
and then 'make' to compile the .eep and .hex files.
Or you can copy and paste the example line below.
cd /vagrant; cd keyboards; cd ergodox; make clean; make
EOT
end

263
build_keyboard.mk Normal file
View File

@@ -0,0 +1,263 @@
ifndef VERBOSE
.SILENT:
endif
.DEFAULT_GOAL := all
include common.mk
ifneq ($(SUBPROJECT),)
TARGET ?= $(KEYBOARD)_$(SUBPROJECT)_$(KEYMAP)
KEYBOARD_OUTPUT := $(BUILD_DIR)/obj_$(KEYBOARD)_$(SUBPROJECT)
else
TARGET ?= $(KEYBOARD)_$(KEYMAP)
KEYBOARD_OUTPUT := $(BUILD_DIR)/obj_$(KEYBOARD)
endif
# Force expansion
TARGET := $(TARGET)
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
KEYBOARD_PATH := keyboards/$(KEYBOARD)
KEYBOARD_C := $(KEYBOARD_PATH)/$(KEYBOARD).c
ifneq ("$(wildcard $(KEYBOARD_C))","")
include $(KEYBOARD_PATH)/rules.mk
else
$(error "$(KEYBOARD_C)" does not exist)
endif
ifneq ($(SUBPROJECT),)
SUBPROJECT_PATH := keyboards/$(KEYBOARD)/$(SUBPROJECT)
SUBPROJECT_C := $(SUBPROJECT_PATH)/$(SUBPROJECT).c
ifneq ("$(wildcard $(SUBPROJECT_C))","")
OPT_DEFS += -DSUBPROJECT_$(SUBPROJECT)
include $(SUBPROJECT_PATH)/rules.mk
else
$(error "$(SUBPROJECT_PATH)/$(SUBPROJECT).c" does not exist)
endif
endif
# We can assume a ChibiOS target When MCU_FAMILY is defined, since it's not used for LUFA
ifdef MCU_FAMILY
PLATFORM=CHIBIOS
else
PLATFORM=AVR
endif
ifeq ($(PLATFORM),CHIBIOS)
include $(TMK_PATH)/protocol/chibios.mk
include $(TMK_PATH)/chibios.mk
OPT_OS = chibios
ifneq ("$(wildcard $(SUBPROJECT_PATH)/bootloader_defs.h)","")
OPT_DEFS += -include $(SUBPROJECT_PATH)/bootloader_defs.h
else ifneq ("$(wildcard $(SUBPROJECT_PATH)/boards/$(BOARD)/bootloader_defs.h)","")
OPT_DEFS += -include $(SUBPROJECT_PATH)/boards/$(BOARD)/bootloader_defs.h
else ifneq ("$(wildcard $(KEYBOARD_PATH)/bootloader_defs.h)","")
OPT_DEFS += -include $(KEYBOARD_PATH)/bootloader_defs.h
else ifneq ("$(wildcard $(KEYBOARD_PATH)/boards/$(BOARD)/bootloader_defs.h)","")
OPT_DEFS += -include $(KEYBOARD_PATH)/boards/$(BOARD)/bootloader_defs.h
endif
endif
CONFIG_H = $(KEYBOARD_PATH)/config.h
ifneq ($(SUBPROJECT),)
ifneq ("$(wildcard $(SUBPROJECT_C))","")
CONFIG_H = $(SUBPROJECT_PATH)/config.h
endif
endif
# Save the defines and includes here, so we don't include any keymap specific ones
PROJECT_DEFS := $(OPT_DEFS)
PROJECT_INC := $(VPATH) $(EXTRAINCDIRS) $(SUBPROJECT_PATH) $(KEYBOARD_PATH)
PROJECT_CONFIG := $(CONFIG_H)
MAIN_KEYMAP_PATH := $(KEYBOARD_PATH)/keymaps/$(KEYMAP)
MAIN_KEYMAP_C := $(MAIN_KEYMAP_PATH)/keymap.c
SUBPROJ_KEYMAP_PATH := $(SUBPROJECT_PATH)/keymaps/$(KEYMAP)
SUBPROJ_KEYMAP_C := $(SUBPROJ_KEYMAP_PATH)/keymap.c
ifneq ("$(wildcard $(SUBPROJ_KEYMAP_C))","")
-include $(SUBPROJ_KEYMAP_PATH)/Makefile
KEYMAP_C := $(SUBPROJ_KEYMAP_C)
KEYMAP_PATH := $(SUBPROJ_KEYMAP_PATH)
else ifneq ("$(wildcard $(MAIN_KEYMAP_C))","")
-include $(MAIN_KEYMAP_PATH)/Makefile
KEYMAP_C := $(MAIN_KEYMAP_C)
KEYMAP_PATH := $(MAIN_KEYMAP_PATH)
else
$(error "$(MAIN_KEYMAP_C)/keymap.c" does not exist)
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_C) \
$(KEYMAP_C) \
$(QUANTUM_DIR)/quantum.c \
$(QUANTUM_DIR)/keymap_common.c \
$(QUANTUM_DIR)/keycode_config.c \
$(QUANTUM_DIR)/process_keycode/process_leader.c
ifneq ($(SUBPROJECT),)
SRC += $(SUBPROJECT_C)
endif
ifndef CUSTOM_MATRIX
SRC += $(QUANTUM_DIR)/matrix.c
endif
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
ifeq ($(strip $(MIDI_ENABLE)), yes)
OPT_DEFS += -DMIDI_ENABLE
SRC += $(QUANTUM_DIR)/process_keycode/process_midi.c
endif
ifeq ($(strip $(COMBO_ENABLE)), yes)
OPT_DEFS += -DCOMBO_ENABLE
SRC += $(QUANTUM_DIR)/process_keycode/process_combo.c
endif
ifeq ($(strip $(VIRTSER_ENABLE)), yes)
OPT_DEFS += -DVIRTSER_ENABLE
endif
ifeq ($(strip $(AUDIO_ENABLE)), yes)
OPT_DEFS += -DAUDIO_ENABLE
SRC += $(QUANTUM_DIR)/process_keycode/process_music.c
SRC += $(QUANTUM_DIR)/audio/audio.c
SRC += $(QUANTUM_DIR)/audio/voices.c
SRC += $(QUANTUM_DIR)/audio/luts.c
endif
ifeq ($(strip $(UCIS_ENABLE)), yes)
OPT_DEFS += -DUCIS_ENABLE
UNICODE_ENABLE = yes
endif
ifeq ($(strip $(UNICODEMAP_ENABLE)), yes)
OPT_DEFS += -DUNICODEMAP_ENABLE
UNICODE_ENABLE = yes
endif
ifeq ($(strip $(UNICODE_ENABLE)), yes)
OPT_DEFS += -DUNICODE_ENABLE
SRC += $(QUANTUM_DIR)/process_keycode/process_unicode.c
endif
ifeq ($(strip $(RGBLIGHT_ENABLE)), yes)
OPT_DEFS += -DRGBLIGHT_ENABLE
SRC += $(QUANTUM_DIR)/light_ws2812.c
SRC += $(QUANTUM_DIR)/rgblight.c
endif
ifeq ($(strip $(TAP_DANCE_ENABLE)), yes)
OPT_DEFS += -DTAP_DANCE_ENABLE
SRC += $(QUANTUM_DIR)/process_keycode/process_tap_dance.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 $(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
# Optimize size but this may cause error "relocation truncated to fit"
#EXTRALDFLAGS = -Wl,--relax
# Search Path
VPATH += $(KEYMAP_PATH)
ifneq ($(SUBPROJECT),)
VPATH += $(SUBPROJECT_PATH)
endif
VPATH += $(KEYBOARD_PATH)
VPATH += $(COMMON_VPATH)
include $(TMK_PATH)/protocol.mk
include $(TMK_PATH)/common.mk
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 ($(strip $(VISUALIZER_ENABLE)), yes)
VISUALIZER_DIR = $(QUANTUM_DIR)/visualizer
VISUALIZER_PATH = $(QUANTUM_PATH)/visualizer
include $(VISUALIZER_PATH)/visualizer.mk
endif
OUTPUTS := $(KEYMAP_OUTPUT) $(KEYBOARD_OUTPUT)
$(KEYMAP_OUTPUT)_SRC := $(SRC)
$(KEYMAP_OUTPUT)_DEFS := $(OPT_DEFS) -DQMK_KEYBOARD=\"$(KEYBOARD)\" -DQMK_KEYMAP=\"$(KEYMAP)\"
$(KEYMAP_OUTPUT)_INC := $(VPATH) $(EXTRAINCDIRS)
$(KEYMAP_OUTPUT)_CONFIG := $(CONFIG_H)
$(KEYBOARD_OUTPUT)_SRC := $(CHIBISRC)
$(KEYBOARD_OUTPUT)_DEFS := $(PROJECT_DEFS)
$(KEYBOARD_OUTPUT)_INC := $(PROJECT_INC)
$(KEYBOARD_OUTPUT)_CONFIG := $(PROJECT_CONFIG)
# Default target.
all: build sizeafter
# Change the build target to build a HEX file or a library.
build: elf hex
#build: elf hex eep lss sym
#build: lib
include $(TMK_PATH)/rules.mk

57
build_test.mk Normal file
View File

@@ -0,0 +1,57 @@
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)
include $(TMK_PATH)/common.mk
include $(QUANTUM_PATH)/serial_link/tests/rules.mk
$(TEST_OBJ)/$(TEST)_SRC := $($(TEST)_SRC)
$(TEST_OBJ)/$(TEST)_INC := $($(TEST)_INC) $(VPATH) $(GTEST_INC)
$(TEST_OBJ)/$(TEST)_DEFS := $($(TEST)_DEFS)
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/pointing_device_driver.c \
tests/test_common/test_driver.cpp \
tests/test_common/keyboard_report_util.cpp \
tests/test_common/mouse_report_util.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,572 +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)/support.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
override TARGET := $(TARGET)
ifneq ($(FORCE_LAYOUT),)
override TARGET := $(TARGET)_$(FORCE_LAYOUT)
endif
ifneq ($(CONVERT_TO),)
override TARGET := $(TARGET)_$(CONVERT_TO)
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
# 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
-include $(KEYBOARD_PATH_5)/rules.mk
-include $(KEYBOARD_PATH_4)/rules.mk
-include $(KEYBOARD_PATH_3)/rules.mk
-include $(KEYBOARD_PATH_2)/rules.mk
-include $(KEYBOARD_PATH_1)/rules.mk
# 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
# 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)
include $(BUILDDEFS_PATH)/locate_keymap.mk
-include $(KEYMAP_PATH)/rules.mk
# Have we found a keymap.json?
ifneq ("$(wildcard $(KEYMAP_JSON))", "")
ifneq ("$(wildcard $(KEYMAP_C))", "")
# Allow a separately-found keymap.c next to keymap.json -- the keymap.c
# generator will include the other keymap.c in the process, if supplied.
OTHER_KEYMAP_C := $(KEYMAP_C)
OPT_DEFS += -DOTHER_KEYMAP_C=\"$(OTHER_KEYMAP_C)\"
endif
KEYMAP_C := $(INTERMEDIATE_OUTPUT)/src/keymap.c
KEYMAP_H := $(INTERMEDIATE_OUTPUT)/src/config.h
# 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) $(DD_CONFIG_FILES)
@$(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) $(DD_CONFIG_FILES)
@$(SILENT) || printf "$(MSG_GENERATING) $@" | $(AWK_CMD)
$(eval CMD=$(QMK_BIN) generate-config-h --quiet --output $(KEYMAP_H) $(KEYMAP_JSON))
@$(BUILD_CMD)
$(INTERMEDIATE_OUTPUT)/src/keymap.h: $(KEYMAP_JSON) $(DD_CONFIG_FILES)
@$(SILENT) || printf "$(MSG_GENERATING) $@" | $(AWK_CMD)
$(eval CMD=$(QMK_BIN) generate-keymap-h --quiet --output $(INTERMEDIATE_OUTPUT)/src/keymap.h $(KEYMAP_JSON))
@$(BUILD_CMD)
generated-files: $(INTERMEDIATE_OUTPUT)/src/config.h $(INTERMEDIATE_OUTPUT)/src/keymap.c $(INTERMEDIATE_OUTPUT)/src/keymap.h
endif
# Community modules
COMMUNITY_RULES_MK = $(shell $(QMK_BIN) generate-community-modules-rules-mk -kb $(KEYBOARD) --quiet --escape --output $(INTERMEDIATE_OUTPUT)/src/community_rules.mk $(KEYMAP_JSON))
include $(COMMUNITY_RULES_MK)
ifneq ($(COMMUNITY_MODULES),)
$(INTERMEDIATE_OUTPUT)/src/community_config.h: $(KEYMAP_JSON) $(DD_CONFIG_FILES)
@$(SILENT) || printf "$(MSG_GENERATING) $@" | $(AWK_CMD)
$(eval CMD=$(QMK_BIN) generate-community-config-h -kb $(KEYBOARD) --quiet --output $(INTERMEDIATE_OUTPUT)/src/community_config.h $(KEYMAP_JSON))
@$(BUILD_CMD)
$(INTERMEDIATE_OUTPUT)/src/community_modules.h: $(KEYMAP_JSON) $(DD_CONFIG_FILES)
@$(SILENT) || printf "$(MSG_GENERATING) $@" | $(AWK_CMD)
$(eval CMD=$(QMK_BIN) generate-community-modules-h -kb $(KEYBOARD) --quiet --output $(INTERMEDIATE_OUTPUT)/src/community_modules.h $(KEYMAP_JSON))
@$(BUILD_CMD)
$(INTERMEDIATE_OUTPUT)/src/community_modules.c: $(KEYMAP_JSON) $(DD_CONFIG_FILES)
@$(SILENT) || printf "$(MSG_GENERATING) $@" | $(AWK_CMD)
$(eval CMD=$(QMK_BIN) generate-community-modules-c -kb $(KEYBOARD) --quiet --output $(INTERMEDIATE_OUTPUT)/src/community_modules.c $(KEYMAP_JSON))
@$(BUILD_CMD)
$(INTERMEDIATE_OUTPUT)/src/community_modules_introspection.c: $(KEYMAP_JSON) $(DD_CONFIG_FILES)
@$(SILENT) || printf "$(MSG_GENERATING) $@" | $(AWK_CMD)
$(eval CMD=$(QMK_BIN) generate-community-modules-introspection-c -kb $(KEYBOARD) --quiet --output $(INTERMEDIATE_OUTPUT)/src/community_modules_introspection.c $(KEYMAP_JSON))
@$(BUILD_CMD)
$(INTERMEDIATE_OUTPUT)/src/community_modules_introspection.h: $(KEYMAP_JSON) $(DD_CONFIG_FILES)
@$(SILENT) || printf "$(MSG_GENERATING) $@" | $(AWK_CMD)
$(eval CMD=$(QMK_BIN) generate-community-modules-introspection-h -kb $(KEYBOARD) --quiet --output $(INTERMEDIATE_OUTPUT)/src/community_modules_introspection.h $(KEYMAP_JSON))
@$(BUILD_CMD)
$(INTERMEDIATE_OUTPUT)/src/led_matrix_community_modules.inc: $(KEYMAP_JSON) $(DD_CONFIG_FILES)
@$(SILENT) || printf "$(MSG_GENERATING) $@" | $(AWK_CMD)
$(eval CMD=$(QMK_BIN) generate-led-matrix-community-modules-inc -kb $(KEYBOARD) --quiet --output $(INTERMEDIATE_OUTPUT)/src/led_matrix_community_modules.inc $(KEYMAP_JSON))
@$(BUILD_CMD)
$(INTERMEDIATE_OUTPUT)/src/rgb_matrix_community_modules.inc: $(KEYMAP_JSON) $(DD_CONFIG_FILES)
@$(SILENT) || printf "$(MSG_GENERATING) $@" | $(AWK_CMD)
$(eval CMD=$(QMK_BIN) generate-rgb-matrix-community-modules-inc -kb $(KEYBOARD) --quiet --output $(INTERMEDIATE_OUTPUT)/src/rgb_matrix_community_modules.inc $(KEYMAP_JSON))
@$(BUILD_CMD)
$(INTERMEDIATE_OUTPUT)/src/split_transaction_id_community_modules.inc: $(KEYMAP_JSON) $(DD_CONFIG_FILES)
@$(SILENT) || printf "$(MSG_GENERATING) $@" | $(AWK_CMD)
$(eval CMD=$(QMK_BIN) generate-split-transaction-id-community-modules-inc -kb $(KEYBOARD) --quiet --output $(INTERMEDIATE_OUTPUT)/src/split_transaction_id_community_modules.inc $(KEYMAP_JSON))
@$(BUILD_CMD)
COMMUNITY_CONFIG_H = $(INTERMEDIATE_OUTPUT)/src/community_config.h
SRC += $(INTERMEDIATE_OUTPUT)/src/community_modules.c
generated-files: $(INTERMEDIATE_OUTPUT)/src/community_config.h $(INTERMEDIATE_OUTPUT)/src/community_modules.h $(INTERMEDIATE_OUTPUT)/src/community_modules.c $(INTERMEDIATE_OUTPUT)/src/community_modules_introspection.c $(INTERMEDIATE_OUTPUT)/src/community_modules_introspection.h $(INTERMEDIATE_OUTPUT)/src/led_matrix_community_modules.inc $(INTERMEDIATE_OUTPUT)/src/rgb_matrix_community_modules.inc $(INTERMEDIATE_OUTPUT)/src/split_transaction_id_community_modules.inc
endif
include $(BUILDDEFS_PATH)/converters.mk
# Generate the board's version.h file.
$(shell $(QMK_BIN) generate-version-h $(VERSION_H_FLAGS) -q -o $(INTERMEDIATE_OUTPUT)/src/version.h)
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 :=
define config_h_community_module_appender
ifneq ("$(wildcard $(1)/config.h)","")
CONFIG_H += $(1)/config.h
endif
endef
$(foreach module,$(COMMUNITY_MODULE_PATHS),$(eval $(call config_h_community_module_appender,$(module))))
ifneq ($(COMMUNITY_CONFIG_H),)
CONFIG_H += $(COMMUNITY_CONFIG_H)
endif
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 :=
define post_config_h_community_module_appender
ifneq ("$(wildcard $(1)/post_config.h)","")
POST_CONFIG_H += $(1)/post_config.h
endif
endef
$(foreach module,$(COMMUNITY_MODULE_PATHS),$(eval $(call post_config_h_community_module_appender,$(module))))
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
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 ($(QMK_USERSPACE),)
ifneq ($(wildcard $(QMK_USERSPACE)/$(USER_PATH)),)
USER_PATH := $(QMK_USERSPACE)/$(USER_PATH)
endif
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
-include $(KEYBOARD_PATH_1)/post_rules.mk
-include $(KEYBOARD_PATH_2)/post_rules.mk
-include $(KEYBOARD_PATH_3)/post_rules.mk
-include $(KEYBOARD_PATH_4)/post_rules.mk
-include $(KEYBOARD_PATH_5)/post_rules.mk
define post_rules_mk_community_module_includer
ifneq ("$(wildcard $(1)/post_rules.mk)","")
include $(1)/post_rules.mk
endif
endef
$(foreach module,$(COMMUNITY_MODULE_PATHS),$(eval $(call post_rules_mk_community_module_includer,$(module))))
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,95 +0,0 @@
ifndef VERBOSE
.SILENT:
endif
.DEFAULT_GOAL := all
OPT = g
include paths.mk
include $(BUILDDEFS_PATH)/support.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
DEBUG ?= 0
ifneq ($(strip $(DEBUG)), 0)
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)/battery/tests/rules.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)

File diff suppressed because it is too large Load Diff

View File

@@ -1,411 +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
#---------------- Debug Options ----------------
DEBUG_ENABLE ?= no
ifeq ($(strip $(DEBUG_ENABLE)),yes)
CFLAGS += -ggdb3
CXXFLAGS += -ggdb3
ASFLAGS += -ggdb3
# Create a map file when debugging
LDFLAGS += -Wl,-Map=$(BUILD_DIR)/$(TARGET).map,--cref
endif
#---------------- C Compiler Options ----------------
ifeq ($(strip $(LTO_ENABLE)), yes)
CDEFS += -flto=auto
CDEFS += -DLTO_ENABLE
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
CFLAGS += $(call cc-option,-Wunused-but-set-variable=1,-Wunused-but-set-variable)
CFLAGS += $(call cc-option,-Wunused-but-set-parameter=1,-Wunused-but-set-parameter)
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 ----------------
CXXFLAGS += $(CXXDEFS)
CXXFLAGS += -O$(OPT)
# to suppress "warning: only initialized variables can be placed into program memory area"
CXXFLAGS += -w
CXXFLAGS += -Wall
CXXFLAGS += -Wundef
CXXFLAGS += $(call cc-option,-Wunused-but-set-variable=1,-Wunused-but-set-variable)
CXXFLAGS += $(call cc-option,-Wunused-but-set-parameter=1,-Wunused-but-set-parameter)
ifneq ($(strip $(ALLOW_WARNINGS)), yes)
CXXFLAGS += -Werror
endif
#---------------- Assembler Options ----------------
ASFLAGS += $(ADEFS)
ifeq ($(VERBOSE_AS_CMD),yes)
ASFLAGS += -v
endif
#---------------- Linker Options ----------------
ifeq ($(VERBOSE_LD_CMD),yes)
LDFLAGS += -v
endif
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)
ASFLAGS += -Wa,-adhlns=$(@:%.o=%.lst),--listing-cont-lines=100
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)): FILE_SPECIFIC_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) $$(FILE_SPECIFIC_CFLAGS) $$(GENDEPFLAGS) $$< -o $$@ && $$(MOVE_DEP))
@$$(BUILD_CMD)
ifneq ($$(DUMP_C_MACROS),)
$$(eval CMD := $$(CC) -E -dM $$($1_CFLAGS) $$(FILE_SPECIFIC_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) $$(FILE_SPECIFIC_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) $$(FILE_SPECIFIC_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,34 +0,0 @@
# 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)
# 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,58 +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",
},
editLink: {
pattern: 'https://github.com/qmk/qmk_firmware/edit/master/docs/:path'
},
lastUpdated: true,
sidebar: sidebar,
externalLinkIcon: true,
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.4.21",
"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,856 +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.21.5":
version "0.21.5"
resolved "https://registry.yarnpkg.com/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz#c7184a326533fcdf1b8ee0733e21c713b975575f"
integrity sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==
"@esbuild/android-arm64@0.21.5":
version "0.21.5"
resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.21.5.tgz#09d9b4357780da9ea3a7dfb833a1f1ff439b4052"
integrity sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==
"@esbuild/android-arm@0.21.5":
version "0.21.5"
resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.21.5.tgz#9b04384fb771926dfa6d7ad04324ecb2ab9b2e28"
integrity sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==
"@esbuild/android-x64@0.21.5":
version "0.21.5"
resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.21.5.tgz#29918ec2db754cedcb6c1b04de8cd6547af6461e"
integrity sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==
"@esbuild/darwin-arm64@0.21.5":
version "0.21.5"
resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.21.5.tgz#e495b539660e51690f3928af50a76fb0a6ccff2a"
integrity sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==
"@esbuild/darwin-x64@0.21.5":
version "0.21.5"
resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.21.5.tgz#c13838fa57372839abdddc91d71542ceea2e1e22"
integrity sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==
"@esbuild/freebsd-arm64@0.21.5":
version "0.21.5"
resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.21.5.tgz#646b989aa20bf89fd071dd5dbfad69a3542e550e"
integrity sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==
"@esbuild/freebsd-x64@0.21.5":
version "0.21.5"
resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.21.5.tgz#aa615cfc80af954d3458906e38ca22c18cf5c261"
integrity sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==
"@esbuild/linux-arm64@0.21.5":
version "0.21.5"
resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.21.5.tgz#70ac6fa14f5cb7e1f7f887bcffb680ad09922b5b"
integrity sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==
"@esbuild/linux-arm@0.21.5":
version "0.21.5"
resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.21.5.tgz#fc6fd11a8aca56c1f6f3894f2bea0479f8f626b9"
integrity sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==
"@esbuild/linux-ia32@0.21.5":
version "0.21.5"
resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.21.5.tgz#3271f53b3f93e3d093d518d1649d6d68d346ede2"
integrity sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==
"@esbuild/linux-loong64@0.21.5":
version "0.21.5"
resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.21.5.tgz#ed62e04238c57026aea831c5a130b73c0f9f26df"
integrity sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==
"@esbuild/linux-mips64el@0.21.5":
version "0.21.5"
resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.21.5.tgz#e79b8eb48bf3b106fadec1ac8240fb97b4e64cbe"
integrity sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==
"@esbuild/linux-ppc64@0.21.5":
version "0.21.5"
resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.21.5.tgz#5f2203860a143b9919d383ef7573521fb154c3e4"
integrity sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==
"@esbuild/linux-riscv64@0.21.5":
version "0.21.5"
resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.21.5.tgz#07bcafd99322d5af62f618cb9e6a9b7f4bb825dc"
integrity sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==
"@esbuild/linux-s390x@0.21.5":
version "0.21.5"
resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.21.5.tgz#b7ccf686751d6a3e44b8627ababc8be3ef62d8de"
integrity sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==
"@esbuild/linux-x64@0.21.5":
version "0.21.5"
resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.21.5.tgz#6d8f0c768e070e64309af8004bb94e68ab2bb3b0"
integrity sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==
"@esbuild/netbsd-x64@0.21.5":
version "0.21.5"
resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.21.5.tgz#bbe430f60d378ecb88decb219c602667387a6047"
integrity sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==
"@esbuild/openbsd-x64@0.21.5":
version "0.21.5"
resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.21.5.tgz#99d1cf2937279560d2104821f5ccce220cb2af70"
integrity sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==
"@esbuild/sunos-x64@0.21.5":
version "0.21.5"
resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.21.5.tgz#08741512c10d529566baba837b4fe052c8f3487b"
integrity sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==
"@esbuild/win32-arm64@0.21.5":
version "0.21.5"
resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.21.5.tgz#675b7385398411240735016144ab2e99a60fc75d"
integrity sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==
"@esbuild/win32-ia32@0.21.5":
version "0.21.5"
resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.21.5.tgz#1bfc3ce98aa6ca9a0969e4d2af72144c59c1193b"
integrity sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==
"@esbuild/win32-x64@0.21.5":
version "0.21.5"
resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.21.5.tgz#acad351d582d157bb145535db2a6ff53dd514b5c"
integrity sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==
"@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.59.0":
version "4.59.0"
resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.59.0.tgz#a6742c74c7d9d6d604ef8a48f99326b4ecda3d82"
integrity sha512-upnNBkA6ZH2VKGcBj9Fyl9IGNPULcjXRlg0LLeaioQWueH30p6IXtJEbKAgvyv+mJaMxSm1l6xwDXYjpEMiLMg==
"@rollup/rollup-android-arm64@4.59.0":
version "4.59.0"
resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.59.0.tgz#97247be098de4df0c11971089fd2edf80a5da8cf"
integrity sha512-hZ+Zxj3SySm4A/DylsDKZAeVg0mvi++0PYVceVyX7hemkw7OreKdCvW2oQ3T1FMZvCaQXqOTHb8qmBShoqk69Q==
"@rollup/rollup-darwin-arm64@4.59.0":
version "4.59.0"
resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.59.0.tgz#674852cf14cf11b8056e0b1a2f4e872b523576cf"
integrity sha512-W2Psnbh1J8ZJw0xKAd8zdNgF9HRLkdWwwdWqubSVk0pUuQkoHnv7rx4GiF9rT4t5DIZGAsConRE3AxCdJ4m8rg==
"@rollup/rollup-darwin-x64@4.59.0":
version "4.59.0"
resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.59.0.tgz#36dfd7ed0aaf4d9d89d9ef983af72632455b0246"
integrity sha512-ZW2KkwlS4lwTv7ZVsYDiARfFCnSGhzYPdiOU4IM2fDbL+QGlyAbjgSFuqNRbSthybLbIJ915UtZBtmuLrQAT/w==
"@rollup/rollup-freebsd-arm64@4.59.0":
version "4.59.0"
resolved "https://registry.yarnpkg.com/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.59.0.tgz#2f87c2074b4220260fdb52a9996246edfc633c22"
integrity sha512-EsKaJ5ytAu9jI3lonzn3BgG8iRBjV4LxZexygcQbpiU0wU0ATxhNVEpXKfUa0pS05gTcSDMKpn3Sx+QB9RlTTA==
"@rollup/rollup-freebsd-x64@4.59.0":
version "4.59.0"
resolved "https://registry.yarnpkg.com/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.59.0.tgz#9b5a26522a38a95dc06616d1939d4d9a76937803"
integrity sha512-d3DuZi2KzTMjImrxoHIAODUZYoUUMsuUiY4SRRcJy6NJoZ6iIqWnJu9IScV9jXysyGMVuW+KNzZvBLOcpdl3Vg==
"@rollup/rollup-linux-arm-gnueabihf@4.59.0":
version "4.59.0"
resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.59.0.tgz#86aa4859385a8734235b5e40a48e52d770758c3a"
integrity sha512-t4ONHboXi/3E0rT6OZl1pKbl2Vgxf9vJfWgmUoCEVQVxhW6Cw/c8I6hbbu7DAvgp82RKiH7TpLwxnJeKv2pbsw==
"@rollup/rollup-linux-arm-musleabihf@4.59.0":
version "4.59.0"
resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.59.0.tgz#cbe70e56e6ece8dac83eb773b624fc9e5a460976"
integrity sha512-CikFT7aYPA2ufMD086cVORBYGHffBo4K8MQ4uPS/ZnY54GKj36i196u8U+aDVT2LX4eSMbyHtyOh7D7Zvk2VvA==
"@rollup/rollup-linux-arm64-gnu@4.59.0":
version "4.59.0"
resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.59.0.tgz#d14992a2e653bc3263d284bc6579b7a2890e1c45"
integrity sha512-jYgUGk5aLd1nUb1CtQ8E+t5JhLc9x5WdBKew9ZgAXg7DBk0ZHErLHdXM24rfX+bKrFe+Xp5YuJo54I5HFjGDAA==
"@rollup/rollup-linux-arm64-musl@4.59.0":
version "4.59.0"
resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.59.0.tgz#2fdd1ddc434ea90aeaa0851d2044789b4d07f6da"
integrity sha512-peZRVEdnFWZ5Bh2KeumKG9ty7aCXzzEsHShOZEFiCQlDEepP1dpUl/SrUNXNg13UmZl+gzVDPsiCwnV1uI0RUA==
"@rollup/rollup-linux-loong64-gnu@4.59.0":
version "4.59.0"
resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.59.0.tgz#8a181e6f89f969f21666a743cd411416c80099e7"
integrity sha512-gbUSW/97f7+r4gHy3Jlup8zDG190AuodsWnNiXErp9mT90iCy9NKKU0Xwx5k8VlRAIV2uU9CsMnEFg/xXaOfXg==
"@rollup/rollup-linux-loong64-musl@4.59.0":
version "4.59.0"
resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-loong64-musl/-/rollup-linux-loong64-musl-4.59.0.tgz#904125af2babc395f8061daa27b5af1f4e3f2f78"
integrity sha512-yTRONe79E+o0FWFijasoTjtzG9EBedFXJMl888NBEDCDV9I2wGbFFfJQQe63OijbFCUZqxpHz1GzpbtSFikJ4Q==
"@rollup/rollup-linux-ppc64-gnu@4.59.0":
version "4.59.0"
resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.59.0.tgz#a57970ac6864c9a3447411a658224bdcf948be22"
integrity sha512-sw1o3tfyk12k3OEpRddF68a1unZ5VCN7zoTNtSn2KndUE+ea3m3ROOKRCZxEpmT9nsGnogpFP9x6mnLTCaoLkA==
"@rollup/rollup-linux-ppc64-musl@4.59.0":
version "4.59.0"
resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-ppc64-musl/-/rollup-linux-ppc64-musl-4.59.0.tgz#bb84de5b26870567a4267666e08891e80bb56a63"
integrity sha512-+2kLtQ4xT3AiIxkzFVFXfsmlZiG5FXYW7ZyIIvGA7Bdeuh9Z0aN4hVyXS/G1E9bTP/vqszNIN/pUKCk/BTHsKA==
"@rollup/rollup-linux-riscv64-gnu@4.59.0":
version "4.59.0"
resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.59.0.tgz#72d00d2c7fb375ce3564e759db33f17a35bffab9"
integrity sha512-NDYMpsXYJJaj+I7UdwIuHHNxXZ/b/N2hR15NyH3m2qAtb/hHPA4g4SuuvrdxetTdndfj9b1WOmy73kcPRoERUg==
"@rollup/rollup-linux-riscv64-musl@4.59.0":
version "4.59.0"
resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.59.0.tgz#4c166ef58e718f9245bd31873384ba15a5c1a883"
integrity sha512-nLckB8WOqHIf1bhymk+oHxvM9D3tyPndZH8i8+35p/1YiVoVswPid2yLzgX7ZJP0KQvnkhM4H6QZ5m0LzbyIAg==
"@rollup/rollup-linux-s390x-gnu@4.59.0":
version "4.59.0"
resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.59.0.tgz#bb5025cde9a61db478c2ca7215808ad3bce73a09"
integrity sha512-oF87Ie3uAIvORFBpwnCvUzdeYUqi2wY6jRFWJAy1qus/udHFYIkplYRW+wo+GRUP4sKzYdmE1Y3+rY5Gc4ZO+w==
"@rollup/rollup-linux-x64-gnu@4.59.0":
version "4.59.0"
resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.59.0.tgz#9b66b1f9cd95c6624c788f021c756269ffed1552"
integrity sha512-3AHmtQq/ppNuUspKAlvA8HtLybkDflkMuLK4DPo77DfthRb71V84/c4MlWJXixZz4uruIH4uaa07IqoAkG64fg==
"@rollup/rollup-linux-x64-musl@4.59.0":
version "4.59.0"
resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.59.0.tgz#b007ca255dc7166017d57d7d2451963f0bd23fd9"
integrity sha512-2UdiwS/9cTAx7qIUZB/fWtToJwvt0Vbo0zmnYt7ED35KPg13Q0ym1g442THLC7VyI6JfYTP4PiSOWyoMdV2/xg==
"@rollup/rollup-openbsd-x64@4.59.0":
version "4.59.0"
resolved "https://registry.yarnpkg.com/@rollup/rollup-openbsd-x64/-/rollup-openbsd-x64-4.59.0.tgz#e8b357b2d1aa2c8d76a98f5f0d889eabe93f4ef9"
integrity sha512-M3bLRAVk6GOwFlPTIxVBSYKUaqfLrn8l0psKinkCFxl4lQvOSz8ZrKDz2gxcBwHFpci0B6rttydI4IpS4IS/jQ==
"@rollup/rollup-openharmony-arm64@4.59.0":
version "4.59.0"
resolved "https://registry.yarnpkg.com/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.59.0.tgz#96c2e3f4aacd3d921981329831ff8dde492204dc"
integrity sha512-tt9KBJqaqp5i5HUZzoafHZX8b5Q2Fe7UjYERADll83O4fGqJ49O1FsL6LpdzVFQcpwvnyd0i+K/VSwu/o/nWlA==
"@rollup/rollup-win32-arm64-msvc@4.59.0":
version "4.59.0"
resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.59.0.tgz#2d865149d706d938df8b4b8f117e69a77646d581"
integrity sha512-V5B6mG7OrGTwnxaNUzZTDTjDS7F75PO1ae6MJYdiMu60sq0CqN5CVeVsbhPxalupvTX8gXVSU9gq+Rx1/hvu6A==
"@rollup/rollup-win32-ia32-msvc@4.59.0":
version "4.59.0"
resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.59.0.tgz#abe1593be0fa92325e9971c8da429c5e05b92c36"
integrity sha512-UKFMHPuM9R0iBegwzKF4y0C4J9u8C6MEJgFuXTBerMk7EJ92GFVFYBfOZaSGLu6COf7FxpQNqhNS4c4icUPqxA==
"@rollup/rollup-win32-x64-gnu@4.59.0":
version "4.59.0"
resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.59.0.tgz#c4af3e9518c9a5cd4b1c163dc81d0ad4d82e7eab"
integrity sha512-laBkYlSS1n2L8fSo1thDNGrCTQMmxjYY5G0WFWjFFYZkKPjsMBsgJfGf4TLxXrF6RyhI60L8TMOjBMvXiTcxeA==
"@rollup/rollup-win32-x64-msvc@4.59.0":
version "4.59.0"
resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.59.0.tgz#4584a8a87b29188a4c1fe987a9fcf701e256d86c"
integrity sha512-2HRCml6OztYXyJXAvdDXPKcawukWY2GpR5/nxKp4iBgiO3wcoEGkAaqctIbZcNB6KlUQBIqt8VYkNSj2397EfA==
"@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.8":
version "1.0.8"
resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.8.tgz#958b91c991b1867ced318bedea0e215ee050726e"
integrity sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==
"@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.21.3:
version "0.21.5"
resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.21.5.tgz#9ca301b120922959b766360d8ac830da0d02997d"
integrity sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==
optionalDependencies:
"@esbuild/aix-ppc64" "0.21.5"
"@esbuild/android-arm" "0.21.5"
"@esbuild/android-arm64" "0.21.5"
"@esbuild/android-x64" "0.21.5"
"@esbuild/darwin-arm64" "0.21.5"
"@esbuild/darwin-x64" "0.21.5"
"@esbuild/freebsd-arm64" "0.21.5"
"@esbuild/freebsd-x64" "0.21.5"
"@esbuild/linux-arm" "0.21.5"
"@esbuild/linux-arm64" "0.21.5"
"@esbuild/linux-ia32" "0.21.5"
"@esbuild/linux-loong64" "0.21.5"
"@esbuild/linux-mips64el" "0.21.5"
"@esbuild/linux-ppc64" "0.21.5"
"@esbuild/linux-riscv64" "0.21.5"
"@esbuild/linux-s390x" "0.21.5"
"@esbuild/linux-x64" "0.21.5"
"@esbuild/netbsd-x64" "0.21.5"
"@esbuild/openbsd-x64" "0.21.5"
"@esbuild/sunos-x64" "0.21.5"
"@esbuild/win32-arm64" "0.21.5"
"@esbuild/win32-ia32" "0.21.5"
"@esbuild/win32-x64" "0.21.5"
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.8:
version "3.3.8"
resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.8.tgz#b1be3030bee36aaff18bacb375e5cce521684baf"
integrity sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w==
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.1.1:
version "1.1.1"
resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.1.1.tgz#3d321af3eab939b083c8f929a1d12cda81c26b6b"
integrity sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==
postcss@^8.4.38, postcss@^8.4.43:
version "8.5.1"
resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.5.1.tgz#e2272a1f8a807fafa413218245630b5db10a3214"
integrity sha512-6oz2beyjc5VMn/KV1pPw8fliQkhBXrVn1Z3TVyqZxU8kZpzEKhBdmCFqI6ZbmGtamQvQGuU1sgPTk8ZrXDD7jQ==
dependencies:
nanoid "^3.3.8"
picocolors "^1.1.1"
source-map-js "^1.2.1"
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.20.0:
version "4.59.0"
resolved "https://registry.yarnpkg.com/rollup/-/rollup-4.59.0.tgz#cf74edac17c1486f562d728a4d923a694abdf06f"
integrity sha512-2oMpl67a3zCH9H79LeMcbDhXW/UmWG/y2zuqnF2jQq5uq9TbM9TVyXvA4+t+ne2IIkBdrLpAaRQAvo7YI/Yyeg==
dependencies:
"@types/estree" "1.0.8"
optionalDependencies:
"@rollup/rollup-android-arm-eabi" "4.59.0"
"@rollup/rollup-android-arm64" "4.59.0"
"@rollup/rollup-darwin-arm64" "4.59.0"
"@rollup/rollup-darwin-x64" "4.59.0"
"@rollup/rollup-freebsd-arm64" "4.59.0"
"@rollup/rollup-freebsd-x64" "4.59.0"
"@rollup/rollup-linux-arm-gnueabihf" "4.59.0"
"@rollup/rollup-linux-arm-musleabihf" "4.59.0"
"@rollup/rollup-linux-arm64-gnu" "4.59.0"
"@rollup/rollup-linux-arm64-musl" "4.59.0"
"@rollup/rollup-linux-loong64-gnu" "4.59.0"
"@rollup/rollup-linux-loong64-musl" "4.59.0"
"@rollup/rollup-linux-ppc64-gnu" "4.59.0"
"@rollup/rollup-linux-ppc64-musl" "4.59.0"
"@rollup/rollup-linux-riscv64-gnu" "4.59.0"
"@rollup/rollup-linux-riscv64-musl" "4.59.0"
"@rollup/rollup-linux-s390x-gnu" "4.59.0"
"@rollup/rollup-linux-x64-gnu" "4.59.0"
"@rollup/rollup-linux-x64-musl" "4.59.0"
"@rollup/rollup-openbsd-x64" "4.59.0"
"@rollup/rollup-openharmony-arm64" "4.59.0"
"@rollup/rollup-win32-arm64-msvc" "4.59.0"
"@rollup/rollup-win32-ia32-msvc" "4.59.0"
"@rollup/rollup-win32-x64-gnu" "4.59.0"
"@rollup/rollup-win32-x64-msvc" "4.59.0"
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==
source-map-js@^1.2.1:
version "1.2.1"
resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.2.1.tgz#1ce5650fddd87abc099eda37dcff024c2667ae46"
integrity sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==
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.9, vite@^5.4.21:
version "5.4.21"
resolved "https://registry.yarnpkg.com/vite/-/vite-5.4.21.tgz#84a4f7c5d860b071676d39ba513c0d598fdc7027"
integrity sha512-o5a9xKjbtuhY6Bi5S3+HvbRERmouabWbyUcpXXUA1u+GNUKoROi9byOJ8M0nHbHYHkYICiMlqxkg1KkYmm25Sw==
dependencies:
esbuild "^0.21.3"
postcss "^8.4.43"
rollup "^4.20.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,75 +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 \
BATTERY \
BOOTMAGIC \
CAPS_WORD \
COMBO \
COMMAND \
CONNECTION \
CRC \
DEFERRED_EXEC \
DIGITIZER \
DIP_SWITCH \
DYNAMIC_KEYMAP \
DYNAMIC_MACRO \
DYNAMIC_TAPPING_TERM \
GRAVE_ESC \
HAPTIC \
KEYCODE_STRING \
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)
SRC += $$(wildcard $$(QUANTUM_DIR)/nvm/$$(NVM_DRIVER_LOWER)/nvm_$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,64 +0,0 @@
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)
POTENTIAL_KEYMAP_PATHS += $(MAIN_KEYMAP_PATH_1)
POTENTIAL_KEYMAP_PATHS += $(MAIN_KEYMAP_PATH_2)
POTENTIAL_KEYMAP_PATHS += $(MAIN_KEYMAP_PATH_3)
POTENTIAL_KEYMAP_PATHS += $(MAIN_KEYMAP_PATH_4)
POTENTIAL_KEYMAP_PATHS += $(MAIN_KEYMAP_PATH_5)
ifneq ($(QMK_USERSPACE),)
POTENTIAL_KEYMAP_PATHS += $(QMK_USERSPACE)/$(MAIN_KEYMAP_PATH_1)
POTENTIAL_KEYMAP_PATHS += $(QMK_USERSPACE)/$(MAIN_KEYMAP_PATH_2)
POTENTIAL_KEYMAP_PATHS += $(QMK_USERSPACE)/$(MAIN_KEYMAP_PATH_3)
POTENTIAL_KEYMAP_PATHS += $(QMK_USERSPACE)/$(MAIN_KEYMAP_PATH_4)
POTENTIAL_KEYMAP_PATHS += $(QMK_USERSPACE)/$(MAIN_KEYMAP_PATH_5)
endif
define SEARCH_POTENTIAL_LOCATION
POTENTIAL_DIR := $1
ifeq ("$$(wildcard $$(KEYMAP_PATH))", "")
POTENTIAL_KEYMAP_JSON := $$(POTENTIAL_DIR)/keymap.json
POTENTIAL_KEYMAP_C := $$(POTENTIAL_DIR)/keymap.c
ifneq ("$$(wildcard $$(POTENTIAL_KEYMAP_JSON))","")
KEYMAP_JSON := $$(POTENTIAL_KEYMAP_JSON)
KEYMAP_PATH := $$(POTENTIAL_DIR)
endif
ifneq ("$$(wildcard $$(POTENTIAL_KEYMAP_C))","")
KEYMAP_C := $$(POTENTIAL_KEYMAP_C)
KEYMAP_PATH := $$(POTENTIAL_DIR)
endif
endif
endef
$(foreach KM_DIR,$(POTENTIAL_KEYMAP_PATHS),$(eval $(call SEARCH_POTENTIAL_LOCATION, $(KM_DIR))))
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
$$(foreach LAYOUTS_REPO,$$(LAYOUTS_REPOS),$$(eval $$(call SEARCH_POTENTIAL_LOCATION,$$(LAYOUTS_REPO)/$$(LAYOUT)/$$(KEYMAP))))
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)))
ifeq ("$$(wildcard $$(KEYMAP_PATH))", "")
$(call CATASTROPHIC_ERROR,Invalid keymap,Could not find keymap)
# this state should never be reached
endif

View File

@@ -1,113 +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_FILESIZE = Checking file size of $(TARGET).$(FIRMWARE_FORMAT)
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,151 +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 \
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,11 +0,0 @@
# Helper to determine if a compiler option is supported
# Args:
# $(1) = option to test, if successful will be output
# $(2) = option to use if $(1) is not supported
# $(3) = additional arguments to pass to the compiler during the test, but aren't contained in the output
cc-option = $(shell \
if { echo 'int main(){return 0;}' | $(CC) $(1) $(3) -Wl,--unresolved-symbols=ignore-all -o /dev/null -x c /dev/null >/dev/null 2>&1; }; \
then echo "$(1)"; else echo "$(2)"; fi)
# Helper to pass comma character to make functions (use with `$(,)` to pass in `$(call ...)` arguments)
, := ,

View File

@@ -1,23 +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)/battery/tests/testlist.mk
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))))

27
common.mk Normal file
View File

@@ -0,0 +1,27 @@
include message.mk
# Directory common source files exist
TOP_DIR = .
TMK_DIR = tmk_core
TMK_PATH = $(TOP_DIR)/$(TMK_DIR)
LIB_PATH = $(TOP_DIR)/lib
QUANTUM_DIR = quantum
QUANTUM_PATH = $(TOP_DIR)/$(QUANTUM_DIR)
BUILD_DIR := $(TOP_DIR)/.build
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 := $(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 += $(SERIAL_PATH)

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,596 +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": "EU_GRV",
"label": "`",
}
"KC_1": {
"key": "EU_1",
"label": "1",
}
"KC_2": {
"key": "EU_2",
"label": "2",
}
"KC_3": {
"key": "EU_3",
"label": "3",
}
"KC_4": {
"key": "EU_4",
"label": "4",
}
"KC_5": {
"key": "EU_5",
"label": "5",
}
"KC_6": {
"key": "EU_6",
"label": "6",
}
"KC_7": {
"key": "EU_7",
"label": "7",
}
"KC_8": {
"key": "EU_8",
"label": "8",
}
"KC_9": {
"key": "EU_9",
"label": "9",
}
"KC_0": {
"key": "EU_0",
"label": "0",
}
"KC_MINS": {
"key": "EU_MINS",
"label": "-",
}
"KC_EQL": {
"key": "EU_EQL",
"label": "=",
}
"KC_Q": {
"key": "EU_Q",
"label": "Q",
}
"KC_W": {
"key": "EU_W",
"label": "W",
}
"KC_E": {
"key": "EU_E",
"label": "E",
}
"KC_R": {
"key": "EU_R",
"label": "R",
}
"KC_T": {
"key": "EU_T",
"label": "T",
}
"KC_Y": {
"key": "EU_Y",
"label": "Y",
}
"KC_U": {
"key": "EU_U",
"label": "U",
}
"KC_I": {
"key": "EU_I",
"label": "I",
}
"KC_O": {
"key": "EU_O",
"label": "O",
}
"KC_P": {
"key": "EU_P",
"label": "P",
}
"KC_LBRC": {
"key": "EU_LBRC",
"label": "[",
}
"KC_RBRC": {
"key": "EU_RBRC",
"label": "]",
}
"KC_BSLS": {
"key": "EU_BSLS",
"label": "\\",
}
"KC_A": {
"key": "EU_A",
"label": "A",
}
"KC_S": {
"key": "EU_S",
"label": "S",
}
"KC_D": {
"key": "EU_D",
"label": "D",
}
"KC_F": {
"key": "EU_F",
"label": "F",
}
"KC_G": {
"key": "EU_G",
"label": "G",
}
"KC_H": {
"key": "EU_H",
"label": "H",
}
"KC_J": {
"key": "EU_J",
"label": "J",
}
"KC_K": {
"key": "EU_K",
"label": "K",
}
"KC_L": {
"key": "EU_L",
"label": "L",
}
"KC_SCLN": {
"key": "EU_SCLN",
"label": ";",
}
"KC_QUOT": {
"key": "EU_QUOT",
"label": "'",
}
"KC_Z": {
"key": "EU_Z",
"label": "Z",
}
"KC_X": {
"key": "EU_X",
"label": "X",
}
"KC_C": {
"key": "EU_C",
"label": "C",
}
"KC_V": {
"key": "EU_V",
"label": "V",
}
"KC_B": {
"key": "EU_B",
"label": "B",
}
"KC_N": {
"key": "EU_N",
"label": "N",
}
"KC_M": {
"key": "EU_M",
"label": "M",
}
"KC_COMM": {
"key": "EU_COMM",
"label": ",",
}
"KC_DOT": {
"key": "EU_DOT",
"label": ".",
}
"KC_SLSH": {
"key": "EU_SLSH",
"label": "/",
}
/* Shifted symbols
* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐
* │ ~ │ ! │ @ │ # │ $ │ % │ ^ │ & │ * │ ( │ ) │ _ │ + │ │
* ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤
* │ │ │ │ │ │ │ │ │ │ │ │ { │ } │ | │
* ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤
* │ │ │ │ │ │ │ │ │ │ │ : │ " │ │
* ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────────┤
* │ │ │ │ │ │ │ │ │ < │ > │ ? │ │
* ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤
* │ │ │ │ │ │ │ │ │
* └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘
*/
"S(EU_GRV)": {
"key": "EU_TILD",
"label": "~",
}
"S(EU_1)": {
"key": "EU_EXLM",
"label": "!",
}
"S(EU_2)": {
"key": "EU_AT",
"label": "@",
}
"S(EU_3)": {
"key": "EU_HASH",
"label": "#",
}
"S(EU_4)": {
"key": "EU_DLR",
"label": "$",
}
"S(EU_5)": {
"key": "EU_PERC",
"label": "%",
}
"S(EU_6)": {
"key": "EU_CIRC",
"label": "^",
}
"S(EU_7)": {
"key": "EU_AMPR",
"label": "&",
}
"S(EU_8)": {
"key": "EU_ASTR",
"label": "*",
}
"S(EU_9)": {
"key": "EU_LPRN",
"label": "(",
}
"S(EU_0)": {
"key": "EU_RPRN",
"label": ")",
}
"S(EU_MINS)": {
"key": "EU_UNDS",
"label": "_",
}
"S(EU_EQL)": {
"key": "EU_PLUS",
"label": "+",
}
"S(EU_LBRC)": {
"key": "EU_LCBR",
"label": "{",
}
"S(EU_RBRC)": {
"key": "EU_RCBR",
"label": "}",
}
"S(EU_BSLS)": {
"key": "EU_PIPE",
"label": "|",
}
"S(EU_SCLN)": {
"key": "EU_COLN",
"label": ":",
}
"S(EU_QUOT)": {
"key": "EU_DQUO",
"label": "\"",
}
"S(EU_COMM)": {
"key": "EU_LABK",
"label": "<",
}
"S(EU_DOT)": {
"key": "EU_RABK",
"label": ">",
}
"S(EU_SLSH)": {
"key": "EU_QUES",
"label": "?",
}
/* AltGr symbols
* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐
* │ ` │ ¡ │ ª │ º │ £ │ € │ ^ │ ˚ │ „ │ “ │ ” │ × │ │
* ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤
* │ │ æ │ å │ ë │ ý │ þ │ ÿ │ ü │ ï │ ö │ œ │ « │ » │ ¬ │
* ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤
* │ │ ä │ ß │ ð │ è │ é │ ù │ ú │ ij │ ø │ ° │ ´ │ │
* ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────────┤
* │ │ à │ á │ ç │ ì │ í │ ñ │ μ │ ò │ ó │ ¿ │ │
* ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤
* │ │ │ │ │ │ │ │ │
* └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘
*/
"ALGR(EU_GRV)": {
"key": "EU_DGRV",
"label": "` (dead)",
}
"ALGR(EU_1)": {
"key": "EU_IEXL",
"label": "¡",
}
"ALGR(EU_2)": {
"key": "EU_FORD",
"label": "ª",
}
"ALGR(EU_3)": {
"key": "EU_MORD",
"label": "º",
}
"ALGR(EU_4)": {
"key": "EU_PND",
"label": "£",
}
"ALGR(EU_5)": {
"key": "EU_EURO",
"label": "€",
}
"ALGR(EU_6)": {
"key": "EU_DCIR",
"label": "^ (dead)",
}
"ALGR(EU_7)": {
"key": "EU_RNGA",
"label": "˚ (dead)",
}
"ALGR(EU_8)": {
"key": "EU_DLQU",
"label": "„",
}
"ALGR(EU_9)": {
"key": "EU_LDQU",
"label": "“",
}
"ALGR(EU_0)": {
"key": "EU_RDQU",
"label": "”",
}
"ALGR(EU_MINS)": {
"key": "EU_NDSH",
"label": "",
}
"ALGR(EU_EQL)": {
"key": "EU_MUL",
"label": "×",
}
"ALGR(EU_Q)": {
"key": "EU_AE",
"label": "æ",
}
"ALGR(EU_W)": {
"key": "EU_ARNG",
"label": "Å",
}
"ALGR(EU_E)": {
"key": "EU_EDIA",
"label": "Ë",
}
"ALGR(EU_R)": {
"key": "EU_YACU",
"label": "Ý",
}
"ALGR(EU_T)": {
"key": "EU_THRN",
"label": "Þ",
}
"ALGR(EU_Y)": {
"key": "EU_YDIA",
"label": "Ÿ",
}
"ALGR(EU_U)": {
"key": "EU_UDIA",
"label": "Ü",
}
"ALGR(EU_I)": {
"key": "EU_IDIA",
"label": "Ï",
}
"ALGR(EU_O)": {
"key": "EU_ODIA",
"label": "Ö",
}
"ALGR(EU_P)": {
"key": "EU_OE",
"label": "Œ",
}
"ALGR(EU_LBRC)": {
"key": "EU_LDAQ",
"label": "«",
}
"ALGR(EU_RBRC)": {
"key": "EU_RDAQ",
"label": "»",
}
"ALGR(EU_BSLS)": {
"key": "EU_NOT",
"label": "¬",
}
"ALGR(EU_A)": {
"key": "EU_ADIA",
"label": "Ä",
}
"ALGR(EU_S)": {
"key": "EU_SS",
"label": "ß",
}
"ALGR(EU_D)": {
"key": "EU_ETH",
"label": "Ð",
}
"ALGR(EU_F)": {
"key": "EU_EGRV",
"label": "È",
}
"ALGR(EU_G)": {
"key": "EU_EACU",
"label": "É",
}
"ALGR(EU_H)": {
"key": "EU_UGRV",
"label": "Ù",
}
"ALGR(EU_J)": {
"key": "EU_UACU",
"label": "Ú",
}
"ALGR(EU_K)": {
"key": "EU_IJ",
"label": "IJ",
}
"ALGR(EU_L)": {
"key": "EU_OSTR",
"label": "Ø",
}
"ALGR(EU_SCLN)": {
"key": "EU_DEG",
"label": "°",
}
"ALGR(EU_QUOT)": {
"key": "EU_ACUT",
"label": "´ (dead)",
}
"ALGR(EU_Z)": {
"key": "EU_AGRV",
"label": "À",
}
"ALGR(EU_X)": {
"key": "EU_AACU",
"label": "Á",
}
"ALGR(EU_C)": {
"key": "EU_CCED",
"label": "Ç",
}
"ALGR(EU_V)": {
"key": "EU_IGRV",
"label": "Ì",
}
"ALGR(EU_B)": {
"key": "EU_IACU",
"label": "Í",
}
"ALGR(EU_N)": {
"key": "EU_NTIL",
"label": "Ñ",
}
"ALGR(EU_M)": {
"key": "EU_DGRK",
"label": "μ (dead Greek key)",
}
"ALGR(EU_COMM)": {
"key": "EU_OGRV",
"label": "Ò",
}
"ALGR(EU_DOT)": {
"key": "EU_OACU",
"label": "Ó",
}
"ALGR(EU_SLSH)": {
"key": "EU_IQUE",
"label": "¿",
}
/* Shift+AltGr symbols
* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐
* │ ~ │ ¹ │ ² │ ³ │ ¥ │ ¢ │ ˇ │ ¯ │ │ — │ ÷ │ │
* ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤
* │ │ │ │ │ │ │ │ │ │ │ │ │ ¦ │
* ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤
* │ │ │ § │ │ │ │ │ │ │ │ · │ ¨ │ │
* ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────────┤
* │ │ │ │ │ │ │ │ │ │ │ … │ │
* ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤
* │ │ │ │ │ │ │ │ │
* └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘
*/
"ALGR(EU_TILD)": {
"key": "EU_DTIL",
"label": "~ (dead)",
}
"S(ALGR(EU_1))": {
"key": "EU_SUP1",
"label": "¹",
}
"S(ALGR(EU_2))": {
"key": "EU_SUP2",
"label": "²",
}
"S(ALGR(EU_3))": {
"key": "EU_SUP3",
"label": "³",
}
"ALGR(EU_DLR)": {
"key": "EU_YEN",
"label": "¥",
}
"S(EU_EURO)": {
"key": "EU_CENT",
"label": "¢",
}
"S(EU_DCIR)": {
"key": "EU_CARN",
"label": "ˇ (dead)",
}
"S(ALGR(EU_7))": {
"key": "EU_MACR",
"label": "¯ (dead)",
}
"S(EU_DLQU)": {
"key": "EU_SLQU",
"label": "",
}
"S(EU_LDQU)": {
"key": "EU_LSQU",
"label": "",
}
"S(EU_RDQU)": {
"key": "EU_RSQU",
"label": "",
}
"S(EU_NDSH)": {
"key": "EU_MDSH",
"label": "—",
}
"S(EU_MUL)": {
"key": "EU_DIV",
"label": "÷",
}
"S(EU_LDAQ)": {
"key": "EU_LSAQ",
"label": "",
}
"S(EU_RDAQ)": {
"key": "EU_RSAQ",
"label": "",
}
"S(ALGR(EU_BSLS))": {
"key": "EU_BRKP",
"label": "¦",
}
"S(ALGR(EU_S))": {
"key": "EU_SECT",
"label": "§",
}
"S(ALGR(EU_SCLN))": {
"key": "EU_MDDT",
"label": "·",
}
"ALGR(EU_DQUO)": {
"key": "EU_DIAE",
"label": "¨ (dead)",
}
"ALGR(EU_QUES)": {
"key": "EU_ELLP",
"label": "…",
}
}
}

View File

@@ -1,616 +0,0 @@
{
"aliases": {
/*
* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐
* │ │ ۱ │ ۲ │ ۳ │ ۴ │ ۵ │ ۶ │ ۷ │ ۸ │ ۹ │ ۰ │ - │ = │ │
* ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤
* │ │ ض │ ص │ ث │ ق │ ف │ غ │ ع │ ه │ خ │ ح │ ج │ چ │ │
* ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │
* │ │ ش │ س │ ی │ ب │ ل │ ا │ ت │ ن │ م │ ک │ گ │ \ │ │
* ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤
* │ │ < │ ظ │ ط │ ز │ ر │ ذ │ د │ پ │ و │ . │ / │ │
* ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤
* │ │ │ │ │ │ │ │ │
* └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘
*/
"KC_GRV": {
"key": "FA_ZWJ",
"label": "(zero-width joiner)",
}
"KC_1": {
"key": "FA_1A",
"label": "۱",
}
"KC_2": {
"key": "FA_2A",
"label": "۲",
}
"KC_3": {
"key": "FA_3A",
"label": "۳",
}
"KC_4": {
"key": "FA_4A",
"label": "۴",
}
"KC_5": {
"key": "FA_5A",
"label": "۵",
}
"KC_6": {
"key": "FA_6A",
"label": "۶",
}
"KC_7": {
"key": "FA_7A",
"label": "۷",
}
"KC_8": {
"key": "FA_8A",
"label": "۸",
}
"KC_9": {
"key": "FA_9A",
"label": "۹",
}
"KC_0": {
"key": "FA_0A",
"label": "۰",
}
"KC_MINS": {
"key": "FA_MINS",
"label": "-",
}
"KC_EQL": {
"key": "FA_EQL",
"label": "=",
}
"KC_Q": {
"key": "FA_ZAD",
"label": "ض",
}
"KC_W": {
"key": "FA_SAD",
"label": "ص",
}
"KC_E": {
"key": "FA_SE",
"label": "ث",
}
"KC_R": {
"key": "FA_QAF",
"label": "ق",
}
"KC_T": {
"key": "FA_FE",
"label": "ف",
}
"KC_Y": {
"key": "FA_GHYN",
"label": "غ",
}
"KC_U": {
"key": "FA_EYN",
"label": "ع",
}
"KC_I": {
"key": "FA_HE",
"label": "ه",
}
"KC_O": {
"key": "FA_KHE",
"label": "خ",
}
"KC_P": {
"key": "FA_HEJ",
"label": "ح",
}
"KC_LBRC": {
"key": "FA_JIM",
"label": "ج",
}
"KC_RBRC": {
"key": "FA_CHE",
"label": "چ",
}
"KC_A": {
"key": "FA_SHIN",
"label": "ش",
}
"KC_S": {
"key": "FA_SIN",
"label": "س",
}
"KC_D": {
"key": "FA_YE",
"label": "ی",
}
"KC_F": {
"key": "FA_BE",
"label": "ب",
}
"KC_G": {
"key": "FA_LAM",
"label": "ل",
}
"KC_H": {
"key": "FA_ALEF",
"label": "ا",
}
"KC_J": {
"key": "FA_TE",
"label": "ت",
}
"KC_K": {
"key": "FA_NOON",
"label": "ن",
}
"KC_L": {
"key": "FA_MIM",
"label": "م",
}
"KC_SCLN": {
"key": "FA_KAF",
"label": "ک",
}
"KC_QUOT": {
"key": "FA_GAF",
"label": "گ",
}
"KC_BSLS": {
"key": "FA_BSLS",
"label": "\\",
}
"KC_LT": {
"key": "FA_LT",
"label": "<",
}
"KC_Z": {
"key": "FA_ZA",
"label": "ظ",
}
"KC_X": {
"key": "FA_TA",
"label": "ط",
}
"KC_C": {
"key": "FA_ZE",
"label": "ز",
}
"KC_V": {
"key": "FA_RE",
"label": "ر",
}
"KC_B": {
"key": "FA_ZAL",
"label": "ذ",
}
"KC_N": {
"key": "FA_DAL",
"label": "د",
}
"KC_M": {
"key": "FA_PE",
"label": "پ",
}
"KC_COMM": {
"key": "FA_WAW",
"label": "و",
}
"KC_DOT": {
"key": "FA_DOT",
"label": ".",
}
"KC_SLSH": {
"key": "FA_SLSH",
"label": "/",
}
"KC_SPC": {
"key": "FA_SPC",
"label": " ",
}
/* Shifted symbols
* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐
* │ ÷ │ ! │ ٬ │ ٫ │ ﷼ │ ٪ │ × │ ، │ * │ ) │ ( │ ـ │ + │ │
* ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤
* │ │ ْ │ ٌ │ ٍ │ ً │ ُ │ ِ │ َ │ ّ │ ] │ [ │ } │ { │ │
* ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │
* │ │ ؤ │ ئ │ ي │ إ │ أ │ آ │ ة │ » │ « │ : │ ؛ │ | │ │
* ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤
* │ │ > │ ك │ ٓ │ ژ │ ٰ │ │ ٔ │ ء │ │ │ ؟ │ │
* ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤
* │ │ │ │ │ │ │ │ │
* └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘
*/
"S(FA_ZWJ)": {
"key": "FA_DIV",
"label": "÷",
}
"S(FA_1A)": {
"key": "FA_EXLM",
"label": "!",
}
"S(FA_2A)": {
"key": "FA_THS",
"label": "٬",
}
"S(FA_3A)": {
"key": "FA_DECS",
"label": "٫",
}
"S(FA_4A)": {
"key": "FA_RIAL",
"label": "﷼",
}
"S(FA_5A)": {
"key": "FA_PRCA",
"label": "٪",
}
"S(FA_6A)": {
"key": "FA_MUL",
"label": "×",
}
"S(FA_7A)": {
"key": "FA_COMA",
"label": "،",
}
"S(FA_8A)": {
"key": "FA_ASTR",
"label": "*",
}
"S(FA_9A)": {
"key": "FA_RPRN",
"label": ")",
}
"S(FA_0A)": {
"key": "FA_LPRN",
"label": "(",
}
"S(FA_MINS)": {
"key": "FA_TATW",
"label": "ـ",
}
"S(FA_EQL)": {
"key": "FA_PLUS",
"label": "+",
}
"S(FA_ZAD)": {
"key": "FA_SUK",
"label": "ْ",
}
"S(FA_SAD)": {
"key": "FA_DMTN",
"label": "ٌ",
}
"S(FA_SE)": {
"key": "FA_KSTN",
"label": "ٍ",
}
"S(FA_QAF)": {
"key": "FA_FTHN",
"label": "ً",
}
"S(FA_FE)": {
"key": "FA_DMM",
"label": "ُ",
}
"S(FA_GHYN)": {
"key": "FA_KAS",
"label": "ِ",
}
"S(FA_EYN)": {
"key": "FA_FAT",
"label": "َ",
}
"S(FA_HE)": {
"key": "FA_TSDD",
"label": "",
}
"S(FA_KHE)": {
"key": "FA_RBRC",
"label": "]",
}
"S(FA_HEJ)": {
"key": "FA_LBRC",
"label": "[",
}
"S(FA_JIM)": {
"key": "FA_RCBR",
"label": "}",
}
"S(FA_CHE)": {
"key": "FA_LCBR",
"label": "{",
}
"S(FA_SHIN)": {
"key": "FA_HMZV",
"label": "ؤ",
}
"S(FA_SIN)": {
"key": "FA_HMZY",
"label": "ئ",
}
"S(FA_YE)": {
"key": "FA_YEA",
"label": "ي",
}
"S(FA_BE)": {
"key": "FA_HMZU",
"label": "إ",
}
"S(FA_LAM)": {
"key": "FA_HMZO",
"label": "أ",
}
"S(FA_ALEF)": {
"key": "FA_MALF",
"label": "آ",
}
"S(FA_TE)": {
"key": "FA_TEHM",
"label": "ة",
}
"S(FA_NOON)": {
"key": "FA_RQOT",
"label": "»",
}
"S(FA_MIM)": {
"key": "FA_LQOT",
"label": "«",
}
"S(FA_KAF)": {
"key": "FA_COLN",
"label": ":",
}
"S(FA_GAF)": {
"key": "FA_SCLA",
"label": "؛",
}
"S(FA_LT)": {
"key": "FA_GT",
"label": ">",
}
"S(FA_ZA)": {
"key": "FA_KAFA",
"label": "ك",
}
"S(FA_TA)": {
"key": "FA_MADO",
"label": "ٓ",
}
"S(FA_ZE)": {
"key": "FA_JEH",
"label": "ژ",
}
"S(FA_RE)": {
"key": "FA_SUPA",
"label": "ٰ",
}
"S(FA_ZAL)": {
"key": "FA_ZWNJ",
"label": "(zero-width non-joiner)",
}
"S(FA_DAL)": {
"key": "FA_HMZA",
"label": "ٔ",
}
"S(FA_PE)": {
"key": "FA_HMZ",
"label": "ء",
}
"S(FA_SLSH)": {
"key": "FA_QSA",
"label": "؟",
}
/* AltGr symbols
* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐
* │ ~ │ ` │ @ │ # │ $ │ % │ ^ │ & │ • │ │ │ _ │ │ │
* ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤
* │ │ ° │ │ € │ │ │ │ │ │ │ │ │ │ │
* ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │
* │ │ │ │ ى │ │ │ ٱ │ │ ﴿ │ ; │ " │ │ │
* ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤
* │ │ | │ │ │ │ ٖ │ │ ٕ │ … │ , │ ' │ ? │ │
* ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤
* │ │ │ │ │ │ │ │ │
* └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘
*/
"ALGR(FA_ZWJ)": {
"key": "FA_TILD",
"label": "~",
}
"ALGR(FA_1A)": {
"key": "FA_GRV",
"label": "`",
}
"ALGR(FA_2A)": {
"key": "FA_AT",
"label": "@",
}
"ALGR(FA_3A)": {
"key": "FA_HASH",
"label": "#",
}
"ALGR(FA_4A)": {
"key": "FA_DLR",
"label": "$",
}
"ALGR(FA_5A)": {
"key": "FA_PERC",
"label": "%",
}
"ALGR(FA_6A)": {
"key": "FA_CIRC",
"label": "^",
}
"ALGR(FA_7A)": {
"key": "FA_AMPR",
"label": "&",
}
"ALGR(FA_8A)": {
"key": "FA_BULT",
"label": "•",
}
"ALGR(FA_9A)": {
"key": "FA_LRM",
"label": "(left-to-right mark)",
}
"ALGR(FA_0A)": {
"key": "FA_RLM",
"label": "(right-to-left mark)",
}
"ALGR(FA_MINS)": {
"key": "FA_UNDS",
"label": "_",
}
"ALGR(FA_EQL)": {
"key": "FA_DMNS",
"label": " (dead)",
}
"ALGR(FA_ZAD)": {
"key": "FA_DEG",
"label": "°",
}
"ALGR(FA_SE)": {
"key": "FA_EURO",
"label": "€",
}
"ALGR(FA_HE)": {
"key": "FA_LRO",
"label": "(left-to-right override)",
}
"ALGR(FA_KHE)": {
"key": "FA_RLO",
"label": "(right-to-left override)",
}
"ALGR(FA_HEJ)": {
"key": "FA_PDF",
"label": "(pop directional formatting)",
}
"ALGR(FA_JIM)": {
"key": "FA_LRE",
"label": "(left-to-right embedding)",
}
"ALGR(FA_CHE)": {
"key": "FA_RLE",
"label": "(right-to-left embedding)",
}
"ALGR(FA_YE)": {
"key": "FA_ALFM",
"label": "ى",
}
"ALGR(FA_ALEF)": {
"key": "FA_ALFW",
"label": "ٱ",
}
"ALGR(FA_NOON)": {
"key": "FA_LORP",
"label": "",
}
"ALGR(FA_MIM)": {
"key": "FA_RORP",
"label": "﴿",
}
"ALGR(FA_KAF)": {
"key": "FA_SCLN",
"label": ";",
}
"ALGR(FA_GAF)": {
"key": "FA_DQT",
"label": "\"",
}
"ALGR(FA_BSLS)": {
"key": "FA_MINA",
"label": "-",
}
"ALGR(FA_ZA)": {
"key": "FA_PIPE",
"label": "|",
}
"ALGR(FA_RE)": {
"key": "FA_SUBA",
"label": "ٖ",
}
"ALGR(FA_DAL)": {
"key": "FA_HMZB",
"label": "ء",
}
"ALGR(FA_PE)": {
"key": "FA_ELLP",
"label": "…",
}
"ALGR(FA_WAW)": {
"key": "FA_COMM",
"label": ",",
}
"ALGR(FA_DOT)": {
"key": "FA_QUOT",
"label": "'",
}
"ALGR(FA_SLSH)": {
"key": "FA_QUES",
"label": "?",
}
/* Shift+AltGr symbols
* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐
* │ │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ │ │ │
* ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤
* │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
* ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │
* │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
* ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤
* │ │ ¦ │ │ │ │ │ │ │ │ │ │ │ │
* ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤
* │ │ │ │ │ │ │ │ │
* └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘
*/
"S(ALGR(FA_1A))": {
"key": "FA_1",
"label": "1",
}
"S(ALGR(FA_2A))": {
"key": "FA_2",
"label": "2",
}
"S(ALGR(FA_3A))": {
"key": "FA_3",
"label": "3",
}
"S(ALGR(FA_4A))": {
"key": "FA_4",
"label": "4",
}
"S(ALGR(FA_5A))": {
"key": "FA_5",
"label": "5",
}
"S(ALGR(FA_6A))": {
"key": "FA_6",
"label": "6",
}
"S(ALGR(FA_7A))": {
"key": "FA_7",
"label": "7",
}
"S(ALGR(FA_8A))": {
"key": "FA_8",
"label": "8",
}
"S(ALGR(FA_9A))": {
"key": "FA_9",
"label": "9",
}
"S(ALGR(FA_0A))": {
"key": "FA_0",
"label": "0",
}
"S(ALGR(FA_LT))": {
"key": "FA_BRKP",
"label": "¦",
}
"S(ALGR(FA_SPC))": {
"key": "FA_NNBS",
"label": "(narrow non-breaking space)",
}
}
}

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": "_",
}
}
}

View File

@@ -1,310 +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 │ , │ . │ / │ │
* ├─────┬──┴┬──┴──┬┴──┬┴───┴───┴───┴──┬┴──┬┴───┴┬──┴┬───┬─────┤
* │ │ │ │Hnj│ │H↔Y│ │ │ │ │
* └─────┴───┴─────┴───┴───────────────┴───┴─────┴───┴───┴─────┘
*/
"KC_GRV": {
"key": "KR_GRV",
"label": "`",
}
"KC_1": {
"key": "KR_1",
"label": "1",
}
"KC_2": {
"key": "KR_2",
"label": "2",
}
"KC_3": {
"key": "KR_3",
"label": "3",
}
"KC_4": {
"key": "KR_4",
"label": "4",
}
"KC_5": {
"key": "KR_5",
"label": "5",
}
"KC_6": {
"key": "KR_6",
"label": "6",
}
"KC_7": {
"key": "KR_7",
"label": "7",
}
"KC_8": {
"key": "KR_8",
"label": "8",
}
"KC_9": {
"key": "KR_9",
"label": "9",
}
"KC_0": {
"key": "KR_0",
"label": "0",
}
"KC_MINS": {
"key": "KR_MINS",
"label": "-",
}
"KC_EQL": {
"key": "KR_EQL",
"label": "=",
}
"KC_Q": {
"key": "KR_Q",
"label": "Q",
}
"KC_W": {
"key": "KR_W",
"label": "W",
}
"KC_E": {
"key": "KR_E",
"label": "E",
}
"KC_R": {
"key": "KR_R",
"label": "R",
}
"KC_T": {
"key": "KR_T",
"label": "T",
}
"KC_Y": {
"key": "KR_Y",
"label": "Y",
}
"KC_U": {
"key": "KR_U",
"label": "U",
}
"KC_I": {
"key": "KR_I",
"label": "I",
}
"KC_O": {
"key": "KR_O",
"label": "O",
}
"KC_P": {
"key": "KR_P",
"label": "P",
}
"KC_LBRC": {
"key": "KR_LBRC",
"label": "[",
}
"KC_RBRC": {
"key": "KR_RBRC",
"label": "]",
}
"KC_BSLS": {
"key": "KR_WON",
"label": "₩",
}
"KC_A": {
"key": "KR_A",
"label": "A",
}
"KC_S": {
"key": "KR_S",
"label": "S",
}
"KC_D": {
"key": "KR_D",
"label": "D",
}
"KC_F": {
"key": "KR_F",
"label": "F",
}
"KC_G": {
"key": "KR_G",
"label": "G",
}
"KC_H": {
"key": "KR_H",
"label": "H",
}
"KC_J": {
"key": "KR_J",
"label": "J",
}
"KC_K": {
"key": "KR_K",
"label": "K",
}
"KC_L": {
"key": "KR_L",
"label": "L",
}
"KC_SCLN": {
"key": "KR_SCLN",
"label": ";",
}
"KC_QUOT": {
"key": "KR_QUOT",
"label": "'",
}
"KC_Z": {
"key": "KR_Z",
"label": "Z",
}
"KC_X": {
"key": "KR_X",
"label": "X",
}
"KC_C": {
"key": "KR_C",
"label": "C",
}
"KC_V": {
"key": "KR_V",
"label": "V",
}
"KC_B": {
"key": "KR_B",
"label": "B",
}
"KC_N": {
"key": "KR_N",
"label": "N",
}
"KC_M": {
"key": "KR_M",
"label": "M",
}
"KC_COMM": {
"key": "KR_COMM",
"label": ",",
}
"KC_DOT": {
"key": "KR_DOT",
"label": ".",
}
"KC_SLSH": {
"key": "KR_SLSH",
"label": "/",
}
"KC_LNG2": {
"key": "KR_HANJ",
"label": "Hanja (한자)",
}
"KC_LNG1": {
"key": "KR_HAEN",
"label": "Han ↔ Yeong (한 ↔ 영)",
}
/* Shifted symbols
* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐
* │ ~ │ ! │ @ │ # │ $ │ % │ ^ │ & │ * │ ( │ ) │ _ │ + │ │
* ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤
* │ │ │ │ │ │ │ │ │ │ │ │ { │ } │ | │
* ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤
* │ │ │ │ │ │ │ │ │ │ │ : │ " │ │
* ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────────┤
* │ │ │ │ │ │ │ │ │ < │ > │ ? │ │
* ├─────┬──┴┬──┴──┬┴──┬┴───┴───┴───┴──┬┴──┬┴───┴┬──┴┬───┬─────┤
* │ │ │ │ │ │ │ │ │ │ │
* └─────┴───┴─────┴───┴───────────────┴───┴─────┴───┴───┴─────┘
*/
"S(KR_GRV)": {
"key": "KR_TILD",
"label": "~",
}
"S(KR_1)": {
"key": "KR_EXLM",
"label": "!",
}
"S(KR_2)": {
"key": "KR_AT",
"label": "@",
}
"S(KR_3)": {
"key": "KR_HASH",
"label": "#",
}
"S(KR_4)": {
"key": "KR_DLR",
"label": "$",
}
"S(KR_5)": {
"key": "KR_PERC",
"label": "%",
}
"S(KR_6)": {
"key": "KR_CIRC",
"label": "^",
}
"S(KR_7)": {
"key": "KR_AMPR",
"label": "&",
}
"S(KR_8)": {
"key": "KR_ASTR",
"label": "*",
}
"S(KR_9)": {
"key": "KR_LPRN",
"label": "(",
}
"S(KR_0)": {
"key": "KR_RPRN",
"label": ")",
}
"S(KR_MINS)": {
"key": "KR_UNDS",
"label": "_",
}
"S(KR_EQL)": {
"key": "KR_PLUS",
"label": "+",
}
"S(KR_LBRC)": {
"key": "KR_LCBR",
"label": "{",
}
"S(KR_RBRC)": {
"key": "KR_RCBR",
"label": "}",
}
"S(KR_WON)": {
"key": "KR_PIPE",
"label": "|",
}
"S(KR_SCLN)": {
"key": "KR_COLN",
"label": ":",
}
"S(KR_QUOT)": {
"key": "KR_DQUO",
"label": "\"",
}
"S(KR_COMM)": {
"key": "KR_LABK",
"label": "<",
}
"S(KR_DOT)": {
"key": "KR_RABK",
"label": ">",
}
"S(KR_SLSH)": {
"key": "KR_QUES",
"label": "?",
}
}
}

View File

@@ -1,440 +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": "LV_GRV",
"label": "`",
}
"KC_1": {
"key": "LV_1",
"label": "1",
}
"KC_2": {
"key": "LV_2",
"label": "2",
}
"KC_3": {
"key": "LV_3",
"label": "3",
}
"KC_4": {
"key": "LV_4",
"label": "4",
}
"KC_5": {
"key": "LV_5",
"label": "5",
}
"KC_6": {
"key": "LV_6",
"label": "6",
}
"KC_7": {
"key": "LV_7",
"label": "7",
}
"KC_8": {
"key": "LV_8",
"label": "8",
}
"KC_9": {
"key": "LV_9",
"label": "9",
}
"KC_0": {
"key": "LV_0",
"label": "0",
}
"KC_MINS": {
"key": "LV_MINS",
"label": "-",
}
"KC_EQL": {
"key": "LV_EQL",
"label": "=",
}
"KC_Q": {
"key": "LV_Q",
"label": "Q",
}
"KC_W": {
"key": "LV_W",
"label": "W",
}
"KC_E": {
"key": "LV_E",
"label": "E",
}
"KC_R": {
"key": "LV_R",
"label": "R",
}
"KC_T": {
"key": "LV_T",
"label": "T",
}
"KC_Y": {
"key": "LV_Y",
"label": "Y",
}
"KC_U": {
"key": "LV_U",
"label": "U",
}
"KC_I": {
"key": "LV_I",
"label": "I",
}
"KC_O": {
"key": "LV_O",
"label": "O",
}
"KC_P": {
"key": "LV_P",
"label": "P",
}
"KC_LBRC": {
"key": "LV_LBRC",
"label": "[",
}
"KC_RBRC": {
"key": "LV_RBRC",
"label": "]",
}
"KC_A": {
"key": "LV_A",
"label": "A",
}
"KC_S": {
"key": "LV_S",
"label": "S",
}
"KC_D": {
"key": "LV_D",
"label": "D",
}
"KC_F": {
"key": "LV_F",
"label": "F",
}
"KC_G": {
"key": "LV_G",
"label": "G",
}
"KC_H": {
"key": "LV_H",
"label": "H",
}
"KC_J": {
"key": "LV_J",
"label": "J",
}
"KC_K": {
"key": "LV_K",
"label": "K",
}
"KC_L": {
"key": "LV_L",
"label": "L",
}
"KC_SCLN": {
"key": "LV_SCLN",
"label": ";",
}
"KC_QUOT": {
"key": "LV_QUOT",
"label": "' (dead)",
}
"KC_NUHS": {
"key": "LV_BSLS",
"label": "\\",
}
"KC_NUBS": {
"key": "LV_NUBS",
"label": "\\",
}
"KC_Z": {
"key": "LV_Z",
"label": "Z",
}
"KC_X": {
"key": "LV_X",
"label": "X",
}
"KC_C": {
"key": "LV_C",
"label": "C",
}
"KC_V": {
"key": "LV_V",
"label": "V",
}
"KC_B": {
"key": "LV_B",
"label": "B",
}
"KC_N": {
"key": "LV_N",
"label": "N",
}
"KC_M": {
"key": "LV_M",
"label": "M",
}
"KC_COMM": {
"key": "LV_COMM",
"label": ",",
}
"KC_DOT": {
"key": "LV_DOT",
"label": ".",
}
"KC_SLSH": {
"key": "LV_SLSH",
"label": "/",
}
/* Shifted symbols
* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐
* │ ~ │ ! │ @ │ # │ $ │ % │ ^ │ & │ * │ ( │ ) │ _ │ + │ │
* ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤
* │ │ │ │ │ │ │ │ │ │ │ │ { │ } │ │
* ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │
* │ │ │ │ │ │ │ │ │ │ │ : │ " │ | │ │
* ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤
* │ │ │ │ │ │ │ │ │ │ < │ > │ ? │ │
* ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤
* │ │ │ │ │ │ │ │ │
* └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘
*/
"S(LV_GRV)": {
"key": "LV_TILD",
"label": "~",
}
"S(LV_1)": {
"key": "LV_EXLM",
"label": "!",
}
"S(LV_2)": {
"key": "LV_AT",
"label": "@",
}
"S(LV_3)": {
"key": "LV_HASH",
"label": "#",
}
"S(LV_4)": {
"key": "LV_DLR",
"label": "$",
}
"S(LV_5)": {
"key": "LV_PERC",
"label": "%",
}
"S(LV_6)": {
"key": "LV_CIRC",
"label": "^",
}
"S(LV_7)": {
"key": "LV_AMPR",
"label": "&",
}
"S(LV_8)": {
"key": "LV_ASTR",
"label": "*",
}
"S(LV_9)": {
"key": "LV_LPRN",
"label": "(",
}
"S(LV_0)": {
"key": "LV_RPRN",
"label": ")",
}
"S(LV_MINS)": {
"key": "LV_UNDS",
"label": "_",
}
"S(LV_EQL)": {
"key": "LV_PLUS",
"label": "+",
}
"S(LV_LBRC)": {
"key": "LV_LCBR",
"label": "{",
}
"S(LV_RBRC)": {
"key": "LV_RCBR",
"label": "}",
}
"S(LV_SCLN)": {
"key": "LV_COLN",
"label": ":",
}
"S(LV_QUOT)": {
"key": "LV_DQUO",
"label": "\" (dead)",
}
"S(LV_BSLS)": {
"key": "LV_PIPE",
"label": "|",
}
"S(LV_COMM)": {
"key": "LV_LABK",
"label": "<",
}
"S(LV_DOT)": {
"key": "LV_RABK",
"label": ">",
}
"S(LV_SLSH)": {
"key": "LV_QUES",
"label": "?",
}
/* AltGr symbols
* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐
* │ - │ │ « │ » │ € │ │ │ │ │ │ │ │ │ │
* ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤
* │ │ │ │ Ē │ Ŗ │ │ │ Ū │ Ī │ Ō │ │ │ │ │
* ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │
* │ │ Ā │ Š │ │ │ Ģ │ │ │ Ķ │ Ļ │ │ ´ │ │ │
* ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤
* │ │ │ Ž │ │ Č │ │ │ Ņ │ │ │ │ │ │
* ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤
* │ │ │ │ │ │ │ │ │
* └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘
*/
"ALGR(LV_GRV)": {
"key": "LV_SHYP",
"label": "­ (soft hyphen)",
}
"ALGR(LV_1)": {
"key": "LV_NBSP",
"label": "(non-breaking space)",
}
"ALGR(LV_2)": {
"key": "LV_LDAQ",
"label": "«",
}
"ALGR(LV_3)": {
"key": "LV_RDAQ",
"label": "»",
}
"ALGR(LV_4)": {
"key": "LV_EURO",
"label": "€",
}
"ALGR(LV_6)": {
"key": "LV_RSQU",
"label": "",
}
"ALGR(LV_MINS)": {
"key": "LV_NDSH",
"label": "",
}
"ALGR(LV_E)": {
"key": "LV_EMAC",
"label": "Ē",
}
"ALGR(LV_R)": {
"key": "LV_RCED",
"label": "Ŗ",
}
"ALGR(LV_U)": {
"key": "LV_UMAC",
"label": "Ū",
}
"ALGR(LV_I)": {
"key": "LV_IMAC",
"label": "Ī",
}
"ALGR(LV_O)": {
"key": "LV_OMAC",
"label": "Ō",
}
"ALGR(LV_A)": {
"key": "LV_AMAC",
"label": "Ā",
}
"ALGR(LV_S)": {
"key": "LV_SCAR",
"label": "Š",
}
"ALGR(LV_G)": {
"key": "LV_GCED",
"label": "Ģ",
}
"ALGR(LV_K)": {
"key": "LV_KCED",
"label": "Ķ",
}
"ALGR(LV_L)": {
"key": "LV_LCED",
"label": "Ļ",
}
"ALGR(LV_QUOT)": {
"key": "LV_ACUT",
"label": "´ (dead)",
}
"ALGR(LV_Z)": {
"key": "LV_ZCAR",
"label": "Ž",
}
"ALGR(LV_C)": {
"key": "LV_CCAR",
"label": "Č",
}
"ALGR(LV_N)": {
"key": "LV_NCED",
"label": "Ņ",
}
/* Shift+AltGr symbols
* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐
* │ │ │ │ │ § │ ° │ │ ± │ × │ │ │ — │ │ │
* ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤
* │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
* ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │
* │ │ │ │ │ │ │ │ │ │ │ │ ¨ │ │ │
* ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤
* │ │ │ │ │ │ │ │ │ │ │ │ │ │
* ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤
* │ │ │ │ │ │ │ │ │
* └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘
*/
"S(ALGR(LV_4))": {
"key": "LV_SECT",
"label": "§",
}
"S(ALGR(LV_5))": {
"key": "LV_DEG",
"label": "°",
}
"S(ALGR(LV_7))": {
"key": "LV_PLMN",
"label": "±",
}
"S(ALGR(LV_8))": {
"key": "LV_MUL",
"label": "×",
}
"S(ALGR(LV_MINS))": {
"key": "LV_MDSH",
"label": "—",
}
"S(ALGR(LV_QUOT))": {
"key": "LV_DIAE",
"label": "¨ (dead)",
}
}
}

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