From 421125211741993ba874068dadf4ab371d4d13de Mon Sep 17 00:00:00 2001 From: noroadsleft <18669334+noroadsleft@users.noreply.github.com> Date: Sat, 13 Jul 2019 13:33:44 -0700 Subject: [Docs] Fix indented subheading on faq_debug.md (#6320) --- docs/faq_debug.md | 1 + 1 file changed, 1 insertion(+) (limited to 'docs') diff --git a/docs/faq_debug.md b/docs/faq_debug.md index 7c1690d13..f6cc729b6 100644 --- a/docs/faq_debug.md +++ b/docs/faq_debug.md @@ -87,6 +87,7 @@ Size after: - EEPROM has around a 100000 write cycle. You shouldn't rewrite the firmware repeatedly and continually; that'll burn the EEPROM eventually. + ## NKRO Doesn't work First you have to compile firmware with this build option `NKRO_ENABLE` in **Makefile**. -- cgit v1.2.3-70-g09d2 From a25dd58bc56b0c4010673723ac44eaff914979bb Mon Sep 17 00:00:00 2001 From: skullydazed Date: Mon, 15 Jul 2019 12:14:27 -0700 Subject: QMK CLI and JSON keymap support (#6176) * Script to generate keymap.c from JSON file. * Support for keymap.json * Add a warning about the keymap.c getting overwritten. * Fix keymap generating * Install the python deps * Flesh out more of the python environment * Remove defunct json2keymap * Style everything with yapf * Polish up python support * Hide json keymap.c into the .build dir * Polish up qmk-compile-json * Make milc work with positional arguments * Fix a couple small things * Fix some errors and make the CLI more understandable * Make the qmk wrapper more robust * Add basic QMK Doctor * Clean up docstrings and flesh them out as needed * remove unused compile_firmware() function --- .editorconfig | 4 + .gitignore | 3 + bin/qmk | 97 +++ bin/qmk-compile-json | 1 + bin/qmk-doctor | 1 + bin/qmk-hello | 1 + bin/qmk-json-keymap | 1 + build_json.mk | 27 + build_keyboard.mk | 60 +- docs/_summary.md | 4 + docs/cli.md | 31 + docs/coding_conventions_c.md | 58 ++ docs/coding_conventions_python.md | 314 +++++++++ docs/contributing.md | 58 +- docs/python_development.md | 45 ++ .../clueboard/66_hotswap/keymaps/json/keymap.json | 1 + lib/python/milc.py | 716 +++++++++++++++++++++ lib/python/qmk/__init__.py | 0 lib/python/qmk/cli/compile/__init__.py | 0 lib/python/qmk/cli/compile/json.py | 44 ++ lib/python/qmk/cli/doctor.py | 47 ++ lib/python/qmk/cli/hello.py | 13 + lib/python/qmk/cli/json/__init__.py | 0 lib/python/qmk/cli/json/keymap.py | 54 ++ lib/python/qmk/errors.py | 6 + lib/python/qmk/keymap.py | 100 +++ lib/python/qmk/path.py | 32 + requirements.txt | 5 + setup.cfg | 330 ++++++++++ util/freebsd_install.sh | 2 + util/linux_install.sh | 5 + util/macos_install.sh | 3 + util/msys2_install.sh | 3 + util/wsl_install.sh | 5 +- 34 files changed, 1988 insertions(+), 83 deletions(-) create mode 100755 bin/qmk create mode 120000 bin/qmk-compile-json create mode 120000 bin/qmk-doctor create mode 120000 bin/qmk-hello create mode 120000 bin/qmk-json-keymap create mode 100644 build_json.mk create mode 100644 docs/cli.md create mode 100644 docs/coding_conventions_c.md create mode 100644 docs/coding_conventions_python.md create mode 100644 docs/python_development.md create mode 100644 keyboards/clueboard/66_hotswap/keymaps/json/keymap.json create mode 100644 lib/python/milc.py create mode 100644 lib/python/qmk/__init__.py create mode 100644 lib/python/qmk/cli/compile/__init__.py create mode 100755 lib/python/qmk/cli/compile/json.py create mode 100755 lib/python/qmk/cli/doctor.py create mode 100755 lib/python/qmk/cli/hello.py create mode 100644 lib/python/qmk/cli/json/__init__.py create mode 100755 lib/python/qmk/cli/json/keymap.py create mode 100644 lib/python/qmk/errors.py create mode 100644 lib/python/qmk/keymap.py create mode 100644 lib/python/qmk/path.py create mode 100644 requirements.txt create mode 100644 setup.cfg (limited to 'docs') diff --git a/.editorconfig b/.editorconfig index 26e3a39cf..60827f04b 100644 --- a/.editorconfig +++ b/.editorconfig @@ -16,6 +16,10 @@ insert_final_newline = true trim_trailing_whitespace = false indent_size = 4 +[{qmk,*.py}] +charset = utf-8 +max_line_length = 200 + # Make these match what we have in .gitattributes [*.mk] end_of_line = lf diff --git a/.gitignore b/.gitignore index 7cd7fa801..140bf4aa7 100644 --- a/.gitignore +++ b/.gitignore @@ -70,3 +70,6 @@ util/Win_Check_Output.txt secrets.tar id_rsa_* /.vs + +# python things +__pycache__ diff --git a/bin/qmk b/bin/qmk new file mode 100755 index 000000000..c34365bed --- /dev/null +++ b/bin/qmk @@ -0,0 +1,97 @@ +#!/usr/bin/env python3 +"""CLI wrapper for running QMK commands. +""" +import os +import subprocess +import sys +from glob import glob +from time import strftime +from importlib import import_module +from importlib.util import find_spec + +# Add the QMK python libs to our path +script_dir = os.path.dirname(os.path.realpath(__file__)) +qmk_dir = os.path.abspath(os.path.join(script_dir, '..')) +python_lib_dir = os.path.abspath(os.path.join(qmk_dir, 'lib', 'python')) +sys.path.append(python_lib_dir) + +# Change to the root of our checkout +os.environ['ORIG_CWD'] = os.getcwd() +os.chdir(qmk_dir) + +# Make sure our modules have been setup +with open('requirements.txt', 'r') as fd: + for line in fd.readlines(): + line = line.strip().replace('<', '=').replace('>', '=') + + if line[0] == '#': + continue + + if '#' in line: + line = line.split('#')[0] + + module = line.split('=')[0] if '=' in line else line + if not find_spec(module): + print('Your QMK build environment is not fully setup!\n') + print('Please run `./util/qmk_install.sh` to setup QMK.') + exit(255) + +# Figure out our version +command = ['git', 'describe', '--abbrev=6', '--dirty', '--always', '--tags'] +result = subprocess.run(command, text=True, capture_output=True) + +if result.returncode == 0: + os.environ['QMK_VERSION'] = 'QMK ' + result.stdout.strip() +else: + os.environ['QMK_VERSION'] = 'QMK ' + strftime('%Y-%m-%d-%H:%M:%S') + +# Setup the CLI +import milc +milc.EMOJI_LOGLEVELS['INFO'] = '{fg_blue}ψ{style_reset_all}' + +# If we were invoked as `qmk ` massage sys.argv into `qmk-`. +# This means we can't accept arguments to the qmk script itself. +script_name = os.path.basename(sys.argv[0]) +if script_name == 'qmk': + if len(sys.argv) == 1: + milc.cli.log.error('No subcommand specified!\n') + + if len(sys.argv) == 1 or sys.argv[1] in ['-h', '--help']: + milc.cli.echo('usage: qmk [...]') + milc.cli.echo('\nsubcommands:') + subcommands = glob(os.path.join(qmk_dir, 'bin', 'qmk-*')) + for subcommand in sorted(subcommands): + subcommand = os.path.basename(subcommand).split('-', 1)[1] + milc.cli.echo('\t%s', subcommand) + milc.cli.echo('\nqmk --help for more information') + exit(1) + + if sys.argv[1] in ['-V', '--version']: + milc.cli.echo(os.environ['QMK_VERSION']) + exit(0) + + sys.argv[0] = script_name = '-'.join((script_name, sys.argv[1])) + del sys.argv[1] + +# Look for which module to import +if script_name == 'qmk': + milc.cli.print_help() + exit(0) +elif not script_name.startswith('qmk-'): + milc.cli.log.error('Invalid symlink, must start with "qmk-": %s', script_name) +else: + subcommand = script_name.replace('-', '.').replace('_', '.').split('.') + subcommand.insert(1, 'cli') + subcommand = '.'.join(subcommand) + + try: + import_module(subcommand) + except ModuleNotFoundError as e: + if e.__class__.__name__ != subcommand: + raise + + milc.cli.log.error('Invalid subcommand! Could not import %s.', subcommand) + exit(1) + +if __name__ == '__main__': + milc.cli() diff --git a/bin/qmk-compile-json b/bin/qmk-compile-json new file mode 120000 index 000000000..c92dce8a1 --- /dev/null +++ b/bin/qmk-compile-json @@ -0,0 +1 @@ +qmk \ No newline at end of file diff --git a/bin/qmk-doctor b/bin/qmk-doctor new file mode 120000 index 000000000..c92dce8a1 --- /dev/null +++ b/bin/qmk-doctor @@ -0,0 +1 @@ +qmk \ No newline at end of file diff --git a/bin/qmk-hello b/bin/qmk-hello new file mode 120000 index 000000000..c92dce8a1 --- /dev/null +++ b/bin/qmk-hello @@ -0,0 +1 @@ +qmk \ No newline at end of file diff --git a/bin/qmk-json-keymap b/bin/qmk-json-keymap new file mode 120000 index 000000000..c92dce8a1 --- /dev/null +++ b/bin/qmk-json-keymap @@ -0,0 +1 @@ +qmk \ No newline at end of file diff --git a/build_json.mk b/build_json.mk new file mode 100644 index 000000000..2e23ed148 --- /dev/null +++ b/build_json.mk @@ -0,0 +1,27 @@ +# Look for a json keymap file +ifneq ("$(wildcard $(MAIN_KEYMAP_PATH_5)/keymap.json)","") + KEYMAP_C := $(KEYBOARD_OUTPUT)/src/keymap.c + KEYMAP_JSON := $(MAIN_KEYMAP_PATH_5)/keymap.json + KEYMAP_PATH := $(MAIN_KEYMAP_PATH_5) +else ifneq ("$(wildcard $(MAIN_KEYMAP_PATH_4)/keymap.json)","") + KEYMAP_C := $(KEYBOARD_OUTPUT)/src/keymap.c + KEYMAP_JSON := $(MAIN_KEYMAP_PATH_4)/keymap.json + KEYMAP_PATH := $(MAIN_KEYMAP_PATH_4) +else ifneq ("$(wildcard $(MAIN_KEYMAP_PATH_3)/keymap.json)","") + KEYMAP_C := $(KEYBOARD_OUTPUT)/src/keymap.c + KEYMAP_JSON := $(MAIN_KEYMAP_PATH_3)/keymap.json + KEYMAP_PATH := $(MAIN_KEYMAP_PATH_3) +else ifneq ("$(wildcard $(MAIN_KEYMAP_PATH_2)/keymap.json)","") + KEYMAP_C := $(KEYBOARD_OUTPUT)/src/keymap.c + KEYMAP_JSON := $(MAIN_KEYMAP_PATH_2)/keymap.json + KEYMAP_PATH := $(MAIN_KEYMAP_PATH_2) +else ifneq ("$(wildcard $(MAIN_KEYMAP_PATH_1)/keymap.json)","") + KEYMAP_C := $(KEYBOARD_OUTPUT)/src/keymap.c + KEYMAP_JSON := $(MAIN_KEYMAP_PATH_1)/keymap.json + KEYMAP_PATH := $(MAIN_KEYMAP_PATH_1) +endif + +# Generate the keymap.c +ifneq ("$(KEYMAP_JSON)","") + _ = $(shell bin/qmk-json-keymap -f $(KEYMAP_JSON) -o $(KEYMAP_C)) +endif diff --git a/build_keyboard.mk b/build_keyboard.mk index 213cb4445..0e3c5ea23 100644 --- a/build_keyboard.mk +++ b/build_keyboard.mk @@ -98,31 +98,38 @@ 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) -ifneq ("$(wildcard $(MAIN_KEYMAP_PATH_5)/keymap.c)","") - -include $(MAIN_KEYMAP_PATH_5)/rules.mk - KEYMAP_C := $(MAIN_KEYMAP_PATH_5)/keymap.c - KEYMAP_PATH := $(MAIN_KEYMAP_PATH_5) -else ifneq ("$(wildcard $(MAIN_KEYMAP_PATH_4)/keymap.c)","") - -include $(MAIN_KEYMAP_PATH_4)/rules.mk - KEYMAP_C := $(MAIN_KEYMAP_PATH_4)/keymap.c - KEYMAP_PATH := $(MAIN_KEYMAP_PATH_4) -else ifneq ("$(wildcard $(MAIN_KEYMAP_PATH_3)/keymap.c)","") - -include $(MAIN_KEYMAP_PATH_3)/rules.mk - KEYMAP_C := $(MAIN_KEYMAP_PATH_3)/keymap.c - KEYMAP_PATH := $(MAIN_KEYMAP_PATH_3) -else ifneq ("$(wildcard $(MAIN_KEYMAP_PATH_2)/keymap.c)","") - -include $(MAIN_KEYMAP_PATH_2)/rules.mk - KEYMAP_C := $(MAIN_KEYMAP_PATH_2)/keymap.c - KEYMAP_PATH := $(MAIN_KEYMAP_PATH_2) -else ifneq ("$(wildcard $(MAIN_KEYMAP_PATH_1)/keymap.c)","") - -include $(MAIN_KEYMAP_PATH_1)/rules.mk - KEYMAP_C := $(MAIN_KEYMAP_PATH_1)/keymap.c - KEYMAP_PATH := $(MAIN_KEYMAP_PATH_1) -else ifneq ($(LAYOUTS),) - include build_layout.mk -else - $(error Could not find keymap) - # this state should never be reached +# Check for keymap.json first, so we can regenerate keymap.c +include build_json.mk + +ifeq ("$(wildcard $(KEYMAP_PATH))", "") + # Look through the possible keymap folders until we find a matching keymap.c + ifneq ("$(wildcard $(MAIN_KEYMAP_PATH_5)/keymap.c)","") + -include $(MAIN_KEYMAP_PATH_5)/rules.mk + KEYMAP_C := $(MAIN_KEYMAP_PATH_5)/keymap.c + KEYMAP_PATH := $(MAIN_KEYMAP_PATH_5) + else ifneq ("$(wildcard $(MAIN_KEYMAP_PATH_4)/keymap.c)","") + -include $(MAIN_KEYMAP_PATH_4)/rules.mk + KEYMAP_C := $(MAIN_KEYMAP_PATH_4)/keymap.c + KEYMAP_PATH := $(MAIN_KEYMAP_PATH_4) + else ifneq ("$(wildcard $(MAIN_KEYMAP_PATH_3)/keymap.c)","") + -include $(MAIN_KEYMAP_PATH_3)/rules.mk + KEYMAP_C := $(MAIN_KEYMAP_PATH_3)/keymap.c + KEYMAP_PATH := $(MAIN_KEYMAP_PATH_3) + else ifneq ("$(wildcard $(MAIN_KEYMAP_PATH_2)/keymap.c)","") + -include $(MAIN_KEYMAP_PATH_2)/rules.mk + KEYMAP_C := $(MAIN_KEYMAP_PATH_2)/keymap.c + KEYMAP_PATH := $(MAIN_KEYMAP_PATH_2) + else ifneq ("$(wildcard $(MAIN_KEYMAP_PATH_1)/keymap.c)","") + -include $(MAIN_KEYMAP_PATH_1)/rules.mk + KEYMAP_C := $(MAIN_KEYMAP_PATH_1)/keymap.c + KEYMAP_PATH := $(MAIN_KEYMAP_PATH_1) + else ifneq ($(LAYOUTS),) + # If we haven't found a keymap yet fall back to community layouts + include build_layout.mk + else + $(error Could not find keymap) + # this state should never be reached + endif endif ifeq ($(strip $(CTPC)), yes) @@ -313,7 +320,6 @@ ifneq ("$(wildcard $(USER_PATH)/config.h)","") CONFIG_H += $(USER_PATH)/config.h endif - # Object files directory # To put object files in current directory, use a dot (.), do NOT make # this an empty or blank macro! @@ -323,7 +329,7 @@ ifneq ("$(wildcard $(KEYMAP_PATH)/config.h)","") CONFIG_H += $(KEYMAP_PATH)/config.h endif -# # project specific files +# project specific files SRC += $(KEYBOARD_SRC) \ $(KEYMAP_C) \ $(QUANTUM_SRC) diff --git a/docs/_summary.md b/docs/_summary.md index 8a40ccd7f..611c283ac 100644 --- a/docs/_summary.md +++ b/docs/_summary.md @@ -8,6 +8,7 @@ * [QMK Basics](README.md) * [QMK Introduction](getting_started_introduction.md) + * [QMK CLI](cli.md) * [Contributing to QMK](contributing.md) * [How to Use Github](getting_started_github.md) * [Getting Help](getting_started_getting_help.md) @@ -34,6 +35,8 @@ * [Keyboard Guidelines](hardware_keyboard_guidelines.md) * [Config Options](config_options.md) * [Keycodes](keycodes.md) + * [Coding Conventions - C](coding_conventions_c.md) + * [Coding Conventions - Python](coding_conventions_python.md) * [Documentation Best Practices](documentation_best_practices.md) * [Documentation Templates](documentation_templates.md) * [Glossary](reference_glossary.md) @@ -41,6 +44,7 @@ * [Useful Functions](ref_functions.md) * [Configurator Support](reference_configurator_support.md) * [info.json Format](reference_info_json.md) + * [Python Development](python_development.md) * [Features](features.md) * [Basic Keycodes](keycodes_basic.md) diff --git a/docs/cli.md b/docs/cli.md new file mode 100644 index 000000000..0365f2c9c --- /dev/null +++ b/docs/cli.md @@ -0,0 +1,31 @@ +# QMK CLI + +This page describes how to setup and use the QMK CLI. + +# Overview + +The QMK CLI makes building and working with QMK keyboards easier. We have provided a number of commands to help you work with QMK: + +* `qmk compile-json` + +# Setup + +Simply add the `qmk_firmware/bin` directory to your `PATH`. You can run the `qmk` commands from any directory. + +``` +export PATH=$PATH:$HOME/qmk_firmware/bin +``` + +You may want to add this to your `.profile`, `.bash_profile`, `.zsh_profile`, or other shell startup scripts. + +# Commands + +## `qmk compile-json` + +This command allows you to compile JSON files you have downloaded from . + +**Usage**: + +``` +qmk compile-json mine.json +``` diff --git a/docs/coding_conventions_c.md b/docs/coding_conventions_c.md new file mode 100644 index 000000000..cbddedf8b --- /dev/null +++ b/docs/coding_conventions_c.md @@ -0,0 +1,58 @@ +# Coding Conventions (C) + +Most of our style is pretty easy to pick up on, but right now it's not entirely consistent. You should match the style of the code surrounding your change, but if that code is inconsistent or unclear use the following guidelines: + +* We indent using four (4) spaces (soft tabs) +* We use a modified One True Brace Style + * Opening Brace: At the end of the same line as the statement that opens the block + * Closing Brace: Lined up with the first character of the statement that opens the block + * Else If: Place the closing brace at the beginning of the line and the next opening brace at the end of the same line. + * Optional Braces: Always include optional braces. + * Good: if (condition) { return false; } + * Bad: if (condition) return false; +* We encourage use of C style comments: `/* */` + * Think of them as a story describing the feature + * Use them liberally to explain why particular decisions were made. + * Do not write obvious comments + * If you not sure if a comment is obvious, go ahead and include it. +* In general we don't wrap lines, they can be as long as needed. If you do choose to wrap lines please do not wrap any wider than 76 columns. +* We use `#pragma once` at the start of header files rather than old-style include guards (`#ifndef THIS_FILE_H`, `#define THIS_FILE_H`, ..., `#endif`) +* We accept both forms of preprocessor if's: `#ifdef DEFINED` and `#if defined(DEFINED)` + * If you are not sure which to prefer use the `#if defined(DEFINED)` form. + * Do not change existing code from one style to the other, except when moving to a multiple condition `#if`. + * Do not put whitespace between `#` and `if`. + * When deciding how (or if) to indent directives keep these points in mind: + * Readability is more important than consistency. + * Follow the file's existing style. If the file is mixed follow the style that makes sense for the section you are modifying. + * When choosing to indent you can follow the indention level of the surrounding C code, or preprocessor directives can have their own indent level. Choose the style that best communicates the intent of your code. + +Here is an example for easy reference: + +```c +/* Enums for foo */ +enum foo_state { + FOO_BAR, + FOO_BAZ, +}; + +/* Returns a value */ +int foo(void) { + if (some_condition) { + return FOO_BAR; + } else { + return -1; + } +} +``` + +# Auto-formatting with clang-format + +[Clang-format](https://clang.llvm.org/docs/ClangFormat.html) is part of LLVM and can automatically format your code for you, because ain't nobody got time to do it manually. We supply a configuration file for it that applies most of the coding conventions listed above. It will only change whitespace and newlines, so you will still have to remember to include optional braces yourself. + +Use the [full LLVM installer](http://llvm.org/builds/) to get clang-format on Windows, or use `sudo apt install clang-format` on Ubuntu. + +If you run it from the command-line, pass `-style=file` as an option and it will automatically find the .clang-format configuration file in the QMK root directory. + +If you use VSCode, the standard C/C++ plugin supports clang-format, alternatively there is a [separate extension](https://marketplace.visualstudio.com/items?itemName=LLVMExtensions.ClangFormat) for it. + +Some things (like LAYOUT macros) are destroyed by clang-format, so either don't run it on those files, or wrap the sensitive code in `// clang-format off` and `// clang-format on`. diff --git a/docs/coding_conventions_python.md b/docs/coding_conventions_python.md new file mode 100644 index 000000000..c7743050e --- /dev/null +++ b/docs/coding_conventions_python.md @@ -0,0 +1,314 @@ +# Coding Conventions (Python) + +Most of our style follows PEP8 with some local modifications to make things less nit-picky. + +* We target Python 3.5 for compatability with all supported platforms. +* We indent using four (4) spaces (soft tabs) +* We encourage liberal use of comments + * Think of them as a story describing the feature + * Use them liberally to explain why particular decisions were made. + * Do not write obvious comments + * If you not sure if a comment is obvious, go ahead and include it. +* We require useful docstrings for all functions. +* In general we don't wrap lines, they can be as long as needed. If you do choose to wrap lines please do not wrap any wider than 76 columns. +* Some of our practices conflict with the wider python community to make our codebase more approachable to non-pythonistas. + +# YAPF + +You can use [yapf](https://github.com/google/yapf) to style your code. We provide a config in [setup.cfg](setup.cfg). + +# Imports + +We don't have a hard and fast rule for when to use `import ...` vs `from ... import ...`. Understandability and maintainability is our ultimate goal. + +Generally we prefer to import specific function and class names from a module to keep code shorter and easier to understand. Sometimes this results in a name that is ambiguous, and in such cases we prefer to import the module instead. You should avoid using the "as" keyword when importing, unless you are importing a compatability module. + +Imports should be one line per module. We group import statements together using the standard python rules- system, 3rd party, local. + +Do not use `from foo import *`. Supply a list of objects you want to import instead, or import the whole module. + +## Import Examples + +Good: + +``` +from qmk import effects + +effects.echo() +``` + +Bad: + +``` +from qmk.effects import echo + +echo() # It's unclear where echo comes from +``` + +Good: + +``` +from qmk.keymap import compile_firmware + +compile_firmware() +``` + +OK, but the above is better: + +``` +import qmk.keymap + +qmk.keymap.compile_firmware() +``` + +# Statements + +One statement per line. + +Even when allowed (EG `if foo: bar`) we do not combine 2 statements onto a single line. + +# Naming + +`module_name`, `package_name`, `ClassName`, `method_name`, `ExceptionName`, `function_name`, `GLOBAL_CONSTANT_NAME`, `global_var_name`, `instance_var_name`, `function_parameter_name`, `local_var_name`. + +Function names, variable names, and filenames should be descriptive; eschew abbreviation. In particular, do not use abbreviations that are ambiguous or unfamiliar to readers outside your project, and do not abbreviate by deleting letters within a word. + +Always use a .py filename extension. Never use dashes. + +## Names to Avoid + +* single character names except for counters or iterators. You may use "e" as an exception identifier in try/except statements. +* dashes (-) in any package/module name +* __double_leading_and_trailing_underscore__ names (reserved by Python) + +# Docstrings + +To maintain consistency with our docstrings we've set out the following guidelines. + +* Use markdown formatting +* Always use triple-dquote docstrings with at least one linebreak: `"""\n"""` +* First line is a short (< 70 char) description of what the function does +* If you need more in your docstring leave a blank line between the description and the rest. +* Start indented lines at the same indent level as the opening triple-dquote +* Document all function arguments using the format described below +* If present, Args:, Returns:, and Raises: should be the last three things in the docstring, separated by a blank line each. + +## Simple docstring example + +``` +def my_awesome_function(): + """Return the number of seconds since 1970 Jan 1 00:00 UTC. + """ + return int(time.time()) +``` + +## Complex docstring example + +``` +def my_awesome_function(): + """Return the number of seconds since 1970 Jan 1 00:00 UTC. + + This function always returns an integer number of seconds. + """ + return int(time.time()) +``` + +## Function arguments docstring example + +``` +def my_awesome_function(start=None, offset=0): + """Return the number of seconds since 1970 Jan 1 00:00 UTC. + + This function always returns an integer number of seconds. + + + Args: + start + The time to start at instead of 1970 Jan 1 00:00 UTC + + offset + Return an answer that has this number of seconds subtracted first + + Returns: + An integer describing a number of seconds. + + Raises: + ValueError + When `start` or `offset` are not positive numbers + """ + if start < 0 or offset < 0: + raise ValueError('start and offset must be positive numbers.') + + if not start: + start = time.time() + + return int(start - offset) +``` + +# Exceptions + +Exceptions are used to handle exceptional situations. They should not be used for flow control. This is a break from the python norm of "ask for forgiveness." If you are catching an exception it should be to handle a situation that is unusual. + +If you use a catch-all exception for any reason you must log the exception and stacktrace using cli.log. + +Make your try/except blocks as short as possible. If you need a lot of try statements you may need to restructure your code. + +# Tuples + +When defining one-item tuples always include a trailing comma so that it is obvious you are using a tuple. Do not rely on implicit one-item tuple unpacking. Better still use a list which is unambiguous. + +This is particularly important when using the printf-style format strings that are commonly used. + +# Lists and Dictionaries + +We have configured YAPF to differentiate between sequence styles with a trailing comma. When a trailing comma is omitted YAPF will format the sequence as a single line. When a trailing comma is included YAPF will format the sequence with one item per line. + +You should generally prefer to keep short definition on a single line. Break out to multiple lines sooner rather than later to aid readability and maintainability. + +# Parentheses + +Avoid excessive parentheses, but do use parentheses to make code easier to understand. Do not use them in return statements unless you are explicitly returning a tuple, or it is part of a math expression. + +# Format Strings + +We generally prefer printf-style format strings. Example: + +``` +name = 'World' +print('Hello, %s!' % (name,)) +``` + +This style is used by the logging module, which we make use of extensively, and we have adopted it in other places for consistency. It is also more familiar to C programmers, who are a big part of our casual audience. + +Our included CLI module has support for using these without using the percent (%) operator. Look at `cli.echo()` and the various `cli.log` functions (EG, `cli.log.info()`) for more details. + +# Comprehensions & Generator Expressions + +We encourage the liberal use of comprehensions and generators, but do not let them get too complex. If you need complexity fall back to a for loop that is easier to understand. + +# Lambdas + +OK to use but probably should be avoided. With comprehensions and generators the need for lambdas is not as strong as it once was. + +# Conditional Expressions + +OK in variable assignment, but otherwise should be avoided. + +Conditional expressions are if statements that are in line with code. For example: + +``` +x = 1 if cond else 2 +``` + +It's generally not a good idea to use these as function arguments, sequence items, etc. It's too easy to overlook. + +# Default Argument Values + +Encouraged, but values must be immutable objects. + +When specifying default values in argument lists always be careful to specify objects that can't be modified in place. If you use a mutable object the changes you make will persist between calls, which is usually not what you want. Even if that is what you intend to do it is confusing for others and will hinder understanding. + +Bad: + +``` +def my_func(foo={}): + pass +``` + +Good: + +``` +def my_func(foo=None): + if not foo: + foo = {} +``` + +# Properties + +Always use properties instead of getter and setter functions. + +``` +class Foo(object): + def __init__(self): + self._bar = None + + @property + def bar(self): + return self._bar + + @bar.setter + def bar(self, bar): + self._bar = bar +``` + +# True/False Evaluations + +You should generally prefer the implicit True/False evaluation in if statements, rather than checking equivalency. + +Bad: + +``` +if foo == True: + pass + +if bar == False: + pass +``` + +Good: + +``` +if foo: + pass + +if not bar: + pass +``` + +# Decorators + +Use when appropriate. Try to avoid too much magic unless it helps with understanding. + +# Threading and Multiprocessing + +Should be avoided. If you need this you will have to make a strong case before we merge your code. + +# Power Features + +Python is an extremely flexible language and gives you many fancy features such as custom metaclasses, access to bytecode, on-the-fly compilation, dynamic inheritance, object reparenting, import hacks, reflection, modification of system internals, etc. + +Don't use these. + +Performance is not a critical concern for us, and code understandability is. We want our codebase to be approachable by someone who only has a day or two to play with it. These features generally come with a cost to easy understanding, and we would prefer to have code that can be readily understood over faster or more compact code. + +Note that some standard library modules use these techniques and it is ok to make use of those modules. But please keep readability and understandability in mind when using them. + +# Type Annotated Code + +For now we are not using any type annotation system, and would prefer that code remain unannotated. We may revisit this in the future. + +# Function length + +Prefer small and focused functions. + +We recognize that long functions are sometimes appropriate, so no hard limit is placed on function length. If a function exceeds about 40 lines, think about whether it can be broken up without harming the structure of the program. + +Even if your long function works perfectly now, someone modifying it in a few months may add new behavior. This could result in bugs that are hard to find. Keeping your functions short and simple makes it easier for other people to read and modify your code. + +You could find long and complicated functions when working with some code. Do not be intimidated by modifying existing code: if working with such a function proves to be difficult, you find that errors are hard to debug, or you want to use a piece of it in several different contexts, consider breaking up the function into smaller and more manageable pieces. + +# FIXMEs + +It is OK to leave FIXMEs in code. Why? Encouraging people to at least document parts of code that need to be thought out more (or that are confusing) is better than leaving this code undocumented. + +All FIXMEs should be formatted like: + +``` +FIXME(username): Revisit this code when the frob feature is done. +``` + +...where username is your GitHub username. + +# Unit Tests + +These are good. We should have some one day. diff --git a/docs/contributing.md b/docs/contributing.md index 7d1a9691c..761bc9959 100644 --- a/docs/contributing.md +++ b/docs/contributing.md @@ -54,62 +54,10 @@ Never made an open source contribution before? Wondering how contributions work # Coding Conventions -Most of our style is pretty easy to pick up on, but right now it's not entirely consistent. You should match the style of the code surrounding your change, but if that code is inconsistent or unclear use the following guidelines: - -* We indent using four (4) spaces (soft tabs) -* We use a modified One True Brace Style - * Opening Brace: At the end of the same line as the statement that opens the block - * Closing Brace: Lined up with the first character of the statement that opens the block - * Else If: Place the closing brace at the beginning of the line and the next opening brace at the end of the same line. - * Optional Braces: Always include optional braces. - * Good: if (condition) { return false; } - * Bad: if (condition) return false; -* We encourage use of C style comments: `/* */` - * Think of them as a story describing the feature - * Use them liberally to explain why particular decisions were made. - * Do not write obvious comments - * If you not sure if a comment is obvious, go ahead and include it. -* In general we don't wrap lines, they can be as long as needed. If you do choose to wrap lines please do not wrap any wider than 76 columns. -* We use `#pragma once` at the start of header files rather than old-style include guards (`#ifndef THIS_FILE_H`, `#define THIS_FILE_H`, ..., `#endif`) -* We accept both forms of preprocessor if's: `#ifdef DEFINED` and `#if defined(DEFINED)` - * If you are not sure which to prefer use the `#if defined(DEFINED)` form. - * Do not change existing code from one style to the other, except when moving to a multiple condition `#if`. - * Do not put whitespace between `#` and `if`. - * When deciding how (or if) to indent directives keep these points in mind: - * Readability is more important than consistency. - * Follow the file's existing style. If the file is mixed follow the style that makes sense for the section you are modifying. - * When choosing to indent you can follow the indention level of the surrounding C code, or preprocessor directives can have their own indent level. Choose the style that best communicates the intent of your code. - -Here is an example for easy reference: +Most of our style is pretty easy to pick up on. If you are familiar with either C or Python you should not have too much trouble with our local styles. -```c -/* Enums for foo */ -enum foo_state { - FOO_BAR, - FOO_BAZ, -}; - -/* Returns a value */ -int foo(void) { - if (some_condition) { - return FOO_BAR; - } else { - return -1; - } -} -``` - -# Auto-formatting with clang-format - -[Clang-format](https://clang.llvm.org/docs/ClangFormat.html) is part of LLVM and can automatically format your code for you, because ain't nobody got time to do it manually. We supply a configuration file for it that applies most of the coding conventions listed above. It will only change whitespace and newlines, so you will still have to remember to include optional braces yourself. - -Use the [full LLVM installer](http://llvm.org/builds/) to get clang-format on Windows, or use `sudo apt install clang-format` on Ubuntu. - -If you run it from the command-line, pass `-style=file` as an option and it will automatically find the .clang-format configuration file in the QMK root directory. - -If you use VSCode, the standard C/C++ plugin supports clang-format, alternatively there is a [separate extension](https://marketplace.visualstudio.com/items?itemName=LLVMExtensions.ClangFormat) for it. - -Some things (like LAYOUT macros) are destroyed by clang-format, so either don't run it on those files, or wrap the sensitive code in `// clang-format off` and `// clang-format on`. +* [Coding Conventions - C](coding_conventions_c.md) +* [Coding Conventions - Python](coding_conventions_python.md) # General Guidelines diff --git a/docs/python_development.md b/docs/python_development.md new file mode 100644 index 000000000..b976a7c0e --- /dev/null +++ b/docs/python_development.md @@ -0,0 +1,45 @@ +# Python Development in QMK + +This document gives an overview of how QMK has structured its python code. You should read this before working on any of the python code. + +## Script directories + +There are two places scripts live in QMK: `qmk_firmware/bin` and `qmk_firmware/util`. You should use `bin` for any python scripts that utilize the `qmk` wrapper. Scripts that are standalone and not run very often live in `util`. + +We discourage putting anything into `bin` that does not utilize the `qmk` wrapper. If you think you have a good reason for doing so please talk to us about your use case. + +## Python Modules + +Most of the QMK python modules can be found in `qmk_firmware/lib/python`. This is the path that we append to `sys.path`. + +We have a module hierarchy under that path: + +* `qmk_firmware/lib/python` + * `milc.py` - The CLI library we use. Will be pulled out into its own module in the future. + * `qmk` - Code associated with QMK + * `cli` - Modules that will be imported for CLI commands. + * `errors.py` - Errors that can be raised within QMK apps + * `keymap.py` - Functions for working with keymaps + +## CLI Scripts + +We have a CLI wrapper that you should utilize for any user facing scripts. We think it's pretty easy to use and it gives you a lot of nice things for free. + +To use the wrapper simply place a module into `qmk_firmware/lib/python/qmk/cli`, and create a symlink to `bin/qmk` named after your module. Dashes in command names will be converted into dots so you can use hierarchy to manage commands. + +When `qmk` is run it checks to see how it was invoked. If it was invoked as `qmk` the module name is take from `sys.argv[1]`. If it was invoked as `qmk-` then everything after the first dash is taken as the module name. Dashes and underscores are converted to dots, and then `qmk.cli` is prepended before the module is imported. + +The module uses `@cli.entrypoint()` and `@cli.argument()` decorators to define an entrypoint, which is where execution starts. + +## Example CLI Script + +We have provided a QMK Hello World script you can use as an example. To run it simply run `qmk hello` or `qmk-hello`. The source code is listed below. + +``` +from milc import cli + +@cli.argument('-n', '--name', default='World', help='Name to greet.') +@cli.entrypoint('QMK Python Hello World.') +def main(cli): + cli.echo('Hello, %s!', cli.config.general.name) +``` diff --git a/keyboards/clueboard/66_hotswap/keymaps/json/keymap.json b/keyboards/clueboard/66_hotswap/keymaps/json/keymap.json new file mode 100644 index 000000000..20aa9f0f6 --- /dev/null +++ b/keyboards/clueboard/66_hotswap/keymaps/json/keymap.json @@ -0,0 +1 @@ +{"keyboard":"clueboard/66_hotswap/gen1","keymap":"default_66","layout":"LAYOUT","layers":[["KC_GESC","KC_1","KC_2","KC_3","KC_4","KC_5","KC_6","KC_7","KC_8","KC_9","KC_0","KC_MINS","KC_EQL","KC_BSPC","KC_PGUP","KC_TAB","KC_Q","KC_W","KC_E","KC_R","KC_T","KC_Y","KC_U","KC_I","KC_O","KC_P","KC_LBRC","KC_RBRC","KC_BSLS","KC_PGDN","KC_CAPS","KC_A","KC_S","KC_D","KC_F","KC_G","KC_H","KC_J","KC_K","KC_L","KC_SCLN","KC_QUOT","KC_ENT","KC_LSFT","KC_Z","KC_X","KC_C","KC_V","KC_B","KC_N","KC_M","KC_COMM","KC_DOT","KC_SLSH","KC_RSFT","KC_UP","KC_LCTL","KC_LGUI","KC_LALT","KC_SPC","KC_SPC","KC_RALT","KC_RGUI","MO(1)","KC_RCTL","KC_LEFT","KC_DOWN","KC_RGHT"],["KC_GRV","KC_F1","KC_F2","KC_F3","KC_F4","KC_F5","KC_F6","KC_F7","KC_F8","KC_F9","KC_F10","KC_F11","KC_F12","KC_DEL","BL_INC","KC_NO","KC_NO","KC_NO","KC_NO","KC_NO","KC_NO","KC_NO","KC_NO","KC_NO","KC_MPRV","KC_MPLY","KC_MNXT","KC_NO","KC_MUTE","BL_DEC","KC_NO","KC_NO","MO(2)","KC_NO","KC_NO","KC_NO","KC_NO","KC_NO","KC_NO","KC_NO","KC_NO","KC_NO","KC_NO","KC_NO","KC_NO","KC_NO","KC_NO","KC_NO","KC_NO","KC_NO","KC_NO","KC_NO","KC_NO","KC_NO","KC_NO","KC_PGUP","KC_NO","KC_NO","KC_NO","KC_NO","KC_NO","KC_NO","KC_NO","MO(1)","KC_NO","KC_HOME","KC_PGDN","KC_END"],["KC_NO","KC_NO","KC_NO","KC_NO","KC_NO","KC_NO","KC_NO","KC_NO","KC_NO","KC_NO","KC_NO","KC_NO","KC_NO","BL_TOGG","BL_INC","KC_NO","KC_NO","KC_NO","KC_NO","RESET","KC_NO","KC_NO","KC_NO","KC_NO","KC_NO","KC_NO","KC_NO","KC_NO","KC_NO","BL_DEC","KC_NO","KC_NO","MO(2)","KC_NO","KC_NO","KC_NO","KC_NO","KC_NO","KC_NO","KC_NO","KC_NO","KC_NO","KC_NO","KC_NO","KC_NO","KC_NO","KC_NO","KC_NO","KC_NO","KC_NO","KC_NO","KC_NO","KC_NO","KC_NO","KC_NO","KC_NO","KC_NO","KC_NO","KC_NO","KC_NO","BL_STEP","KC_NO","KC_NO","MO(1)","KC_NO","KC_NO","KC_NO","KC_NO"]],"author":"","notes":""} \ No newline at end of file diff --git a/lib/python/milc.py b/lib/python/milc.py new file mode 100644 index 000000000..6e82edf8b --- /dev/null +++ b/lib/python/milc.py @@ -0,0 +1,716 @@ +#!/usr/bin/env python3 +# coding=utf-8 +"""MILC - A CLI Framework + +PYTHON_ARGCOMPLETE_OK + +MILC is an opinionated framework for writing CLI apps. It optimizes for the +most common unix tool pattern- small tools that are run from the command +line but generally do not feature any user interaction while they run. + +For more details see the MILC documentation: + + +""" +from __future__ import division, print_function, unicode_literals +import argparse +import logging +import os +import re +import sys +from decimal import Decimal +from tempfile import NamedTemporaryFile +from time import sleep + +try: + from ConfigParser import RawConfigParser +except ImportError: + from configparser import RawConfigParser + +try: + import thread + import threading +except ImportError: + thread = None + +import argcomplete +import colorama + +# Log Level Representations +EMOJI_LOGLEVELS = { + 'CRITICAL': '{bg_red}{fg_white}¬_¬{style_reset_all}', + 'ERROR': '{fg_red}☒{style_reset_all}', + 'WARNING': '{fg_yellow}⚠{style_reset_all}', + 'INFO': '{fg_blue}ℹ{style_reset_all}', + 'DEBUG': '{fg_cyan}☐{style_reset_all}', + 'NOTSET': '{style_reset_all}¯\\_(o_o)_/¯' +} +EMOJI_LOGLEVELS['FATAL'] = EMOJI_LOGLEVELS['CRITICAL'] +EMOJI_LOGLEVELS['WARN'] = EMOJI_LOGLEVELS['WARNING'] + +# ANSI Color setup +# Regex was gratefully borrowed from kfir on stackoverflow: +# https://stackoverflow.com/a/45448194 +ansi_regex = r'\x1b(' \ + r'(\[\??\d+[hl])|' \ + r'([=<>a-kzNM78])|' \ + r'([\(\)][a-b0-2])|' \ + r'(\[\d{0,2}[ma-dgkjqi])|' \ + r'(\[\d+;\d+[hfy]?)|' \ + r'(\[;?[hf])|' \ + r'(#[3-68])|' \ + r'([01356]n)|' \ + r'(O[mlnp-z]?)|' \ + r'(/Z)|' \ + r'(\d+)|' \ + r'(\[\?\d;\d0c)|' \ + r'(\d;\dR))' +ansi_escape = re.compile(ansi_regex, flags=re.IGNORECASE) +ansi_styles = ( + ('fg', colorama.ansi.AnsiFore()), + ('bg', colorama.ansi.AnsiBack()), + ('style', colorama.ansi.AnsiStyle()), +) +ansi_colors = {} + +for prefix, obj in ansi_styles: + for color in [x for x in obj.__dict__ if not x.startswith('_')]: + ansi_colors[prefix + '_' + color.lower()] = getattr(obj, color) + + +def format_ansi(text): + """Return a copy of text with certain strings replaced with ansi. + """ + # Avoid .format() so we don't have to worry about the log content + for color in ansi_colors: + text = text.replace('{%s}' % color, ansi_colors[color]) + return text + ansi_colors['style_reset_all'] + + +class ANSIFormatter(logging.Formatter): + """A log formatter that inserts ANSI color. + """ + + def format(self, record): + msg = super(ANSIFormatter, self).format(record) + return format_ansi(msg) + + +class ANSIEmojiLoglevelFormatter(ANSIFormatter): + """A log formatter that makes the loglevel an emoji. + """ + + def format(self, record): + record.levelname = EMOJI_LOGLEVELS[record.levelname].format(**ansi_colors) + return super(ANSIEmojiLoglevelFormatter, self).format(record) + + +class ANSIStrippingFormatter(ANSIFormatter): + """A log formatter that strips ANSI. + """ + + def format(self, record): + msg = super(ANSIStrippingFormatter, self).format(record) + return ansi_escape.sub('', msg) + + +class Configuration(object): + """Represents the running configuration. + + This class never raises IndexError, instead it will return None if a + section or option does not yet exist. + """ + + def __contains__(self, key): + return self._config.__contains__(key) + + def __iter__(self): + return self._config.__iter__() + + def __len__(self): + return self._config.__len__() + + def __repr__(self): + return self._config.__repr__() + + def keys(self): + return self._config.keys() + + def items(self): + return self._config.items() + + def values(self): + return self._config.values() + + def __init__(self, *args, **kwargs): + self._config = {} + self.default_container = ConfigurationOption + + def __getitem__(self, key): + """Returns a config section, creating it if it doesn't exist yet. + """ + if key not in self._config: + self.__dict__[key] = self._config[key] = ConfigurationOption() + + return self._config[key] + + def __setitem__(self, key, value): + self.__dict__[key] = value + self._config[key] = value + + def __delitem__(self, key): + if key in self.__dict__ and key[0] != '_': + del self.__dict__[key] + del self._config[key] + + +class ConfigurationOption(Configuration): + def __init__(self, *args, **kwargs): + super(ConfigurationOption, self).__init__(*args, **kwargs) + self.default_container = dict + + def __getitem__(self, key): + """Returns a config section, creating it if it doesn't exist yet. + """ + if key not in self._config: + self.__dict__[key] = self._config[key] = None + + return self._config[key] + + +def handle_store_boolean(self, *args, **kwargs): + """Does the add_argument for action='store_boolean'. + """ + kwargs['add_dest'] = False + disabled_args = None + disabled_kwargs = kwargs.copy() + disabled_kwargs['action'] = 'store_false' + disabled_kwargs['help'] = 'Disable ' + kwargs['help'] + kwargs['action'] = 'store_true' + kwargs['help'] = 'Enable ' + kwargs['help'] + + for flag in args: + if flag[:2] == '--': + disabled_args = ('--no-' + flag[2:],) + break + + self.add_argument(*args, **kwargs) + self.add_argument(*disabled_args, **disabled_kwargs) + + return (args, kwargs, disabled_args, disabled_kwargs) + + +class SubparserWrapper(object): + """Wrap subparsers so we can populate the normal and the shadow parser. + """ + + def __init__(self, cli, submodule, subparser): + self.cli = cli + self.submodule = submodule + self.subparser = subparser + + for attr in dir(subparser): + if not hasattr(self, attr): + setattr(self, attr, getattr(subparser, attr)) + + def completer(self, completer): + """Add an arpcomplete completer to this subcommand. + """ + self.subparser.completer = completer + + def add_argument(self, *args, **kwargs): + if kwargs.get('add_dest', True): + kwargs['dest'] = self.submodule + '_' + self.cli.get_argument_name(*args, **kwargs) + if 'add_dest' in kwargs: + del kwargs['add_dest'] + + if 'action' in kwargs and kwargs['action'] == 'store_boolean': + return handle_store_boolean(self, *args, **kwargs) + + self.cli.acquire_lock() + self.subparser.add_argument(*args, **kwargs) + + if 'default' in kwargs: + del kwargs['default'] + if 'action' in kwargs and kwargs['action'] == 'store_false': + kwargs['action'] == 'store_true' + self.cli.subcommands_default[self.submodule].add_argument(*args, **kwargs) + self.cli.release_lock() + + +class MILC(object): + """MILC - An Opinionated Batteries Included Framework + """ + + def __init__(self): + """Initialize the MILC object. + """ + # Setup a lock for thread safety + self._lock = threading.RLock() if thread else None + + # Define some basic info + self.acquire_lock() + self._description = None + self._entrypoint = None + self._inside_context_manager = False + self.ansi = ansi_colors + self.config = Configuration() + self.config_file = None + self.prog_name = sys.argv[0][:-3] if sys.argv[0].endswith('.py') else sys.argv[0] + self.version = os.environ.get('QMK_VERSION', 'unknown') + self.release_lock() + + # Initialize all the things + self.initialize_argparse() + self.initialize_logging() + + @property + def description(self): + return self._description + + @description.setter + def description(self, value): + self._description = self._arg_parser.description = self._arg_defaults.description = value + + def echo(self, text, *args, **kwargs): + """Print colorized text to stdout, as long as stdout is a tty. + + ANSI color strings (such as {fg-blue}) will be converted into ANSI + escape sequences, and the ANSI reset sequence will be added to all + strings. + + If *args or **kwargs are passed they will be used to %-format the strings. + """ + if args and kwargs: + raise RuntimeError('You can only specify *args or **kwargs, not both!') + + if sys.stdout.isatty(): + args = args or kwargs + text = format_ansi(text) + + print(text % args) + + def initialize_argparse(self): + """Prepare to process arguments from sys.argv. + """ + kwargs = { + 'fromfile_prefix_chars': '@', + 'conflict_handler': 'resolve', + } + + self.acquire_lock() + self.subcommands = {} + self.subcommands_default = {} + self._subparsers = None + self._subparsers_default = None + self.argwarn = argcomplete.warn + self.args = None + self._arg_defaults = argparse.ArgumentParser(**kwargs) + self._arg_parser = argparse.ArgumentParser(**kwargs) + self.set_defaults = self._arg_parser.set_defaults + self.print_usage = self._arg_parser.print_usage + self.print_help = self._arg_parser.print_help + self.release_lock() + + def completer(self, completer): + """Add an arpcomplete completer to this subcommand. + """ + self._arg_parser.completer = completer + + def add_argument(self, *args, **kwargs): + """Wrapper to add arguments to both the main and the shadow argparser. + """ + if kwargs.get('add_dest', True) and args[0][0] == '-': + kwargs['dest'] = 'general_' + self.get_argument_name(*args, **kwargs) + if 'add_dest' in kwargs: + del kwargs['add_dest'] + + if 'action' in kwargs and kwargs['action'] == 'store_boolean': + return handle_store_boolean(self, *args, **kwargs) + + self.acquire_lock() + self._arg_parser.add_argument(*args, **kwargs) + + # Populate the shadow parser + if 'default' in kwargs: + del kwargs['default'] + if 'action' in kwargs and kwargs['action'] == 'store_false': + kwargs['action'] == 'store_true' + self._arg_defaults.add_argument(*args, **kwargs) + self.release_lock() + + def initialize_logging(self): + """Prepare the defaults for the logging infrastructure. + """ + self.acquire_lock() + self.log_file = None + self.log_file_mode = 'a' + self.log_file_handler = None + self.log_print = True + self.log_print_to = sys.stderr + self.log_print_level = logging.INFO + self.log_file_level = logging.DEBUG + self.log_level = logging.INFO + self.log = logging.getLogger(self.__class__.__name__) + self.log.setLevel(logging.DEBUG) + logging.root.setLevel(logging.DEBUG) + self.release_lock() + + self.add_argument('-V', '--version', version=self.version, action='version', help='Display the version and exit') + self.add_argument('-v', '--verbose', action='store_true', help='Make the logging more verbose') + self.add_argument('--datetime-fmt', default='%Y-%m-%d %H:%M:%S', help='Format string for datetimes') + self.add_argument('--log-fmt', default='%(levelname)s %(message)s', help='Format string for printed log output') + self.add_argument('--log-file-fmt', default='[%(levelname)s] [%(asctime)s] [file:%(pathname)s] [line:%(lineno)d] %(message)s', help='Format string for log file.') + self.add_argument('--log-file', help='File to write log messages to') + self.add_argument('--color', action='store_boolean', default=True, help='color in output') + self.add_argument('-c', '--config-file', help='The config file to read and/or write') + self.add_argument('--save-config', action='store_true', help='Save the running configuration to the config file') + + def add_subparsers(self, title='Sub-commands', **kwargs): + if self._inside_context_manager: + raise RuntimeError('You must run this before the with statement!') + + self.acquire_lock() + self._subparsers_default = self._arg_defaults.add_subparsers(title=title, dest='subparsers', **kwargs) + self._subparsers = self._arg_parser.add_subparsers(title=title, dest='subparsers', **kwargs) + self.release_lock() + + def acquire_lock(self): + """Acquire the MILC lock for exclusive access to properties. + """ + if self._lock: + self._lock.acquire() + + def release_lock(self): + """Release the MILC lock. + """ + if self._lock: + self._lock.release() + + def find_config_file(self): + """Locate the config file. + """ + if self.config_file: + return self.config_file + + if self.args and self.args.general_config_file: + return self.args.general_config_file + + return os.path.abspath(os.path.expanduser('~/.%s.ini' % self.prog_name)) + + def get_argument_name(self, *args, **kwargs): + """Takes argparse arguments and returns the dest name. + """ + try: + return self._arg_parser._get_optional_kwargs(*args, **kwargs)['dest'] + except ValueError: + return self._arg_parser._get_positional_kwargs(*args, **kwargs)['dest'] + + def argument(self, *args, **kwargs): + """Decorator to call self.add_argument or self..add_argument. + """ + if self._inside_context_manager: + raise RuntimeError('You must run this before the with statement!') + + def argument_function(handler): + if handler is self._entrypoint: + self.add_argument(*args, **kwargs) + + elif handler.__name__ in self.subcommands: + self.subcommands[handler.__name__].add_argument(*args, **kwargs) + + else: + raise RuntimeError('Decorated function is not entrypoint or subcommand!') + + return handler + + return argument_function + + def arg_passed(self, arg): + """Returns True if arg was passed on the command line. + """ + return self.args_passed[arg] in (None, False) + + def parse_args(self): + """Parse the CLI args. + """ + if self.args: + self.log.debug('Warning: Arguments have already been parsed, ignoring duplicate attempt!') + return + + argcomplete.autocomplete(self._arg_parser) + + self.acquire_lock() + self.args = self._arg_parser.parse_args() + self.args_passed = self._arg_defaults.parse_args() + + if 'entrypoint' in self.args: + self._entrypoint = self.args.entrypoint + + if self.args.general_config_file: + self.config_file = self.args.general_config_file + + self.release_lock() + + def read_config(self): + """Parse the configuration file and determine the runtime configuration. + """ + self.acquire_lock() + self.config_file = self.find_config_file() + + if self.config_file and os.path.exists(self.config_file): + config = RawConfigParser(self.config) + config.read(self.config_file) + + # Iterate over the config file options and write them into self.config + for section in config.sections(): + for option in config.options(section): + value = config.get(section, option) + + # Coerce values into useful datatypes + if value.lower() in ['1', 'yes', 'true', 'on']: + value = True + elif value.lower() in ['0', 'no', 'false', 'none', 'off']: + value = False + elif value.replace('.', '').isdigit(): + if '.' in value: + value = Decimal(value) + else: + value = int(value) + + self.config[section][option] = value + + # Fold the CLI args into self.config + for argument in vars(self.args): + if argument in ('subparsers', 'entrypoint'): + continue + + if '_' not in argument: + continue + + section, option = argument.split('_', 1) + if hasattr(self.args_passed, argument): + self.config[section][option] = getattr(self.args, argument) + else: + if option not in self.config[section]: + self.config[section][option] = getattr(self.args, argument) + + self.release_lock() + + def save_config(self): + """Save the current configuration to the config file. + """ + self.log.debug("Saving config file to '%s'", self.config_file) + + if not self.config_file: + self.log.warning('%s.config_file file not set, not saving config!', self.__class__.__name__) + return + + self.acquire_lock() + + config = RawConfigParser() + for section_name, section in self.config._config.items(): + config.add_section(section_name) + for option_name, value in section.items(): + if section_name == 'general': + if option_name in ['save_config']: + continue + config.set(section_name, option_name, str(value)) + + with NamedTemporaryFile(mode='w', dir=os.path.dirname(self.config_file), delete=False) as tmpfile: + config.write(tmpfile) + + # Move the new config file into place atomically + if os.path.getsize(tmpfile.name) > 0: + os.rename(tmpfile.name, self.config_file) + else: + self.log.warning('Config file saving failed, not replacing %s with %s.', self.config_file, tmpfile.name) + + self.release_lock() + + def __call__(self): + """Execute the entrypoint function. + """ + if not self._inside_context_manager: + # If they didn't use the context manager use it ourselves + with self: + self.__call__() + return + + if not self._entrypoint: + raise RuntimeError('No entrypoint provided!') + + return self._entrypoint(self) + + def entrypoint(self, description): + """Set the entrypoint for when no subcommand is provided. + """ + if self._inside_context_manager: + raise RuntimeError('You must run this before cli()!') + + self.acquire_lock() + self.description = description + self.release_lock() + + def entrypoint_func(handler): + self.acquire_lock() + self._entrypoint = handler + self.release_lock() + + return handler + + return entrypoint_func + + def add_subcommand(self, handler, description, name=None, **kwargs): + """Register a subcommand. + + If name is not provided we use `handler.__name__`. + """ + if self._inside_context_manager: + raise RuntimeError('You must run this before the with statement!') + + if self._subparsers is None: + self.add_subparsers() + + if not name: + name = handler.__name__ + + self.acquire_lock() + kwargs['help'] = description + self.subcommands_default[name] = self._subparsers_default.add_parser(name, **kwargs) + self.subcommands[name] = SubparserWrapper(self, name, self._subparsers.add_parser(name, **kwargs)) + self.subcommands[name].set_defaults(entrypoint=handler) + + if name not in self.__dict__: + self.__dict__[name] = self.subcommands[name] + else: + self.log.debug("Could not add subcommand '%s' to attributes, key already exists!", name) + + self.release_lock() + + return handler + + def subcommand(self, description, **kwargs): + """Decorator to register a subcommand. + """ + + def subcommand_function(handler): + return self.add_subcommand(handler, description, **kwargs) + + return subcommand_function + + def setup_logging(self): + """Called by __enter__() to setup the logging configuration. + """ + if len(logging.root.handlers) != 0: + # This is not a design decision. This is what I'm doing for now until I can examine and think about this situation in more detail. + raise RuntimeError('MILC should be the only system installing root log handlers!') + + self.acquire_lock() + + if self.config['general']['verbose']: + self.log_print_level = logging.DEBUG + + self.log_file = self.config['general']['log_file'] or self.log_file + self.log_file_format = self.config['general']['log_file_fmt'] + self.log_file_format = ANSIStrippingFormatter(self.config['general']['log_file_fmt'], self.config['general']['datetime_fmt']) + self.log_format = self.config['general']['log_fmt'] + + if self.config.general.color: + self.log_format = ANSIEmojiLoglevelFormatter(self.args.general_log_fmt, self.config.general.datetime_fmt) + else: + self.log_format = ANSIStrippingFormatter(self.args.general_log_fmt, self.config.general.datetime_fmt) + + if self.log_file: + self.log_file_handler = logging.FileHandler(self.log_file, self.log_file_mode) + self.log_file_handler.setLevel(self.log_file_level) + self.log_file_handler.setFormatter(self.log_file_format) + logging.root.addHandler(self.log_file_handler) + + if self.log_print: + self.log_print_handler = logging.StreamHandler(self.log_print_to) + self.log_print_handler.setLevel(self.log_print_level) + self.log_print_handler.setFormatter(self.log_format) + logging.root.addHandler(self.log_print_handler) + + self.release_lock() + + def __enter__(self): + if self._inside_context_manager: + self.log.debug('Warning: context manager was entered again. This usually means that self.__call__() was called before the with statement. You probably do not want to do that.') + return + + self.acquire_lock() + self._inside_context_manager = True + self.release_lock() + + colorama.init() + self.parse_args() + self.read_config() + self.setup_logging() + + if self.config.general.save_config: + self.save_config() + + return self + + def __exit__(self, exc_type, exc_val, exc_tb): + self.acquire_lock() + self._inside_context_manager = False + self.release_lock() + + if exc_type is not None and not isinstance(SystemExit(), exc_type): + print(exc_type) + logging.exception(exc_val) + exit(255) + + +cli = MILC() + +if __name__ == '__main__': + + @cli.argument('-c', '--comma', help='comma in output', default=True, action='store_boolean') + @cli.entrypoint('My useful CLI tool with subcommands.') + def main(cli): + comma = ',' if cli.config.general.comma else '' + cli.log.info('{bg_green}{fg_red}Hello%s World!', comma) + + @cli.argument('-n', '--name', help='Name to greet', default='World') + @cli.subcommand('Description of hello subcommand here.') + def hello(cli): + comma = ',' if cli.config.general.comma else '' + cli.log.info('{fg_blue}Hello%s %s!', comma, cli.config.hello.name) + + def goodbye(cli): + comma = ',' if cli.config.general.comma else '' + cli.log.info('{bg_red}Goodbye%s %s!', comma, cli.config.goodbye.name) + + @cli.argument('-n', '--name', help='Name to greet', default='World') + @cli.subcommand('Think a bit before greeting the user.') + def thinking(cli): + comma = ',' if cli.config.general.comma else '' + spinner = cli.spinner(text='Just a moment...', spinner='earth') + spinner.start() + sleep(2) + spinner.stop() + + with cli.spinner(text='Almost there!', spinner='moon'): + sleep(2) + + cli.log.info('{fg_cyan}Hello%s %s!', comma, cli.config.thinking.name) + + @cli.subcommand('Show off our ANSI colors.') + def pride(cli): + cli.echo('{bg_red} ') + cli.echo('{bg_lightred_ex} ') + cli.echo('{bg_lightyellow_ex} ') + cli.echo('{bg_green} ') + cli.echo('{bg_blue} ') + cli.echo('{bg_magenta} ') + + # You can register subcommands using decorators as seen above, or using functions like like this: + cli.add_subcommand(goodbye, 'This will show up in --help output.') + cli.goodbye.add_argument('-n', '--name', help='Name to bid farewell to', default='World') + + cli() # Automatically picks between main(), hello() and goodbye() + print(sorted(ansi_colors.keys())) diff --git a/lib/python/qmk/__init__.py b/lib/python/qmk/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/lib/python/qmk/cli/compile/__init__.py b/lib/python/qmk/cli/compile/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/lib/python/qmk/cli/compile/json.py b/lib/python/qmk/cli/compile/json.py new file mode 100755 index 000000000..89c16b206 --- /dev/null +++ b/lib/python/qmk/cli/compile/json.py @@ -0,0 +1,44 @@ +"""Create a keymap directory from a configurator export. +""" +import json +import os +import sys +import subprocess + +from milc import cli + +import qmk.keymap +import qmk.path + + +@cli.argument('filename', help='Configurator JSON export') +@cli.entrypoint('Compile a QMK Configurator export.') +def main(cli): + """Compile a QMK Configurator export. + + This command creates a new keymap from a configurator export, overwriting an existing keymap if one exists. + + FIXME(skullydazed): add code to check and warn if the keymap already exists + """ + # Error checking + if cli.args.filename == ('-'): + cli.log.error('Reading from STDIN is not (yet) supported.') + exit(1) + if not os.path.exists(qmk.path.normpath(cli.args.filename)): + cli.log.error('JSON file does not exist!') + exit(1) + + # Parse the configurator json + with open(qmk.path.normpath(cli.args.filename), 'r') as fd: + user_keymap = json.load(fd) + + # Generate the keymap + keymap_path = qmk.path.keymap(user_keymap['keyboard']) + cli.log.info('Creating {fg_cyan}%s{style_reset_all} keymap in {fg_cyan}%s', user_keymap['keymap'], keymap_path) + qmk.keymap.write(user_keymap['keyboard'], user_keymap['keymap'], user_keymap['layout'], user_keymap['layers']) + cli.log.info('Wrote keymap to {fg_cyan}%s/%s/keymap.c', keymap_path, user_keymap['keymap']) + + # Compile the keymap + command = ['make', ':'.join((user_keymap['keyboard'], user_keymap['keymap']))] + cli.log.info('Compiling keymap with {fg_cyan}%s\n\n', ' '.join(command)) + subprocess.run(command) diff --git a/lib/python/qmk/cli/doctor.py b/lib/python/qmk/cli/doctor.py new file mode 100755 index 000000000..9ce765a4b --- /dev/null +++ b/lib/python/qmk/cli/doctor.py @@ -0,0 +1,47 @@ +"""QMK Python Doctor + +Check up for QMK environment. +""" +import shutil +import platform +import os + +from milc import cli + + +@cli.entrypoint('Basic QMK environment checks') +def main(cli): + """Basic QMK environment checks. + + This is currently very simple, it just checks that all the expected binaries are on your system. + + TODO(unclaimed): + * [ ] Run the binaries to make sure they work + * [ ] Compile a trivial program with each compiler + * [ ] Check for udev entries on linux + """ + + binaries = ['dfu-programmer', 'avrdude', 'dfu-util', 'avr-gcc', 'arm-none-eabi-gcc'] + + cli.log.info('QMK Doctor is Checking your environment') + + ok = True + for binary in binaries: + res = shutil.which(binary) + if res is None: + cli.log.error('{fg_red}QMK can\'t find ' + binary + ' in your path') + ok = False + + OS = platform.system() + if OS == "Darwin": + cli.log.info("Detected {fg_cyan}macOS") + elif OS == "Linux": + cli.log.info("Detected {fg_cyan}linux") + test = 'systemctl list-unit-files | grep enabled | grep -i ModemManager' + if os.system(test) == 0: + cli.log.warn("{bg_yellow}Detected modem manager. Please disable it if you are using Pro Micros") + else: + cli.log.info("Assuming {fg_cyan}Windows") + + if ok: + cli.log.info('{fg_green}QMK is ready to go') diff --git a/lib/python/qmk/cli/hello.py b/lib/python/qmk/cli/hello.py new file mode 100755 index 000000000..bc0cb6de1 --- /dev/null +++ b/lib/python/qmk/cli/hello.py @@ -0,0 +1,13 @@ +"""QMK Python Hello World + +This is an example QMK CLI script. +""" +from milc import cli + + +@cli.argument('-n', '--name', default='World', help='Name to greet.') +@cli.entrypoint('QMK Hello World.') +def main(cli): + """Log a friendly greeting. + """ + cli.log.info('Hello, %s!', cli.config.general.name) diff --git a/lib/python/qmk/cli/json/__init__.py b/lib/python/qmk/cli/json/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/lib/python/qmk/cli/json/keymap.py b/lib/python/qmk/cli/json/keymap.py new file mode 100755 index 000000000..35fc8f9c0 --- /dev/null +++ b/lib/python/qmk/cli/json/keymap.py @@ -0,0 +1,54 @@ +"""Generate a keymap.c from a configurator export. +""" +import json +import os +import sys + +from milc import cli + +import qmk.keymap + + +@cli.argument('-o', '--output', help='File to write to') +@cli.argument('filename', help='Configurator JSON file') +@cli.entrypoint('Create a keymap.c from a QMK Configurator export.') +def main(cli): + """Generate a keymap.c from a configurator export. + + This command uses the `qmk.keymap` module to generate a keymap.c from a configurator export. The generated keymap is written to stdout, or to a file if -o is provided. + """ + # Error checking + if cli.args.filename == ('-'): + cli.log.error('Reading from STDIN is not (yet) supported.') + cli.print_usage() + exit(1) + if not os.path.exists(qmk.path.normpath(cli.args.filename)): + cli.log.error('JSON file does not exist!') + cli.print_usage() + exit(1) + + # Environment processing + if cli.args.output == ('-'): + cli.args.output = None + + # Parse the configurator json + with open(qmk.path.normpath(cli.args.filename), 'r') as fd: + user_keymap = json.load(fd) + + # Generate the keymap + keymap_c = qmk.keymap.generate(user_keymap['keyboard'], user_keymap['layout'], user_keymap['layers']) + + if cli.args.output: + output_dir = os.path.dirname(cli.args.output) + + if not os.path.exists(output_dir): + os.makedirs(output_dir) + + output_file = qmk.path.normpath(cli.args.output) + with open(output_file, 'w') as keymap_fd: + keymap_fd.write(keymap_c) + + cli.log.info('Wrote keymap to %s.', cli.args.output) + + else: + print(keymap_c) diff --git a/lib/python/qmk/errors.py b/lib/python/qmk/errors.py new file mode 100644 index 000000000..f9bf5b9af --- /dev/null +++ b/lib/python/qmk/errors.py @@ -0,0 +1,6 @@ +class NoSuchKeyboardError(Exception): + """Raised when we can't find a keyboard/keymap directory. + """ + + def __init__(self, message): + self.message = message diff --git a/lib/python/qmk/keymap.py b/lib/python/qmk/keymap.py new file mode 100644 index 000000000..6eccab788 --- /dev/null +++ b/lib/python/qmk/keymap.py @@ -0,0 +1,100 @@ +"""Functions that help you work with QMK keymaps. +""" +import json +import logging +import os +from traceback import format_exc + +import qmk.path +from qmk.errors import NoSuchKeyboardError + +# The `keymap.c` template to use when a keyboard doesn't have its own +DEFAULT_KEYMAP_C = """#include QMK_KEYBOARD_H + +/* THIS FILE WAS GENERATED! + * + * This file was generated by qmk-compile-json. You may or may not want to + * edit it directly. + */ + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +__KEYMAP_GOES_HERE__ +}; +""" + + +def template(keyboard): + """Returns the `keymap.c` template for a keyboard. + + If a template exists in `keyboards//templates/keymap.c` that + text will be used instead of `DEFAULT_KEYMAP_C`. + + Args: + keyboard + The keyboard to return a template for. + """ + template_name = 'keyboards/%s/templates/keymap.c' % keyboard + + if os.path.exists(template_name): + with open(template_name, 'r') as fd: + return fd.read() + + return DEFAULT_KEYMAP_C + + +def generate(keyboard, layout, layers): + """Returns a keymap.c for the specified keyboard, layout, and layers. + + Args: + keyboard + The name of the keyboard + + layout + The LAYOUT macro this keymap uses. + + layers + An array of arrays describing the keymap. Each item in the inner array should be a string that is a valid QMK keycode. + """ + layer_txt = [] + for layer_num, layer in enumerate(layers): + if layer_num != 0: + layer_txt[-1] = layer_txt[-1] + ',' + layer_keys = ', '.join(layer) + layer_txt.append('\t[%s] = %s(%s)' % (layer_num, layout, layer_keys)) + + keymap = '\n'.join(layer_txt) + keymap_c = template(keyboard, keymap) + + return keymap_c.replace('__KEYMAP_GOES_HERE__', keymap) + + +def write(keyboard, keymap, layout, layers): + """Generate the `keymap.c` and write it to disk. + + Returns the filename written to. + + Args: + keyboard + The name of the keyboard + + keymap + The name of the keymap + + layout + The LAYOUT macro this keymap uses. + + layers + An array of arrays describing the keymap. Each item in the inner array should be a string that is a valid QMK keycode. + """ + keymap_c = generate(keyboard, layout, layers) + keymap_path = qmk.path.keymap(keyboard) + keymap_dir = os.path.join(keymap_path, keymap) + keymap_file = os.path.join(keymap_dir, 'keymap.c') + + if not os.path.exists(keymap_dir): + os.makedirs(keymap_dir) + + with open(keymap_file, 'w') as keymap_fd: + keymap_fd.write(keymap_c) + + return keymap_file diff --git a/lib/python/qmk/path.py b/lib/python/qmk/path.py new file mode 100644 index 000000000..f2a8346a5 --- /dev/null +++ b/lib/python/qmk/path.py @@ -0,0 +1,32 @@ +"""Functions that help us work with files and folders. +""" +import os + + +def keymap(keyboard): + """Locate the correct directory for storing a keymap. + + Args: + keyboard + The name of the keyboard. Example: clueboard/66/rev3 + """ + for directory in ['.', '..', '../..', '../../..', '../../../..', '../../../../..']: + basepath = os.path.normpath(os.path.join('keyboards', keyboard, directory, 'keymaps')) + + if os.path.exists(basepath): + return basepath + + logging.error('Could not find keymaps directory!') + raise NoSuchKeyboardError('Could not find keymaps directory for: %s' % keyboard) + + +def normpath(path): + """Returns the fully resolved absolute path to a file. + + This function will return the absolute path to a file as seen from the + directory the script was called from. + """ + if path and path[0] == '/': + return os.path.normpath(path) + + return os.path.normpath(os.path.join(os.environ['ORIG_CWD'], path)) diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 000000000..351dc2524 --- /dev/null +++ b/requirements.txt @@ -0,0 +1,5 @@ +# Python requirements +# milc FIXME(skullydazed): Included in the repo for now. +argcomplete +colorama +#halo diff --git a/setup.cfg b/setup.cfg new file mode 100644 index 000000000..528512ac6 --- /dev/null +++ b/setup.cfg @@ -0,0 +1,330 @@ +# Python settings for QMK + +[yapf] +# Align closing bracket with visual indentation. +align_closing_bracket_with_visual_indent=True + +# Allow dictionary keys to exist on multiple lines. For example: +# +# x = { +# ('this is the first element of a tuple', +# 'this is the second element of a tuple'): +# value, +# } +allow_multiline_dictionary_keys=False + +# Allow lambdas to be formatted on more than one line. +allow_multiline_lambdas=False + +# Allow splitting before a default / named assignment in an argument list. +allow_split_before_default_or_named_assigns=True + +# Allow splits before the dictionary value. +allow_split_before_dict_value=True + +# Let spacing indicate operator precedence. For example: +# +# a = 1 * 2 + 3 / 4 +# b = 1 / 2 - 3 * 4 +# c = (1 + 2) * (3 - 4) +# d = (1 - 2) / (3 + 4) +# e = 1 * 2 - 3 +# f = 1 + 2 + 3 + 4 +# +# will be formatted as follows to indicate precedence: +# +# a = 1*2 + 3/4 +# b = 1/2 - 3*4 +# c = (1+2) * (3-4) +# d = (1-2) / (3+4) +# e = 1*2 - 3 +# f = 1 + 2 + 3 + 4 +# +arithmetic_precedence_indication=True + +# Number of blank lines surrounding top-level function and class +# definitions. +blank_lines_around_top_level_definition=2 + +# Insert a blank line before a class-level docstring. +blank_line_before_class_docstring=False + +# Insert a blank line before a module docstring. +blank_line_before_module_docstring=False + +# Insert a blank line before a 'def' or 'class' immediately nested +# within another 'def' or 'class'. For example: +# +# class Foo: +# # <------ this blank line +# def method(): +# ... +blank_line_before_nested_class_or_def=False + +# Do not split consecutive brackets. Only relevant when +# dedent_closing_brackets is set. For example: +# +# call_func_that_takes_a_dict( +# { +# 'key1': 'value1', +# 'key2': 'value2', +# } +# ) +# +# would reformat to: +# +# call_func_that_takes_a_dict({ +# 'key1': 'value1', +# 'key2': 'value2', +# }) +coalesce_brackets=True + +# The column limit. +column_limit=256 + +# The style for continuation alignment. Possible values are: +# +# - SPACE: Use spaces for continuation alignment. This is default behavior. +# - FIXED: Use fixed number (CONTINUATION_INDENT_WIDTH) of columns +# (ie: CONTINUATION_INDENT_WIDTH/INDENT_WIDTH tabs) for continuation +# alignment. +# - VALIGN-RIGHT: Vertically align continuation lines with indent +# characters. Slightly right (one more indent character) if cannot +# vertically align continuation lines with indent characters. +# +# For options FIXED, and VALIGN-RIGHT are only available when USE_TABS is +# enabled. +continuation_align_style=SPACE + +# Indent width used for line continuations. +continuation_indent_width=4 + +# Put closing brackets on a separate line, dedented, if the bracketed +# expression can't fit in a single line. Applies to all kinds of brackets, +# including function definitions and calls. For example: +# +# config = { +# 'key1': 'value1', +# 'key2': 'value2', +# } # <--- this bracket is dedented and on a separate line +# +# time_series = self.remote_client.query_entity_counters( +# entity='dev3246.region1', +# key='dns.query_latency_tcp', +# transform=Transformation.AVERAGE(window=timedelta(seconds=60)), +# start_ts=now()-timedelta(days=3), +# end_ts=now(), +# ) # <--- this bracket is dedented and on a separate line +dedent_closing_brackets=True + +# Disable the heuristic which places each list element on a separate line +# if the list is comma-terminated. +disable_ending_comma_heuristic=False + +# Place each dictionary entry onto its own line. +each_dict_entry_on_separate_line=True + +# The regex for an i18n comment. The presence of this comment stops +# reformatting of that line, because the comments are required to be +# next to the string they translate. +i18n_comment= + +# The i18n function call names. The presence of this function stops +# reformattting on that line, because the string it has cannot be moved +# away from the i18n comment. +i18n_function_call= + +# Indent blank lines. +indent_blank_lines=False + +# Indent the dictionary value if it cannot fit on the same line as the +# dictionary key. For example: +# +# config = { +# 'key1': +# 'value1', +# 'key2': value1 + +# value2, +# } +indent_dictionary_value=True + +# The number of columns to use for indentation. +indent_width=4 + +# Join short lines into one line. E.g., single line 'if' statements. +join_multiple_lines=False + +# Do not include spaces around selected binary operators. For example: +# +# 1 + 2 * 3 - 4 / 5 +# +# will be formatted as follows when configured with "*,/": +# +# 1 + 2*3 - 4/5 +no_spaces_around_selected_binary_operators= + +# Use spaces around default or named assigns. +spaces_around_default_or_named_assign=False + +# Use spaces around the power operator. +spaces_around_power_operator=False + +# The number of spaces required before a trailing comment. +# This can be a single value (representing the number of spaces +# before each trailing comment) or list of values (representing +# alignment column values; trailing comments within a block will +# be aligned to the first column value that is greater than the maximum +# line length within the block). For example: +# +# With spaces_before_comment=5: +# +# 1 + 1 # Adding values +# +# will be formatted as: +# +# 1 + 1 # Adding values <-- 5 spaces between the end of the statement and comment +# +# With spaces_before_comment=15, 20: +# +# 1 + 1 # Adding values +# two + two # More adding +# +# longer_statement # This is a longer statement +# short # This is a shorter statement +# +# a_very_long_statement_that_extends_beyond_the_final_column # Comment +# short # This is a shorter statement +# +# will be formatted as: +# +# 1 + 1 # Adding values <-- end of line comments in block aligned to col 15 +# two + two # More adding +# +# longer_statement # This is a longer statement <-- end of line comments in block aligned to col 20 +# short # This is a shorter statement +# +# a_very_long_statement_that_extends_beyond_the_final_column # Comment <-- the end of line comments are aligned based on the line length +# short # This is a shorter statement +# +spaces_before_comment=2 + +# Insert a space between the ending comma and closing bracket of a list, +# etc. +space_between_ending_comma_and_closing_bracket=False + +# Split before arguments +split_all_comma_separated_values=False + +# Split before arguments if the argument list is terminated by a +# comma. +split_arguments_when_comma_terminated=True + +# Set to True to prefer splitting before '+', '-', '*', '/', '//', or '@' +# rather than after. +split_before_arithmetic_operator=False + +# Set to True to prefer splitting before '&', '|' or '^' rather than +# after. +split_before_bitwise_operator=True + +# Split before the closing bracket if a list or dict literal doesn't fit on +# a single line. +split_before_closing_bracket=True + +# Split before a dictionary or set generator (comp_for). For example, note +# the split before the 'for': +# +# foo = { +# variable: 'Hello world, have a nice day!' +# for variable in bar if variable != 42 +# } +split_before_dict_set_generator=True + +# Split before the '.' if we need to split a longer expression: +# +# foo = ('This is a really long string: {}, {}, {}, {}'.format(a, b, c, d)) +# +# would reformat to something like: +# +# foo = ('This is a really long string: {}, {}, {}, {}' +# .format(a, b, c, d)) +split_before_dot=False + +# Split after the opening paren which surrounds an expression if it doesn't +# fit on a single line. +split_before_expression_after_opening_paren=False + +# If an argument / parameter list is going to be split, then split before +# the first argument. +split_before_first_argument=False + +# Set to True to prefer splitting before 'and' or 'or' rather than +# after. +split_before_logical_operator=False + +# Split named assignments onto individual lines. +split_before_named_assigns=True + +# Set to True to split list comprehensions and generators that have +# non-trivial expressions and multiple clauses before each of these +# clauses. For example: +# +# result = [ +# a_long_var + 100 for a_long_var in xrange(1000) +# if a_long_var % 10] +# +# would reformat to something like: +# +# result = [ +# a_long_var + 100 +# for a_long_var in xrange(1000) +# if a_long_var % 10] +split_complex_comprehension=True + +# The penalty for splitting right after the opening bracket. +split_penalty_after_opening_bracket=300 + +# The penalty for splitting the line after a unary operator. +split_penalty_after_unary_operator=10000 + +# The penalty of splitting the line around the '+', '-', '*', '/', '//', +# ``%``, and '@' operators. +split_penalty_arithmetic_operator=300 + +# The penalty for splitting right before an if expression. +split_penalty_before_if_expr=0 + +# The penalty of splitting the line around the '&', '|', and '^' +# operators. +split_penalty_bitwise_operator=300 + +# The penalty for splitting a list comprehension or generator +# expression. +split_penalty_comprehension=80 + +# The penalty for characters over the column limit. +split_penalty_excess_character=7000 + +# The penalty incurred by adding a line split to the unwrapped line. The +# more line splits added the higher the penalty. +split_penalty_for_added_line_split=30 + +# The penalty of splitting a list of "import as" names. For example: +# +# from a_very_long_or_indented_module_name_yada_yad import (long_argument_1, +# long_argument_2, +# long_argument_3) +# +# would reformat to something like: +# +# from a_very_long_or_indented_module_name_yada_yad import ( +# long_argument_1, long_argument_2, long_argument_3) +split_penalty_import_names=0 + +# The penalty of splitting the line around the 'and' and 'or' +# operators. +split_penalty_logical_operator=300 + +# Use the Tab character for indentation. +use_tabs=False + diff --git a/util/freebsd_install.sh b/util/freebsd_install.sh index c8696e8cc..815759203 100755 --- a/util/freebsd_install.sh +++ b/util/freebsd_install.sh @@ -1,4 +1,5 @@ #!/bin/sh +util_dir=$(dirname "$0") pkg update pkg install -y \ git \ @@ -17,3 +18,4 @@ pkg install -y \ arm-none-eabi-newlib \ diffutils \ python3 +pip3 install -r ${util_dir}/../requirements.txt diff --git a/util/linux_install.sh b/util/linux_install.sh index 4731ec015..d21cd3c1c 100755 --- a/util/linux_install.sh +++ b/util/linux_install.sh @@ -8,6 +8,8 @@ SLACKWARE_WARNING="You will need the following packages from slackbuilds.org:\n\ SOLUS_INFO="Your tools are now installed. To start using them, open new terminal or source these scripts:\n\t/usr/share/defaults/etc/profile.d/50-arm-toolchain-path.sh\n\t/usr/share/defaults/etc/profile.d/50-avr-toolchain-path.sh" +util_dir=$(dirname "$0") + if grep ID /etc/os-release | grep -qE "fedora"; then sudo dnf install \ arm-none-eabi-binutils-cs \ @@ -183,3 +185,6 @@ else echo echo "https://docs.qmk.fm/#/contributing" fi + +# Global install tasks +pip3 install -r ${util_dir}/../requirements.txt diff --git a/util/macos_install.sh b/util/macos_install.sh index 915ff3143..f7e304424 100755 --- a/util/macos_install.sh +++ b/util/macos_install.sh @@ -1,5 +1,7 @@ #!/bin/bash +util_dir=$(dirname "$0") + if ! brew --version 2>&1 > /dev/null; then echo "Error! Homebrew not installed or broken!" echo -n "Would you like to install homebrew now? [y/n] " @@ -24,3 +26,4 @@ brew tap PX4/homebrew-px4 brew update brew install avr-gcc@8 gcc-arm-none-eabi dfu-programmer avrdude dfu-util python3 brew link --force avr-gcc@8 +pip3 install -r ${util_dir}/../requirements.txt diff --git a/util/msys2_install.sh b/util/msys2_install.sh index bcb628ab2..bed176da6 100755 --- a/util/msys2_install.sh +++ b/util/msys2_install.sh @@ -5,6 +5,7 @@ download_dir=~/qmk_utils avrtools=avr8-gnu-toolchain armtools=gcc-arm-none-eabi installflip=false +util_dir=$(dirname "$0") echo "Installing dependencies needed for the installation (quazip)" pacman --needed -S base-devel mingw-w64-x86_64-toolchain msys/git msys/p7zip msys/python3 msys/unzip @@ -92,6 +93,8 @@ else fi popd +pip3 install -r ${util_dir}/../requirements.txt + cp -f "$dir/activate_msys2.sh" "$download_dir/" if grep "^source ~/qmk_utils/activate_msys2.sh$" ~/.bashrc diff --git a/util/wsl_install.sh b/util/wsl_install.sh index c2c206d2b..197d9f089 100755 --- a/util/wsl_install.sh +++ b/util/wsl_install.sh @@ -1,6 +1,7 @@ #!/bin/bash -dir=$(cd -P -- "$(dirname -- "$0")" && pwd -P) +util_dir=$(dirname "$0") +dir=$(cd -P -- "$util_dir" && pwd -P) pushd "$dir"; if [[ $dir != /mnt/* ]]; @@ -28,6 +29,8 @@ download_dir=wsl_downloaded source "$dir/win_shared_install.sh" +pip3 install -r ${util_dir}/../requirements.txt + pushd "$download_dir" while true; do echo -- cgit v1.2.3-70-g09d2 From 3538955778c253e68779605cc67c27e15d195729 Mon Sep 17 00:00:00 2001 From: yiancar Date: Tue, 16 Jul 2019 03:11:59 +0100 Subject: Usbasploader bootloader option addition (#6304) * Added USBasp bootloader option for USBasploader * author comment * ifdef fix :) * Add usbasp target * Update docs/flashing.md Co-Authored-By: fauxpark * Update docs/flashing.md Co-Authored-By: fauxpark * Update docs/flashing.md Co-Authored-By: fauxpark --- bootloader.mk | 4 +++ docs/config_options.md | 1 + docs/flashing.md | 25 +++++++++++++ keyboards/gingham/rules.mk | 4 +-- tmk_core/avr.mk | 4 +++ tmk_core/common/avr/bootloader.c | 77 ++++++++++++++++++++++------------------ 6 files changed, 78 insertions(+), 37 deletions(-) (limited to 'docs') diff --git a/bootloader.mk b/bootloader.mk index 4bcf183fb..9d73063d0 100644 --- a/bootloader.mk +++ b/bootloader.mk @@ -76,6 +76,10 @@ ifeq ($(strip $(BOOTLOADER)), bootloadHID) OPT_DEFS += -DBOOTLOADER_BOOTLOADHID BOOTLOADER_SIZE = 4096 endif +ifeq ($(strip $(BOOTLOADER)), USBasp) + OPT_DEFS += -DBOOTLOADER_USBASP + BOOTLOADER_SIZE = 4096 +endif ifdef BOOTLOADER_SIZE OPT_DEFS += -DBOOTLOADER_SIZE=$(strip $(BOOTLOADER_SIZE)) diff --git a/docs/config_options.md b/docs/config_options.md index eb0a441cc..33cb8da9b 100644 --- a/docs/config_options.md +++ b/docs/config_options.md @@ -289,6 +289,7 @@ This is a [make](https://www.gnu.org/software/make/manual/make.html) file that i * `halfkay` * `caterina` * `bootloadHID` + * `USBasp` ## Feature Options diff --git a/docs/flashing.md b/docs/flashing.md index 3b4582f00..833b9dd62 100644 --- a/docs/flashing.md +++ b/docs/flashing.md @@ -119,6 +119,31 @@ Flashing sequence: 3. Flash a .hex file 4. Reset the device into application mode (may be done automatically) +## USBasploader + +USBasploader is a bootloader developed by matrixstorm. It is used in some non-USB AVR chips such as the ATmega328P, which run V-USB. + +To ensure compatibility with the USBasploader bootloader, make sure this block is present in your `rules.mk`: + + # Bootloader + # This definition is optional, and if your keyboard supports multiple bootloaders of + # different sizes, comment this out, and the correct address will be loaded + # automatically (+60). See bootloader.mk for all options. + BOOTLOADER = USBasp + +Compatible flashers: + +* [QMK Toolbox](https://github.com/qmk/qmk_toolbox/releases) (recommended GUI) +* [avrdude](http://www.nongnu.org/avrdude/) with the `usbasp` programmer +* [AVRDUDESS](https://github.com/zkemble/AVRDUDESS) + +Flashing sequence: + +1. Press the `RESET` keycode, or keep the boot pin shorted to GND while quickly shorting RST to GND +2. Wait for the OS to detect the device +3. Flash a .hex file +4. Reset the device into application mode (may be done automatically) + ## STM32 All STM32 chips come preloaded with a factory bootloader that cannot be modified nor deleted. Some STM32 chips have bootloaders that do not come with USB programming (e.g. STM32F103) but the process is still the same. diff --git a/keyboards/gingham/rules.mk b/keyboards/gingham/rules.mk index b66b07129..83f424ba0 100644 --- a/keyboards/gingham/rules.mk +++ b/keyboards/gingham/rules.mk @@ -49,7 +49,7 @@ OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT # atmega32a bootloadHID # # This uses usbaspbootloader -# BOOTLOADER = atmel-dfu +BOOTLOADER = USBasp # If you don't know the bootloader type, then you can specify the # Boot Section Size in *bytes* by uncommenting out the OPT_DEFS line @@ -58,8 +58,6 @@ OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT # Atmel DFU loader 4096 # LUFA bootloader 4096 # USBaspLoader 2048 -# OPT_DEFS += -DBOOTLOADER_SIZE=4096 -OPT_DEFS += -DBOOTLOADER_SIZE=2048 # Flash program via avrdude, but default command is not suitable. # You can use plaid:default:program diff --git a/tmk_core/avr.mk b/tmk_core/avr.mk index 6bf86d58a..670e141bf 100644 --- a/tmk_core/avr.mk +++ b/tmk_core/avr.mk @@ -245,6 +245,10 @@ avrdude-split-left: $(BUILD_DIR)/$(TARGET).hex check-size cpfirmware avrdude-split-right: $(BUILD_DIR)/$(TARGET).hex check-size cpfirmware $(call EXEC_AVRDUDE,eeprom-righthand.eep) +usbasp: $(BUILD_DIR)/$(TARGET).hex check-size cpfirmware + avrdude -p $(MCU) -c usbasp -U flash:w:$(BUILD_DIR)/$(TARGET).hex + + # Convert hex to bin. bin: $(BUILD_DIR)/$(TARGET).hex $(OBJCOPY) -Iihex -Obinary $(BUILD_DIR)/$(TARGET).hex $(BUILD_DIR)/$(TARGET).bin diff --git a/tmk_core/common/avr/bootloader.c b/tmk_core/common/avr/bootloader.c index 3cdcd2e42..29036f7c5 100644 --- a/tmk_core/common/avr/bootloader.c +++ b/tmk_core/common/avr/bootloader.c @@ -65,6 +65,13 @@ #define BOOT_SIZE_1024 0b010 #define BOOT_SIZE_2048 0b000 +//compatibility between ATMega8 and ATMega88 +#if !defined (MCUCSR) + #if defined (MCUSR) + #define MCUCSR MCUSR + #endif +#endif + /** \brief Entering the Bootloader via Software * * http://www.fourwalledcubicle.com/files/LUFA/Doc/120730/html/_page__software_bootloader_start.html @@ -149,6 +156,39 @@ void bootloader_jump(void) { while(1) {} // wait for watchdog timer to trigger + #elif defined(BOOTLOADER_USBASP) + // Taken with permission of Stephan Baerwolf from https://github.com/tinyusbboard/API/blob/master/apipage.c + wdt_enable(WDTO_15MS); + wdt_reset(); + asm volatile ( + "cli \n\t" + "ldi r29 , %[ramendhi] \n\t" + "ldi r28 , %[ramendlo] \n\t" + #if (FLASHEND>131071) + "ldi r18 , %[bootaddrhi] \n\t" + "st Y+, r18 \n\t" + #endif + "ldi r18 , %[bootaddrme] \n\t" + "st Y+, r18 \n\t" + "ldi r18 , %[bootaddrlo] \n\t" + "st Y+, r18 \n\t" + "out %[mcucsrio], __zero_reg__ \n\t" + "bootloader_startup_loop%=: \n\t" + "rjmp bootloader_startup_loop%= \n\t" + : + : [mcucsrio] "I" (_SFR_IO_ADDR(MCUCSR)), + #if (FLASHEND>131071) + [ramendhi] "M" (((RAMEND - 2) >> 8) & 0xff), + [ramendlo] "M" (((RAMEND - 2) >> 0) & 0xff), + [bootaddrhi] "M" ((((FLASH_SIZE - BOOTLOADER_SIZE) >> 1) >>16) & 0xff), + #else + [ramendhi] "M" (((RAMEND - 1) >> 8) & 0xff), + [ramendlo] "M" (((RAMEND - 1) >> 0) & 0xff), + #endif + [bootaddrme] "M" ((((FLASH_SIZE - BOOTLOADER_SIZE) >> 1) >> 8) & 0xff), + [bootaddrlo] "M" ((((FLASH_SIZE - BOOTLOADER_SIZE) >> 1) >> 0) & 0xff) + ); + #else // Assume remaining boards are DFU, even if the flag isn't set #if !(defined(__AVR_ATmega32A__) || defined(__AVR_ATmega328P__)) // no USB - maybe BOOTLOADER_BOOTLOADHID instead though? @@ -172,24 +212,19 @@ void bootloader_jump(void) { } -#ifdef __AVR_ATmega32A__ - // MCUSR is actually called MCUCSR in ATmega32A - #define MCUSR MCUCSR -#endif - /* this runs before main() */ void bootloader_jump_after_watchdog_reset(void) __attribute__ ((used, naked, section (".init3"))); void bootloader_jump_after_watchdog_reset(void) { #ifndef BOOTLOADER_HALFKAY - if ((MCUSR & (1< Date: Mon, 15 Jul 2019 23:23:32 -0700 Subject: [Docs] Add dedicated page for Split Keyboard information (#5802) * [Docs] Add dedicated page for Split Keyboard information * Apply suggestions from code review Co-Authored-By: drashna * Fix Typos Co-Authored-By: drashna * Fix some formatting issues * Add Additional RGB info * Fix Bulletted formatting * Apply suggestions from code review Co-Authored-By: drashna * Fix line wrapping * Additional fixes and expansion * Reword warning/note Co-Authored-By: drashna * add i2c/serial coexistance info * i2c markdown * Change i2c wiring text Co-Authored-By: drashna --- docs/_summary.md | 1 + docs/feature_split_keyboard.md | 185 +++++++++++++++++++++++++++++++++++++++++ docs/features.md | 1 + 3 files changed, 187 insertions(+) create mode 100644 docs/feature_split_keyboard.md (limited to 'docs') diff --git a/docs/_summary.md b/docs/_summary.md index 611c283ac..56184f44d 100644 --- a/docs/_summary.md +++ b/docs/_summary.md @@ -77,6 +77,7 @@ * [RGB Lighting](feature_rgblight.md) * [RGB Matrix](feature_rgb_matrix.md) * [Space Cadet](feature_space_cadet.md) + * [Split Keyboard](feature_split_keyboard.md) * [Stenography](feature_stenography.md) * [Swap Hands](feature_swap_hands.md) * [Tap Dance](feature_tap_dance.md) diff --git a/docs/feature_split_keyboard.md b/docs/feature_split_keyboard.md new file mode 100644 index 000000000..95aceab22 --- /dev/null +++ b/docs/feature_split_keyboard.md @@ -0,0 +1,185 @@ +# Split Keyboard + +Many keyboards in the QMK Firmware repo are "split" keyboards. They use two controllers—one plugging into USB, and the second connected by a serial or an I2C connection over a TRRS or similar cable. + +Split keyboards can have a lot of benefits, but there is some additional work needed to get them enabled. + +QMK Firmware has a generic implementation that is usable by any board, as well as numerous board specific implementations. + +For this, we will mostly be talking about the generic implementation used by the Let's Split and other keyboards. + +!> ARM is not yet supported for Split Keyboards. Progress is being made, but we are not quite there, yet. + + +## Hardware Configuration + +This assumes that you're using two Pro Micro-compatible controllers, and are using TRRS jacks to connect to two halves. + +### Required Hardware + +Apart from diodes and key switches for the keyboard matrix in each half, you will need 2x TRRS sockets and 1x TRRS cable. + +Alternatively, you can use any sort of cable and socket that has at least 3 wires. + +If you want to use I2C to communicate between halves, you will need a cable with at least 4 wires and 2x 4.7kΩ pull-up resistors. + +#### Considerations + +The most commonly used connection is a TRRS cable and jacks. These provide 4 wires, making them very useful for split keyboards, and are easy to find. + +However, since one of the wires carries VCC, this means that the boards are not hot pluggable. You should always disconnect the board from USB before unplugging and plugging in TRRS cables, or you can short the controller, or worse. + +Another option is to use phone cables (as in, old school RJ-11/RJ-14 cables). Make sure that you use one that actually supports 4 wires/lanes. + +However, USB cables, SATA cables, and even just 4 wires have been known to be used for communication between the controllers. + +!> Using USB cables for communication between the controllers works just fine, but the connector could be mistaken for a normal USB connection and potentially short out the keyboard, depending on how it's wired. For this reason, they are not recommended for connecting split keyboards. + +### Serial Wiring + +The 3 wires of the TRS/TRRS cable need to connect GND, VCC, and D0 (aka PDO or pin 3) between the two Pro Micros. + +?> Note that the pin used here is actually set by `SOFT_SERIAL_PIN` below. + +![serial wiring](https://i.imgur.com/C3D1GAQ.png) + +### I2C Wiring + +The 4 wires of the TRRS cable need to connect GND, VCC, and SCL and SDA (aka PD0/pin 3 and PD1/pin 2, respectively) between the two Pro Micros. + +The pull-up resistors may be placed on either half. It is also possible to use 4 resistors and have the pull-ups in both halves, but this is unnecessary in simple use cases. + +![I2C wiring](https://i.imgur.com/Hbzhc6E.png) + +## Firmware Configuration + +To enable the split keyboard feature, add the following to your `rules.mk`: + +```make +SPLIT_KEYBOARD = yes +``` + +If you're using a custom transport (communication method), then you will also need to add: + +```make +SPLIT_TRANSPORT = custom +``` + +### Setting Handedness + +By default, the firmware does not know which side is which; it needs some help to determine that. There are several ways to do this, listed in order of precedence. + +#### Handedness by Pin + +You can configure the firmware to read a pin on the controller to determine handedness. To do this, add the following to your `config.h` file: + +```c +#define SPLIT_HAND_PIN B7 +``` + +This will read the specified pin. If it's high, then the controller assumes it is the left hand, and if it's low, it's assumed to be the right side. + +#### Handedness by EEPROM + +This method sets the keyboard's handedness by setting a flag in the persistent storage (`EEPROM`). This is checked when the controller first starts up, and determines what half the keyboard is, and how to orient the keyboard layout. + + +To enable this method, add the following to your `config.h` file: + +```c +#define EE_HANDS +``` + +However, you'll have to flash the EEPROM files for the correct hand to each controller. You can do this manually, or there are targets for avrdude and dfu to do this, while flashing the firmware: + +* `:avrdude-split-left` +* `:avrdude-split-right` +* `:dfu-split-left` +* `:dfu-split-right` + +This setting is not changed when re-initializing the EEPROM using the `EEP_RST` key, or using the `eeconfig_init()` function. However, if you reset the EEPROM outside of the firmware's built in options (such as flashing a file that overwrites the `EEPROM`, like how the [QMK Toolbox]()'s "Reset EEPROM" button works), you'll need to re-flash the controller with the `EEPROM` files. + +You can find the `EEPROM` files in the QMK firmware repo, [here](https://github.com/qmk/qmk_firmware/tree/master/quantum/split_common). + +#### Handedness by `#define` + +You can set the handedness at compile time. This is done by adding the following to your `config.h` file: + +```c +#define MASTER_RIGHT +``` + +or + +```c +#define MASTER_LEFT +``` + +If neither are defined, the handedness defaults to `MASTER_LEFT`. + + +### Communication Options + +Because not every split keyboard is identical, there are a number of additional options that can be configured in your `config.h` file. + +```c +#define USE_I2C +``` + +This enables I2C support for split keyboards. This isn't strictly for communication, but can be used for OLED or other I2C-based devices. + +```c +#define SOFT_SERIAL_PIN D0 +``` + +This sets the pin to be used for serial communication. If you're not using serial, you shouldn't need to define this. + +However, if you are using serial and I2C on the board, you will need to set this, and to something other than D0 and D1 (as these are used for I2C communication). + +```c +#define SELECT_SOFT_SERIAL_SPEED {#}` +``` + +If you're having issues with serial communication, you can change this value, as it controls the communication speed for serial. The default is 1, and the possible values are: + +* **`0`**: about 189kbps (Experimental only) +* **`1`**: about 137kbps (default) +* **`2`**: about 75kbps +* **`3`**: about 39kbps +* **`4`**: about 26kbps +* **`5`**: about 20kbps + +### Hardware Configuration Options + +There are some settings that you may need to configure, based on how the hardware is set up. + +```c +#define MATRIX_ROW_PINS_RIGHT { } +#define MATRIX_COL_PINS_RIGHT { } +``` + +This allows you to specify a different set of pins for the matrix on the right side. This is useful if you have a board with differently-shaped halves that requires a different configuration (such as Keebio's Quefrency). + + +```c +#define RGBLIGHT_SPLIT +``` + +This option enables synchronization of the RGB Light modes between the controllers of the split keyboard. This is for keyboards that have RGB LEDs that are directly wired to the controller (that is, they are not using the "extra data" option on the TRRS cable). + +```c +#define RGBLED_SPLIT { 6, 6 } +``` + +This sets how many LEDs are directly connected to each controller. The first number is the left side, and the second number is the right side. + +?> This setting implies that `RGBLIGHT_SPLIT` is enabled, and will forcibly enable it, if it's not. + + +## Additional Resources + +Nicinabox has a [very nice and detailed guide](https://github.com/nicinabox/lets-split-guide) for the Let's Split keyboard, that covers most everything you need to know, including troubleshooting information. + +However, the RGB Light section is out of date, as it was written long before the RGB Split code was added to QMK Firmware. Instead, wire each strip up directly to the controller. + + diff --git a/docs/features.md b/docs/features.md index f9ef51eae..f230c7c23 100644 --- a/docs/features.md +++ b/docs/features.md @@ -30,6 +30,7 @@ QMK has a staggering number of features for building your keyboard. It can take * [RGB Light](feature_rgblight.md) - RGB lighting for your keyboard. * [RGB Matrix](feature_rgb_matrix.md) - RGB Matrix lights for per key lighting. * [Space Cadet](feature_space_cadet.md) - Use your left/right shift keys to type parenthesis and brackets. +* [Split Keyboard](feature_split_keyboard.md) * [Stenography](feature_stenography.md) - Put your keyboard into Plover mode for stenography use. * [Swap Hands](feature_swap_hands.md) - Mirror your keyboard for one handed usage. * [Tap Dance](feature_tap_dance.md) - Make a single key do as many things as you want. -- cgit v1.2.3-70-g09d2 From 29e9caa82bdfe898dd7fca82fcecf0cae2374859 Mon Sep 17 00:00:00 2001 From: Joel Challis Date: Tue, 16 Jul 2019 09:20:34 +0100 Subject: Configure Vagrant to use qmk_base_container (#6194) * Initial conversion of vagrant to use qmkfm/base_container * Fix vagrant when using docker provider * Workaround for VirtualBox VM restarts * Generalise Vagrant docs slightly and add FAQ --- Vagrantfile | 31 ++++++++++++++++++--------- docs/getting_started_vagrant.md | 46 ++++++++++++++++++++++++++++++++++++----- util/vagrant/Dockerfile | 33 +++++++++++++++++++++++++++++ util/vagrant/readme.md | 12 +++++++++++ 4 files changed, 107 insertions(+), 15 deletions(-) create mode 100644 util/vagrant/Dockerfile create mode 100644 util/vagrant/readme.md (limited to 'docs') diff --git a/Vagrantfile b/Vagrantfile index 552711d63..dae4e0d53 100644 --- a/Vagrantfile +++ b/Vagrantfile @@ -52,26 +52,37 @@ Vagrant.configure(2) do |config| 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 + # config.vm.box is nil. In this case, we adhoc build util/vagrant/Dockerfile. + # Note that this bind-mounts from the current dir to # /vagrant in the guest, so unless your UID is 1000 to match vagrant in the # image, you'll need to: chmod -R a+rw . config.vm.provider "docker" do |docker, override| override.vm.box = nil - docker.image = "jesselang/debian-vagrant:stretch" + docker.build_dir = "util/vagrant" 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 ,run: (or change "always" to "once") 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", inline: "/vagrant/util/qmk_install.sh", run: "always" + # Unless we are running the docker container directly + # 1. run container detached on vm + # 2. attach on 'vagrant ssh' + ["virtualbox", "vmware_workstation", "vmware_fusion"].each do |type| + config.vm.provider type do |virt, override| + override.vm.provision "docker" do |d| + d.run "qmkfm/base_container", + cmd: "tail -f /dev/null", + args: "--privileged -v /dev:/dev -v '/vagrant:/vagrant'" + end + + override.vm.provision "shell", inline: <<-SHELL + echo 'docker restart qmkfm-base_container && exec docker exec -it qmkfm-base_container /bin/bash -l' >> ~vagrant/.bashrc + SHELL + end + end config.vm.post_up_message = <<-EOT - Log into the VM using 'vagrant ssh'. QMK directory synchronized with host is - located at /vagrant + Log into the environment using 'vagrant ssh'. QMK directory synchronized with + host is located at /vagrant To compile the .hex files use make command inside this directory, e.g. cd /vagrant make :default diff --git a/docs/getting_started_vagrant.md b/docs/getting_started_vagrant.md index 848a43a1f..b62524271 100644 --- a/docs/getting_started_vagrant.md +++ b/docs/getting_started_vagrant.md @@ -1,16 +1,20 @@ # Vagrant Quick Start -This project includes a Vagrantfile that will allow you to build a new firmware for your keyboard very easily without major changes to your primary operating system. This also ensures that when you clone the project and perform a build, you have the exact same environment as anyone else using the Vagrantfile to build. This makes it much easier for people to help you troubleshoot any issues you encounter. +This project includes a `Vagrantfile` that will allow you to build a new firmware for your keyboard very easily without major changes to your primary operating system. This also ensures that when you clone the project and perform a build, you have the exact same environment as anyone else using the Vagrantfile to build. This makes it much easier for people to help you troubleshoot any issues you encounter. ## Requirements -Using the `/Vagrantfile` in this repository requires you have [Vagrant](http://www.vagrantup.com/) as well as [VirtualBox](https://www.virtualbox.org/) (or [VMware Workstation](https://www.vmware.com/products/workstation) and [Vagrant VMware plugin](http://www.vagrantup.com/vmware) but the (paid) VMware plugin requires a licensed copy of VMware Workstation/Fusion). +Using the `Vagrantfile` in this repository requires you have [Vagrant](http://www.vagrantup.com/) as well as a supported provider installed: -*COMPATIBILITY NOTICE* Certain versions of Virtualbox 5 appear to have an incompatibility with the Virtualbox extensions installed in the boxes in this Vagrantfile. If you encounter any issues with the /vagrant mount not succeeding, please upgrade your version of Virtualbox to at least 5.0.12. **Alternately, you can try running the following command:** `vagrant plugin install vagrant-vbguest` +* [VirtualBox](https://www.virtualbox.org/) (Version at least 5.0.12) + * Sold as 'the most accessible platform to use Vagrant' +* [VMware Workstation](https://www.vmware.com/products/workstation) and [Vagrant VMware plugin](http://www.vagrantup.com/vmware) + * The (paid) VMware plugin requires a licensed copy of VMware Workstation/Fusion +* [Docker](https://www.docker.com/) -Other than having Vagrant and Virtualbox installed and possibly a restart of your computer afterwards, you can simple run a 'vagrant up' anywhere inside the folder where you checked out this project and it will start a Linux virtual machine that contains all the tools required to build this project. There is a post Vagrant startup hint that will get you off on the right foot, otherwise you can also reference the build documentation below. +Other than having Vagrant, a suitable provider installed and possibly a restart of your computer afterwards, you can simple run a 'vagrant up' anywhere inside the folder where you checked out this project and it will start an environment (either a virtual machine or container) that contains all the tools required to build this project. There is a post Vagrant startup hint that will get you off on the right foot, otherwise you can also reference the build documentation below. -# Flashing the Firmware +## Flashing the Firmware The "easy" way to flash the firmware is using a tool from your host OS: @@ -19,3 +23,35 @@ The "easy" way to flash the firmware is using a tool from your host OS: * [Atmel FLIP](http://www.atmel.com/tools/flip.aspx) If you want to program via the command line you can uncomment the ['modifyvm'] lines in the Vagrantfile to enable the USB passthrough into Linux and then program using the command line tools like dfu-util/dfu-programmer or you can install the Teensy CLI version. + +## Vagrantfile Overview +The development environment is configured to run the QMK Docker image, `qmkfm/base_container`. This not only ensures predictability between systems, it also mirrors the CI environment. + +## FAQ + +### Why am I seeing issues under Virtualbox? +Certain versions of Virtualbox 5 appear to have an incompatibility with the Virtualbox extensions installed in the boxes in this Vagrantfile. If you encounter any issues with the /vagrant mount not succeeding, please upgrade your version of Virtualbox to at least 5.0.12. **Alternately, you can try running the following command:** + +```console +vagrant plugin install vagrant-vbguest +``` + +### How do I remove an existing environment? +Finished with your environment? From anywhere inside the folder where you checked out this project, Execute: + +```console +vagrant destory +``` + +### What if I want to use Docker directly? +Want to benefit from the Vagrant workflow without a virtual machine? The Vagrantfile is configured to bypass running a virtual machine, and run the container directly. Execute the following when bringing up the environment to force the use of Docker: +```console +vagrant up --provider=docker +``` + +### How do I access the virtual machine instead of the Docker container? +Execute the following to bypass the `vagrant` user booting directly to the official qmk builder image: + +```console +vagrant ssh -c 'sudo -i' +``` \ No newline at end of file diff --git a/util/vagrant/Dockerfile b/util/vagrant/Dockerfile new file mode 100644 index 000000000..1936ee023 --- /dev/null +++ b/util/vagrant/Dockerfile @@ -0,0 +1,33 @@ +FROM qmkfm/base_container + +# Basic upgrades; install sudo and SSH. +RUN apt-get update && apt-get install --no-install-recommends -y \ + sudo \ + openssh-server \ + && rm -rf /var/lib/apt/lists/* +RUN mkdir /var/run/sshd +RUN sed -i 's/PermitRootLogin yes/PermitRootLogin no/' /etc/ssh/sshd_config +RUN echo 'UseDNS no' >> /etc/ssh/sshd_config + +# Remove the policy file once we're finished installing software. +# This allows invoke-rc.d and friends to work as expected. +RUN rm /usr/sbin/policy-rc.d + +# Add the Vagrant user and necessary passwords. +RUN groupadd vagrant +RUN useradd -c "Vagrant" -g vagrant -d /home/vagrant -m -s /bin/bash vagrant +RUN echo 'root:vagrant' | chpasswd +RUN echo 'vagrant:vagrant' | chpasswd + +# Allow the vagrant user to use sudo without a password. +RUN echo 'vagrant ALL=(ALL) NOPASSWD: ALL' > /etc/sudoers.d/vagrant + +# Install Vagrant's insecure public key so provisioning and 'vagrant ssh' work. +RUN mkdir /home/vagrant/.ssh +ADD https://raw.githubusercontent.com/mitchellh/vagrant/master/keys/vagrant.pub /home/vagrant/.ssh/authorized_keys +RUN chmod 0600 /home/vagrant/.ssh/authorized_keys +RUN chown -R vagrant:vagrant /home/vagrant/.ssh +RUN chmod 0700 /home/vagrant/.ssh + +EXPOSE 22 +CMD ["/usr/sbin/sshd", "-D"] diff --git a/util/vagrant/readme.md b/util/vagrant/readme.md new file mode 100644 index 000000000..e4b870a64 --- /dev/null +++ b/util/vagrant/readme.md @@ -0,0 +1,12 @@ +# QMK Vagrant Utilities + +## Dockerfile +Vagrant-friendly `qmkfm/base_container`. + +In order for the Docker provider and `vagrant ssh` to function the container has a few extra requirements. + +* vagrant user +* ssh server + * configured with expected public key +* sudo + * passwordless for vagrant user -- cgit v1.2.3-70-g09d2 From f6651424a022d6209c39981f0cf45fd87660578c Mon Sep 17 00:00:00 2001 From: Drashna Jaelre Date: Tue, 16 Jul 2019 01:21:52 -0700 Subject: Make Caps Lock delay more reasonable (#6199) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Make Caps Lock delay more reasonable * Update documentation * Update docs/config_options.md Co-Authored-By: Konstantin Đorđević * Update docs/config_options.md Co-Authored-By: Konstantin Đorđević --- docs/config_options.md | 4 ++-- tmk_core/common/action.c | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) (limited to 'docs') diff --git a/docs/config_options.md b/docs/config_options.md index 33cb8da9b..3012dcdcf 100644 --- a/docs/config_options.md +++ b/docs/config_options.md @@ -171,8 +171,8 @@ If you define these options you will enable the associated feature, which may in * how long for the Combo keys to be detected. Defaults to `TAPPING_TERM` if not defined. * `#define TAP_CODE_DELAY 100` * Sets the delay between `register_code` and `unregister_code`, if you're having issues with it registering properly (common on VUSB boards). The value is in milliseconds. -* `#define TAP_HOLD_CAPS_DELAY 200` - * Sets the delay for Tap Hold keys (`LT`, `MT`) when using `KC_CAPSLOCK` keycode, as this has some special handling on MacOS. The value is in milliseconds, and defaults to 200ms if not defined. +* `#define TAP_HOLD_CAPS_DELAY 80` + * Sets the delay for Tap Hold keys (`LT`, `MT`) when using `KC_CAPSLOCK` keycode, as this has some special handling on MacOS. The value is in milliseconds, and defaults to 80 ms if not defined. For macOS, you may want to set this to 200 or higher. ## RGB Light Configuration diff --git a/tmk_core/common/action.c b/tmk_core/common/action.c index 6a560229a..285786cb7 100644 --- a/tmk_core/common/action.c +++ b/tmk_core/common/action.c @@ -45,7 +45,7 @@ int retro_tapping_counter = 0; #endif #ifndef TAP_HOLD_CAPS_DELAY -# define TAP_HOLD_CAPS_DELAY 200 +# define TAP_HOLD_CAPS_DELAY 80 #endif /** \brief Called to execute an action. * -- cgit v1.2.3-70-g09d2 From 4e375aa1f536e979a587534df0b6951fa39e8a30 Mon Sep 17 00:00:00 2001 From: Joel Challis Date: Tue, 16 Jul 2019 09:30:53 +0100 Subject: Add ARM I2Cv1 support to i2c_master (#6262) * Add ARM I2Cv1 support to i2c_master * Add I2Cv1 docs --- docs/i2c_driver.md | 20 +++++++++++++-- drivers/arm/i2c_master.c | 11 +++++++++ drivers/arm/i2c_master.h | 64 +++++++++++++++++++++++++++++++----------------- 3 files changed, 70 insertions(+), 25 deletions(-) (limited to 'docs') diff --git a/docs/i2c_driver.md b/docs/i2c_driver.md index 4a47a92b1..317307e1b 100644 --- a/docs/i2c_driver.md +++ b/docs/i2c_driver.md @@ -73,7 +73,22 @@ STM32 MCUs allows a variety of pins to be configured as I2C pins depending on th | `I2C1_SDA` | The pin number for the SDA pin (0-9) | `7` | | `I2C1_BANK` (deprecated) | The bank of pins (`GPIOA`, `GPIOB`, `GPIOC`), superceded by `I2C1_SCL_BANK`, `I2C1_SDA_BANK` | `GPIOB` | -STM32 MCUs allow for different timing parameters when configuring I2C. These can be modified using the following parameters, using https://www.st.com/en/embedded-software/stsw-stm32126.html as a reference: +The ChibiOS I2C driver configuration depends on STM32 MCU: + + STM32F1xx, STM32F2xx, STM32F4xx, STM32L0xx and STM32L1xx use I2Cv1; + STM32F0xx, STM32F3xx, STM32F7xx and STM32L4xx use I2Cv2; + +#### I2Cv1 +STM32 MCUs allow for different clock and duty parameters when configuring I2Cv1. These can be modified using the following parameters, using as a reference: + +| Variable | Default | +|--------------------|------------------| +| `I2C1_OPMODE` | `OPMODE_I2C` | +| `I2C1_CLOCK_SPEED` | `100000` | +| `I2C1_DUTY_CYCLE` | `STD_DUTY_CYCLE` | + +#### I2Cv2 +STM32 MCUs allow for different timing parameters when configuring I2Cv2. These can be modified using the following parameters, using as a reference: | Variable | Default | |-----------------------|---------| @@ -83,13 +98,14 @@ STM32 MCUs allow for different timing parameters when configuring I2C. These can | `I2C1_TIMINGR_SCLH` | `15U` | | `I2C1_TIMINGR_SCLL` | `21U` | -STM32 MCUs allow for different "alternate function" modes when configuring GPIO pins. These are required to switch the pins used to I2C mode. See the respective datasheet for the appropriate values for your MCU. +STM32 MCUs allow for different "alternate function" modes when configuring GPIO pins. These are required to switch the pins used to I2Cv2 mode. See the respective datasheet for the appropriate values for your MCU. | Variable | Default | |---------------------|---------| | `I2C1_SCL_PAL_MODE` | `4` | | `I2C1_SDA_PAL_MODE` | `4` | +#### Other You can also overload the `void i2c_init(void)` function, which has a weak attribute. If you do this the configuration variables above will not be used. Please consult the datasheet of your MCU for the available GPIO configurations. The following is an example initialization function: ```C diff --git a/drivers/arm/i2c_master.c b/drivers/arm/i2c_master.c index 5814375f3..9b4a752b1 100644 --- a/drivers/arm/i2c_master.c +++ b/drivers/arm/i2c_master.c @@ -33,11 +33,17 @@ static uint8_t i2c_address; static const I2CConfig i2cconfig = { +#ifdef USE_I2CV1 + I2C1_OPMODE, + I2C1_CLOCK_SPEED, + I2C1_DUTY_CYCLE, +#else STM32_TIMINGR_PRESC(I2C1_TIMINGR_PRESC) | STM32_TIMINGR_SCLDEL(I2C1_TIMINGR_SCLDEL) | STM32_TIMINGR_SDADEL(I2C1_TIMINGR_SDADEL) | STM32_TIMINGR_SCLH(I2C1_TIMINGR_SCLH) | STM32_TIMINGR_SCLL(I2C1_TIMINGR_SCLL), 0, 0 +#endif }; static i2c_status_t chibios_to_qmk(const msg_t* status) { @@ -61,8 +67,13 @@ void i2c_init(void) chThdSleepMilliseconds(10); +#ifdef USE_I2CV1 + palSetPadMode(I2C1_SCL_BANK, I2C1_SCL, PAL_MODE_STM32_ALTERNATE_OPENDRAIN); + palSetPadMode(I2C1_SDA_BANK, I2C1_SDA, PAL_MODE_STM32_ALTERNATE_OPENDRAIN); +#else palSetPadMode(I2C1_SCL_BANK, I2C1_SCL, PAL_MODE_ALTERNATE(I2C1_SCL_PAL_MODE) | PAL_STM32_OTYPE_OPENDRAIN); palSetPadMode(I2C1_SDA_BANK, I2C1_SDA, PAL_MODE_ALTERNATE(I2C1_SDA_PAL_MODE) | PAL_STM32_OTYPE_OPENDRAIN); +#endif //i2cInit(); //This is invoked by halInit() so no need to redo it. } diff --git a/drivers/arm/i2c_master.h b/drivers/arm/i2c_master.h index 1bb74c800..2f40d4985 100644 --- a/drivers/arm/i2c_master.h +++ b/drivers/arm/i2c_master.h @@ -22,10 +22,16 @@ * Please ensure that HAL_USE_I2C is TRUE in the halconf.h file and that * STM32_I2C_USE_I2C1 is TRUE in the mcuconf.h file. */ +#pragma once #include "ch.h" #include + +#if defined(STM32F1XX) || defined(STM32F1xx) || defined(STM32F2xx) || defined(STM32F4xx) || defined(STM32L0xx) || defined(STM32L1xx) + #define USE_I2CV1 +#endif + #ifdef I2C1_BANK #define I2C1_SCL_BANK I2C1_BANK #define I2C1_SDA_BANK I2C1_BANK @@ -46,30 +52,42 @@ #define I2C1_SDA 7 #endif -// The default PAL alternate modes are used to signal that the pins are used for I2C -#ifndef I2C1_SCL_PAL_MODE - #define I2C1_SCL_PAL_MODE 4 -#endif -#ifndef I2C1_SDA_PAL_MODE - #define I2C1_SDA_PAL_MODE 4 -#endif +#ifdef USE_I2CV1 + #ifndef I2C1_OPMODE + #define I2C1_OPMODE OPMODE_I2C + #endif + #ifndef I2C1_CLOCK_SPEED + #define I2C1_CLOCK_SPEED 100000 /* 400000 */ + #endif + #ifndef I2C1_DUTY_CYCLE + #define I2C1_DUTY_CYCLE STD_DUTY_CYCLE /* FAST_DUTY_CYCLE_2 */ + #endif +#else + // The default PAL alternate modes are used to signal that the pins are used for I2C + #ifndef I2C1_SCL_PAL_MODE + #define I2C1_SCL_PAL_MODE 4 + #endif + #ifndef I2C1_SDA_PAL_MODE + #define I2C1_SDA_PAL_MODE 4 + #endif -// The default timing values below configures the I2C clock to 400khz assuming a 72Mhz clock -// For more info : https://www.st.com/en/embedded-software/stsw-stm32126.html -#ifndef I2C1_TIMINGR_PRESC - #define I2C1_TIMINGR_PRESC 15U -#endif -#ifndef I2C1_TIMINGR_SCLDEL - #define I2C1_TIMINGR_SCLDEL 4U -#endif -#ifndef I2C1_TIMINGR_SDADEL - #define I2C1_TIMINGR_SDADEL 2U -#endif -#ifndef I2C1_TIMINGR_SCLH - #define I2C1_TIMINGR_SCLH 15U -#endif -#ifndef I2C1_TIMINGR_SCLL - #define I2C1_TIMINGR_SCLL 21U + // The default timing values below configures the I2C clock to 400khz assuming a 72Mhz clock + // For more info : https://www.st.com/en/embedded-software/stsw-stm32126.html + #ifndef I2C1_TIMINGR_PRESC + #define I2C1_TIMINGR_PRESC 15U + #endif + #ifndef I2C1_TIMINGR_SCLDEL + #define I2C1_TIMINGR_SCLDEL 4U + #endif + #ifndef I2C1_TIMINGR_SDADEL + #define I2C1_TIMINGR_SDADEL 2U + #endif + #ifndef I2C1_TIMINGR_SCLH + #define I2C1_TIMINGR_SCLH 15U + #endif + #ifndef I2C1_TIMINGR_SCLL + #define I2C1_TIMINGR_SCLL 21U + #endif #endif #ifndef I2C_DRIVER -- cgit v1.2.3-70-g09d2 From c44fc68297029da87233777aff6978d39caebbb1 Mon Sep 17 00:00:00 2001 From: Drashna Jaelre Date: Tue, 16 Jul 2019 01:37:19 -0700 Subject: Allow Combo feature to be enabled/disabled live (#6318) * Add ability to enable/disable combos * Update documentation for Combo feature * Change keycodes for appeasement * Simplify combo_toggle function * Update names * Update combo docs to use tables --- docs/feature_combo.md | 32 +++++++++++++++++------- quantum/process_keycode/process_combo.c | 43 ++++++++++++++++++++++++++++++++- quantum/process_keycode/process_combo.h | 5 ++++ quantum/quantum_keycodes.h | 3 +++ 4 files changed, 73 insertions(+), 10 deletions(-) (limited to 'docs') diff --git a/docs/feature_combo.md b/docs/feature_combo.md index 4cb1bcda0..9db7be511 100644 --- a/docs/feature_combo.md +++ b/docs/feature_combo.md @@ -59,19 +59,12 @@ void process_combo_event(uint8_t combo_index, bool pressed) { switch(combo_index) { case ZC_COPY: if (pressed) { - register_code(KC_LCTL); - register_code(KC_C); - unregister_code(KC_C); - unregister_code(KC_LCTL); + tap_code16(LCTL(KC_C)); } break; - case XV_PASTE: if (pressed) { - register_code(KC_LCTL); - register_code(KC_V); - unregister_code(KC_V); - unregister_code(KC_LCTL); + tap_code16(LCTL(KC_V)); } break; } @@ -87,3 +80,24 @@ If you're using long combos, or even longer combos, you may run into issues with In this case, you can add either `#define EXTRA_LONG_COMBOS` or `#define EXTRA_EXTRA_LONG_COMBOS` in your `config.h` file. You may also be able to enable action keys by defining `COMBO_ALLOW_ACTION_KEYS`. + +## Keycodes + +You can enable, disable and toggle the Combo feature on the fly. This is useful if you need to disable them temporarily, such as for a game. + +|Keycode |Description | +|----------|---------------------------------| +|`CMB_ON` |Turns on Combo feature | +|`CMB_OFF` |Turns off Combo feature | +|`CMB_TOG` |Toggles Combo feature on and off | + +## User callbacks + +In addition to the keycodes, there are a few functions that you can use to set the status, or check it: + +|Function |Description | +|-----------|--------------------------------------------------------------------| +| `combo_enable()` | Enables the combo feature | +| `combo_disable()` | Disables the combo feature, and clears the combo buffer | +| `combo_toggle()` | Toggles the state of the combo feature | +| `is_combo_enabled()` | Returns the status of the combo feature state (true or false) | diff --git a/quantum/process_keycode/process_combo.c b/quantum/process_keycode/process_combo.c index 2c6c9d0d5..d3c3b1673 100644 --- a/quantum/process_keycode/process_combo.c +++ b/quantum/process_keycode/process_combo.c @@ -28,6 +28,7 @@ static uint16_t timer = 0; static uint8_t current_combo_index = 0; static bool drop_buffer = false; static bool is_active = false; +static bool b_combo_enable = true; // defaults to enabled static uint8_t buffer_size = 0; #ifdef COMBO_ALLOW_ACTION_KEYS @@ -128,6 +129,23 @@ bool process_combo(uint16_t keycode, keyrecord_t *record) { drop_buffer = false; bool no_combo_keys_pressed = true; + if (keycode == CMB_ON && record->event.pressed) { + combo_enable(); + return true; + } + + if (keycode == CMB_OFF && record->event.pressed) { + combo_disable(); + return true; + } + + if (keycode == CMB_TOG && record->event.pressed) { + combo_toggle(); + return true; + } + + if (!is_combo_enabled()) { return true; } + for (current_combo_index = 0; current_combo_index < COMBO_COUNT; ++current_combo_index) { combo_t *combo = &key_combos[current_combo_index]; @@ -166,7 +184,7 @@ bool process_combo(uint16_t keycode, keyrecord_t *record) { } void matrix_scan_combo(void) { - if (is_active && timer && timer_elapsed(timer) > COMBO_TERM) { + if (b_combo_enable && is_active && timer && timer_elapsed(timer) > COMBO_TERM) { /* This disables the combo, meaning key events for this * combo will be handled by the next processors in the chain @@ -175,3 +193,26 @@ void matrix_scan_combo(void) { dump_key_buffer(true); } } + +void combo_enable(void) { + b_combo_enable = true; +} + +void combo_disable(void) { + b_combo_enable = is_active = false; + timer = 0; + dump_key_buffer(true); + +} + +void combo_toggle(void) { + if (b_combo_enable) { + combo_disable(); + } else { + combo_enable(); + } +} + +bool is_combo_enabled(void) { + return b_combo_enable; +} diff --git a/quantum/process_keycode/process_combo.h b/quantum/process_keycode/process_combo.h index f06d2d345..aab284957 100644 --- a/quantum/process_keycode/process_combo.h +++ b/quantum/process_keycode/process_combo.h @@ -58,4 +58,9 @@ bool process_combo(uint16_t keycode, keyrecord_t *record); void matrix_scan_combo(void); void process_combo_event(uint8_t combo_index, bool pressed); +void combo_enable(void); +void combo_disable(void); +void combo_toggle(void); +bool is_combo_enabled(void); + #endif diff --git a/quantum/quantum_keycodes.h b/quantum/quantum_keycodes.h index 779c355ef..207e0a826 100644 --- a/quantum/quantum_keycodes.h +++ b/quantum/quantum_keycodes.h @@ -489,6 +489,9 @@ enum quantum_keycodes { // Right control, close paren KC_RAPC, + CMB_ON, + CMB_OFF, + CMB_TOG, // always leave at the end SAFE_RANGE }; -- cgit v1.2.3-70-g09d2 From f6c7e114260890292dcd12645db7fecd64167973 Mon Sep 17 00:00:00 2001 From: Drashna Jaelre Date: Tue, 16 Jul 2019 01:40:54 -0700 Subject: Remove the need to specify NUM_OF_ENCODERS for the Encoder feature (#6328) * Remove the need to set NUM_OF_ENCODERS Instead, calculate the size of the array, and use that instead * Add hack for split common support * Remove NUM_OF_ENCODERS from keyboard config Can be reverted, if needed --- docs/feature_encoders.md | 1 - keyboards/abstract/ellipse/rev1/config.h | 1 - keyboards/boston_meetup/2019/config.h | 4 +--- keyboards/cannonkeys/ortho75/config.h | 1 - keyboards/cannonkeys/satisfaction75/config.h | 1 - keyboards/hadron/ver3/config.h | 1 - keyboards/handwired/daishi/config.h | 3 +-- keyboards/keebio/bdn9/config.h | 1 - keyboards/keebio/iris/rev3/config.h | 1 - keyboards/maxr1998/pulse4k/config.h | 1 - keyboards/planck/ez/config.h | 1 - keyboards/planck/rev6/config.h | 1 - keyboards/preonic/rev3/config.h | 1 - keyboards/rgbkb/sol/config.h | 1 - keyboards/rgbkb/zen/rev2/config.h | 2 -- keyboards/rgbkb/zygomorph/rev1/config.h | 1 - keyboards/ropro/config.h | 7 +++---- keyboards/tetris/config.h | 1 - quantum/encoder.c | 10 ++++------ quantum/split_common/transport.c | 2 ++ 20 files changed, 11 insertions(+), 31 deletions(-) (limited to 'docs') diff --git a/docs/feature_encoders.md b/docs/feature_encoders.md index 9ac97a9a1..bb2d538e7 100644 --- a/docs/feature_encoders.md +++ b/docs/feature_encoders.md @@ -6,7 +6,6 @@ Basic encoders are supported by adding this to your `rules.mk`: and this to your `config.h`: - #define NUMBER_OF_ENCODERS 1 #define ENCODERS_PAD_A { B12 } #define ENCODERS_PAD_B { B13 } diff --git a/keyboards/abstract/ellipse/rev1/config.h b/keyboards/abstract/ellipse/rev1/config.h index a56bfba2f..1fb9b76d9 100644 --- a/keyboards/abstract/ellipse/rev1/config.h +++ b/keyboards/abstract/ellipse/rev1/config.h @@ -239,7 +239,6 @@ along with this program. If not, see . // #define BOOTMAGIC_LITE_ROW 0 // #define BOOTMAGIC_LITE_COLUMN 0 -#define NUMBER_OF_ENCODERS 3 #define ENCODERS_PAD_A { B2, B3, D5 } #define ENCODERS_PAD_B { B1, B7, B4 } #define ENCODER_RESOLUTION 2 diff --git a/keyboards/boston_meetup/2019/config.h b/keyboards/boston_meetup/2019/config.h index 565281644..fa3dda730 100644 --- a/keyboards/boston_meetup/2019/config.h +++ b/keyboards/boston_meetup/2019/config.h @@ -26,7 +26,6 @@ #define MATRIX_ROW_PINS { A3, B8, B9, B1 } #define MATRIX_COL_PINS { A7, A8, B2, B10 } -#define NUMBER_OF_ENCODERS 1 #define ENCODERS_PAD_A { B13 } #define ENCODERS_PAD_B { B14 } @@ -142,7 +141,7 @@ #define FB_LOOPGAIN 1 /* For Low:0, Medium:1, High:2, Very High:3 */ /* default 3V ERM vibration motor voltage and library*/ -#if FB_ERM_LRA == 0 +#if FB_ERM_LRA == 0 #define RATED_VOLTAGE 3 #define V_RMS 2.3 #define V_PEAK 3.30 @@ -193,4 +192,3 @@ #define RGB_MATRIX_KEYPRESSES #define SOLENOID_PIN A14 - diff --git a/keyboards/cannonkeys/ortho75/config.h b/keyboards/cannonkeys/ortho75/config.h index 6c240e2d6..588e2b921 100644 --- a/keyboards/cannonkeys/ortho75/config.h +++ b/keyboards/cannonkeys/ortho75/config.h @@ -39,7 +39,6 @@ along with this program. If not, see . #define BACKLIGHT_BREATHING #define BREATHING_PERIOD 6 -#define NUMBER_OF_ENCODERS 1 #define ENCODERS_PAD_A { B9 } #define ENCODERS_PAD_B { B8 } diff --git a/keyboards/cannonkeys/satisfaction75/config.h b/keyboards/cannonkeys/satisfaction75/config.h index 092b37257..1cbe43fad 100644 --- a/keyboards/cannonkeys/satisfaction75/config.h +++ b/keyboards/cannonkeys/satisfaction75/config.h @@ -35,7 +35,6 @@ along with this program. If not, see . #define MATRIX_ROW_PINS { B3, B4, A0, A2, A4, A3 } #define DIODE_DIRECTION COL2ROW -#define NUMBER_OF_ENCODERS 1 #define ENCODERS_PAD_A { B9 } #define ENCODERS_PAD_B { B8 } diff --git a/keyboards/hadron/ver3/config.h b/keyboards/hadron/ver3/config.h index 5e44b27ae..2912486f4 100644 --- a/keyboards/hadron/ver3/config.h +++ b/keyboards/hadron/ver3/config.h @@ -44,7 +44,6 @@ #define MATRIX_COL_PINS { B8, B2, B10, A0, A1, A2, B0, A3, B1, A6, A7, B12, C13, B11, B9 } #define UNUSED_PINS -#define NUMBER_OF_ENCODERS 1 #define ENCODERS_PAD_A { B13 } #define ENCODERS_PAD_B { B14 } diff --git a/keyboards/handwired/daishi/config.h b/keyboards/handwired/daishi/config.h index 15ff6a6a6..b4665bece 100644 --- a/keyboards/handwired/daishi/config.h +++ b/keyboards/handwired/daishi/config.h @@ -52,10 +52,9 @@ along with this program. If not, see . #define DEBOUNCE 5 /* Set up rotary encoder */ -#define NUMBER_OF_ENCODERS 1 #define ENCODERS_PAD_A { F1 } #define ENCODERS_PAD_B { F0 } #define ENCODER_RESOLUTION 2 /* Set delay for tap_code on rotary encoder */ -#define TAP_CODE_DELAY 10 \ No newline at end of file +#define TAP_CODE_DELAY 10 diff --git a/keyboards/keebio/bdn9/config.h b/keyboards/keebio/bdn9/config.h index 19e625348..641dc5736 100644 --- a/keyboards/keebio/bdn9/config.h +++ b/keyboards/keebio/bdn9/config.h @@ -38,7 +38,6 @@ along with this program. If not, see . { E6, B4, B2 } \ } -#define NUMBER_OF_ENCODERS 2 #define ENCODERS_PAD_A { D1, F5 } #define ENCODERS_PAD_B { D0, F6 } diff --git a/keyboards/keebio/iris/rev3/config.h b/keyboards/keebio/iris/rev3/config.h index 720695b60..965362543 100644 --- a/keyboards/keebio/iris/rev3/config.h +++ b/keyboards/keebio/iris/rev3/config.h @@ -41,7 +41,6 @@ along with this program. If not, see . #define QMK_LED B0 #define QMK_SPEAKER C6 -#define NUMBER_OF_ENCODERS 1 #define ENCODERS_PAD_A { B5 } #define ENCODERS_PAD_B { B7 } diff --git a/keyboards/maxr1998/pulse4k/config.h b/keyboards/maxr1998/pulse4k/config.h index cb4eab699..d1bfaf300 100644 --- a/keyboards/maxr1998/pulse4k/config.h +++ b/keyboards/maxr1998/pulse4k/config.h @@ -43,7 +43,6 @@ along with this program. If not, see . #define DEBOUNCE 5 /* Rotary encoders */ -#define NUMBER_OF_ENCODERS 2 #define ENCODERS_PAD_A { D2, F6 } #define ENCODERS_PAD_B { D3, F5 } #define ENCODER_RESOLUTION 4 diff --git a/keyboards/planck/ez/config.h b/keyboards/planck/ez/config.h index 142382dab..a252b2528 100644 --- a/keyboards/planck/ez/config.h +++ b/keyboards/planck/ez/config.h @@ -43,7 +43,6 @@ #define MATRIX_ROW_PINS { A10, A9, A8, B15, C13, C14, C15, A2 } #define MATRIX_COL_PINS { B11, B10, B2, B1, A7, B0 } -#define NUMBER_OF_ENCODERS 1 #define ENCODERS_PAD_A { B12 } #define ENCODERS_PAD_B { B13 } diff --git a/keyboards/planck/rev6/config.h b/keyboards/planck/rev6/config.h index 841a62190..3354c3f80 100644 --- a/keyboards/planck/rev6/config.h +++ b/keyboards/planck/rev6/config.h @@ -43,7 +43,6 @@ * #define UNUSED_PINS */ -#define NUMBER_OF_ENCODERS 1 #define ENCODERS_PAD_A { B12 } #define ENCODERS_PAD_B { B13 } diff --git a/keyboards/preonic/rev3/config.h b/keyboards/preonic/rev3/config.h index b2a53ee65..2d2993455 100644 --- a/keyboards/preonic/rev3/config.h +++ b/keyboards/preonic/rev3/config.h @@ -43,7 +43,6 @@ * #define UNUSED_PINS */ -#define NUMBER_OF_ENCODERS 1 #define ENCODERS_PAD_A { B12 } #define ENCODERS_PAD_B { B13 } diff --git a/keyboards/rgbkb/sol/config.h b/keyboards/rgbkb/sol/config.h index 1afd973e9..23f4503bf 100644 --- a/keyboards/rgbkb/sol/config.h +++ b/keyboards/rgbkb/sol/config.h @@ -36,7 +36,6 @@ along with this program. If not, see . #define MATRIX_COL_PINS { F0, F1, F4, F5, F6, F7, C7 } // Encoder support -#define NUMBER_OF_ENCODERS 1 #define ENCODERS_PAD_A { D2 } #define ENCODERS_PAD_B { D6 } diff --git a/keyboards/rgbkb/zen/rev2/config.h b/keyboards/rgbkb/zen/rev2/config.h index b9f3d2228..c2bb360bd 100644 --- a/keyboards/rgbkb/zen/rev2/config.h +++ b/keyboards/rgbkb/zen/rev2/config.h @@ -41,8 +41,6 @@ along with this program. If not, see . #define MATRIX_ROW_PINS { C6, E6, B5, D7, B4 } #define MATRIX_COL_PINS { F4, F5, F6, F7, B3, B1, B2 } -#define NUMBER_OF_ENCODERS 1 - #define ENCODERS_PAD_A { D4 } #define ENCODERS_PAD_B { D2 } diff --git a/keyboards/rgbkb/zygomorph/rev1/config.h b/keyboards/rgbkb/zygomorph/rev1/config.h index ad58761cc..6e55a6a5f 100644 --- a/keyboards/rgbkb/zygomorph/rev1/config.h +++ b/keyboards/rgbkb/zygomorph/rev1/config.h @@ -40,7 +40,6 @@ along with this program. If not, see . #define SOFT_SERIAL_PIN D3 -#define NUMBER_OF_ENCODERS 1 #define ENCODERS_PAD_A { D2 } #define ENCODERS_PAD_B { D7 } diff --git a/keyboards/ropro/config.h b/keyboards/ropro/config.h index 0966faf54..5079217f9 100644 --- a/keyboards/ropro/config.h +++ b/keyboards/ropro/config.h @@ -1,4 +1,4 @@ -#pragma once +#pragma once /* Copyright 2019 Garret G. (TheRoyalSweatshirt) * @@ -13,10 +13,10 @@ * 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 .#pragma once + * along with this program. If not, see .#pragma once */ -#include "config_common.h" +#include "config_common.h" /* USB Device descriptor parameter */ #define VENDOR_ID 0xFEED @@ -30,7 +30,6 @@ #define MATRIX_ROWS 7 #define MATRIX_COLS 14 -#define NUMBER_OF_ENCODERS 1 #define ENCODERS_PAD_A { B7 } #define ENCODERS_PAD_B { D5 } diff --git a/keyboards/tetris/config.h b/keyboards/tetris/config.h index 7fe0c2d64..024d3be0e 100755 --- a/keyboards/tetris/config.h +++ b/keyboards/tetris/config.h @@ -40,7 +40,6 @@ #define NO_MUSIC_MODE #endif -#define NUMBER_OF_ENCODERS 2 #define ENCODERS_PAD_A { D1,F1 } #define ENCODERS_PAD_B { D0,F0 } diff --git a/quantum/encoder.c b/quantum/encoder.c index ddf6234ab..31f00c346 100644 --- a/quantum/encoder.c +++ b/quantum/encoder.c @@ -25,16 +25,14 @@ #define ENCODER_RESOLUTION 4 #endif -#ifndef NUMBER_OF_ENCODERS - #error "Number of encoders not defined by NUMBER_OF_ENCODERS" -#endif - #if !defined(ENCODERS_PAD_A) || !defined(ENCODERS_PAD_B) #error "No encoder pads defined by ENCODERS_PAD_A and ENCODERS_PAD_B" #endif -static pin_t encoders_pad_a[NUMBER_OF_ENCODERS] = ENCODERS_PAD_A; -static pin_t encoders_pad_b[NUMBER_OF_ENCODERS] = ENCODERS_PAD_B; + +#define NUMBER_OF_ENCODERS (sizeof(encoders_pad_a)/sizeof(pin_t)) +static pin_t encoders_pad_a[] = ENCODERS_PAD_A; +static pin_t encoders_pad_b[] = ENCODERS_PAD_B; static int8_t encoder_LUT[] = { 0, -1, 1, 0, 1, 0, 0, -1, -1, 0, 0, 1, 0, 1, -1, 0 }; diff --git a/quantum/split_common/transport.c b/quantum/split_common/transport.c index b32d48eb8..ba21d0c7b 100644 --- a/quantum/split_common/transport.c +++ b/quantum/split_common/transport.c @@ -17,6 +17,8 @@ #ifdef ENCODER_ENABLE # include "encoder.h" +static pin_t encoders_pad[] = ENCODERS_PAD_A; +# define NUMBER_OF_ENCODERS (sizeof(encoders_pad)/sizeof(pin_t)) #endif #if defined(USE_I2C) || defined(EH) -- cgit v1.2.3-70-g09d2 From 3895b4b86867c6323f4e595b9726d02158bca612 Mon Sep 17 00:00:00 2001 From: fauxpark Date: Wed, 17 Jul 2019 14:58:29 +1000 Subject: Extend maximum number of backlight levels to 31 (#6351) --- docs/feature_backlight.md | 2 +- tmk_core/common/backlight.h | 7 ++++--- 2 files changed, 5 insertions(+), 4 deletions(-) (limited to 'docs') diff --git a/docs/feature_backlight.md b/docs/feature_backlight.md index b06db89e4..26a5078ca 100644 --- a/docs/feature_backlight.md +++ b/docs/feature_backlight.md @@ -65,7 +65,7 @@ To change the behaviour of the backlighting, `#define` these in your `config.h`: |---------------------|-------------|-------------------------------------------------------------------------------------------------------------| |`BACKLIGHT_PIN` |`B7` |The pin that controls the LEDs. Unless you are designing your own keyboard, you shouldn't need to change this| |`BACKLIGHT_PINS` |*Not defined*|experimental: see below for more information | -|`BACKLIGHT_LEVELS` |`3` |The number of brightness levels (maximum 15 excluding off) | +|`BACKLIGHT_LEVELS` |`3` |The number of brightness levels (maximum 31 excluding off) | |`BACKLIGHT_CAPS_LOCK`|*Not defined*|Enable Caps Lock indicator using backlight (for keyboards without dedicated LED) | |`BACKLIGHT_BREATHING`|*Not defined*|Enable backlight breathing, if supported | |`BREATHING_PERIOD` |`6` |The length of one backlight "breath" in seconds | diff --git a/tmk_core/common/backlight.h b/tmk_core/common/backlight.h index cc56fb9af..0a3877120 100644 --- a/tmk_core/common/backlight.h +++ b/tmk_core/common/backlight.h @@ -22,8 +22,8 @@ along with this program. If not, see . #ifndef BACKLIGHT_LEVELS #define BACKLIGHT_LEVELS 3 -#elif BACKLIGHT_LEVELS > 15 - #error "Maximum value of BACKLIGHT_LEVELS is 15" +#elif BACKLIGHT_LEVELS > 31 + #error "Maximum value of BACKLIGHT_LEVELS is 31" #endif typedef union { @@ -31,7 +31,8 @@ typedef union { struct { bool enable :1; bool breathing :1; - uint8_t level :4; + uint8_t reserved :1; // Reserved for possible future backlight modes + uint8_t level :5; }; } backlight_config_t; -- cgit v1.2.3-70-g09d2 From 5b4187ad1bdad6ec40d4f98c5342a22ab68cfabd Mon Sep 17 00:00:00 2001 From: fauxpark Date: Fri, 19 Jul 2019 00:45:00 +1000 Subject: Correct backlight on state docs (#6358) * Correct backlight on state docs * Reword to make it less confusing --- docs/feature_backlight.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'docs') diff --git a/docs/feature_backlight.md b/docs/feature_backlight.md index 26a5078ca..64c663076 100644 --- a/docs/feature_backlight.md +++ b/docs/feature_backlight.md @@ -73,8 +73,10 @@ To change the behaviour of the backlighting, `#define` these in your `config.h`: ## Backlight On State -Most backlight circuits are driven by an N-channel MOSFET or NPN transistor. This means that to turn the transistor *on* and light the LEDs, you must drive the backlight pin, connected to the gate or base, *low*. -Sometimes, however, a P-channel MOSFET, or a PNP transistor is used. In this case you must `#define BACKLIGHT_ON_STATE 1`, so that when the transistor is on, the pin is driven *high* instead. +Most backlight circuits are driven by an N-channel MOSFET or NPN transistor. This means that to turn the transistor *on* and light the LEDs, you must drive the backlight pin, connected to the gate or base, *high*. +Sometimes, however, a P-channel MOSFET, or a PNP transistor is used. In this case, when the transistor is on, the pin is driven *low* instead. + +This functionality is configured at the keyboard level with the `BACKLIGHT_ON_STATE` define. ## Multiple backlight pins -- cgit v1.2.3-70-g09d2 From 001a6c24aeadce25118a979cf87ebe6bee5674a4 Mon Sep 17 00:00:00 2001 From: Drashna Jaelre Date: Fri, 19 Jul 2019 13:23:16 -0700 Subject: [Docs] Clarify Zadig usage in FAQ Docs (#6360) * Rewrite Zadig section to be more clear * Wordsmithing Co-Authored-By: MechMerlin <30334081+mechmerlin@users.noreply.github.com> --- docs/faq_build.md | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) (limited to 'docs') diff --git a/docs/faq_build.md b/docs/faq_build.md index 23d6a6702..bcf017a9b 100644 --- a/docs/faq_build.md +++ b/docs/faq_build.md @@ -49,15 +49,13 @@ Pro Micro (Atmega32u4), make sure to include `CONFIG_USB_ACM=y`. Other devices m ## Unknown Device for DFU Bootloader -If you're using Windows to flash your keyboard, and you are running into issues, check the Device Manager. If you see an "Unknown Device" when the keyboard is in "bootloader mode", then you may have a driver issue. +Issues encountered when flashing keyboards on Windows are most often due to having the wrong drivers installed for the bootloader. -Re-running the installation script for MSYS2 may help (eg run `./util/qmk_install.sh` from MSYS2/WSL) or reinstalling the QMK Toolbox may fix the issue. +Re-running the installation script for MSYS2 may help (eg run `util/qmk_install.sh` from MSYS2/WSL) or reinstalling the QMK Toolbox may fix the issue. Alternatively, you can download and run the [`qmk_driver_installer`](https://github.com/qmk/qmk_driver_installer) package. -If that doesn't work, then you may need to grab the [Zadig Utility](https://zadig.akeo.ie/). Download this, find the device in question, and select the `WinUSB` option, and hit "Reinstall driver". Once you've done that, try flashing your board, again. If that doesn't work, try all of the options, until one works. +If that doesn't work, then you may need to grab the [Zadig Utility](https://zadig.akeo.ie/). Download this, and run it on the system. Then, you will need to reset your board into bootloader mode. After that, locate the device in question. If the device doesn't show up in the list (or nothing shows up in the list), you may need to enable the `List all devices` option in the `Options` menu. -?> There isn't a best option for which driver should be used here. Some options work better on some systems than others. libUSB and WinUSB seem to be the best options here. - -If the bootloader doesn't show up in the list for devices, you may need to enable the "List all devices" option in the `Options` menu, and then find the bootloader in question. +From here, you will need to know what type of controller the board is using. You may see it listed in the Device Manager as `ATmega32U4` device (which is an AVR board), or an `STM32` device (Which is an ARM board). For AVR boards, use `libusb-win32` for the driver. For ARM boards, use the `WinUSB` driver. Once the correct driver type has been selected, click on the `Replace Driver` button, unplug your board, plug it back in, and reset it again. ## WINAVR is Obsolete -- cgit v1.2.3-70-g09d2 From a2e91ebec910d31a9f32cc56924ef3d6f0291e72 Mon Sep 17 00:00:00 2001 From: Konstantin Đorđević Date: Sat, 20 Jul 2019 22:21:40 +0200 Subject: Update IS_COMMAND definitions to use MOD_MASK_SHIFT (#6348) * Update IS_COMMAND definition in templates to use MOD_MASK_SHIFT * Update IS_COMMAND in docs * Update IS_COMMAND default definition in tmk_core * Update table in Command docs based on suggestion Co-Authored-By: fauxpark --- docs/config_options.md | 2 +- docs/feature_command.md | 66 +++++++++++++++++++------------------- quantum/template/avr/config.h | 2 +- quantum/template/ps2avrgb/config.h | 2 +- tmk_core/common/command.h | 2 +- 5 files changed, 37 insertions(+), 37 deletions(-) (limited to 'docs') diff --git a/docs/config_options.md b/docs/config_options.md index 3012dcdcf..01c0e3ee8 100644 --- a/docs/config_options.md +++ b/docs/config_options.md @@ -89,7 +89,7 @@ This is a C header file that is one of the first things included, and will persi * mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap * `#define LOCKING_RESYNC_ENABLE` * tries to keep switch state consistent with keyboard LED state -* `#define IS_COMMAND() (get_mods() == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)))` +* `#define IS_COMMAND() (get_mods() == MOD_MASK_SHIFT)` * key combination that allows the use of magic commands (useful for debugging) * `#define USB_MAX_POWER_CONSUMPTION` * sets the maximum power (in mA) over USB for the device (default: 500) diff --git a/docs/feature_command.md b/docs/feature_command.md index deabedc1c..a4ce3f5ae 100644 --- a/docs/feature_command.md +++ b/docs/feature_command.md @@ -16,36 +16,36 @@ To use Command, hold down the key combination defined by the `IS_COMMAND()` macr If you would like to change the key assignments for Command, `#define` these in your `config.h` at either the keyboard or keymap level. All keycode assignments here must omit the `KC_` prefix. -|Define |Default |Description | -|------------------------------------|---------------------------------------------------------------------------|------------------------------------------------| -|`IS_COMMAND()` |(get_mods() == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)))|The key combination to activate Command | -|`MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS` |`true` |Set default layer with the Function row | -|`MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS` |`true` |Set default layer with the number keys | -|`MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM`|`false` |Set default layer with `MAGIC_KEY_LAYER0..9` | -|`MAGIC_KEY_DEBUG` |`D` |Toggle debugging over serial | -|`MAGIC_KEY_DEBUG_MATRIX` |`X` |Toggle key matrix debugging | -|`MAGIC_KEY_DEBUG_KBD` |`K` |Toggle keyboard debugging | -|`MAGIC_KEY_DEBUG_MOUSE` |`M` |Toggle mouse debugging | -|`MAGIC_KEY_CONSOLE` |`C` |Enable the Command console | -|`MAGIC_KEY_VERSION` |`V` |Print the running QMK version to the console | -|`MAGIC_KEY_STATUS` |`S` |Print the current keyboard status to the console| -|`MAGIC_KEY_HELP` |`H` |Print Command help to the console | -|`MAGIC_KEY_HELP_ALT` |`SLASH` |Print Command help to the console (alternate) | -|`MAGIC_KEY_LAYER0` |`0` |Make layer 0 the default layer | -|`MAGIC_KEY_LAYER0_ALT` |`GRAVE` |Make layer 0 the default layer (alternate) | -|`MAGIC_KEY_LAYER1` |`1` |Make layer 1 the default layer | -|`MAGIC_KEY_LAYER2` |`2` |Make layer 2 the default layer | -|`MAGIC_KEY_LAYER3` |`3` |Make layer 3 the default layer | -|`MAGIC_KEY_LAYER4` |`4` |Make layer 4 the default layer | -|`MAGIC_KEY_LAYER5` |`5` |Make layer 5 the default layer | -|`MAGIC_KEY_LAYER6` |`6` |Make layer 6 the default layer | -|`MAGIC_KEY_LAYER7` |`7` |Make layer 7 the default layer | -|`MAGIC_KEY_LAYER8` |`8` |Make layer 8 the default layer | -|`MAGIC_KEY_LAYER9` |`9` |Make layer 9 the default layer | -|`MAGIC_KEY_BOOTLOADER` |`B` |Jump to bootloader | -|`MAGIC_KEY_BOOTLOADER_ALT` |`ESC` |Jump to bootloader (alternate) | -|`MAGIC_KEY_LOCK` |`CAPS` |Lock the keyboard so nothing can be typed | -|`MAGIC_KEY_EEPROM` |`E` |Print stored EEPROM config to the console | -|`MAGIC_KEY_EEPROM_CLEAR` |`BSPACE` |Clear the EEPROM | -|`MAGIC_KEY_NKRO` |`N` |Toggle N-Key Rollover (NKRO) | -|`MAGIC_KEY_SLEEP_LED` |`Z` |Toggle LED when computer is sleeping | +|Define |Default |Description | +|------------------------------------|--------------------------------|------------------------------------------------| +|`IS_COMMAND()` |`(get_mods() == MOD_MASK_SHIFT)`|The key combination to activate Command | +|`MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS` |`true` |Set default layer with the Function row | +|`MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS` |`true` |Set default layer with the number keys | +|`MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM`|`false` |Set default layer with `MAGIC_KEY_LAYER0..9` | +|`MAGIC_KEY_DEBUG` |`D` |Toggle debugging over serial | +|`MAGIC_KEY_DEBUG_MATRIX` |`X` |Toggle key matrix debugging | +|`MAGIC_KEY_DEBUG_KBD` |`K` |Toggle keyboard debugging | +|`MAGIC_KEY_DEBUG_MOUSE` |`M` |Toggle mouse debugging | +|`MAGIC_KEY_CONSOLE` |`C` |Enable the Command console | +|`MAGIC_KEY_VERSION` |`V` |Print the running QMK version to the console | +|`MAGIC_KEY_STATUS` |`S` |Print the current keyboard status to the console| +|`MAGIC_KEY_HELP` |`H` |Print Command help to the console | +|`MAGIC_KEY_HELP_ALT` |`SLASH` |Print Command help to the console (alternate) | +|`MAGIC_KEY_LAYER0` |`0` |Make layer 0 the default layer | +|`MAGIC_KEY_LAYER0_ALT` |`GRAVE` |Make layer 0 the default layer (alternate) | +|`MAGIC_KEY_LAYER1` |`1` |Make layer 1 the default layer | +|`MAGIC_KEY_LAYER2` |`2` |Make layer 2 the default layer | +|`MAGIC_KEY_LAYER3` |`3` |Make layer 3 the default layer | +|`MAGIC_KEY_LAYER4` |`4` |Make layer 4 the default layer | +|`MAGIC_KEY_LAYER5` |`5` |Make layer 5 the default layer | +|`MAGIC_KEY_LAYER6` |`6` |Make layer 6 the default layer | +|`MAGIC_KEY_LAYER7` |`7` |Make layer 7 the default layer | +|`MAGIC_KEY_LAYER8` |`8` |Make layer 8 the default layer | +|`MAGIC_KEY_LAYER9` |`9` |Make layer 9 the default layer | +|`MAGIC_KEY_BOOTLOADER` |`B` |Jump to bootloader | +|`MAGIC_KEY_BOOTLOADER_ALT` |`ESC` |Jump to bootloader (alternate) | +|`MAGIC_KEY_LOCK` |`CAPS` |Lock the keyboard so nothing can be typed | +|`MAGIC_KEY_EEPROM` |`E` |Print stored EEPROM config to the console | +|`MAGIC_KEY_EEPROM_CLEAR` |`BSPACE` |Clear the EEPROM | +|`MAGIC_KEY_NKRO` |`N` |Toggle N-Key Rollover (NKRO) | +|`MAGIC_KEY_SLEEP_LED` |`Z` |Toggle LED when computer is sleeping | diff --git a/quantum/template/avr/config.h b/quantum/template/avr/config.h index fc65bb597..0fc7cf9cb 100644 --- a/quantum/template/avr/config.h +++ b/quantum/template/avr/config.h @@ -136,7 +136,7 @@ along with this program. If not, see . /* key combination for magic key command */ /* defined by default; to change, uncomment and set to the combination you want */ -// #define IS_COMMAND() (get_mods() == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT))) +// #define IS_COMMAND() (get_mods() == MOD_MASK_SHIFT) /* control how magic key switches layers */ //#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true diff --git a/quantum/template/ps2avrgb/config.h b/quantum/template/ps2avrgb/config.h index 320d71fcb..9117bf1f9 100644 --- a/quantum/template/ps2avrgb/config.h +++ b/quantum/template/ps2avrgb/config.h @@ -47,7 +47,7 @@ along with this program. If not, see . /* key combination for magic key command */ /* defined by default; to change, uncomment and set to the combination you want */ -// #define IS_COMMAND() (get_mods() == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT))) +// #define IS_COMMAND() (get_mods() == MOD_MASK_SHIFT) /* Bootmagic Lite key configuration */ // #define BOOTMAGIC_LITE_ROW 0 diff --git a/tmk_core/common/command.h b/tmk_core/common/command.h index e7c7b0ea1..e6e67fae4 100644 --- a/tmk_core/common/command.h +++ b/tmk_core/common/command.h @@ -35,7 +35,7 @@ bool command_proc(uint8_t code); #endif #ifndef IS_COMMAND -#define IS_COMMAND() (get_mods() == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT))) +#define IS_COMMAND() (get_mods() == MOD_MASK_SHIFT) #endif #ifndef MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -- cgit v1.2.3-70-g09d2 From a747953dfae85d3bdfdfe205fc3d4ae6f8d1fe05 Mon Sep 17 00:00:00 2001 From: thomas-d-11 <41303137+thomas-d-11@users.noreply.github.com> Date: Thu, 25 Jul 2019 13:53:19 -0500 Subject: [Docs] Add Sections and MO(layer)/TG(layer) Example (#6308) * Add Sections and MO(layer)/TG(layer) Example Major changes: 1. Added sub-section headings to the portion before the examples. 2. Added a new Example 6, that allows MO(layer) and TG(layer) functionality to be embedded within tap dance functions. Minor Changes: 1. Edited some text to better fit with new sub-headings. * Update feature_tap_dance.md * Update feature_tap_dance.md --- docs/feature_tap_dance.md | 150 ++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 137 insertions(+), 13 deletions(-) (limited to 'docs') diff --git a/docs/feature_tap_dance.md b/docs/feature_tap_dance.md index b5e5218b0..73e0471a0 100644 --- a/docs/feature_tap_dance.md +++ b/docs/feature_tap_dance.md @@ -1,22 +1,33 @@ # Tap Dance: A Single Key Can Do 3, 5, or 100 Different Things - - +## Introduction Hit the semicolon key once, send a semicolon. Hit it twice, rapidly -- send a colon. Hit it three times, and your keyboard's LEDs do a wild dance. That's just one example of what Tap Dance can do. It's one of the nicest community-contributed features in the firmware, conceived and created by [algernon](https://github.com/algernon) in [#451](https://github.com/qmk/qmk_firmware/pull/451). Here's how algernon describes the feature: With this feature one can specify keys that behave differently, based on the amount of times they have been tapped, and when interrupted, they get handled before the interrupter. -To make it clear how this is different from `ACTION_FUNCTION_TAP`, let's explore a certain setup! We want one key to send `Space` on single tap, but `Enter` on double-tap. +## Explanatory Comparison with `ACTION_FUNCTION_TAP` +`ACTION_FUNCTION_TAP` can offer similar functionality to Tap Dance, but it's worth noting some important differences. To do this, let's explore a certain setup! We want one key to send `Space` on single-tap, but `Enter` on double-tap. + +With `ACTION_FUNCTION_TAP`, it is quite a rain-dance to set this up, and has the problem that when the sequence is interrupted, the interrupting key will be sent first. Thus, `SPC a` will result in `a SPC` being sent, if `SPC` and `a` are both typed within `TAPPING_TERM`. With the Tap Dance feature, that'll come out correctly as `SPC a` (even if both `SPC` and `a` are typed within the `TAPPING_TERM`. + +To achieve this correct handling of interrupts, the implementation of Tap Dance hooks into two parts of the system: `process_record_quantum()`, and the matrix scan. These two parts are explained below, but for now the point to note is that we need the latter to be able to time out a tap sequence even when a key is not being pressed. That way, `SPC` alone will time out and register after `TAPPING_TERM` time. -With `ACTION_FUNCTION_TAP`, it is quite a rain-dance to set this up, and has the problem that when the sequence is interrupted, the interrupting key will be sent first. Thus, `SPC a` will result in `a SPC` being sent, if they are typed within `TAPPING_TERM`. With the tap dance feature, that'll come out as `SPC a`, correctly. +## How to Use Tap Dance +But enough of the generalities; lets look at how to actually use Tap Dance! -The implementation hooks into two parts of the system, to achieve this: into `process_record_quantum()`, and the matrix scan. We need the latter to be able to time out a tap sequence even when a key is not being pressed, so `SPC` alone will time out and register after `TAPPING_TERM` time. +First, you will need `TAP_DANCE_ENABLE=yes` in your `rules.mk`, because the feature is disabled by default. This adds a little less than 1k to the firmware size. -But lets start with how to use it, first! +Optionally, you might want to set a custom `TAPPING_TERM` time by adding something like this in you `config.h`: -First, you will need `TAP_DANCE_ENABLE=yes` in your `rules.mk`, because the feature is disabled by default. This adds a little less than 1k to the firmware size. Next, you will want to define some tap-dance keys, which is easiest to do with the `TD()` macro, that - similar to `F()`, takes a number, which will later be used as an index into the `tap_dance_actions` array. +``` +#define TAPPING_TERM 175 +``` -This array specifies what actions shall be taken when a tap-dance key is in action. Currently, there are five possible options: +The `TAPPING_TERM` time is the maximum time allowed between taps of your Tap Dance key, and is measured in milliseconds. For example, if you used the above `#define` statement and set up a Tap Dance key that sends `Space` on single-tap and `Enter` on double-tap, then this key will send `ENT` only if you tap this key twice in less than 175ms. If you tap the key, wait more than 175ms, and tap the key again you'll end up sending `SPC SPC` instead. + +Next, you will want to define some tap-dance keys, which is easiest to do with the `TD()` macro, that - similar to `F()` - takes a number, which will later be used as an index into the `tap_dance_actions` array. + +After this, you'll want to use the `tap_dance_actions` array to specify what actions shall be taken when a tap-dance key is in action. Currently, there are five possible options: * `ACTION_TAP_DANCE_DOUBLE(kc1, kc2)`: Sends the `kc1` keycode when tapped once, `kc2` otherwise. When the key is held, the appropriate keycode is registered: `kc1` when pressed and held, `kc2` when tapped once, then pressed and held. * `ACTION_TAP_DANCE_DUAL_ROLE(kc, layer)`: Sends the `kc` keycode when tapped once, or moves to `layer`. (this functions like the `TO` layer keycode). @@ -24,17 +35,22 @@ This array specifies what actions shall be taken when a tap-dance key is in acti * `ACTION_TAP_DANCE_FN_ADVANCED(on_each_tap_fn, on_dance_finished_fn, on_dance_reset_fn)`: Calls the first specified function - defined in the user keymap - on every tap, the second function when the dance action finishes (like the previous option), and the last function when the tap dance action resets. * `ACTION_TAP_DANCE_FN_ADVANCED_TIME(on_each_tap_fn, on_dance_finished_fn, on_dance_reset_fn, tap_specific_tapping_term)`: This functions identically to the `ACTION_TAP_DANCE_FN_ADVANCED` function, but uses a custom tapping term for it, instead of the predefined `TAPPING_TERM`. -The first option is enough for a lot of cases, that just want dual roles. For example, `ACTION_TAP_DANCE_DOUBLE(KC_SPC, KC_ENT)` will result in `Space` being sent on single-tap, `Enter` otherwise. +The first option is enough for a lot of cases, that just want dual roles. For example, `ACTION_TAP_DANCE_DOUBLE(KC_SPC, KC_ENT)` will result in `Space` being sent on single-tap, `Enter` otherwise. !> Keep in mind that only [basic keycodes](keycodes_basic.md) are supported here. Custom keycodes are not supported. -And that's the bulk of it! +Similar to the first option, the second option is good for simple layer-switching cases. + +For more complicated cases, use the third or fourth options (examples of each are listed below). + +Finally, the fifth option is particularly useful if your non-Tap-Dance keys start behaving weirdly after adding the code for your Tap Dance keys. The likely problem is that you changed the `TAPPING_TERM` time to make your Tap Dance keys easier for you to use, and that this has changed the way your other keys handle interrupts. -And now, on to the explanation of how it works! +## Implementation Details +Well, that's the bulk of it! You should now be able to work through the examples below, and to develop your own Tap Dance functionality. But if you want a deeper understanding of what's going on behind the scenes, then read on for the explanation of how it all works! -The main entry point is `process_tap_dance()`, called from `process_record_quantum()`, which is run for every keypress, and our handler gets to run early. This function checks whether the key pressed is a tap-dance key. If it is not, and a tap-dance was in action, we handle that first, and enqueue the newly pressed key. If it is a tap-dance key, then we check if it is the same as the already active one (if there's one active, that is). If it is not, we fire off the old one first, then register the new one. If it was the same, we increment the counter and the timer. +The main entry point is `process_tap_dance()`, called from `process_record_quantum()`, which is run for every keypress, and our handler gets to run early. This function checks whether the key pressed is a tap-dance key. If it is not, and a tap-dance was in action, we handle that first, and enqueue the newly pressed key. If it is a tap-dance key, then we check if it is the same as the already active one (if there's one active, that is). If it is not, we fire off the old one first, then register the new one. If it was the same, we increment the counter and reset the timer. -This means that you have `TAPPING_TERM` time to tap the key again, you do not have to input all the taps within that timeframe. This allows for longer tap counts, with minimal impact on responsiveness. +This means that you have `TAPPING_TERM` time to tap the key again; you do not have to input all the taps within a single `TAPPING_TERM` timeframe. This allows for longer tap counts, with minimal impact on responsiveness. Our next stop is `matrix_scan_tap_dance()`. This handles the timeout of tap-dance keys. @@ -397,3 +413,111 @@ qk_tap_dance_action_t tap_dance_actions[] = { ``` Wrap each tapdance keycode in `TD()` when including it in your keymap, e.g. `TD(ALT_LP)`. + +### Example 6: Using tap dance for momentary-layer-switch and layer-toggle keys + +Tap Dance can be used to mimic MO(layer) and TG(layer) functionality. For this example, we will set up a key to function as `KC_QUOT` on single-tap, as `MO(_MY_LAYER)` on single-hold, and `TG(_MY_LAYER)` on double-tap. + +The first step is to include the following code towards the beginning of your `keymap.c`: + +``` +typedef struct { + bool is_press_action; + int state; +} tap; + +//Define a type for as many tap dance states as you need +enum { + SINGLE_TAP = 1, + SINGLE_HOLD = 2, + DOUBLE_TAP = 3 +}; + +enum { + QUOT_LAYR = 0 //Our custom tap dance key; add any other tap dance keys to this enum +}; + +//Declare the functions to be used with your tap dance key(s) + +//Function associated with all tap dances +int cur_dance (qk_tap_dance_state_t *state); + +//Functions associated with individual tap dances +void ql_finished (qk_tap_dance_state_t *state, void *user_data); +void ql_reset (qk_tap_dance_state_t *state, void *user_data); + +//Declare variable to track which layer is active +int active_layer; +``` + +The above code is similar to that used in previous examples. The one point to note is that you need to declare a variable to keep track of what layer is currently the active layer. We'll see why shortly. + +Towards the bottom of your `keymap.c`, include the following code: + +``` +//Update active_layer +uint32_t layer_state_set_user(uint32_t state) { + switch (biton32(state)) { + case 1: + active_layer = 1; + break; + case 2: + active_layer = 2; + break; + case 3: + active_layer = 3; + break; + default: + active_layer = 0; + break; + } + return state; +} + +//Determine the current tap dance state +int cur_dance (qk_tap_dance_state_t *state) { + if (state->count == 1) { + if (!state->pressed) {return SINGLE_TAP;} + else return SINGLE_HOLD; + } else if (state->count == 2) {return DOUBLE_TAP;} + else return 8; +} + +//Initialize tap structure associated with example tap dance key +static tap ql_tap_state = { + .is_press_action = true, + .state = 0 +}; + +//Functions that control what our tap dance key does +void ql_finished (qk_tap_dance_state_t *state, void *user_data) { + ql_tap_state.state = cur_dance(state); + switch (ql_tap_state.state) { + case SINGLE_TAP: tap_code(KC_QUOT); break; + case SINGLE_HOLD: layer_on(_MY_LAYER); break; + case DOUBLE_TAP: + if (active_layer==_MY_LAYER) {layer_off(_MY_LAYER);} + else layer_on(_MY_LAYER); + } +} + +void ql_reset (qk_tap_dance_state_t *state, void *user_data) { + if (ql_tap_state.state==SINGLE_HOLD) {layer_off(_MY_LAYER);} + ql_tap_state.state = 0; +} + +//Associate our tap dance key with its functionality +qk_tap_dance_action_t tap_dance_actions[] = { + [QUOT_LAYR] = ACTION_TAP_DANCE_FN_ADVANCED_TIME(NULL, ql_finished, ql_reset, 275) +}; +``` + +The is where the real logic of our tap dance key gets worked out. Since `layer_state_set_user()` is called on any layer switch, we use it to update `active_layer`. Our example is assuming that your `keymap.c` includes 4 layers, so adjust the switch statement here to fit your actual number of layers. + +The use of `cur_dance()` and `ql_tap_state` mirrors the above examples. + +The `case:SINGLE_TAP` in `ql_finished` is similar to the above examples. The `case:SINGLE_HOLD` works in conjunction with `ql_reset()` to switch to `_MY_LAYER` while the tap dance key is held, and to switch away from `_MY_LAYER` when the key is released. This mirrors the use of `MO(_MY_LAYER)`. The `case:DOUBLE_TAP` works by checking whether `_MY_LAYER` is the active layer, and toggling it on or off accordingly. This mirrors the use of `TG(_MY_LAYER)`. + +`tap_dance_actions[]` works similar to the above examples. Note that I used `ACTION_TAP_DANCE_FN_ADVANCED_TIME()` instead of `ACTION_TAP_DANCE_FN_ADVANCED()`. This is because I like my `TAPPING_TERM` to be short (~175ms) for my non-tap-dance keys but find that this is too quick for me to reliably complete tap dance actions - thus the increased time of 275ms here. + +Finally, to get this tap dance key working, be sure to include `TD(QUOT_LAYR)` in your `keymaps[]`. -- cgit v1.2.3-70-g09d2 From c806103f4171682821cee5ceaa91dce983072b1d Mon Sep 17 00:00:00 2001 From: "Zachary J. Slater" Date: Mon, 29 Jul 2019 00:41:54 -1000 Subject: Update YouTube URL The link was an outdated one to https://www.youtube.com/watch?v=7RH-1pAbjvw The correct link appears to be https://www.youtube.com/watch?v=tx54jkRC9ZY which is shortened as in the file. --- docs/newbs_building_firmware_configurator.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'docs') diff --git a/docs/newbs_building_firmware_configurator.md b/docs/newbs_building_firmware_configurator.md index 0ad609304..becceb669 100644 --- a/docs/newbs_building_firmware_configurator.md +++ b/docs/newbs_building_firmware_configurator.md @@ -4,7 +4,7 @@ The [QMK Configurator](https://config.qmk.fm) is an online graphical user interf ?> **Please follow these steps in order.** -Watch the [Video Tutorial](https://youtu.be/7RH-1pAbjvw) +Watch the [Video Tutorial](https://youtu.be/tx54jkRC9ZY) The QMK Configurator works best with Chrome/Firefox. -- cgit v1.2.3-70-g09d2 From 2f3807682d0b0cd70b853e15ef1df67bd053706e Mon Sep 17 00:00:00 2001 From: Rasmus Lindroth Date: Wed, 31 Jul 2019 15:08:26 +0200 Subject: Fix typo for building Ergodox EZ keyboards (#6453) --- docs/newbs_flashing.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'docs') diff --git a/docs/newbs_flashing.md b/docs/newbs_flashing.md index fa0a5e2ba..c8a30dba0 100644 --- a/docs/newbs_flashing.md +++ b/docs/newbs_flashing.md @@ -223,7 +223,7 @@ For the PJRC devices (Teensy's), when you're ready to compile and flash your fir For example, if your keymap is named "xyverz" and you're building a keymap for an Ergodox or Ergodox EZ, you'll use this command: - make erdogox_ez:xyverz:teensy + make ergodox_ez:xyverz:teensy Once the firmware finishes compiling, it will output something like this: -- cgit v1.2.3-70-g09d2 From b5677853453d7fa1a9c15c2fed5e4fd1d8258b58 Mon Sep 17 00:00:00 2001 From: Joel Challis Date: Thu, 1 Aug 2019 17:20:31 +0100 Subject: [Docs] Add dfu-util and caterina udev examples (#6429) --- docs/faq_build.md | 28 +++++++++++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) (limited to 'docs') diff --git a/docs/faq_build.md b/docs/faq_build.md index bcf017a9b..3fe358eda 100644 --- a/docs/faq_build.md +++ b/docs/faq_build.md @@ -19,7 +19,11 @@ Note that running `make` with `sudo` is generally ***not*** a good idea, and you ### Linux `udev` Rules On Linux, you'll need proper privileges to access the MCU. You can either use -`sudo` when flashing firmware, or place these files in `/etc/udev/rules.d/`. +`sudo` when flashing firmware, or place these files in `/etc/udev/rules.d/`. Once added run the following: +```console +sudo udevadm control --reload-rules +sudo udevadm trigger +``` **/etc/udev/rules.d/50-atmel-dfu.rules:** ``` @@ -43,6 +47,28 @@ SUBSYSTEMS=="usb", ATTRS{idVendor}=="feed", MODE:="0666" SUBSYSTEMS=="usb", ATTRS{idVendor}=="1c11", MODE:="0666" ``` +**/etc/udev/rules.d/55-catalina.rules:** +``` +# ModemManager should ignore the following devices +ATTRS{idVendor}=="2a03", ENV{ID_MM_DEVICE_IGNORE}="1" +ATTRS{idVendor}=="2341", ENV{ID_MM_DEVICE_IGNORE}="1" +``` + +**Note:** ModemManager filtering only works when not in strict mode, the following commands can update that settings: +```console +sudo sed -i 's/--filter-policy=strict/--filter-policy=default/' /lib/systemd/system/ModemManager.service +sudo systemctl daemon-reload +sudo systemctl restart ModemManager +``` + +**/etc/udev/rules.d/56-dfu-util.rules:** +``` +# stm32duino +SUBSYSTEMS=="usb", ATTRS{idVendor}=="1eaf", ATTRS{idProduct}=="0003", MODE:="0666" +# Generic stm32 +SUBSYSTEMS=="usb", ATTRS{idVendor}=="0483", ATTRS{idProduct}=="df11", MODE:="0666" +``` + ### Serial device is not detected in bootloader mode on Linux Make sure your kernel has appropriate support for your device. If your device uses USB ACM, such as Pro Micro (Atmega32u4), make sure to include `CONFIG_USB_ACM=y`. Other devices may require `USB_SERIAL` and any of its sub options. -- cgit v1.2.3-70-g09d2 From f644db042c488a19c2256c9f3870b5bd331cc98c Mon Sep 17 00:00:00 2001 From: Garrett Singer Date: Sun, 4 Aug 2019 00:26:02 -0400 Subject: [Split] Add config option for DIRECT_PINS_RIGHT (#6479) Adds support for different direct pin mappings on the halves of a split keyboard. --- docs/config_options.md | 3 +++ docs/feature_split_keyboard.md | 5 +++++ quantum/split_common/matrix.c | 8 ++++++++ 3 files changed, 16 insertions(+) (limited to 'docs') diff --git a/docs/config_options.md b/docs/config_options.md index 01c0e3ee8..3be294db8 100644 --- a/docs/config_options.md +++ b/docs/config_options.md @@ -248,6 +248,9 @@ There are a few different ways to set handedness for split keyboards (listed in * `#define MATRIX_COL_PINS_RIGHT { }` * If you want to specify a different pinout for the right half than the left half, you can define `MATRIX_ROW_PINS_RIGHT`/`MATRIX_COL_PINS_RIGHT`. Currently, the size of `MATRIX_ROW_PINS` must be the same as `MATRIX_ROW_PINS_RIGHT` and likewise for the definition of columns. +* `#define DIRECT_PINS_RIGHT { { F1, F0, B0, C7 }, { F4, F5, F6, F7 } }` + * If you want to specify a different direct pinout for the right half than the left half, you can define `DIRECT_PINS_RIGHT`. Currently, the size of `DIRECT_PINS` must be the same as `DIRECT_PINS_RIGHT`. + * `#define RGBLED_SPLIT { 6, 6 }` * See [RGB Light Configuration](#rgb-light-configuration) diff --git a/docs/feature_split_keyboard.md b/docs/feature_split_keyboard.md index 95aceab22..4addb1bfd 100644 --- a/docs/feature_split_keyboard.md +++ b/docs/feature_split_keyboard.md @@ -160,6 +160,11 @@ There are some settings that you may need to configure, based on how the hardwar This allows you to specify a different set of pins for the matrix on the right side. This is useful if you have a board with differently-shaped halves that requires a different configuration (such as Keebio's Quefrency). +```c +#define DIRECT_PINS_RIGHT { { F1, F0, B0, C7 }, { F4, F5, F6, F7 } } +``` + +This allows you to specify a different set of direct pins for the right side. ```c #define RGBLIGHT_SPLIT diff --git a/quantum/split_common/matrix.c b/quantum/split_common/matrix.c index 41a15ace4..e0f094e34 100644 --- a/quantum/split_common/matrix.c +++ b/quantum/split_common/matrix.c @@ -252,6 +252,14 @@ void matrix_init(void) { // Set pinout for right half if pinout for that half is defined if (!isLeftHand) { +#ifdef DIRECT_PINS_RIGHT + const pin_t direct_pins_right[MATRIX_ROWS][MATRIX_COLS] = DIRECT_PINS_RIGHT; + for (uint8_t i = 0; i < MATRIX_ROWS; i++) { + for (uint8_t j = 0; j < MATRIX_COLS; j++) { + direct_pins[i][j] = direct_pins_right[i][j]; + } + } +#endif #ifdef MATRIX_ROW_PINS_RIGHT const pin_t row_pins_right[MATRIX_ROWS] = MATRIX_ROW_PINS_RIGHT; for (uint8_t i = 0; i < MATRIX_ROWS; i++) { -- cgit v1.2.3-70-g09d2 From 57540af102d034396c9f41a5a6e69ead8b10ba99 Mon Sep 17 00:00:00 2001 From: Michael Clayton Date: Thu, 8 Aug 2019 13:10:16 -0400 Subject: Change "yu" to "you" in combo docs (#6510) --- docs/feature_combo.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'docs') diff --git a/docs/feature_combo.md b/docs/feature_combo.md index 9db7be511..d3eb896b2 100644 --- a/docs/feature_combo.md +++ b/docs/feature_combo.md @@ -2,7 +2,7 @@ The Combo feature is a chording type solution for adding custom actions. It lets you hit multiple keys at once and produce a different effect. For instance, hitting `A` and `S` within the tapping term would hit `ESC` instead, or have it perform even more complex tasks. -To enable this feature, yu need to add `COMBO_ENABLE = yes` to your `rules.mk`. +To enable this feature, you need to add `COMBO_ENABLE = yes` to your `rules.mk`. Additionally, in your `config.h`, you'll need to specify the number of combos that you'll be using, by adding `#define COMBO_COUNT 1` (replacing 1 with the number that you're using). -- cgit v1.2.3-70-g09d2 From 4d72aa428fb8dc72634bded428f78ffba2284fdc Mon Sep 17 00:00:00 2001 From: fauxpark Date: Fri, 9 Aug 2019 06:12:12 +1000 Subject: Improve backlight PWM pin support (#6202) * Improve backlight PWM pin support * I accidentally an equals sign * Another typo * Order by pin number * Throw an error if backlight pin is C4 or C5 on 16/32U4 * Use else for clarity * Minor alignment adjustments --- docs/config_options.md | 2 +- docs/feature_backlight.md | 47 ++-- docs/getting_started_make_guide.md | 2 +- docs/hardware_avr.md | 4 +- ...keyboard_to_qmk_(arm_and_other_chibios_cpus).md | 2 +- quantum/quantum.c | 239 ++++++++++++--------- 6 files changed, 168 insertions(+), 128 deletions(-) (limited to 'docs') diff --git a/docs/config_options.md b/docs/config_options.md index 3be294db8..d2ae56179 100644 --- a/docs/config_options.md +++ b/docs/config_options.md @@ -76,7 +76,7 @@ This is a C header file that is one of the first things included, and will persi * `#define B7_AUDIO` * enables audio on pin B7 (duophony is enables if one of B[5-7]\_AUDIO is enabled along with one of C[4-6]\_AUDIO) * `#define BACKLIGHT_PIN B7` - * pin of the backlight - `B5`, `B6`, `B7` and `C6` (and `D4` on ATmega32A) use hardware PWM, others use software implementation + * pin of the backlight * `#define BACKLIGHT_LEVELS 3` * number of levels your backlight will have (maximum 15 excluding off) * `#define BACKLIGHT_BREATHING` diff --git a/docs/feature_backlight.md b/docs/feature_backlight.md index 64c663076..2d9eea67b 100644 --- a/docs/feature_backlight.md +++ b/docs/feature_backlight.md @@ -30,32 +30,31 @@ You should then be able to use the keycodes below to change the backlight level. This feature is distinct from both the [RGB underglow](feature_rgblight.md) and [RGB matrix](feature_rgb_matrix.md) features as it usually allows for only a single colour per switch, though you can obviously use multiple different coloured LEDs on a keyboard. -Hardware PWM is only supported on certain pins of the MCU, so if the backlighting is not connected to one of them, a software PWM implementation triggered by hardware timer interrupts will be used. - Hardware PWM is supported according to the following table: -| Backlight Pin | Hardware timer | -|---------------|-------------------------| -|`B5` | Timer 1 | -|`B6` | Timer 1 | -|`B7` | Timer 1 | -|`C6` | Timer 3 | -|`D4` | Timer 1 (ATmega32A only)| -| other | Software PWM | - -The [audio feature](feature_audio.md) also uses hardware timers. Please refer to the following table to know what hardware timer the software PWM will use depending on the audio configuration: - -| Audio Pin(s) | Audio Timer | Software PWM Timer | -|--------------|-------------|--------------------| -| `C4` | Timer 3 | Timer 1 | -| `C5` | Timer 3 | Timer 1 | -| `C6` | Timer 3 | Timer 1 | -| `B5` | Timer 1 | Timer 3 | -| `B6` | Timer 1 | Timer 3 | -| `B7` | Timer 1 | Timer 3 | -| `Bx` & `Cx` | Timer 1 & 3 | None | - -When all timers are in use for [audio](feature_audio.md), the backlight software PWM will not use a hardware timer, but instead will be triggered during the matrix scan. In this case the backlight doesn't support breathing and might show lighting artifacts (for instance flickering), because the PWM computation might not be called with enough timing precision. +|Backlight Pin|AT90USB64/128|ATmega16/32U4|ATmega16/32U2|ATmega32A| +|-------------|-------------|-------------|-------------|---------| +|`B5` |Timer 1 |Timer 1 | | | +|`B6` |Timer 1 |Timer 1 | | | +|`B7` |Timer 1 |Timer 1 |Timer 1 | | +|`C4` |Timer 3 | | | | +|`C5` |Timer 3 | |Timer 1 | | +|`C6` |Timer 3 |Timer 3 |Timer 1 | | +|`D4` | | | |Timer 1 | +|`D5` | | | |Timer 1 | + +All other pins will use software PWM. If the [Audio](feature_audio.md) feature is disabled or only using one timer, the backlight PWM can be triggered by a hardware timer: + +|Audio Pin|Audio Timer|Software PWM Timer| +|---------|-----------|------------------| +|`C4` |Timer 3 |Timer 1 | +|`C5` |Timer 3 |Timer 1 | +|`C6` |Timer 3 |Timer 1 | +|`B5` |Timer 1 |Timer 3 | +|`B6` |Timer 1 |Timer 3 | +|`B7` |Timer 1 |Timer 3 | + +When both timers are in use for Audio, the backlight PWM will not use a hardware timer, but will instead be triggered during the matrix scan. In this case, breathing is not supported, and the backlight might flicker, because the PWM computation may not be called with enough timing precision. ## Configuration diff --git a/docs/getting_started_make_guide.md b/docs/getting_started_make_guide.md index 75eafd42c..4fe3f184d 100644 --- a/docs/getting_started_make_guide.md +++ b/docs/getting_started_make_guide.md @@ -83,7 +83,7 @@ This allows the keyboard to tell the host OS that up to 248 keys are held down a `BACKLIGHT_ENABLE` -This enables your backlight on Timer1 and ports B5, B6, or B7 (for now). You can specify your port by putting this in your `config.h`: +This enables the in-switch LED backlighting. You can specify the backlight pin by putting this in your `config.h`: #define BACKLIGHT_PIN B7 diff --git a/docs/hardware_avr.md b/docs/hardware_avr.md index 7c28ab6db..c6987d1bd 100644 --- a/docs/hardware_avr.md +++ b/docs/hardware_avr.md @@ -125,7 +125,7 @@ To configure a keyboard where each switch is connected to a separate pin and gro ### Backlight Configuration -By default QMK supports backlighting on pins `B5`, `B6`, and `B7`. If you are using one of those you can simply enable it here. For more details see the [Backlight Documentation](feature_backlight.md). +QMK supports backlighting on most GPIO pins. A select few of these can be driven by the MCU in hardware. For more details see the [Backlight Documentation](feature_backlight.md). ```c #define BACKLIGHT_PIN B7 @@ -134,8 +134,6 @@ By default QMK supports backlighting on pins `B5`, `B6`, and `B7`. If you are us #define BREATHING_PERIOD 6 ``` -?> You can use backlighting on any pin you like, but you will have to do more work to support that. See the [Backlight Documentation](feature_backlight.md) for more details. - ### Other Configuration Options There are a lot of features that can be configured or tuned in `config.h`. You should see the [Config Options](config_options.md) page for more details. diff --git a/docs/porting_your_keyboard_to_qmk_(arm_and_other_chibios_cpus).md b/docs/porting_your_keyboard_to_qmk_(arm_and_other_chibios_cpus).md index 979eafbc8..bce9f9dc9 100644 --- a/docs/porting_your_keyboard_to_qmk_(arm_and_other_chibios_cpus).md +++ b/docs/porting_your_keyboard_to_qmk_(arm_and_other_chibios_cpus).md @@ -34,7 +34,7 @@ For the `DIODE_DIRECTION`, most hand-wiring guides will instruct you to wire the To configure a keyboard where each switch is connected to a separate pin and ground instead of sharing row and column pins, use `DIRECT_PINS`. The mapping defines the pins of each switch in rows and columns, from left to right. Must conform to the sizes within `MATRIX_ROWS` and `MATRIX_COLS`, use `NO_PIN` to fill in blank spaces. Overrides the behaviour of `DIODE_DIRECTION`, `MATRIX_ROW_PINS` and `MATRIX_COL_PINS`. -`BACKLIGHT_PIN` is the pin that your PWM-controlled backlight (if one exists) is hooked-up to. Currently only B5, B6, and B7 are supported. +`BACKLIGHT_PIN` is the pin that your PWM-controlled backlight (if one exists) is hooked-up to. `BACKLIGHT_BREATHING` is a fancier backlight feature that adds breathing/pulsing/fading effects to the backlight. It uses the same timer as the normal backlight. These breathing effects must be called by code in your keymap. diff --git a/quantum/quantum.c b/quantum/quantum.c index d98c601d9..77cbbb2e7 100644 --- a/quantum/quantum.c +++ b/quantum/quantum.c @@ -1034,104 +1034,147 @@ void matrix_scan_quantum() { } #if defined(BACKLIGHT_ENABLE) && (defined(BACKLIGHT_PIN) || defined(BACKLIGHT_PINS)) -// The logic is a bit complex, we support 3 setups: -// 1. hardware PWM when backlight is wired to a PWM pin -// depending on this pin, we use a different output compare unit -// 2. software PWM with hardware timers, but the used timer depends -// on the audio setup (audio wins other backlight) -// 3. full software PWM - -#if BACKLIGHT_PIN == B7 -# define HARDWARE_PWM -# define TCCRxA TCCR1A -# define TCCRxB TCCR1B -# define COMxx1 COM1C1 -# define OCRxx OCR1C -# define TIMERx_OVF_vect TIMER1_OVF_vect -# define TOIEx TOIE1 -# define ICRx ICR1 -# define TIMSKx TIMSK1 -#elif BACKLIGHT_PIN == B6 -# define HARDWARE_PWM -# define TCCRxA TCCR1A -# define TCCRxB TCCR1B -# define COMxx1 COM1B1 -# define OCRxx OCR1B -# define TIMERx_OVF_vect TIMER1_OVF_vect -# define TOIEx TOIE1 -# define ICRx ICR1 -# define TIMSKx TIMSK1 -#elif BACKLIGHT_PIN == B5 -# define HARDWARE_PWM -# define TCCRxA TCCR1A -# define TCCRxB TCCR1B -# define COMxx1 COM1A1 -# define OCRxx OCR1A -# define TIMERx_OVF_vect TIMER1_OVF_vect -# define TOIEx TOIE1 -# define ICRx ICR1 -# define TIMSKx TIMSK1 -#elif BACKLIGHT_PIN == C6 -# define HARDWARE_PWM -# define TCCRxA TCCR3A -# define TCCRxB TCCR3B -# define COMxx1 COM3A1 -# define OCRxx OCR3A -# define TIMERx_OVF_vect TIMER3_OVF_vect -# define TOIEx TOIE3 -# define ICRx ICR3 -# define TIMSKx TIMSK3 -#elif defined(__AVR_ATmega32A__) && BACKLIGHT_PIN == D4 -# define TCCRxA TCCR1A -# define TCCRxB TCCR1B -# define COMxx1 COM1B1 -# define OCRxx OCR1B -# define TIMERx_OVF_vect TIMER1_OVF_vect -# define TOIEx TOIE1 -# define ICRx ICR1 -# define TIMSKx TIMSK1 +// This logic is a bit complex, we support 3 setups: +// +// 1. Hardware PWM when backlight is wired to a PWM pin. +// Depending on this pin, we use a different output compare unit. +// 2. Software PWM with hardware timers, but the used timer +// depends on the Audio setup (Audio wins over Backlight). +// 3. Full software PWM, driven by the matrix scan, if both timers are used by Audio. + +#if (defined(__AVR_AT90USB646__) || defined(__AVR_AT90USB647__) \ + || defined(__AVR_AT90USB1286__) || defined(__AVR_AT90USB1287__) \ + || defined(__AVR_ATmega16U4__) || defined(__AVR_ATmega32U4__)) \ + && (BACKLIGHT_PIN == B5 || BACKLIGHT_PIN == B6 || BACKLIGHT_PIN == B7) + #define HARDWARE_PWM + #define ICRx ICR1 + #define TCCRxA TCCR1A + #define TCCRxB TCCR1B + #define TIMERx_OVF_vect TIMER1_OVF_vect + #define TIMSKx TIMSK1 + #define TOIEx TOIE1 + + #if BACKLIGHT_PIN == B5 + #define COMxx1 COM1A1 + #define OCRxx OCR1A + #elif BACKLIGHT_PIN == B6 + #define COMxx1 COM1B1 + #define OCRxx OCR1B + #elif BACKLIGHT_PIN == B7 + #define COMxx1 COM1C1 + #define OCRxx OCR1C + #endif +#elif (defined(__AVR_AT90USB646__) || defined(__AVR_AT90USB647__) \ + || defined(__AVR_AT90USB1286__) || defined(__AVR_AT90USB1287__) \ + || defined(__AVR_ATmega16U4__) || defined(__AVR_ATmega32U4__)) \ + && (BACKLIGHT_PIN == C4 || BACKLIGHT_PIN == C5 || BACKLIGHT_PIN == C6) + #define HARDWARE_PWM + #define ICRx ICR3 + #define TCCRxA TCCR3A + #define TCCRxB TCCR3B + #define TIMERx_OVF_vect TIMER3_OVF_vect + #define TIMSKx TIMSK3 + #define TOIEx TOIE3 + + #if BACKLIGHT_PIN == C4 + #if (defined(__AVR_ATmega16U4__) || defined(__AVR_ATmega32U4__)) + #error This MCU has no C4 pin! + #else + #define COMxx1 COM3C1 + #define OCRxx OCR3C + #endif + #elif BACKLIGHT_PIN == C5 + #if (defined(__AVR_ATmega16U4__) || defined(__AVR_ATmega32U4__)) + #error This MCU has no C5 pin! + #else + #define COMxx1 COM3B1 + #define OCRxx OCR3B + #endif + #elif BACKLIGHT_PIN == C6 + #define COMxx1 COM3A1 + #define OCRxx OCR3A + #endif +#elif (defined(__AVR_ATmega16U2__) || defined(__AVR_ATmega32U2__)) \ + && (BACKLIGHT_PIN == B7 || BACKLIGHT_PIN == C5 || BACKLIGHT_PIN == C6) + #define HARDWARE_PWM + #define ICRx ICR1 + #define TCCRxA TCCR1A + #define TCCRxB TCCR1B + #define TIMERx_OVF_vect TIMER1_OVF_vect + #define TIMSKx TIMSK1 + #define TOIEx TOIE1 + + #if BACKLIGHT_PIN == B7 + #define COMxx1 COM1C1 + #define OCRxx OCR1C + #elif BACKLIGHT_PIN == C5 + #define COMxx1 COM1B1 + #define OCRxx OCR1B + #elif BACKLIGHT_PIN == C6 + #define COMxx1 COM1A1 + #define OCRxx OCR1A + #endif +#elif defined(__AVR_ATmega32A__) \ + && (BACKLIGHT_PIN == D4 || BACKLIGHT_PIN == D5) + #define HARDWARE_PWM + #define ICRx ICR1 + #define TCCRxA TCCR1A + #define TCCRxB TCCR1B + #define TIMERx_OVF_vect TIMER1_OVF_vect + #define TIMSKx TIMSK + #define TOIEx TOIE1 + + #if BACKLIGHT_PIN == D4 + #define COMxx1 COM1B1 + #define OCRxx OCR1B + #elif BACKLIGHT_PIN == D5 + #define COMxx1 COM1A1 + #define OCRxx OCR1A + #endif #else -# if !defined(BACKLIGHT_CUSTOM_DRIVER) -# if !defined(B5_AUDIO) && !defined(B6_AUDIO) && !defined(B7_AUDIO) - // timer 1 is not used by audio , backlight can use it -#pragma message "Using hardware timer 1 with software PWM" -# define HARDWARE_PWM -# define BACKLIGHT_PWM_TIMER -# define TCCRxA TCCR1A -# define TCCRxB TCCR1B -# define OCRxx OCR1A -# define TIMERx_COMPA_vect TIMER1_COMPA_vect -# define TIMERx_OVF_vect TIMER1_OVF_vect -# define OCIExA OCIE1A -# define TOIEx TOIE1 -# define ICRx ICR1 -# if defined(__AVR_ATmega32A__) // This MCU has only one TIMSK register -# define TIMSKx TIMSK -# else -# define TIMSKx TIMSK1 -# endif -# elif !defined(C6_AUDIO) && !defined(C5_AUDIO) && !defined(C4_AUDIO) -#pragma message "Using hardware timer 3 with software PWM" -// timer 3 is not used by audio, backlight can use it -# define HARDWARE_PWM -# define BACKLIGHT_PWM_TIMER -# define TCCRxA TCCR3A -# define TCCRxB TCCR3B -# define OCRxx OCR3A -# define TIMERx_COMPA_vect TIMER3_COMPA_vect -# define TIMERx_OVF_vect TIMER3_OVF_vect -# define OCIExA OCIE3A -# define TOIEx TOIE3 -# define ICRx ICR1 -# define TIMSKx TIMSK3 -# else -#pragma message "Audio in use - using pure software PWM" -#define NO_HARDWARE_PWM -# endif -# else -#pragma message "Custom driver defined - using pure software PWM" -#define NO_HARDWARE_PWM -# endif + #if !defined(BACKLIGHT_CUSTOM_DRIVER) + #if !defined(B5_AUDIO) && !defined(B6_AUDIO) && !defined(B7_AUDIO) + // Timer 1 is not in use by Audio feature, Backlight can use it + #pragma message "Using hardware timer 1 with software PWM" + #define HARDWARE_PWM + #define BACKLIGHT_PWM_TIMER + #define ICRx ICR1 + #define TCCRxA TCCR1A + #define TCCRxB TCCR1B + #define TIMERx_COMPA_vect TIMER1_COMPA_vect + #define TIMERx_OVF_vect TIMER1_OVF_vect + #if defined(__AVR_ATmega32A__) // This MCU has only one TIMSK register + #define TIMSKx TIMSK + #else + #define TIMSKx TIMSK1 + #endif + #define TOIEx TOIE1 + + #define OCIExA OCIE1A + #define OCRxx OCR1A + #elif !defined(C6_AUDIO) && !defined(C5_AUDIO) && !defined(C4_AUDIO) + #pragma message "Using hardware timer 3 with software PWM" + // Timer 3 is not in use by Audio feature, Backlight can use it + #define HARDWARE_PWM + #define BACKLIGHT_PWM_TIMER + #define ICRx ICR1 + #define TCCRxA TCCR3A + #define TCCRxB TCCR3B + #define TIMERx_COMPA_vect TIMER3_COMPA_vect + #define TIMERx_OVF_vect TIMER3_OVF_vect + #define TIMSKx TIMSK3 + #define TOIEx TOIE3 + + #define OCIExA OCIE3A + #define OCRxx OCR3A + #else + #pragma message "Audio in use - using pure software PWM" + #define NO_HARDWARE_PWM + #endif + #else + #pragma message "Custom driver defined - using pure software PWM" + #define NO_HARDWARE_PWM + #endif #endif #ifndef BACKLIGHT_ON_STATE @@ -1300,7 +1343,7 @@ static uint16_t cie_lightness(uint16_t v) { // range for val is [0..TIMER_TOP]. PWM pin is high while the timer count is below val. static inline void set_pwm(uint16_t val) { - OCRxx = val; + OCRxx = val; } #ifndef BACKLIGHT_CUSTOM_DRIVER -- cgit v1.2.3-70-g09d2 From 36dd261d06e86ed90997486776f06b286a163cd8 Mon Sep 17 00:00:00 2001 From: Danny Date: Fri, 16 Aug 2019 19:46:41 -0400 Subject: Add support for different encoder pinout for right half of split keyboard (#6521) * Add support for different encoder pinouts for split keyboard * Update documentation for new encoder pinout feature --- docs/feature_encoders.md | 9 +++++++++ docs/feature_split_keyboard.md | 7 +++++++ quantum/encoder.c | 14 ++++++++++++++ 3 files changed, 30 insertions(+) (limited to 'docs') diff --git a/docs/feature_encoders.md b/docs/feature_encoders.md index bb2d538e7..cbf72914e 100644 --- a/docs/feature_encoders.md +++ b/docs/feature_encoders.md @@ -20,6 +20,15 @@ Additionally, the resolution can be specified in the same file (the default & su #define ENCODER_RESOLUTION 4 +## Split Keyboards + +If you are using different pinouts for the encoders on each half of a split keyboard, you can define the pinout for the right half like this: + +```c +#define ENCODERS_PAD_A_RIGHT { encoder1a, encoder2a } +#define ENCODERS_PAD_B_RIGHT { encoder1b, encoder2b } +``` + ## Callbacks The callback functions can be inserted into your `.c`: diff --git a/docs/feature_split_keyboard.md b/docs/feature_split_keyboard.md index 4addb1bfd..60e0d278c 100644 --- a/docs/feature_split_keyboard.md +++ b/docs/feature_split_keyboard.md @@ -166,6 +166,13 @@ This allows you to specify a different set of pins for the matrix on the right s This allows you to specify a different set of direct pins for the right side. +```c +#define ENCODERS_PAD_A_RIGHT { encoder1a, encoder2a } +#define ENCODERS_PAD_B_RIGHT { encoder1b, encoder2b } +``` + +This allows you to specify a different set of encoder pins for the right side. + ```c #define RGBLIGHT_SPLIT ``` diff --git a/quantum/encoder.c b/quantum/encoder.c index 31f00c346..10d8cf7da 100644 --- a/quantum/encoder.c +++ b/quantum/encoder.c @@ -16,6 +16,9 @@ */ #include "encoder.h" +#ifdef SPLIT_KEYBOARD + #include "split_util.h" +#endif // for memcpy #include @@ -54,6 +57,17 @@ void encoder_update_kb(int8_t index, bool clockwise) { } void encoder_init(void) { +#if defined(SPLIT_KEYBOARD) && defined(ENCODERS_PAD_A_RIGHT) && defined(ENCODERS_PAD_B_RIGHT) + if (!isLeftHand) { + const pin_t encoders_pad_a_right[] = ENCODERS_PAD_A_RIGHT; + const pin_t encoders_pad_b_right[] = ENCODERS_PAD_B_RIGHT; + for (uint8_t i = 0; i < NUMBER_OF_ENCODERS; i++) { + encoders_pad_a[i] = encoders_pad_a_right[i]; + encoders_pad_b[i] = encoders_pad_b_right[i]; + } + } +#endif + for (int i = 0; i < NUMBER_OF_ENCODERS; i++) { setPinInputHigh(encoders_pad_a[i]); setPinInputHigh(encoders_pad_b[i]); -- cgit v1.2.3-70-g09d2 From ddaf37ffa98683be925ae7c396c55f336dce4ad2 Mon Sep 17 00:00:00 2001 From: fauxpark Date: Sun, 18 Aug 2019 04:41:55 +1000 Subject: Reword a note about the MANUFACTURER and PRODUCT defines in hardware_avr.md (#6558) --- docs/hardware_avr.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'docs') diff --git a/docs/hardware_avr.md b/docs/hardware_avr.md index c6987d1bd..0c1b31bb2 100644 --- a/docs/hardware_avr.md +++ b/docs/hardware_avr.md @@ -78,7 +78,7 @@ Do change the `MANUFACTURER`, `PRODUCT`, and `DESCRIPTION` lines to accurately r #define DESCRIPTION A custom keyboard ``` -?> Note: On Windows and macOS the `MANUFACTURER`, `PRODUCT`, and `DESCRIPTION` fields will be displayed in the list of USB devices. ?> On Linux these values will not be visible in lsusb by default, since Linux takes the information from the list maintained by [USB ID Repository](http://www.linux-usb.org/usb-ids.html) by default. lsusb will show the information reported by the device when executed with -v option. It is also present in kernel logs after plugging in the device. +?> Windows and macOS will display the `MANUFACTURER` and `PRODUCT` in the list of USB devices. `lsusb` on Linux instead takes these from the list maintained by the [USB ID Repository](http://www.linux-usb.org/usb-ids.html) by default. `lsusb -v` will show the values reported by the device, and they are also present in kernel logs after plugging it in. ### Keyboard Matrix Configuration -- cgit v1.2.3-70-g09d2 From 91ee6a1dbb6f43ac708b0dc301f5cbcef6dcfdf5 Mon Sep 17 00:00:00 2001 From: Drashna Jaelre Date: Mon, 19 Aug 2019 15:03:05 -0700 Subject: [Docs] Add RGB Matrix default mode define info (#6564) --- docs/feature_rgb_matrix.md | 1 + 1 file changed, 1 insertion(+) (limited to 'docs') diff --git a/docs/feature_rgb_matrix.md b/docs/feature_rgb_matrix.md index 916fcdce0..b2850c3cf 100644 --- a/docs/feature_rgb_matrix.md +++ b/docs/feature_rgb_matrix.md @@ -374,6 +374,7 @@ These are defined in [`rgblight_list.h`](https://github.com/qmk/qmk_firmware/blo #define RGB_MATRIX_LED_PROCESS_LIMIT (DRIVER_LED_TOTAL + 4) / 5 // limits the number of LEDs to process in an animation per task run (increases keyboard responsiveness) #define RGB_MATRIX_LED_FLUSH_LIMIT 16 // limits in milliseconds how frequently an animation will update the LEDs. 16 (16ms) is equivalent to limiting to 60fps (increases keyboard responsiveness) #define RGB_MATRIX_MAXIMUM_BRIGHTNESS 200 // limits maximum brightness of LEDs to 200 out of 255. If not defined maximum brightness is set to 255 +#define RGB_MATRIX_STARTUP_MODE RGB_MATRIX_CYCLE_LEFT_RIGHT // Sets the default mode, if none has been set ``` ## EEPROM storage -- cgit v1.2.3-70-g09d2 From f2c179de58c63b2202a490d283fd8fa216680ce7 Mon Sep 17 00:00:00 2001 From: fauxpark Date: Wed, 21 Aug 2019 15:18:52 +1000 Subject: Remove superfluous JTAG disable code (#6445) * Remove superfluous JTAG disable code * 32A has differently named register * Accidentally some operators * 32A also has different JTAG pins * Wrap disable_jtag() in an ifndef * Document this new define * Rename the define, it conflicts with a LUFA thing Also, move the ifndef wrapping to the call in keyboard_setup() --- docs/faq_debug.md | 17 +++++------------ docs/zh-cn/faq_debug.md | 17 ----------------- keyboards/amj96/matrix.c | 3 --- keyboards/clueboard/17/17.c | 4 ---- keyboards/clueboard/66/rev2/rev2.c | 4 ---- keyboards/clueboard/66_hotswap/prototype/prototype.c | 4 ---- keyboards/ergodone/matrix.c | 4 ---- keyboards/handwired/promethium/matrix.c | 7 ------- keyboards/hhkb/rn42/rn42.c | 4 ---- keyboards/hid_liber/matrix.c | 4 ---- keyboards/hotdox/matrix.c | 4 ---- keyboards/launchpad/rev1/rev1.c | 7 +------ keyboards/lets_split/sockets/sockets.h | 1 - keyboards/miniaxe/config.h | 2 -- keyboards/sx60/matrix.c | 7 ------- keyboards/vitamins_included/matrix.c | 6 ------ keyboards/vitamins_included/rev1/rev1.h | 1 - tmk_core/common/keyboard.c | 11 +++++++++-- tmk_core/common/keyboard.h | 2 -- 19 files changed, 15 insertions(+), 94 deletions(-) (limited to 'docs') diff --git a/docs/faq_debug.md b/docs/faq_debug.md index f6cc729b6..5cc20251d 100644 --- a/docs/faq_debug.md +++ b/docs/faq_debug.md @@ -184,22 +184,15 @@ Pressing any key during sleep should wake host. Arduino Leonardo and micro have **ATMega32U4** and can be used for TMK, though Arduino bootloader may be a problem. +## Enabling JTAG -## Using PF4-7 Pins of USB AVR? -You need to set JTD bit of MCUCR yourself to use PF4-7 as GPIO. Those pins are configured to serve JTAG function by default. MCUs like ATMega*U* or AT90USB* are affected with this. +By default, the JTAG debugging interface is disabled as soon as the keyboard starts up. JTAG-capable MCUs come from the factory with the `JTAGEN` fuse set, and it takes over certain pins of the MCU that the board may be using for the switch matrix, LEDs, etc. -If you are using Teensy this isn't needed. Teensy is shipped with JTAGEN fuse bit unprogrammed to disable the function. +If you would like to keep JTAG enabled, just add the following to your `config.h`: -See this code. +```c +#define NO_JTAG_DISABLE ``` - // JTAG disable for PORT F. write JTD bit twice within four cycles. - MCUCR |= (1< -代码如下。 -``` - // F接口JTAG失能。在四个周期内写入两次JTD位。 - MCUCR |= (1<. //#define EE_HANDS #define I2C_MASTER_LEFT //#define I2C_MASTER_RIGHT - -#define DISABLE_JTAG diff --git a/keyboards/sx60/matrix.c b/keyboards/sx60/matrix.c index e8e9d6574..58647d13b 100644 --- a/keyboards/sx60/matrix.c +++ b/keyboards/sx60/matrix.c @@ -113,13 +113,6 @@ uint8_t matrix_cols(void) { } void matrix_init(void) { - - /* To use PORTF disable JTAG with writing JTD bit twice within four cycles. */ - #if (defined(__AVR_AT90USB1286__) || defined(__AVR_AT90USB1287__) || defined(__AVR_ATmega32U4__)) - MCUCR |= _BV(JTD); - MCUCR |= _BV(JTD); - #endif - mcp23018_status = true; /* initialize row and col */ diff --git a/keyboards/vitamins_included/matrix.c b/keyboards/vitamins_included/matrix.c index 1f5071c69..d44e70f08 100644 --- a/keyboards/vitamins_included/matrix.c +++ b/keyboards/vitamins_included/matrix.c @@ -136,12 +136,6 @@ bool has_usb(void) { void matrix_init(void) { -#ifdef DISABLE_JTAG - // JTAG disable for PORT F. write JTD bit twice within four cycles. - MCUCR |= (1< Date: Wed, 21 Aug 2019 17:07:08 -0700 Subject: Added keycodes for swapping and unswapping the Control and OS keys (#6110) * Add MAGIC_SWAP_CONTROL_LGUI and MAGIC_UNSWAP_CONTROL_LGUI keycodes Key codes to swap and unswap the control and windows/cmd keys * Fix issues with pull request #6110 Renamed swap/unswap lctl and lgui key codes, added key codes to swap/unswap rctl and rgui, and moved new bool inside keycode_config.h struct to the end * Move new keycodes to the end of the enum (#6110) * add cases for swapped control and OS keys to mod_config (#6110) * Add new keycodes to feature_bootmagic.md (#6110) * Add R+L swap codes to keep in parity with AG_* codes * Extend Magic range check to include new magic codes * Update audio docs * Combine 2 byte ranges into 1 word for EECONFG Fix names for Keymap config EEPROM * Update docs/feature_bootmagic.md Co-Authored-By: noroadsleft <18669334+noroadsleft@users.noreply.github.com> * Update docs/feature_bootmagic.md Co-Authored-By: noroadsleft <18669334+noroadsleft@users.noreply.github.com> * Update docs/feature_bootmagic.md Co-Authored-By: noroadsleft <18669334+noroadsleft@users.noreply.github.com> * Update docs/feature_bootmagic.md Co-Authored-By: noroadsleft <18669334+noroadsleft@users.noreply.github.com> --- docs/feature_audio.md | 2 ++ docs/feature_bootmagic.md | 11 +++++++++-- docs/keycodes.md | 11 +++++++++-- quantum/keycode_config.c | 38 ++++++++++++++++++++++++++++++++++++ quantum/keycode_config.h | 2 ++ quantum/quantum.c | 48 +++++++++++++++++++++++++++++++++++++++++++++- quantum/quantum_keycodes.h | 13 +++++++++++++ tmk_core/common/command.c | 2 ++ tmk_core/common/eeconfig.c | 12 +++++++++--- tmk_core/common/eeconfig.h | 8 +++++--- 10 files changed, 136 insertions(+), 11 deletions(-) (limited to 'docs') diff --git a/docs/feature_audio.md b/docs/feature_audio.md index 7511598bc..5132dfe97 100644 --- a/docs/feature_audio.md +++ b/docs/feature_audio.md @@ -21,6 +21,8 @@ STARTUP_SONG // plays when the keyboard starts up (audio.c) GOODBYE_SONG // plays when you press the RESET key (quantum.c) AG_NORM_SONG // plays when you press AG_NORM (quantum.c) AG_SWAP_SONG // plays when you press AG_SWAP (quantum.c) +CG_NORM_SONG // plays when you press CG_NORM (quantum.c) +CG_SWAP_SONG // plays when you press CG_SWAP (quantum.c) MUSIC_ON_SONG // plays when music mode is activated (process_music.c) MUSIC_OFF_SONG // plays when music mode is deactivated (process_music.c) CHROMATIC_SONG // plays when the chromatic music mode is selected (process_music.c) diff --git a/docs/feature_bootmagic.md b/docs/feature_bootmagic.md index 225189ccb..fc37a3302 100644 --- a/docs/feature_bootmagic.md +++ b/docs/feature_bootmagic.md @@ -64,8 +64,11 @@ Hold down the Bootmagic key (Space by default) and the desired hotkey while plug |`MAGIC_NO_GUI` | |Disable the GUI keys (useful when gaming) | |`MAGIC_UNNO_GUI` | |Enable the GUI keys | |`MAGIC_SWAP_ALT_GUI` |`AG_SWAP`|Swap Alt and GUI on both sides (for macOS)| -|`MAGIC_UNSWAP_ALT_GUI` |`AG_NORM`|Unswap Left Alt and Left GUI | -|`MAGIC_TOGGLE_ALT_GUI` |`AG_TOGG`|Toggle Left Alt and GUI swap | +|`MAGIC_UNSWAP_ALT_GUI` |`AG_NORM`|Unswap Alt and GUI | +|`MAGIC_TOGGLE_ALT_GUI` |`AG_TOGG`|Toggle Alt and GUI swap | +|`MAGIC_SWAP_CTL_GUI` |`CG_SWAP`|Swap Ctrl and GUI on both sides (for macOS)| +|`MAGIC_UNSWAP_CTL_GUI` |`CG_NORM`|Unswap Ctrl and GUI | +|`MAGIC_TOGGLE_CTL_GUI` |`CG_TOGG`|Toggle Ctrl and GUI swap | |`MAGIC_SWAP_BACKSLASH_BACKSPACE` | |Swap `\` and Backspace | |`MAGIC_UNSWAP_BACKSLASH_BACKSPACE`| |Unswap `\` and Backspace | |`MAGIC_SWAP_CONTROL_CAPSLOCK` | |Swap Left Control and Caps Lock | @@ -76,6 +79,10 @@ Hold down the Bootmagic key (Space by default) and the desired hotkey while plug |`MAGIC_UNSWAP_LALT_LGUI` | |Unswap Left Alt and Left GUI | |`MAGIC_SWAP_RALT_RGUI` | |Swap Right Alt and Right GUI | |`MAGIC_UNSWAP_RALT_RGUI` | |Unswap Right Alt and Right GUI | +|`MAGIC_SWAP_LCTL_LGUI` | |Swap Left Control and Left GUI | +|`MAGIC_UNSWAP_LCTL_LGUI` | |Unswap Left Control and Left GUI | +|`MAGIC_SWAP_RCTL_RGUI` | |Swap Right Control and Right GUI | +|`MAGIC_UNSWAP_RCTL_RGUI` | |Unswap Right Control and Right GUI | ## Configuration diff --git a/docs/keycodes.md b/docs/keycodes.md index bd4dd61a5..e17fef6fd 100644 --- a/docs/keycodes.md +++ b/docs/keycodes.md @@ -261,6 +261,8 @@ This is a reference only. Each group of keys links to the page documenting their |----------------------------------|---------|------------------------------------| |`MAGIC_SWAP_CONTROL_CAPSLOCK` | |Swap Caps Lock and Left Control | |`MAGIC_CAPSLOCK_TO_CONTROL` | |Treat Caps Lock as Control | +|`MAGIC_SWAP_LCTL_LGUI` | |Swap Left Control and GUI | +|`MAGIC_SWAP_RCTL_RGUI` | |Swap Right Control and GUI | |`MAGIC_SWAP_LALT_LGUI` | |Swap Left Alt and GUI | |`MAGIC_SWAP_RALT_RGUI` | |Swap Right Alt and GUI | |`MAGIC_NO_GUI` | |Disable the GUI key | @@ -268,8 +270,11 @@ This is a reference only. Each group of keys links to the page documenting their |`MAGIC_SWAP_BACKSLASH_BACKSPACE` | |Swap `\` and Backspace | |`MAGIC_HOST_NKRO` | |Force NKRO on | |`MAGIC_SWAP_ALT_GUI` |`AG_SWAP`|Swap Alt and GUI on both sides | +|`MAGIC_SWAP_CTL_GUI` |`CG_SWAP`|Swap Ctrl and GUI on both sides (for macOS)| |`MAGIC_UNSWAP_CONTROL_CAPSLOCK` | |Unswap Caps Lock and Left Control | |`MAGIC_UNCAPSLOCK_TO_CONTROL` | |Stop treating Caps Lock as Control | +|`MAGIC_UNSWAP_LCTL_LGUI` | |Unswap Left Control and GUI | +|`MAGIC_UNSWAP_RCTL_RGUI` | |Unswap Right Control and GUI | |`MAGIC_UNSWAP_LALT_LGUI` | |Unswap Left Alt and GUI | |`MAGIC_UNSWAP_RALT_RGUI` | |Unswap Right Alt and GUI | |`MAGIC_UNNO_GUI` | |Enable the GUI key | @@ -277,8 +282,10 @@ This is a reference only. Each group of keys links to the page documenting their |`MAGIC_UNSWAP_BACKSLASH_BACKSPACE`| |Unswap `\` and Backspace | |`MAGIC_UNHOST_NKRO` | |Force NKRO off | |`MAGIC_UNSWAP_ALT_GUI` |`AG_NORM`|Unswap Alt and GUI on both sides | -|`MAGIC_TOGGLE_ALT_GUI` |`AG_TOGG`|Toggle Alt and GUI swap on both sides| -|`MAGIC_TOGGLE_NKRO` | |Turn NKRO on or off | +|`MAGIC_UNSWAP_CTL_GUI` |`CG_NORM`|Unswap Ctrl and GUI on both sides | +|`MAGIC_TOGGLE_ALT_GUI` |`AG_TOGG`|Toggle Alt and GUI swap on both sides | +|`MAGIC_TOGGLE_CTL_GUI` |`CG_TOGG`|Toggle Ctrl and GUI swap on both sides | +|`MAGIC_TOGGLE_NKRO` | |Turn NKRO on or off | ## [Bluetooth](feature_bluetooth.md) diff --git a/quantum/keycode_config.c b/quantum/keycode_config.c index 0dc5105d2..73fe15861 100644 --- a/quantum/keycode_config.c +++ b/quantum/keycode_config.c @@ -31,6 +31,12 @@ uint16_t keycode_config(uint16_t keycode) { if (keymap_config.swap_control_capslock) { return KC_CAPSLOCK; } + if (keymap_config.swap_lctl_lgui) { + if (keymap_config.no_gui) { + return KC_NO; + } + return KC_LGUI; + } return KC_LCTL; case KC_LALT: if (keymap_config.swap_lalt_lgui) { @@ -44,10 +50,21 @@ uint16_t keycode_config(uint16_t keycode) { if (keymap_config.swap_lalt_lgui) { return KC_LALT; } + if (keymap_config.swap_lctl_lgui) { + return KC_LCTRL; + } if (keymap_config.no_gui) { return KC_NO; } return KC_LGUI; + case KC_RCTL: + if (keymap_config.swap_rctl_rgui) { + if (keymap_config.no_gui) { + return KC_NO; + } + return KC_RGUI; + } + return KC_RCTL; case KC_RALT: if (keymap_config.swap_ralt_rgui) { if (keymap_config.no_gui) { @@ -60,6 +77,9 @@ uint16_t keycode_config(uint16_t keycode) { if (keymap_config.swap_ralt_rgui) { return KC_RALT; } + if (keymap_config.swap_rctl_rgui) { + return KC_RCTL; + } if (keymap_config.no_gui) { return KC_NO; } @@ -108,6 +128,24 @@ uint8_t mod_config(uint8_t mod) { mod |= MOD_RGUI; } } + if (keymap_config.swap_lctl_lgui) { + if ((mod & MOD_RGUI) == MOD_LGUI) { + mod &= ~MOD_LGUI; + mod |= MOD_LCTL; + } else if ((mod & MOD_RCTL) == MOD_LCTL) { + mod &= ~MOD_LCTL; + mod |= MOD_LGUI; + } + } + if (keymap_config.swap_rctl_rgui) { + if ((mod & MOD_RGUI) == MOD_RGUI) { + mod &= ~MOD_RGUI; + mod |= MOD_RCTL; + } else if ((mod & MOD_RCTL) == MOD_RCTL) { + mod &= ~MOD_RCTL; + mod |= MOD_RGUI; + } + } if (keymap_config.no_gui) { mod &= ~MOD_LGUI; mod &= ~MOD_RGUI; diff --git a/quantum/keycode_config.h b/quantum/keycode_config.h index 022f4bd19..7b01fcea4 100644 --- a/quantum/keycode_config.h +++ b/quantum/keycode_config.h @@ -36,6 +36,8 @@ typedef union { bool swap_grave_esc:1; bool swap_backslash_backspace:1; bool nkro:1; + bool swap_lctl_lgui:1; + bool swap_rctl_rgui:1; }; } keymap_config_t; diff --git a/quantum/quantum.c b/quantum/quantum.c index 77cbbb2e7..f489c9031 100644 --- a/quantum/quantum.c +++ b/quantum/quantum.c @@ -65,9 +65,17 @@ extern backlight_config_t backlight_config; #ifndef AG_SWAP_SONG #define AG_SWAP_SONG SONG(AG_SWAP_SOUND) #endif + #ifndef CG_NORM_SONG + #define CG_NORM_SONG SONG(AG_NORM_SOUND) + #endif + #ifndef CG_SWAP_SONG + #define CG_SWAP_SONG SONG(AG_SWAP_SOUND) + #endif float goodbye_song[][2] = GOODBYE_SONG; float ag_norm_song[][2] = AG_NORM_SONG; float ag_swap_song[][2] = AG_SWAP_SONG; + float cg_norm_song[][2] = CG_NORM_SONG; + float cg_swap_song[][2] = CG_SWAP_SONG; #ifdef DEFAULT_LAYER_SONGS float default_layer_songs[][16][2] = DEFAULT_LAYER_SONGS; #endif @@ -563,7 +571,8 @@ bool process_record_quantum(keyrecord_t *record) { return false; #endif #endif - case MAGIC_SWAP_CONTROL_CAPSLOCK ... MAGIC_TOGGLE_NKRO: + case MAGIC_SWAP_CONTROL_CAPSLOCK ... MAGIC_TOGGLE_ALT_GUI: + case MAGIC_SWAP_LCTL_LGUI ... MAGIC_TOGGLE_CTL_GUI: if (record->event.pressed) { // MAGIC actions (BOOTMAGIC without the boot) if (!eeconfig_is_enabled()) { @@ -585,6 +594,12 @@ bool process_record_quantum(keyrecord_t *record) { case MAGIC_SWAP_RALT_RGUI: keymap_config.swap_ralt_rgui = true; break; + case MAGIC_SWAP_LCTL_LGUI: + keymap_config.swap_lctl_lgui = true; + break; + case MAGIC_SWAP_RCTL_RGUI: + keymap_config.swap_rctl_rgui = true; + break; case MAGIC_NO_GUI: keymap_config.no_gui = true; break; @@ -604,6 +619,13 @@ bool process_record_quantum(keyrecord_t *record) { PLAY_SONG(ag_swap_song); #endif break; + case MAGIC_SWAP_CTL_GUI: + keymap_config.swap_lctl_lgui = true; + keymap_config.swap_rctl_rgui = true; + #ifdef AUDIO_ENABLE + PLAY_SONG(cg_swap_song); + #endif + break; case MAGIC_UNSWAP_CONTROL_CAPSLOCK: keymap_config.swap_control_capslock = false; break; @@ -616,6 +638,12 @@ bool process_record_quantum(keyrecord_t *record) { case MAGIC_UNSWAP_RALT_RGUI: keymap_config.swap_ralt_rgui = false; break; + case MAGIC_UNSWAP_LCTL_LGUI: + keymap_config.swap_lctl_lgui = false; + break; + case MAGIC_UNSWAP_RCTL_RGUI: + keymap_config.swap_rctl_rgui = false; + break; case MAGIC_UNNO_GUI: keymap_config.no_gui = false; break; @@ -635,6 +663,13 @@ bool process_record_quantum(keyrecord_t *record) { PLAY_SONG(ag_norm_song); #endif break; + case MAGIC_UNSWAP_CTL_GUI: + keymap_config.swap_lctl_lgui = false; + keymap_config.swap_rctl_rgui = false; + #ifdef AUDIO_ENABLE + PLAY_SONG(cg_norm_song); + #endif + break; case MAGIC_TOGGLE_ALT_GUI: keymap_config.swap_lalt_lgui = !keymap_config.swap_lalt_lgui; keymap_config.swap_ralt_rgui = !keymap_config.swap_ralt_rgui; @@ -646,6 +681,17 @@ bool process_record_quantum(keyrecord_t *record) { } #endif break; + case MAGIC_TOGGLE_CTL_GUI: + keymap_config.swap_lctl_lgui = !keymap_config.swap_lctl_lgui; + keymap_config.swap_rctl_rgui = !keymap_config.swap_rctl_rgui; + #ifdef AUDIO_ENABLE + if (keymap_config.swap_rctl_rgui) { + PLAY_SONG(cg_swap_song); + } else { + PLAY_SONG(cg_norm_song); + } + #endif + break; case MAGIC_TOGGLE_NKRO: keymap_config.nkro = !keymap_config.nkro; break; diff --git a/quantum/quantum_keycodes.h b/quantum/quantum_keycodes.h index b5c6783e5..bb16da4d5 100644 --- a/quantum/quantum_keycodes.h +++ b/quantum/quantum_keycodes.h @@ -492,6 +492,15 @@ enum quantum_keycodes { CMB_ON, CMB_OFF, CMB_TOG, + + MAGIC_SWAP_LCTL_LGUI, + MAGIC_SWAP_RCTL_RGUI, + MAGIC_UNSWAP_LCTL_LGUI, + MAGIC_UNSWAP_RCTL_RGUI, + MAGIC_SWAP_CTL_GUI, + MAGIC_UNSWAP_CTL_GUI, + MAGIC_TOGGLE_CTL_GUI, + // always leave at the end SAFE_RANGE }; @@ -639,6 +648,10 @@ enum quantum_keycodes { #define AG_NORM MAGIC_UNSWAP_ALT_GUI #define AG_TOGG MAGIC_TOGGLE_ALT_GUI +#define CG_SWAP MAGIC_SWAP_CTL_GUI +#define CG_NORM MAGIC_UNSWAP_CTL_GUI +#define CG_TOGG MAGIC_TOGGLE_CTL_GUI + // GOTO layer - 16 layers max // when: // ON_PRESS = 1 diff --git a/tmk_core/common/command.c b/tmk_core/common/command.c index d3884d9fa..949615ecf 100644 --- a/tmk_core/common/command.c +++ b/tmk_core/common/command.c @@ -286,6 +286,8 @@ static void print_eeconfig(void) print("keymap_config.raw: "); print_hex8(kc.raw); print("\n"); print(".swap_control_capslock: "); print_dec(kc.swap_control_capslock); print("\n"); print(".capslock_to_control: "); print_dec(kc.capslock_to_control); print("\n"); + print(".swap_lctl_lgui: "); print_dec(kc.swap_lctl_lgui); print("\n"); + print(".swap_rctl_rgui: "); print_dec(kc.swap_rctl_rgui); print("\n"); print(".swap_lalt_lgui: "); print_dec(kc.swap_lalt_lgui); print("\n"); print(".swap_ralt_rgui: "); print_dec(kc.swap_ralt_rgui); print("\n"); print(".no_gui: "); print_dec(kc.no_gui); print("\n"); diff --git a/tmk_core/common/eeconfig.c b/tmk_core/common/eeconfig.c index 4f440abc9..28f5d3ad5 100644 --- a/tmk_core/common/eeconfig.c +++ b/tmk_core/common/eeconfig.c @@ -39,7 +39,8 @@ void eeconfig_init_quantum(void) { eeprom_update_byte(EECONFIG_DEBUG, 0); eeprom_update_byte(EECONFIG_DEFAULT_LAYER, 0); default_layer_state = 0; - eeprom_update_byte(EECONFIG_KEYMAP, 0); + eeprom_update_byte(EECONFIG_KEYMAP_LOWER_BYTE, 0); + eeprom_update_byte(EECONFIG_KEYMAP_UPPER_BYTE, 0); eeprom_update_byte(EECONFIG_MOUSEKEY_ACCEL, 0); eeprom_update_byte(EECONFIG_BACKLIGHT, 0); eeprom_update_byte(EECONFIG_AUDIO, 0xFF); // On by default @@ -127,12 +128,17 @@ void eeconfig_update_default_layer(uint8_t val) { eeprom_update_byte(EECONFIG_DE * * FIXME: needs doc */ -uint8_t eeconfig_read_keymap(void) { return eeprom_read_byte(EECONFIG_KEYMAP); } +uint16_t eeconfig_read_keymap(void) { + return ( eeprom_read_byte(EECONFIG_KEYMAP_LOWER_BYTE) | (eeprom_read_byte(EECONFIG_KEYMAP_UPPER_BYTE) << 8) ); +} /** \brief eeconfig update keymap * * FIXME: needs doc */ -void eeconfig_update_keymap(uint8_t val) { eeprom_update_byte(EECONFIG_KEYMAP, val); } +void eeconfig_update_keymap(uint16_t val) { + eeprom_update_byte(EECONFIG_KEYMAP_LOWER_BYTE, val & 0xFF); + eeprom_update_byte(EECONFIG_KEYMAP_UPPER_BYTE, ( val >> 8 ) & 0xFF ); +} /** \brief eeconfig read backlight * diff --git a/tmk_core/common/eeconfig.h b/tmk_core/common/eeconfig.h index 3100041b4..0d5c6a82f 100644 --- a/tmk_core/common/eeconfig.h +++ b/tmk_core/common/eeconfig.h @@ -45,7 +45,8 @@ along with this program. If not, see . #define EECONFIG_HAPTIC (uint32_t *)24 #define EECONFIG_RGB_MATRIX (uint32_t *)28 #define EECONFIG_RGB_MATRIX_SPEED (uint8_t *)32 - +// TODO: Combine these into a single word and single block of EEPROM +#define EECONFIG_KEYMAP_UPPER_BYTE (uint8_t *)33 /* debug bit */ #define EECONFIG_DEBUG_ENABLE (1<<0) #define EECONFIG_DEBUG_MATRIX (1<<1) @@ -62,6 +63,7 @@ along with this program. If not, see . #define EECONFIG_KEYMAP_SWAP_BACKSLASH_BACKSPACE (1<<6) #define EECONFIG_KEYMAP_NKRO (1<<7) +#define EECONFIG_KEYMAP_LOWER_BYTE EECONFIG_KEYMAP bool eeconfig_is_enabled(void); bool eeconfig_is_disabled(void); @@ -81,8 +83,8 @@ void eeconfig_update_debug(uint8_t val); uint8_t eeconfig_read_default_layer(void); void eeconfig_update_default_layer(uint8_t val); -uint8_t eeconfig_read_keymap(void); -void eeconfig_update_keymap(uint8_t val); +uint16_t eeconfig_read_keymap(void); +void eeconfig_update_keymap(uint16_t val); #ifdef BACKLIGHT_ENABLE uint8_t eeconfig_read_backlight(void); -- cgit v1.2.3-70-g09d2 From b62e160a8950f451b08f1fee0109e60a58c5ddaa Mon Sep 17 00:00:00 2001 From: Drashna Jaelre Date: Wed, 21 Aug 2019 17:07:49 -0700 Subject: Additional changes for Layer State typedef compatibility (#5906) * Additional changes for Layer State typedef compatibility * Replace biton32 with get_highest_layer in docs * Change additional layer structure code * Fix uGFX reference issue * Remove dynamic_keymap check * Where did all these extra spaces come from Co-Authored-By: fauxpark --- docs/custom_quantum_functions.md | 12 ++++++------ docs/feature_oled_driver.md | 2 +- docs/feature_userspace.md | 4 ++-- docs/ref_functions.md | 4 ++-- quantum/quantum.c | 6 +++--- quantum/quantum.h | 2 +- quantum/visualizer/visualizer.c | 4 ++-- quantum/visualizer/visualizer.h | 7 ++++--- tmk_core/common/action_layer.h | 5 ++++- 9 files changed, 25 insertions(+), 21 deletions(-) (limited to 'docs') diff --git a/docs/custom_quantum_functions.md b/docs/custom_quantum_functions.md index 7be82c650..839d49ca0 100644 --- a/docs/custom_quantum_functions.md +++ b/docs/custom_quantum_functions.md @@ -297,8 +297,8 @@ This runs code every time that the layers get changed. This can be useful for l This example shows how to set the [RGB Underglow](feature_rgblight.md) lights based on the layer, using the Planck as an example ```c -uint32_t layer_state_set_user(uint32_t state) { - switch (biton32(state)) { +layer_state_t layer_state_set_user(layer_state_t state) { + switch (get_highest_layer(state)) { case _RAISE: rgblight_setrgb (0x00, 0x00, 0xFF); break; @@ -320,8 +320,8 @@ uint32_t layer_state_set_user(uint32_t state) { ``` ### `layer_state_set_*` Function Documentation -* Keyboard/Revision: `uint32_t layer_state_set_kb(uint32_t state)` -* Keymap: `uint32_t layer_state_set_user(uint32_t state)` +* Keyboard/Revision: `layer_state_t layer_state_set_kb(layer_state_t state)` +* Keymap: `layer_state_t layer_state_set_user(layer_state_t state)` The `state` is the bitmask of the active layers, as explained in the [Keymap Overview](keymap.md#keymap-layer-status) @@ -377,8 +377,8 @@ void keyboard_post_init_user(void) { The above function will use the EEPROM config immediately after reading it, to set the default layer's RGB color. The "raw" value of it is converted in a usable structure based on the "union" that you created above. ```c -uint32_t layer_state_set_user(uint32_t state) { - switch (biton32(state)) { +layer_state_t layer_state_set_user(layer_state_t state) { + switch (get_highest_layer(state)) { case _RAISE: if (user_config.rgb_layer_change) { rgblight_sethsv_noeeprom_magenta(); rgblight_mode_noeeprom(1); } break; diff --git a/docs/feature_oled_driver.md b/docs/feature_oled_driver.md index 503e43828..9d19beedb 100644 --- a/docs/feature_oled_driver.md +++ b/docs/feature_oled_driver.md @@ -31,7 +31,7 @@ This enables the feature and the `OLED_DRIVER_ENABLE` define. Then in your `keym void oled_task_user(void) { // Host Keyboard Layer Status oled_write_P(PSTR("Layer: "), false); - switch (biton32(layer_state)) { + switch (get_highest_layer(layer_state)) { case _QWERTY: oled_write_P(PSTR("Default\n"), false); break; diff --git a/docs/feature_userspace.md b/docs/feature_userspace.md index 2f119c8bd..1cc8ca742 100644 --- a/docs/feature_userspace.md +++ b/docs/feature_userspace.md @@ -115,11 +115,11 @@ For instance, let's look at the `layer_state_set_user()` function. You can enab In your `` file, you'd want to add this: ```c __attribute__ ((weak)) -uint32_t layer_state_set_keymap (uint32_t state) { +layer_state_t layer_state_set_keymap (layer_state_t state) { return state; } -uint32_t layer_state_set_user (uint32_t state) { +layer_state_t layer_state_set_user (layer_state_t state) { state = update_tri_layer_state(state, 2, 3, 5); return layer_state_set_keymap (state); } diff --git a/docs/ref_functions.md b/docs/ref_functions.md index 174d9a95a..1ac83cec4 100644 --- a/docs/ref_functions.md +++ b/docs/ref_functions.md @@ -50,7 +50,7 @@ The caveat to this method is that you cannot access the `z` layer without having #### Example ```c -uint32_t layer_state_set_user(uint32_t state) { +layer_state_t layer_state_set_user(layer_state_t state) { return update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST); } ``` @@ -58,7 +58,7 @@ uint32_t layer_state_set_user(uint32_t state) { Alternatively, you don't have to immediately "return" the value. This is useful if you want to add multiple tri layers, or if you want to add additional effects. ```c -uint32_t layer_state_set_user(uint32_t state) { +layer_state_t layer_state_set_user(layer_state_t state) { state = update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST); state = update_tri_layer_state(state, _RAISE, _SYMB, _SPECIAL); return state; diff --git a/quantum/quantum.c b/quantum/quantum.c index f489c9031..665d6fdd9 100644 --- a/quantum/quantum.c +++ b/quantum/quantum.c @@ -931,9 +931,9 @@ void set_single_persistent_default_layer(uint8_t default_layer) { default_layer_set(1U<. #include "keyboard.h" #include "action.h" -#if defined(LAYER_STATE_8BIT) || ( defined(DYNAMIC_KEYMAP_ENABLE) && DYNAMIC_KEYMAP_LAYER_COUNT >= 8 ) +#if defined(LAYER_STATE_8BIT) typedef uint8_t layer_state_t; +#define get_highest_layer(state) biton8(state) #elif defined(LAYER_STATE_16BIT) typedef uint16_t layer_state_t; +#define get_highest_layer(state) biton16(state) #else typedef uint32_t layer_state_t; +#define get_highest_layer(state) biton32(state) #endif -- cgit v1.2.3-70-g09d2 From 129e4d1b2f481c09c4f67d24656e6af9cf92b1b6 Mon Sep 17 00:00:00 2001 From: madivad Date: Thu, 22 Aug 2019 10:44:37 +1000 Subject: [Docs] Update how_keyboards_work.md (#6528) * Update how_keyboards_work.md bridged the gap between scancodes and keycodes, the doc didn't make the distinction and was ambiguous. * Update docs/how_keyboards_work.md Co-Authored-By: Drashna Jaelre * Update docs/how_keyboards_work.md fix typo Co-Authored-By: noroadsleft <18669334+noroadsleft@users.noreply.github.com> --- docs/how_keyboards_work.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'docs') diff --git a/docs/how_keyboards_work.md b/docs/how_keyboards_work.md index 5697a2187..bbd22a278 100644 --- a/docs/how_keyboards_work.md +++ b/docs/how_keyboards_work.md @@ -33,7 +33,11 @@ The firmware does not send actual letters or characters, but only scancodes. Thus, by modifying the firmware, you can only modify what scancode is sent over USB for a given key. -## 3. What the Operating System Does +## 3. What the Event Input/Kernel Does + +The *scancode* is mapped to a *keycode* dependent on the keyboard [60-keyboard.hwdb at Master](https://github.com/systemd/systemd/blob/master/hwdb/60-keyboard.hwdb). Without this mapping, the operating system will not receive a valid keycode and will be unable to do anything useful with that key press. + +## 4. What the Operating System Does Once the keycode reaches the operating system, a piece of software has to have it match an actual character thanks to a keyboard layout. For example, if your -- cgit v1.2.3-70-g09d2 From ae44ec9820cdf5348e802c9bae3af34557617685 Mon Sep 17 00:00:00 2001 From: Joel Challis Date: Fri, 23 Aug 2019 00:08:45 +0100 Subject: Align flashing behaviour of dfu-util (#6578) * Align flashing retry logic of dfu-util * Align bootloader wait messages Co-Authored-By: Drashna Jaelre --- docs/flashing.md | 6 ++---- tmk_core/chibios.mk | 22 ++++++---------------- 2 files changed, 8 insertions(+), 20 deletions(-) (limited to 'docs') diff --git a/docs/flashing.md b/docs/flashing.md index 833b9dd62..d11dbdf15 100644 --- a/docs/flashing.md +++ b/docs/flashing.md @@ -171,7 +171,5 @@ Flashing sequence: There are a number of DFU commands that you can use to flash firmware to a STM32 device: -* `:dfu-util` - The default command for flashing to STM32 devices. -* `:dfu-util-wait` - This works like the default command, but it gives you a (configurable) 10 second timeout before it attempts to flash the firmware. You can use `TIME_DELAY=20` from the command line to change the timeout. - * Eg: `make ::dfu-util TIME_DELAY=5` -* `:st-link-cli` - This allows you to flash the firmware via ST-LINK's CLI utility, rather than dfu-util. +* `:dfu-util` - The default command for flashing to STM32 devices. +* `:st-link-cli` - This allows you to flash the firmware via ST-LINK's CLI utility, rather than dfu-util. diff --git a/tmk_core/chibios.mk b/tmk_core/chibios.mk index eee520467..4b5b6d00b 100644 --- a/tmk_core/chibios.mk +++ b/tmk_core/chibios.mk @@ -235,28 +235,18 @@ qmk: $(BUILD_DIR)/$(TARGET).bin printf "@ $(TARGET).json\n@=info.json\n" | zipnote -w $(TARGET).qmk define EXEC_DFU_UTIL + until $(DFU_UTIL) -l | grep -q "Found DFU"; do\ + echo "Error: Bootloader not found. Trying again in 5s." ;\ + sleep 5 ;\ + done $(DFU_UTIL) $(DFU_ARGS) -D $(BUILD_DIR)/$(TARGET).bin endef dfu-util: $(BUILD_DIR)/$(TARGET).bin cpfirmware sizeafter $(call EXEC_DFU_UTIL) -ifneq ($(strip $(TIME_DELAY)),) - TIME_DELAY = $(strip $(TIME_DELAY)) -else - TIME_DELAY = 10 -endif -dfu-util-wait: $(BUILD_DIR)/$(TARGET).bin cpfirmware sizeafter - echo "Preparing to flash firmware. Please enter bootloader now..." ;\ - COUNTDOWN=$(TIME_DELAY) ;\ - while [[ $$COUNTDOWN -ge 1 ]] ; do \ - echo "Flashing in $$COUNTDOWN ..."; \ - sleep 1 ;\ - ((COUNTDOWN = COUNTDOWN - 1)) ; \ - done; \ - echo "Flashing $(TARGET).bin" ;\ - sleep 1 ;\ - $(call EXEC_DFU_UTIL) +# Legacy alias +dfu-util-wait: dfu-util st-link-cli: $(BUILD_DIR)/$(TARGET).hex sizeafter $(ST_LINK_CLI) $(ST_LINK_ARGS) -q -c SWD -p $(BUILD_DIR)/$(TARGET).hex -Rst -- cgit v1.2.3-70-g09d2 From fb7c65dc34b3001617635e6afd10480f2770522d Mon Sep 17 00:00:00 2001 From: fauxpark Date: Sat, 24 Aug 2019 16:38:21 +1000 Subject: Add Zadig 101 to docs (#6585) * Add Zadig 101 to docs * Add USBasp bootloader name * Add links to the page * Note the usual VIDs and PIDs for the bootloaders * Add "List All Devices" note, just in case * Talk about keyboard-specific bootloader procedures * Send users to the new page in "Unknown Device for DFU Bootloader" section * Halfkay bootloaders are also an exception here --- docs/_summary.md | 1 + docs/driver_installation_zadig.md | 42 +++++++++++++++++++++++++++++++++++++++ docs/faq_build.md | 9 +++------ 3 files changed, 46 insertions(+), 6 deletions(-) create mode 100644 docs/driver_installation_zadig.md (limited to 'docs') diff --git a/docs/_summary.md b/docs/_summary.md index 56184f44d..95286ff46 100644 --- a/docs/_summary.md +++ b/docs/_summary.md @@ -18,6 +18,7 @@ * [Build/Compile QMK](faq_build.md) * [Debugging/Troubleshooting QMK](faq_debug.md) * [Keymap](faq_keymap.md) + * [Driver Installation with Zadig](driver_installation_zadig.md) * Detailed Guides * [Install Build Tools](getting_started_build_tools.md) diff --git a/docs/driver_installation_zadig.md b/docs/driver_installation_zadig.md new file mode 100644 index 000000000..ccee7008e --- /dev/null +++ b/docs/driver_installation_zadig.md @@ -0,0 +1,42 @@ +# Bootloader Driver Installation with Zadig + +QMK presents itself to the host as a regular HID keyboard device, and as such requires no special drivers. However, in order to flash your keyboard on Windows, the bootloader device that appears when you reset the board often *does*. + +There are two notable exceptions: the Caterina bootloader, usually seen on Pro Micros, and the Halfkay bootloader shipped with PJRC Teensys, appear as a serial port and a generic HID device respectively, and so do not require a driver. + +We recommend the use of the [Zadig](https://zadig.akeo.ie/) utility. If you have set up the development environment with Msys2 or WSL, the `qmk_install.sh` script will have asked if you want it to install the drivers for you. + +## Installation + +Place your keyboard into the bootloader mode, either by hitting the `RESET` keycode (which may be on a different layer), or by pressing the reset switch usually located on the underside of the board. If your keyboard has neither, try holding Escape, or Space+`B`, as you plug it in (see the [Bootmagic](feature_bootmagic.md) docs for more details). +Some keyboards may have specific instructions for entering the bootloader, for example the [Bootmagic Lite](feature_bootmagic.md#bootmagic-lite) key (Escape) might be on a different key, such as Left Control. Refer to the board's README if you are unsure. + +Zadig will automatically detect the bootloader device. You may sometimes need to check **Options -> List All Devices**. + - For keyboards with Atmel AVR MCUs, the bootloader will be named something similar to `ATm32U4DFU`, and have a Vendor ID of `03EB`. + - USBasp bootloaders will appear as `USBasp`, with a VID/PID of `16C0:05DC`. + - AVR keyboards flashed with the QMK-DFU bootloader will be named ` Bootloader` and will also have the VID `03EB`. + - For most ARM keyboards, it will be called `STM32 BOOTLOADER`, and have a VID/PID of `0483:DF11`. + +!> If Zadig lists one or more devices with the `HidUsb` driver, your keyboard is probably not in bootloader mode. The arrow will be colored orange and you will be asked to confirm modifying a system driver. **Do not** proceed if this is the case! + +If the arrow appears green, select the driver, and click **Install Driver**. The `libusb-win32` driver will usually work for AVR, and `WinUSB` for ARM, but if you still cannot flash the board, try installing a different driver from the list. + +![Zadig with a bootloader driver correctly installed](https://i.imgur.com/b8VgXzx.png) + +Finally, unplug and replug the keyboard to make sure the new driver has been loaded. If you are using the QMK Toolbox to flash, exit and restart it too, as it can sometimes fail to recognize the driver change. + +## Recovering from Installation to Wrong Device + +If you find that you can no longer type with the keyboard, you may have installed the driver onto the keyboard itself instead of the bootloader. You can easily confirm this in Zadig - a healthy keyboard has the `HidUsb` driver installed on all of its interfaces: + +![A healthy keyboard as seen by Zadig](https://i.imgur.com/Hx0E5kC.png) + +Open the Device Manager and look for a device that looks like your keyboard. + +![The board with the wrong driver installed, in Device Manager](https://i.imgur.com/L3wvX8f.png) + +Right-click it and hit **Uninstall device**. Make sure to tick **Delete the driver software for this device** first. + +![The Device Uninstall dialog, with the "delete driver" checkbox ticked](https://i.imgur.com/aEs2RuA.png) + +Click **Action -> Scan for hardware changes**. At this point, you should be able to type again. Double check in Zadig that the keyboard device(s) are using the `HidUsb` driver. If so, you're all done, and your board should be functional again! diff --git a/docs/faq_build.md b/docs/faq_build.md index 3fe358eda..f11cb76aa 100644 --- a/docs/faq_build.md +++ b/docs/faq_build.md @@ -75,14 +75,11 @@ Pro Micro (Atmega32u4), make sure to include `CONFIG_USB_ACM=y`. Other devices m ## Unknown Device for DFU Bootloader -Issues encountered when flashing keyboards on Windows are most often due to having the wrong drivers installed for the bootloader. +Issues encountered when flashing keyboards on Windows are most often due to having the wrong drivers installed for the bootloader, or none at all. -Re-running the installation script for MSYS2 may help (eg run `util/qmk_install.sh` from MSYS2/WSL) or reinstalling the QMK Toolbox may fix the issue. Alternatively, you can download and run the [`qmk_driver_installer`](https://github.com/qmk/qmk_driver_installer) package. - -If that doesn't work, then you may need to grab the [Zadig Utility](https://zadig.akeo.ie/). Download this, and run it on the system. Then, you will need to reset your board into bootloader mode. After that, locate the device in question. If the device doesn't show up in the list (or nothing shows up in the list), you may need to enable the `List all devices` option in the `Options` menu. - -From here, you will need to know what type of controller the board is using. You may see it listed in the Device Manager as `ATmega32U4` device (which is an AVR board), or an `STM32` device (Which is an ARM board). For AVR boards, use `libusb-win32` for the driver. For ARM boards, use the `WinUSB` driver. Once the correct driver type has been selected, click on the `Replace Driver` button, unplug your board, plug it back in, and reset it again. +Re-running the QMK installation script (`./util/qmk_install.sh` from the `qmk_firmware` directory in MSYS2 or WSL) or reinstalling the QMK Toolbox may fix the issue. Alternatively, you can download and run the [`qmk_driver_installer`](https://github.com/qmk/qmk_driver_installer) package manually. +If that doesn't work, then you may need to download and run Zadig. See [Bootloader Driver Installation with Zadig](driver_installation_zadig.md) for more detailed information. ## WINAVR is Obsolete It is no longer recommended and may cause some problem. -- cgit v1.2.3-70-g09d2 From 51bcadf38cfccc08b287554ab17e21624abf55b8 Mon Sep 17 00:00:00 2001 From: Joel Challis Date: Sat, 24 Aug 2019 16:35:11 +0100 Subject: Add 'bootloadHID' flash target (#5587) * Add 'bootloadHID' flash target * Prep for flash target * Add :flash support * Align bootloader wait messages Co-Authored-By: Drashna Jaelre * Update template to suggest use of :flash --- docs/flashing.md | 30 ++++++++++++++++ docs/flashing_bootloadhid.md | 70 +++++++++++++++++++++++++++++++++++++ docs/getting_started_make_guide.md | 2 +- docs/newbs_flashing.md | 36 +++++++++++++++++++ quantum/template/ps2avrgb/readme.md | 35 +++---------------- tmk_core/avr.mk | 15 ++++++++ 6 files changed, 157 insertions(+), 31 deletions(-) create mode 100644 docs/flashing_bootloadhid.md (limited to 'docs') diff --git a/docs/flashing.md b/docs/flashing.md index d11dbdf15..b47a5ebf8 100644 --- a/docs/flashing.md +++ b/docs/flashing.md @@ -144,6 +144,36 @@ Flashing sequence: 3. Flash a .hex file 4. Reset the device into application mode (may be done automatically) +## BootloadHID + +BootloadHID is a USB bootloader for AVR microcontrollers. The uploader tool requires no kernel level driver on Windows and can therefore be run without installing any DLLs. + +To ensure compatibility with the bootloadHID bootloader, make sure this block is present your `rules.mk`: + + # Bootloader + # This definition is optional, and if your keyboard supports multiple bootloaders of + # different sizes, comment this out, and the correct address will be loaded + # automatically (+60). See bootloader.mk for all options. + BOOTLOADER = bootloadHID + +Compatible flashers: + +* [HIDBootFlash](http://vusb.wikidot.com/project:hidbootflash) (recommended Windows GUI) +* [bootloadhid Command Line](https://www.obdev.at/products/vusb/bootloadhid.html) / `:BootloadHID` in QMK (recommended command line) + +Flashing sequence: + +1. Enter the bootloader using any of the following methods: + * Tap the `RESET` keycode (may not work on all devices) + * Hold the salt key while plugging the keyboard in (usually documented within keyboard readme) +2. Wait for the OS to detect the device +3. Flash a .hex file +4. Reset the device into application mode (may be done automatically) + +or: + + make ::bootloadHID + ## STM32 All STM32 chips come preloaded with a factory bootloader that cannot be modified nor deleted. Some STM32 chips have bootloaders that do not come with USB programming (e.g. STM32F103) but the process is still the same. diff --git a/docs/flashing_bootloadhid.md b/docs/flashing_bootloadhid.md new file mode 100644 index 000000000..c51d8ce4b --- /dev/null +++ b/docs/flashing_bootloadhid.md @@ -0,0 +1,70 @@ +# BootloadHID Flashing Instructions and Bootloader Information + +ps2avr(GB) boards use an ATmega32A microcontroller and a different bootloader. It is not flashable using the regular QMK methods. + +General flashing sequence: + +1. Enter the bootloader using any of the following methods: + * Tap the `RESET` keycode (may not work on all devices) + * Hold the salt key while plugging the keyboard in (usually documented within keyboard readme) +2. Wait for the OS to detect the device +3. Flash a .hex file +4. Reset the device into application mode (may be done automatically) + +## bootloadHID Flashing Target + +Using the QMK installation script, detailed [here](newbs_getting_started.md), the required bootloadHID tools should be automatically installed. + +To flash via the command line, use the target `:bootloadHID` by executing the following command: + + make ::bootloadHID + +## GUI Flashing + +### Windows +1. Download [HIDBootFlash](http://vusb.wikidot.com/project:hidbootflash). +2. Place your keyboard into reset. +3. Ensure the configured VendorID is `16c0` and ProductID is `05df` +4. Press the `Find Device` button and ensure that your keyboard is found. +5. Press the `Open .hex File` button and locate the `.hex` file you created. +6. Press the `Flash Device` button and wait for the process to complete. + +## Command Line Flashing + +1. Place your keyboard into reset. +2. Flash the board by typing `bootloadHID -r` followed by the path to your `.hex` file. + +### Windows Manual Installation +For MSYS2: +1. Download the BootloadHID firmware package from https://www.obdev.at/downloads/vusb/bootloadHID.2012-12-08.tar.gz. +2. Extract contents using a compatible tool, for example 7-Zip. +3. Add to the MSYS path by copying `commandline/bootloadHID.exe` from the extracted archive to your MSYS2 installation, typically `C:\msys64\usr\bin`. + +For native Windows flashing, the `bootloadHID.exe` can be used outside of the MSYS2 environment. + +### Linux Manual Installation +1. Install libusb development dependency: + ```bash + # This depends on OS - for Debian the following works + sudo apt-get install libusb-dev + ``` +2. Download the BootloadHID firmware package: + ``` + wget https://www.obdev.at/downloads/vusb/bootloadHID.2012-12-08.tar.gz -O - | tar -xz -C /tmp + ``` +3. Build the bootloadHID executable: + ``` + cd /tmp/bootloadHID.2012-12-08/commandline/ + make + sudo cp bootloadHID /usr/local/bin + ``` + +### MacOS Manual Installation +1. Install Homebrew by typing the following: + ``` + /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" + ``` +2. Install the following packages: + ``` + brew install --HEAD https://raw.githubusercontent.com/robertgzr/homebrew-tap/master/bootloadhid.rb + ``` diff --git a/docs/getting_started_make_guide.md b/docs/getting_started_make_guide.md index 4fe3f184d..71e9d33f2 100644 --- a/docs/getting_started_make_guide.md +++ b/docs/getting_started_make_guide.md @@ -14,7 +14,7 @@ The full syntax of the `make` command is `::`, The `` means the following * If no target is given, then it's the same as `all` below * `all` compiles as many keyboard/revision/keymap combinations as specified. For example, `make planck/rev4:default` will generate a single .hex, while `make planck/rev4:all` will generate a hex for every keymap available to the planck. -* `dfu`, `teensy`, `avrdude` or `dfu-util`, compile and upload the firmware to the keyboard. If the compilation fails, then nothing will be uploaded. The programmer to use depends on the keyboard. For most keyboards it's `dfu`, but for ChibiOS keyboards you should use `dfu-util`, and `teensy` for standard Teensys. To find out which command you should use for your keyboard, check the keyboard specific readme. +* `dfu`, `teensy`, `avrdude`, `dfu-util` or `bootloadHID`, compile and upload the firmware to the keyboard. If the compilation fails, then nothing will be uploaded. The programmer to use depends on the keyboard. For most keyboards it's `dfu`, but for ChibiOS keyboards you should use `dfu-util`, and `teensy` for standard Teensys. To find out which command you should use for your keyboard, check the keyboard specific readme. * **Note**: some operating systems need root access for these commands to work, so in that case you need to run for example `sudo make planck/rev4:default:dfu`. * `clean`, cleans the build output folders to make sure that everything is built from scratch. Run this before normal compilation if you have some unexplainable problems. diff --git a/docs/newbs_flashing.md b/docs/newbs_flashing.md index c8a30dba0..3bf582d7f 100644 --- a/docs/newbs_flashing.md +++ b/docs/newbs_flashing.md @@ -248,6 +248,42 @@ Programming..................................................................... Booting ``` +## BootloadHID + +For Bootmapper Client(BMC)/bootloadHID/ATmega32A based boards, when you're ready to compile and flash your firmware, open up your terminal window and run the build command: + + make ::bootloaderHID + +For example, if your keymap is named "xyverz" and you're building a keymap for a jj40, you'll use this command: + + make jj40:xyverz:bootloaderHID + +Once the firmware finishes compiling, it will output something like this: + +``` +Linking: .build/jj40_default.elf [OK] +Creating load file for flashing: .build/jj40_default.hex [OK] +Copying jj40_default.hex to qmk_firmware folder [OK] +Checking file size of jj40_default.hex [OK] + * The firmware size is fine - 21920/28672 (6752 bytes free) +``` + +After it gets to this point, the build script will look for the DFU bootloader every 5 seconds. It will repeat the following until the device is found or you cancel it. + +``` +Error opening HIDBoot device: The specified device was not found +Trying again in 5s. +``` + +Once it does this, you'll want to reset the controller. It should then show output similar to this: + +``` +Page size = 128 (0x80) +Device size = 32768 (0x8000); 30720 bytes remaining +Uploading 22016 (0x5600) bytes starting at 0 (0x0) +0x05580 ... 0x05600 +``` + ## STM32 (ARM) For a majority of ARM boards (including the Proton C, Planck Rev 6, and Preonic Rev 3), when you're ready to compile and flash your firmware, open up your terminal window and run the build command: diff --git a/quantum/template/ps2avrgb/readme.md b/quantum/template/ps2avrgb/readme.md index 1449b278c..9d3ca0006 100644 --- a/quantum/template/ps2avrgb/readme.md +++ b/quantum/template/ps2avrgb/readme.md @@ -12,35 +12,10 @@ Make example for this keyboard (after setting up your build environment): make %KEYBOARD%:default -Flashing - -ps2avr(GB) boards use an atmega32a microcontroller and a different bootloader. It is not flashable using the regular QMK methods. - -**Reset Key:** Hold down the key located at `K00`, commonly programmed as `Esc` while plugging in the keyboard. - -Windows: -1. Download [HIDBootFlash](http://vusb.wikidot.com/project:hidbootflash). -2. Place your keyboard into reset. -3. Press the `Find Device` button and ensure that your keyboard is found. -4. Press the `Open .hex File` button and locate the `.hex` file you created. -5. Press the `Flash Device` button and wait for the process to complete. - -macOS: -1. Install homebrew by typing the following: - ``` - /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" - ``` -2. Install `crosspack-avr`. - ``` - brew cask install crosspack-avr - ``` -3. Install the following packages: - ``` - brew install python3 - pip3 install pyusb - brew install --HEAD https://raw.githubusercontent.com/robertgzr/homebrew-tap/master/bootloadhid.rb - ``` -4. Place your keyboard into reset. -5. Flash the board by typing `bootloadHID -r` followed by the path to your `.hex` file. +Flashing example for this keyboard ([after setting up the bootloadHID flashing environment](flashing_bootloadhid.md)) + + make %KEYBOARD%:default:flash + +**Reset Key**: Hold down the key located at *LOCATION*, commonly programmed as *KEY* while plugging in the keyboard. See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/tmk_core/avr.mk b/tmk_core/avr.mk index e5443418b..bdda14a07 100644 --- a/tmk_core/avr.mk +++ b/tmk_core/avr.mk @@ -246,6 +246,19 @@ endef usbasp: $(BUILD_DIR)/$(TARGET).hex check-size cpfirmware $(call EXEC_USBASP) +BOOTLOADHID_PROGRAMMER ?= bootloadHID + +define EXEC_BOOTLOADHID + # bootloadHid executable has no cross platform detect methods + # so keep running bootloadHid if the output contains "The specified device was not found" + until $(BOOTLOADHID_PROGRAMMER) -r $(BUILD_DIR)/$(TARGET).hex 2>&1 | tee /dev/stderr | grep -v "device was not found"; do\ + echo "Error: Bootloader not found. Trying again in 5s." ;\ + sleep 5 ;\ + done +endef + +bootloadHID: $(BUILD_DIR)/$(TARGET).hex check-size cpfirmware + $(call EXEC_BOOTLOADHID) # Convert hex to bin. bin: $(BUILD_DIR)/$(TARGET).hex @@ -331,6 +344,8 @@ else ifeq (dfu,$(findstring dfu,$(BOOTLOADER))) $(call EXEC_DFU) else ifeq ($(strip $(BOOTLOADER)), USBasp) $(call EXEC_USBASP) +else ifeq ($(strip $(BOOTLOADER)), bootloadHID) + $(call EXEC_BOOTLOADHID) else $(PRINT_OK); $(SILENT) || printf "&(MSG_FLASH_BOOTLOADER)" endif -- cgit v1.2.3-70-g09d2 From f22c5c17b6fe069bec1241262a1c27eb89d3d3af Mon Sep 17 00:00:00 2001 From: skullydazed Date: Sun, 25 Aug 2019 11:58:24 -0700 Subject: Refactor `qmk compile-json` to `qmk compile` (#6592) --- bin/qmk | 2 +- docs/cli.md | 17 +++++++---- lib/python/qmk/cli/compile.py | 53 ++++++++++++++++++++++++++++++++++ lib/python/qmk/cli/compile/__init__.py | 0 lib/python/qmk/cli/compile/json.py | 44 ---------------------------- 5 files changed, 66 insertions(+), 50 deletions(-) create mode 100755 lib/python/qmk/cli/compile.py delete mode 100644 lib/python/qmk/cli/compile/__init__.py delete mode 100755 lib/python/qmk/cli/compile/json.py (limited to 'docs') diff --git a/bin/qmk b/bin/qmk index dfd31e200..d4b584b10 100755 --- a/bin/qmk +++ b/bin/qmk @@ -38,7 +38,7 @@ with open('requirements.txt', 'r') as fd: # Figure out our version command = ['git', 'describe', '--abbrev=6', '--dirty', '--always', '--tags'] -result = subprocess.run(command, universal_newlines=True, capture_output=True) +result = subprocess.run(command, universal_newlines=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE) if result.returncode == 0: os.environ['QMK_VERSION'] = 'QMK ' + result.stdout.strip() diff --git a/docs/cli.md b/docs/cli.md index 0365f2c9c..1843f42cd 100644 --- a/docs/cli.md +++ b/docs/cli.md @@ -6,7 +6,8 @@ This page describes how to setup and use the QMK CLI. The QMK CLI makes building and working with QMK keyboards easier. We have provided a number of commands to help you work with QMK: -* `qmk compile-json` +* `qmk compile` +* `qmk doctor` # Setup @@ -20,12 +21,18 @@ You may want to add this to your `.profile`, `.bash_profile`, `.zsh_profile`, or # Commands -## `qmk compile-json` +## `qmk compile` -This command allows you to compile JSON files you have downloaded from . +This command allows you to compile firmware from any directory. You can compile JSON exports from or compile keymaps in the repo. -**Usage**: +**Usage for Configurator Exports**: ``` -qmk compile-json mine.json +qmk compile +``` + +**Usage for Keymaps**: + +``` +qmk compile -kb -km ``` diff --git a/lib/python/qmk/cli/compile.py b/lib/python/qmk/cli/compile.py new file mode 100755 index 000000000..7e14ad8fb --- /dev/null +++ b/lib/python/qmk/cli/compile.py @@ -0,0 +1,53 @@ +"""Compile a QMK Firmware. + +You can compile a keymap already in the repo or using a QMK Configurator export. +""" +import json +import os +import sys +import subprocess +from argparse import FileType + +from milc import cli + +import qmk.keymap +import qmk.path + + +@cli.argument('filename', nargs='?', type=FileType('r'), help='The configurator export to compile') +@cli.argument('-kb', '--keyboard', help='The keyboard to build a firmware for. Ignored when a configurator export is supplied.') +@cli.argument('-km', '--keymap', help='The keymap to build a firmware for. Ignored when a configurator export is supplied.') +@cli.entrypoint('Compile a QMK Firmware.') +def main(cli): + """Compile a QMK Firmware. + + If a Configurator export is supplied this command will create a new keymap, overwriting an existing keymap if one exists. + + FIXME(skullydazed): add code to check and warn if the keymap already exists + + If --keyboard and --keymap are provided this command will build a firmware based on that. + + """ + if cli.args.filename: + # Parse the configurator json + user_keymap = json.load(cli.args.filename) + + # Generate the keymap + keymap_path = qmk.path.keymap(user_keymap['keyboard']) + cli.log.info('Creating {fg_cyan}%s{style_reset_all} keymap in {fg_cyan}%s', user_keymap['keymap'], keymap_path) + qmk.keymap.write(user_keymap['keyboard'], user_keymap['keymap'], user_keymap['layout'], user_keymap['layers']) + cli.log.info('Wrote keymap to {fg_cyan}%s/%s/keymap.c', keymap_path, user_keymap['keymap']) + + # Compile the keymap + command = ['make', ':'.join((user_keymap['keyboard'], user_keymap['keymap']))] + + elif cli.config.general.keyboard and cli.config.general.keymap: + # Generate the make command for a specific keyboard/keymap. + command = ['make', ':'.join((cli.config.general.keyboard, cli.config.general.keymap))] + + else: + cli.log.error('You must supply a configurator export or both `--keyboard` and `--keymap`.') + return False + + cli.log.info('Compiling keymap with {fg_cyan}%s\n\n', ' '.join(command)) + subprocess.run(command) diff --git a/lib/python/qmk/cli/compile/__init__.py b/lib/python/qmk/cli/compile/__init__.py deleted file mode 100644 index e69de29bb..000000000 diff --git a/lib/python/qmk/cli/compile/json.py b/lib/python/qmk/cli/compile/json.py deleted file mode 100755 index 89c16b206..000000000 --- a/lib/python/qmk/cli/compile/json.py +++ /dev/null @@ -1,44 +0,0 @@ -"""Create a keymap directory from a configurator export. -""" -import json -import os -import sys -import subprocess - -from milc import cli - -import qmk.keymap -import qmk.path - - -@cli.argument('filename', help='Configurator JSON export') -@cli.entrypoint('Compile a QMK Configurator export.') -def main(cli): - """Compile a QMK Configurator export. - - This command creates a new keymap from a configurator export, overwriting an existing keymap if one exists. - - FIXME(skullydazed): add code to check and warn if the keymap already exists - """ - # Error checking - if cli.args.filename == ('-'): - cli.log.error('Reading from STDIN is not (yet) supported.') - exit(1) - if not os.path.exists(qmk.path.normpath(cli.args.filename)): - cli.log.error('JSON file does not exist!') - exit(1) - - # Parse the configurator json - with open(qmk.path.normpath(cli.args.filename), 'r') as fd: - user_keymap = json.load(fd) - - # Generate the keymap - keymap_path = qmk.path.keymap(user_keymap['keyboard']) - cli.log.info('Creating {fg_cyan}%s{style_reset_all} keymap in {fg_cyan}%s', user_keymap['keymap'], keymap_path) - qmk.keymap.write(user_keymap['keyboard'], user_keymap['keymap'], user_keymap['layout'], user_keymap['layers']) - cli.log.info('Wrote keymap to {fg_cyan}%s/%s/keymap.c', keymap_path, user_keymap['keymap']) - - # Compile the keymap - command = ['make', ':'.join((user_keymap['keyboard'], user_keymap['keymap']))] - cli.log.info('Compiling keymap with {fg_cyan}%s\n\n', ' '.join(command)) - subprocess.run(command) -- cgit v1.2.3-70-g09d2 From 957070a6b5886719557b6880afa7e3716548c18a Mon Sep 17 00:00:00 2001 From: XScorpion2 Date: Sun, 25 Aug 2019 14:37:55 -0500 Subject: Added OLED Display autoscroll during periods of OLED data inactivity (#6546) * Added OLED Display autoscroll during periods of OLED data inactivity. * Fixing compile errors * Feedback from review --- docs/feature_oled_driver.md | 24 +++++++++-------- drivers/oled/oled_driver.c | 40 ++++++++++++++++++++++++----- drivers/oled/oled_driver.h | 8 ++++++ tmk_core/common/timer.h | 11 ++++++++ tmk_core/protocol/usb_hid/override_wiring.c | 7 +++-- users/xulkal/custom_tap_dance.c | 1 - users/xulkal/layouts.h | 2 +- users/xulkal/process_records.c | 3 +-- users/xulkal/rules.mk | 3 +-- users/xulkal/timer_utils.c | 12 --------- users/xulkal/timer_utils.h | 6 ----- users/xulkal/xulkal.h | 1 - 12 files changed, 72 insertions(+), 46 deletions(-) delete mode 100644 users/xulkal/timer_utils.c delete mode 100644 users/xulkal/timer_utils.h (limited to 'docs') diff --git a/docs/feature_oled_driver.md b/docs/feature_oled_driver.md index 9d19beedb..623f1816a 100644 --- a/docs/feature_oled_driver.md +++ b/docs/feature_oled_driver.md @@ -96,17 +96,19 @@ void oled_task_user(void) { ## Basic Configuration -| Define | Default | Description | -|------------------------|-------------------|----------------------------------------------------------------------------------------------------------------------------| -| `OLED_DISPLAY_ADDRESS` | `0x3C` | The i2c address of the OLED Display | -| `OLED_FONT_H` | `"glcdfont.c"` | The font code file to use for custom fonts | -| `OLED_FONT_START` | `0` | The starting characer index for custom fonts | -| `OLED_FONT_END` | `224` | The ending characer index for custom fonts | -| `OLED_FONT_WIDTH` | `6` | The font width | -| `OLED_FONT_HEIGHT` | `8` | The font height (untested) | -| `OLED_DISABLE_TIMEOUT` | *Not defined* | Disables the built in OLED timeout feature. Useful when implementing custom timeout rules. | -| `OLED_IC` | `OLED_IC_SSD1306` | Set to `OLED_IC_SH1106` if you're using the SH1106 OLED controller. | -| `OLED_COLUMN_OFFSET` | `0` | (SH1106 only.) Shift output to the right this many pixels.
Useful for 128x64 displays centered on a 132x64 SH1106 IC. | +| Define | Default | Description | +|----------------------------|-------------------|----------------------------------------------------------------------------------------------------------------------------| +| `OLED_DISPLAY_ADDRESS` | `0x3C` | The i2c address of the OLED Display | +| `OLED_FONT_H` | `"glcdfont.c"` | The font code file to use for custom fonts | +| `OLED_FONT_START` | `0` | The starting characer index for custom fonts | +| `OLED_FONT_END` | `224` | The ending characer index for custom fonts | +| `OLED_FONT_WIDTH` | `6` | The font width | +| `OLED_FONT_HEIGHT` | `8` | The font height (untested) | +| `OLED_TIMEOUT` | `60000` | Turns off the OLED screen after 60000ms of keyboard inactivity. Helps reduce OLED Burn-in. Set to 0 to disable. | +| `OLED_SCROLL_TIMEOUT` | `0` | Scrolls the OLED screen after 0ms of OLED inactivity. Helps reduce OLED Burn-in. Set to 0 to disable. | +| `OLED_SCROLL_TIMEOUT_RIGHT`| *Not defined* | Scroll timeout direction is right when defined, left when undefined. | +| `OLED_IC` | `OLED_IC_SSD1306` | Set to `OLED_IC_SH1106` if you're using the SH1106 OLED controller. | +| `OLED_COLUMN_OFFSET` | `0` | (SH1106 only.) Shift output to the right this many pixels.
Useful for 128x64 displays centered on a 132x64 SH1106 IC. | ## 128x64 & Custom sized OLED Displays diff --git a/drivers/oled/oled_driver.c b/drivers/oled/oled_driver.c index 2b3dd7ff2..3dad72add 100644 --- a/drivers/oled/oled_driver.c +++ b/drivers/oled/oled_driver.c @@ -114,8 +114,11 @@ bool oled_active = false; bool oled_scrolling = false; uint8_t oled_rotation = 0; uint8_t oled_rotation_width = 0; -#if !defined(OLED_DISABLE_TIMEOUT) - uint16_t oled_last_activity; +#if OLED_TIMEOUT > 0 + uint32_t oled_timeout; +#endif +#if OLED_SCROLL_TIMEOUT > 0 + uint32_t oled_scroll_timeout; #endif // Internal variables to reduce math instructions @@ -209,6 +212,13 @@ bool oled_init(uint8_t rotation) { return false; } +#if OLED_TIMEOUT > 0 + oled_timeout = timer_read32() + OLED_TIMEOUT; +#endif +#if OLED_SCROLL_TIMEOUT > 0 + oled_scroll_timeout = timer_read32() + OLED_SCROLL_TIMEOUT; +#endif + oled_clear(); oled_initialized = true; oled_active = true; @@ -457,8 +467,8 @@ void oled_write_ln_P(const char *data, bool invert) { #endif // defined(__AVR__) bool oled_on(void) { -#if !defined(OLED_DISABLE_TIMEOUT) - oled_last_activity = timer_read(); +#if OLED_TIMEOUT > 0 + oled_timeout = timer_read32() + OLED_TIMEOUT; #endif static const uint8_t PROGMEM display_on[] = { I2C_CMD, DISPLAY_ON }; @@ -522,6 +532,7 @@ bool oled_scroll_off(void) { return oled_scrolling; } oled_scrolling = false; + oled_dirty = -1; } return !oled_scrolling; } @@ -549,15 +560,32 @@ void oled_task(void) { oled_task_user(); +#if OLED_SCROLL_TIMEOUT > 0 + if (oled_dirty && oled_scrolling) { + oled_scroll_timeout = timer_read32() + OLED_SCROLL_TIMEOUT; + oled_scroll_off(); + } +#endif + // Smart render system, no need to check for dirty oled_render(); // Display timeout check -#if !defined(OLED_DISABLE_TIMEOUT) - if (oled_active && timer_elapsed(oled_last_activity) > OLED_TIMEOUT) { +#if OLED_TIMEOUT > 0 + if (oled_active && timer_expired32(timer_read32(), oled_timeout)) { oled_off(); } #endif + +#if OLED_SCROLL_TIMEOUT > 0 + if (!oled_scrolling && timer_expired32(timer_read32(), oled_scroll_timeout)) { +#ifdef OLED_SCROLL_TIMEOUT_RIGHT + oled_scroll_right(); +#else + oled_scroll_left(); +#endif + } +#endif } __attribute__((weak)) diff --git a/drivers/oled/oled_driver.h b/drivers/oled/oled_driver.h index 03dda2e64..4f6254c98 100644 --- a/drivers/oled/oled_driver.h +++ b/drivers/oled/oled_driver.h @@ -138,6 +138,14 @@ along with this program. If not, see . #define OLED_FONT_HEIGHT 8 #endif +#if !defined(OLED_TIMEOUT) + #if defined(OLED_DISABLE_TIMEOUT) + #define OLED_TIMEOUT 0 + #else + #define OLED_TIMEOUT 60000 + #endif +#endif + // OLED Rotation enum values are flags typedef enum { OLED_ROTATION_0 = 0, diff --git a/tmk_core/common/timer.h b/tmk_core/common/timer.h index fe23f87ae..a8dd85663 100644 --- a/tmk_core/common/timer.h +++ b/tmk_core/common/timer.h @@ -19,6 +19,7 @@ along with this program. If not, see . #define TIMER_H 1 #include +#include #if defined(__AVR__) #include "avr/timer_avr.h" @@ -46,6 +47,16 @@ uint32_t timer_read32(void); uint16_t timer_elapsed(uint16_t last); uint32_t timer_elapsed32(uint32_t last); +// Utility functions to check if a future time has expired & autmatically handle time wrapping if checked / reset frequently (half of max value) +inline bool timer_expired(uint16_t current, uint16_t last) +{ + return current - last < 0x8000; +} + +inline bool timer_expired32(uint32_t current, uint32_t future) { + return current - future < 0x80000000; +} + #ifdef __cplusplus } #endif diff --git a/tmk_core/protocol/usb_hid/override_wiring.c b/tmk_core/protocol/usb_hid/override_wiring.c index 1e9a94ce2..52f03c300 100644 --- a/tmk_core/protocol/usb_hid/override_wiring.c +++ b/tmk_core/protocol/usb_hid/override_wiring.c @@ -4,14 +4,13 @@ #define __DELAY_BACKWARD_COMPATIBLE__ #include #include "common/timer.h" -#include "Arduino.h" -unsigned long millis() +unsigned long millis(void) { return timer_read32(); } -unsigned long micros() +unsigned long micros(void) { return timer_read32() * 1000UL; } @@ -23,7 +22,7 @@ void delayMicroseconds(unsigned int us) { _delay_us(us); } -void init() +void init(void) { timer_init(); } diff --git a/users/xulkal/custom_tap_dance.c b/users/xulkal/custom_tap_dance.c index e0f90ea11..2c5d145f1 100644 --- a/users/xulkal/custom_tap_dance.c +++ b/users/xulkal/custom_tap_dance.c @@ -1,6 +1,5 @@ #include "custom_tap_dance.h" #include "custom_keycodes.h" -#include "timer_utils.h" #ifdef TAP_DANCE_ENABLE diff --git a/users/xulkal/layouts.h b/users/xulkal/layouts.h index 89bdfb60d..d4b708418 100644 --- a/users/xulkal/layouts.h +++ b/users/xulkal/layouts.h @@ -18,7 +18,7 @@ #define _________________QWERTY_L2_________________ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T #define _________________QWERTY_L3_________________ RIS_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G #define _________________QWERTY_L4_________________ KC_LSPO, KC_Z, KC_X, KC_C, KC_V, KC_B -#define _________________QWERTY_L5_________________ KC_LCPO, KC_LGUI, LOWER, RAISE, KC_LALT, KC_SPC +#define _________________QWERTY_L5_________________ KC_LCPO, KC_LGUI, KC_LALT, LOWER, RAISE, KC_SPC #define _________________QWERTY_R1_________________ KC_6, KC_7, KC_8, KC_9, KC_0, TD_BSPC #define _________________QWERTY_R2_________________ KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS diff --git a/users/xulkal/process_records.c b/users/xulkal/process_records.c index 245d4955f..9c0274823 100644 --- a/users/xulkal/process_records.c +++ b/users/xulkal/process_records.c @@ -1,6 +1,5 @@ #include "process_records.h" #include "custom_keycodes.h" -#include "timer_utils.h" #ifdef RGB_ENABLE #include "custom_rgb.h" @@ -34,7 +33,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { if (record->event.pressed) reset_timer = timer_read() + 500; - else if (timer_expired(reset_timer)) + else if (timer_expired(timer_read(), reset_timer)) reset_keyboard(); } return false; diff --git a/users/xulkal/rules.mk b/users/xulkal/rules.mk index c3834ff5f..8f8365ea7 100644 --- a/users/xulkal/rules.mk +++ b/users/xulkal/rules.mk @@ -1,7 +1,6 @@ SRC += xulkal.c \ process_records.c \ - custom_tap_dance.c \ - timer_utils.c + custom_tap_dance.c # Some usual defaults MOUSEKEY_ENABLE = no # Mouse keys (+4700) diff --git a/users/xulkal/timer_utils.c b/users/xulkal/timer_utils.c deleted file mode 100644 index 5f5d9a1eb..000000000 --- a/users/xulkal/timer_utils.c +++ /dev/null @@ -1,12 +0,0 @@ -#include "timer_utils.h" - -bool timer_expired(uint16_t last) -{ - return timer_read() - last < 0x8000; -} - -bool timer_expired32(uint32_t last) -{ - return timer_read32() - last < 0x80000000; -} - diff --git a/users/xulkal/timer_utils.h b/users/xulkal/timer_utils.h deleted file mode 100644 index 7e2a0b74d..000000000 --- a/users/xulkal/timer_utils.h +++ /dev/null @@ -1,6 +0,0 @@ -#pragma once -#include "timer.h" -#include - -bool timer_expired(uint16_t last); -bool timer_expired32(uint32_t last); diff --git a/users/xulkal/xulkal.h b/users/xulkal/xulkal.h index 9bc83b7de..32df8df0c 100644 --- a/users/xulkal/xulkal.h +++ b/users/xulkal/xulkal.h @@ -2,6 +2,5 @@ #include "process_records.h" #include "layouts.h" -#include "timer_utils.h" #include "custom_keycodes.h" #include "custom_tap_dance.h" -- cgit v1.2.3-70-g09d2 From ac1672689599ff7180b3baaaa9a1356e0e23021e Mon Sep 17 00:00:00 2001 From: fauxpark Date: Wed, 10 Jul 2019 05:34:17 +1000 Subject: LUFA USB descriptor cleanup (#4871) * Fix indentation * Fix braces * Expand descriptor headers * Align descriptor elements * Nicer formatting * Tidy up preprocessor statements * Remove VERSION_BCD redefine - LUFA_VERSION_INTEGER is currently 0x170418 * Tidy up comments * Tweak ordering of HID report elements (no functional changes) * We don't need all of these newlines * Move default USB_MAX_POWER_CONSUMPTION closer to where it makes sense * Ask nicely * Add some more comments * Change indentation back to 4 spaces * Add changelog entry --- docs/ChangeLog/20190830/PR4871.md | 4 + tmk_core/protocol/usb_descriptor.c | 1403 ++++++++++++++++++------------------ tmk_core/protocol/usb_descriptor.h | 347 ++++----- 3 files changed, 879 insertions(+), 875 deletions(-) create mode 100644 docs/ChangeLog/20190830/PR4871.md (limited to 'docs') diff --git a/docs/ChangeLog/20190830/PR4871.md b/docs/ChangeLog/20190830/PR4871.md new file mode 100644 index 000000000..e4ea171d7 --- /dev/null +++ b/docs/ChangeLog/20190830/PR4871.md @@ -0,0 +1,4 @@ +* LUFA USB descriptor cleanup + * Some code cleanups related to the USB HID descriptors on AVR keyboards, to make them easier to read and understand + * More information: see https://github.com/qmk/qmk_firmware/pull/4871 + * No behaviour changes anticipated and no keymaps modified diff --git a/tmk_core/protocol/usb_descriptor.c b/tmk_core/protocol/usb_descriptor.c index 589ad23cd..fb280f947 100644 --- a/tmk_core/protocol/usb_descriptor.c +++ b/tmk_core/protocol/usb_descriptor.c @@ -6,238 +6,242 @@ */ /* - LUFA Library - Copyright (C) Dean Camera, 2012. + LUFA Library + Copyright (C) Dean Camera, 2012. - dean [at] fourwalledcubicle [dot] com - www.lufa-lib.org + dean [at] fourwalledcubicle [dot] com + www.lufa-lib.org */ /* - Copyright 2012 Dean Camera (dean [at] fourwalledcubicle [dot] com) - Copyright 2010 Denver Gingerich (denver [at] ossguy [dot] com) - - Permission to use, copy, modify, distribute, and sell this - software and its documentation for any purpose is hereby granted - without fee, provided that the above copyright notice appear in - all copies and that both that the copyright notice and this - permission notice and warranty disclaimer appear in supporting - documentation, and that the name of the author not be used in - advertising or publicity pertaining to distribution of the - software without specific, written prior permission. - - The author disclaim all warranties with regard to this - software, including all implied warranties of merchantability - and fitness. In no event shall the author be liable for any - special, indirect or consequential damages or any damages - whatsoever resulting from loss of use, data or profits, whether - in an action of contract, negligence or other tortious action, - arising out of or in connection with the use or performance of - this software. + Copyright 2012 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2010 Denver Gingerich (denver [at] ossguy [dot] com) + + Permission to use, copy, modify, distribute, and sell this + software and its documentation for any purpose is hereby granted + without fee, provided that the above copyright notice appear in + all copies and that both that the copyright notice and this + permission notice and warranty disclaimer appear in supporting + documentation, and that the name of the author not be used in + advertising or publicity pertaining to distribution of the + software without specific, written prior permission. + + The author disclaim all warranties with regard to this + software, including all implied warranties of merchantability + and fitness. In no event shall the author be liable for any + special, indirect or consequential damages or any damages + whatsoever resulting from loss of use, data or profits, whether + in an action of contract, negligence or other tortious action, + arising out of or in connection with the use or performance of + this software. */ #include "util.h" #include "report.h" #include "usb_descriptor.h" -#ifndef USB_MAX_POWER_CONSUMPTION -#define USB_MAX_POWER_CONSUMPTION 500 -#endif - -/******************************************************************************* - * HID Report Descriptors - ******************************************************************************/ +/* + * HID report descriptors + */ #ifdef KEYBOARD_SHARED_EP const USB_Descriptor_HIDReport_Datatype_t PROGMEM SharedReport[] = { -#define SHARED_REPORT_STARTED + #define SHARED_REPORT_STARTED #else const USB_Descriptor_HIDReport_Datatype_t PROGMEM KeyboardReport[] = { #endif - HID_RI_USAGE_PAGE(8, 0x01), /* Generic Desktop */ - HID_RI_USAGE(8, 0x06), /* Keyboard */ - HID_RI_COLLECTION(8, 0x01), /* Application */ -# ifdef KEYBOARD_SHARED_EP + HID_RI_USAGE_PAGE(8, 0x01), // Generic Desktop + HID_RI_USAGE(8, 0x06), // Keyboard + HID_RI_COLLECTION(8, 0x01), // Application +#ifdef KEYBOARD_SHARED_EP HID_RI_REPORT_ID(8, REPORT_ID_KEYBOARD), -# endif - HID_RI_USAGE_PAGE(8, 0x07), /* Key Codes */ - HID_RI_USAGE_MINIMUM(8, 0xE0), /* Keyboard Left Control */ - HID_RI_USAGE_MAXIMUM(8, 0xE7), /* Keyboard Right GUI */ +#endif + // Modifiers (8 bits) + HID_RI_USAGE_PAGE(8, 0x07), // Keyboard/Keypad + HID_RI_USAGE_MINIMUM(8, 0xE0), // Keyboard Left Control + HID_RI_USAGE_MAXIMUM(8, 0xE7), // Keyboard Right GUI HID_RI_LOGICAL_MINIMUM(8, 0x00), HID_RI_LOGICAL_MAXIMUM(8, 0x01), HID_RI_REPORT_COUNT(8, 0x08), HID_RI_REPORT_SIZE(8, 0x01), HID_RI_INPUT(8, HID_IOF_DATA | HID_IOF_VARIABLE | HID_IOF_ABSOLUTE), - + // Reserved (1 byte) HID_RI_REPORT_COUNT(8, 0x01), HID_RI_REPORT_SIZE(8, 0x08), - HID_RI_INPUT(8, HID_IOF_CONSTANT), /* reserved */ + HID_RI_INPUT(8, HID_IOF_CONSTANT), + // Keycodes (6 bytes) + HID_RI_USAGE_PAGE(8, 0x07), // Keyboard/Keypad + HID_RI_USAGE_MINIMUM(8, 0x00), + HID_RI_USAGE_MAXIMUM(8, 0xFF), + HID_RI_LOGICAL_MINIMUM(8, 0x00), + HID_RI_LOGICAL_MAXIMUM(16, 0x00FF), + HID_RI_REPORT_COUNT(8, 0x06), + HID_RI_REPORT_SIZE(8, 0x08), + HID_RI_INPUT(8, HID_IOF_DATA | HID_IOF_ARRAY | HID_IOF_ABSOLUTE), - HID_RI_USAGE_PAGE(8, 0x08), /* LEDs */ - HID_RI_USAGE_MINIMUM(8, 0x01), /* Num Lock */ - HID_RI_USAGE_MAXIMUM(8, 0x05), /* Kana */ + // Status LEDs (5 bits) + HID_RI_USAGE_PAGE(8, 0x08), // LED + HID_RI_USAGE_MINIMUM(8, 0x01), // Num Lock + HID_RI_USAGE_MAXIMUM(8, 0x05), // Kana HID_RI_REPORT_COUNT(8, 0x05), HID_RI_REPORT_SIZE(8, 0x01), HID_RI_OUTPUT(8, HID_IOF_DATA | HID_IOF_VARIABLE | HID_IOF_ABSOLUTE | HID_IOF_NON_VOLATILE), + // LED padding (3 bits) HID_RI_REPORT_COUNT(8, 0x01), HID_RI_REPORT_SIZE(8, 0x03), HID_RI_OUTPUT(8, HID_IOF_CONSTANT), - - HID_RI_USAGE_PAGE(8, 0x07), /* Keyboard */ - HID_RI_USAGE_MINIMUM(8, 0x00), /* Reserved (no event indicated) */ - HID_RI_USAGE_MAXIMUM(8, 0xFF), /* Keyboard Application */ - HID_RI_LOGICAL_MINIMUM(8, 0x00), - HID_RI_LOGICAL_MAXIMUM(16, 0x00FF), - HID_RI_REPORT_COUNT(8, 0x06), - HID_RI_REPORT_SIZE(8, 0x08), - HID_RI_INPUT(8, HID_IOF_DATA | HID_IOF_ARRAY | HID_IOF_ABSOLUTE), HID_RI_END_COLLECTION(0), - #ifndef KEYBOARD_SHARED_EP }; #endif -#if defined(MOUSE_ENABLE) - -# if !defined(MOUSE_SHARED_EP) +#ifdef MOUSE_ENABLE + #ifndef MOUSE_SHARED_EP const USB_Descriptor_HIDReport_Datatype_t PROGMEM MouseReport[] = { -# elif !defined(SHARED_REPORT_STARTED) + #elif !defined(SHARED_REPORT_STARTED) const USB_Descriptor_HIDReport_Datatype_t PROGMEM SharedReport[] = { -#define SHARED_REPORT_STARTED -# endif - HID_RI_USAGE_PAGE(8, 0x01), /* Generic Desktop */ - HID_RI_USAGE(8, 0x02), /* Mouse */ - HID_RI_COLLECTION(8, 0x01), /* Application */ -# ifdef MOUSE_SHARED_EP + #define SHARED_REPORT_STARTED + #endif + HID_RI_USAGE_PAGE(8, 0x01), // Generic Desktop + HID_RI_USAGE(8, 0x02), // Mouse + HID_RI_COLLECTION(8, 0x01), // Application + #ifdef MOUSE_SHARED_EP HID_RI_REPORT_ID(8, REPORT_ID_MOUSE), -# endif - HID_RI_USAGE(8, 0x01), /* Pointer */ - HID_RI_COLLECTION(8, 0x00), /* Physical */ - - HID_RI_USAGE_PAGE(8, 0x09), /* Button */ - HID_RI_USAGE_MINIMUM(8, 0x01), /* Button 1 */ - HID_RI_USAGE_MAXIMUM(8, 0x05), /* Button 5 */ + #endif + HID_RI_USAGE(8, 0x01), // Pointer + HID_RI_COLLECTION(8, 0x00), // Physical + // Buttons (5 bits) + HID_RI_USAGE_PAGE(8, 0x09), // Button + HID_RI_USAGE_MINIMUM(8, 0x01), // Button 1 + HID_RI_USAGE_MAXIMUM(8, 0x05), // Button 5 HID_RI_LOGICAL_MINIMUM(8, 0x00), HID_RI_LOGICAL_MAXIMUM(8, 0x01), HID_RI_REPORT_COUNT(8, 0x05), HID_RI_REPORT_SIZE(8, 0x01), HID_RI_INPUT(8, HID_IOF_DATA | HID_IOF_VARIABLE | HID_IOF_ABSOLUTE), + // Button padding (3 bits) HID_RI_REPORT_COUNT(8, 0x01), HID_RI_REPORT_SIZE(8, 0x03), HID_RI_INPUT(8, HID_IOF_CONSTANT), - HID_RI_USAGE_PAGE(8, 0x01), /* Generic Desktop */ - HID_RI_USAGE(8, 0x30), /* Usage X */ - HID_RI_USAGE(8, 0x31), /* Usage Y */ + // X/Y position (2 bytes) + HID_RI_USAGE_PAGE(8, 0x01), // Generic Desktop + HID_RI_USAGE(8, 0x30), // X + HID_RI_USAGE(8, 0x31), // Y HID_RI_LOGICAL_MINIMUM(8, -127), HID_RI_LOGICAL_MAXIMUM(8, 127), HID_RI_REPORT_COUNT(8, 0x02), HID_RI_REPORT_SIZE(8, 0x08), HID_RI_INPUT(8, HID_IOF_DATA | HID_IOF_VARIABLE | HID_IOF_RELATIVE), - HID_RI_USAGE(8, 0x38), /* Wheel */ + // Vertical wheel (1 byte) + HID_RI_USAGE(8, 0x38), // Wheel HID_RI_LOGICAL_MINIMUM(8, -127), HID_RI_LOGICAL_MAXIMUM(8, 127), HID_RI_REPORT_COUNT(8, 0x01), HID_RI_REPORT_SIZE(8, 0x08), HID_RI_INPUT(8, HID_IOF_DATA | HID_IOF_VARIABLE | HID_IOF_RELATIVE), - - HID_RI_USAGE_PAGE(8, 0x0C), /* Consumer */ - HID_RI_USAGE(16, 0x0238), /* AC Pan (Horizontal wheel) */ + // Horizontal wheel (1 byte) + HID_RI_USAGE_PAGE(8, 0x0C), // Consumer + HID_RI_USAGE(16, 0x0238), // AC Pan HID_RI_LOGICAL_MINIMUM(8, -127), HID_RI_LOGICAL_MAXIMUM(8, 127), HID_RI_REPORT_COUNT(8, 0x01), HID_RI_REPORT_SIZE(8, 0x08), HID_RI_INPUT(8, HID_IOF_DATA | HID_IOF_VARIABLE | HID_IOF_RELATIVE), - HID_RI_END_COLLECTION(0), HID_RI_END_COLLECTION(0), -# ifndef MOUSE_SHARED_EP + #ifndef MOUSE_SHARED_EP }; -# endif + #endif #endif #if defined(SHARED_EP_ENABLE) && !defined(SHARED_REPORT_STARTED) const USB_Descriptor_HIDReport_Datatype_t PROGMEM SharedReport[] = { #endif -# ifdef EXTRAKEY_ENABLE - HID_RI_USAGE_PAGE(8, 0x01), /* Generic Desktop */ - HID_RI_USAGE(8, 0x80), /* System Control */ - HID_RI_COLLECTION(8, 0x01), /* Application */ + +#ifdef EXTRAKEY_ENABLE + HID_RI_USAGE_PAGE(8, 0x01), // Generic Desktop + HID_RI_USAGE(8, 0x80), // System Control + HID_RI_COLLECTION(8, 0x01), // Application HID_RI_REPORT_ID(8, REPORT_ID_SYSTEM), + HID_RI_USAGE_MINIMUM(16, 0x0081), // System Power Down + HID_RI_USAGE_MAXIMUM(16, 0x0083), // System Wake Up HID_RI_LOGICAL_MINIMUM(16, 0x0001), HID_RI_LOGICAL_MAXIMUM(16, 0x0003), - HID_RI_USAGE_MINIMUM(16, 0x0081), /* System Power Down */ - HID_RI_USAGE_MAXIMUM(16, 0x0083), /* System Wake Up */ - HID_RI_REPORT_SIZE(8, 16), HID_RI_REPORT_COUNT(8, 1), + HID_RI_REPORT_SIZE(8, 16), HID_RI_INPUT(8, HID_IOF_DATA | HID_IOF_ARRAY | HID_IOF_ABSOLUTE), HID_RI_END_COLLECTION(0), - HID_RI_USAGE_PAGE(8, 0x0C), /* Consumer */ - HID_RI_USAGE(8, 0x01), /* Consumer Control */ - HID_RI_COLLECTION(8, 0x01), /* Application */ + HID_RI_USAGE_PAGE(8, 0x0C), // Consumer + HID_RI_USAGE(8, 0x01), // Consumer Control + HID_RI_COLLECTION(8, 0x01), // Application HID_RI_REPORT_ID(8, REPORT_ID_CONSUMER), + HID_RI_USAGE_MINIMUM(16, 0x0001), // Consumer Control + HID_RI_USAGE_MAXIMUM(16, 0x029C), // AC Distribute Vertically HID_RI_LOGICAL_MINIMUM(16, 0x0001), HID_RI_LOGICAL_MAXIMUM(16, 0x029C), - HID_RI_USAGE_MINIMUM(16, 0x0001), /* +10 */ - HID_RI_USAGE_MAXIMUM(16, 0x029C), /* AC Distribute Vertically */ - HID_RI_REPORT_SIZE(8, 16), HID_RI_REPORT_COUNT(8, 1), + HID_RI_REPORT_SIZE(8, 16), HID_RI_INPUT(8, HID_IOF_DATA | HID_IOF_ARRAY | HID_IOF_ABSOLUTE), HID_RI_END_COLLECTION(0), -# endif +#endif -# ifdef NKRO_ENABLE - HID_RI_USAGE_PAGE(8, 0x01), /* Generic Desktop */ - HID_RI_USAGE(8, 0x06), /* Keyboard */ - HID_RI_COLLECTION(8, 0x01), /* Application */ +#ifdef NKRO_ENABLE + HID_RI_USAGE_PAGE(8, 0x01), // Generic Desktop + HID_RI_USAGE(8, 0x06), // Keyboard + HID_RI_COLLECTION(8, 0x01), // Application HID_RI_REPORT_ID(8, REPORT_ID_NKRO), - HID_RI_USAGE_PAGE(8, 0x07), /* Key Codes */ - HID_RI_USAGE_MINIMUM(8, 0xE0), /* Keyboard Left Control */ - HID_RI_USAGE_MAXIMUM(8, 0xE7), /* Keyboard Right GUI */ + // Modifiers (8 bits) + HID_RI_USAGE_PAGE(8, 0x07), // Keyboard/Keypad + HID_RI_USAGE_MINIMUM(8, 0xE0), // Keyboard Left Control + HID_RI_USAGE_MAXIMUM(8, 0xE7), // Keyboard Right GUI HID_RI_LOGICAL_MINIMUM(8, 0x00), HID_RI_LOGICAL_MAXIMUM(8, 0x01), HID_RI_REPORT_COUNT(8, 0x08), HID_RI_REPORT_SIZE(8, 0x01), HID_RI_INPUT(8, HID_IOF_DATA | HID_IOF_VARIABLE | HID_IOF_ABSOLUTE), + // Keycodes + HID_RI_USAGE_PAGE(8, 0x07), // Keyboard/Keypad + HID_RI_USAGE_MINIMUM(8, 0x00), + HID_RI_USAGE_MAXIMUM(8, KEYBOARD_REPORT_BITS * 8 - 1), + HID_RI_LOGICAL_MINIMUM(8, 0x00), + HID_RI_LOGICAL_MAXIMUM(8, 0x01), + HID_RI_REPORT_COUNT(8, KEYBOARD_REPORT_BITS * 8), + HID_RI_REPORT_SIZE(8, 0x01), + HID_RI_INPUT(8, HID_IOF_DATA | HID_IOF_VARIABLE | HID_IOF_ABSOLUTE), - HID_RI_USAGE_PAGE(8, 0x08), /* LEDs */ - HID_RI_USAGE_MINIMUM(8, 0x01), /* Num Lock */ - HID_RI_USAGE_MAXIMUM(8, 0x05), /* Kana */ + // Status LEDs (5 bits) + HID_RI_USAGE_PAGE(8, 0x08), // LED + HID_RI_USAGE_MINIMUM(8, 0x01), // Num Lock + HID_RI_USAGE_MAXIMUM(8, 0x05), // Kana HID_RI_REPORT_COUNT(8, 0x05), HID_RI_REPORT_SIZE(8, 0x01), HID_RI_OUTPUT(8, HID_IOF_DATA | HID_IOF_VARIABLE | HID_IOF_ABSOLUTE | HID_IOF_NON_VOLATILE), + // LED padding (3 bits) HID_RI_REPORT_COUNT(8, 0x01), HID_RI_REPORT_SIZE(8, 0x03), HID_RI_OUTPUT(8, HID_IOF_CONSTANT), - - HID_RI_USAGE_PAGE(8, 0x07), /* Key Codes */ - HID_RI_USAGE_MINIMUM(8, 0x00), /* Keyboard 0 */ - HID_RI_USAGE_MAXIMUM(8, KEYBOARD_REPORT_BITS*8-1), - HID_RI_LOGICAL_MINIMUM(8, 0x00), - HID_RI_LOGICAL_MAXIMUM(8, 0x01), - HID_RI_REPORT_COUNT(8, KEYBOARD_REPORT_BITS*8), - HID_RI_REPORT_SIZE(8, 0x01), - HID_RI_INPUT(8, HID_IOF_DATA | HID_IOF_VARIABLE | HID_IOF_ABSOLUTE), HID_RI_END_COLLECTION(0), -# endif +#endif #ifdef SHARED_EP_ENABLE }; #endif #ifdef RAW_ENABLE -const USB_Descriptor_HIDReport_Datatype_t PROGMEM RawReport[] = -{ - HID_RI_USAGE_PAGE(16, 0xFF60), /* Vendor Page 0xFF60 */ - HID_RI_USAGE(8, 0x61), /* Vendor Usage 0x61 */ - HID_RI_COLLECTION(8, 0x01), /* Application */ - HID_RI_USAGE(8, 0x62), /* Vendor Usage 0x62 */ +const USB_Descriptor_HIDReport_Datatype_t PROGMEM RawReport[] = { + HID_RI_USAGE_PAGE(16, 0xFF60), // Vendor Defined + HID_RI_USAGE(8, 0x61), // Vendor Defined + HID_RI_COLLECTION(8, 0x01), // Application + // Data to host + HID_RI_USAGE(8, 0x62), // Vendor Defined HID_RI_LOGICAL_MINIMUM(8, 0x00), HID_RI_LOGICAL_MAXIMUM(16, 0x00FF), HID_RI_REPORT_COUNT(8, RAW_EPSIZE), HID_RI_REPORT_SIZE(8, 0x08), HID_RI_INPUT(8, HID_IOF_DATA | HID_IOF_VARIABLE | HID_IOF_ABSOLUTE), - HID_RI_USAGE(8, 0x63), /* Vendor Usage 0x63 */ + // Data from host + HID_RI_USAGE(8, 0x63), // Vendor Defined HID_RI_LOGICAL_MINIMUM(8, 0x00), HID_RI_LOGICAL_MAXIMUM(16, 0x00FF), HID_RI_REPORT_COUNT(8, RAW_EPSIZE), @@ -248,18 +252,19 @@ const USB_Descriptor_HIDReport_Datatype_t PROGMEM RawReport[] = #endif #ifdef CONSOLE_ENABLE -const USB_Descriptor_HIDReport_Datatype_t PROGMEM ConsoleReport[] = -{ - HID_RI_USAGE_PAGE(16, 0xFF31), /* Vendor Page(PJRC Teensy compatible) */ - HID_RI_USAGE(8, 0x74), /* Vendor Usage(PJRC Teensy compatible) */ - HID_RI_COLLECTION(8, 0x01), /* Application */ - HID_RI_USAGE(8, 0x75), /* Vendor Usage 0x75 */ +const USB_Descriptor_HIDReport_Datatype_t PROGMEM ConsoleReport[] = { + HID_RI_USAGE_PAGE(16, 0xFF31), // Vendor Defined (PJRC Teensy compatible) + HID_RI_USAGE(8, 0x74), // Vendor Defined (PJRC Teensy compatible) + HID_RI_COLLECTION(8, 0x01), // Application + // Data to host + HID_RI_USAGE(8, 0x75), // Vendor Defined HID_RI_LOGICAL_MINIMUM(8, 0x00), HID_RI_LOGICAL_MAXIMUM(16, 0x00FF), HID_RI_REPORT_COUNT(8, CONSOLE_EPSIZE), HID_RI_REPORT_SIZE(8, 0x08), HID_RI_INPUT(8, HID_IOF_DATA | HID_IOF_VARIABLE | HID_IOF_ABSOLUTE), - HID_RI_USAGE(8, 0x76), /* Vendor Usage 0x76 */ + // Data from host + HID_RI_USAGE(8, 0x76), // Vendor Defined HID_RI_LOGICAL_MINIMUM(8, 0x00), HID_RI_LOGICAL_MAXIMUM(16, 0x00FF), HID_RI_REPORT_COUNT(8, CONSOLE_EPSIZE), @@ -269,15 +274,15 @@ const USB_Descriptor_HIDReport_Datatype_t PROGMEM ConsoleReport[] = }; #endif - -/******************************************************************************* - * Device Descriptors - ******************************************************************************/ -const USB_Descriptor_Device_t PROGMEM DeviceDescriptor = -{ - .Header = {.Size = sizeof(USB_Descriptor_Device_t), .Type = DTYPE_Device}, - - .USBSpecification = VERSION_BCD(1,1,0), +/* + * Device descriptor + */ +const USB_Descriptor_Device_t PROGMEM DeviceDescriptor = { + .Header = { + .Size = sizeof(USB_Descriptor_Device_t), + .Type = DTYPE_Device + }, + .USBSpecification = VERSION_BCD(1, 1, 0), #if VIRTSER_ENABLE .Class = USB_CSCP_IADDeviceClass, .SubClass = USB_CSCP_IADDeviceSubclass, @@ -287,710 +292,698 @@ const USB_Descriptor_Device_t PROGMEM DeviceDescriptor = .SubClass = USB_CSCP_NoDeviceSubclass, .Protocol = USB_CSCP_NoDeviceProtocol, #endif - .Endpoint0Size = FIXED_CONTROL_ENDPOINT_SIZE, - - /* specified in config.h */ + // Specified in config.h .VendorID = VENDOR_ID, .ProductID = PRODUCT_ID, .ReleaseNumber = DEVICE_VER, - .ManufacturerStrIndex = 0x01, .ProductStrIndex = 0x02, .SerialNumStrIndex = 0x03, - .NumberOfConfigurations = FIXED_NUM_CONFIGURATIONS }; -/******************************************************************************* - * Configuration Descriptors - ******************************************************************************/ -const USB_Descriptor_Configuration_t PROGMEM ConfigurationDescriptor = -{ - .Config = - { - .Header = {.Size = sizeof(USB_Descriptor_Configuration_Header_t), .Type = DTYPE_Configuration}, - - .TotalConfigurationSize = sizeof(USB_Descriptor_Configuration_t), - .TotalInterfaces = TOTAL_INTERFACES, - - .ConfigurationNumber = 1, - .ConfigurationStrIndex = NO_DESCRIPTOR, - - .ConfigAttributes = (USB_CONFIG_ATTR_RESERVED | USB_CONFIG_ATTR_REMOTEWAKEUP), +#ifndef USB_MAX_POWER_CONSUMPTION + #define USB_MAX_POWER_CONSUMPTION 500 +#endif - .MaxPowerConsumption = USB_CONFIG_POWER_MA(USB_MAX_POWER_CONSUMPTION) +/* + * Configuration descriptors + */ +const USB_Descriptor_Configuration_t PROGMEM ConfigurationDescriptor = { + .Config = { + .Header = { + .Size = sizeof(USB_Descriptor_Configuration_Header_t), + .Type = DTYPE_Configuration }, + .TotalConfigurationSize = sizeof(USB_Descriptor_Configuration_t), + .TotalInterfaces = TOTAL_INTERFACES, + .ConfigurationNumber = 1, + .ConfigurationStrIndex = NO_DESCRIPTOR, + .ConfigAttributes = (USB_CONFIG_ATTR_RESERVED | USB_CONFIG_ATTR_REMOTEWAKEUP), + .MaxPowerConsumption = USB_CONFIG_POWER_MA(USB_MAX_POWER_CONSUMPTION) + }, +#ifndef KEYBOARD_SHARED_EP /* * Keyboard */ -#ifndef KEYBOARD_SHARED_EP - .Keyboard_Interface = - { - .Header = {.Size = sizeof(USB_Descriptor_Interface_t), .Type = DTYPE_Interface}, - - .InterfaceNumber = KEYBOARD_INTERFACE, - .AlternateSetting = 0x00, - - .TotalEndpoints = 1, - - .Class = HID_CSCP_HIDClass, - .SubClass = HID_CSCP_BootSubclass, - .Protocol = HID_CSCP_KeyboardBootProtocol, - - .InterfaceStrIndex = NO_DESCRIPTOR + .Keyboard_Interface = { + .Header = { + .Size = sizeof(USB_Descriptor_Interface_t), + .Type = DTYPE_Interface }, - - .Keyboard_HID = - { - .Header = {.Size = sizeof(USB_HID_Descriptor_HID_t), .Type = HID_DTYPE_HID}, - - .HIDSpec = VERSION_BCD(1,1,1), - .CountryCode = 0x00, - .TotalReportDescriptors = 1, - .HIDReportType = HID_DTYPE_Report, - .HIDReportLength = sizeof(KeyboardReport) + .InterfaceNumber = KEYBOARD_INTERFACE, + .AlternateSetting = 0x00, + .TotalEndpoints = 1, + .Class = HID_CSCP_HIDClass, + .SubClass = HID_CSCP_BootSubclass, + .Protocol = HID_CSCP_KeyboardBootProtocol, + + .InterfaceStrIndex = NO_DESCRIPTOR + }, + .Keyboard_HID = { + .Header = { + .Size = sizeof(USB_HID_Descriptor_HID_t), + .Type = HID_DTYPE_HID }, - - .Keyboard_INEndpoint = - { - .Header = {.Size = sizeof(USB_Descriptor_Endpoint_t), .Type = DTYPE_Endpoint}, - - .EndpointAddress = (ENDPOINT_DIR_IN | KEYBOARD_IN_EPNUM), - .Attributes = (EP_TYPE_INTERRUPT | ENDPOINT_ATTR_NO_SYNC | ENDPOINT_USAGE_DATA), - .EndpointSize = KEYBOARD_EPSIZE, - .PollingIntervalMS = 0x0A + .HIDSpec = VERSION_BCD(1, 1, 1), + .CountryCode = 0x00, + .TotalReportDescriptors = 1, + .HIDReportType = HID_DTYPE_Report, + .HIDReportLength = sizeof(KeyboardReport) + }, + .Keyboard_INEndpoint = { + .Header = { + .Size = sizeof(USB_Descriptor_Endpoint_t), + .Type = DTYPE_Endpoint }, + .EndpointAddress = (ENDPOINT_DIR_IN | KEYBOARD_IN_EPNUM), + .Attributes = (EP_TYPE_INTERRUPT | ENDPOINT_ATTR_NO_SYNC | ENDPOINT_USAGE_DATA), + .EndpointSize = KEYBOARD_EPSIZE, + .PollingIntervalMS = 0x0A + }, #endif +#if defined(MOUSE_ENABLE) && !defined(MOUSE_SHARED_EP) /* * Mouse */ -#if defined(MOUSE_ENABLE) && !defined(MOUSE_SHARED_EP) - .Mouse_Interface = - { - .Header = {.Size = sizeof(USB_Descriptor_Interface_t), .Type = DTYPE_Interface}, - - .InterfaceNumber = MOUSE_INTERFACE, - .AlternateSetting = 0x00, - - .TotalEndpoints = 1, - - .Class = HID_CSCP_HIDClass, - .SubClass = HID_CSCP_BootSubclass, - .Protocol = HID_CSCP_MouseBootProtocol, - - .InterfaceStrIndex = NO_DESCRIPTOR + .Mouse_Interface = { + .Header = { + .Size = sizeof(USB_Descriptor_Interface_t), + .Type = DTYPE_Interface }, - - .Mouse_HID = - { - .Header = {.Size = sizeof(USB_HID_Descriptor_HID_t), .Type = HID_DTYPE_HID}, - - .HIDSpec = VERSION_BCD(1,1,1), - .CountryCode = 0x00, - .TotalReportDescriptors = 1, - .HIDReportType = HID_DTYPE_Report, - .HIDReportLength = sizeof(MouseReport) + .InterfaceNumber = MOUSE_INTERFACE, + .AlternateSetting = 0x00, + .TotalEndpoints = 1, + .Class = HID_CSCP_HIDClass, + .SubClass = HID_CSCP_BootSubclass, + .Protocol = HID_CSCP_MouseBootProtocol, + .InterfaceStrIndex = NO_DESCRIPTOR + }, + .Mouse_HID = { + .Header = { + .Size = sizeof(USB_HID_Descriptor_HID_t), + .Type = HID_DTYPE_HID }, - - .Mouse_INEndpoint = - { - .Header = {.Size = sizeof(USB_Descriptor_Endpoint_t), .Type = DTYPE_Endpoint}, - - .EndpointAddress = (ENDPOINT_DIR_IN | MOUSE_IN_EPNUM), - .Attributes = (EP_TYPE_INTERRUPT | ENDPOINT_ATTR_NO_SYNC | ENDPOINT_USAGE_DATA), - .EndpointSize = MOUSE_EPSIZE, - .PollingIntervalMS = 0x0A + .HIDSpec = VERSION_BCD(1, 1, 1), + .CountryCode = 0x00, + .TotalReportDescriptors = 1, + .HIDReportType = HID_DTYPE_Report, + .HIDReportLength = sizeof(MouseReport) + }, + .Mouse_INEndpoint = { + .Header = { + .Size = sizeof(USB_Descriptor_Endpoint_t), + .Type = DTYPE_Endpoint }, + .EndpointAddress = (ENDPOINT_DIR_IN | MOUSE_IN_EPNUM), + .Attributes = (EP_TYPE_INTERRUPT | ENDPOINT_ATTR_NO_SYNC | ENDPOINT_USAGE_DATA), + .EndpointSize = MOUSE_EPSIZE, + .PollingIntervalMS = 0x0A + }, #endif +#ifdef SHARED_EP_ENABLE /* * Shared */ -#ifdef SHARED_EP_ENABLE - .Shared_Interface = - { - .Header = {.Size = sizeof(USB_Descriptor_Interface_t), .Type = DTYPE_Interface}, - - .InterfaceNumber = SHARED_INTERFACE, - .AlternateSetting = 0x00, - - .TotalEndpoints = 1, - - .Class = HID_CSCP_HIDClass, -# ifdef KEYBOARD_SHARED_EP - .SubClass = HID_CSCP_BootSubclass, - .Protocol = HID_CSCP_KeyboardBootProtocol, -# else - .SubClass = HID_CSCP_NonBootSubclass, - .Protocol = HID_CSCP_NonBootProtocol, + .Shared_Interface = { + .Header = { + .Size = sizeof(USB_Descriptor_Interface_t), + .Type = DTYPE_Interface + }, + .InterfaceNumber = SHARED_INTERFACE, + .AlternateSetting = 0x00, + .TotalEndpoints = 1, + .Class = HID_CSCP_HIDClass, +#ifdef KEYBOARD_SHARED_EP + .SubClass = HID_CSCP_BootSubclass, + .Protocol = HID_CSCP_KeyboardBootProtocol, +#else + .SubClass = HID_CSCP_NonBootSubclass, + .Protocol = HID_CSCP_NonBootProtocol, #endif - - .InterfaceStrIndex = NO_DESCRIPTOR + .InterfaceStrIndex = NO_DESCRIPTOR + }, + .Shared_HID = { + .Header = { + .Size = sizeof(USB_HID_Descriptor_HID_t), + .Type = HID_DTYPE_HID }, - - .Shared_HID = - { - .Header = {.Size = sizeof(USB_HID_Descriptor_HID_t), .Type = HID_DTYPE_HID}, - - .HIDSpec = VERSION_BCD(1,1,1), - .CountryCode = 0x00, - .TotalReportDescriptors = 1, - .HIDReportType = HID_DTYPE_Report, - .HIDReportLength = sizeof(SharedReport) + .HIDSpec = VERSION_BCD(1, 1, 1), + .CountryCode = 0x00, + .TotalReportDescriptors = 1, + .HIDReportType = HID_DTYPE_Report, + .HIDReportLength = sizeof(SharedReport) + }, + .Shared_INEndpoint = { + .Header = { + .Size = sizeof(USB_Descriptor_Endpoint_t), + .Type = DTYPE_Endpoint }, + .EndpointAddress = (ENDPOINT_DIR_IN | SHARED_IN_EPNUM), + .Attributes = (EP_TYPE_INTERRUPT | ENDPOINT_ATTR_NO_SYNC | ENDPOINT_USAGE_DATA), + .EndpointSize = SHARED_EPSIZE, + .PollingIntervalMS = 0x0A + }, +#endif - .Shared_INEndpoint = - { - .Header = {.Size = sizeof(USB_Descriptor_Endpoint_t), .Type = DTYPE_Endpoint}, - - .EndpointAddress = (ENDPOINT_DIR_IN | SHARED_IN_EPNUM), - .Attributes = (EP_TYPE_INTERRUPT | ENDPOINT_ATTR_NO_SYNC | ENDPOINT_USAGE_DATA), - .EndpointSize = SHARED_EPSIZE, - .PollingIntervalMS = 0x0A +#ifdef RAW_ENABLE + /* + * Raw HID + */ + .Raw_Interface = { + .Header = { + .Size = sizeof(USB_Descriptor_Interface_t), + .Type = DTYPE_Interface + }, + .InterfaceNumber = RAW_INTERFACE, + .AlternateSetting = 0x00, + .TotalEndpoints = 2, + .Class = HID_CSCP_HIDClass, + .SubClass = HID_CSCP_NonBootSubclass, + .Protocol = HID_CSCP_NonBootProtocol, + .InterfaceStrIndex = NO_DESCRIPTOR + }, + .Raw_HID = { + .Header = { + .Size = sizeof(USB_HID_Descriptor_HID_t), + .Type = HID_DTYPE_HID + }, + .HIDSpec = VERSION_BCD(1, 1, 1), + .CountryCode = 0x00, + .TotalReportDescriptors = 1, + .HIDReportType = HID_DTYPE_Report, + .HIDReportLength = sizeof(RawReport) + }, + .Raw_INEndpoint = { + .Header = { + .Size = sizeof(USB_Descriptor_Endpoint_t), + .Type = DTYPE_Endpoint + }, + .EndpointAddress = (ENDPOINT_DIR_IN | RAW_IN_EPNUM), + .Attributes = (EP_TYPE_INTERRUPT | ENDPOINT_ATTR_NO_SYNC | ENDPOINT_USAGE_DATA), + .EndpointSize = RAW_EPSIZE, + .PollingIntervalMS = 0x01 + }, + .Raw_OUTEndpoint = { + .Header = { + .Size = sizeof(USB_Descriptor_Endpoint_t), + .Type = DTYPE_Endpoint }, + .EndpointAddress = (ENDPOINT_DIR_OUT | RAW_OUT_EPNUM), + .Attributes = (EP_TYPE_INTERRUPT | ENDPOINT_ATTR_NO_SYNC | ENDPOINT_USAGE_DATA), + .EndpointSize = RAW_EPSIZE, + .PollingIntervalMS = 0x01 + }, #endif - /* - * Raw - */ - #ifdef RAW_ENABLE - .Raw_Interface = - { - .Header = {.Size = sizeof(USB_Descriptor_Interface_t), .Type = DTYPE_Interface}, - - .InterfaceNumber = RAW_INTERFACE, - .AlternateSetting = 0x00, - - .TotalEndpoints = 2, - - .Class = HID_CSCP_HIDClass, - .SubClass = HID_CSCP_NonBootSubclass, - .Protocol = HID_CSCP_NonBootProtocol, - - .InterfaceStrIndex = NO_DESCRIPTOR - }, - - .Raw_HID = - { - .Header = {.Size = sizeof(USB_HID_Descriptor_HID_t), .Type = HID_DTYPE_HID}, - - .HIDSpec = VERSION_BCD(1,1,1), - .CountryCode = 0x00, - .TotalReportDescriptors = 1, - .HIDReportType = HID_DTYPE_Report, - .HIDReportLength = sizeof(RawReport) - }, - - .Raw_INEndpoint = - { - .Header = {.Size = sizeof(USB_Descriptor_Endpoint_t), .Type = DTYPE_Endpoint}, - - .EndpointAddress = (ENDPOINT_DIR_IN | RAW_IN_EPNUM), - .Attributes = (EP_TYPE_INTERRUPT | ENDPOINT_ATTR_NO_SYNC | ENDPOINT_USAGE_DATA), - .EndpointSize = RAW_EPSIZE, - .PollingIntervalMS = 0x01 - }, - - .Raw_OUTEndpoint = - { - .Header = {.Size = sizeof(USB_Descriptor_Endpoint_t), .Type = DTYPE_Endpoint}, - - .EndpointAddress = (ENDPOINT_DIR_OUT | RAW_OUT_EPNUM), - .Attributes = (EP_TYPE_INTERRUPT | ENDPOINT_ATTR_NO_SYNC | ENDPOINT_USAGE_DATA), - .EndpointSize = RAW_EPSIZE, - .PollingIntervalMS = 0x01 - }, - #endif - +#ifdef CONSOLE_ENABLE /* * Console */ -#ifdef CONSOLE_ENABLE - .Console_Interface = - { - .Header = {.Size = sizeof(USB_Descriptor_Interface_t), .Type = DTYPE_Interface}, - - .InterfaceNumber = CONSOLE_INTERFACE, - .AlternateSetting = 0x00, - - .TotalEndpoints = 2, - - .Class = HID_CSCP_HIDClass, - .SubClass = HID_CSCP_NonBootSubclass, - .Protocol = HID_CSCP_NonBootProtocol, - - .InterfaceStrIndex = NO_DESCRIPTOR + .Console_Interface = { + .Header = { + .Size = sizeof(USB_Descriptor_Interface_t), + .Type = DTYPE_Interface }, - - .Console_HID = - { - .Header = {.Size = sizeof(USB_HID_Descriptor_HID_t), .Type = HID_DTYPE_HID}, - - .HIDSpec = VERSION_BCD(1,1,1), - .CountryCode = 0x00, - .TotalReportDescriptors = 1, - .HIDReportType = HID_DTYPE_Report, - .HIDReportLength = sizeof(ConsoleReport) + .InterfaceNumber = CONSOLE_INTERFACE, + .AlternateSetting = 0x00, + .TotalEndpoints = 2, + .Class = HID_CSCP_HIDClass, + .SubClass = HID_CSCP_NonBootSubclass, + .Protocol = HID_CSCP_NonBootProtocol, + .InterfaceStrIndex = NO_DESCRIPTOR + }, + .Console_HID = { + .Header = { + .Size = sizeof(USB_HID_Descriptor_HID_t), + .Type = HID_DTYPE_HID }, - - .Console_INEndpoint = - { - .Header = {.Size = sizeof(USB_Descriptor_Endpoint_t), .Type = DTYPE_Endpoint}, - - .EndpointAddress = (ENDPOINT_DIR_IN | CONSOLE_IN_EPNUM), - .Attributes = (EP_TYPE_INTERRUPT | ENDPOINT_ATTR_NO_SYNC | ENDPOINT_USAGE_DATA), - .EndpointSize = CONSOLE_EPSIZE, - .PollingIntervalMS = 0x01 + .HIDSpec = VERSION_BCD(1, 1, 1), + .CountryCode = 0x00, + .TotalReportDescriptors = 1, + .HIDReportType = HID_DTYPE_Report, + .HIDReportLength = sizeof(ConsoleReport) + }, + .Console_INEndpoint = { + .Header = { + .Size = sizeof(USB_Descriptor_Endpoint_t), + .Type = DTYPE_Endpoint }, - - .Console_OUTEndpoint = - { - .Header = {.Size = sizeof(USB_Descriptor_Endpoint_t), .Type = DTYPE_Endpoint}, - - .EndpointAddress = (ENDPOINT_DIR_OUT | CONSOLE_OUT_EPNUM), - .Attributes = (EP_TYPE_INTERRUPT | ENDPOINT_ATTR_NO_SYNC | ENDPOINT_USAGE_DATA), - .EndpointSize = CONSOLE_EPSIZE, - .PollingIntervalMS = 0x01 + .EndpointAddress = (ENDPOINT_DIR_IN | CONSOLE_IN_EPNUM), + .Attributes = (EP_TYPE_INTERRUPT | ENDPOINT_ATTR_NO_SYNC | ENDPOINT_USAGE_DATA), + .EndpointSize = CONSOLE_EPSIZE, + .PollingIntervalMS = 0x01 + }, + .Console_OUTEndpoint = { + .Header = { + .Size = sizeof(USB_Descriptor_Endpoint_t), + .Type = DTYPE_Endpoint }, + .EndpointAddress = (ENDPOINT_DIR_OUT | CONSOLE_OUT_EPNUM), + .Attributes = (EP_TYPE_INTERRUPT | ENDPOINT_ATTR_NO_SYNC | ENDPOINT_USAGE_DATA), + .EndpointSize = CONSOLE_EPSIZE, + .PollingIntervalMS = 0x01 + }, #endif #ifdef MIDI_ENABLE - .Audio_Interface_Association = - { - .Header = {.Size = sizeof(USB_Descriptor_Interface_Association_t), .Type = DTYPE_InterfaceAssociation}, - - .FirstInterfaceIndex = AC_INTERFACE, - .TotalInterfaces = 2, - - .Class = AUDIO_CSCP_AudioClass, - .SubClass = AUDIO_CSCP_ControlSubclass, - .Protocol = AUDIO_CSCP_ControlProtocol, - - .IADStrIndex = NO_DESCRIPTOR, + /* + * MIDI + */ + .Audio_Interface_Association = { + .Header = { + .Size = sizeof(USB_Descriptor_Interface_Association_t), + .Type = DTYPE_InterfaceAssociation }, - .Audio_ControlInterface = - { - .Header = {.Size = sizeof(USB_Descriptor_Interface_t), .Type = DTYPE_Interface}, - - .InterfaceNumber = AC_INTERFACE, - .AlternateSetting = 0, - - .TotalEndpoints = 0, - - .Class = AUDIO_CSCP_AudioClass, - .SubClass = AUDIO_CSCP_ControlSubclass, - .Protocol = AUDIO_CSCP_ControlProtocol, - - .InterfaceStrIndex = NO_DESCRIPTOR + .FirstInterfaceIndex = AC_INTERFACE, + .TotalInterfaces = 2, + .Class = AUDIO_CSCP_AudioClass, + .SubClass = AUDIO_CSCP_ControlSubclass, + .Protocol = AUDIO_CSCP_ControlProtocol, + .IADStrIndex = NO_DESCRIPTOR, + }, + .Audio_ControlInterface = { + .Header = { + .Size = sizeof(USB_Descriptor_Interface_t), + .Type = DTYPE_Interface }, - - .Audio_ControlInterface_SPC = - { - .Header = {.Size = sizeof(USB_Audio_Descriptor_Interface_AC_t), .Type = DTYPE_CSInterface}, - .Subtype = AUDIO_DSUBTYPE_CSInterface_Header, - - .ACSpecification = VERSION_BCD(1,0,0), - .TotalLength = sizeof(USB_Audio_Descriptor_Interface_AC_t), - - .InCollection = 1, - .InterfaceNumber = AS_INTERFACE, + .InterfaceNumber = AC_INTERFACE, + .AlternateSetting = 0, + .TotalEndpoints = 0, + .Class = AUDIO_CSCP_AudioClass, + .SubClass = AUDIO_CSCP_ControlSubclass, + .Protocol = AUDIO_CSCP_ControlProtocol, + .InterfaceStrIndex = NO_DESCRIPTOR + }, + .Audio_ControlInterface_SPC = { + .Header = { + .Size = sizeof(USB_Audio_Descriptor_Interface_AC_t), + .Type = DTYPE_CSInterface }, - - .Audio_StreamInterface = - { - .Header = {.Size = sizeof(USB_Descriptor_Interface_t), .Type = DTYPE_Interface}, - - .InterfaceNumber = AS_INTERFACE, - .AlternateSetting = 0, - - .TotalEndpoints = 2, - - .Class = AUDIO_CSCP_AudioClass, - .SubClass = AUDIO_CSCP_MIDIStreamingSubclass, - .Protocol = AUDIO_CSCP_StreamingProtocol, - - .InterfaceStrIndex = NO_DESCRIPTOR + .Subtype = AUDIO_DSUBTYPE_CSInterface_Header, + .ACSpecification = VERSION_BCD(1, 0, 0), + .TotalLength = sizeof(USB_Audio_Descriptor_Interface_AC_t), + .InCollection = 1, + .InterfaceNumber = AS_INTERFACE, + }, + .Audio_StreamInterface = { + .Header = { + .Size = sizeof(USB_Descriptor_Interface_t), + .Type = DTYPE_Interface }, - - .Audio_StreamInterface_SPC = - { - .Header = {.Size = sizeof(USB_MIDI_Descriptor_AudioInterface_AS_t), .Type = DTYPE_CSInterface}, - .Subtype = AUDIO_DSUBTYPE_CSInterface_General, - - .AudioSpecification = VERSION_BCD(1,0,0), - - .TotalLength = offsetof(USB_Descriptor_Configuration_t, MIDI_Out_Jack_Endpoint_SPC) - + sizeof(USB_MIDI_Descriptor_Jack_Endpoint_t) - - offsetof(USB_Descriptor_Configuration_t, Audio_StreamInterface_SPC) + .InterfaceNumber = AS_INTERFACE, + .AlternateSetting = 0, + .TotalEndpoints = 2, + .Class = AUDIO_CSCP_AudioClass, + .SubClass = AUDIO_CSCP_MIDIStreamingSubclass, + .Protocol = AUDIO_CSCP_StreamingProtocol, + .InterfaceStrIndex = NO_DESCRIPTOR + }, + .Audio_StreamInterface_SPC = { + .Header = { + .Size = sizeof(USB_MIDI_Descriptor_AudioInterface_AS_t), + .Type = DTYPE_CSInterface }, - - .MIDI_In_Jack_Emb = - { - .Header = {.Size = sizeof(USB_MIDI_Descriptor_InputJack_t), .Type = DTYPE_CSInterface}, - .Subtype = AUDIO_DSUBTYPE_CSInterface_InputTerminal, - - .JackType = MIDI_JACKTYPE_Embedded, - .JackID = 0x01, - - .JackStrIndex = NO_DESCRIPTOR + .Subtype = AUDIO_DSUBTYPE_CSInterface_General, + .AudioSpecification = VERSION_BCD(1, 0, 0), + .TotalLength = offsetof(USB_Descriptor_Configuration_t, MIDI_Out_Jack_Endpoint_SPC) + sizeof(USB_MIDI_Descriptor_Jack_Endpoint_t) - offsetof(USB_Descriptor_Configuration_t, Audio_StreamInterface_SPC) + }, + .MIDI_In_Jack_Emb = { + .Header = { + .Size = sizeof(USB_MIDI_Descriptor_InputJack_t), + .Type = DTYPE_CSInterface }, - - .MIDI_In_Jack_Ext = - { - .Header = {.Size = sizeof(USB_MIDI_Descriptor_InputJack_t), .Type = DTYPE_CSInterface}, - .Subtype = AUDIO_DSUBTYPE_CSInterface_InputTerminal, - - .JackType = MIDI_JACKTYPE_External, - .JackID = 0x02, - - .JackStrIndex = NO_DESCRIPTOR + .Subtype = AUDIO_DSUBTYPE_CSInterface_InputTerminal, + .JackType = MIDI_JACKTYPE_Embedded, + .JackID = 0x01, + .JackStrIndex = NO_DESCRIPTOR + }, + .MIDI_In_Jack_Ext = { + .Header = { + .Size = sizeof(USB_MIDI_Descriptor_InputJack_t), + .Type = DTYPE_CSInterface }, - - .MIDI_Out_Jack_Emb = - { - .Header = {.Size = sizeof(USB_MIDI_Descriptor_OutputJack_t), .Type = DTYPE_CSInterface}, - .Subtype = AUDIO_DSUBTYPE_CSInterface_OutputTerminal, - - .JackType = MIDI_JACKTYPE_Embedded, - .JackID = 0x03, - - .NumberOfPins = 1, - .SourceJackID = {0x02}, - .SourcePinID = {0x01}, - - .JackStrIndex = NO_DESCRIPTOR + .Subtype = AUDIO_DSUBTYPE_CSInterface_InputTerminal, + .JackType = MIDI_JACKTYPE_External, + .JackID = 0x02, + .JackStrIndex = NO_DESCRIPTOR + }, + .MIDI_Out_Jack_Emb = { + .Header = { + .Size = sizeof(USB_MIDI_Descriptor_OutputJack_t), + .Type = DTYPE_CSInterface }, - - .MIDI_Out_Jack_Ext = - { - .Header = {.Size = sizeof(USB_MIDI_Descriptor_OutputJack_t), .Type = DTYPE_CSInterface}, - .Subtype = AUDIO_DSUBTYPE_CSInterface_OutputTerminal, - - .JackType = MIDI_JACKTYPE_External, - .JackID = 0x04, - - .NumberOfPins = 1, - .SourceJackID = {0x01}, - .SourcePinID = {0x01}, - - .JackStrIndex = NO_DESCRIPTOR + .Subtype = AUDIO_DSUBTYPE_CSInterface_OutputTerminal, + .JackType = MIDI_JACKTYPE_Embedded, + .JackID = 0x03, + .NumberOfPins = 1, + .SourceJackID = {0x02}, + .SourcePinID = {0x01}, + .JackStrIndex = NO_DESCRIPTOR + }, + .MIDI_Out_Jack_Ext = { + .Header = { + .Size = sizeof(USB_MIDI_Descriptor_OutputJack_t), + .Type = DTYPE_CSInterface }, - - .MIDI_In_Jack_Endpoint = - { - .Endpoint = - { - .Header = {.Size = sizeof(USB_Audio_Descriptor_StreamEndpoint_Std_t), .Type = DTYPE_Endpoint}, - - .EndpointAddress = MIDI_STREAM_OUT_EPADDR, - .Attributes = (EP_TYPE_BULK | ENDPOINT_ATTR_NO_SYNC | ENDPOINT_USAGE_DATA), - .EndpointSize = MIDI_STREAM_EPSIZE, - .PollingIntervalMS = 0x05 - }, - - .Refresh = 0, - .SyncEndpointNumber = 0 + .Subtype = AUDIO_DSUBTYPE_CSInterface_OutputTerminal, + .JackType = MIDI_JACKTYPE_External, + .JackID = 0x04, + .NumberOfPins = 1, + .SourceJackID = {0x01}, + .SourcePinID = {0x01}, + .JackStrIndex = NO_DESCRIPTOR + }, + .MIDI_In_Jack_Endpoint = { + .Endpoint = { + .Header = { + .Size = sizeof(USB_Audio_Descriptor_StreamEndpoint_Std_t), + .Type = DTYPE_Endpoint + }, + .EndpointAddress = MIDI_STREAM_OUT_EPADDR, + .Attributes = (EP_TYPE_BULK | ENDPOINT_ATTR_NO_SYNC | ENDPOINT_USAGE_DATA), + .EndpointSize = MIDI_STREAM_EPSIZE, + .PollingIntervalMS = 0x05 }, - - .MIDI_In_Jack_Endpoint_SPC = - { - .Header = {.Size = sizeof(USB_MIDI_Descriptor_Jack_Endpoint_t), .Type = DTYPE_CSEndpoint}, - .Subtype = AUDIO_DSUBTYPE_CSEndpoint_General, - - .TotalEmbeddedJacks = 0x01, - .AssociatedJackID = {0x01} + .Refresh = 0, + .SyncEndpointNumber = 0 + }, + .MIDI_In_Jack_Endpoint_SPC = { + .Header = { + .Size = sizeof(USB_MIDI_Descriptor_Jack_Endpoint_t), + .Type = DTYPE_CSEndpoint }, - - .MIDI_Out_Jack_Endpoint = - { - .Endpoint = - { - .Header = {.Size = sizeof(USB_Audio_Descriptor_StreamEndpoint_Std_t), .Type = DTYPE_Endpoint}, - - .EndpointAddress = MIDI_STREAM_IN_EPADDR, - .Attributes = (EP_TYPE_BULK | ENDPOINT_ATTR_NO_SYNC | ENDPOINT_USAGE_DATA), - .EndpointSize = MIDI_STREAM_EPSIZE, - .PollingIntervalMS = 0x05 - }, - - .Refresh = 0, - .SyncEndpointNumber = 0 + .Subtype = AUDIO_DSUBTYPE_CSEndpoint_General, + .TotalEmbeddedJacks = 0x01, + .AssociatedJackID = {0x01} + }, + .MIDI_Out_Jack_Endpoint = { + .Endpoint = { + .Header = { + .Size = sizeof(USB_Audio_Descriptor_StreamEndpoint_Std_t), + .Type = DTYPE_Endpoint + }, + .EndpointAddress = MIDI_STREAM_IN_EPADDR, + .Attributes = (EP_TYPE_BULK | ENDPOINT_ATTR_NO_SYNC | ENDPOINT_USAGE_DATA), + .EndpointSize = MIDI_STREAM_EPSIZE, + .PollingIntervalMS = 0x05 }, - - .MIDI_Out_Jack_Endpoint_SPC = - { - .Header = {.Size = sizeof(USB_MIDI_Descriptor_Jack_Endpoint_t), .Type = DTYPE_CSEndpoint}, - .Subtype = AUDIO_DSUBTYPE_CSEndpoint_General, - - .TotalEmbeddedJacks = 0x01, - .AssociatedJackID = {0x03} + .Refresh = 0, + .SyncEndpointNumber = 0 + }, + .MIDI_Out_Jack_Endpoint_SPC = { + .Header = { + .Size = sizeof(USB_MIDI_Descriptor_Jack_Endpoint_t), + .Type = DTYPE_CSEndpoint }, + .Subtype = AUDIO_DSUBTYPE_CSEndpoint_General, + .TotalEmbeddedJacks = 0x01, + .AssociatedJackID = {0x03} + }, #endif #ifdef VIRTSER_ENABLE - .CDC_Interface_Association = - { - .Header = {.Size = sizeof(USB_Descriptor_Interface_Association_t), .Type = DTYPE_InterfaceAssociation}, - - .FirstInterfaceIndex = CCI_INTERFACE, - .TotalInterfaces = 2, - - .Class = CDC_CSCP_CDCClass, - .SubClass = CDC_CSCP_ACMSubclass, - .Protocol = CDC_CSCP_ATCommandProtocol, - - .IADStrIndex = NO_DESCRIPTOR, - }, - - .CDC_CCI_Interface = - { - .Header = {.Size = sizeof(USB_Descriptor_Interface_t), .Type = DTYPE_Interface}, - - .InterfaceNumber = CCI_INTERFACE, - .AlternateSetting = 0, - - .TotalEndpoints = 1, - - .Class = CDC_CSCP_CDCClass, - .SubClass = CDC_CSCP_ACMSubclass, - .Protocol = CDC_CSCP_ATCommandProtocol, - - .InterfaceStrIndex = NO_DESCRIPTOR - }, - - .CDC_Functional_Header = - { - .Header = {.Size = sizeof(USB_CDC_Descriptor_FunctionalHeader_t), .Type = DTYPE_CSInterface}, - .Subtype = 0x00, - - .CDCSpecification = VERSION_BCD(1,1,0), - }, - - .CDC_Functional_ACM = - { - .Header = {.Size = sizeof(USB_CDC_Descriptor_FunctionalACM_t), .Type = DTYPE_CSInterface}, - .Subtype = 0x02, - - .Capabilities = 0x02, - }, - - .CDC_Functional_Union = - { - .Header = {.Size = sizeof(USB_CDC_Descriptor_FunctionalUnion_t), .Type = DTYPE_CSInterface}, - .Subtype = 0x06, - - .MasterInterfaceNumber = CCI_INTERFACE, - .SlaveInterfaceNumber = CDI_INTERFACE, - }, - - .CDC_NotificationEndpoint = - { - .Header = {.Size = sizeof(USB_Descriptor_Endpoint_t), .Type = DTYPE_Endpoint}, - - .EndpointAddress = CDC_NOTIFICATION_EPADDR, - .Attributes = (EP_TYPE_INTERRUPT | ENDPOINT_ATTR_NO_SYNC | ENDPOINT_USAGE_DATA), - .EndpointSize = CDC_NOTIFICATION_EPSIZE, - .PollingIntervalMS = 0xFF - }, - - .CDC_DCI_Interface = - { - .Header = {.Size = sizeof(USB_Descriptor_Interface_t), .Type = DTYPE_Interface}, - - .InterfaceNumber = CDI_INTERFACE, - .AlternateSetting = 0, - - .TotalEndpoints = 2, - - .Class = CDC_CSCP_CDCDataClass, - .SubClass = CDC_CSCP_NoDataSubclass, - .Protocol = CDC_CSCP_NoDataProtocol, - - .InterfaceStrIndex = NO_DESCRIPTOR - }, - - .CDC_DataOutEndpoint = - { - .Header = {.Size = sizeof(USB_Descriptor_Endpoint_t), .Type = DTYPE_Endpoint}, - - .EndpointAddress = CDC_OUT_EPADDR, - .Attributes = (EP_TYPE_BULK | ENDPOINT_ATTR_NO_SYNC | ENDPOINT_USAGE_DATA), - .EndpointSize = CDC_EPSIZE, - .PollingIntervalMS = 0x05 - }, - - .CDC_DataInEndpoint = - { - .Header = {.Size = sizeof(USB_Descriptor_Endpoint_t), .Type = DTYPE_Endpoint}, - - .EndpointAddress = CDC_IN_EPADDR, - .Attributes = (EP_TYPE_BULK | ENDPOINT_ATTR_NO_SYNC | ENDPOINT_USAGE_DATA), - .EndpointSize = CDC_EPSIZE, - .PollingIntervalMS = 0x05 - }, + /* + * Virtual Serial + */ + .CDC_Interface_Association = { + .Header = { + .Size = sizeof(USB_Descriptor_Interface_Association_t), + .Type = DTYPE_InterfaceAssociation + }, + .FirstInterfaceIndex = CCI_INTERFACE, + .TotalInterfaces = 2, + .Class = CDC_CSCP_CDCClass, + .SubClass = CDC_CSCP_ACMSubclass, + .Protocol = CDC_CSCP_ATCommandProtocol, + .IADStrIndex = NO_DESCRIPTOR, + }, + .CDC_CCI_Interface = { + .Header = { + .Size = sizeof(USB_Descriptor_Interface_t), + .Type = DTYPE_Interface + }, + .InterfaceNumber = CCI_INTERFACE, + .AlternateSetting = 0, + .TotalEndpoints = 1, + .Class = CDC_CSCP_CDCClass, + .SubClass = CDC_CSCP_ACMSubclass, + .Protocol = CDC_CSCP_ATCommandProtocol, + .InterfaceStrIndex = NO_DESCRIPTOR + }, + .CDC_Functional_Header = { + .Header = { + .Size = sizeof(USB_CDC_Descriptor_FunctionalHeader_t), + .Type = DTYPE_CSInterface + }, + .Subtype = 0x00, + .CDCSpecification = VERSION_BCD(1, 1, 0), + }, + .CDC_Functional_ACM = { + .Header = { + .Size = sizeof(USB_CDC_Descriptor_FunctionalACM_t), + .Type = DTYPE_CSInterface + }, + .Subtype = 0x02, + .Capabilities = 0x02, + }, + .CDC_Functional_Union = { + .Header = { + .Size = sizeof(USB_CDC_Descriptor_FunctionalUnion_t), + .Type = DTYPE_CSInterface + }, + .Subtype = 0x06, + .MasterInterfaceNumber = CCI_INTERFACE, + .SlaveInterfaceNumber = CDI_INTERFACE, + }, + .CDC_NotificationEndpoint = { + .Header = { + .Size = sizeof(USB_Descriptor_Endpoint_t), + .Type = DTYPE_Endpoint + }, + .EndpointAddress = CDC_NOTIFICATION_EPADDR, + .Attributes = (EP_TYPE_INTERRUPT | ENDPOINT_ATTR_NO_SYNC | ENDPOINT_USAGE_DATA), + .EndpointSize = CDC_NOTIFICATION_EPSIZE, + .PollingIntervalMS = 0xFF + }, + .CDC_DCI_Interface = { + .Header = { + .Size = sizeof(USB_Descriptor_Interface_t), + .Type = DTYPE_Interface + }, + .InterfaceNumber = CDI_INTERFACE, + .AlternateSetting = 0, + .TotalEndpoints = 2, + .Class = CDC_CSCP_CDCDataClass, + .SubClass = CDC_CSCP_NoDataSubclass, + .Protocol = CDC_CSCP_NoDataProtocol, + .InterfaceStrIndex = NO_DESCRIPTOR + }, + .CDC_DataOutEndpoint = { + .Header = { + .Size = sizeof(USB_Descriptor_Endpoint_t), + .Type = DTYPE_Endpoint + }, + .EndpointAddress = CDC_OUT_EPADDR, + .Attributes = (EP_TYPE_BULK | ENDPOINT_ATTR_NO_SYNC | ENDPOINT_USAGE_DATA), + .EndpointSize = CDC_EPSIZE, + .PollingIntervalMS = 0x05 + }, + .CDC_DataInEndpoint = { + .Header = { + .Size = sizeof(USB_Descriptor_Endpoint_t), + .Type = DTYPE_Endpoint + }, + .EndpointAddress = CDC_IN_EPADDR, + .Attributes = (EP_TYPE_BULK | ENDPOINT_ATTR_NO_SYNC | ENDPOINT_USAGE_DATA), + .EndpointSize = CDC_EPSIZE, + .PollingIntervalMS = 0x05 + }, #endif }; - -/******************************************************************************* - * String Descriptors - ******************************************************************************/ -const USB_Descriptor_String_t PROGMEM LanguageString = -{ - .Header = {.Size = USB_STRING_LEN(1), .Type = DTYPE_String}, - - .UnicodeString = {LANGUAGE_ID_ENG} +/* + * String descriptors + */ +const USB_Descriptor_String_t PROGMEM LanguageString = { + .Header = { + .Size = USB_STRING_LEN(1), + .Type = DTYPE_String + }, + .UnicodeString = {LANGUAGE_ID_ENG} }; -const USB_Descriptor_String_t PROGMEM ManufacturerString = -{ - /* subtract 1 for null terminator */ - .Header = {.Size = USB_STRING_LEN(sizeof(STR(MANUFACTURER))-1), .Type = DTYPE_String}, - - .UnicodeString = LSTR(MANUFACTURER) +const USB_Descriptor_String_t PROGMEM ManufacturerString = { + .Header = { + .Size = USB_STRING_LEN(sizeof(STR(MANUFACTURER)) - 1), // Subtract 1 for null terminator + .Type = DTYPE_String + }, + .UnicodeString = LSTR(MANUFACTURER) }; -const USB_Descriptor_String_t PROGMEM ProductString = -{ - /* subtract 1 for null terminator */ - .Header = {.Size = USB_STRING_LEN(sizeof(STR(PRODUCT))-1), .Type = DTYPE_String}, - - .UnicodeString = LSTR(PRODUCT) +const USB_Descriptor_String_t PROGMEM ProductString = { + .Header = { + .Size = USB_STRING_LEN(sizeof(STR(PRODUCT)) - 1), // Subtract 1 for null terminator + .Type = DTYPE_String + }, + .UnicodeString = LSTR(PRODUCT) }; #ifndef SERIAL_NUMBER #define SERIAL_NUMBER 0 #endif -const USB_Descriptor_String_t PROGMEM SerialNumberString = -{ - /* subtract 1 for null terminator */ - .Header = {.Size = USB_STRING_LEN(sizeof(STR(SERIAL_NUMBER))-1), .Type = DTYPE_String}, - - .UnicodeString = LSTR(SERIAL_NUMBER) +const USB_Descriptor_String_t PROGMEM SerialNumberString = { + .Header = { + .Size = USB_STRING_LEN(sizeof(STR(SERIAL_NUMBER)) - 1), // Subtract 1 for null terminator + .Type = DTYPE_String + }, + .UnicodeString = LSTR(SERIAL_NUMBER) }; - -/** This function is called by the library when in device mode, and must be overridden (see library "USB Descriptors" - * documentation) by the application code so that the address and size of a requested descriptor can be given - * to the USB library. When the device receives a Get Descriptor request on the control endpoint, this function - * is called so that the descriptor details can be passed back and the appropriate descriptor sent back to the - * USB host. +/** + * This function is called by the library when in device mode, and must be overridden (see library "USB Descriptors" + * documentation) by the application code so that the address and size of a requested descriptor can be given + * to the USB library. When the device receives a Get Descriptor request on the control endpoint, this function + * is called so that the descriptor details can be passed back and the appropriate descriptor sent back to the + * USB host. */ -uint16_t get_usb_descriptor(const uint16_t wValue, - const uint16_t wIndex, - const void** const DescriptorAddress) -{ - const uint8_t DescriptorType = (wValue >> 8); - const uint8_t DescriptorIndex = (wValue & 0xFF); - - const void* Address = NULL; - uint16_t Size = NO_DESCRIPTOR; - - switch (DescriptorType) - { +uint16_t get_usb_descriptor(const uint16_t wValue, const uint16_t wIndex, const void** const DescriptorAddress) { + const uint8_t DescriptorType = (wValue >> 8); + const uint8_t DescriptorIndex = (wValue & 0xFF); + const void* Address = NULL; + uint16_t Size = NO_DESCRIPTOR; + + switch (DescriptorType) { case DTYPE_Device: Address = &DeviceDescriptor; Size = sizeof(USB_Descriptor_Device_t); + break; case DTYPE_Configuration: Address = &ConfigurationDescriptor; Size = sizeof(USB_Descriptor_Configuration_t); + break; case DTYPE_String: - switch (DescriptorIndex ) - { + switch (DescriptorIndex) { case 0x00: Address = &LanguageString; Size = pgm_read_byte(&LanguageString.Header.Size); + break; case 0x01: Address = &ManufacturerString; Size = pgm_read_byte(&ManufacturerString.Header.Size); + break; case 0x02: Address = &ProductString; Size = pgm_read_byte(&ProductString.Header.Size); + break; case 0x03: Address = &SerialNumberString; Size = pgm_read_byte(&SerialNumberString.Header.Size); + break; } + break; case HID_DTYPE_HID: switch (wIndex) { #ifndef KEYBOARD_SHARED_EP - case KEYBOARD_INTERFACE: - Address = &ConfigurationDescriptor.Keyboard_HID; - Size = sizeof(USB_HID_Descriptor_HID_t); - break; + case KEYBOARD_INTERFACE: + Address = &ConfigurationDescriptor.Keyboard_HID; + Size = sizeof(USB_HID_Descriptor_HID_t); + break; #endif + #if defined(MOUSE_ENABLE) && !defined(MOUSE_SHARED_EP) - case MOUSE_INTERFACE: - Address = &ConfigurationDescriptor.Mouse_HID; - Size = sizeof(USB_HID_Descriptor_HID_t); - break; + case MOUSE_INTERFACE: + Address = &ConfigurationDescriptor.Mouse_HID; + Size = sizeof(USB_HID_Descriptor_HID_t); + + break; #endif + #ifdef SHARED_EP_ENABLE - case SHARED_INTERFACE: - Address = &ConfigurationDescriptor.Shared_HID; - Size = sizeof(USB_HID_Descriptor_HID_t); - break; + case SHARED_INTERFACE: + Address = &ConfigurationDescriptor.Shared_HID; + Size = sizeof(USB_HID_Descriptor_HID_t); + + break; #endif + #ifdef RAW_ENABLE - case RAW_INTERFACE: - Address = &ConfigurationDescriptor.Raw_HID; - Size = sizeof(USB_HID_Descriptor_HID_t); - break; + case RAW_INTERFACE: + Address = &ConfigurationDescriptor.Raw_HID; + Size = sizeof(USB_HID_Descriptor_HID_t); + + break; #endif + #ifdef CONSOLE_ENABLE - case CONSOLE_INTERFACE: - Address = &ConfigurationDescriptor.Console_HID; - Size = sizeof(USB_HID_Descriptor_HID_t); - break; + case CONSOLE_INTERFACE: + Address = &ConfigurationDescriptor.Console_HID; + Size = sizeof(USB_HID_Descriptor_HID_t); + + break; #endif } + break; case HID_DTYPE_Report: switch (wIndex) { #ifndef KEYBOARD_SHARED_EP - case KEYBOARD_INTERFACE: - Address = &KeyboardReport; - Size = sizeof(KeyboardReport); - break; + case KEYBOARD_INTERFACE: + Address = &KeyboardReport; + Size = sizeof(KeyboardReport); + + break; #endif + #if defined(MOUSE_ENABLE) && !defined(MOUSE_SHARED_EP) - case MOUSE_INTERFACE: - Address = &MouseReport; - Size = sizeof(MouseReport); - break; + case MOUSE_INTERFACE: + Address = &MouseReport; + Size = sizeof(MouseReport); + + break; #endif + #ifdef SHARED_EP_ENABLE - case SHARED_INTERFACE: - Address = &SharedReport; - Size = sizeof(SharedReport); - break; + case SHARED_INTERFACE: + Address = &SharedReport; + Size = sizeof(SharedReport); + + break; #endif + #ifdef RAW_ENABLE - case RAW_INTERFACE: - Address = &RawReport; - Size = sizeof(RawReport); - break; + case RAW_INTERFACE: + Address = &RawReport; + Size = sizeof(RawReport); + + break; #endif + #ifdef CONSOLE_ENABLE - case CONSOLE_INTERFACE: - Address = &ConsoleReport; - Size = sizeof(ConsoleReport); - break; + case CONSOLE_INTERFACE: + Address = &ConsoleReport; + Size = sizeof(ConsoleReport); + + break; #endif } + break; } *DescriptorAddress = Address; + return Size; } diff --git a/tmk_core/protocol/usb_descriptor.h b/tmk_core/protocol/usb_descriptor.h index 3ca0c00b3..d41956803 100644 --- a/tmk_core/protocol/usb_descriptor.h +++ b/tmk_core/protocol/usb_descriptor.h @@ -6,95 +6,97 @@ */ /* - LUFA Library - Copyright (C) Dean Camera, 2012. + LUFA Library + Copyright (C) Dean Camera, 2012. - dean [at] fourwalledcubicle [dot] com - www.lufa-lib.org + dean [at] fourwalledcubicle [dot] com + www.lufa-lib.org */ /* - Copyright 2012 Dean Camera (dean [at] fourwalledcubicle [dot] com) - Copyright 2010 Denver Gingerich (denver [at] ossguy [dot] com) - - Permission to use, copy, modify, distribute, and sell this - software and its documentation for any purpose is hereby granted - without fee, provided that the above copyright notice appear in - all copies and that both that the copyright notice and this - permission notice and warranty disclaimer appear in supporting - documentation, and that the name of the author not be used in - advertising or publicity pertaining to distribution of the - software without specific, written prior permission. - - The author disclaim all warranties with regard to this - software, including all implied warranties of merchantability - and fitness. In no event shall the author be liable for any - special, indirect or consequential damages or any damages - whatsoever resulting from loss of use, data or profits, whether - in an action of contract, negligence or other tortious action, - arising out of or in connection with the use or performance of - this software. + Copyright 2012 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2010 Denver Gingerich (denver [at] ossguy [dot] com) + + Permission to use, copy, modify, distribute, and sell this + software and its documentation for any purpose is hereby granted + without fee, provided that the above copyright notice appear in + all copies and that both that the copyright notice and this + permission notice and warranty disclaimer appear in supporting + documentation, and that the name of the author not be used in + advertising or publicity pertaining to distribution of the + software without specific, written prior permission. + + The author disclaim all warranties with regard to this + software, including all implied warranties of merchantability + and fitness. In no event shall the author be liable for any + special, indirect or consequential damages or any damages + whatsoever resulting from loss of use, data or profits, whether + in an action of contract, negligence or other tortious action, + arising out of or in connection with the use or performance of + this software. */ /** \file * * Header file for Descriptors.c. */ - #ifndef _DESCRIPTORS_H_ -#define _DESCRIPTORS_H_ + #define _DESCRIPTORS_H_ -#include -#ifdef PROTOCOL_CHIBIOS -#include "hal.h" -#endif + #include -typedef struct -{ - USB_Descriptor_Configuration_Header_t Config; + #ifdef PROTOCOL_CHIBIOS + #include "hal.h" + #endif + +/* + * USB descriptor structure + */ +typedef struct { + USB_Descriptor_Configuration_Header_t Config; -#ifndef KEYBOARD_SHARED_EP + #ifndef KEYBOARD_SHARED_EP // Keyboard HID Interface - USB_Descriptor_Interface_t Keyboard_Interface; - USB_HID_Descriptor_HID_t Keyboard_HID; - USB_Descriptor_Endpoint_t Keyboard_INEndpoint; -#endif + USB_Descriptor_Interface_t Keyboard_Interface; + USB_HID_Descriptor_HID_t Keyboard_HID; + USB_Descriptor_Endpoint_t Keyboard_INEndpoint; + #endif -#if defined(MOUSE_ENABLE) && !defined(MOUSE_SHARED_EP) + #if defined(MOUSE_ENABLE) && !defined(MOUSE_SHARED_EP) // Mouse HID Interface - USB_Descriptor_Interface_t Mouse_Interface; - USB_HID_Descriptor_HID_t Mouse_HID; - USB_Descriptor_Endpoint_t Mouse_INEndpoint; -#endif - -#if defined(SHARED_EP_ENABLE) - USB_Descriptor_Interface_t Shared_Interface; - USB_HID_Descriptor_HID_t Shared_HID; - USB_Descriptor_Endpoint_t Shared_INEndpoint; -#endif - -#if defined(RAW_ENABLE) + USB_Descriptor_Interface_t Mouse_Interface; + USB_HID_Descriptor_HID_t Mouse_HID; + USB_Descriptor_Endpoint_t Mouse_INEndpoint; + #endif + + #ifdef SHARED_EP_ENABLE + // Shared Interface + USB_Descriptor_Interface_t Shared_Interface; + USB_HID_Descriptor_HID_t Shared_HID; + USB_Descriptor_Endpoint_t Shared_INEndpoint; + #endif + + #ifdef RAW_ENABLE // Raw HID Interface - USB_Descriptor_Interface_t Raw_Interface; - USB_HID_Descriptor_HID_t Raw_HID; - USB_Descriptor_Endpoint_t Raw_INEndpoint; - USB_Descriptor_Endpoint_t Raw_OUTEndpoint; -#endif + USB_Descriptor_Interface_t Raw_Interface; + USB_HID_Descriptor_HID_t Raw_HID; + USB_Descriptor_Endpoint_t Raw_INEndpoint; + USB_Descriptor_Endpoint_t Raw_OUTEndpoint; + #endif -#ifdef CONSOLE_ENABLE + #ifdef CONSOLE_ENABLE // Console HID Interface - USB_Descriptor_Interface_t Console_Interface; - USB_HID_Descriptor_HID_t Console_HID; - USB_Descriptor_Endpoint_t Console_INEndpoint; - USB_Descriptor_Endpoint_t Console_OUTEndpoint; -#endif + USB_Descriptor_Interface_t Console_Interface; + USB_HID_Descriptor_HID_t Console_HID; + USB_Descriptor_Endpoint_t Console_INEndpoint; + USB_Descriptor_Endpoint_t Console_OUTEndpoint; + #endif -#ifdef MIDI_ENABLE + #ifdef MIDI_ENABLE USB_Descriptor_Interface_Association_t Audio_Interface_Association; // MIDI Audio Control Interface USB_Descriptor_Interface_t Audio_ControlInterface; USB_Audio_Descriptor_Interface_AC_t Audio_ControlInterface_SPC; - // MIDI Audio Streaming Interface USB_Descriptor_Interface_t Audio_StreamInterface; USB_MIDI_Descriptor_AudioInterface_AS_t Audio_StreamInterface_SPC; @@ -106,141 +108,146 @@ typedef struct USB_MIDI_Descriptor_Jack_Endpoint_t MIDI_In_Jack_Endpoint_SPC; USB_Audio_Descriptor_StreamEndpoint_Std_t MIDI_Out_Jack_Endpoint; USB_MIDI_Descriptor_Jack_Endpoint_t MIDI_Out_Jack_Endpoint_SPC; -#endif - -#ifdef VIRTSER_ENABLE - USB_Descriptor_Interface_Association_t CDC_Interface_Association; - - // CDC Control Interface - USB_Descriptor_Interface_t CDC_CCI_Interface; - USB_CDC_Descriptor_FunctionalHeader_t CDC_Functional_Header; - USB_CDC_Descriptor_FunctionalACM_t CDC_Functional_ACM; - USB_CDC_Descriptor_FunctionalUnion_t CDC_Functional_Union; - USB_Descriptor_Endpoint_t CDC_NotificationEndpoint; - - // CDC Data Interface - USB_Descriptor_Interface_t CDC_DCI_Interface; - USB_Descriptor_Endpoint_t CDC_DataOutEndpoint; - USB_Descriptor_Endpoint_t CDC_DataInEndpoint; -#endif + #endif + + #ifdef VIRTSER_ENABLE + USB_Descriptor_Interface_Association_t CDC_Interface_Association; + // CDC Control Interface + USB_Descriptor_Interface_t CDC_CCI_Interface; + USB_CDC_Descriptor_FunctionalHeader_t CDC_Functional_Header; + USB_CDC_Descriptor_FunctionalACM_t CDC_Functional_ACM; + USB_CDC_Descriptor_FunctionalUnion_t CDC_Functional_Union; + USB_Descriptor_Endpoint_t CDC_NotificationEndpoint; + // CDC Data Interface + USB_Descriptor_Interface_t CDC_DCI_Interface; + USB_Descriptor_Endpoint_t CDC_DataOutEndpoint; + USB_Descriptor_Endpoint_t CDC_DataInEndpoint; + #endif } USB_Descriptor_Configuration_t; - -/* index of interface */ +/* + * Interface indexes + */ enum usb_interfaces { -#if !defined(KEYBOARD_SHARED_EP) + #ifndef KEYBOARD_SHARED_EP KEYBOARD_INTERFACE, -#else -# define KEYBOARD_INTERFACE SHARED_INTERFACE -#endif -// It is important that the Raw HID interface is at a constant -// interface number, to support Linux/OSX platforms and chrome.hid -// If Raw HID is enabled, let it be always 1. -#if defined(RAW_ENABLE) + #else + #define KEYBOARD_INTERFACE SHARED_INTERFACE + #endif + + // It is important that the Raw HID interface is at a constant + // interface number, to support Linux/OSX platforms and chrome.hid + // If Raw HID is enabled, let it be always 1. + #ifdef RAW_ENABLE RAW_INTERFACE, -#endif -#if defined(MOUSE_ENABLE) && !defined(MOUSE_SHARED_EP) + #endif + + #if defined(MOUSE_ENABLE) && !defined(MOUSE_SHARED_EP) MOUSE_INTERFACE, -#endif -#if defined(SHARED_EP_ENABLE) + #endif + + #ifdef SHARED_EP_ENABLE SHARED_INTERFACE, -#endif -#if defined(CONSOLE_ENABLE) + #endif + + #ifdef CONSOLE_ENABLE CONSOLE_INTERFACE, -#endif -#if defined(MIDI_ENABLE) + #endif + + #ifdef MIDI_ENABLE AC_INTERFACE, AS_INTERFACE, -#endif -#if defined(VIRTSER_ENABLE) + #endif + + #ifdef VIRTSER_ENABLE CCI_INTERFACE, CDI_INTERFACE, -#endif + #endif + TOTAL_INTERFACES }; -#define NEXT_EPNUM __COUNTER__ + #define NEXT_EPNUM __COUNTER__ +/* + * Endpoint numbers + */ enum usb_endpoints { - __unused_epnum__ = NEXT_EPNUM, /* EP numbering starts at 1 */ -#if !defined(KEYBOARD_SHARED_EP) + __unused_epnum__ = NEXT_EPNUM, // Endpoint numbering starts at 1 + + #ifndef KEYBOARD_SHARED_EP KEYBOARD_IN_EPNUM = NEXT_EPNUM, -#else -# define KEYBOARD_IN_EPNUM SHARED_IN_EPNUM -#endif -#if defined(MOUSE_ENABLE) && !defined(MOUSE_SHARED_EP) + #else + #define KEYBOARD_IN_EPNUM SHARED_IN_EPNUM + #endif + + #if defined(MOUSE_ENABLE) && !defined(MOUSE_SHARED_EP) MOUSE_IN_EPNUM = NEXT_EPNUM, -#else -# define MOUSE_IN_EPNUM SHARED_IN_EPNUM -#endif -#if defined(RAW_ENABLE) + #else + #define MOUSE_IN_EPNUM SHARED_IN_EPNUM + #endif + + #ifdef RAW_ENABLE RAW_IN_EPNUM = NEXT_EPNUM, RAW_OUT_EPNUM = NEXT_EPNUM, -#endif -#if defined(SHARED_EP_ENABLE) + #endif + + #ifdef SHARED_EP_ENABLE SHARED_IN_EPNUM = NEXT_EPNUM, -#endif -#if defined(CONSOLE_ENABLE) + #endif + + #ifdef CONSOLE_ENABLE CONSOLE_IN_EPNUM = NEXT_EPNUM, -#ifdef PROTOCOL_CHIBIOS -// ChibiOS has enough memory and descriptor to actually enable the endpoint -// It could use the same endpoint numbers, as that's supported by ChibiOS -// But the QMK code currently assumes that the endpoint numbers are different + + #ifdef PROTOCOL_CHIBIOS + // ChibiOS has enough memory and descriptor to actually enable the endpoint + // It could use the same endpoint numbers, as that's supported by ChibiOS + // But the QMK code currently assumes that the endpoint numbers are different CONSOLE_OUT_EPNUM = NEXT_EPNUM, -#else -#define CONSOLE_OUT_EPNUM CONSOLE_IN_EPNUM -#endif -#endif -#ifdef MIDI_ENABLE + #else + #define CONSOLE_OUT_EPNUM CONSOLE_IN_EPNUM + #endif + #endif + + #ifdef MIDI_ENABLE MIDI_STREAM_IN_EPNUM = NEXT_EPNUM, MIDI_STREAM_OUT_EPNUM = NEXT_EPNUM, -# define MIDI_STREAM_IN_EPADDR (ENDPOINT_DIR_IN | MIDI_STREAM_IN_EPNUM) -# define MIDI_STREAM_OUT_EPADDR (ENDPOINT_DIR_OUT | MIDI_STREAM_OUT_EPNUM) -#endif -#ifdef VIRTSER_ENABLE + #define MIDI_STREAM_IN_EPADDR (ENDPOINT_DIR_IN | MIDI_STREAM_IN_EPNUM) + #define MIDI_STREAM_OUT_EPADDR (ENDPOINT_DIR_OUT | MIDI_STREAM_OUT_EPNUM) + #endif + + #ifdef VIRTSER_ENABLE CDC_NOTIFICATION_EPNUM = NEXT_EPNUM, CDC_IN_EPNUM = NEXT_EPNUM, CDC_OUT_EPNUM = NEXT_EPNUM, -# define CDC_NOTIFICATION_EPADDR (ENDPOINT_DIR_IN | CDC_NOTIFICATION_EPNUM) -# define CDC_IN_EPADDR (ENDPOINT_DIR_IN | CDC_IN_EPNUM) -# define CDC_OUT_EPADDR (ENDPOINT_DIR_OUT | CDC_OUT_EPNUM) -#endif + #define CDC_NOTIFICATION_EPADDR (ENDPOINT_DIR_IN | CDC_NOTIFICATION_EPNUM) + #define CDC_IN_EPADDR (ENDPOINT_DIR_IN | CDC_IN_EPNUM) + #define CDC_OUT_EPADDR (ENDPOINT_DIR_OUT | CDC_OUT_EPNUM) + #endif }; -#if defined(PROTOCOL_LUFA) -/* LUFA tells us total endpoints including control */ -#define MAX_ENDPOINTS (ENDPOINT_TOTAL_ENDPOINTS - 1) -#elif defined(PROTOCOL_CHIBIOS) -/* ChibiOS gives us number of available user endpoints, not control */ -#define MAX_ENDPOINTS USB_MAX_ENDPOINTS -#endif -/* TODO - ARM_ATSAM */ - - -#if (NEXT_EPNUM - 1) > MAX_ENDPOINTS -# error There are not enough available endpoints to support all functions. Remove some in the rules.mk file. (MOUSEKEY, EXTRAKEY, CONSOLE, NKRO, MIDI, SERIAL, STENO) -#endif - -#define KEYBOARD_EPSIZE 8 -#define SHARED_EPSIZE 32 -#define MOUSE_EPSIZE 8 -#define RAW_EPSIZE 32 -#define CONSOLE_EPSIZE 32 -#define MIDI_STREAM_EPSIZE 64 -#define CDC_NOTIFICATION_EPSIZE 8 -#define CDC_EPSIZE 16 - -uint16_t get_usb_descriptor(const uint16_t wValue, - const uint16_t wIndex, - const void** const DescriptorAddress); - -/* new API */ -#if LUFA_VERSION_INTEGER < 0x140302 - #undef VERSION_BCD - #define VERSION_BCD(Major, Minor, Revision) \ - CPU_TO_LE16( ((Major & 0xFF) << 8) | \ - ((Minor & 0x0F) << 4) | \ - (Revision & 0x0F) ) -#endif - + #ifdef PROTOCOL_LUFA + // LUFA tells us total endpoints including control + #define MAX_ENDPOINTS (ENDPOINT_TOTAL_ENDPOINTS - 1) + #elif defined(PROTOCOL_CHIBIOS) + // ChibiOS gives us number of available user endpoints, not control + #define MAX_ENDPOINTS USB_MAX_ENDPOINTS + #endif + + // TODO - ARM_ATSAM + + #if (NEXT_EPNUM - 1) > MAX_ENDPOINTS + #error There are not enough available endpoints to support all functions. Please disable one or more of the following: Mouse Keys, Extra Keys, Console, NKRO, MIDI, Serial, Steno + #endif + + #define KEYBOARD_EPSIZE 8 + #define SHARED_EPSIZE 32 + #define MOUSE_EPSIZE 8 + #define RAW_EPSIZE 32 + #define CONSOLE_EPSIZE 32 + #define MIDI_STREAM_EPSIZE 64 + #define CDC_NOTIFICATION_EPSIZE 8 + #define CDC_EPSIZE 16 + +uint16_t get_usb_descriptor(const uint16_t wValue, const uint16_t wIndex, const void** const DescriptorAddress); #endif -- cgit v1.2.3-70-g09d2 From 51ee2449060517a96cedb7c38b86a7de0be2ecab Mon Sep 17 00:00:00 2001 From: Drashna Jaelre Date: Tue, 9 Jul 2019 12:50:53 -0700 Subject: Language Keymap extras backport from ZSA fork (#6198) * Swedish extra keymap refactor * Fix swedish $ sign definition (#81) * Fix br abnt2 keymap compilation error * Add PR changelog doc * Update PR6198.md --- docs/ChangeLog/20190830/PR6198.md | 4 ++ quantum/keymap_extras/keymap_br_abnt2.h | 2 +- quantum/keymap_extras/keymap_swedish.h | 84 ++++++++++++++++++++++++--------- 3 files changed, 66 insertions(+), 24 deletions(-) create mode 100644 docs/ChangeLog/20190830/PR6198.md (limited to 'docs') diff --git a/docs/ChangeLog/20190830/PR6198.md b/docs/ChangeLog/20190830/PR6198.md new file mode 100644 index 000000000..9141ac250 --- /dev/null +++ b/docs/ChangeLog/20190830/PR6198.md @@ -0,0 +1,4 @@ +* Backport changes to keymap language files from ZSA fork + * Fixes an issue in the `keymap_br_abnt2.h` file that includes the wrong source (`keymap_common.h` instead of `keymap.h`) + * Updates the `keymap_swedish.h` file to be specific to swedish, and not just "nordic" in general. + * Any keymaps using this will need to remove `NO_*` and replace it with `SE_*`. diff --git a/quantum/keymap_extras/keymap_br_abnt2.h b/quantum/keymap_extras/keymap_br_abnt2.h index b001139dd..63b917d8f 100644 --- a/quantum/keymap_extras/keymap_br_abnt2.h +++ b/quantum/keymap_extras/keymap_br_abnt2.h @@ -17,7 +17,7 @@ #ifndef KEYMAP_BR_ABNT2_H #define KEYMAP_BR_ABNT2_H -#include "keymap_common.h" +#include "keymap.h" /* Scan codes for the Brazilian ABNT2 keyboard layout */ diff --git a/quantum/keymap_extras/keymap_swedish.h b/quantum/keymap_extras/keymap_swedish.h index d1a0f4f22..cc359efcd 100644 --- a/quantum/keymap_extras/keymap_swedish.h +++ b/quantum/keymap_extras/keymap_swedish.h @@ -17,34 +17,72 @@ #ifndef KEYMAP_SWEDISH_H #define KEYMAP_SWEDISH_H -#include "keymap_nordic.h" +#include "keymap.h" -// There are slight differrences in the keyboards in the nordic contries +// Normal characters +#define SE_HALF KC_GRV +#define SE_PLUS KC_MINS +#define SE_ACUT KC_EQL -// Swedish redifinitions from the nordic keyset -#undef NO_AE -#define NO_AE KC_QUOT // ä -#undef NO_CIRC -#define NO_CIRC LSFT(KC_RBRC) // ^ -#undef NO_OSLH -#define NO_OSLH KC_SCLN // ö +#define SE_AM KC_LBRC +#define SE_QUOT KC_RBRC // this is the "umlaut" char on Nordic keyboards, Apple layout +#define SE_AE KC_QUOT // ä +#define SE_OSLH KC_SCLN // ö +#define SE_APOS KC_NUHS -// Additional Swedish keys not defined in the nordic keyset -#define NO_AA KC_LBRC // å -#define NO_ASTR LSFT(KC_BSLS) // * +#define SE_LESS KC_NUBS +#define SE_MINS KC_SLSH + +// Shifted characters +#define SE_SECT LSFT(SE_HALF) +#define SE_QUO2 LSFT(KC_2) +#define SE_BULT LSFT(KC_4) +#define SE_AMPR LSFT(KC_6) +#define SE_SLSH LSFT(KC_7) +#define SE_LPRN LSFT(KC_8) +#define SE_RPRN LSFT(KC_9) +#define SE_EQL LSFT(KC_0) +#define SE_QUES LSFT(SE_PLUS) +#define SE_GRV LSFT(SE_ACUT) + +#define SE_CIRC LSFT(KC_RBRC) // ^ + +#define SE_GRTR LSFT(SE_LESS) +#define SE_SCLN LSFT(KC_COMM) +#define SE_COLN LSFT(KC_DOT) +#define SE_UNDS LSFT(SE_MINS) + +// Alt Gr-ed characters +#define SE_AT ALGR(KC_2) +#define SE_PND ALGR(KC_3) +#define SE_DLR ALGR(KC_4) +#define SE_LCBR ALGR(KC_7) +#define SE_LBRC ALGR(KC_8) +#define SE_RBRC ALGR(KC_9) +#define SE_RCBR ALGR(KC_0) +#define SE_PIPE ALGR(KC_NUBS) + +#define SE_EURO ALGR(KC_E) +#define SE_TILD ALGR(SE_QUOT) + +#define SE_BSLS ALGR(KC_MINS) +#define SE_MU ALGR(KC_M) + +#define SE_AA KC_LBRC // å +#define SE_ASTR LSFT(KC_BSLS) // * // Norwegian unique MAC characters (not vetted for Swedish) -#define NO_ACUT_MAC KC_EQL // = -#define NO_APOS_MAC KC_NUBS // ' -#define NO_AT_MAC KC_BSLS // @ -#define NO_BSLS_MAC ALGR(LSFT(KC_7)) // '\' -#define NO_DLR_MAC LSFT(KC_4) // $ -#define NO_GRV_MAC ALGR(NO_BSLS) // ` -#define NO_GRTR_MAC LSFT(KC_GRV) // > -#define NO_LCBR_MAC ALGR(LSFT(KC_8)) // { -#define NO_LESS_MAC KC_GRV // < -#define NO_PIPE_MAC ALGR(KC_7) // | -#define NO_RCBR_MAC ALGR(LSFT(KC_9)) // } +#define SE_ACUT_MAC KC_EQL // = +#define SE_APOS_MAC KC_NUBS // ' +#define SE_AT_MAC KC_BSLS // @ +#define SE_BSLS_MAC ALGR(LSFT(KC_7)) // '\' +#define SE_DLR_MAC ALGR(KC_4) // $ +#define SE_GRV_MAC ALGR(SE_BSLS) // ` +#define SE_GRTR_MAC LSFT(KC_GRV) // > +#define SE_LCBR_MAC ALGR(LSFT(KC_8)) // { +#define SE_LESS_MAC KC_GRV // < +#define SE_PIPE_MAC ALGR(KC_7) // | +#define SE_RCBR_MAC ALGR(LSFT(KC_9)) // } #endif -- cgit v1.2.3-70-g09d2 From 554e4bf25c4bcbf263b2e73c6148b7ea1d520762 Mon Sep 17 00:00:00 2001 From: fauxpark Date: Wed, 10 Jul 2019 08:47:35 +1000 Subject: Migrate ACTION_LAYER_MOMENTARYs to MO() (#5176) * Migrate ACTION_LAYER_MOMENTARYs to MO() * Add changelog entry * Update docs/ChangeLog/20190830/PR5176.md Co-Authored-By: skullydazed --- docs/ChangeLog/20190830/PR5176.md | 4 ++++ keyboards/atomic/keymaps/abienz.c | 9 ++------- keyboards/atomic/keymaps/twolayer.c | 5 ----- keyboards/atreus/keymaps/erlandsona/keymap.c | 3 +-- keyboards/atreus62/keymaps/atreus52/keymap.c | 9 +++++---- .../bpiphany/frosty_flake/keymaps/QFR_JM/keymap.c | 4 +--- .../bpiphany/pegasushoof/keymaps/blowrak/keymap.c | 5 ++--- keyboards/dz60/keymaps/LEdiodes/keymap.c | 5 ----- keyboards/gh60/revc/keymaps/maxr1998/keymap.c | 8 ++------ keyboards/gh60/revc/keymaps/robotmaxtron/keymap.c | 3 +-- keyboards/gh60/revc/keymaps/sethbc/keymap.c | 3 +-- keyboards/hhkb/keymaps/shela/keymap.c | 11 +++++------ keyboards/jd45/keymaps/justin/keymap.c | 9 +++++---- keyboards/keebio/nyquist/keymaps/DivergeJM/keymap.c | 6 ++---- keyboards/org60/keymaps/boardy/keymap.c | 13 +++---------- keyboards/planck/keymaps/angerthosenear/keymap.c | 11 ++++------- keyboards/planck/keymaps/austin/keymap.c | 13 +++++-------- keyboards/planck/keymaps/charlie/keymap.c | 5 ++--- keyboards/planck/keymaps/daniel/keymap.c | 15 ++++----------- keyboards/planck/keymaps/david/keymap.c | 11 ++++------- keyboards/planck/keymaps/dzobert/keymap.c | 11 ++++------- keyboards/planck/keymaps/joe/keymap.c | 17 +++++++---------- keyboards/planck/keymaps/kyle/keymap.c | 11 ++++------- keyboards/planck/keymaps/leo/keymap.c | 9 +-------- keyboards/planck/keymaps/lucas/keymap.c | 6 ++---- keyboards/planck/keymaps/max/keymap.c | 13 +++++-------- .../old_keymap_files/common_keymaps/keymap_brett.c | 12 ++++++------ .../old_keymap_files/common_keymaps/keymap_dotcom.c | 8 ++++---- .../old_keymap_files/common_keymaps/keymap_jack.c | 14 +++++++------- .../old_keymap_files/common_keymaps/keymap_joe.c | 16 ++++++++-------- .../old_keymap_files/common_keymaps/keymap_matthew.c | 8 ++++---- .../old_keymap_files/common_keymaps/keymap_nathan.c | 7 ++++--- .../old_keymap_files/common_keymaps/keymap_paul.c | 18 +++++++++--------- .../old_keymap_files/common_keymaps/keymap_reed.c | 14 +++++++------- .../old_keymap_files/common_keymaps/keymap_sean.c | 13 +++++++------ .../old_keymap_files/common_keymaps/keymap_shane.c | 9 +++++---- .../old_keymap_files/common_keymaps/keymap_simon.c | 8 ++++---- .../old_keymap_files/common_keymaps/keymap_tim.c | 12 ++++++------ .../old_keymap_files/common_keymaps/keymap_wilba.c | 14 +++++++------- keyboards/sentraq/s60_x/keymaps/ansi_qwertz/keymap.c | 4 +--- keyboards/sentraq/s60_x/keymaps/hasu/keymap.c | 17 +++++++++-------- keyboards/sentraq/s60_x/keymaps/hhkb/keymap.c | 11 +++-------- keyboards/sentraq/s60_x/keymaps/jpec/keymap.c | 5 +++-- keyboards/sentraq/s60_x/keymaps/poker/keymap.c | 15 ++++++++------- keyboards/sentraq/s65_x/keymaps/kelorean/keymap.c | 1 - keyboards/sentraq/s65_x/keymaps/nall/keymap.c | 1 - keyboards/whitefox/keymaps/kim-kim/keymap.c | 4 +--- keyboards/whitefox/keymaps/matt3o/keymap.c | 6 ++---- keyboards/winkeyless/bface/keymaps/kpeatt/keymap.c | 4 ---- keyboards/xd60/keymaps/Jos/keymap.c | 4 +--- keyboards/xd60/keymaps/birkir/keymap.c | 11 +++-------- keyboards/xd60/keymaps/edulpn/keymap.c | 9 ++------- keyboards/xd60/keymaps/edulpn64/keymap.c | 9 ++------- keyboards/xd60/keymaps/kmontag42/keymap.c | 9 ++------- keyboards/xd60/keymaps/krusli/keymap.c | 5 ----- keyboards/xd60/keymaps/split_bksp_arrows/keymap.c | 17 +++++++++++++---- keyboards/xd60/keymaps/stanleylai/keymap.c | 14 ++++---------- keyboards/xd60/keymaps/supercoffee/keymap.c | 9 ++------- layouts/community/60_iso/unxmaal/keymap.c | 1 - layouts/community/ergodox/guni/keymap.c | 1 - layouts/community/ergodox/ishigoya-jp/keymap.c | 8 ++------ .../osx_whiskey_tango_foxtrot_capslock/keymap.c | 14 ++++++-------- 62 files changed, 218 insertions(+), 333 deletions(-) create mode 100644 docs/ChangeLog/20190830/PR5176.md (limited to 'docs') diff --git a/docs/ChangeLog/20190830/PR5176.md b/docs/ChangeLog/20190830/PR5176.md new file mode 100644 index 000000000..c01b2cb1e --- /dev/null +++ b/docs/ChangeLog/20190830/PR5176.md @@ -0,0 +1,4 @@ +* Migrating `ACTION_LAYER_MOMENTARY()` entries in `fn_actions` to `MO()` keycodes + * `fn_actions` is deprecated, and its functionality has been superseded by direct keycodes and `process_record_user()` + * The end result of removing this obsolete feature should result in a decent reduction in firmware size and code complexity + * All keymaps affected are recommended to switch away from `fn_actions` in favour of the [custom keycode](https://docs.qmk.fm/#/custom_quantum_functions) and [macro](https://docs.qmk.fm/#/feature_macros) features diff --git a/keyboards/atomic/keymaps/abienz.c b/keyboards/atomic/keymaps/abienz.c index 2e69165f2..5bc00aa82 100644 --- a/keyboards/atomic/keymaps/abienz.c +++ b/keyboards/atomic/keymaps/abienz.c @@ -6,22 +6,17 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_TAB, CM_Q, CM_W, CM_F, CM_P, CM_G, CM_J, CM_L, CM_U, CM_Y, CM_SCLN, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL , KC_BSPC, CM_A, CM_R, CM_S, CM_T, CM_D, CM_H, CM_N, CM_E, CM_I, CM_O, KC_QUOT, KC_ENT, KC_NO, KC_PGUP, KC_LSFT, CM_Z, CM_X, CM_C, CM_V, CM_B, CM_K, CM_M, CM_COMM, CM_DOT, CM_SLSH, KC_RSFT, KC_NO, KC_UP, KC_PGDN, - KC_LCTL, KC_LGUI, KC_NO, KC_LALT, FUNC(1), KC_SPC, KC_NO, KC_RALT, FUNC(2), KC_RGUI, KC_NO, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, + KC_LCTL, KC_LGUI, KC_NO, KC_LALT, MO(1), KC_SPC, KC_NO, KC_RALT, MO(1), KC_RGUI, KC_NO, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, ), [1] = LAYOUT_grid( /* function */ KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_BSPC, KC_NO , KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_SLEP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_CALC, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLU, KC_MPLY, - KC_TRNS, KC_TRNS, KC_NO, KC_TRNS, FUNC(1), KC_TRNS, KC_NO, KC_TRNS, FUNC(2), KC_TRNS, KC_NO, KC_TRNS, KC_MPRV, KC_VOLD, KC_MNXT, + KC_TRNS, KC_TRNS, KC_NO, KC_TRNS, MO(1), KC_TRNS, KC_NO, KC_TRNS, MO(1), KC_TRNS, KC_NO, KC_TRNS, KC_MPRV, KC_VOLD, KC_MNXT, ), }; -const uint16_t PROGMEM fn_actions[] = { - [1] = ACTION_LAYER_MOMENTARY(1), - [2] = ACTION_LAYER_MOMENTARY(1), -}; - const macro_t * action_get_macro(keyrecord_t * record, uint8_t id, uint8_t opt) { // MACRODOWN only works in this function switch (id) { diff --git a/keyboards/atomic/keymaps/twolayer.c b/keyboards/atomic/keymaps/twolayer.c index f0ff56467..9ecbbc6df 100644 --- a/keyboards/atomic/keymaps/twolayer.c +++ b/keyboards/atomic/keymaps/twolayer.c @@ -45,11 +45,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ), }; -const uint16_t PROGMEM fn_actions[] = { - [1] = ACTION_LAYER_MOMENTARY(1), - [2] = ACTION_LAYER_MOMENTARY(1), -}; - const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) { // MACRODOWN only works in this function switch(id) { diff --git a/keyboards/atreus/keymaps/erlandsona/keymap.c b/keyboards/atreus/keymaps/erlandsona/keymap.c index e890e7f52..e25f4f089 100644 --- a/keyboards/atreus/keymaps/erlandsona/keymap.c +++ b/keyboards/atreus/keymaps/erlandsona/keymap.c @@ -16,7 +16,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P , KC_A , KC_S , KC_D , KC_F , KC_G , KC_H , KC_J , KC_K , KC_L , KC_SCLN , SFT_T(KC_Z), KC_X , KC_C , KC_V , KC_B , KC_N , KC_M , KC_COMM, KC_DOT , SFT_T(KC_QUOT), - KC_LCTL , KC_LALT, KC_LALT, KC_LGUI, KC_BSPC, KC_ESC, KC_ENT, KC_SPC, F(NUMS), KC_RALT, KC_SLSH, KC_BSLS + KC_LCTL , KC_LALT, KC_LALT, KC_LGUI, KC_BSPC, KC_ESC, KC_ENT, KC_SPC, MO(NUMS),KC_RALT, KC_SLSH, KC_BSLS ), [NUMS] = LAYOUT( /* Numbers / Arrows / Symbols */ @@ -39,7 +39,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { // so that I can get out of mouse mode just by tapping/holding my base layer FN key. const uint16_t PROGMEM fn_actions[] = { [BASE] = ACTION_LAYER_OFF(2, 1), // switch back to layer 0 - [NUMS] = ACTION_LAYER_MOMENTARY(1), // to Fn overlay [MOUS] = ACTION_LAYER_ON(2, 1) // switch to layer 2 }; diff --git a/keyboards/atreus62/keymaps/atreus52/keymap.c b/keyboards/atreus62/keymaps/atreus52/keymap.c index 72bb88653..c7dcb6765 100644 --- a/keyboards/atreus62/keymaps/atreus52/keymap.c +++ b/keyboards/atreus62/keymaps/atreus52/keymap.c @@ -8,13 +8,16 @@ #define BDO 4 #define RESETL 5 +#define KC_RAIS MO(RAISE) +#define KC_LOWR MO(LOWER) + const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [DVORAK] = LAYOUT_kc( NO, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, NO, \ NO, QUOT, COMM, DOT, P, Y, F, G, C, R, L, NO, \ NO, A, O, E, U, I, D, H, T, N, S, NO, \ NO, SCLN, Q, J, K, X, B, M, W, V, Z, NO, \ - NO, FN2, LALT, LCTL, FN1, LSFT, BSPC, ENT, SPC, FN0, LGUI, LEFT, RGHT, NO + NO, FN2, LALT, LCTL, LOWR, LSFT, BSPC, ENT, SPC, RAIS, LGUI, LEFT, RGHT, NO ), [QWERTY] = LAYOUT_kc( @@ -22,7 +25,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { NO, Q, W, E, R, T, Y, U, I, O, P, NO, \ NO, A, S, D, F, G, H, J, K, L, SCLN, NO, \ NO, Z, X, C, V, B, N, M, COMM, DOT, SLSH, NO, \ - NO, FN2, LALT, LCTL, FN1, LSFT, BSPC, ENT, SPC, FN0, LGUI, LEFT, RGHT, NO + NO, FN2, LALT, LCTL, LOWR, LSFT, BSPC, ENT, SPC, RAIS, LGUI, LEFT, RGHT, NO ), [RAISE] = LAYOUT_kc( @@ -59,8 +62,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { }; const uint16_t PROGMEM fn_actions[] = { - [0] = ACTION_LAYER_MOMENTARY(RAISE), // Raise layer - [1] = ACTION_LAYER_MOMENTARY(LOWER), // Lower layer [2] = ACTION_LAYER_TOGGLE(BDO), // BDO layer [3] = ACTION_LAYER_TOGGLE(RESETL) // RESET layer }; diff --git a/keyboards/bpiphany/frosty_flake/keymaps/QFR_JM/keymap.c b/keyboards/bpiphany/frosty_flake/keymaps/QFR_JM/keymap.c index f76b7e02c..d9a81b195 100644 --- a/keyboards/bpiphany/frosty_flake/keymaps/QFR_JM/keymap.c +++ b/keyboards/bpiphany/frosty_flake/keymaps/QFR_JM/keymap.c @@ -23,12 +23,10 @@ enum custom_macros { const uint16_t PROGMEM fn_actions[] = { [0] = ACTION_LAYER_TAP_KEY(_LOWER, KC_SPC), //Hold for momentary Lower layer, Tap for Space, - [1] = ACTION_LAYER_MOMENTARY(_MOUSE) //Hold for momentary MOUSE - }; #define SPC_LW FUNC(0) -#define MSE FUNC(1) +#define MSE MO(_MOUSE) #define PIPE M(R_PIPE) #define POINT M(R_POINT) diff --git a/keyboards/bpiphany/pegasushoof/keymaps/blowrak/keymap.c b/keyboards/bpiphany/pegasushoof/keymaps/blowrak/keymap.c index 7db7e5d39..aad2d643c 100644 --- a/keyboards/bpiphany/pegasushoof/keymaps/blowrak/keymap.c +++ b/keyboards/bpiphany/pegasushoof/keymaps/blowrak/keymap.c @@ -48,7 +48,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_TAB, SE_AO, SE_AE, SE_OE, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_COMM,SE_CIRC,SE_QUOT, KC_DEL, KC_END, KC_PGDN, \ KC_LCTRL,KC_A, KC_O, KC_E, KC_U, KC_I, KC_H, KC_D, KC_T, KC_N, KC_S, SE_MINS, KC_ENT, \ KC_LSFT, SE_LTGT,KC_DOT, KC_Q, KC_J, KC_K, KC_B, KC_X, KC_M, KC_W, KC_V, KC_Z, KC_RSFT, KC_UP, \ - KC_FN0, KC_LGUI,KC_LALT, KC_SPC, KC_RALT,KC_RGUI,KC_MENU,KC_FN1, KC_LEFT,KC_DOWN,KC_RGHT), + MO(KM_MEDIA),KC_LGUI,KC_LALT, KC_SPC, KC_RALT,KC_RGUI,KC_MENU,KC_FN1, KC_LEFT,KC_DOWN,KC_RGHT), /* Layer 1: Standard ISO layer */ [KM_QWERTY] = LAYOUT( \ KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR,KC_SLCK,KC_PAUS, \ @@ -56,7 +56,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, SE_AO, SE_CIRC,SE_QUOT, KC_DEL, KC_END, KC_PGDN, \ KC_LCTRL,KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, SE_OE, SE_AE, KC_ENT, \ KC_LSFT, SE_LTGT,KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM,KC_DOT, SE_MINS, KC_RSFT, KC_UP, \ - KC_FN0, KC_LGUI,KC_LALT, KC_SPC, KC_RALT,KC_RGUI,KC_MENU,KC_FN1, KC_LEFT,KC_DOWN,KC_RGHT), + MO(KM_MEDIA),KC_LGUI,KC_LALT, KC_SPC, KC_RALT,KC_RGUI,KC_MENU,KC_FN1, KC_LEFT,KC_DOWN,KC_RGHT), /* Layer 2: Media layer */ [KM_MEDIA] = LAYOUT( \ _______, _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, KC_WAKE,KC_PWR, KC_SLEP, \ @@ -76,7 +76,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { }; const uint16_t PROGMEM fn_actions[] = { - [0] = ACTION_LAYER_MOMENTARY(KM_MEDIA), [1] = ACTION_LAYER_TOGGLE(KM_QWERTY) }; diff --git a/keyboards/dz60/keymaps/LEdiodes/keymap.c b/keyboards/dz60/keymaps/LEdiodes/keymap.c index c6a9214a0..3ac0047a3 100644 --- a/keyboards/dz60/keymaps/LEdiodes/keymap.c +++ b/keyboards/dz60/keymaps/LEdiodes/keymap.c @@ -100,11 +100,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { }; -// Custom Actions -const uint16_t PROGMEM fn_actions[] = { - [0] = ACTION_LAYER_MOMENTARY(1), // to Fn overlay -}; - // Macros const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) { diff --git a/keyboards/gh60/revc/keymaps/maxr1998/keymap.c b/keyboards/gh60/revc/keymaps/maxr1998/keymap.c index eff94ff65..4a1ad54b4 100644 --- a/keyboards/gh60/revc/keymaps/maxr1998/keymap.c +++ b/keyboards/gh60/revc/keymaps/maxr1998/keymap.c @@ -38,7 +38,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Z, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_NO, \ KC_LOCK, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_HOME, KC_ENT, \ KC_LSFT, KC_BSLS, KC_Y, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_UP, KC_RSFT,\ - KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_NO, F(0), KC_LEFT, KC_DOWN, KC_RGHT), + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_NO, MO(1), KC_LEFT, KC_DOWN, KC_RGHT), /* 1: fn */ LAYOUT( KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, \ @@ -48,10 +48,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), }; -const uint16_t PROGMEM fn_actions[] = { - [0] = ACTION_LAYER_MOMENTARY(1) // to Fn overlay -}; - void matrix_scan_user(void) { } @@ -80,4 +76,4 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { } } return true; -} \ No newline at end of file +} diff --git a/keyboards/gh60/revc/keymaps/robotmaxtron/keymap.c b/keyboards/gh60/revc/keymaps/robotmaxtron/keymap.c index 649cbec38..2f3f10f5c 100644 --- a/keyboards/gh60/revc/keymaps/robotmaxtron/keymap.c +++ b/keyboards/gh60/revc/keymaps/robotmaxtron/keymap.c @@ -25,7 +25,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_TAB,KC_Q,KC_W,KC_E,KC_R,KC_T,KC_Y,KC_U,KC_I,KC_O,KC_P,KC_LBRC,KC_RBRC,KC_BSLS, \ F(2),KC_A,KC_S,KC_D,KC_F,KC_G,KC_H,KC_J,KC_K,KC_L,KC_SCLN,KC_QUOT,KC_NO,KC_ENT, \ KC_LSFT,KC_NO,KC_Z,KC_X,KC_C,KC_V,KC_B,KC_N,KC_M,KC_COMM,KC_DOT,KC_SLSH,KC_NO,KC_RSFT, \ - KC_LCTL,KC_LGUI,KC_LALT, KC_SPC, KC_NO,KC_RALT,F(0),KC_APP,KC_RCTL), + KC_LCTL,KC_LGUI,KC_LALT, KC_SPC, KC_NO,KC_RALT,MO(2),KC_APP,KC_RCTL), /* * Locking arrow keys to WASD for when you need dedicated arrow keys @@ -106,7 +106,6 @@ enum function_id { }; const uint16_t PROGMEM fn_actions[] = { - [0] = ACTION_LAYER_MOMENTARY(2), // Momentary Fn overlay [1] = ACTION_LAYER_TOGGLE(1), // Toggle Arrow Layer overlay [2] = ACTION_LAYER_TAP_KEY(2, KC_CAPS), // Tap to toggle caps lock and hold to activate function layer [3] = ACTION_LAYER_TOGGLE(3), // Toggle Underglow Layer overlay diff --git a/keyboards/gh60/revc/keymaps/sethbc/keymap.c b/keyboards/gh60/revc/keymaps/sethbc/keymap.c index 6c2c00ec2..f2802827a 100644 --- a/keyboards/gh60/revc/keymaps/sethbc/keymap.c +++ b/keyboards/gh60/revc/keymaps/sethbc/keymap.c @@ -9,7 +9,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { F(0),KC_1,KC_2,KC_3,KC_4,KC_5,KC_6,KC_7,KC_8,KC_9,KC_0,KC_MINS,KC_EQL,KC_BSLS,KC_GRV,\ KC_TAB,KC_Q,KC_W,KC_E,KC_R,KC_T,KC_Y,KC_U,KC_I,KC_O,KC_P,KC_LBRC,KC_RBRC,KC_BSPC,\ KC_LCTL,KC_A,KC_S,KC_D,KC_F,KC_G,KC_H,KC_J,KC_K,KC_L,KC_SCLN,KC_QUOT,KC_ENT,\ - KC_LSFT,KC_Z,KC_X,KC_C,KC_V,KC_B,KC_N,KC_M,KC_COMM,KC_DOT,KC_SLSH,KC_RSFT,F(1),\ + KC_LSFT,KC_Z,KC_X,KC_C,KC_V,KC_B,KC_N,KC_M,KC_COMM,KC_DOT,KC_SLSH,KC_RSFT,MO(1),\ KC_LCTL,KC_LALT,KC_LGUI, KC_SPC, KC_RGUI,KC_RALT,KC_APP,KC_RCTL), /* 1: fn */ LAYOUT_60_ansi_split_bs_rshift( @@ -26,7 +26,6 @@ enum function_id { const uint16_t PROGMEM fn_actions[] = { [0] = ACTION_FUNCTION(SHIFT_ESC), - [1] = ACTION_LAYER_MOMENTARY(1), // to Fn overlay }; const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) diff --git a/keyboards/hhkb/keymaps/shela/keymap.c b/keyboards/hhkb/keymaps/shela/keymap.c index 5f3881539..dae85ad9c 100644 --- a/keyboards/hhkb/keymaps/shela/keymap.c +++ b/keyboards/hhkb/keymaps/shela/keymap.c @@ -35,7 +35,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { LAYOUT(KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_GRV, KC_BSPC, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, - OSM(MOD_LSFT), KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_FN0, + OSM(MOD_LSFT), KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(HHKB), KC_LALT, KC_LGUI, KC_FN2, KC_RGUI, KC_RALT), /* Layer 1: Pseudo US Layout Layer @@ -55,7 +55,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { LAYOUT(KC_ESC, KC_FN1, KC_FN1, KC_FN1, KC_FN1, KC_FN1, KC_FN1, KC_FN1, KC_FN1, KC_FN1, KC_FN1, KC_FN1, KC_FN1, KC_FN1, KC_BSPC, KC_TAB, KC_FN1, KC_FN1, KC_FN1, KC_FN1, KC_FN1, KC_FN1, KC_FN1, KC_FN1, KC_FN1, KC_FN1, KC_FN1, KC_FN1, KC_FN1, KC_LCTL, KC_FN1, KC_FN1, KC_FN1, KC_FN1, KC_FN1, KC_FN1, KC_FN1, KC_FN1, KC_FN1, KC_FN1, KC_FN1, KC_ENT, - KC_LSFT, KC_FN1, KC_FN1, KC_FN1, KC_FN1, KC_FN1, KC_FN1, KC_FN1, KC_FN1, KC_FN1, KC_FN1, KC_RSFT, KC_FN0, + KC_LSFT, KC_FN1, KC_FN1, KC_FN1, KC_FN1, KC_FN1, KC_FN1, KC_FN1, KC_FN1, KC_FN1, KC_FN1, KC_RSFT, MO(HHKB), KC_LGUI, KC_FN3, KC_FN2, KC_FN4, KC_RGUI), /* Layer 2: Dvorak Layer @@ -75,7 +75,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { LAYOUT(KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_LBRC, KC_RBRC, KC_GRV, KC_BSPC, KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_SLSH, KC_EQL, KC_BSLS, KC_LCTL, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_MINS, KC_ENT, - KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_RSFT, KC_FN0, + KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_RSFT, MO(HHKB), KC_LALT, KC_LGUI, KC_FN2, KC_RGUI, KC_RALT), /* Layer 3: Mouse layer @@ -95,7 +95,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { LAYOUT(KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_NO, KC_TRNS, KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_WH_L, KC_WH_D, KC_WH_U, KC_WH_R, KC_NO, KC_NO, KC_NO, KC_NO, KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_MS_L, KC_MS_D, KC_MS_U, KC_MS_R, KC_NO, KC_NO, KC_TRNS, - KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_BTN1, KC_BTN2, KC_BTN3, KC_NO, KC_NO, KC_TRNS, KC_FN0, + KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_BTN1, KC_BTN2, KC_BTN3, KC_NO, KC_NO, KC_TRNS, MO(HHKB), KC_TRNS, KC_TRNS, KC_BTN1, KC_TRNS, KC_TRNS), /* Layer 4: Tenkey layer @@ -115,7 +115,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { LAYOUT(KC_ESC, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_PSLS, KC_PAST, KC_PMNS, KC_NO, KC_BSPC, KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_KP_7, KC_KP_8, KC_KP_9, KC_PPLS, KC_NO, KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_KP_4, KC_KP_5, KC_KP_6, KC_PENT, - KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_KP_1, KC_KP_2, KC_KP_3, KC_PPLS, KC_FN0, + KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_KP_1, KC_KP_2, KC_KP_3, KC_PPLS, MO(HHKB), KC_TRNS, KC_TRNS, KC_FN2, KC_KP_0, KC_PDOT), /* Layer 5: HHKB mode (HHKB Fn) @@ -182,7 +182,6 @@ void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) * Fn action definition */ const uint16_t PROGMEM fn_actions[] = { - [0] = ACTION_LAYER_MOMENTARY(HHKB), [1] = ACTION_FUNCTION(PSEUDO_US_FUNCTION), [2] = ACTION_LAYER_TAP_KEY(SPACE_FN, KC_SPACE), [3] = ACTION_MODS_TAP_KEY(MOD_LALT, KC_MHEN), diff --git a/keyboards/jd45/keymaps/justin/keymap.c b/keyboards/jd45/keymaps/justin/keymap.c index 4590374e9..91cc760c6 100644 --- a/keyboards/jd45/keymaps/justin/keymap.c +++ b/keyboards/jd45/keymaps/justin/keymap.c @@ -1,11 +1,15 @@ #include QMK_KEYBOARD_H +#define KC_MO1 MO(1) +#define KC_MO2 MO(2) +#define KC_MO3 MO(3) + const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [0] = LAYOUT_kc( ESC, Q, W, F, P, G, J, L, U, Y, SCLN, QUOT, BSPC, FN8, A, R, S, T, D, H, N, E, I, O, ENT, LSFT, Z, X, C, V, B, K, M, COMM, DOT, SLSH, FN6, - FN4, LGUI, FN7, FN2, FN1, SPC, FN5, RALT, FN3, FN0), + FN4, LGUI, FN7, MO2, MO1, SPC, FN5, RALT, MO3, FN0), [1] = LAYOUT_kc( TRNS, FN10, FN11, FN12, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, UP, DEL, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, HOME, PGUP, LEFT, RGHT, @@ -37,9 +41,6 @@ enum macro_id const uint16_t PROGMEM fn_actions[] = { [0] = ACTION_MODS_TAP_KEY(MOD_LCTL, KC_MINS), - [1] = ACTION_LAYER_MOMENTARY(1), // FN1 - [2] = ACTION_LAYER_MOMENTARY(2), // FN2 - [3] = ACTION_LAYER_MOMENTARY(3), // FN3 [4] = ACTION_MODS_TAP_KEY(MOD_LSFT, KC_GRV), [5] = ACTION_MODS_TAP_KEY(MOD_RSFT, KC_RGUI), [6] = ACTION_MODS_TAP_KEY(MOD_RSFT, KC_CAPS), diff --git a/keyboards/keebio/nyquist/keymaps/DivergeJM/keymap.c b/keyboards/keebio/nyquist/keymaps/DivergeJM/keymap.c index c0c1760cd..ba12e1bf5 100644 --- a/keyboards/keebio/nyquist/keymaps/DivergeJM/keymap.c +++ b/keyboards/keebio/nyquist/keymaps/DivergeJM/keymap.c @@ -47,13 +47,11 @@ enum { const uint16_t PROGMEM fn_actions[] = { [0] = ACTION_LAYER_TAP_KEY(_LOWER, KC_SPC), //Hold for momentary Lower layer, Tap for Space, [1] = ACTION_LAYER_TAP_KEY(_RAISE, KC_ENT), //Hold for momentary Mouse layer, Tap for Enter, - [2] = ACTION_LAYER_MOMENTARY(_FUNCTION), //Hold for momentary Function - [3] = ACTION_LAYER_MOMENTARY(_MOUSE) //Hold for momentary MOUSE }; #define SPC_LW FUNC(0) #define ENT_RS FUNC(1) -#define FNC FUNC(2) -#define MSE FUNC(3) +#define FNC MO(_FUNCTION) +#define MSE MO(_MOUSE) #define PIPE M(R_PIPE) #define POINT M(R_POINT) diff --git a/keyboards/org60/keymaps/boardy/keymap.c b/keyboards/org60/keymaps/boardy/keymap.c index 43994f189..b85e47582 100644 --- a/keyboards/org60/keymaps/boardy/keymap.c +++ b/keyboards/org60/keymaps/boardy/keymap.c @@ -54,7 +54,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { //--------------------------------------------------------------------------------------------------------------------------------------| // | | | | |░░░░░░| | | | // | | | | |░░░░░░| | | | - KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, F(0), KC_NO, KC_LEFT, KC_DOWN, KC_RIGHT), + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, MO(_FUNCTION),KC_NO, KC_LEFT, KC_DOWN, KC_RIGHT), //--------------------------------------------------------------------------------------------------------------------------------------' @@ -103,19 +103,12 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { //--------------------------------------------------------------------------------------------------------------------------------------| // | | | | |░░░░░░| | | | // | | | | |░░░░░░| | | | - KC_LCTL, KC_LGUI, KC_LALT, KC_0, F(0), KC_NO, KC_MUTE, KC_VOLD, KC_MPLY), + KC_LCTL, KC_LGUI, KC_LALT, KC_0, MO(_FUNCTION),KC_NO, KC_MUTE, KC_VOLD, KC_MPLY), //--------------------------------------------------------------------------------------------------------------------------------------' }; - -// Custom Actions -const uint16_t PROGMEM fn_actions[] = { - [0] = ACTION_LAYER_MOMENTARY(_FUNCTION), // to Function overlay -}; - - // Loop void matrix_scan_user(void) { // Empty -}; \ No newline at end of file +}; diff --git a/keyboards/planck/keymaps/angerthosenear/keymap.c b/keyboards/planck/keymaps/angerthosenear/keymap.c index aa75a6771..f22bb1f62 100644 --- a/keyboards/planck/keymaps/angerthosenear/keymap.c +++ b/keyboards/planck/keymaps/angerthosenear/keymap.c @@ -5,34 +5,31 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { {KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC}, {KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_ENT}, {KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_QUOT}, - {KC_LCTL, KC_LGUI, KC_LALT, BL_STEP, FUNC(2), KC_SPC, KC_SPC, FUNC(1), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} + {KC_LCTL, KC_LGUI, KC_LALT, BL_STEP, MO(3), KC_SPC, KC_SPC, MO(2), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} // Space is repeated to accommodate for both spacebar wiring positions }, [1] = { /* WASD + NumPad */ {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_P7, KC_P8, KC_P9, KC_PSLS, KC_PMNS, KC_TRNS}, {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_P4, KC_P5, KC_P6, KC_PAST, KC_PPLS, KC_TRNS}, {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_P1, KC_P2, KC_P3, KC_PDOT, KC_PENT, KC_TRNS}, - {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, FUNC(2), KC_SPC, KC_P0, FUNC(1), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS} + {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, MO(3), KC_SPC, KC_P0, MO(2), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS} }, [2] = { /* RAISE */ {KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_TRNS}, {KC_TRNS, FUNC(3), FUNC(4), LSFT(RSFT(KC_PAUSE)), KC_TRNS, KC_TRNS, KC_TRNS, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS}, {KC_TRNS, KC_F11, KC_F12, KC_F13, KC_F14, KC_F15, KC_F16, KC_F17, KC_F18, KC_F19, KC_F20, KC_TRNS}, - {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPRV, FUNC(1), KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY} + {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPRV, MO(2), KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY} }, [3] = { /* LOWER */ {S(KC_GRV), S(KC_1), S(KC_2), S(KC_3), S(KC_4), S(KC_5), S(KC_6), S(KC_7), S(KC_8), S(KC_9), S(KC_0), KC_DEL}, {KC_TRNS, FUNC(3), FUNC(4), LSFT(RSFT(KC_PAUSE)), KC_TRNS, KC_TRNS, KC_TRNS, S(KC_MINS), S(KC_EQL), S(KC_LBRC), S(KC_RBRC), S(KC_BSLS)}, {KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_TRNS}, - {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, FUNC(2), KC_TRNS, KC_TRNS, KC_TRNS, KC_HOME, KC_PGDN, KC_PGUP, KC_END} + {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, MO(3), KC_TRNS, KC_TRNS, KC_TRNS, KC_HOME, KC_PGDN, KC_PGUP, KC_END} } }; const uint16_t PROGMEM fn_actions[] = { - [1] = ACTION_LAYER_MOMENTARY(2), // to RAISE - [2] = ACTION_LAYER_MOMENTARY(3), // to LOWER - [3] = ACTION_DEFAULT_LAYER_SET(0), [4] = ACTION_DEFAULT_LAYER_SET(1), diff --git a/keyboards/planck/keymaps/austin/keymap.c b/keyboards/planck/keymaps/austin/keymap.c index 40f808654..23dc2d415 100644 --- a/keyboards/planck/keymaps/austin/keymap.c +++ b/keyboards/planck/keymaps/austin/keymap.c @@ -5,35 +5,32 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { {KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC}, {KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT}, {KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT}, - {BL_STEP, KC_LGUI, KC_LALT, KC_LCTL, FUNC(2), KC_SPC, KC_SPC, FUNC(1), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} + {BL_STEP, KC_LGUI, KC_LALT, KC_LCTL, MO(3), KC_SPC, KC_SPC, MO(2), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} // Space is repeated to accommadate for both spacebar wiring positions }, [1] = { /* Colemak */ {KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSPC}, {KC_ESC, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT}, {KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT}, - {KC_FN3, KC_LGUI, KC_LALT, KC_LCTL, FUNC(2), KC_SPC, KC_SPC, FUNC(1), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} + {KC_FN3, KC_LGUI, KC_LALT, KC_LCTL, MO(3), KC_SPC, KC_SPC, MO(2), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} }, [2] = { /* RAISE */ {KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC}, {KC_TRNS, FUNC(3), FUNC(4), LSFT(RSFT(KC_PAUSE)), KC_TRNS, KC_TRNS, KC_TRNS, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS}, {KC_TRNS, KC_F11, KC_F12, KC_F13, KC_F14, KC_F15, KC_F16, KC_F17, KC_F18, KC_F19, KC_F20, KC_TRNS}, - {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, FUNC(1), KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY} + {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, MO(2), KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY} }, [3] = { /* LOWER */ {S(KC_GRV), S(KC_1), S(KC_2), S(KC_3), S(KC_4), S(KC_5), S(KC_6), S(KC_7), S(KC_8), S(KC_9), S(KC_0), KC_BSPC}, {KC_TRNS, FUNC(3), FUNC(4), LSFT(RSFT(KC_PAUSE)), KC_TRNS, KC_TRNS, KC_TRNS, S(KC_MINS), S(KC_EQL), S(KC_LBRC), S(KC_RBRC), S(KC_BSLS)}, {KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_TRNS}, - {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, FUNC(2), KC_TRNS, KC_TRNS, KC_TRNS, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY} + {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, MO(3), KC_TRNS, KC_TRNS, KC_TRNS, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY} } }; const uint16_t PROGMEM fn_actions[] = { - [1] = ACTION_LAYER_MOMENTARY(2), // to RAISE - [2] = ACTION_LAYER_MOMENTARY(3), // to LOWER - [3] = ACTION_DEFAULT_LAYER_SET(0), [4] = ACTION_DEFAULT_LAYER_SET(1), -}; \ No newline at end of file +}; diff --git a/keyboards/planck/keymaps/charlie/keymap.c b/keyboards/planck/keymaps/charlie/keymap.c index 966c60d20..d5e17d7f9 100644 --- a/keyboards/planck/keymaps/charlie/keymap.c +++ b/keyboards/planck/keymaps/charlie/keymap.c @@ -11,20 +11,19 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { {KC_DELETE, KC_0, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, FUNC(1)}, {KC_O, KC_G, KC_S, KC_U, KC_T, FUNC(27), KC_F21, KC_F10, KC_F11, KC_F7, KC_F8, KC_F9}, {KC_TAB, FUNC(4), FUNC(5), FUNC(6), KC_F1, FUNC(7), KC_F18, KC_F19, KC_F23, KC_F20, KC_F22, FUNC(9)}, - {KC_COMM, KC_DOT, KC_R, FUNC(11), FUNC(3), KC_SPC, FUNC(12), KC_F2, FUNC(8), KC_F3, KC_F14} + {KC_COMM, KC_DOT, KC_R, FUNC(11), MO(2), KC_SPC, FUNC(12), KC_F2, FUNC(8), KC_F3, KC_F14} }, [2] = { /* 2: FUNC(3 PHOTOSHOP */ {KC_ESC, FUNC(25), FUNC(26), KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO}, {KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, FUNC(19), FUNC(20), FUNC(21)}, {KC_C, KC_NO, FUNC(22), FUNC(5), KC_NO, FUNC(23), KC_NO, KC_NO, KC_NO, KC_NO, FUNC(13), KC_NO}, - {FUNC(14), FUNC(15), FUNC(16), FUNC(17), FUNC(3), KC_SPC, FUNC(18), KC_NO, KC_NO, KC_F24, KC_NO} + {FUNC(14), FUNC(15), FUNC(16), FUNC(17), MO(2), KC_SPC, FUNC(18), KC_NO, KC_NO, KC_F24, KC_NO} } }; const uint16_t PROGMEM fn_actions[] = { [1] = ACTION_DEFAULT_LAYER_SET(0), // set Qwerty layout [2] = ACTION_DEFAULT_LAYER_SET(1), // set Photoshop presets - [3] = ACTION_LAYER_MOMENTARY(2), // Photoshop function layer [4] = ACTION_MODS_KEY(MOD_LSFT | MOD_LCTL | MOD_LALT, KC_F9), // photo folder AHK [5] = ACTION_MODS_KEY(MOD_LSFT | MOD_LCTL, KC_I), // select inverse diff --git a/keyboards/planck/keymaps/daniel/keymap.c b/keyboards/planck/keymaps/daniel/keymap.c index 3054d7974..ae47b9ba3 100644 --- a/keyboards/planck/keymaps/daniel/keymap.c +++ b/keyboards/planck/keymaps/daniel/keymap.c @@ -5,33 +5,26 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { {KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC}, {KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT}, {KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT}, - {FUNC(3), KC_LCTL, KC_LALT, KC_LGUI, FUNC(2), KC_SPC, KC_SPC, FUNC(1), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} + {MO(3), KC_LCTL, KC_LALT, KC_LGUI, MO(2), KC_SPC, KC_SPC, MO(1), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} // Space is repeated to accommadate for both spacebar wiring positions }, [1] = { /* RAISE */ {KC_GRV, S(KC_1), S(KC_2), S(KC_3), S(KC_4), S(KC_5), S(KC_6), S(KC_7), S(KC_8), S(KC_9), S(KC_0), KC_EQL}, {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_LBRC, KC_RBRC}, {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MINS, S(KC_MINS), KC_BSLS, KC_TRNS}, - {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, FUNC(1), KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY} + {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, MO(1), KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY} }, [2] = { /* LOWER */ {S(KC_GRV), KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, S(KC_EQL)}, {KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12}, {KC_CAPS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_ENT}, - {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, FUNC(2), KC_TRNS, KC_TRNS, KC_TRNS, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY} + {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, MO(2), KC_TRNS, KC_TRNS, KC_TRNS, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY} }, [3] = { /* Qwerty */ {KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_DEL}, {KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT}, {KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT}, - {KC_TRNS, KC_LCTL, KC_LALT, KC_LGUI, FUNC(2), KC_SPC, KC_SPC, FUNC(1), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} + {KC_TRNS, KC_LCTL, KC_LALT, KC_LGUI, MO(2), KC_SPC, KC_SPC, MO(1), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} // Space is repeated to accommadate for both spacebar wiring positions } }; - - -const uint16_t PROGMEM fn_actions[] = { - [1] = ACTION_LAYER_MOMENTARY(1), // to RAISE - [2] = ACTION_LAYER_MOMENTARY(2), // to LOWER - [3] = ACTION_LAYER_MOMENTARY(3) // to LOWER -}; diff --git a/keyboards/planck/keymaps/david/keymap.c b/keyboards/planck/keymaps/david/keymap.c index d8a46aa83..bb0abaab7 100644 --- a/keyboards/planck/keymaps/david/keymap.c +++ b/keyboards/planck/keymaps/david/keymap.c @@ -5,33 +5,30 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { {KC_Q, KC_W, KC_E, KC_R, KC_T, KC_BSPC, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC}, {KC_A, KC_S, KC_D, KC_F, KC_G, KC_ENT, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT}, {KC_Z, KC_X, KC_C, KC_V, KC_B, KC_ESC, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT}, - {M(10), KC_LCTL, KC_LALT, KC_LGUI, FUNC(2), KC_SPC, KC_SPC, FUNC(1), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} + {M(10), KC_LCTL, KC_LALT, KC_LGUI, MO(3), KC_SPC, KC_SPC, MO(2), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} // Space is repeated to accommadate for both spacebar wiring positions }, [1] = { /* Colemak */ {KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSPC}, {KC_ESC, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT}, {KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT}, - {KC_FN3, KC_LCTL, KC_LALT, KC_LGUI, FUNC(2), KC_SPC, KC_SPC, FUNC(1), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} + {KC_FN3, KC_LCTL, KC_LALT, KC_LGUI, MO(3), KC_SPC, KC_SPC, MO(2), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} }, [2] = { /* RAISE */ {KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC}, {KC_TRNS, FUNC(3), FUNC(4), RESET, M(0), M(1), M(2), KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS}, {KC_TRNS, KC_F11, KC_F12, M(0), M(1), M(2), M(3), M(4), M(5), M(6), M(7), KC_TRNS}, - {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, FUNC(1), KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY} + {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, MO(2), KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY} }, [3] = { /* LOWER */ {S(KC_GRV), S(KC_1), S(KC_2), S(KC_3), S(KC_4), S(KC_5), S(KC_6), S(KC_7), S(KC_8), S(KC_9), S(KC_0), KC_BSPC}, {KC_TRNS, FUNC(3), FUNC(4), RESET, M(0), M(1), M(2), S(KC_MINS), S(KC_EQL), S(KC_LBRC), S(KC_RBRC), S(KC_BSLS)}, {KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_TRNS}, - {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, FUNC(2), KC_TRNS, KC_TRNS, KC_TRNS, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY} + {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, MO(3), KC_TRNS, KC_TRNS, KC_TRNS, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY} } }; const uint16_t PROGMEM fn_actions[] = { - [1] = ACTION_LAYER_MOMENTARY(2), // to RAISE - [2] = ACTION_LAYER_MOMENTARY(3), // to LOWER - [3] = ACTION_DEFAULT_LAYER_SET(0), [4] = ACTION_DEFAULT_LAYER_SET(1), diff --git a/keyboards/planck/keymaps/dzobert/keymap.c b/keyboards/planck/keymaps/dzobert/keymap.c index 365649ed8..3cd8731b0 100644 --- a/keyboards/planck/keymaps/dzobert/keymap.c +++ b/keyboards/planck/keymaps/dzobert/keymap.c @@ -5,33 +5,30 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { {KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_TAB}, {KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_BSPC}, {KC_LALT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT}, - {KC_FN4, KC_RSFT, KC_LGUI, KC_LSFT, FUNC(2), KC_SPC, KC_SPC, FUNC(1), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} + {KC_FN4, KC_RSFT, KC_LGUI, KC_LSFT, MO(3), KC_SPC, KC_SPC, MO(2), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} // Space is repeated to accommadate for both spacebar wiring positions }, [1] = { /* Colemak */ {KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_TAB}, {KC_ESC, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_BSPC}, {KC_LALT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT}, - {KC_FN3, KC_RSFT, KC_LGUI, KC_LSFT, FUNC(2), KC_SPC, KC_SPC, FUNC(1), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} + {KC_FN3, KC_RSFT, KC_LGUI, KC_LSFT, MO(3), KC_SPC, KC_SPC, MO(2), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} }, [2] = { /* RAISE */ {KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12}, {KC_TRNS, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_DEL}, {KC_TRNS, KC_GRV, KC_MINS, KC_EQL, KC_QUOT, S(KC_QUOT), S(KC_LBRC), S(KC_RBRC), KC_LBRC, KC_RBRC, KC_BSLS, KC_TRNS}, - {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, FUNC(1), KC_HOME, KC_PGUP, KC_PGDN, KC_END} + {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, MO(2), KC_HOME, KC_PGUP, KC_PGDN, KC_END} }, [3] = { /* LOWER */ {KC_POWER,KC_PSCR, KC_SLCK, KC_PAUSE, KC_NLCK, KC_EXECUTE, KC_MENU, KC_APP, KC_7, KC_8, KC_9, KC_KP_SLASH}, {KC_TRNS, KC_VOLD, KC_VOLU, KC_MUTE, KC_CAPS, KC_CANCEL, KC_UNDO, KC_AGAIN, KC_4, KC_5, KC_6, KC_KP_ASTERISK}, {KC_TRNS, KC_INSERT,KC_CUT, KC_COPY, KC_PASTE, KC_BSLS, KC_9, KC_0, KC_1, KC_2, KC_3, KC_KP_MINUS}, - {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, FUNC(2), KC_TRNS, KC_TRNS, KC_TRNS, KC_0, KC_KP_DOT, KC_KP_ENTER, KC_KP_PLUS} + {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, MO(3), KC_TRNS, KC_TRNS, KC_TRNS, KC_0, KC_KP_DOT, KC_KP_ENTER, KC_KP_PLUS} } }; const uint16_t PROGMEM fn_actions[] = { - [1] = ACTION_LAYER_MOMENTARY(2), // to RAISE - [2] = ACTION_LAYER_MOMENTARY(3), // to LOWER - [3] = ACTION_DEFAULT_LAYER_SET(0), [4] = ACTION_DEFAULT_LAYER_SET(1), diff --git a/keyboards/planck/keymaps/joe/keymap.c b/keyboards/planck/keymaps/joe/keymap.c index 023e1a120..ff17fa236 100644 --- a/keyboards/planck/keymaps/joe/keymap.c +++ b/keyboards/planck/keymaps/joe/keymap.c @@ -6,50 +6,47 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { {F(3), KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_MINS}, {KC_BSPC, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_ENT }, {F(15), KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_UP, KC_QUOT}, - {KC_LCTL, KC_LGUI, KC_LALT, KC_LSFT, F(1), KC_SPC, KC_SPC, F(2), KC_SLSH, KC_LEFT, KC_DOWN, KC_RGHT} + {KC_LCTL, KC_LGUI, KC_LALT, KC_LSFT, MO(4),KC_SPC, KC_SPC, MO(5),KC_SLSH, KC_LEFT, KC_DOWN, KC_RGHT} }, [1] = { /* Joe soft Colemak */ {F(3), CM_Q, CM_W, CM_F, CM_P, CM_G, CM_J, CM_L, CM_U, CM_Y, CM_SCLN, KC_MINS}, {KC_BSPC, CM_A, CM_R, CM_S, CM_T, CM_D, CM_H, CM_N, CM_E, CM_I, CM_O, KC_ENT }, {F(15), CM_Z, CM_X, CM_C, CM_V, CM_B, CM_K, CM_M, KC_COMM, KC_DOT, KC_UP, KC_QUOT}, - {KC_LCTL, KC_LGUI, KC_LALT, KC_LSFT, F(1), KC_SPC, KC_SPC, F(2), KC_SLSH, KC_LEFT, KC_DOWN, KC_RGHT} + {KC_LCTL, KC_LGUI, KC_LALT, KC_LSFT, MO(4),KC_SPC, KC_SPC, MO(5),KC_SLSH, KC_LEFT, KC_DOWN, KC_RGHT} }, [2] = { /* Joe NUMPAD */ {F(3), KC_NO, KC_UP, KC_NO, KC_NO, KC_NO, LSFT(KC_9), LSFT(KC_0), KC_PSLS, KC_P7, KC_P8, KC_P9 }, {KC_BSPC, KC_LEFT, KC_DOWN, KC_RGHT, KC_NO, KC_NO, LSFT(KC_5), KC_PEQL, KC_PAST, KC_P4, KC_P5, KC_P6 }, {F(15), KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_PCMM, KC_PMNS, KC_P1, KC_P2, KC_P3 }, - {KC_LCTL, KC_LGUI, KC_LALT, KC_LSFT, F(1), KC_TRNS, KC_TRNS, F(2), KC_PPLS, KC_P0, KC_PDOT, KC_PENT} + {KC_LCTL, KC_LGUI, KC_LALT, KC_LSFT, MO(4), KC_TRNS, KC_TRNS, MO(5), KC_PPLS, KC_P0, KC_PDOT, KC_PENT} }, [3] = { /* Joe 1337 haxOr5*/ {F(3), KC_Q, KC_W, KC_F, KC_P, KC_6, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_MINS}, {KC_BSPC, KC_4, KC_R, KC_5, KC_7, KC_D, KC_H, KC_N, KC_3, KC_1, KC_0, KC_ENT }, {F(15), KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_UP, KC_QUOT}, - {KC_LCTL, KC_LGUI, KC_LALT, KC_LSFT, F(1), KC_SPC, KC_SPC, F(2), KC_SLSH, KC_LEFT, KC_DOWN, KC_RGHT} + {KC_LCTL, KC_LGUI, KC_LALT, KC_LSFT, MO(4),KC_SPC, KC_SPC, MO(5),KC_SLSH, KC_LEFT, KC_DOWN, KC_RGHT} }, [4] = { /* Joe LOWER fn1 */ {KC_GRV, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, M(3), M(2), M(1), M(0) }, {KC_BSPC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_TRNS}, {KC_BSLS, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_LBRC, KC_RBRC, KC_PGUP, KC_EQL }, - {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, F(1), KC_TRNS, KC_TRNS, F(2), KC_NO, KC_HOME, KC_PGDN, KC_END } + {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, MO(4), KC_TRNS, KC_TRNS, MO(5), KC_NO, KC_HOME, KC_PGDN, KC_END } }, [5] = { /* Joe UPPER fn2 */ {KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12 }, {KC_DEL, KC_BTN1, KC_MS_U, KC_BTN2, KC_BTN3, KC_WH_U, KC_BTN4, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_NO }, {KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_WH_L, KC_WH_D, KC_WH_R, KC_NO, KC_NO, LCTL(KC_PGUP), LCTL(LALT(KC_UP)), LCTL(KC_PGDN) }, - {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, F(1), KC_NO, KC_NO, F(2), KC_NO, LCTL(LALT(KC_LEFT)), LCTL(LALT(KC_DOWN)), LCTL(LALT(KC_RGHT))} + {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, MO(4), KC_NO, KC_NO, MO(5), KC_NO, LCTL(LALT(KC_LEFT)), LCTL(LALT(KC_DOWN)), LCTL(LALT(KC_RGHT))} }, [6] = { /* Joe SPECIAL fn3 */ {KC_TRNS, KC_MUTE, KC_VOLD, KC_VOLU, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, {KC_NO, KC_MPLY, KC_MPRV, KC_MNXT, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, RESET }, {KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, - {F(6), F(7), F(8), F(9), F(1), KC_TRNS, KC_TRNS, F(2), KC_POWER, KC_WAKE, KC_SLEP, LCTL(LALT(KC_L))} + {F(6), F(7), F(8), F(9), MO(4), KC_TRNS, KC_TRNS, MO(5), KC_POWER, KC_WAKE, KC_SLEP, LCTL(LALT(KC_L))} } }; const uint16_t PROGMEM fn_actions[] = { - [1] = ACTION_LAYER_MOMENTARY(4), // fn1 - [2] = ACTION_LAYER_MOMENTARY(5), // fn2 - /* ESC on tap, fn3 on hold */ [3] = ACTION_LAYER_TAP_KEY(6, KC_ESC), diff --git a/keyboards/planck/keymaps/kyle/keymap.c b/keyboards/planck/keymaps/kyle/keymap.c index f113d0e03..eee509013 100644 --- a/keyboards/planck/keymaps/kyle/keymap.c +++ b/keyboards/planck/keymaps/kyle/keymap.c @@ -5,33 +5,30 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { {KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC}, {KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT}, {KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT}, - {KC_RCTL, KC_LCTL, KC_LALT, KC_LGUI, FUNC(2), KC_SPC, KC_SPC, FUNC(1), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} + {KC_RCTL, KC_LCTL, KC_LALT, KC_LGUI, MO(3), KC_SPC, KC_SPC, MO(2), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} // Space is repeated to accommadate for both spacebar wiring positions }, [1] = { /* Colemak */ {KC_ESC, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSPC}, {KC_TAB, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT}, {KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT}, - {KC_FN3, KC_LCTL, KC_LALT, KC_LGUI, FUNC(2), KC_SPC, KC_SPC, FUNC(1), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} + {KC_FN3, KC_LCTL, KC_LALT, KC_LGUI, MO(3), KC_SPC, KC_SPC, MO(2), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} }, [2] = { /* RAISE */ {KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC}, {KC_TRNS, FUNC(3), FUNC(4), LSFT(RSFT(KC_PAUSE)), KC_TRNS, KC_TRNS, KC_TRNS, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS}, {KC_TRNS, KC_F11, KC_F12, KC_F13, KC_F14, KC_F15, KC_F16, KC_F17, KC_F18, KC_F19, KC_F20, KC_TRNS}, - {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, FUNC(1), KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY} + {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, MO(2), KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY} }, [3] = { /* LOWER */ {S(KC_GRV), S(KC_1), S(KC_2), S(KC_3), S(KC_4), S(KC_5), S(KC_6), S(KC_7), S(KC_8), S(KC_9), S(KC_0), KC_BSPC}, {KC_TRNS, FUNC(3), FUNC(4), LSFT(RSFT(KC_PAUSE)), LSFT(RSFT(KC_D)), KC_TRNS, KC_TRNS, S(KC_MINS), S(KC_EQL), S(KC_LBRC), S(KC_RBRC), S(KC_BSLS)}, {KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_TRNS}, - {BL_STEP, KC_TRNS, KC_TRNS, KC_TRNS, FUNC(2), KC_TRNS, KC_TRNS, KC_TRNS, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY} + {BL_STEP, KC_TRNS, KC_TRNS, KC_TRNS, MO(3), KC_TRNS, KC_TRNS, KC_TRNS, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY} } }; const uint16_t PROGMEM fn_actions[] = { - [1] = ACTION_LAYER_MOMENTARY(2), // to RAISE - [2] = ACTION_LAYER_MOMENTARY(3), // to LOWER - [3] = ACTION_DEFAULT_LAYER_SET(0), [4] = ACTION_DEFAULT_LAYER_SET(1), diff --git a/keyboards/planck/keymaps/leo/keymap.c b/keyboards/planck/keymaps/leo/keymap.c index 25a5e1579..d45f87a5d 100644 --- a/keyboards/planck/keymaps/leo/keymap.c +++ b/keyboards/planck/keymaps/leo/keymap.c @@ -5,7 +5,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { {KC_ESC, KC_LBRC, KC_QUOT, KC_SCLN, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_BSPC}, {KC_TAB, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_ENT}, {KC_LSFT, KC_DOT, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_COMM}, - {KC_LCTL, KC_LALT, KC_LGUI, FUNC(3), FUNC(2), KC_SPC, KC_SPC, FUNC(1), FUNC(3), KC_RGUI, KC_RALT, KC_RCTL} + {KC_LCTL, KC_LALT, KC_LGUI, MO(4), MO(3), KC_SPC, KC_SPC, MO(2), MO(4), KC_RGUI, KC_RALT, KC_RCTL} }, [2] = { /* RAISE */ {RALT(KC_RBRC), KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, S(KC_RBRC)}, @@ -26,10 +26,3 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS} } }; - -const uint16_t PROGMEM fn_actions[] = { - [1] = ACTION_LAYER_MOMENTARY(2), // to RAISE - [2] = ACTION_LAYER_MOMENTARY(3), // to LOWER - [3] = ACTION_LAYER_MOMENTARY(4), // to META - -}; \ No newline at end of file diff --git a/keyboards/planck/keymaps/lucas/keymap.c b/keyboards/planck/keymaps/lucas/keymap.c index 491cd1d07..96393bc35 100644 --- a/keyboards/planck/keymaps/lucas/keymap.c +++ b/keyboards/planck/keymaps/lucas/keymap.c @@ -29,7 +29,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { {KC_ESC, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Z, DE_SCLN, DE_MINS}, {KC_BSPC, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, DE_QUOT}, {M(0), KC_Y, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, DE_COMM, DE_DOT, DE_SLSH, KC_ENT}, - {KC_LCTL, KC_LGUI, KC_TAB, KC_LALT, F(2), F(3), F(3), F(1), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} + {KC_LCTL, KC_LGUI, KC_TAB, KC_LALT, MO(3),F(3), F(3), MO(2),KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} }, [1] = { /* Symbols * ,-----------------------------------------------------------------------. @@ -93,7 +93,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { {KC_F13, KC_F14, KC_F15, KC_F16, KC_F17, KC_F18, KC_F19, KC_F20, KC_F21, KC_F22, KC_F23, KC_F24}, {KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12}, {KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_PMNS, KC_PPLS, KC_NO, KC_NO, KC_NO, RESET, KC_NO}, - {KC_NO, BL_TOGG, BL_DEC, BL_INC, FUNC(2), KC_TRNS, KC_TRNS, KC_TRNS, KC_MUTE, KC_VOLD, KC_VOLU, KC_MPLY} + {KC_NO, BL_TOGG, BL_DEC, BL_INC, MO(3), KC_TRNS, KC_TRNS, KC_TRNS, KC_MUTE, KC_VOLD, KC_VOLU, KC_MPLY} }, [5] = { /* Gaming * ,-----------------------------------------------------------------------. @@ -131,8 +131,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { }; const uint16_t PROGMEM fn_actions[] = { - [1] = ACTION_LAYER_MOMENTARY(2), // to RAISE - [2] = ACTION_LAYER_MOMENTARY(3), // to LOWER [3] = ACTION_LAYER_TAP_KEY(4,KC_SPC), // to Function [4] = ACTION_LAYER_TOGGLE(5), // toggle Gaming [5] = ACTION_MODS_TAP_KEY(KC_LSFT, KC_CAPS), //Shift on press, Caps on tap diff --git a/keyboards/planck/keymaps/max/keymap.c b/keyboards/planck/keymaps/max/keymap.c index a93b1f47d..a80d677c6 100644 --- a/keyboards/planck/keymaps/max/keymap.c +++ b/keyboards/planck/keymaps/max/keymap.c @@ -5,34 +5,31 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { {KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC}, {KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_ENT }, {KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_QUOT}, - {KC_LCTL, BL_STEP, KC_LALT, KC_LGUI, FUNC(2), KC_SPC, KC_SPC, FUNC(1), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} + {KC_LCTL, BL_STEP, KC_LALT, KC_LGUI, MO(3), KC_SPC, KC_SPC, MO(2), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} // Space is repeated to accommadate for both spacebar wiring positions }, [1] = { /* Colemak */ {KC_ESC, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSPC}, {KC_TAB, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_ENT }, {KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_QUOT}, - {KC_LCTL, BL_STEP, KC_LALT, KC_LGUI, FUNC(2), KC_SPC, KC_SPC, FUNC(1), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} + {KC_LCTL, BL_STEP, KC_LALT, KC_LGUI, MO(3), KC_SPC, KC_SPC, MO(2), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} }, [2] = { /* RAISE */ {KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC}, {KC_TRNS, FUNC(3), FUNC(4), RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_TRNS}, {KC_TRNS, KC_F11, KC_F12, KC_F13, KC_F14, KC_F15, KC_F16, KC_F17, KC_F18, KC_F19, KC_F20, KC_BSLS}, - {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, FUNC(1), KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY} + {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, MO(2), KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY} }, [3] = { /* LOWER */ {S(KC_GRV), S(KC_1), S(KC_2), S(KC_3), S(KC_4), S(KC_5), S(KC_6), S(KC_7), S(KC_8), S(KC_9), S(KC_0), KC_BSPC}, {KC_TRNS, FUNC(3), FUNC(4), RESET, KC_TRNS, KC_TRNS, KC_TRNS, S(KC_MINS), S(KC_EQL), S(KC_LBRC), S(KC_RBRC), KC_TRNS}, {KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, S(KC_BSLS)}, - {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, FUNC(2), KC_TRNS, KC_TRNS, KC_TRNS, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY} + {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, MO(3), KC_TRNS, KC_TRNS, KC_TRNS, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY} } }; const uint16_t PROGMEM fn_actions[] = { - [1] = ACTION_LAYER_MOMENTARY(2), // to RAISE - [2] = ACTION_LAYER_MOMENTARY(3), // to LOWER - [3] = ACTION_DEFAULT_LAYER_SET(0), [4] = ACTION_DEFAULT_LAYER_SET(1), -}; \ No newline at end of file +}; diff --git a/keyboards/planck/old_keymap_files/common_keymaps/keymap_brett.c b/keyboards/planck/old_keymap_files/common_keymaps/keymap_brett.c index 3ebd82af4..cdebcd143 100644 --- a/keyboards/planck/old_keymap_files/common_keymaps/keymap_brett.c +++ b/keyboards/planck/old_keymap_files/common_keymaps/keymap_brett.c @@ -1,26 +1,26 @@ #include "keymap.h" +#define KC_MO1 MO(1) +#define KC_MO2 MO(2) + const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [0] = KEYMAP( ESC, Q, W, E, R, T, Y, U, I, O, P, BSPC, LCTL, A, S, D, F, G, H, J, K, L, SCLN, ENT, LSFT, Z, X, C, V, B, N, M, COMM, DOT, SLSH, RSFT, - TAB, LGUI, RSFT, LALT, FN2, SPC, FN1, LEFT, DOWN, UP, RGHT), + TAB, LGUI, RSFT, LALT, MO2, SPC, MO1, LEFT, DOWN, UP, RGHT), [1] = KEYMAP( /* RAISE */ GRV, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, DEL, TRNS, F1, F2, F3, F4, F5, F6, 4, 5, 6, QUOT, TRNS, TRNS, F7, F8, F9, F10, F11, F12, 1, 2, 3, TRNS, PGUP, - MPRV, MNXT, TRNS, MUTE, TRNS, TRNS, FN1, 0, 0, TRNS, PGDN), + MPRV, MNXT, TRNS, MUTE, TRNS, TRNS, MO1, 0, 0, TRNS, PGDN), [2] = KEYMAP( /* LOWER */ TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, MINS, TRNS, TRNS, TRNS, PAUSE, TRNS, TRNS, TRNS, TRNS, LBRC, RBRC, BSLS, EQL, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, - MPLY, MSTP, VOLU, VOLD, FN2, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS), + MPLY, MSTP, VOLU, VOLD, MO2, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS), }; const uint16_t PROGMEM fn_actions[] = { - [1] = ACTION_LAYER_MOMENTARY(1), // to Fn overlay - [2] = ACTION_LAYER_MOMENTARY(2), // to Fn overlay - [10] = ACTION_MODS_KEY(MOD_LSFT, KC_1), [11] = ACTION_MODS_KEY(MOD_LSFT, KC_2), [12] = ACTION_MODS_KEY(MOD_LSFT, KC_3), diff --git a/keyboards/planck/old_keymap_files/common_keymaps/keymap_dotcom.c b/keyboards/planck/old_keymap_files/common_keymaps/keymap_dotcom.c index d4ec987ab..5a85a6086 100644 --- a/keyboards/planck/old_keymap_files/common_keymaps/keymap_dotcom.c +++ b/keyboards/planck/old_keymap_files/common_keymaps/keymap_dotcom.c @@ -1,20 +1,20 @@ #include "keymap.h" +#define KC_MO1 MO(1) + const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [0] = KEYMAP( ESC, Q, W, E, R, T, Y, U, I, O, P, BSPC, - FN1, A, S, D, F, G, H, J, K, L, SCLN, ENT, + MO1, A, S, D, F, G, H, J, K, L, SCLN, ENT, LSFT, Z, X, C, V, B, N, M, COMM, DOT, SLSH, LBRC, LCTL, BSLS, QUOT, LALT, FN22, SPC, LEFT, UP, DOWN, RGHT, RBRC), [1] = KEYMAP( GRV, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, DEL, TRNS, FN10, FN11, FN12, FN13, FN14, FN15, FN16, FN17, TRNS, TRNS, TRNS, TRNS, FN18, FN19, FN22, EQL, MINS, FN20, TRNS, TRNS, TRNS, TRNS, TRNS, - TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, FN1, TRNS, VOLD, VOLU, TRNS), + TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, MO1, TRNS, VOLD, VOLU, TRNS), }; const uint16_t PROGMEM fn_actions[] = { - [1] = ACTION_LAYER_MOMENTARY(1), // to Fn overlay - [10] = ACTION_MODS_KEY(MOD_LSFT, KC_1), [11] = ACTION_MODS_KEY(MOD_LSFT, KC_2), [12] = ACTION_MODS_KEY(MOD_LSFT, KC_3), diff --git a/keyboards/planck/old_keymap_files/common_keymaps/keymap_jack.c b/keyboards/planck/old_keymap_files/common_keymaps/keymap_jack.c index 4237949d5..14db7feaa 100644 --- a/keyboards/planck/old_keymap_files/common_keymaps/keymap_jack.c +++ b/keyboards/planck/old_keymap_files/common_keymaps/keymap_jack.c @@ -1,31 +1,31 @@ #include "keymap.h" +#define KC_MO2 MO(2) +#define KC_MO3 MO(3) + const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [0] = KEYMAP( /* Jack */ TAB, Q, W, E, R, T, Y, U, I, O, P, BSPC, ESC, A, S, D, F, G, H, J, K, L, SCLN, QUOT, LSFT, Z, X, C, V, B, N, M, COMM, DOT, SLSH, ENT, - RSFT, LCTL, LALT, LGUI, FN2, SPC, FN1, LEFT, DOWN, UP, RGHT), + RSFT, LCTL, LALT, LGUI, MO3, SPC, MO2, LEFT, DOWN, UP, RGHT), [1] = KEYMAP( /* Jack colemak */ TAB, Q, W, F, P, G, J, L, U, Y, SCLN, BSPC, ESC, A, R, S, T, D, H, N, E, I, O, QUOT, LSFT, Z, X, C, V, B, K, M, COMM, DOT, SLSH, ENT, - FN3, LCTL, LALT, LGUI, FN2, SPC, FN1, LEFT, DOWN, UP, RGHT), + FN3, LCTL, LALT, LGUI, MO3, SPC, MO2, LEFT, DOWN, UP, RGHT), [2] = KEYMAP( /* Jack RAISE */ GRV, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, BSPC, TRNS, FN3, FN4, PAUSE, TRNS, TRNS, TRNS, MINS, EQL, LBRC, RBRC, BSLS, TRNS, F11, F12, F13, F14, F15, F16, F17, F18, F19, F20, TRNS, - TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, FN1, MNXT, VOLD, VOLU, MPLY), + TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, MO2, MNXT, VOLD, VOLU, MPLY), [3] = KEYMAP( /* Jack LOWER */ FN22, FN10, FN11, FN12, FN13, FN14, FN15, FN16, FN17, FN18, FN19, BSPC, TRNS, FN3, FN4, PAUSE, TRNS, TRNS, TRNS, FN20, FN21, FN23, FN24, FN28, TRNS, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, TRNS, - TRNS, TRNS, TRNS, TRNS, FN2, TRNS, TRNS, MNXT, VOLD, VOLU, MPLY), + TRNS, TRNS, TRNS, TRNS, MO3, TRNS, TRNS, MNXT, VOLD, VOLU, MPLY), }; const uint16_t PROGMEM fn_actions[] = { - [1] = ACTION_LAYER_MOMENTARY(2), // to Fn overlay - [2] = ACTION_LAYER_MOMENTARY(3), // to Fn overlay - [3] = ACTION_DEFAULT_LAYER_SET(0), [4] = ACTION_DEFAULT_LAYER_SET(1), diff --git a/keyboards/planck/old_keymap_files/common_keymaps/keymap_joe.c b/keyboards/planck/old_keymap_files/common_keymaps/keymap_joe.c index b8251c857..efd188a8e 100644 --- a/keyboards/planck/old_keymap_files/common_keymaps/keymap_joe.c +++ b/keyboards/planck/old_keymap_files/common_keymaps/keymap_joe.c @@ -1,26 +1,30 @@ #include "keymap.h" +#define KC_MO2 MO(2) +#define KC_MO3 MO(3) +#define KC_MO4 MO(4) + const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [0] = KEYMAP( /* Joe qwerty */ ESC, Q, W, E, R, T, Y, U, I, O, P, MINS, BSPC, A, S, D, F, G, H, J, K, L, SCLN, ENTER, FN7, Z, X, C, V, B, N, M, COMM, DOT, SLSH, QUOT, - LCTL, LGUI, LALT, LSFT, FN1, SPC, FN0, LEFT, UP, DOWN, RGHT), + LCTL, LGUI, LALT, LSFT, MO3, SPC, MO2, LEFT, UP, DOWN, RGHT), [1] = KEYMAP( /* Joe colemak */ ESC, Q, W, F, P, G, J, L, U, Y, SCLN, MINS, BSPC, A, R, S, T, D, H, N, E, I, O, ENTER, FN7, Z, X, C, V, B, K, M, COMM, DOT, SLSH, QUOT, - LCTL, LGUI, LALT, LSFT, FN1, SPC, FN0, LEFT, UP, DOWN, RGHT), + LCTL, LGUI, LALT, LSFT, MO3, SPC, MO2, LEFT, UP, DOWN, RGHT), [2] = KEYMAP( /* Joe UPPER */ F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, DEL, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, MENU, CAPS, INS, PSCR, TRNS, FN5, FN6, - TRNS, TRNS, TRNS, TRNS, FN2, TRNS, FN0, FN26, FN27, FN28, FN29), + TRNS, TRNS, TRNS, TRNS, MO4, TRNS, MO2, FN26, FN27, FN28, FN29), [3] = KEYMAP( /* Joe LOWER */ GRV, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, FN8, FN9, FN30, BSPC, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, TRNS, BSLS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, LBRC, RBRC, TRNS, EQL, - TRNS, TRNS, TRNS, TRNS, FN1, TRNS, FN2, HOME, PGUP, PGDN, END), + TRNS, TRNS, TRNS, TRNS, MO3, TRNS, MO4, HOME, PGUP, PGDN, END), [4] = KEYMAP( /* Joe LOWER + UPPER */ FN3, FN4, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, SLEP, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, @@ -35,10 +39,6 @@ enum macro_id { }; const uint16_t PROGMEM fn_actions[] = { - [0] = ACTION_LAYER_MOMENTARY(2), // to Fn overlay - [1] = ACTION_LAYER_MOMENTARY(3), // to Fn overlay - [2] = ACTION_LAYER_MOMENTARY(4), // to Fn overlay - [3] = ACTION_DEFAULT_LAYER_SET(0), [4] = ACTION_DEFAULT_LAYER_SET(1), diff --git a/keyboards/planck/old_keymap_files/common_keymaps/keymap_matthew.c b/keyboards/planck/old_keymap_files/common_keymaps/keymap_matthew.c index 196b2d777..fe0dfa619 100644 --- a/keyboards/planck/old_keymap_files/common_keymaps/keymap_matthew.c +++ b/keyboards/planck/old_keymap_files/common_keymaps/keymap_matthew.c @@ -22,12 +22,15 @@ #include "keymap.h" +#define KC_MO1 MO(1) +#define KC_MO2 MO(2) + const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { /* 0: dvorak */ [0] = KEYMAP_GRID( ESC, SCLN, COMM, DOT, P, Y, F, G, C, R, L, BSPC, \ GRV, A, O, E, U, I, D, H, T, N, S, MINS, \ TAB, QUOT, Q, J, K, X, B, M, W, V, Z, ENT, \ - LCTL, LGUI, LALT, RALT, FN1, LSFT, SPC, FN2, LEFT, DOWN, UP, RGHT), + LCTL, LGUI, LALT, RALT, MO1, LSFT, SPC, MO2, LEFT, DOWN, UP, RGHT), /* 1: lower (FN1) */ [1] = KEYMAP_GRID( F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, \ @@ -44,9 +47,6 @@ const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { }; const uint16_t PROGMEM fn_actions[] = { - [1] = ACTION_LAYER_MOMENTARY(1), // lower Fn layer - [2] = ACTION_LAYER_MOMENTARY(2), // raise Fn layer - // lower row1 [17] = ACTION_MODS_KEY(MOD_LSFT, KC_5), // % [18] = ACTION_MODS_KEY(MOD_LSFT, KC_SLASH), // ? diff --git a/keyboards/planck/old_keymap_files/common_keymaps/keymap_nathan.c b/keyboards/planck/old_keymap_files/common_keymaps/keymap_nathan.c index f0be4b030..7cc5e7f0a 100644 --- a/keyboards/planck/old_keymap_files/common_keymaps/keymap_nathan.c +++ b/keyboards/planck/old_keymap_files/common_keymaps/keymap_nathan.c @@ -3,6 +3,9 @@ #include "keymap.h" +#define KC_MO1 MO(1) +#define KC_MO2 MO(2) + const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { /* 0: main layer * ,-----------------------------------------------------------------------. @@ -19,7 +22,7 @@ const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { TAB, Q, W, E, R, T, Y, U, I, O, P, BSPC, LCTL, A, S, D, F, G, H, J, K, L, SCLN, ENT, RSFT, Z, X, C, V, B, N, M, LBRC, FN10, FN11, FN12, - LGUI, BSLS, SLSH, LALT, FN0, SPC, SPC, FN1, LEFT, DOWN, UP, RGHT), + LGUI, BSLS, SLSH, LALT, MO1, SPC, SPC, MO2, LEFT, DOWN, UP, RGHT), /* 1: fn left/lower layer * The top row are Visual Studio combos: @@ -73,8 +76,6 @@ enum macro_id { }; const uint16_t PROGMEM fn_actions[] = { - [0] = ACTION_LAYER_MOMENTARY(1), // left/lower layer - [1] = ACTION_LAYER_MOMENTARY(2), // right/raise layer // Program macros [2] = ACTION_MACRO(M_P0), [3] = ACTION_MACRO(M_P1), diff --git a/keyboards/planck/old_keymap_files/common_keymaps/keymap_paul.c b/keyboards/planck/old_keymap_files/common_keymaps/keymap_paul.c index 51d45be75..829c047be 100644 --- a/keyboards/planck/old_keymap_files/common_keymaps/keymap_paul.c +++ b/keyboards/planck/old_keymap_files/common_keymaps/keymap_paul.c @@ -1,32 +1,32 @@ #include "keymap.h" +#define KC_MO1 MO(1) +#define KC_MO2 MO(2) +#define KC_MO3 MO(3) + const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [0] = KEYMAP( /* Paul */ TAB, Q, W, E, R, T, Y, U, I, O, P, BSPC, - FN1, A, S, D, F, G, H, J, K, L, SCLN, QUOT, + MO1, A, S, D, F, G, H, J, K, L, SCLN, QUOT, LSFT, Z, X, C, V, B, N, M, COMM, DOT, SLSH, ENT, - ESC, LCTL, LALT, LGUI, FN2, SPC, FN3, LEFT, DOWN, UP, RGHT), + ESC, LCTL, LALT, LGUI, MO2, SPC, MO3, LEFT, DOWN, UP, RGHT), [1] = KEYMAP( /* Paul FN */ TRNS, TRNS, TRNS, FN8, FN9, TRNS, TRNS, TRNS, TRNS, MUTE, VOLD, VOLU, - FN1, TRNS, TRNS, HOME, END, TRNS, TRNS, TRNS, TRNS, MPRV, MPLY, MNXT, + MO1, TRNS, TRNS, HOME, END, TRNS, TRNS, TRNS, TRNS, MPRV, MPLY, MNXT, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, UP, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, LEFT, DOWN, RGHT), [2] = KEYMAP( /* Paul LOWER */ FN22, FN10, FN11, FN12, FN13, FN14, FN15, FN16, FN17, FN18, FN19, BSPC, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, FN20, FN21, FN23, FN24, FN28, TRNS, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, TRNS, - TRNS, TRNS, TRNS, TRNS, FN2, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS), + TRNS, TRNS, TRNS, TRNS, MO2, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS), [3] = KEYMAP( /* Paul RAISE */ GRV, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, BSPC, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, MINS, EQL, LBRC, RBRC, BSLS, TRNS, F11, F12, F13, F14, F15, F16, F17, F18, F19, F20, TRNS, - TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, FN3, TRNS, TRNS, TRNS, TRNS), + TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, MO3, TRNS, TRNS, TRNS, TRNS), }; const uint16_t PROGMEM fn_actions[] = { - [1] = ACTION_LAYER_MOMENTARY(1), // to Fn1 overlay (FN) - [2] = ACTION_LAYER_MOMENTARY(2), // to Fn2 overlay (LOWER) - [3] = ACTION_LAYER_MOMENTARY(3), // to Fn3 overlay (RAISE) - [8] = ACTION_MODS_KEY(MOD_LSFT, KC_HOME), [9] = ACTION_MODS_KEY(MOD_LSFT, KC_END), [10] = ACTION_MODS_KEY(MOD_LSFT, KC_1), diff --git a/keyboards/planck/old_keymap_files/common_keymaps/keymap_reed.c b/keyboards/planck/old_keymap_files/common_keymaps/keymap_reed.c index f721716fd..9e6e953e3 100644 --- a/keyboards/planck/old_keymap_files/common_keymaps/keymap_reed.c +++ b/keyboards/planck/old_keymap_files/common_keymaps/keymap_reed.c @@ -1,5 +1,8 @@ #include "keymap.h" +#define KC_MO2 MO(2) +#define KC_MO3 MO(3) + /* * BUILD: * Simply run the command below in the keyboards/planck directory @@ -23,30 +26,27 @@ const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ESC, Q, W, E, R, T, Y, U, I, O, P, BSPC, TAB, A, S, D, F, G, H, J, K, L, SCLN, QUOT, LSFT, Z, X, C, V, B, N, M, COMM, DOT, SLSH, FN5, - LCTL, CAPS, LALT, LGUI, FN2, FN7, SPC, FN1, LEFT, DOWN, UP, RGHT), + LCTL, CAPS, LALT, LGUI, MO3, FN7, SPC, MO2, LEFT, DOWN, UP, RGHT), [1] = KEYMAP_GRID( /* Reed EXTREME GAMING */ ESC, Q, W, E, R, T, Y, U, I, O, P, BSPC, TAB, A, S, D, F, G, H, J, K, L, SCLN, QUOT, LSFT, Z, X, C, V, B, N, M, COMM, DOT, SLSH, FN5, - LCTL, 1, 2, 3, 4, SPC, FN2, FN1, LEFT, DOWN, UP, RGHT), + LCTL, 1, 2, 3, 4, SPC, MO3, MO2, LEFT, DOWN, UP, RGHT), [2] = KEYMAP_GRID( /* Reed RAISE */ GRV, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, BSPC, TRNS, FN3, FN4, PAUSE, TRNS, TRNS, TRNS, MINS, EQL, LBRC, RBRC, BSLS, TRNS, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, TRNS, - TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, FN1, MNXT, VOLD, VOLU, MPLY), + TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, MO2, MNXT, VOLD, VOLU, MPLY), [3] = KEYMAP_GRID( /* Reed LOWER */ TRNS, FN10, FN11, FN12, FN13, FN14, FN15, FN16, FN17, FN18, FN19, DEL, TRNS, TRNS, INS, HOME, PGUP, TRNS, TRNS, FN20, FN21, FN23, FN24, FN28, TRNS, TRNS, DEL, END, PGDN, F11, F12, F13, TRNS, VOLD, VOLU, TRNS, - TRNS, TRNS, TRNS, TRNS, FN2, TRNS, TRNS, TRNS, MPRV, MUTE, MPLY, MNXT), + TRNS, TRNS, TRNS, TRNS, MO3, TRNS, TRNS, TRNS, MPRV, MUTE, MPLY, MNXT), }; const uint16_t PROGMEM fn_actions[] = { - [1] = ACTION_LAYER_MOMENTARY(2), // to Fn overlay - RAISE - [2] = ACTION_LAYER_MOMENTARY(3), // to Fn overlay - LOWER - [3] = ACTION_DEFAULT_LAYER_SET(0), [4] = ACTION_DEFAULT_LAYER_SET(1), // Actions for the tap/hold modifiers listed above diff --git a/keyboards/planck/old_keymap_files/common_keymaps/keymap_sean.c b/keyboards/planck/old_keymap_files/common_keymaps/keymap_sean.c index 27a669e64..10a112986 100644 --- a/keyboards/planck/old_keymap_files/common_keymaps/keymap_sean.c +++ b/keyboards/planck/old_keymap_files/common_keymaps/keymap_sean.c @@ -8,6 +8,10 @@ enum planck_layers { _ADJUST }; +#define KC_LOWR MO(_LOWER) +#define KC_RAIS MO(_RAISE) +#define KC_ADJS MO(_ADJUST) + const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { /* Dvorak @@ -25,7 +29,7 @@ const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { QUOT, COMM, DOT, P, Y, SLSH, EQL, F, G, C, R, L, A, O, E, U, I, ESC, BSPC, D, H, T, N, S, SCLN, Q, J, K, X, TAB, ENT, B, M, W, V, Z, - LSFT, LCTL, LALT, LGUI, FN1, SPC, FN2, LEFT, DOWN, UP, RGHT), + LSFT, LCTL, LALT, LGUI, LOWR, SPC, RAIS,LEFT, DOWN, UP, RGHT), /* Lower * ,-----------------------------------------------------------------------------------. @@ -42,7 +46,7 @@ const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { F1, F2, F3, F4, F5, FN26, FN27, F6, F7, F8, F9, F10, 1, 2, 3, 4, 5, LBRC, RBRC, 6, 7, 8, 9, 0, FN23, FN25, GRV,MINS, FN24, INS, DEL, FN19, FN20, FN22, EQL, BSLS, - TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, FN4, HOME, PGDN, PGUP, END), + TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, ADJS,HOME, PGDN, PGUP, END), /* Raise * ,-----------------------------------------------------------------------------------. @@ -59,7 +63,7 @@ const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { F11, F12, F13, F14, F15,MINS, FN24, F16, F17, F18, F19, F20, FN11, FN12, FN13, FN14, FN15, NO, NO, FN16, FN17, FN18, FN19, FN20, PWR, EJCT, NO, NO, NO, NO, NO, NO, NO, NO, NO, NO, - CAPS, TRNS, TRNS, TRNS, FN4, TRNS, FN2, NO, NO, NO, NO), + CAPS, TRNS, TRNS, TRNS, ADJS,TRNS, RAIS, NO, NO, NO, NO), /* Adjust (Lower + Raise or SLower + SRaise) * ,-----------------------------------------------------------------------------------. * | | Reset| | | | | | | | | | | @@ -79,10 +83,7 @@ const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { }; const uint16_t PROGMEM fn_actions[] = { - [1] = ACTION_LAYER_MOMENTARY(_LOWER), // to Fn overlay LOWER - [2] = ACTION_LAYER_MOMENTARY(_RAISE), // to Fn overlay RAISE [3] = ACTION_DEFAULT_LAYER_SET(_DVRK), - [4] = ACTION_LAYER_MOMENTARY(_ADJUST), // RAISE + LOWER [11] = ACTION_MODS_KEY(MOD_LSFT, KC_1), //! [12] = ACTION_MODS_KEY(MOD_LSFT, KC_2), //@ [13] = ACTION_MODS_KEY(MOD_LSFT, KC_3), //# diff --git a/keyboards/planck/old_keymap_files/common_keymaps/keymap_shane.c b/keyboards/planck/old_keymap_files/common_keymaps/keymap_shane.c index 2191758c8..69ce9b8e0 100644 --- a/keyboards/planck/old_keymap_files/common_keymaps/keymap_shane.c +++ b/keyboards/planck/old_keymap_files/common_keymaps/keymap_shane.c @@ -3,6 +3,9 @@ #include "action.h" #include "action_util.h" +#define KC_MO6 MO(6) +#define KC_MO8 MO(8) + /* Shane's Planck Layout http://www.keyboard-layout-editor.com/#/layouts/015d9011102619d7695c86ffe57cf441 @@ -12,7 +15,7 @@ const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { TAB, Q, W, E, R, T, Y, U, I, O, P, MINS, LCTL, A, S, D, F, G, H, J, K, L, SCLN, BSPC, LSFT, Z, X, C, V, B, N, M, COMM, DOT, SLSH, FN5, - /*ALPHA*/FN3, /*HYPER*/ /*SUPER*/LGUI, /*META*/LALT, LCTL, FN2, FN6, FN1, LEFT, DOWN, UP, RGHT), + /*ALPHA*/FN3, /*HYPER*/ /*SUPER*/LGUI, /*META*/LALT, LCTL, MO8, FN6, MO6, LEFT, DOWN, UP, RGHT), [2] = KEYMAP_AND_SWAP( /* More modifiers */ TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, @@ -72,8 +75,6 @@ void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) const uint16_t PROGMEM fn_actions[] = { - [1] = ACTION_LAYER_MOMENTARY(6), // to fist Fn overlay - [2] = ACTION_LAYER_MOMENTARY(8), // to second Fn overlay [3] = ACTION_LAYER_TOGGLE(2), // toggle more modifiers [4] = ACTION_LAYER_TOGGLE(4), // toggle wasd [5] = ACTION_MODS_TAP_KEY(MOD_RSFT, KC_ENT), @@ -95,4 +96,4 @@ const uint16_t PROGMEM fn_actions[] = { [24] = ACTION_MODS_KEY(MOD_LSFT, KC_LBRC), [25] = ACTION_MODS_KEY(MOD_LSFT, KC_RBRC), [26] = ACTION_MODS_KEY(MOD_LSFT, KC_BSLS), -}; \ No newline at end of file +}; diff --git a/keyboards/planck/old_keymap_files/common_keymaps/keymap_simon.c b/keyboards/planck/old_keymap_files/common_keymaps/keymap_simon.c index 8058c2e10..fa948077c 100644 --- a/keyboards/planck/old_keymap_files/common_keymaps/keymap_simon.c +++ b/keyboards/planck/old_keymap_files/common_keymaps/keymap_simon.c @@ -1,11 +1,14 @@ #include "keymap.h" +#define KC_MO1 MO(1) +#define KC_MO2 MO(2) + const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [0] = KEYMAP( /* Jack */ ESC, Q, W, E, R, T, Y, U, I, O, P, BSPC, TAB, A, S, D, F, G, H, J, K, L, DOT, ENT, LSFT, Z, X, C, V, B, N, M, COMM, DOT, SCLN, DEL, - LCTL, ENT, LALT, CAPS, FN2, SPC, FN1, LEFT, DOWN, UP, RGHT), + LCTL, ENT, LALT, CAPS, MO2, SPC, MO1, LEFT, DOWN, UP, RGHT), [1] = KEYMAP( /* Jack RAISE */ TRNS, F1, F2, F3, F4, NO, FN11, FN9, FN12, NO, FN14, TRNS, TRNS, F5, F6, F7, F8, FN16, SLSH, MINS, EQL, LBRC, FN8, TRNS, @@ -18,9 +21,6 @@ const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS), }; const uint16_t PROGMEM fn_actions[] = { - [1] = ACTION_LAYER_MOMENTARY(1), // to Fn overlay - [2] = ACTION_LAYER_MOMENTARY(2), // to Fn overlay - [8] = ACTION_MODS_KEY(MOD_LSFT, KC_SLSH), [9] = ACTION_MODS_KEY(MOD_LSFT, KC_QUOT), [10] = ACTION_MODS_KEY(MOD_LSFT, KC_1), diff --git a/keyboards/planck/old_keymap_files/common_keymaps/keymap_tim.c b/keyboards/planck/old_keymap_files/common_keymaps/keymap_tim.c index 64d0b7403..5be56e725 100644 --- a/keyboards/planck/old_keymap_files/common_keymaps/keymap_tim.c +++ b/keyboards/planck/old_keymap_files/common_keymaps/keymap_tim.c @@ -1,26 +1,26 @@ #include "keymap.h" +#define KC_MO2 MO(2) +#define KC_MO3 MO(3) + const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [0] = KEYMAP( ESC, Q, W, E, R, T, Y, U, I, O, P, BSPC, TAB, A, S, D, F, G, H, J, K, L, SCLN, ENT, LSFT, Z, X, C, V, B, N, M, COMM, DOT, SLSH, RSFT, - LCTL, LALT, DEL, LGUI, FN2, SPC, FN1, F2, F5, F9, F12), + LCTL, LALT, DEL, LGUI, MO3, SPC, MO2, F2, F5, F9, F12), [2] = KEYMAP( /* RAISE */ TRNS, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, BSPC, GRV, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, MINS, EQL, LBRC, RBRC, BSLS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, QUOT, FN29, TRNS, TRNS, - TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, FN1, TRNS, TRNS, TRNS, TRNS), + TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, MO2, TRNS, TRNS, TRNS, TRNS), [3] = KEYMAP( /* LOWER */ TRNS, FN10, FN11, FN12, FN13, FN14, FN15, FN16, FN17, FN18, FN19, BSPC, FN22, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, FN20, FN21, FN23, FN24, FN28, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, QUOT, FN29, TRNS, TRNS, - TRNS, TRNS, TRNS, TRNS, FN2, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS), + TRNS, TRNS, TRNS, TRNS, MO3, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS), }; const uint16_t PROGMEM fn_actions[] = { - [1] = ACTION_LAYER_MOMENTARY(2), // to Fn overlay - [2] = ACTION_LAYER_MOMENTARY(3), // to Fn overlay - [3] = ACTION_DEFAULT_LAYER_SET(0), [4] = ACTION_DEFAULT_LAYER_SET(1), diff --git a/keyboards/planck/old_keymap_files/common_keymaps/keymap_wilba.c b/keyboards/planck/old_keymap_files/common_keymaps/keymap_wilba.c index 22326ebe4..5bf06382d 100644 --- a/keyboards/planck/old_keymap_files/common_keymaps/keymap_wilba.c +++ b/keyboards/planck/old_keymap_files/common_keymaps/keymap_wilba.c @@ -1,31 +1,31 @@ #include "keymap.h" +#define KC_MO2 MO(2) +#define KC_MO3 MO(3) + const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [0] = KEYMAP( /* Wilba */ FN27, FN28, FN29, E, R, T, Y, U, I, O, P, BSPC, TAB, A, S, D, F, G, H, J, K, L, SCLN, QUOT, LSFT, Z, X, C, V, B, N, M, COMM, DOT, SLSH, ENT, - LCTL, LGUI, LALT, RSFT, FN1, SPC, FN2, LEFT, DOWN, UP, RGHT), + LCTL, LGUI, LALT, RSFT, MO2, SPC, MO3, LEFT, DOWN, UP, RGHT), [1] = KEYMAP( /* Wilba Alternate */ ESC, Q, W, E, R, T, Y, U, I, O, P, BSPC, TAB, A, S, D, F, G, H, J, K, L, SCLN, QUOT, LSFT, Z, X, C, V, B, N, M, COMM, DOT, SLSH, ENT, - LCTL, LGUI, LALT, RSFT, FN1, SPC, FN2, LEFT, DOWN, UP, RGHT), + LCTL, LGUI, LALT, RSFT, MO2, SPC, MO3, LEFT, DOWN, UP, RGHT), [2] = KEYMAP( /* Wilba LOWER */ TRNS, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, TRNS, TRNS, F11, F12, LBRC, RBRC, FN20, EQL, FN23, FN24, MINS, FN21, TRNS, TRNS, BSLS, GRV, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, - TRNS, TRNS, TRNS, TRNS, FN1, TRNS, TRNS, MNXT, VOLD, VOLU, MPLY), + TRNS, TRNS, TRNS, TRNS, MO2, TRNS, TRNS, MNXT, VOLD, VOLU, MPLY), [3] = KEYMAP( /* Wilba RAISE */ TRNS, FN10, FN11, FN12, FN13, FN14, FN15, FN16, FN17, FN18, FN19, TRNS, TRNS, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, TRNS, TRNS, FN25, FN22, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, - TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, FN2, TRNS, TRNS, TRNS, TRNS), + TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, MO3, TRNS, TRNS, TRNS, TRNS), }; const uint16_t PROGMEM fn_actions[] = { - [1] = ACTION_LAYER_MOMENTARY(2), // LOWER - [2] = ACTION_LAYER_MOMENTARY(3), // RAISE - [3] = ACTION_DEFAULT_LAYER_SET(0), [4] = ACTION_DEFAULT_LAYER_SET(1), diff --git a/keyboards/sentraq/s60_x/keymaps/ansi_qwertz/keymap.c b/keyboards/sentraq/s60_x/keymaps/ansi_qwertz/keymap.c index 7304c80c1..f7a66b96f 100644 --- a/keyboards/sentraq/s60_x/keymaps/ansi_qwertz/keymap.c +++ b/keyboards/sentraq/s60_x/keymaps/ansi_qwertz/keymap.c @@ -31,14 +31,13 @@ along with this program. If not, see . #define KC_SPACEFN KC_FN0 #define KC_OSLS KC_FN3 #define KC_GMLK KC_FN1 -#define KC_FUNC KC_FN2 +#define KC_FUNC MO(2) #define MICMUTE RCTL(KC_LCTL) enum function_codes { F_SPACEFN = 0, F_OSLS = 3, F_GMLK = 1, - F_FUNC = 2 }; enum layer_names { @@ -154,7 +153,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { const uint16_t PROGMEM fn_actions[] = { [F_SPACEFN] = ACTION_LAYER_TAP_KEY(2, KC_SPACE), // SpaceFn layout 1 [F_GMLK] = ACTION_LAYER_TOGGLE(1), // Disable SpaceFn and Oneshot Shift - [F_FUNC] = ACTION_LAYER_MOMENTARY(2), // SpaceFn layout 1 [F_OSLS] = ACTION_MODS_ONESHOT(MOD_LSFT) // Oneshot Leftshift }; diff --git a/keyboards/sentraq/s60_x/keymaps/hasu/keymap.c b/keyboards/sentraq/s60_x/keymaps/hasu/keymap.c index 76398697c..077f1c627 100644 --- a/keyboards/sentraq/s60_x/keymaps/hasu/keymap.c +++ b/keyboards/sentraq/s60_x/keymaps/hasu/keymap.c @@ -1,5 +1,9 @@ #include QMK_KEYBOARD_H +#define KC_MO4 MO(4) +#define KC_MO6 MO(6) +#define KC_MO7 MO(7) + /* * Hasu */ @@ -22,7 +26,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { TAB, Q, W, E, R, T, Y, U, I, O, P, LBRC, RBRC, BSLS, \ CAPS, A, S, D, F, G, H, J, K, L, FN2, QUOT, NO, ENT, \ LSFT, NO, Z, X, C, V, B, N, M, COMM, DOT, FN1, NO, FN9, NO, \ - LCTL, LGUI, LALT, SPC, RALT, FN3, FN3, FN0), + LCTL, LGUI, LALT, SPC, RALT, MO6, MO6, MO4), /* Keymap 1: colemak ┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┐ │GRAVE│ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │▒▒▒▒▒│BKSPC│ @@ -41,7 +45,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { TAB, Q, W, F, P, G, J, L, U, Y, SCLN, LBRC, RBRC, BSLS, \ BSPC, A, R, S, T, D, H, N, E, I, O, QUOT, NO, ENT, \ LSFT, NO, Z, X, C, V, B, K, M, COMM, DOT, SLSH, NO, RSFT, NO, \ - LCTL, LGUI, LALT, SPC, RALT, RGUI, APP, FN0), + LCTL, LGUI, LALT, SPC, RALT, RGUI, APP, MO4), /* Keymap 2: dvorak ┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┐ │GRAVE│ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ [ │ ] │▒▒▒▒▒│BKSPC│ @@ -60,7 +64,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { TAB, QUOT, COMM, DOT, P, Y, F, G, C, R, L, SLSH, EQL, BSLS, \ CAPS, A, O, E, U, I, D, H, T, N, S, MINS, NO, ENT, \ LSFT, NO, SCLN, Q, J, K, X, B, M, W, V, Z, NO, RSFT, NO, \ - LCTL, LGUI, LALT, SPC, RALT, RGUI, APP, FN0), + LCTL, LGUI, LALT, SPC, RALT, RGUI, APP, MO4), /* Keymap 3: workman ┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┐ │GRAVE│ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │▒▒▒▒▒│BKSPC│ @@ -79,7 +83,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { TAB, Q, D, R, W, B, J, F, U, P, SCLN, LBRC, RBRC, BSLS, \ BSPC, A, S, H, T, G, Y, N, E, O, I, QUOT, NO, ENT, \ LSFT, NO, Z, X, M, C, V, K, L, COMM, DOT, SLSH, NO, RSFT, NO, \ - LCTL, LGUI, LALT, SPC, RALT, RGUI, APP, FN0), + LCTL, LGUI, LALT, SPC, RALT, RGUI, APP, MO4), /* Overlay 4: HHKB mode ┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┐ │Grave│ F1 │ F2 │ F3 │ F4 │ F5 │ F6 │ F7 │ F8 │ F9 │ F10 │ F11 │ F12 │▒▒▒▒▒│ Del │ @@ -98,7 +102,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { CAPS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, PSCR, SLCK, PAUS, UP, TRNS, INS, \ LCTL, VOLD, VOLU, MUTE, TRNS, TRNS, PAST, PSLS, HOME, PGUP, LEFT, RGHT, TRNS, ENT, \ LSFT, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, PPLS, PMNS, END, PGDN, DOWN, TRNS, RSFT, TRNS, \ - LCTL, LGUI, LALT, SPC, RALT, RGUI, FN4, TRNS), + LCTL, LGUI, LALT, SPC, RALT, RGUI, MO7, TRNS), /* Overlay 5: Vi mode (Slash) ┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┐ │Grave│ F1 │ F2 │ F3 │ F4 │ F5 │ F6 │ F7 │ F8 │ F9 │ F10 │ F11 │ F12 │▒▒▒▒▒│BkSpc│ @@ -169,11 +173,8 @@ Lw: set Workman layout * Fn action definition */ const uint16_t PROGMEM fn_actions[] = { - [0] = ACTION_LAYER_MOMENTARY(4), [1] = ACTION_LAYER_TAP_KEY(5, KC_SLASH), [2] = ACTION_LAYER_TAP_KEY(6, KC_SCLN), - [3] = ACTION_LAYER_MOMENTARY(6), - [4] = ACTION_LAYER_MOMENTARY(7), // to Layout selector [5] = ACTION_DEFAULT_LAYER_SET(0), // set qwerty layout [6] = ACTION_DEFAULT_LAYER_SET(1), // set colemak layout [7] = ACTION_DEFAULT_LAYER_SET(2), // set dvorak layout diff --git a/keyboards/sentraq/s60_x/keymaps/hhkb/keymap.c b/keyboards/sentraq/s60_x/keymaps/hhkb/keymap.c index b572b4484..1ccefb6dd 100644 --- a/keyboards/sentraq/s60_x/keymaps/hhkb/keymap.c +++ b/keyboards/sentraq/s60_x/keymaps/hhkb/keymap.c @@ -1,5 +1,7 @@ #include QMK_KEYBOARD_H +#define KC_MO1 MO(1) + /* * HHKB Layout */ @@ -21,7 +23,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ESC, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, MINS, EQL, BSLS, GRV, \ TAB, Q, W, E, R, T, Y, U, I, O, P, LBRC, RBRC, BSPC, \ LCTL, A, S, D, F, G, H, J, K, L, SCLN, QUOT, NO, ENT, \ - LSFT, NO, Z, X, C, V, B, N, M, COMM, DOT, SLSH, NO, RSFT, FN0, \ + LSFT, NO, Z, X, C, V, B, N, M, COMM, DOT, SLSH, NO, RSFT, MO1, \ NO, LGUI, LALT, SPC, NO, RALT, RGUI, NO), /* 1: HHKB Fn layer ┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┐ @@ -43,10 +45,3 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, PPLS, PMNS, END, PGDN, DOWN, NO, TRNS, TRNS, \ TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS), }; - -/* - * Fn action definition - */ -const uint16_t PROGMEM fn_actions[] = { - [0] = ACTION_LAYER_MOMENTARY(1), -}; diff --git a/keyboards/sentraq/s60_x/keymaps/jpec/keymap.c b/keyboards/sentraq/s60_x/keymaps/jpec/keymap.c index 4d84396e3..4b7208a9e 100644 --- a/keyboards/sentraq/s60_x/keymaps/jpec/keymap.c +++ b/keyboards/sentraq/s60_x/keymaps/jpec/keymap.c @@ -16,6 +16,8 @@ along with this program. If not, see . #include QMK_KEYBOARD_H +#define KC_MO1 MO(1) + const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { /* Layout 0: Default Layer * ,-----------------------------------------------------------. @@ -35,7 +37,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { TAB, Q, W, E, R, T, Y, U, I, O, P, LBRC, RBRC, BSLS, \ LCTL, A, S, D, F, G, H, J, K, L, SCLN, QUOT, NUHS, ENT, \ LSFT, NUBS, Z, X, C, V, B, N, M, COMM, DOT, SLSH, NO, RSFT, NO, \ - FN1, LGUI, LALT, FN0, RALT, RGUI, APP, RCTL), + MO1, LGUI, LALT, FN0, RALT, RGUI, APP, RCTL), /* Layout 1: Function Layer * ,-----------------------------------------------------------. @@ -63,7 +65,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { */ const uint16_t PROGMEM fn_actions[] = { [0] = ACTION_LAYER_TAP_KEY(1, KC_SPACE), /* SpaceFn layout 1 */ - [1] = ACTION_LAYER_MOMENTARY(1), /* Momentary layout 1 */ [2] = ACTION_MODS_KEY(MOD_LSFT, KC_DEL), /* Cut */ [3] = ACTION_MODS_KEY(MOD_LCTL, KC_INS), /* Copy */ [4] = ACTION_MODS_KEY(MOD_LSFT, KC_INS), /* Paste */ diff --git a/keyboards/sentraq/s60_x/keymaps/poker/keymap.c b/keyboards/sentraq/s60_x/keymaps/poker/keymap.c index 61685b477..3b38ed501 100644 --- a/keyboards/sentraq/s60_x/keymaps/poker/keymap.c +++ b/keyboards/sentraq/s60_x/keymaps/poker/keymap.c @@ -1,5 +1,8 @@ #include QMK_KEYBOARD_H +#define KC_MO6 MO(6) +#define KC_MO7 MO(7) + const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { /* 0: qwerty ┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┐ @@ -19,7 +22,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { TAB, Q, W, E, R, T, Y, U, I, O, P, LBRC, RBRC, BSLS, \ CAPS, A, S, D, F, G, H, J, K, L, SCLN, QUOT, NO, ENT, \ LSFT, NO, Z, X, C, V, B, N, M, COMM, DOT, SLSH, NO, RSFT, NO, \ - LCTL, LGUI, LALT, SPC, FN0, RGUI, APP, RCTL), + LCTL, LGUI, LALT, SPC, MO6, RGUI, APP, RCTL), /* 1: colemak ┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┐ │GRAVE│ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │▒▒▒▒▒│BKSPC│ @@ -38,7 +41,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { TAB, Q, W, F, P, G, J, L, U, Y, SCLN, LBRC, RBRC, BSLS, \ BSPC, A, R, S, T, D, H, N, E, I, O, QUOT, NO, ENT, \ LSFT, NO, Z, X, C, V, B, K, M, COMM, DOT, SLSH, NO, RSFT, NO, \ - LCTL, LGUI, LALT, SPC, FN0, RGUI, APP, RCTL), + LCTL, LGUI, LALT, SPC, MO6, RGUI, APP, RCTL), /* 2: dvorak ┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┐ │GRAVE│ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ [ │ ] │▒▒▒▒▒│BKSPC│ @@ -57,7 +60,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { TAB, QUOT, COMM, DOT, P, Y, F, G, C, R, L, SLSH, EQL, BSLS, \ CAPS, A, O, E, U, I, D, H, T, N, S, MINS, NO, ENT, \ LSFT, NO, SCLN, Q, J, K, X, B, M, W, V, Z, NO, RSFT, NO, \ - LCTL, LGUI, LALT, SPC, FN0, RGUI, APP, RCTL), + LCTL, LGUI, LALT, SPC, MO6, RGUI, APP, RCTL), /* 3: workman ┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┐ │GRAVE│ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │▒▒▒▒▒│BKSPC│ @@ -76,7 +79,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { TAB, Q, D, R, W, B, J, F, U, P, SCLN, LBRC, RBRC, BSLS, \ BSPC, A, S, H, T, G, Y, N, E, O, I, QUOT, NO, ENT, \ LSFT, NO, Z, X, M, C, V, K, L, COMM, DOT, SLSH, NO, RSFT, NO, \ - LCTL, LGUI, LALT, SPC, FN0, RGUI, APP, RCTL), + LCTL, LGUI, LALT, SPC, MO6, RGUI, APP, RCTL), /* 4: Poker with Arrow ┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┐ │ │ │ │ │ │ │ │ │ │ │ │ │ │▒▒▒▒▒│ │ @@ -136,7 +139,7 @@ FnS: toggle Arrow overlay */ LAYOUT_kc( ESC, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, TRNS, TRNS, \ - TRNS, FN2, UP, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, CALC, TRNS, HOME, INS, FN4, \ + TRNS, FN2, UP, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, CALC, TRNS, HOME, INS, MO7, \ TRNS, LEFT, DOWN, RGHT, TRNS, TRNS, PSCR, SLCK, PAUS, TRNS, FN3, END, TRNS, TRNS, \ TRNS, TRNS, DEL, TRNS, WHOM, MUTE, VOLU, VOLD, TRNS, PGUP, PGDN, DEL, TRNS, TRNS, TRNS, \ TRNS, TRNS, TRNS, FN1, TRNS, TRNS, TRNS, TRNS), @@ -168,11 +171,9 @@ Lw: set Workman layout }; const uint16_t PROGMEM fn_actions[] = { /* Poker Layout */ - [0] = ACTION_LAYER_MOMENTARY(6), // to Fn overlay [1] = ACTION_LAYER_TOGGLE(4), // toggle arrow overlay [2] = ACTION_LAYER_TOGGLE(5), // toggle Esc overlay [3] = ACTION_MODS_KEY(MOD_RCTL|MOD_RSFT, KC_ESC), // Task(RControl,RShift+Esc) - [4] = ACTION_LAYER_MOMENTARY(7), // to Layout selector [5] = ACTION_DEFAULT_LAYER_SET(0), // set qwerty layout [6] = ACTION_DEFAULT_LAYER_SET(1), // set colemak layout [7] = ACTION_DEFAULT_LAYER_SET(2), // set dvorak layout diff --git a/keyboards/sentraq/s65_x/keymaps/kelorean/keymap.c b/keyboards/sentraq/s65_x/keymaps/kelorean/keymap.c index 7a0de8559..371c2b8ef 100644 --- a/keyboards/sentraq/s65_x/keymaps/kelorean/keymap.c +++ b/keyboards/sentraq/s65_x/keymaps/kelorean/keymap.c @@ -140,7 +140,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { }; const uint16_t PROGMEM fn_actions[] = { - [0] = ACTION_LAYER_MOMENTARY(_FL), // Momentary Fn overlay [1] = ACTION_LAYER_TOGGLE(_CM), //Toggle Colemak Layer overlay [2] = ACTION_LAYER_TOGGLE(_DV), // Toggle Dvorak Layer overlay [3] = ACTION_LAYER_TOGGLE(_AL), // Toggle Arrow Layer overlay diff --git a/keyboards/sentraq/s65_x/keymaps/nall/keymap.c b/keyboards/sentraq/s65_x/keymaps/nall/keymap.c index a5daed006..37bd742b5 100644 --- a/keyboards/sentraq/s65_x/keymaps/nall/keymap.c +++ b/keyboards/sentraq/s65_x/keymaps/nall/keymap.c @@ -94,7 +94,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { }; const uint16_t PROGMEM fn_actions[] = { - [0] = ACTION_LAYER_MOMENTARY(_FL), // Momentary Fn overlay [1] = ACTION_LAYER_TOGGLE(_AL), // Toggle Arrow Layer overlay [2] = ACTION_LAYER_TAP_KEY(_FL, KC_CAPS),// Tap to toggle caps lock and hold to activate function layer [3] = ACTION_LAYER_TOGGLE(_UL), // Toggle Underglow Layer overlay diff --git a/keyboards/whitefox/keymaps/kim-kim/keymap.c b/keyboards/whitefox/keymaps/kim-kim/keymap.c index 1e6149899..a25406758 100644 --- a/keyboards/whitefox/keymaps/kim-kim/keymap.c +++ b/keyboards/whitefox/keymaps/kim-kim/keymap.c @@ -41,7 +41,7 @@ const uint16_t keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC,KC_RBRC,KC_BSPC, KC_DEL, \ KC_LCTRL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN,KC_QUOT,KC_NUHS,KC_ENT, KC_PGUP,\ KC_LSFT,XXXXXXX,KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM,KC_DOT, KC_SLSH,KC_RSFT, KC_UP, KC_PGDN,\ - KC_LALT,KC_FN0,KC_LGUI, KC_SPC, KC_RGUI,KC_RALT, XXXXXXX, KC_LEFT,KC_DOWN,KC_RGHT \ + KC_LALT,MO(1), KC_LGUI, KC_SPC, KC_RGUI,KC_RALT, XXXXXXX, KC_LEFT,KC_DOWN,KC_RGHT \ ), [1] = LAYOUT( \ _______,KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______,_______,_______,\ @@ -57,8 +57,6 @@ const uint16_t keymaps[][MATRIX_ROWS][MATRIX_COLS] = { #define ACTION_LEDS_GAME 2 const uint16_t fn_actions[] = { - [0] = ACTION_LAYER_MOMENTARY(1), - [1] = ACTION_LAYER_MOMENTARY(2), [2] = ACTION_FUNCTION(ACTION_LEDS_ALL), [3] = ACTION_FUNCTION(ACTION_LEDS_GAME), diff --git a/keyboards/whitefox/keymaps/matt3o/keymap.c b/keyboards/whitefox/keymaps/matt3o/keymap.c index 76fb72f8e..f6987fe1a 100644 --- a/keyboards/whitefox/keymaps/matt3o/keymap.c +++ b/keyboards/whitefox/keymaps/matt3o/keymap.c @@ -33,9 +33,9 @@ const uint16_t keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [0] = LAYOUT( \ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS,KC_EQL, KC_BSLS,KC_GRV, KC_MUTE,\ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC,KC_RBRC,KC_BSPC, KC_DEL, \ - KC_FN0, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN,KC_QUOT,KC_NUHS,KC_ENT, KC_PGUP,\ + MO(1), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN,KC_QUOT,KC_NUHS,KC_ENT, KC_PGUP,\ KC_LSFT,KC_NUBS,KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM,KC_DOT, KC_SLSH,KC_RSFT, KC_UP, KC_PGDN,\ - KC_LCTL,KC_LGUI,KC_LALT, KC_SPC, KC_RALT,KC_FN1, KC_RCTL, KC_LEFT,KC_DOWN,KC_RGHT \ + KC_LCTL,KC_LGUI,KC_LALT, KC_SPC, KC_RALT,MO(2), KC_RCTL, KC_LEFT,KC_DOWN,KC_RGHT \ ), [1] = LAYOUT( \ KC_TRNS,KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS,KC_TRNS,KC_TRNS,\ @@ -58,8 +58,6 @@ const uint16_t keymaps[][MATRIX_ROWS][MATRIX_COLS] = { #define ACTION_LEDS_GAME 2 const uint16_t fn_actions[] = { - [0] = ACTION_LAYER_MOMENTARY(1), - [1] = ACTION_LAYER_MOMENTARY(2), [2] = ACTION_FUNCTION(ACTION_LEDS_ALL), [3] = ACTION_FUNCTION(ACTION_LEDS_GAME), diff --git a/keyboards/winkeyless/bface/keymaps/kpeatt/keymap.c b/keyboards/winkeyless/bface/keymaps/kpeatt/keymap.c index 84de7872f..8d6e4da77 100644 --- a/keyboards/winkeyless/bface/keymaps/kpeatt/keymap.c +++ b/keyboards/winkeyless/bface/keymaps/kpeatt/keymap.c @@ -73,7 +73,3 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ______,______,______, ______, ______,______,______,______ ), // */ }; - -const uint16_t PROGMEM fn_actions[] = { - [0] = ACTION_LAYER_MOMENTARY(1), -}; diff --git a/keyboards/xd60/keymaps/Jos/keymap.c b/keyboards/xd60/keymaps/Jos/keymap.c index 87dbad159..f272d6fd1 100644 --- a/keyboards/xd60/keymaps/Jos/keymap.c +++ b/keyboards/xd60/keymaps/Jos/keymap.c @@ -38,7 +38,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_GRAVE, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL, \ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, \ KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NO, KC_ENT, \ - KC_LSFT, KC_LGUI, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, F(0), \ + KC_LSFT, KC_LGUI, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, MO(1), \ KC_LCTL, TD(0), KC_LALT, KC_SPC , KC_RALT, KC_RCTRL, KC_LEFT, KC_DOWN, KC_RIGHT), // 1: Function 1 Layers @@ -76,8 +76,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { // Custom Actions const uint16_t PROGMEM fn_actions[] = { - [0] = ACTION_LAYER_MOMENTARY(1), // to Fn1 layer - [1] = ACTION_LAYER_MOMENTARY(2), // to GUI/Fn2 layer [2] = ACTION_LAYER_TOGGLE(3), // to Fn3/Num toggle layer }; diff --git a/keyboards/xd60/keymaps/birkir/keymap.c b/keyboards/xd60/keymaps/birkir/keymap.c index 35b60ae81..52f7086f2 100644 --- a/keyboards/xd60/keymaps/birkir/keymap.c +++ b/keyboards/xd60/keymaps/birkir/keymap.c @@ -9,7 +9,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, \ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NO, KC_ENT, \ KC_LSFT, KC_SLSH, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_NO, KC_RSFT, KC_UP, TG(2), \ - KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RGUI, F(0), KC_LEFT, KC_DOWN, KC_RIGHT + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RGUI, MO(1), KC_LEFT, KC_DOWN, KC_RIGHT ), // 1: Function Layer @@ -18,7 +18,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_NO, KC_WH_U, KC_UP, KC_WH_D, KC_BSPC,KC_HOME,KC_CALC,KC_NO, KC_INS, KC_NO, KC_PSCR, KC_SLCK, KC_PAUS, KC_DEL, \ KC_NO, KC_LEFT, KC_DOWN, KC_RIGHT,KC_DEL, KC_END, KC_PGDN,KC_NO, KC_NO, KC_NO, KC_HOME, KC_PGUP, KC_NO, KC_ENT, \ KC_LSFT, KC_NO, KC_NO, KC_APP, BL_STEP,KC_NO, KC_NO, KC_VOLD,KC_VOLU,KC_MUTE, KC_END, KC_PGDN, KC_RSFT, KC_PGUP, TG(2), \ - KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RGUI, F(0), KC_HOME, KC_PGDOWN,KC_END + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RGUI, MO(1), KC_HOME, KC_PGDOWN,KC_END ), // 2: Cool Layer @@ -27,15 +27,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_NO, KC_WH_U, KC_UP, KC_WH_D, KC_BSPC,KC_HOME,KC_CALC,KC_NO, KC_INS, KC_NO, KC_PSCR, KC_SLCK, KC_PAUS, KC_DEL, \ KC_NO, KC_LEFT, KC_DOWN, KC_RIGHT,KC_DEL, KC_END, KC_PGDN,KC_NO, KC_NO, KC_NO, KC_HOME, KC_PGUP, KC_NO, KC_ENT, \ KC_LSFT, KC_NO, KC_NO, KC_APP, BL_STEP,KC_NO, KC_NO, KC_VOLD,KC_VOLU,KC_MUTE, KC_END, KC_PGDN, KC_RSFT, KC_PGUP, TG(2), \ - KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RGUI, F(0), KC_HOME, KC_PGDOWN,KC_END + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RGUI, MO(1), KC_HOME, KC_PGDOWN,KC_END ) }; -// Custom Actions -const uint16_t PROGMEM fn_actions[] = { - [0] = ACTION_LAYER_MOMENTARY(1), // to Fn overlay -}; - // Macros const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) { diff --git a/keyboards/xd60/keymaps/edulpn/keymap.c b/keyboards/xd60/keymaps/edulpn/keymap.c index 4ff00140a..88032a384 100644 --- a/keyboards/xd60/keymaps/edulpn/keymap.c +++ b/keyboards/xd60/keymaps/edulpn/keymap.c @@ -9,7 +9,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, \ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NO, KC_ENT, \ KC_LSFT, KC_NO, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_NO, KC_RSHIFT, KC_NO, \ - KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, F(0), KC_NO, KC_RGUI, KC_RCTL), + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_NO, KC_RGUI, KC_RCTL), // 1: Function Layer LAYOUT_all( @@ -17,15 +17,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_NO, KC_NO, KC_UP, KC_NO, KC_INSERT, KC_HOME, KC_PGUP, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, KC_NO, KC_NO, KC_NO, \ KC_NO, KC_LEFT, KC_DOWN, KC_RIGHT, KC_DEL, KC_END, KC_PGDN, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_NO, KC_NO, KC_ENT, \ KC_LSFT, KC_NO, KC_MPRV, KC_MPLY, KC_MNXT, KC_VOLD, KC_VOLU, KC_MUTE, KC_NO, KC_NO, KC_NO, KC_NO, KC_RSFT, KC_NO, KC_NO, \ - KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, F(0), KC_NO, KC_RGUI, KC_RCTL), + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_NO, KC_RGUI, KC_RCTL), }; -// Custom Actions -const uint16_t PROGMEM fn_actions[] = { - [0] = ACTION_LAYER_MOMENTARY(1), // to Fn overlay -}; - // Macros const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) { diff --git a/keyboards/xd60/keymaps/edulpn64/keymap.c b/keyboards/xd60/keymaps/edulpn64/keymap.c index 95d80ffb7..d1ad6f1b6 100644 --- a/keyboards/xd60/keymaps/edulpn64/keymap.c +++ b/keyboards/xd60/keymaps/edulpn64/keymap.c @@ -9,7 +9,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, \ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NO, KC_ENT, \ KC_LSFT, KC_NO, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_DEL, \ - KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, F(0) , KC_RCTL, KC_LEFT, KC_DOWN, KC_RIGHT), + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RIGHT), // 1: Function Layer LAYOUT_all( @@ -17,15 +17,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_TAB, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_PSCR,KC_SLCK,KC_PAUS, RGB_RMOD,RGB_MOD, RGB_VAD, RGB_VAI, \ KC_CAPS, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_INS, KC_HOME,KC_PGUP, RGB_HUD, RGB_HUI, KC_NO, KC_ENT, \ KC_LSFT, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_END, KC_PGDN, KC_NO, KC_RSFT, KC_UP, KC_DEL, \ - KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, F(0), KC_RCTRL, KC_LEFT, KC_DOWN, KC_RIGHT), + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, MO(1), KC_RCTRL, KC_LEFT, KC_DOWN, KC_RIGHT), }; -// Custom Actions -const uint16_t PROGMEM fn_actions[] = { - [0] = ACTION_LAYER_MOMENTARY(1), // to Fn overlay -}; - // Macros const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) { diff --git a/keyboards/xd60/keymaps/kmontag42/keymap.c b/keyboards/xd60/keymaps/kmontag42/keymap.c index 719700d66..e23aef589 100644 --- a/keyboards/xd60/keymaps/kmontag42/keymap.c +++ b/keyboards/xd60/keymaps/kmontag42/keymap.c @@ -10,7 +10,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, \ KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_DOT, KC_ENT, \ KC_LSPO, KC_NO, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_NO, KC_RSPC, KC_RGUI, \ - KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, F(0), KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT), + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, MO(1), KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT), // 1: Function Layer LAYOUT_all( @@ -18,15 +18,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, \ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, \ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, \ - KC_NO, KC_NO, KC_NO, KC_NO, F(0), KC_NO, KC_NO, KC_NO, KC_NO), + KC_NO, KC_NO, KC_NO, KC_NO, MO(1), KC_NO, KC_NO, KC_NO, KC_NO), }; -// Custom Actions -const uint16_t PROGMEM fn_actions[] = { - [0] = ACTION_LAYER_MOMENTARY(1), // to Fn overlay -}; - // Macros const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) { diff --git a/keyboards/xd60/keymaps/krusli/keymap.c b/keyboards/xd60/keymaps/krusli/keymap.c index b34b4dfbc..6b4dfdc33 100644 --- a/keyboards/xd60/keymaps/krusli/keymap.c +++ b/keyboards/xd60/keymaps/krusli/keymap.c @@ -21,11 +21,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { _______, _______, _______, _______, _______, _______, _______, _______, _______), }; -// Custom Actions -const uint16_t PROGMEM fn_actions[] = { - [0] = ACTION_LAYER_MOMENTARY(1), // to Fn overlay -}; - // Macros const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) { diff --git a/keyboards/xd60/keymaps/split_bksp_arrows/keymap.c b/keyboards/xd60/keymaps/split_bksp_arrows/keymap.c index f95a4e9e7..005355cd2 100644 --- a/keyboards/xd60/keymaps/split_bksp_arrows/keymap.c +++ b/keyboards/xd60/keymaps/split_bksp_arrows/keymap.c @@ -19,7 +19,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { LAYOUT_all( KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, KC_INS, \ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSPC, \ - F(0), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_TRNS, KC_ENT, \ + MO(1), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_TRNS, KC_ENT, \ KC_LSFT, KC_TRNS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_SLSH, KC_UP, KC_DEL, \ KC_LCTL, KC_LALT, KC_LGUI, KC_SPC, KC_CAPS, KC_RSFT, KC_LEFT, KC_DOWN, KC_RIGHT), @@ -33,9 +33,18 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { }; -// Custom Actions -const uint16_t PROGMEM fn_actions[] = { - [0] = ACTION_LAYER_MOMENTARY(1), // to Function Layer +// Macros +const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) { + + // MACRODOWN only works in this function + switch(id) { + case 0: + if (record->event.pressed) { register_code(KC_RSFT); } + else { unregister_code(KC_RSFT); } + break; + } + + return MACRO_NONE; }; // Loop diff --git a/keyboards/xd60/keymaps/stanleylai/keymap.c b/keyboards/xd60/keymaps/stanleylai/keymap.c index a0a69c476..9d7327ee6 100644 --- a/keyboards/xd60/keymaps/stanleylai/keymap.c +++ b/keyboards/xd60/keymaps/stanleylai/keymap.c @@ -7,15 +7,15 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { LAYOUT_all( KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, KC_GRV, \ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSPC, \ - F(0), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NO, KC_ENT, \ - KC_LSFT, KC_NO, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, F(1), KC_UP, KC_DEL, \ + MO(1), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NO, KC_ENT, \ + KC_LSFT, KC_NO, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, MO(2), KC_UP, KC_DEL, \ KC_LCTL, KC_LALT, KC_LGUI, KC_SPC, KC_RGUI, KC_RALT, KC_LEFT, KC_DOWN, KC_RIGHT), // 1: Function Layer LAYOUT_all( RESET, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_F13, KC_F14, \ KC_CAPS, KC_MPRV, KC_UP, KC_MNXT, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_DEL, \ - F(0), KC_LEFT, KC_DOWN, KC_RIGHT,KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_ENT, \ + MO(1), KC_LEFT, KC_DOWN, KC_RIGHT,KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_ENT, \ KC_LSFT, KC_NO, KC_VOLD, KC_MUTE, KC_VOLU,KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_PGUP, KC_INS, \ KC_LCTL, KC_LALT, KC_LGUI, KC_MPLY, KC_RGUI, KC_RALT, KC_HOME, KC_PGDOWN,KC_END), @@ -24,17 +24,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_NO, BL_TOGG, BL_STEP, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, \ KC_NO, RGB_TOG, RGB_MOD, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, \ KC_NO, RGB_HUI, RGB_SAI, RGB_VAI, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, \ - KC_NO, KC_NO, RGB_HUD, RGB_SAD, RGB_VAD,KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, F(1), KC_NO, KC_NO, \ + KC_NO, KC_NO, RGB_HUD, RGB_SAD, RGB_VAD,KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, MO(2), KC_NO, KC_NO, \ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO), }; -// Custom Actions -const uint16_t PROGMEM fn_actions[] = { - [0] = ACTION_LAYER_MOMENTARY(1), // to Function Layer - [1] = ACTION_LAYER_MOMENTARY(2), // to RGB Layer -}; - // Macros const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) { diff --git a/keyboards/xd60/keymaps/supercoffee/keymap.c b/keyboards/xd60/keymaps/supercoffee/keymap.c index d42e611e9..4bf30398f 100644 --- a/keyboards/xd60/keymaps/supercoffee/keymap.c +++ b/keyboards/xd60/keymaps/supercoffee/keymap.c @@ -9,7 +9,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, \ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NO, KC_ENT, \ KC_LSFT, KC_NO, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_NO, KC_RSHIFT, KC_NO, \ - KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, F(0), KC_RALT, KC_NO, KC_RGUI, KC_RCTL), + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, MO(1), KC_RALT, KC_NO, KC_RGUI, KC_RCTL), // 1: Function Layer LAYOUT_all( @@ -17,15 +17,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_NO, KC_NO, KC_UP, KC_END, KC_NO, KC_NO, KC_CALC, KC_PGUP, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_DEL, \ KC_NO, KC_LEFT, KC_DOWN, KC_RIGHT,KC_NO, KC_NO, KC_HOME, KC_PGDN, KC_NO, KC_NO, KC_NO, KC_PGUP, KC_NO, KC_ENT, \ KC_LSFT, KC_NO, KC_NO, KC_DEL, BL_STEP,KC_NO, KC_NO, KC_VOLD, KC_VOLU,KC_MUTE, KC_NO, KC_PGDN, KC_RSFT, KC_NO, KC_NO, \ - KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, F(0), KC_RALT, KC_NO, KC_RGUI, KC_RCTL), + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, MO(1), KC_RALT, KC_NO, KC_RGUI, KC_RCTL), }; -// Custom Actions -const uint16_t PROGMEM fn_actions[] = { - [0] = ACTION_LAYER_MOMENTARY(1), // to Fn overlay -}; - // Macros const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) { diff --git a/layouts/community/60_iso/unxmaal/keymap.c b/layouts/community/60_iso/unxmaal/keymap.c index 8f2d55d9b..07fca874e 100644 --- a/layouts/community/60_iso/unxmaal/keymap.c +++ b/layouts/community/60_iso/unxmaal/keymap.c @@ -108,7 +108,6 @@ enum function_id { }; const uint16_t PROGMEM fn_actions[] = { - [0] = ACTION_LAYER_MOMENTARY(2), // Momentary Fn overlay [1] = ACTION_LAYER_TOGGLE(1), // Toggle Arrow Layer overlay [2] = ACTION_LAYER_TAP_KEY(2, KC_CAPS), // Tap to toggle caps lock and hold to activate function layer [3] = ACTION_LAYER_TOGGLE(3), // Toggle Underglow Layer overlay diff --git a/layouts/community/ergodox/guni/keymap.c b/layouts/community/ergodox/guni/keymap.c index 9a00f0a97..021271c2e 100644 --- a/layouts/community/ergodox/guni/keymap.c +++ b/layouts/community/ergodox/guni/keymap.c @@ -138,7 +138,6 @@ const uint16_t PROGMEM fn_actions[] = { //[29] = ACTION_LAYER_TOGGLE(4), [29] = ACTION_MODS_TAP_KEY(MOD_RSFT,KC_ESC), [30] = ACTION_LAYER_TAP_KEY(1, KC_QUOT), - [31] = ACTION_LAYER_MOMENTARY(2), //[] = ACTION_LAYER_TAP_KEY(4, KC_S), }; diff --git a/layouts/community/ergodox/ishigoya-jp/keymap.c b/layouts/community/ergodox/ishigoya-jp/keymap.c index 43bc74a0e..59040cd50 100644 --- a/layouts/community/ergodox/ishigoya-jp/keymap.c +++ b/layouts/community/ergodox/ishigoya-jp/keymap.c @@ -144,7 +144,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_RCTL, KC_LGUI, KC_LALT,JP_UNDS,KC_LCTL, KC_BTN3, KC_DEL, KC_NO, - KC_SPC,KC_LSFT,F(1), + KC_SPC,KC_LSFT,MO(NUM), // right hand LCTL(KC_Z), KC_NO, LSFT(KC_4), JP_AT, KC_LEFT, KC_UP, KC_RIGHT, KC_PGUP, KC_J, KC_F, KC_U, KC_P, KC_DOWN, LSFT(KC_3), @@ -187,7 +187,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_NO, - M(SHIFT), M(JPFN), F(1), + M(SHIFT), M(JPFN), MO(NUM), // right hand KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, M(JPFU), M(JPSE), M(JPTSU), M(JPKU), KC_TRNS, KC_TRNS, @@ -415,10 +415,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ), }; -const uint16_t PROGMEM fn_actions[] = { - [1] = ACTION_LAYER_MOMENTARY(NUM) // FN1 - Momentary Layer 6 (Numbers) -}; - const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) { diff --git a/layouts/community/ergodox/osx_whiskey_tango_foxtrot_capslock/keymap.c b/layouts/community/ergodox/osx_whiskey_tango_foxtrot_capslock/keymap.c index dcf2dc1d8..729810705 100644 --- a/layouts/community/ergodox/osx_whiskey_tango_foxtrot_capslock/keymap.c +++ b/layouts/community/ergodox/osx_whiskey_tango_foxtrot_capslock/keymap.c @@ -47,7 +47,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_TAB, M(KC_Q), M(KC_W), M(KC_E), M(KC_R), M(KC_T), KC_LBRC, M(KC_CAPS), M(KC_A), M(KC_S), M(KC_D), M(KC_F), M(KC_G), - KC_LSFT, M(KC_Z), M(KC_X), M(KC_C), M(KC_V), M(KC_B), KC_FN0, + KC_LSFT, M(KC_Z), M(KC_X), M(KC_C), M(KC_V), M(KC_B), MO(SYMB), KC_LCTL, KC_LALT, KC_LGUI, KC_LEFT, KC_RGHT, KC_TRNS, KC_FN1, KC_HOME, @@ -56,7 +56,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_GRV, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_RBRC, M(KC_Y), M(KC_U), M(KC_I), M(KC_O), M(KC_P), KC_BSLS, M(KC_H), M(KC_J), M(KC_K), M(KC_L), KC_SCLN, KC_QUOT, - KC_FN0, M(KC_N), M(KC_M), KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, + MO(SYMB), M(KC_N), M(KC_M), KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_DOWN, KC_UP, KC_RCTL, KC_RGUI, KC_RALT, KC_RALT, KC_RCTL, KC_PGUP, @@ -148,12 +148,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { }; const uint16_t PROGMEM fn_actions[] = { - ACTION_LAYER_MOMENTARY(SYMB), // FN0 - Momentary Layer 1 (Symbols) - ACTION_LAYER_ON(SYMB,ON_RELEASE), // FN1 - Enable Layer 1 (Symbols) - ACTION_LAYER_ON(MDIA,ON_RELEASE), // FN2 - Enable Layer 2 (Media) - ACTION_LAYER_OFF(SYMB,ON_RELEASE), // FN3 - Disable Layer 1 (Symbols) - ACTION_LAYER_OFF(MDIA,ON_RELEASE), // FN4 - Disable Layer 2 (MMedia) - ACTION_LAYER_MOMENTARY(MDIA) // FN5 - Momentary Layer 2 (Mdia) + [1] = ACTION_LAYER_ON(SYMB,ON_RELEASE), // FN1 - Enable Layer 1 (Symbols) + [2] = ACTION_LAYER_ON(MDIA,ON_RELEASE), // FN2 - Enable Layer 2 (Media) + [3] = ACTION_LAYER_OFF(SYMB,ON_RELEASE), // FN3 - Disable Layer 1 (Symbols) + [4] = ACTION_LAYER_OFF(MDIA,ON_RELEASE), // FN4 - Disable Layer 2 (MMedia) }; -- cgit v1.2.3-70-g09d2 From 267a85c885a97219b544a3c706809821c4f28344 Mon Sep 17 00:00:00 2001 From: Konstantin Đorđević Date: Fri, 2 Aug 2019 21:52:53 +0200 Subject: Remove KC_DELT alias in favor of KC_DEL (#6327) * Remove KC_DELT alias in favor of KC_DEL * Add changelog --- docs/ChangeLog/20190830/PR6327.md | 4 ++++ keyboards/adkb96/keymaps/default/keymap.c | 6 +++--- keyboards/atreus/keymaps/classic/keymap.c | 2 +- keyboards/atreus/keymaps/default/keymap.c | 2 +- keyboards/atreus/keymaps/jeremy/keymap.c | 2 +- keyboards/atreus/keymaps/nojjan/keymap.c | 2 +- keyboards/atreus/keymaps/ptillemans/keymap.c | 2 +- keyboards/atreus62/keymaps/default/keymap.c | 2 +- keyboards/atreus62/keymaps/mneme/keymap.c | 2 +- keyboards/bantam44/keymaps/default/keymap.c | 4 ++-- keyboards/dz60/keymaps/marianas/keyDefinitions.h | 2 +- keyboards/dz60/keymaps/marianas/keymap.c | 2 +- keyboards/ergo42/keymaps/biacco-biacco/keymap.c | 6 +++--- keyboards/ergo42/keymaps/biacco-macOS/keymap.c | 4 ++-- keyboards/ergo42/keymaps/biacco-underglow/keymap.c | 4 ++-- keyboards/ergo42/keymaps/biacco-winjp/keymap.c | 4 ++-- keyboards/ergo42/keymaps/biacco/keymap.c | 4 ++-- keyboards/ergo42/keymaps/default-illustrator/keymap.c | 6 +++--- keyboards/ergo42/keymaps/default-underglow/keymap.c | 2 +- keyboards/ergo42/keymaps/default/keymap.c | 2 +- keyboards/ergo42/keymaps/koba/keymap.c | 4 ++-- keyboards/ergo42/keymaps/yshrsmz/keymap.c | 2 +- keyboards/ergodone/keymaps/default/keymap.c | 2 +- keyboards/ergodone/keymaps/eozaki/keymap.c | 2 +- keyboards/ergodox_ez/keymaps/blakedietz/keymap.c | 2 +- keyboards/ergodox_ez/keymaps/default/keymap.c | 2 +- keyboards/ergodox_ez/keymaps/default_osx/keymap.c | 2 +- keyboards/ergodox_ez/keymaps/kou/keymap.c | 2 +- keyboards/ergodox_ez/keymaps/profet_80/keymap.c | 2 +- keyboards/ergodox_ez/keymaps/rgb_layer/keymap.c | 2 +- keyboards/ergodox_ez/keymaps/steno/keymap.c | 2 +- keyboards/ergodox_infinity/keymaps/default/keymap.c | 2 +- keyboards/ergodox_infinity/keymaps/input_club/keymap.c | 2 +- keyboards/ergodox_infinity/keymaps/nordic_ergo/keymap.c | 12 ++++++------ keyboards/ergodox_infinity/keymaps/trulyergonomic/keymap.c | 2 +- keyboards/handwired/dactyl/keymaps/default/keymap.c | 4 ++-- keyboards/handwired/dactyl/keymaps/dvorak/keymap.c | 4 ++-- keyboards/helix/pico/keymaps/biacco/keymap.c | 4 ++-- keyboards/hotdox/keymaps/default/keymap.c | 2 +- keyboards/hotdox/keymaps/eozaki/keymap.c | 2 +- keyboards/kbdfans/kbd67/rev1/keymaps/koba/keymap.c | 2 +- keyboards/kbdfans/kbd67/rev2/keymaps/koba/keymap.c | 2 +- keyboards/keebio/levinson/keymaps/atreus/keymap.c | 2 +- keyboards/planck/keymaps/gabriel/keymap.c | 2 +- keyboards/planck/keymaps/jeremy-dev/keymap.c | 4 ++-- keyboards/planck/keymaps/pete/keymap.c | 4 ++-- keyboards/planck/keymaps/tong92/keymap.c | 6 +++--- keyboards/thevankeyboards/minivan/keymaps/tong92/keymap.c | 6 +++--- layouts/community/ergodox/absenth/keymap.c | 2 +- layouts/community/ergodox/adnw_k_o_y/keymap.c | 2 +- layouts/community/ergodox/albert/keymap.c | 2 +- layouts/community/ergodox/alexjj/keymap.c | 2 +- layouts/community/ergodox/bepo_csa/keymap.c | 6 +++--- layouts/community/ergodox/bryan/keymap.c | 6 +++--- layouts/community/ergodox/coderkun_neo2/keymap.c | 2 +- layouts/community/ergodox/colemak/keymap.c | 2 +- layouts/community/ergodox/colemak_osx_pc_no/keymap.c | 2 +- layouts/community/ergodox/dave/keymap.c | 4 ++-- layouts/community/ergodox/dragon788/keymap.c | 2 +- layouts/community/ergodox/dvorak/keymap.c | 2 +- layouts/community/ergodox/dvorak_intl_squisher/keymap.c | 4 ++-- layouts/community/ergodox/dvorak_programmer_swe/keymap.c | 2 +- layouts/community/ergodox/dvorak_svorak_a5/keymap.c | 2 +- layouts/community/ergodox/emacs_osx_dk/keymap.c | 2 +- layouts/community/ergodox/german-kinergo/keymap.c | 4 ++-- layouts/community/ergodox/german-lukas/keymap.c | 2 +- layouts/community/ergodox/german-manuneo/keymap.c | 4 ++-- layouts/community/ergodox/german-manuneo/keymap.md | 2 +- layouts/community/ergodox/german/keymap.c | 2 +- layouts/community/ergodox/jacobono/keymap.c | 6 +++--- layouts/community/ergodox/jafo/keymap.c | 2 +- layouts/community/ergodox/jgarr/keymap.c | 2 +- layouts/community/ergodox/mpiechotka/keymap.c | 4 ++-- layouts/community/ergodox/msc/keymap.c | 2 +- .../community/ergodox/norwegian_programmer_osx_pc/keymap.c | 2 +- .../ergodox/norwegian_programmer_osx_pc_colemak/keymap.c | 2 +- layouts/community/ergodox/osx_fr/keymap.c | 4 ++-- layouts/community/ergodox/osx_kinesis_pnut/keymap.c | 2 +- layouts/community/ergodox/phoenix/keymap.c | 2 +- layouts/community/ergodox/plover/keymap.c | 4 ++-- layouts/community/ergodox/qwerty_code_friendly/keymap.c | 2 +- layouts/community/ergodox/sneako/keymap.c | 2 +- layouts/community/ergodox/software_neo2/keymap.c | 4 ++-- layouts/community/ergodox/swedish-lindhe/keymap.c | 2 +- layouts/community/ergodox/swedish/keymap.c | 2 +- layouts/community/ergodox/swissgerman/keymap.c | 12 ++++++------ layouts/community/ergodox/tkuichooseyou/keymap.c | 2 +- layouts/community/ergodox/tm2030/keymap.c | 10 +++++----- layouts/community/ergodox/tonyabra_osx/keymap.c | 2 +- layouts/community/ergodox/townk_osx/keymap.c | 2 +- layouts/community/ergodox/twey/keymap.c | 2 +- layouts/community/ergodox/videck/keymap.c | 2 +- layouts/community/ergodox/xyverz/keymap.c | 8 ++++---- layouts/community/ergodox/zweihander-macos/keymap.c | 2 +- quantum/quantum_keycodes.h | 2 -- 95 files changed, 149 insertions(+), 147 deletions(-) create mode 100644 docs/ChangeLog/20190830/PR6327.md (limited to 'docs') diff --git a/docs/ChangeLog/20190830/PR6327.md b/docs/ChangeLog/20190830/PR6327.md new file mode 100644 index 000000000..233e10e09 --- /dev/null +++ b/docs/ChangeLog/20190830/PR6327.md @@ -0,0 +1,4 @@ +* Remove `KC_DELT` alias in favor of `KC_DEL` + * `KC_DELT` was a redundant, undocumented alias for `KC_DELETE` + * It has been removed and all its uses replaced with the more common `KC_DEL` alias + * Around 90 keymaps (mostly for ErgoDox boards) have been modified as a result diff --git a/keyboards/adkb96/keymaps/default/keymap.c b/keyboards/adkb96/keymaps/default/keymap.c index c8198ab33..a374ffb5e 100644 --- a/keyboards/adkb96/keymaps/default/keymap.c +++ b/keyboards/adkb96/keymaps/default/keymap.c @@ -4,12 +4,12 @@ extern keymap_config_t keymap_config; const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [0] = LAYOUT( - KC_ESC, XXXXXXX,KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_INS, KC_DELT, + [0] = LAYOUT( + KC_ESC, XXXXXXX,KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_INS, KC_DEL, KC_ZKHK,KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS,KC_EQL, KC_JYEN,KC_BSPC,KC_BSPC, KC_TAB, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC,KC_RBRC,KC_ENT, KC_ENT, KC_CAPS,KC_CAPS,KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN,KC_QUOT,KC_BSLS,KC_ENT, KC_ENT, - KC_LSFT,KC_LSFT,KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM,KC_DOT, KC_SLSH,KC_RO, KC_UP, KC_RSFT,KC_RSFT, + KC_LSFT,KC_LSFT,KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM,KC_DOT, KC_SLSH,KC_RO, KC_UP, KC_RSFT,KC_RSFT, KC_LCTL,KC_LALT,KC_LGUI,KC_MHEN,KC_SPC, KC_SPC, KC_SPC, KC_SPC, KC_HENK,KC_KANA,KC_RALT,KC_RCTL,KC_LEFT,KC_DOWN,KC_RGHT,XXXXXXX ) }; diff --git a/keyboards/atreus/keymaps/classic/keymap.c b/keyboards/atreus/keymaps/classic/keymap.c index dce9dd96d..3feeb97cf 100644 --- a/keyboards/atreus/keymaps/classic/keymap.c +++ b/keyboards/atreus/keymaps/classic/keymap.c @@ -25,7 +25,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [_LW] = LAYOUT( /* [> LOWER <] */ KC_INS, KC_HOME, KC_UP, KC_END, KC_PGUP, KC_UP, KC_F7, KC_F8, KC_F9, KC_F10 , - KC_DELT, KC_LEFT, KC_DOWN, KC_RGHT, KC_DOWN, KC_DOWN, KC_F4, KC_F5, KC_F6, KC_F11 , + KC_DEL, KC_LEFT, KC_DOWN, KC_RGHT, KC_DOWN, KC_DOWN, KC_F4, KC_F5, KC_F6, KC_F11 , KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F12 , KC_TRNS, KC_TRNS, KC_LGUI, KC_LSFT, KC_BSPC, KC_LCTL, KC_LALT, KC_SPC, DF(_QW), KC_TRNS, KC_TRNS, RESET ), diff --git a/keyboards/atreus/keymaps/default/keymap.c b/keyboards/atreus/keymaps/default/keymap.c index bbe4bb51a..95207f5c4 100644 --- a/keyboards/atreus/keymaps/default/keymap.c +++ b/keyboards/atreus/keymaps/default/keymap.c @@ -38,7 +38,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { */ [_LW] = LAYOUT( /* [> LOWER <] */ KC_INS, KC_HOME, KC_UP, KC_END, KC_PGUP, KC_UP, KC_F7, KC_F8, KC_F9, KC_F10 , - KC_DELT, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN, KC_DOWN, KC_F4, KC_F5, KC_F6, KC_F11 , + KC_DEL, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN, KC_DOWN, KC_F4, KC_F5, KC_F6, KC_F11 , KC_NO, KC_VOLU, KC_NO, KC_NO, RESET, KC_NO, KC_F1, KC_F2, KC_F3, KC_F12 , KC_NO, KC_VOLD, KC_LGUI, KC_LSFT, KC_BSPC, KC_LCTL, KC_LALT, KC_SPC, TO(_QW), KC_PSCR, KC_SLCK, KC_PAUS ) }; diff --git a/keyboards/atreus/keymaps/jeremy/keymap.c b/keyboards/atreus/keymaps/jeremy/keymap.c index baf506b97..e875af3cc 100644 --- a/keyboards/atreus/keymaps/jeremy/keymap.c +++ b/keyboards/atreus/keymaps/jeremy/keymap.c @@ -36,7 +36,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_0, KC_DOT, KC_EQL, KC_PLUS ), [CURS] = LAYOUT( - KC_TRNS, KC_BSPC, KC_UP, KC_DELT, KC_PGUP, KC_TRNS, KM_SAVE, KC_TRNS, KM_OPEN, KC_TRNS, + KC_TRNS, KC_BSPC, KC_UP, KC_DEL, KC_PGUP, KC_TRNS, KM_SAVE, KC_TRNS, KM_OPEN, KC_TRNS, KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN, KM_UNDO, KC_LALT, KC_TRNS, KC_LGUI, KC_TRNS, KC_TRNS, KC_VOLD, KC_MUTE, KC_VOLU, KC_MPLY, KM_REDO, KM_CLSE, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RESET, KC_TRNS, KC_TAB, KM_COPY, KM_CUT, KM_PAST, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS diff --git a/keyboards/atreus/keymaps/nojjan/keymap.c b/keyboards/atreus/keymaps/nojjan/keymap.c index d0aa3b279..a6872f995 100644 --- a/keyboards/atreus/keymaps/nojjan/keymap.c +++ b/keyboards/atreus/keymaps/nojjan/keymap.c @@ -36,7 +36,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { */ [_LW] = LAYOUT( /* [> LOWER <] */ KC_INS, KC_HOME, KC_UP, KC_END, KC_PGUP, KC_UP, KC_F7, KC_F8, KC_F9, KC_F10 , - KC_DELT, KC_LEFT, KC_DOWN, KC_RGHT, KC_DOWN, KC_DOWN, KC_F4, KC_F5, KC_F6, KC_F11 , + KC_DEL, KC_LEFT, KC_DOWN, KC_RGHT, KC_DOWN, KC_DOWN, KC_F4, KC_F5, KC_F6, KC_F11 , KC_NO, KC_VOLU, KC_NO, KC_NO, RESET, KC_NO, KC_F1, KC_F2, KC_F3, KC_F12 , KC_NO, KC_VOLD, KC_LGUI, KC_LSFT, KC_BSPC, KC_LCTL, KC_LALT, KC_SPC, TO(_QW), KC_PSCR, KC_SLCK, KC_PAUS ) }; diff --git a/keyboards/atreus/keymaps/ptillemans/keymap.c b/keyboards/atreus/keymaps/ptillemans/keymap.c index 9019e9a8c..ea4edeca7 100644 --- a/keyboards/atreus/keymaps/ptillemans/keymap.c +++ b/keyboards/atreus/keymaps/ptillemans/keymap.c @@ -42,7 +42,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { */ [_LW] = LAYOUT( /* [> LOWER <] */ KC_INS, KC_HOME, KC_UP, KC_END, KC_PGUP, KC_UP, KC_F7, KC_F8, KC_F9, KC_F10 , - KC_DELT, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN, KC_DOWN, KC_F4, KC_F5, KC_F6, KC_F11 , + KC_DEL, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN, KC_DOWN, KC_F4, KC_F5, KC_F6, KC_F11 , KC_NO, KC_VOLU, KC_NO, KC_NO, RESET, KC_TILD, KC_F1, KC_F2, KC_F3, KC_F12 , KC_NO, KC_VOLD, _______, _______, KC_MNXT, _______, _______, _______, TO(_QW), KC_PSCR, KC_SLCK, KC_MPLY ) diff --git a/keyboards/atreus62/keymaps/default/keymap.c b/keyboards/atreus62/keymaps/default/keymap.c index 06c7ae309..95beab376 100644 --- a/keyboards/atreus62/keymaps/default/keymap.c +++ b/keyboards/atreus62/keymaps/default/keymap.c @@ -17,7 +17,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_BSLS, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_RBRC , KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT , KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_LBRC , - KC_LCTL, KC_LGUI, KC_LALT, KC_GRV, MO(_NAV),KC_BSPC, KC_DELT, KC_ENT, KC_SPC, KC_EQL, KC_MINS, KC_QUOT, KC_ENT, KC_RGUI + KC_LCTL, KC_LGUI, KC_LALT, KC_GRV, MO(_NAV),KC_BSPC, KC_DEL, KC_ENT, KC_SPC, KC_EQL, KC_MINS, KC_QUOT, KC_ENT, KC_RGUI ), [_NAV] = LAYOUT( diff --git a/keyboards/atreus62/keymaps/mneme/keymap.c b/keyboards/atreus62/keymaps/mneme/keymap.c index ba46d405e..e76751c33 100644 --- a/keyboards/atreus62/keymaps/mneme/keymap.c +++ b/keyboards/atreus62/keymaps/mneme/keymap.c @@ -100,7 +100,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KN_AO, OSM_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KN_OE, KN_AE, OSM_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KN_MINS, OSM_LSFT, - MO(NAV), OSM_LCTL, OSM_LALT, KC_LGUI, MO(SYM), KC_BSPC, KC_DELT, KC_ENT, KC_SPC, MO(SYM), KC_LEAD, KC_LALT, KC_LCTRL, KC_HYP + MO(NAV), OSM_LCTL, OSM_LALT, KC_LGUI, MO(SYM), KC_BSPC, KC_DEL, KC_ENT, KC_SPC, MO(SYM), KC_LEAD, KC_LALT, KC_LCTRL, KC_HYP ), [NAV] = LAYOUT( diff --git a/keyboards/bantam44/keymaps/default/keymap.c b/keyboards/bantam44/keymaps/default/keymap.c index 7f92da08d..430bdb850 100644 --- a/keyboards/bantam44/keymaps/default/keymap.c +++ b/keyboards/bantam44/keymaps/default/keymap.c @@ -10,14 +10,14 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ), /* LOWER */ [1] = LAYOUT( \ - KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DELT, \ + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL, \ KC_TAB, KC_MPRV, KC_MPLY, KC_MNXT, KC_GRV, KC_BSLS, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_ENT, \ KC_CAPS, KC_LSFT, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_NO, KC_HOME, KC_PGUP, KC_RSFT, \ KC_LCTL, KC_LGUI, KC_LALT, KC_TRNS, KC_SPC, KC_TRNS, KC_END, KC_PGDN, KC_EXLM \ ), /* RAISE */ [2] = LAYOUT( \ - KC_ESC, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_DELT, \ + KC_ESC, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_DEL, \ KC_TAB, KC_MUTE, KC_VOLD, KC_VOLU, KC_TILD, KC_PIPE, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_ENT, \ KC_CAPS, KC_LSFT, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_NO, KC_NO, KC_UP, KC_RSFT, \ KC_LCTL, KC_LGUI, KC_LALT, KC_TRNS, KC_SPC, KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT \ diff --git a/keyboards/dz60/keymaps/marianas/keyDefinitions.h b/keyboards/dz60/keymaps/marianas/keyDefinitions.h index d3aac3dcb..7248c1f53 100644 --- a/keyboards/dz60/keymaps/marianas/keyDefinitions.h +++ b/keyboards/dz60/keymaps/marianas/keyDefinitions.h @@ -12,7 +12,7 @@ #define PGUP KC_PGUP #define PGDN KC_PGDN #define END_ KC_END -#define DELT KC_DELETE +#define DEL KC_DELETE #define UPUP KC_UP #define D_WN KC_DOWN #define LEFT KC_LEFT diff --git a/keyboards/dz60/keymaps/marianas/keymap.c b/keyboards/dz60/keymaps/marianas/keymap.c index f86074b9c..a0451b543 100644 --- a/keyboards/dz60/keymaps/marianas/keymap.c +++ b/keyboards/dz60/keymaps/marianas/keymap.c @@ -19,7 +19,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [NAV_CLUSTER]= LAYOUT_60_ansi( _____, PSCR, SCRL, PAUS, NSRT, HOME, PGUP, NMLK, KSSH, STAR, KMIN, ____, ____, ______, - ______, ____, ____, ____, DELT, END_, PGDN, KP_7, KP_8, KP_9, PLUS, ____, ____, _____, + ______, ____, ____, ____, DEL, END_, PGDN, KP_7, KP_8, KP_9, PLUS, ____, ____, _____, _______, ____, ____, ____, ____, UPUP, UPUP, KP_4, KP_5, KP_6, PLUS, ____, ___________, ________, ____, ____, ____, LEFT, D_WN, RGHT, KP_1, KP_2, KP_3, KNTR, _________________, ____, ____, ____, /*-----------------*/KC_KP_0/*-----------------*/, KDOT, KNTR, ____, ____), diff --git a/keyboards/ergo42/keymaps/biacco-biacco/keymap.c b/keyboards/ergo42/keymaps/biacco-biacco/keymap.c index 9eaba2209..7cf40fa9a 100644 --- a/keyboards/ergo42/keymaps/biacco-biacco/keymap.c +++ b/keyboards/ergo42/keymaps/biacco-biacco/keymap.c @@ -31,7 +31,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_RBRC, KC_BSLS, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, \ KC_LALT, KC_A, KC_S, KC_D, KC_F, KC_G, S(KC_8), S(KC_9), KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, \ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, S(KC_RBRC), S(KC_BSLS), KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, SFT_T(KC_RO), \ - KC_LCTRL, KC_LGUI, KC_APP, TG(BIAC),LT(SYMB, KC_ESC), RCTL_T(KC_SPC), SFT_T(KC_TAB), KC_BSPC, LT(META, KC_ENT), KC_DELT, KC_PSCR, TG(GAME), TG(SYMB), KC_JYEN \ + KC_LCTRL, KC_LGUI, KC_APP, TG(BIAC),LT(SYMB, KC_ESC), RCTL_T(KC_SPC),SFT_T(KC_TAB), KC_BSPC, LT(META, KC_ENT), KC_DEL, KC_PSCR, TG(GAME), TG(SYMB), KC_JYEN \ ), /* META @@ -90,7 +90,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_RBRC, KC_BSLS, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, \ KC_LALT, KC_A, KC_S, KC_D, KC_F, KC_G, S(KC_8), S(KC_9), KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, \ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, S(KC_RBRC), S(KC_BSLS), KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, SFT_T(KC_RO), \ - KC_LCTRL, KC_LGUI, KC_APP, KC_PSCR, KC_ESC, KC_SPC, KC_TAB, KC_BSPC, KC_ENT, KC_DELT, KC_PSCR, _______, _______, KC_JYEN \ + KC_LCTRL, KC_LGUI, KC_APP, KC_PSCR, KC_ESC, KC_SPC, KC_TAB, KC_BSPC, KC_ENT, KC_DEL, KC_PSCR, _______, _______, KC_JYEN \ ), /* BIAC @@ -110,7 +110,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_TAB, KC_SCLN,KC_COMM, KC_DOT, KC_P, KC_Q, KC_RBRC, KC_BSLS, KC_Y, KC_G, KC_D, KC_M, KC_F, KC_LBRC, \ KC_LALT, KC_A, KC_O, KC_E, KC_I, KC_U, S(KC_8), S(KC_9), KC_B, KC_N, KC_T, KC_R, KC_S, KC_QUOT, \ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_W, S(KC_RBRC), S(KC_BSLS), KC_H, KC_J, KC_K, KC_L, KC_SLSH, SFT_T(KC_RO), \ - KC_LCTRL, KC_LGUI, KC_APP, _______, LT(BSYMB, KC_ESC),RCTL_T(KC_SPC),SFT_T(KC_TAB), KC_BSPC, LT(BMETA, KC_ENT),KC_DELT, KC_PSCR, XXXXXXX, XXXXXXX, KC_JYEN \ + KC_LCTRL, KC_LGUI, KC_APP, _______, LT(BSYMB, KC_ESC),RCTL_T(KC_SPC),SFT_T(KC_TAB), KC_BSPC, LT(BMETA, KC_ENT),KC_DEL, KC_PSCR, XXXXXXX, XXXXXXX, KC_JYEN \ ), /* META diff --git a/keyboards/ergo42/keymaps/biacco-macOS/keymap.c b/keyboards/ergo42/keymaps/biacco-macOS/keymap.c index 8299eb701..bc6a8557e 100644 --- a/keyboards/ergo42/keymaps/biacco-macOS/keymap.c +++ b/keyboards/ergo42/keymaps/biacco-macOS/keymap.c @@ -25,7 +25,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_RBRC, KC_BSLS, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, \ KC_LALT, KC_A, KC_S, KC_D, KC_F, KC_G, S(KC_8), S(KC_9), KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, \ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, S(KC_RBRC), S(KC_BSLS), KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, SFT_T(KC_RO), \ - KC_LCTRL, KC_LGUI, KC_APP, KC_PSCR, LT(SYMB, KC_ESC), GUI_T(KC_SPC), SFT_T(KC_TAB), KC_BSPC, LT(META, KC_ENT), KC_DELT, KC_PSCR, TG(GAME), TG(SYMB), KC_JYEN \ + KC_LCTRL, KC_LGUI, KC_APP, KC_PSCR, LT(SYMB, KC_ESC), GUI_T(KC_SPC), SFT_T(KC_TAB), KC_BSPC, LT(META, KC_ENT), KC_DEL, KC_PSCR, TG(GAME), TG(SYMB), KC_JYEN \ ), /* META @@ -82,7 +82,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_RBRC, KC_BSLS, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, \ KC_LALT, KC_A, KC_S, KC_D, KC_F, KC_G, S(KC_8), S(KC_9), KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, \ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, S(KC_RBRC), S(KC_BSLS), KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, SFT_T(KC_RO), \ - KC_LCTRL, KC_LGUI, KC_APP, KC_PSCR, KC_ESC, KC_SPC, KC_TAB, KC_BSPC, KC_ENT, KC_DELT, KC_PSCR, _______, _______, KC_JYEN \ + KC_LCTRL, KC_LGUI, KC_APP, KC_PSCR, KC_ESC, KC_SPC, KC_TAB, KC_BSPC, KC_ENT, KC_DEL, KC_PSCR, _______, _______, KC_JYEN \ ) }; diff --git a/keyboards/ergo42/keymaps/biacco-underglow/keymap.c b/keyboards/ergo42/keymaps/biacco-underglow/keymap.c index 344919280..5b7fb7e66 100644 --- a/keyboards/ergo42/keymaps/biacco-underglow/keymap.c +++ b/keyboards/ergo42/keymaps/biacco-underglow/keymap.c @@ -36,7 +36,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_RBRC, KC_BSLS, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, \ KC_LALT, KC_A, KC_S, KC_D, KC_F, KC_G, S(KC_8), S(KC_9), KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, \ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, S(KC_RBRC), S(KC_BSLS), KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, SFT_T(KC_RO), \ - KC_LCTRL, KC_LGUI, KC_APP, KC_PSCR, LT(SYMB, KC_ESC), RCTL_T(KC_SPC), SFT_T(KC_TAB), KC_BSPC, LT(META, KC_ENT), KC_DELT, KC_PSCR, TG(GAME), TG(RGB), KC_JYEN \ + KC_LCTRL, KC_LGUI, KC_APP, KC_PSCR, LT(SYMB, KC_ESC), RCTL_T(KC_SPC),SFT_T(KC_TAB), KC_BSPC, LT(META, KC_ENT), KC_DEL, KC_PSCR, TG(GAME), TG(RGB), KC_JYEN \ ), /* META @@ -93,7 +93,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_RBRC, KC_BSLS, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, \ KC_LALT, KC_A, KC_S, KC_D, KC_F, KC_G, S(KC_8), S(KC_9), KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, \ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, S(KC_RBRC), S(KC_BSLS), KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, SFT_T(KC_RO), \ - KC_LCTRL, KC_LGUI, KC_APP, KC_PSCR, KC_ESC, KC_SPC, KC_TAB, KC_BSPC, KC_ENT, KC_DELT, KC_PSCR, _______, _______, KC_JYEN \ + KC_LCTRL, KC_LGUI, KC_APP, KC_PSCR, KC_ESC, KC_SPC, KC_TAB, KC_BSPC, KC_ENT, KC_DEL, KC_PSCR, _______, _______, KC_JYEN \ ), /* RGB diff --git a/keyboards/ergo42/keymaps/biacco-winjp/keymap.c b/keyboards/ergo42/keymaps/biacco-winjp/keymap.c index 5dbca3bfc..9d8284dbd 100644 --- a/keyboards/ergo42/keymaps/biacco-winjp/keymap.c +++ b/keyboards/ergo42/keymaps/biacco-winjp/keymap.c @@ -31,7 +31,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_RBRC, KC_BSLS, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, \ KC_LALT, KC_A, KC_S, KC_D, KC_F, KC_G, S(KC_8), S(KC_9), KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, \ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, S(KC_RBRC), S(KC_BSLS), KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, SFT_T(KC_RO), \ - KC_LCTRL, KC_LGUI, KC_APP, KC_PSCR, LT(SYMB, KC_ESC), RCTL_T(KC_SPC), SFT_T(KC_TAB), KC_BSPC, LT(META, KC_ENT), KC_DELT, KC_PSCR, TG(GAME), TG(SYMB), KC_JYEN \ + KC_LCTRL, KC_LGUI, KC_APP, KC_PSCR, LT(SYMB, KC_ESC), RCTL_T(KC_SPC),SFT_T(KC_TAB), KC_BSPC, LT(META, KC_ENT), KC_DEL, KC_PSCR, TG(GAME), TG(SYMB), KC_JYEN \ ), /* META @@ -88,7 +88,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_RBRC, KC_BSLS, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, \ KC_LALT, KC_A, KC_S, KC_D, KC_F, KC_G, S(KC_8), S(KC_9), KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, \ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, S(KC_RBRC), S(KC_BSLS), KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, SFT_T(KC_RO), \ - KC_LCTRL, KC_LGUI, KC_APP, KC_PSCR, KC_ESC, KC_SPC, KC_TAB, KC_BSPC, KC_ENT, KC_DELT, KC_PSCR, _______, _______, KC_JYEN \ + KC_LCTRL, KC_LGUI, KC_APP, KC_PSCR, KC_ESC, KC_SPC, KC_TAB, KC_BSPC, KC_ENT, KC_DEL, KC_PSCR, _______, _______, KC_JYEN \ ) }; diff --git a/keyboards/ergo42/keymaps/biacco/keymap.c b/keyboards/ergo42/keymaps/biacco/keymap.c index a6cc61052..12e55b75f 100644 --- a/keyboards/ergo42/keymaps/biacco/keymap.c +++ b/keyboards/ergo42/keymaps/biacco/keymap.c @@ -25,7 +25,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_RBRC, KC_BSLS, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, \ KC_LALT, KC_A, KC_S, KC_D, KC_F, KC_G, S(KC_8), S(KC_9), KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, \ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, S(KC_RBRC), S(KC_BSLS), KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, SFT_T(KC_RO), \ - KC_LCTRL, KC_LGUI, KC_APP, KC_PSCR, LT(SYMB, KC_ESC), RCTL_T(KC_SPC), SFT_T(KC_TAB), KC_BSPC, LT(META, KC_ENT), KC_DELT, KC_PSCR, TG(GAME), TG(SYMB), KC_JYEN \ + KC_LCTRL, KC_LGUI, KC_APP, KC_PSCR, LT(SYMB, KC_ESC), RCTL_T(KC_SPC),SFT_T(KC_TAB), KC_BSPC, LT(META, KC_ENT), KC_DEL, KC_PSCR, TG(GAME), TG(SYMB), KC_JYEN \ ), /* META @@ -82,7 +82,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_RBRC, KC_BSLS, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, \ KC_LALT, KC_A, KC_S, KC_D, KC_F, KC_G, S(KC_8), S(KC_9), KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, \ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, S(KC_RBRC), S(KC_BSLS), KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, SFT_T(KC_RO), \ - KC_LCTRL, KC_LGUI, KC_APP, KC_PSCR, KC_ESC, KC_SPC, KC_TAB, KC_BSPC, KC_ENT, KC_DELT, KC_PSCR, _______, _______, KC_JYEN \ + KC_LCTRL, KC_LGUI, KC_APP, KC_PSCR, KC_ESC, KC_SPC, KC_TAB, KC_BSPC, KC_ENT, KC_DEL, KC_PSCR, _______, _______, KC_JYEN \ ) }; diff --git a/keyboards/ergo42/keymaps/default-illustrator/keymap.c b/keyboards/ergo42/keymaps/default-illustrator/keymap.c index 62af6b2ab..3c57f7fc9 100644 --- a/keyboards/ergo42/keymaps/default-illustrator/keymap.c +++ b/keyboards/ergo42/keymaps/default-illustrator/keymap.c @@ -26,7 +26,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_RBRC, KC_BSLS, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, \ KC_LALT, KC_A, KC_S, KC_D, KC_F, KC_G, S(KC_8), S(KC_9), KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, \ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, S(KC_RBRC), S(KC_BSLS), KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, SFT_T(KC_RO), \ - KC_LCTRL, KC_LGUI, KC_APP, TG(ILLUST), LT(SYMB, KC_ESC), RCTL_T(KC_SPC), SFT_T(KC_TAB), KC_BSPC, LT(META, KC_ENT), KC_DELT, KC_PSCR, TG(GAME), TG(ILLUST), KC_JYEN \ + KC_LCTRL, KC_LGUI, KC_APP, TG(ILLUST), LT(SYMB, KC_ESC), RCTL_T(KC_SPC), SFT_T(KC_TAB), KC_BSPC, LT(META, KC_ENT), KC_DEL, KC_PSCR, TG(GAME), TG(ILLUST), KC_JYEN \ ), /* META @@ -83,7 +83,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_RBRC, KC_BSLS, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, \ KC_LALT, KC_A, KC_S, KC_D, KC_F, KC_G, S(KC_8), S(KC_9), KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, \ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, S(KC_RBRC), S(KC_BSLS), KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, SFT_T(KC_RO), \ - KC_LCTRL, KC_LGUI, KC_APP, XXXXXXX, KC_ESC, KC_SPC, KC_TAB, KC_BSPC, KC_ENT, KC_DELT, KC_PSCR, _______, XXXXXXX, KC_JYEN \ + KC_LCTRL, KC_LGUI, KC_APP, XXXXXXX, KC_ESC, KC_SPC, KC_TAB, KC_BSPC, KC_ENT, KC_DEL, KC_PSCR, _______, XXXXXXX, KC_JYEN \ ), /* ILLUST @@ -102,7 +102,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_TAB, KC_H, KC_G, KC_I, KC_P, LCTL(KC_J), LCTL(KC_BSLS), _______, _______, _______, _______, _______, _______, _______, \ KC_LALT, KC_R, KC_S, KC_A, KC_V, S(KC_W), LCTL(KC_RBRC), _______, _______, _______, _______, _______, _______, _______, \ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_F, _______, _______, _______, _______, _______, _______, _______, \ - KC_LCTRL, KC_LGUI, KC_APP, _______, KC_ESC, KC_RCTL, KC_DELT, _______, _______, _______, _______, XXXXXXX, _______, _______ \ + KC_LCTRL, KC_LGUI, KC_APP, _______, KC_ESC, KC_RCTL, KC_DEL, _______, _______, _______, _______, XXXXXXX, _______, _______ \ ) }; diff --git a/keyboards/ergo42/keymaps/default-underglow/keymap.c b/keyboards/ergo42/keymaps/default-underglow/keymap.c index 212d9138d..d4e8f1108 100644 --- a/keyboards/ergo42/keymaps/default-underglow/keymap.c +++ b/keyboards/ergo42/keymaps/default-underglow/keymap.c @@ -33,7 +33,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { */ [BASE] = LAYOUT( \ KC_ESC, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_BSPC, \ - KC_DELT, KC_RCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_RBRC, KC_ENT, \ + KC_DEL, KC_RCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_RBRC, KC_ENT, \ MO(RGB), KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_UP, KC_RSFT, \ KC_LGUI, KC_LCTL, KC_GRV, KC_BSLS, KC_LALT, MO(META), KC_SPC, KC_SPC, KC_QUOT, KC_MINS, KC_EQL, KC_LEFT, KC_DOWN, KC_RGHT \ ), diff --git a/keyboards/ergo42/keymaps/default/keymap.c b/keyboards/ergo42/keymaps/default/keymap.c index f99ec5fb6..7886e307f 100644 --- a/keyboards/ergo42/keymaps/default/keymap.c +++ b/keyboards/ergo42/keymaps/default/keymap.c @@ -22,7 +22,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { */ [BASE] = LAYOUT( \ KC_ESC, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_BSPC, \ - KC_DELT, KC_RCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_RBRC, KC_ENT, \ + KC_DEL, KC_RCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_RBRC, KC_ENT, \ MO(SYMB), KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_UP, KC_RSFT, \ KC_LGUI, KC_LCTL, KC_GRV, KC_BSLS, KC_LALT, MO(META), KC_SPC, KC_SPC, KC_QUOT, KC_MINS, KC_EQL, KC_LEFT, KC_DOWN, KC_RGHT \ ), diff --git a/keyboards/ergo42/keymaps/koba/keymap.c b/keyboards/ergo42/keymaps/koba/keymap.c index 9bc504207..091d7fb9a 100644 --- a/keyboards/ergo42/keymaps/koba/keymap.c +++ b/keyboards/ergo42/keymaps/koba/keymap.c @@ -47,7 +47,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * `------------------------------------------------' `------------------------------------------------' */ [_WIN] = LAYOUT( \ - KC_ESC, KC_DELT, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, JP_AT, KC_BSPC, \ + KC_ESC, KC_DEL, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, JP_AT, KC_BSPC, \ KC_TAB, KC_RCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, JP_COLN, KC_ENT, \ KC_ZKHK, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_UP, KC_RSFT, \ FN, KC_LCTL, KC_LGUI, KC_LALT, KC_MHEN, LOWER, KC_SPC, KC_SPC, RAISE, KC_HENK, KC_APP, KC_LEFT, KC_DOWN, KC_RGHT \ @@ -65,7 +65,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * `------------------------------------------------' `------------------------------------------------' */ [_MACOS] = LAYOUT( \ - KC_ESC, KC_DELT, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, JP_AT, KC_BSPC, \ + KC_ESC, KC_DEL, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, JP_AT, KC_BSPC, \ KC_TAB, KC_RCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, JP_COLN, KC_ENT, \ KC_CAPS, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_UP, KC_RSFT, \ FN, KC_LCTL, KC_LALT, KC_LGUI, KC_EISU, LOWER, KC_SPC, KC_SPC, RAISE, KC_KNA, KC_RGUI, KC_LEFT, KC_DOWN, KC_RGHT \ diff --git a/keyboards/ergo42/keymaps/yshrsmz/keymap.c b/keyboards/ergo42/keymaps/yshrsmz/keymap.c index 55fe30e89..6239876bb 100644 --- a/keyboards/ergo42/keymaps/yshrsmz/keymap.c +++ b/keyboards/ergo42/keymaps/yshrsmz/keymap.c @@ -95,7 +95,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_RBRC, KC_BSLS, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, \ KC_LALT, KC_A, KC_S, KC_D, KC_F, KC_G, S(KC_8), S(KC_9), KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, \ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, S(KC_RBRC), S(KC_BSLS), KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, SFT_T(KC_RO), \ - KC_LCTRL, KC_LGUI, KC_APP, KC_PSCR, KC_ESC, KC_SPC, KC_TAB, KC_BSPC, KC_ENT, KC_DELT, KC_PSCR, _______, _______, KC_JYEN \ + KC_LCTRL, KC_LGUI, KC_APP, KC_PSCR, KC_ESC, KC_SPC, KC_TAB, KC_BSPC, KC_ENT, KC_DEL, KC_PSCR, _______, _______, KC_JYEN \ ) }; diff --git a/keyboards/ergodone/keymaps/default/keymap.c b/keyboards/ergodone/keymaps/default/keymap.c index 28b393a3d..2fc534401 100644 --- a/keyboards/ergodone/keymaps/default/keymap.c +++ b/keyboards/ergodone/keymaps/default/keymap.c @@ -39,7 +39,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [BASE] = LAYOUT_ergodox( // layer 0 : default // left hand KC_EQL, KC_1, KC_2, KC_3, KC_4, KC_5, KC_LEFT, - KC_DELT, KC_Q, KC_W, KC_E, KC_R, KC_T, TG(SYMB), + KC_DEL, KC_Q, KC_W, KC_E, KC_R, KC_T, TG(SYMB), KC_BSPC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_LSFT, CTL_T(KC_Z), KC_X, KC_C, KC_V, KC_B, ALL_T(KC_NO), LT(SYMB,KC_GRV),KC_QUOT, LALT(KC_LSFT), KC_LEFT,KC_RGHT, diff --git a/keyboards/ergodone/keymaps/eozaki/keymap.c b/keyboards/ergodone/keymaps/eozaki/keymap.c index d29f4b763..917790124 100644 --- a/keyboards/ergodone/keymaps/eozaki/keymap.c +++ b/keyboards/ergodone/keymaps/eozaki/keymap.c @@ -41,7 +41,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [BASE] = LAYOUT_ergodox( // layer 0 : default // left hand KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, LSFT(KC_GRV), - KC_DELT, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_GRV, + KC_DEL, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_GRV, KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_LALT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_LBRC, LT(SYMB, KC_F2), KC_F4, KC_F5, KC_F6, KC_F11, diff --git a/keyboards/ergodox_ez/keymaps/blakedietz/keymap.c b/keyboards/ergodox_ez/keymaps/blakedietz/keymap.c index 8facc6e92..28f45bc3c 100644 --- a/keyboards/ergodox_ez/keymaps/blakedietz/keymap.c +++ b/keyboards/ergodox_ez/keymaps/blakedietz/keymap.c @@ -52,7 +52,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [BASE] = LAYOUT_ergodox( // layer 0 : default // left hand KC_EQL, KC_1, KC_2, KC_3, KC_4, KC_5, KC_LEFT, - KC_DELT, KC_Q, KC_W, KC_E, KC_R, KC_T, TG(DEV), + KC_DEL, KC_Q, KC_W, KC_E, KC_R, KC_T, TG(DEV), KC_BSPC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_LSFT, CTL_T(KC_Z), ALT_T(KC_X), GUI_T(KC_C), KC_V, KC_B, ALL_T(KC_NO), LT(SYMB,KC_GRV), KC_QUOT, LALT(KC_LSFT), KC_LEFT, KC_RGHT, diff --git a/keyboards/ergodox_ez/keymaps/default/keymap.c b/keyboards/ergodox_ez/keymaps/default/keymap.c index fb3d3896b..4936ab42c 100644 --- a/keyboards/ergodox_ez/keymaps/default/keymap.c +++ b/keyboards/ergodox_ez/keymaps/default/keymap.c @@ -40,7 +40,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [BASE] = LAYOUT_ergodox( // left hand KC_EQL, KC_1, KC_2, KC_3, KC_4, KC_5, KC_LEFT, - KC_DELT, KC_Q, KC_W, KC_E, KC_R, KC_T, TG(SYMB), + KC_DEL, KC_Q, KC_W, KC_E, KC_R, KC_T, TG(SYMB), KC_BSPC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_LSFT, CTL_T(KC_Z), KC_X, KC_C, KC_V, KC_B, ALL_T(KC_NO), LT(SYMB,KC_GRV), KC_QUOT, LALT(KC_LSFT), KC_LEFT, KC_RGHT, diff --git a/keyboards/ergodox_ez/keymaps/default_osx/keymap.c b/keyboards/ergodox_ez/keymaps/default_osx/keymap.c index 6388586de..3f52528f8 100644 --- a/keyboards/ergodox_ez/keymaps/default_osx/keymap.c +++ b/keyboards/ergodox_ez/keymaps/default_osx/keymap.c @@ -36,7 +36,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [BASE] = LAYOUT_ergodox( // layer 0 : default // left hand KC_EQL, KC_1, KC_2, KC_3, KC_4, KC_5, KC_LEFT, - KC_DELT, KC_Q, KC_W, KC_E, KC_R, KC_T, TG(SYMB), + KC_DEL, KC_Q, KC_W, KC_E, KC_R, KC_T, TG(SYMB), KC_BSPC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_LSFT, CTL_T(KC_Z), KC_X, KC_C, KC_V, KC_B, ALL_T(KC_NO), LT(SYMB,KC_GRV),KC_QUOT, LALT(KC_LSFT), KC_LEFT,KC_RGHT, diff --git a/keyboards/ergodox_ez/keymaps/kou/keymap.c b/keyboards/ergodox_ez/keymaps/kou/keymap.c index 98fafe8ce..5e49dca25 100644 --- a/keyboards/ergodox_ez/keymaps/kou/keymap.c +++ b/keyboards/ergodox_ez/keymaps/kou/keymap.c @@ -47,7 +47,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [BASE] = LAYOUT_ergodox( // layer 0 : default // left hand KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_GRV, - KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_DELT, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_DEL, KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_LSFT, LT(NPAD, KC_Z), KC_X, KC_C, KC_V, KC_B, KC_ESC, MO(SYMB), KC_LALT, KC_LGUI, MO(SYMB), KC_SPC, diff --git a/keyboards/ergodox_ez/keymaps/profet_80/keymap.c b/keyboards/ergodox_ez/keymaps/profet_80/keymap.c index 29505b641..85455fa9d 100644 --- a/keyboards/ergodox_ez/keymaps/profet_80/keymap.c +++ b/keyboards/ergodox_ez/keymaps/profet_80/keymap.c @@ -34,7 +34,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [BASE] = LAYOUT_ergodox_80( // layer 0 : default // left hand KC_EQL, KC_1, KC_2, KC_3, KC_4, KC_5, KC_LEFT, - KC_DELT, KC_Q, KC_W, KC_E, KC_R, KC_T, TG(SYMB), + KC_DEL, KC_Q, KC_W, KC_E, KC_R, KC_T, TG(SYMB), KC_BSPC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_LSFT, CTL_T(KC_Z), KC_X, KC_C, KC_V, KC_B, ALL_T(KC_NO), LT(SYMB,KC_GRV),KC_QUOT, LALT(KC_LSFT), KC_LEFT,KC_RGHT, diff --git a/keyboards/ergodox_ez/keymaps/rgb_layer/keymap.c b/keyboards/ergodox_ez/keymaps/rgb_layer/keymap.c index 384d7d094..2c90c02a6 100644 --- a/keyboards/ergodox_ez/keymaps/rgb_layer/keymap.c +++ b/keyboards/ergodox_ez/keymaps/rgb_layer/keymap.c @@ -49,7 +49,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [BASE] = LAYOUT_ergodox( // layer 0 : default // left hand KC_EQL, KC_1, KC_2, KC_3, KC_4, KC_5, KC_LEFT, - KC_DELT, KC_Q, KC_W, KC_E, KC_R, KC_T, TG(SYMB), + KC_DEL, KC_Q, KC_W, KC_E, KC_R, KC_T, TG(SYMB), KC_BSPC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_LSFT, CTL_T(KC_Z), KC_X, KC_C, KC_V, KC_B, ALL_T(KC_NO), LT(SYMB,KC_GRV),KC_QUOT, LALT(KC_LSFT), KC_LEFT,KC_RGHT, diff --git a/keyboards/ergodox_ez/keymaps/steno/keymap.c b/keyboards/ergodox_ez/keymaps/steno/keymap.c index 45fc9f8ba..080d3f6ce 100644 --- a/keyboards/ergodox_ez/keymaps/steno/keymap.c +++ b/keyboards/ergodox_ez/keymaps/steno/keymap.c @@ -36,7 +36,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [BASE] = LAYOUT_ergodox( // layer 0 : default // left hand KC_EQL, KC_1, KC_2, KC_3, KC_4, KC_5, KC_LEFT, - KC_DELT, KC_Q, KC_W, KC_E, KC_R, KC_T, TG(SYMB), + KC_DEL, KC_Q, KC_W, KC_E, KC_R, KC_T, TG(SYMB), KC_BSPC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_LSFT, CTL_T(KC_Z), KC_X, KC_C, KC_V, KC_B, ALL_T(KC_NO), LT(SYMB,KC_GRV),KC_QUOT, LALT(KC_LSFT), KC_LEFT,KC_RGHT, diff --git a/keyboards/ergodox_infinity/keymaps/default/keymap.c b/keyboards/ergodox_infinity/keymaps/default/keymap.c index 28b393a3d..2fc534401 100644 --- a/keyboards/ergodox_infinity/keymaps/default/keymap.c +++ b/keyboards/ergodox_infinity/keymaps/default/keymap.c @@ -39,7 +39,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [BASE] = LAYOUT_ergodox( // layer 0 : default // left hand KC_EQL, KC_1, KC_2, KC_3, KC_4, KC_5, KC_LEFT, - KC_DELT, KC_Q, KC_W, KC_E, KC_R, KC_T, TG(SYMB), + KC_DEL, KC_Q, KC_W, KC_E, KC_R, KC_T, TG(SYMB), KC_BSPC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_LSFT, CTL_T(KC_Z), KC_X, KC_C, KC_V, KC_B, ALL_T(KC_NO), LT(SYMB,KC_GRV),KC_QUOT, LALT(KC_LSFT), KC_LEFT,KC_RGHT, diff --git a/keyboards/ergodox_infinity/keymaps/input_club/keymap.c b/keyboards/ergodox_infinity/keymaps/input_club/keymap.c index 064c01c55..2aa74c419 100644 --- a/keyboards/ergodox_infinity/keymaps/input_club/keymap.c +++ b/keyboards/ergodox_infinity/keymaps/input_club/keymap.c @@ -43,7 +43,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_LGUI, KC_GRV, KC_BSLS, KC_LEFT, KC_RGHT, KC_LCTL, KC_LALT, KC_HOME, - KC_BSPC, KC_DELT, KC_END, + KC_BSPC, KC_DEL, KC_END, /* right hand * +-----+-----+-----+-----+-----+-----+-------+ * |LCK-2| 6 | 7 | 8 | 9 | 0 | - | diff --git a/keyboards/ergodox_infinity/keymaps/nordic_ergo/keymap.c b/keyboards/ergodox_infinity/keymaps/nordic_ergo/keymap.c index 156fd2f19..6a66b1d3f 100644 --- a/keyboards/ergodox_infinity/keymaps/nordic_ergo/keymap.c +++ b/keyboards/ergodox_infinity/keymaps/nordic_ergo/keymap.c @@ -23,7 +23,7 @@ enum custom_keycodes { const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { /* Keymap 0: Basic layer * - * + * * * ,--------------------------------------------------. ,--------------------------------------------------. * | Esc | 1 | 2 | 3 | 4 | 5 | §½ | | PRSC | 6 | 7 | 8 | 9 | 0 | - | @@ -54,7 +54,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_LCTRL, KC_RBRC, KC_NONUS_BSLASH, KC_LALT, KC_LGUI, KC_LEFT, KC_RIGHT, KC_HOME, - KC_SPC,KC_DELT,KC_END, + KC_SPC,KC_DEL, KC_END, // right hand KC_PSCREEN, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, TG(1), KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, @@ -68,7 +68,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { /* Keymap 1: Basic layer with functions * - * + * * * ,--------------------------------------------------. ,--------------------------------------------------. * | Esc | F1 | F2 | F3 | F4 | F5 | F11 | | F12 | F6 | F7 | F8 | F9 | 0 | - | @@ -240,7 +240,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { break; } return true; -} +} // Runs just one time when the keyboard initializes. void matrix_init_user(void) { @@ -249,7 +249,7 @@ void matrix_init_user(void) { // Runs constantly in the background, in a loop. void matrix_scan_user(void) { - + uint8_t layer = biton32(layer_state); ergodox_board_led_off(); ergodox_right_led_1_off(); @@ -265,5 +265,5 @@ void matrix_scan_user(void) { default: // none break; - } + } }; diff --git a/keyboards/ergodox_infinity/keymaps/trulyergonomic/keymap.c b/keyboards/ergodox_infinity/keymaps/trulyergonomic/keymap.c index 882f2b3c0..b288bd557 100644 --- a/keyboards/ergodox_infinity/keymaps/trulyergonomic/keymap.c +++ b/keyboards/ergodox_infinity/keymaps/trulyergonomic/keymap.c @@ -40,7 +40,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [BASE] = LAYOUT_ergodox( // layer 0 : default // left hand KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_LGUI, - KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_DELT, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_DEL, KC_LSFT, KC_A, KC_S, KC_D, KC_F, KC_G, KC_LCTL, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_BSPC, KC_LALT, KC_HOME, KC_PGUP, KC_PGDN, KC_END, diff --git a/keyboards/handwired/dactyl/keymaps/default/keymap.c b/keyboards/handwired/dactyl/keymaps/default/keymap.c index 07d958449..47f5ba96b 100644 --- a/keyboards/handwired/dactyl/keymaps/default/keymap.c +++ b/keyboards/handwired/dactyl/keymaps/default/keymap.c @@ -34,8 +34,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { */ [BASE] = LAYOUT_dactyl( // layer 0 : default // left hand - KC_EQL, KC_1, KC_2, KC_3, KC_4, KC_5, - KC_DELT, KC_Q, KC_W, KC_E, KC_R, KC_T, + KC_EQL, KC_1, KC_2, KC_3, KC_4, KC_5, + KC_DEL, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_BSPC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_LSFT, CTL_T(KC_Z), KC_X, KC_C, KC_V, KC_B, LT(SYMB,KC_GRV), KC_QUOT, LALT(KC_LSFT), KC_LEFT, KC_RGHT, diff --git a/keyboards/handwired/dactyl/keymaps/dvorak/keymap.c b/keyboards/handwired/dactyl/keymaps/dvorak/keymap.c index 7c44f78a6..cc6fc52e5 100644 --- a/keyboards/handwired/dactyl/keymaps/dvorak/keymap.c +++ b/keyboards/handwired/dactyl/keymaps/dvorak/keymap.c @@ -34,8 +34,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { */ [BASE] = LAYOUT_dactyl( // layer 0 : default // left hand - KC_EQL, KC_1, KC_2, KC_3, KC_4, KC_5, - KC_DELT, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, + KC_EQL, KC_1, KC_2, KC_3, KC_4, KC_5, + KC_DEL, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_BSPC, KC_A, KC_O, KC_E, KC_U, KC_I, KC_LSFT, CTL_T(KC_SCLN), KC_Q, KC_J, KC_K, KC_X, LT(SYMB,KC_GRV), KC_EQL, LALT(KC_LSFT), KC_LEFT, KC_RGHT, diff --git a/keyboards/helix/pico/keymaps/biacco/keymap.c b/keyboards/helix/pico/keymaps/biacco/keymap.c index 36ef4394d..a1d041c02 100644 --- a/keyboards/helix/pico/keymaps/biacco/keymap.c +++ b/keyboards/helix/pico/keymaps/biacco/keymap.c @@ -52,7 +52,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, \ KC_LALT, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, \ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, SFT_T(KC_RO) , \ - KC_LCTL, KC_LGUI, KC_APP, KC_PSCR, LT(SYMB, KC_ESC), RCTL_T(KC_SPC), SFT_T(KC_TAB), KC_BSPC, LT(META, KC_ENT), KC_DELT, KC_PSCR, TG(GAME), TG(SYMB), KC_JYEN \ + KC_LCTL, KC_LGUI, KC_APP, KC_PSCR, LT(SYMB, KC_ESC), RCTL_T(KC_SPC), SFT_T(KC_TAB), KC_BSPC, LT(META, KC_ENT), KC_DEL, KC_PSCR, TG(GAME), TG(SYMB), KC_JYEN \ ), /* META @@ -109,7 +109,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, \ KC_LALT, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, \ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, SFT_T(KC_RO), \ - KC_LCTRL, KC_LGUI, KC_APP, KC_PSCR, KC_ESC, KC_SPC, KC_TAB, KC_BSPC, KC_ENT, KC_DELT, KC_PSCR, _______, _______, KC_JYEN \ + KC_LCTRL, KC_LGUI, KC_APP, KC_PSCR, KC_ESC, KC_SPC, KC_TAB, KC_BSPC, KC_ENT, KC_DEL, KC_PSCR, _______, _______, KC_JYEN \ ) }; diff --git a/keyboards/hotdox/keymaps/default/keymap.c b/keyboards/hotdox/keymaps/default/keymap.c index 0ec7b352c..daba6c300 100644 --- a/keyboards/hotdox/keymaps/default/keymap.c +++ b/keyboards/hotdox/keymaps/default/keymap.c @@ -37,7 +37,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [BASE] = LAYOUT_ergodox( // layer 0 : default // left hand KC_EQL, KC_1, KC_2, KC_3, KC_4, KC_5, KC_LEFT, - KC_DELT, KC_Q, KC_W, KC_E, KC_R, KC_T, TG(SYMB), + KC_DEL, KC_Q, KC_W, KC_E, KC_R, KC_T, TG(SYMB), KC_BSPC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_LSFT, CTL_T(KC_Z), KC_X, KC_C, KC_V, KC_B, ALL_T(KC_NO), LT(SYMB,KC_GRV),KC_QUOT, LALT(KC_LSFT), KC_LEFT,KC_RGHT, diff --git a/keyboards/hotdox/keymaps/eozaki/keymap.c b/keyboards/hotdox/keymaps/eozaki/keymap.c index dc80e7a34..3516f2030 100644 --- a/keyboards/hotdox/keymaps/eozaki/keymap.c +++ b/keyboards/hotdox/keymaps/eozaki/keymap.c @@ -38,7 +38,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [BASE] = LAYOUT_ergodox( // layer 0 : default // left hand KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, LSFT(KC_GRV), - KC_DELT, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_GRV, + KC_DEL, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_GRV, KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_LALT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_LBRC, LT(SYMB, KC_F2), KC_F4, KC_F5, KC_F6, KC_F11, diff --git a/keyboards/kbdfans/kbd67/rev1/keymaps/koba/keymap.c b/keyboards/kbdfans/kbd67/rev1/keymaps/koba/keymap.c index b00805e9e..3ce6afce2 100644 --- a/keyboards/kbdfans/kbd67/rev1/keymaps/koba/keymap.c +++ b/keyboards/kbdfans/kbd67/rev1/keymaps/koba/keymap.c @@ -33,7 +33,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * `------------------------------------------------' `------------' */ [0] = LAYOUT_all( - KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, JP_CIRC, KC_JYEN, KC_BSPC, KC_DELT, \ + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, JP_CIRC, KC_JYEN, KC_BSPC, KC_DEL, \ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, JP_AT, JP_LBRC, JP_RBRC, KC_PGUP, \ KC_ZKHK, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, JP_COLN, KC_ENT, KC_PGDN, \ KC_LSFT, XXXXXXX, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PSCR, \ diff --git a/keyboards/kbdfans/kbd67/rev2/keymaps/koba/keymap.c b/keyboards/kbdfans/kbd67/rev2/keymaps/koba/keymap.c index b00805e9e..3ce6afce2 100644 --- a/keyboards/kbdfans/kbd67/rev2/keymaps/koba/keymap.c +++ b/keyboards/kbdfans/kbd67/rev2/keymaps/koba/keymap.c @@ -33,7 +33,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * `------------------------------------------------' `------------' */ [0] = LAYOUT_all( - KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, JP_CIRC, KC_JYEN, KC_BSPC, KC_DELT, \ + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, JP_CIRC, KC_JYEN, KC_BSPC, KC_DEL, \ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, JP_AT, JP_LBRC, JP_RBRC, KC_PGUP, \ KC_ZKHK, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, JP_COLN, KC_ENT, KC_PGDN, \ KC_LSFT, XXXXXXX, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PSCR, \ diff --git a/keyboards/keebio/levinson/keymaps/atreus/keymap.c b/keyboards/keebio/levinson/keymaps/atreus/keymap.c index 61ad04ef7..1eb12669a 100644 --- a/keyboards/keebio/levinson/keymaps/atreus/keymap.c +++ b/keyboards/keebio/levinson/keymaps/atreus/keymap.c @@ -35,7 +35,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { */ [_LW] = LAYOUT_ortho_4x12( /* [> LOWER <] */ KC_INS, KC_HOME, KC_UP, KC_END, KC_PGUP, KC_NO, KC_NO, KC_UP, KC_F7, KC_F8, KC_F9, KC_F10 , - KC_DELT, KC_LEFT, KC_DOWN, KC_RGHT, KC_DOWN, KC_NO, KC_NO, KC_DOWN, KC_F4, KC_F5, KC_F6, KC_F11 , + KC_DEL, KC_LEFT, KC_DOWN, KC_RGHT, KC_DOWN, KC_NO, KC_NO, KC_DOWN, KC_F4, KC_F5, KC_F6, KC_F11 , KC_NO, KC_VOLU, KC_NO, KC_NO, RESET, KC_NO, KC_NO, KC_NO, KC_F1, KC_F2, KC_F3, KC_F12 , KC_NO, KC_VOLD, KC_LGUI, KC_LSFT, KC_BSPC, KC_LCTL, KC_LALT, KC_SPC, TO(_QW), KC_PSCR, KC_SLCK, KC_PAUS ) }; diff --git a/keyboards/planck/keymaps/gabriel/keymap.c b/keyboards/planck/keymaps/gabriel/keymap.c index 96e4a17ee..e0f74804f 100644 --- a/keyboards/planck/keymaps/gabriel/keymap.c +++ b/keyboards/planck/keymaps/gabriel/keymap.c @@ -81,7 +81,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * `-----------------------------------------------------------------------' */ [_FN] = { /* FUNCTION */ - {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_DELT}, + {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_DEL}, {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS}, {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS}, {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_HOME, KC_PGDN, KC_PGUP, KC_END} diff --git a/keyboards/planck/keymaps/jeremy-dev/keymap.c b/keyboards/planck/keymaps/jeremy-dev/keymap.c index 89b7e6b84..de679a3fc 100644 --- a/keyboards/planck/keymaps/jeremy-dev/keymap.c +++ b/keyboards/planck/keymaps/jeremy-dev/keymap.c @@ -36,7 +36,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { {KC_Q, KC_W, KC_E, KC_R, KC_T, KC_LBRC, KC_RBRC, KC_Y, KC_U, KC_I, KC_O, KC_P}, {KC_A, KC_S, KC_D, KC_F, KC_G, KC_LPRN, KC_RPRN, KC_H, KC_J, KC_K, KC_L, KC_SCLN}, {SFT_T(KC_Z), KC_X, KC_C, KC_V, KC_B, KC_LCBR, KC_RCBR, KC_N, KC_M, KC_COMM, KC_DOT, SFT_T(KC_SLSH)}, - {CTL_T(KC_TAB), OSL(FKEY), OSL(NUMS), OSL(SYMB), KC_SPC, ALT_T(KC_BSPC), GUI_T(KC_DELT), KC_ENT, OSL(SYMB), OSL(CURS), TG(CURS), CTL_T(KC_ESC)} + {CTL_T(KC_TAB), OSL(FKEY), OSL(NUMS), OSL(SYMB), KC_SPC, ALT_T(KC_BSPC), GUI_T(KC_DEL), KC_ENT, OSL(SYMB), OSL(CURS), TG(CURS), CTL_T(KC_ESC)} }, [NUMS] = { {KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_TRNS, KC_TRNS, KC_COMM, KC_7, KC_8, KC_9, KC_SLSH}, @@ -45,7 +45,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { {KC_NO, KC_NO, KC_TRNS, TG(NUMS), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_0, KC_DOT, KC_EQL, KC_PLUS} }, [CURS] = { - {KC_MPLY, KC_BSPC, KC_UP, KC_DELT, KC_PGUP, KC_TRNS, KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO}, + {KC_MPLY, KC_BSPC, KC_UP, KC_DEL, KC_PGUP, KC_TRNS, KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO}, {KC_VOLU, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN, KC_TRNS, KC_TRNS, KC_NO, KC_LCTL, KC_LALT, KC_LGUI, KC_LSFT}, {KC_VOLD, KC_NO, MY_ABVE, MY_TERM, KC_NO, KC_TRNS, KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO, KC_LSFT}, {KC_MUTE, KC_NO, MY_BELW, KC_NO, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_NO, KC_TRNS, KC_TRNS, KC_NO} diff --git a/keyboards/planck/keymaps/pete/keymap.c b/keyboards/planck/keymaps/pete/keymap.c index 2a9b66c42..6f8f8579c 100644 --- a/keyboards/planck/keymaps/pete/keymap.c +++ b/keyboards/planck/keymaps/pete/keymap.c @@ -92,13 +92,13 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { {_______, _______, _______, _______, _______, RESET, RESET, _______, _______, _______, _______, _______} }, [_MAC] = { /* Mac */ - {CYCLWIN,MACSLEEP, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_F1, KC_F2, KC_F3, KC_F4, KC_DELT}, + {CYCLWIN,MACSLEEP, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_F1, KC_F2, KC_F3, KC_F4, KC_DEL }, {_______, MICMUTE, KC_MUTE, KC_VOLD, KC_VOLU, MACPRNT,MACPRNT2, KC_F5, KC_F6, KC_F7, KC_F8, XXXXXXX}, {_______, BL_STEP, KC_MPRV, KC_MPLY, KC_MNXT, XXXXXXX, XXXXXXX, KC_F9, KC_F10, KC_F11, KC_F12, XXXXXXX}, {_______, _______, _______, _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_HOME, KC_PGDOWN,KC_PGUP,KC_END } }, [_WIN] = { /* Windows */ - {CYCLWIN,WINSLEEP, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_F1, KC_F2, KC_F3, KC_F4, KC_DELT}, + {CYCLWIN,WINSLEEP, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_F1, KC_F2, KC_F3, KC_F4, KC_DEL }, {_______, MICMUTE, KC_MUTE, KC_VOLD, KC_VOLU, WINPRNT,WINPRNT2, KC_F5, KC_F6, KC_F7, KC_F8, XXXXXXX}, {_______, BL_STEP, KC_MPRV, KC_MPLY, KC_MNXT, XXXXXXX, XXXXXXX, KC_F9, KC_F10, KC_F11, KC_F12, XXXXXXX}, {_______, _______, _______, _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_HOME, KC_PGDOWN,KC_PGUP,KC_END } diff --git a/keyboards/planck/keymaps/tong92/keymap.c b/keyboards/planck/keymaps/tong92/keymap.c index d85bd6e88..bdde28569 100644 --- a/keyboards/planck/keymaps/tong92/keymap.c +++ b/keyboards/planck/keymaps/tong92/keymap.c @@ -110,10 +110,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * `-----------------------------------------------------------------------' */ [_WINDOW_SHORTCUT] ={ -{KC_ESC ,LALT(KC_F4) ,LGUI(KC_UP) ,XXXXXXX ,XXXXXXX ,S(KC_CAPS) ,XXXXXXX,KC_PGUP,KC_UP,KC_PGDN,KC_PSCR,KC_DELT}, +{KC_ESC ,LALT(KC_F4) ,LGUI(KC_UP) ,XXXXXXX ,XXXXXXX ,S(KC_CAPS) ,XXXXXXX,KC_PGUP,KC_UP,KC_PGDN,KC_PSCR,KC_DEL}, {_______,LGUI(KC_LEFT) ,LGUI(KC_DOWN) ,LGUI(KC_RIGHT) ,XXXXXXX ,LALT(KC_CAPS),KC_CAPS,KC_LEFT,KC_DOWN,KC_RIGHT,XXXXXXX,XXXXXXX}, {_______,LGUI(LSFT(KC_LEFT)),LGUI(LSFT(KC_RIGHT)),XXXXXXX ,XXXXXXX ,LCTL(KC_CAPS),KC_SLCK,KC_HOME,XXXXXXX,KC_END,XXXXXXX,XXXXXXX}, -{KC_TRNS,LGUI(LCTL(KC_LEFT)),LGUI(LCTL(KC_RIGHT)),LGUI(LCTL(KC_F4)),LCTL(LALT(KC_DELT)),LGUI(KC_SPC),LGUI(KC_SPC),XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,BACKLIT} +{KC_TRNS,LGUI(LCTL(KC_LEFT)),LGUI(LCTL(KC_RIGHT)),LGUI(LCTL(KC_F4)),LCTL(LALT(KC_DEL)),LGUI(KC_SPC),LGUI(KC_SPC),XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,BACKLIT} }, /* Mac Shortcut * ,-----------------------------------------------------------------------. @@ -127,7 +127,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * `-----------------------------------------------------------------------' */ [_MAC_SHORTCUT] ={ -{KC_ESC ,LGUI(KC_UP) ,LGUI(KC_DOWN) ,XXXXXXX,XXXXXXX ,XXXXXXX,XXXXXXX,KC_PGUP,KC_UP,KC_PGDN,KC_PSCR,KC_DELT}, +{KC_ESC ,LGUI(KC_UP) ,LGUI(KC_DOWN) ,XXXXXXX,XXXXXXX ,XXXXXXX,XXXXXXX,KC_PGUP,KC_UP,KC_PGDN,KC_PSCR,KC_DEL}, {_______,LALT(LSFT(KC_LEFT)),LALT(LSFT(KC_RIGHT)),XXXXXXX,LGUI(LCTL(KC_F)),XXXXXXX,KC_CAPS,KC_LEFT,KC_DOWN,KC_RIGHT,XXXXXXX,XXXXXXX}, {_______,LGUI(LSFT(KC_LEFT)),LGUI(LSFT(KC_RIGHT)),XXXXXXX,XXXXXXX ,XXXXXXX,XXXXXXX,KC_HOME,XXXXXXX,KC_END,XXXXXXX,XXXXXXX}, {KC_TRNS,_______ ,_______ ,MOUSE ,MOUSE ,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,BACKLIT} diff --git a/keyboards/thevankeyboards/minivan/keymaps/tong92/keymap.c b/keyboards/thevankeyboards/minivan/keymaps/tong92/keymap.c index 0c9795449..6f7167cbb 100644 --- a/keyboards/thevankeyboards/minivan/keymaps/tong92/keymap.c +++ b/keyboards/thevankeyboards/minivan/keymaps/tong92/keymap.c @@ -112,10 +112,10 @@ XXXXXXX,_______,_______, _______,_______, KC_END, KC_LEFT, * `--------------------------------------------------------------------------' */ [_WINDOW_SHORTCUT] = LAYOUT_arrow( -KC_ESC ,LALT(KC_F4) ,LGUI(KC_UP) ,XXXXXXX ,XXXXXXX,S(KC_CAPS) ,XXXXXXX ,KC_PGUP,KC_UP ,KC_PGDN ,KC_PSCR,KC_DELT, +KC_ESC ,LALT(KC_F4) ,LGUI(KC_UP) ,XXXXXXX ,XXXXXXX,S(KC_CAPS) ,XXXXXXX ,KC_PGUP,KC_UP ,KC_PGDN ,KC_PSCR,KC_DEL, _______,LGUI(KC_LEFT) ,LGUI(KC_DOWN) ,LGUI(KC_RIGHT),XXXXXXX,LALT(KC_CAPS) ,KC_CAPS ,KC_LEFT,KC_DOWN,KC_RIGHT,XXXXXXX,XXXXXXX, _______,LGUI(LSFT(KC_LEFT)),LGUI(LSFT(KC_RIGHT)),XXXXXXX ,XXXXXXX,LCTL(KC_CAPS) ,KC_SLCK ,KC_HOME,XXXXXXX,KC_END ,XXXXXXX,KC_RCTL, -_______,LGUI(LCTL(KC_LEFT)),LGUI(LCTL(KC_RIGHT)), LCTL(LALT(KC_DELT)),LGUI(LCTL(KC_F4)), MOUSE ,XXXXXXX ,XXXXXXX,BACKLIT +_______,LGUI(LCTL(KC_LEFT)),LGUI(LCTL(KC_RIGHT)), LCTL(LALT(KC_DEL)) ,LGUI(LCTL(KC_F4)), MOUSE ,XXXXXXX ,XXXXXXX,BACKLIT ), /* Mac Shortcut * ,--------------------------------------------------------------------------. @@ -129,7 +129,7 @@ _______,LGUI(LCTL(KC_LEFT)),LGUI(LCTL(KC_RIGHT)), LCTL(LAL * `--------------------------------------------------------------------------' */ [_MAC_SHORTCUT] = LAYOUT_arrow( -KC_ESC ,LGUI(KC_UP) ,LGUI(KC_DOWN) ,XXXXXXX ,XXXXXXX,XXXXXXX ,XXXXXXX ,KC_PGUP,KC_UP ,KC_PGDN ,KC_PSCR,KC_DELT, +KC_ESC ,LGUI(KC_UP) ,LGUI(KC_DOWN) ,XXXXXXX ,XXXXXXX,XXXXXXX ,XXXXXXX ,KC_PGUP,KC_UP ,KC_PGDN ,KC_PSCR,KC_DEL, _______,LALT(LSFT(KC_LEFT)) ,LALT(LSFT(KC_RIGHT)) ,XXXXXXX,LGUI(LCTL(KC_F)),XXXXXXX ,KC_CAPS ,KC_LEFT,KC_DOWN,KC_RIGHT,XXXXXXX,XXXXXXX, _______,LGUI(LSFT(KC_LEFT)),LGUI(LSFT(KC_RIGHT)),XXXXXXX ,XXXXXXX,XXXXXXX ,XXXXXXX ,KC_HOME,XXXXXXX,KC_END ,XXXXXXX,KC_RCTL, _______,_______,_______, _______,_______, MOUSE ,XXXXXXX ,XXXXXXX,BACKLIT diff --git a/layouts/community/ergodox/absenth/keymap.c b/layouts/community/ergodox/absenth/keymap.c index e4f1ec901..d84b68f0e 100644 --- a/layouts/community/ergodox/absenth/keymap.c +++ b/layouts/community/ergodox/absenth/keymap.c @@ -34,7 +34,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [BASE] = LAYOUT_ergodox( // layer 0 : default // left hand KC_EQL, KC_1, KC_2, KC_3, KC_4, KC_5, KC_LEFT, - KC_DELT, KC_Q, KC_W, KC_E, KC_R, KC_T, TG(SYMB), + KC_DEL, KC_Q, KC_W, KC_E, KC_R, KC_T, TG(SYMB), KC_BSPC, LT(MDIA, KC_A), KC_S, KC_D, KC_F, KC_G, KC_LSPO, CTL_T(KC_Z), KC_X, KC_C, KC_V, KC_B, ALL_T(KC_NO), LT(SYMB,KC_GRV),KC_QUOT, LALT(KC_LSFT), KC_LEFT,KC_RGHT, diff --git a/layouts/community/ergodox/adnw_k_o_y/keymap.c b/layouts/community/ergodox/adnw_k_o_y/keymap.c index 8a0e47026..59ae2681f 100644 --- a/layouts/community/ergodox/adnw_k_o_y/keymap.c +++ b/layouts/community/ergodox/adnw_k_o_y/keymap.c @@ -34,7 +34,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [BASE] = LAYOUT_ergodox( // layer 0 : default // left hand KC_EQL, KC_1, KC_2, KC_3, KC_4, KC_5, KC_LEFT, - KC_DELT, DE_K, DE_DOT, DE_O, DE_COMM,DE_Y, TG(SYMB), + KC_DEL, DE_K, DE_DOT, DE_O, DE_COMM,DE_Y, TG(SYMB), KC_BSPC, DE_H, DE_A, DE_E, DE_I, DE_U, KC_LSFT, CTL_T(DE_X), DE_Q, DE_AE, DE_UE, DE_OE, ALL_T(KC_NO), LT(SYMB,KC_GRV),KC_QUOT, LALT(KC_LSFT), KC_LEFT,KC_RGHT, diff --git a/layouts/community/ergodox/albert/keymap.c b/layouts/community/ergodox/albert/keymap.c index c1b47312f..8b73424d4 100644 --- a/layouts/community/ergodox/albert/keymap.c +++ b/layouts/community/ergodox/albert/keymap.c @@ -92,7 +92,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { CTL_T(KC_SPC), ALT_T(KC_BSPC), LT(KEYW, KC_END), // right hand LSFT(KC_RGHT), KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, - MO(SYMB), KC_Y, KC_U, KC_I, KC_O, KC_P, KC_DELT, + MO(SYMB), KC_Y, KC_U, KC_I, KC_O, KC_P, KC_DEL, KC_H, KC_J, KC_K, KC_L, KC_SCLN, LT(NUMB, KC_ENT), MO(EMAC), LT(MOUS, KC_N), LT(CRSR, KC_M), KC_COMM, KC_DOT, KC_SLSH, KC_RSPC, KC_UP, KC_DOWN, KC_MINS, ALT_T(KC_LBRC), CTL_T(KC_RBRC), diff --git a/layouts/community/ergodox/alexjj/keymap.c b/layouts/community/ergodox/alexjj/keymap.c index 5f4f85cd4..64e7c9443 100644 --- a/layouts/community/ergodox/alexjj/keymap.c +++ b/layouts/community/ergodox/alexjj/keymap.c @@ -49,7 +49,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_DOWN,KC_UP, ALL_T(KC_NO),KC_GRV, KC_RCTRL, KC_F2, TT(MDIA), KC_INS, - KC_DELT,TT(SYMB), KC_SPC + KC_DEL,TT(SYMB), KC_SPC ), /* Keymap 1: Symbol Layer * diff --git a/layouts/community/ergodox/bepo_csa/keymap.c b/layouts/community/ergodox/bepo_csa/keymap.c index 8dfb95a33..c6d4f628f 100644 --- a/layouts/community/ergodox/bepo_csa/keymap.c +++ b/layouts/community/ergodox/bepo_csa/keymap.c @@ -90,7 +90,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { // Otherwise, it needs KC_* [LR_BASE] = LAYOUT_ergodox( // layer 0 : default // left hand - BP_DLR, KC_1, KC_2, KC_3, KC_4, KC_5, KC_DELT, + BP_DLR, KC_1, KC_2, KC_3, KC_4, KC_5, KC_DEL, KC_TAB, BP_B, BP_ECUT, BP_P, BP_O, BP_EGRV, KC_BSPC, BP_EQL, BP_A, BP_U, BP_I, BP_E, BP_COMM, KC_LSFT, BP_AGRV, BP_Y, BP_X, BP_DOT, BP_K, KC_ENT, @@ -101,7 +101,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_SPC, KC_HOME, KC_PGDN, // right hand - KC_DELT, KC_6, KC_7, KC_8, KC_9, KC_0, BP_W, + KC_DEL, KC_6, KC_7, KC_8, KC_9, KC_0, BP_W, KC_BSPC, BP_DCRC, BP_V, BP_D, BP_L, BP_J, BP_Z, BP_C, BP_T, BP_S, BP_R, BP_N, BP_M, KC_ENT, BP_APOS, BP_Q, BP_G, BP_H, BP_F, KC_RSFT, @@ -342,7 +342,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { TG(LR_CSA), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_INS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLU, RESET, KC_TRNS, KC_TRNS, KC_CALC, KC_MAIL, KC_WHOM, - KC_TRNS, KC_APP, S(KC_DELT), LCTL(KC_INS),S(KC_INS), KC_MUTE, KC_VOLD, + KC_TRNS, KC_APP, S(KC_DEL), LCTL(KC_INS),S(KC_INS), KC_MUTE, KC_VOLD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, diff --git a/layouts/community/ergodox/bryan/keymap.c b/layouts/community/ergodox/bryan/keymap.c index 5e74c9126..acae77d5f 100644 --- a/layouts/community/ergodox/bryan/keymap.c +++ b/layouts/community/ergodox/bryan/keymap.c @@ -29,7 +29,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * |Grv/L1| '" |AltShf| Left | Right| | Up | Down | [ | ] | ~L1 | * `----------------------------------' `----------------------------------' * ,-------------. ,-------------. - * |Ctrl/Esc|PgUp| | App | LGui | + * |Ctrl/Esc|PgUp| | App | LGui | * ,------|------|------| |------+--------+------. * | | | PgDn | | Home | | | * | Space|Backsp|------| |------| Tab |Enter | @@ -41,7 +41,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [BASE] = LAYOUT_ergodox( // layer 0 : default // left hand KC_EQL, KC_1, KC_2, KC_3, KC_4, KC_5, M(2), - KC_DELT, KC_Q, KC_W, KC_E, KC_R, KC_T, TG(SYMB), + KC_DEL, KC_Q, KC_W, KC_E, KC_R, KC_T, TG(SYMB), GUI_T(KC_BSPC), KC_A, KC_S, KC_D, KC_F, KC_G, KC_LSFT, CTL_T(KC_Z), KC_X, KC_C, KC_V, KC_B, ALL_T(KC_NO), LT(SYMB,KC_GRV),KC_QUOT, LALT(KC_LSFT), KC_LEFT,KC_RGHT, @@ -54,7 +54,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_H, KC_J, KC_K, KC_L, LT(MDIA, KC_SCLN),GUI_T(KC_QUOT), MEH_T(KC_NO),KC_N, KC_M, KC_COMM,KC_DOT, CTL_T(KC_SLSH), KC_RSFT, KC_UP, KC_DOWN,KC_LBRC,KC_RBRC, TT(SYMB), - + ALT_T(KC_APP), KC_LGUI, KC_HOME, KC_LALT,KC_TAB, KC_ENT diff --git a/layouts/community/ergodox/coderkun_neo2/keymap.c b/layouts/community/ergodox/coderkun_neo2/keymap.c index 0c70dbb5d..d1fcea9c9 100644 --- a/layouts/community/ergodox/coderkun_neo2/keymap.c +++ b/layouts/community/ergodox/coderkun_neo2/keymap.c @@ -196,7 +196,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [NHL] = LAYOUT_ergodox( // left hand KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, - KC_NO, KC_PGUP,KC_BSPC,KC_UP, KC_DELT,KC_PGDN,KC_NO, + KC_NO, KC_PGUP,KC_BSPC,KC_UP, KC_DEL, KC_PGDN,KC_NO, KC_NO, KC_HOME,KC_LEFT,KC_DOWN,KC_RGHT,KC_END, KC_NO, KC_ESC, KC_TAB, KC_INS, KC_ENT, KC_UNDO,KC_TRNS, KC_NO, KC_NO, KC_TRNS,KC_NO, KC_TRNS, diff --git a/layouts/community/ergodox/colemak/keymap.c b/layouts/community/ergodox/colemak/keymap.c index 7330eda14..83c77e4a3 100644 --- a/layouts/community/ergodox/colemak/keymap.c +++ b/layouts/community/ergodox/colemak/keymap.c @@ -33,7 +33,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [BASE] = LAYOUT_ergodox( // layer 0 : default // left hand KC_EQL, KC_1, KC_2, KC_3, KC_4, KC_5, KC_LEFT, - KC_DELT, KC_Q, KC_W, KC_F, KC_P, KC_G, TG(SYMB), + KC_DEL, KC_Q, KC_W, KC_F, KC_P, KC_G, TG(SYMB), KC_BSPC, KC_A, KC_R, KC_S, KC_T, KC_D, KC_LSFT, CTL_T(KC_Z), KC_X, KC_C, KC_V, KC_B, ALL_T(KC_NO), LT(SYMB,KC_GRV),KC_QUOT, LALT(KC_LSFT), KC_LEFT,KC_RGHT, diff --git a/layouts/community/ergodox/colemak_osx_pc_no/keymap.c b/layouts/community/ergodox/colemak_osx_pc_no/keymap.c index 119677037..189ff5c43 100644 --- a/layouts/community/ergodox/colemak_osx_pc_no/keymap.c +++ b/layouts/community/ergodox/colemak_osx_pc_no/keymap.c @@ -49,7 +49,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { NO_EQL, KC_K, KC_M, KC_RIGHT, KC_DOWN, KC_UP, NO_UNDS, KC_LEFT, KC_ESC, KC_FN7, KC_HASH, MO(2), KC_INSERT, NO_SLSH, - KC_DELT, + KC_DEL, KC_BSPC,KC_ENT,KC_SPC ), /* Keymap 1: Basic layer MACS (Same as pc, except for cmd/ctrl, which are swapped) diff --git a/layouts/community/ergodox/dave/keymap.c b/layouts/community/ergodox/dave/keymap.c index 428749647..f47f88142 100644 --- a/layouts/community/ergodox/dave/keymap.c +++ b/layouts/community/ergodox/dave/keymap.c @@ -119,7 +119,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [NAVI] = LAYOUT_ergodox( KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_TRNS, KC_HOME, KC_UP, KC_END, KC_INS, KC_PGUP, KC_TRNS, - KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_DELT, KC_PGDN, + KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_DEL, KC_PGDN, KC_TRNS, KC_BTN1, KC_MS_U, KC_BTN2, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_TRNS, KC_TRNS, KC_TRNS, @@ -128,7 +128,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { // right hand KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_INS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_WBAK, KC_DELT, KC_WFWD, KC_TRNS, KC_TRNS, + KC_TRNS, KC_WBAK, KC_DEL, KC_WFWD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPRV, KC_MPLY, KC_MNXT, KC_TRNS, KC_TRNS, KC_VOLD, KC_MUTE, KC_VOLU, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, diff --git a/layouts/community/ergodox/dragon788/keymap.c b/layouts/community/ergodox/dragon788/keymap.c index c0c213477..7377128ec 100644 --- a/layouts/community/ergodox/dragon788/keymap.c +++ b/layouts/community/ergodox/dragon788/keymap.c @@ -40,7 +40,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { TT(SYMB), KC_GRV, KC_QUOT,KC_LEFT, LT(MDIA, KC_RGHT), KC_APP, KC_HOME, KC_END, - KC_BSPC,KC_DELT,KC_LALT, + KC_BSPC,KC_DEL, KC_LALT, // right hand TG(3), KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, TG(2), KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS, diff --git a/layouts/community/ergodox/dvorak/keymap.c b/layouts/community/ergodox/dvorak/keymap.c index b161358c1..4d8483f54 100644 --- a/layouts/community/ergodox/dvorak/keymap.c +++ b/layouts/community/ergodox/dvorak/keymap.c @@ -33,7 +33,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [BASE] = LAYOUT_ergodox( // layer 0 : default // left hand KC_EQL, KC_1, KC_2, KC_3, KC_4, KC_5, KC_LEFT, - KC_DELT, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, TG(1), + KC_DEL, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, TG(1), KC_BSPC, KC_A, KC_O, KC_E, KC_U, KC_I, KC_LSFT, CTL_T(KC_SCLN), KC_Q, KC_J, KC_K, KC_X, ALL_T(KC_NO), LT(SYMB,KC_GRV),KC_QUOT, LALT(KC_LSFT), KC_LEFT,KC_RGHT, diff --git a/layouts/community/ergodox/dvorak_intl_squisher/keymap.c b/layouts/community/ergodox/dvorak_intl_squisher/keymap.c index 83cee0d06..98e288516 100644 --- a/layouts/community/ergodox/dvorak_intl_squisher/keymap.c +++ b/layouts/community/ergodox/dvorak_intl_squisher/keymap.c @@ -33,7 +33,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [BASE] = LAYOUT_ergodox( // layer 0 : default // left hand KC_EQL, KC_1, KC_2, KC_3, KC_4, KC_5, KC_WBAK, - KC_ESC, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_DELT, + KC_ESC, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_DEL, KC_BSPC, KC_A, KC_O, KC_E, KC_U, KC_I, KC_LSFT, CTL_T(KC_SCLN), KC_Q, KC_J, KC_K, KC_X, ALL_T(KC_NO), LT(SYMB,KC_GRV),KC_LALT, KC_LGUI, KC_LEFT,KC_RGHT, @@ -49,7 +49,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { TG(2), KC_PSCREEN, KC_PGUP, KC_PGDN,RALT(KC_RSFT), KC_ENT - ), + ), /* Keymap 1: Symbol & Media Layer * * ,--------------------------------------------------. ,--------------------------------------------------. diff --git a/layouts/community/ergodox/dvorak_programmer_swe/keymap.c b/layouts/community/ergodox/dvorak_programmer_swe/keymap.c index 9b8885b70..bb27f18e8 100644 --- a/layouts/community/ergodox/dvorak_programmer_swe/keymap.c +++ b/layouts/community/ergodox/dvorak_programmer_swe/keymap.c @@ -60,7 +60,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [BASE] = LAYOUT_ergodox( // layer 0 : default // left hand MO(DEVL), KC_1, KC_2, KC_3, KC_4, KC_5, KC_LEFT, - KC_DELT, SE_MINS, KC_COMM, KC_DOT, KC_P, KC_Y, TG(SYMB), + KC_DEL, SE_MINS, KC_COMM, KC_DOT, KC_P, KC_Y, TG(SYMB), KC_LGUI, KC_A, KC_O, KC_E, KC_U, KC_I, KC_LSFT, CTL_T(KC_SCLN), KC_Q, KC_J, KC_K, KC_X, TG(MDIA), CTL_T(KC_NO), MO(SYMB), KC_LALT, KC_LEFT,KC_RGHT, diff --git a/layouts/community/ergodox/dvorak_svorak_a5/keymap.c b/layouts/community/ergodox/dvorak_svorak_a5/keymap.c index f558c6c4b..4ca20bd48 100644 --- a/layouts/community/ergodox/dvorak_svorak_a5/keymap.c +++ b/layouts/community/ergodox/dvorak_svorak_a5/keymap.c @@ -170,7 +170,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_TRNS, KC_6, KC_7, KC_8, KC_9, KC_0, SE_PLUS, KC_TRNS, KC_Y, KC_U, KC_I, KC_O, KC_P, SE_AA, KC_H, KC_J, KC_K, KC_L, SE_OSLH, SE_AE, - KC_DELT, KC_N, KC_M, KC_COMM, KC_DOT, SE_MINS, KC_RSFT, + KC_DEL, KC_N, KC_M, KC_COMM, KC_DOT, SE_MINS, KC_RSFT, KC_ALGR, KC_DOWN, KC_UP, KC_LEFT, KC_RGHT, KC_HOME, KC_END, KC_PGUP, diff --git a/layouts/community/ergodox/emacs_osx_dk/keymap.c b/layouts/community/ergodox/emacs_osx_dk/keymap.c index 8f4c010af..c34d9f65b 100644 --- a/layouts/community/ergodox/emacs_osx_dk/keymap.c +++ b/layouts/community/ergodox/emacs_osx_dk/keymap.c @@ -37,7 +37,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { CTL_T(KC_BSLS), KC_A, KC_S, KC_D, KC_F, KC_G, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_RALT, MO(SYMB), KC_LCTRL, KC_LEFT,KC_RGHT,KC_LALT, - KC_DELT,KC_INS, + KC_DEL, KC_INS, KC_HOME, KC_SPC,KC_BSPC,KC_END, // right hand diff --git a/layouts/community/ergodox/german-kinergo/keymap.c b/layouts/community/ergodox/german-kinergo/keymap.c index 7e1e5bf82..20651df0f 100644 --- a/layouts/community/ergodox/german-kinergo/keymap.c +++ b/layouts/community/ergodox/german-kinergo/keymap.c @@ -46,7 +46,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_LGUI, DE_CIRC, DE_LESS, KC_LEFT, KC_RIGHT, KC_LCTRL, KC_LALT, KC_HOME, - KC_BSPC,KC_DELT,KC_END, + KC_BSPC,KC_DEL,KC_END, // right hand KC_PSCREEN, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, MO(1), DE_Z, KC_U, KC_I, KC_O, KC_P, DE_UE, @@ -60,7 +60,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { // [BASE] = LAYOUT_ergodox( // layer 0 : default // // left hand // KC_CIRC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_MPLY, -// KC_DELT, KC_Q, KC_W, KC_E, KC_R, KC_T, TG(1), +// KC_DEL, KC_Q, KC_W, KC_E, KC_R, KC_T, TG(1), // KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, // KC_LSFT, DE_Y, KC_X, KC_C, KC_V, KC_B, ALL_T(KC_NO), // LT(SYMB,DE_LESS),CTL_T(DE_HASH), DE_ACUT, DE_MINS, DE_PLUS, diff --git a/layouts/community/ergodox/german-lukas/keymap.c b/layouts/community/ergodox/german-lukas/keymap.c index e0cdf25c6..373a1e044 100644 --- a/layouts/community/ergodox/german-lukas/keymap.c +++ b/layouts/community/ergodox/german-lukas/keymap.c @@ -43,7 +43,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_LGUI, DE_CIRC, DE_LESS, KC_LEFT, KC_RIGHT, KC_LCTRL, KC_LALT, KC_HOME, - KC_SPC ,KC_DELT,KC_END, + KC_SPC ,KC_DEL,KC_END, // right hand KC_PSCREEN, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, TG(MDIA), DE_Z, KC_U, KC_I, KC_O, KC_P, LT(SHRT,DE_UE), diff --git a/layouts/community/ergodox/german-manuneo/keymap.c b/layouts/community/ergodox/german-manuneo/keymap.c index 9198bf6e3..d1e48e110 100644 --- a/layouts/community/ergodox/german-manuneo/keymap.c +++ b/layouts/community/ergodox/german-manuneo/keymap.c @@ -121,7 +121,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * | | |LGUI|LALT|LCTL| !RCTL|RALT|LEFT|DOWN|RGHT| * '------------------------' '------------------------' * .-----------. .-----------. - * |INS |TG(2)| !M(UM)|DELT | + * |INS |TG(2)| !M(UM)|DEL | * .-----+-----+-----! !-----+-----+-----. * ! ! | APP | ! PGUP| ! ! * ! ! !-----! !-----! ! ! @@ -142,7 +142,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { /*-*/ DE_S, DE_N, DE_R, DE_T, DE_D, DE_SS, KC_TAB, DE_B, DE_M, DE_COMM, DE_DOT, KC_UP, DE_Y, /*-*/ /*-*/ KC_RCTL, KC_RALT, KC_LEFT, KC_DOWN, KC_RGHT, - M(UM), KC_DELT, + M(UM), KC_DEL, KC_PGUP, KC_PGDN, KC_ENTER, KC_SPACE ), diff --git a/layouts/community/ergodox/german-manuneo/keymap.md b/layouts/community/ergodox/german-manuneo/keymap.md index c59f16a00..3f476ad2a 100644 --- a/layouts/community/ergodox/german-manuneo/keymap.md +++ b/layouts/community/ergodox/german-manuneo/keymap.md @@ -43,7 +43,7 @@ Tested with python 2.7 and python 3.4 | | |LGUI|LALT|LCTL| !RCTL|RALT|LEFT|DOWN|RGHT| '------------------------' '------------------------' .-----------. .-----------. - |INS |TG(2)| !M(UM)|DELT | + |INS |TG(2)| !M(UM)|DEL | .-----+-----+-----! !-----+-----+-----. ! ! | APP | ! PGUP| ! ! ! ! !-----! !-----! ! ! diff --git a/layouts/community/ergodox/german/keymap.c b/layouts/community/ergodox/german/keymap.c index a379b24ca..83ead2eb2 100644 --- a/layouts/community/ergodox/german/keymap.c +++ b/layouts/community/ergodox/german/keymap.c @@ -35,7 +35,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [BASE] = LAYOUT_ergodox( // layer 0 : default // left hand KC_CIRC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_MPLY, - KC_DELT, KC_Q, KC_W, KC_E, KC_R, KC_T, TG(1), + KC_DEL, KC_Q, KC_W, KC_E, KC_R, KC_T, TG(1), KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_LSFT, DE_Y, KC_X, KC_C, KC_V, KC_B, ALL_T(KC_NO), LT(SYMB,DE_LESS),CTL_T(DE_HASH), DE_ACUT, DE_MINS, DE_PLUS, diff --git a/layouts/community/ergodox/jacobono/keymap.c b/layouts/community/ergodox/jacobono/keymap.c index 8d80e349b..62858f8dd 100644 --- a/layouts/community/ergodox/jacobono/keymap.c +++ b/layouts/community/ergodox/jacobono/keymap.c @@ -44,7 +44,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { LGUI(S(KC_SPC)), KC_SPC,KC_ENT,MO(NUMPAD), // right hand - KC_RGHT, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DELT, + KC_RGHT, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL, KC_TRNS, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_TAB, KC_H, KC_N, KC_E, KC_I, KC_O, KC_DEL, LGUI(KC_TAB), KC_K, KC_M, KC_COMM, KC_DOT, CTL_T(KC_SLSH), KC_RSFT, @@ -83,11 +83,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_LCTRL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_LSFT, CTL_T(KC_Z), KC_X, KC_C, KC_V, KC_B, KC_LALT, KC_TRNS, KC_QUOT, LALT(KC_LSFT), KC_LEFT, MO(SYMB), - KC_TAB, KC_DELT, + KC_TAB, KC_DEL, KC_HOME, KC_SPC, KC_LGUI, KC_END, // right hand - KC_RGHT, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DELT, + KC_RGHT, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL, KC_TRNS, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS, KC_H, KC_J, KC_K, KC_L, LT(MDIA, KC_SCLN), KC_RCTRL, KC_RALT, KC_N, KC_M, KC_COMM, KC_DOT, CTL_T(KC_SLSH), KC_RSFT, diff --git a/layouts/community/ergodox/jafo/keymap.c b/layouts/community/ergodox/jafo/keymap.c index 08ea16d4b..4737ab710 100644 --- a/layouts/community/ergodox/jafo/keymap.c +++ b/layouts/community/ergodox/jafo/keymap.c @@ -37,7 +37,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_EQL, KC_Q, KC_W, KC_E, KC_R, KC_T, TG(SYMB), GUI_T(KC_ESC), KC_A, KC_S, KC_D, KC_F, KC_G, KC_LSFT, CTL_T(KC_Z), KC_X, KC_C, KC_V, KC_B, TG(MDIA), - LT(SYMB,KC_GRV),KC_QUOT, KC_DELT, KC_LEFT,KC_RGHT, + LT(SYMB,KC_GRV),KC_QUOT, KC_DEL, KC_LEFT,KC_RGHT, CTL_T(KC_ESC), KC_LALT, KC_HOME, KC_SPC,KC_BSPC,KC_END, diff --git a/layouts/community/ergodox/jgarr/keymap.c b/layouts/community/ergodox/jgarr/keymap.c index 37524dfa0..84b573aca 100644 --- a/layouts/community/ergodox/jgarr/keymap.c +++ b/layouts/community/ergodox/jgarr/keymap.c @@ -32,7 +32,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { // Otherwise, it needs KC_* [BASE] = LAYOUT_ergodox( // layer 0 : default // left hand - KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_DELT, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_DEL, KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, TG(1), CTL_T(KC_ESC), KC_A, KC_O, KC_E, KC_U, KC_I, KC_LSFT, CTL_T(KC_SCLN), KC_Q, KC_J, KC_K, KC_X, ALL_T(KC_NO), diff --git a/layouts/community/ergodox/mpiechotka/keymap.c b/layouts/community/ergodox/mpiechotka/keymap.c index cfd5b195e..a673d0bd8 100644 --- a/layouts/community/ergodox/mpiechotka/keymap.c +++ b/layouts/community/ergodox/mpiechotka/keymap.c @@ -48,7 +48,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [BASE] = LAYOUT_ergodox( // layer 0 : default // left hand KC_EQL, KC_1, KC_2, KC_3, KC_4, KC_5, KC_LEFT, - KC_DELT, KC_Q, KC_W, KC_F, KC_P, KC_G, TG(SYMB), + KC_DEL, KC_Q, KC_W, KC_F, KC_P, KC_G, TG(SYMB), KC_ESC, KC_A, KC_R, KC_S, KC_T, KC_D, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_EQL, LT(SYMB,KC_GRV),KC_QUOT, LALT(KC_LSFT), KC_LEFT, KC_RGHT, @@ -92,7 +92,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [BASE_CM] = LAYOUT_ergodox( // layer 0 : default // left hand KC_EQL, KC_1, KC_2, KC_3, KC_4, KC_5, KC_LEFT, - KC_DELT, CM_Q, CM_W, CM_F, CM_P, CM_G, TG(SYMB), + KC_DEL, CM_Q, CM_W, CM_F, CM_P, CM_G, TG(SYMB), KC_ESC, CM_A, CM_R, CM_S, CM_T, CM_D, KC_LSFT, CM_Z, CM_X, CM_C, CM_V, CM_B, KC_EQL, LT(SYMB,KC_GRV),KC_QUOT, LALT(KC_LSFT), KC_LEFT, KC_RGHT, diff --git a/layouts/community/ergodox/msc/keymap.c b/layouts/community/ergodox/msc/keymap.c index c64c92c9c..62c2ec7b5 100644 --- a/layouts/community/ergodox/msc/keymap.c +++ b/layouts/community/ergodox/msc/keymap.c @@ -33,7 +33,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [BASE] = LAYOUT_ergodox( // layer 0 : default // left hand KC_EQL, KC_1, KC_2, KC_3, KC_4, KC_5, KC_LEFT, - KC_DELT, KC_Q, KC_W, KC_E, KC_R, KC_T, TG(SYMB), + KC_DEL, KC_Q, KC_W, KC_E, KC_R, KC_T, TG(SYMB), KC_BSPC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_LSFT, CTL_T(KC_Z), KC_X, KC_C, KC_V, KC_B, ALL_T(KC_NO), KC_LGUI,KC_LALT, LALT(KC_LSFT), KC_LEFT,KC_RGHT, diff --git a/layouts/community/ergodox/norwegian_programmer_osx_pc/keymap.c b/layouts/community/ergodox/norwegian_programmer_osx_pc/keymap.c index afadf13ff..63fea6e1c 100644 --- a/layouts/community/ergodox/norwegian_programmer_osx_pc/keymap.c +++ b/layouts/community/ergodox/norwegian_programmer_osx_pc/keymap.c @@ -47,7 +47,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { NO_EQL, KC_N, KC_M, KC_RIGHT, KC_DOWN, KC_UP, NO_BSLS, KC_LEFT, NO_UNDS, NO_AMPR, NO_PIPE, OSL(2), KC_INSERT, KC_PERC, - KC_DELT, + KC_DEL, KC_BSPC,KC_ENT,KC_SPC ), /* Keymap 1: Basic layer MACS (Same as pc, except for cmd/ctrl, which are swapped) diff --git a/layouts/community/ergodox/norwegian_programmer_osx_pc_colemak/keymap.c b/layouts/community/ergodox/norwegian_programmer_osx_pc_colemak/keymap.c index 10b7df642..cb61ce59c 100644 --- a/layouts/community/ergodox/norwegian_programmer_osx_pc_colemak/keymap.c +++ b/layouts/community/ergodox/norwegian_programmer_osx_pc_colemak/keymap.c @@ -47,7 +47,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { NO_EQL, KC_K, KC_M, KC_RIGHT, KC_DOWN, KC_UP, NO_BSLS, KC_LEFT, NO_UNDS, NO_AMPR, NO_PIPE, OSL(2), KC_INSERT, KC_PERC, - KC_DELT, + KC_DEL, KC_BSPC,KC_ENT,KC_SPC ), /* Keymap 1: Basic layer MAC (Same as pc, except for cmd/ctrl, which are swapped) diff --git a/layouts/community/ergodox/osx_fr/keymap.c b/layouts/community/ergodox/osx_fr/keymap.c index b1876d6a8..dba9bf32b 100644 --- a/layouts/community/ergodox/osx_fr/keymap.c +++ b/layouts/community/ergodox/osx_fr/keymap.c @@ -35,14 +35,14 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [BASE] = LAYOUT_ergodox( // layer 0 : default // left hand FR_MINS, FR_AMP, FR_EACU, FR_QUOT, FR_APOS, FR_LPRN, KC_LEFT, - KC_DELT, FR_A, FR_Z, KC_E, KC_R, KC_T, TG(1), + KC_DEL, FR_A, FR_Z, KC_E, KC_R, KC_T, TG(1), KC_BSPC, FR_Q, KC_S, KC_D, KC_F, KC_G, KC_LSFT, CTL_T(FR_W), KC_X, KC_C, KC_V, KC_B, ALL_T(KC_NO), LT(SYMB,FR_UGRV), FR_LESS, LALT(KC_LSFT), KC_LEFT, KC_RGHT, ALT_T(KC_APP), KC_LGUI, KC_HOME, KC_SPC, KC_BSPC, KC_END, - + // right hand KC_RGHT, FR_SECT, FR_EGRV, FR_EXLM, FR_CCED, FR_AGRV, FR_RPRN, TG(1), KC_Y, KC_U, KC_I, KC_O, KC_P, FR_GRV, diff --git a/layouts/community/ergodox/osx_kinesis_pnut/keymap.c b/layouts/community/ergodox/osx_kinesis_pnut/keymap.c index 5b731a1c0..21e383bd2 100644 --- a/layouts/community/ergodox/osx_kinesis_pnut/keymap.c +++ b/layouts/community/ergodox/osx_kinesis_pnut/keymap.c @@ -46,7 +46,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { LALT(KC_LSFT), LT(SYMB,KC_GRV),KC_QUOT,KC_LEFT,KC_RGHT, KC_LGUI, ALT_T(KC_APP), KC_HOME, - KC_BSPC,KC_DELT,KC_END, + KC_BSPC,KC_DEL,KC_END, // right hand KC_RGHT, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, TG(1), KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS, diff --git a/layouts/community/ergodox/phoenix/keymap.c b/layouts/community/ergodox/phoenix/keymap.c index 31a987b35..b9be7e2b8 100644 --- a/layouts/community/ergodox/phoenix/keymap.c +++ b/layouts/community/ergodox/phoenix/keymap.c @@ -41,7 +41,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_END, KC_SPC,KC_BSPC,KC_LGUI, // right hand - KC_DELT, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, + KC_DEL, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, TG(SYMB), KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS, KC_H, KC_J, KC_K, KC_L, LT(MDIA, KC_SCLN),GUI_T(KC_QUOT), MEH_T(KC_NO),KC_N, KC_M, KC_COMM,KC_DOT, CTL_T(KC_SLSH), KC_RSFT, diff --git a/layouts/community/ergodox/plover/keymap.c b/layouts/community/ergodox/plover/keymap.c index 9f19ab24c..0ab60ffbb 100644 --- a/layouts/community/ergodox/plover/keymap.c +++ b/layouts/community/ergodox/plover/keymap.c @@ -39,8 +39,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_LSFT, CTL_T(KC_Z), KC_X, KC_C, KC_V, KC_B, ALL_T(KC_NO), LT(SYMB,KC_GRV),KC_QUOT, LALT(KC_LSFT), KC_LEFT,KC_RGHT, ALT_T(KC_APP), KC_HOME, - KC_END, - KC_BSPC,KC_DELT,KC_LALT, + KC_END, + KC_BSPC,KC_DEL,KC_LALT, // right hand KC_RGHT, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, TG(3), KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS, diff --git a/layouts/community/ergodox/qwerty_code_friendly/keymap.c b/layouts/community/ergodox/qwerty_code_friendly/keymap.c index 5f4ed3c19..f2aa255a4 100644 --- a/layouts/community/ergodox/qwerty_code_friendly/keymap.c +++ b/layouts/community/ergodox/qwerty_code_friendly/keymap.c @@ -41,7 +41,7 @@ # define CFQ_USER_KEY4 KC_BSPC #endif #if !defined(CFQ_USER_KEY5) -# define CFQ_USER_KEY5 KC_DELT +# define CFQ_USER_KEY5 KC_DEL #endif #if !defined(CFQ_USER_KEY6) # define CFQ_USER_KEY6 KC_CAPS diff --git a/layouts/community/ergodox/sneako/keymap.c b/layouts/community/ergodox/sneako/keymap.c index 5add317e1..313e597d7 100644 --- a/layouts/community/ergodox/sneako/keymap.c +++ b/layouts/community/ergodox/sneako/keymap.c @@ -36,7 +36,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [BASE] = LAYOUT_ergodox( // layer 0 : default // left hand KC_EQL, KC_1, KC_2, KC_3, KC_4, KC_5, KC_LEFT, - KC_DELT, KC_Q, KC_W, KC_E, KC_R, KC_T, TG(1), + KC_DEL, KC_Q, KC_W, KC_E, KC_R, KC_T, TG(1), CTL_T(KC_ESC), KC_A, KC_S, KC_D, KC_F, KC_G, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, ALL_T(KC_NO), LT(SYMB,KC_GRV),KC_QUOT, LALT(KC_LSFT), KC_LEFT,KC_RGHT, diff --git a/layouts/community/ergodox/software_neo2/keymap.c b/layouts/community/ergodox/software_neo2/keymap.c index 7ec4f7b83..73e0694ba 100644 --- a/layouts/community/ergodox/software_neo2/keymap.c +++ b/layouts/community/ergodox/software_neo2/keymap.c @@ -34,7 +34,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { // Otherwise, it needs KC_* [BASE] = LAYOUT_ergodox( // layer 0 : default // left hand - KC_DELT, NEO_1, NEO_2, NEO_3, NEO_4, NEO_5, KC_MPLY, + KC_DEL, NEO_1, NEO_2, NEO_3, NEO_4, NEO_5, KC_MPLY, KC_TAB, NEO_X, NEO_V, NEO_L, NEO_C, NEO_W, KC_ESC, NEO_L1_L, NEO_U, NEO_I, NEO_A, NEO_E, NEO_O, KC_LSFT, CTL_T(NEO_UE), GUI_T(NEO_OE), ALT_T(NEO_AE), NEO_P, NEO_Z, TG(1), @@ -49,7 +49,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { TG(1), NEO_B, NEO_M, NEO_COMM, NEO_DOT, NEO_J, KC_RSFT, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, NEO_L2_R, KC_LALT,KC_RGUI, - KC_DELT, + KC_DEL, KC_ESC,KC_ENT, KC_SPC ), /* Keymap 1: Media and mouse keys diff --git a/layouts/community/ergodox/swedish-lindhe/keymap.c b/layouts/community/ergodox/swedish-lindhe/keymap.c index 5dd5c4d87..1b16c31d4 100644 --- a/layouts/community/ergodox/swedish-lindhe/keymap.c +++ b/layouts/community/ergodox/swedish-lindhe/keymap.c @@ -62,7 +62,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_MS_BTN3, KC_6, KC_7, KC_8, KC_9, KC_0, SE_PLUS, TG(SYMB), KC_Y, KC_U, KC_I, KC_O, KC_P, SE_AA, KC_H, KC_J, KC_K, KC_L, SE_OSLH, SE_AE, - KC_DELT, KC_N, KC_M, KC_COMM, KC_DOT, SE_MINS, KC_RSFT, + KC_DEL, KC_N, KC_M, KC_COMM, KC_DOT, SE_MINS, KC_RSFT, KC_ALGR, KC_DOWN, KC_UP, KC_LEFT, KC_RGHT, KC_HOME, KC_END, KC_PGUP, diff --git a/layouts/community/ergodox/swedish/keymap.c b/layouts/community/ergodox/swedish/keymap.c index d05dc6cc6..454dcc35c 100644 --- a/layouts/community/ergodox/swedish/keymap.c +++ b/layouts/community/ergodox/swedish/keymap.c @@ -63,7 +63,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [BASE] = LAYOUT_ergodox( // layer 0 : default // left hand SE_HALF, KC_1, KC_2, KC_3, KC_4, KC_5, KC_LEFT, - KC_DELT, KC_Q, KC_W, KC_E, KC_R, KC_T, TG(SYMB), + KC_DEL, KC_Q, KC_W, KC_E, KC_R, KC_T, TG(SYMB), KC_BSPC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_LSFT, CTL_T(KC_Z), KC_X, KC_C, KC_V, KC_B, ALL_T(KC_NO), LT(SYMB,SE_APOS), SE_ACUT, LALT(KC_LSFT), KC_LEFT, KC_RGHT, diff --git a/layouts/community/ergodox/swissgerman/keymap.c b/layouts/community/ergodox/swissgerman/keymap.c index b32fa4c2a..8ba958293 100644 --- a/layouts/community/ergodox/swissgerman/keymap.c +++ b/layouts/community/ergodox/swissgerman/keymap.c @@ -47,15 +47,15 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { /* Keymap 0: Basic layer * * ,--------------------------------------------------. ,--------------------------------------------------. - * | | 1 | 2 | 3 | 4 | 5 | LEFT | | RIGHT| 6 | 7 | 8 | 9 | 0 | ' | + * | § | 1 | 2 | 3 | 4 | 5 | LEFT | | RIGHT| 6 | 7 | 8 | 9 | 0 | ' | * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| - * | Del | Q | W | E | R | T | L1 | | L1 | Z | U | I | O | P | | + * | Del | Q | W | E | R | T | L1 | | L1 | Z | U | I | O | P | ü | * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| - * | BkSp | A /L2| S | D | F | G |------| |------| H | J | K | L | / L2| / Cmd | + * | BkSp | A /L2| S | D | F | G |------| |------| H | J | K | L |ö / L2|ä / Cmd | * |--------+------+------+------+------+------| Hyper| | Meh |------+------+------+------+------+--------| * | LShift |Y/Ctrl|X/Alt | C | V | B | | | | N | M | , |./Alt |-/Ctrl| RShift | * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' - * |< / L1| ^ | $ | Left | Right| | Up | Down |AltGr | | ~L1 | + * |< / L1| ^ | $ | Left | Right| | Up | Down |AltGr | ¨ | ~L1 | * `----------------------------------' `----------------------------------' * ,-------------. ,-------------. * | App | LGui | | Alt |Ctrl/Esc| @@ -70,7 +70,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [BASE] = LAYOUT_ergodox( // layer 0 : default // left hand KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_LEFT, - KC_DELT, KC_Q, KC_W, KC_E, KC_R, KC_T, TG(SYMB), + KC_DEL, KC_Q, KC_W, KC_E, KC_R, KC_T, TG(SYMB), KC_BSPC, LT(MDIA, KC_A),KC_S, KC_D, KC_F, KC_G, KC_LSFT, CTL_T(KC_Z), ALT_T(KC_X), KC_C, KC_V, KC_B, ALL_T(KC_NO), LT(SYMB,KC_NONUS_BSLASH), KC_EQL, KC_BSLS, KC_LEFT,KC_RGHT, @@ -270,7 +270,7 @@ void send_key(uint16_t keycode) { void go_back_based_on_tag(char* tag) { const int BRACKETS_AND_SLASH_LENGTH = 3; - + for (int i=0; i < strlen(tag) + BRACKETS_AND_SLASH_LENGTH; i++) { send_key(KC_LEFT); } diff --git a/layouts/community/ergodox/tkuichooseyou/keymap.c b/layouts/community/ergodox/tkuichooseyou/keymap.c index 4dbf8be58..9141cd1c7 100644 --- a/layouts/community/ergodox/tkuichooseyou/keymap.c +++ b/layouts/community/ergodox/tkuichooseyou/keymap.c @@ -46,7 +46,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_H, KC_J, KC_K, KC_L, LT(MDIA, KC_SCLN),KC_QUOT, KC_LGUI, KC_N, KC_M, KC_COMM,KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_DOWN,KC_LBRC,KC_RBRC, TT(SYMB), - KC_DELT, CTL_T(KC_ESC), + KC_DEL, CTL_T(KC_ESC), KC_PGUP, KC_PGDN,KC_TAB, KC_ENT ), diff --git a/layouts/community/ergodox/tm2030/keymap.c b/layouts/community/ergodox/tm2030/keymap.c index 1259a18ff..3f8280037 100644 --- a/layouts/community/ergodox/tm2030/keymap.c +++ b/layouts/community/ergodox/tm2030/keymap.c @@ -38,7 +38,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { // Otherwise, it needs KC_* [BASE] = LAYOUT_ergodox( // layer 0 : default // left hand - KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_DELT, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_DEL, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_BSPC, KC_LSFT, KC_A, KC_S, KC_D, KC_F, KC_G, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_ENT, @@ -49,7 +49,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_SPC, KC_LSFT, KC_PGDN, // right hand - KC_DELT, KC_6, KC_7, KC_8, KC_9, KC_0, KC_RBRC, + KC_DEL, KC_6, KC_7, KC_8, KC_9, KC_0, KC_RBRC, KC_BSPC, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_H, KC_J, KC_K, KC_L, KC_SCLN, SFT_T(KC_QUOT), KC_ENT, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, SFT_T(KC_BSLS), @@ -84,7 +84,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { // Otherwise, it needs KC_* [DVRK] = LAYOUT_ergodox( // layer 0 : default // left hand - KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_DELT, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_DEL, KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_BSPC, KC_LSFT, KC_A, KC_O, KC_E, KC_U, KC_I, KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_ENT, @@ -95,7 +95,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_SPC, KC_LSFT, KC_PGDN, // right hand - KC_DELT, KC_6, KC_7, KC_8, KC_9, KC_0, KC_EQL, + KC_DEL, KC_6, KC_7, KC_8, KC_9, KC_0, KC_EQL, KC_BSPC, KC_F, KC_G, KC_C, KC_R, KC_L, KC_SLSH, KC_D, KC_H, KC_T, KC_N, KC_S, SFT_T(KC_MINS), KC_ENT, KC_B, KC_M, KC_W, KC_V, KC_Z, SFT_T(KC_BSLS), @@ -175,7 +175,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_INS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLU, KC_TRNS, KC_TRNS, KC_TRNS, KC_CALC, KC_MAIL, KC_WHOM, - KC_TRNS, KC_TRNS, LSFT(KC_DELT),LCTL(KC_INS),LSFT(KC_INS), KC_MUTE, KC_VOLD, + KC_TRNS, KC_TRNS, LSFT(KC_DEL), LCTL(KC_INS),LSFT(KC_INS), KC_MUTE, KC_VOLD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, diff --git a/layouts/community/ergodox/tonyabra_osx/keymap.c b/layouts/community/ergodox/tonyabra_osx/keymap.c index 4f174a69d..469c21944 100644 --- a/layouts/community/ergodox/tonyabra_osx/keymap.c +++ b/layouts/community/ergodox/tonyabra_osx/keymap.c @@ -37,7 +37,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_BSPC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_LGUI, TG(SYMB), KC_GRV, KC_LBRC, KC_RBRC,KC_QUOT, - KC_DELT,KC_LALT, + KC_DEL, KC_LALT, KC_HOME, KC_SPC,KC_BSPC,KC_END, // right hand diff --git a/layouts/community/ergodox/townk_osx/keymap.c b/layouts/community/ergodox/townk_osx/keymap.c index a6097d9a3..e36d71432 100644 --- a/layouts/community/ergodox/townk_osx/keymap.c +++ b/layouts/community/ergodox/townk_osx/keymap.c @@ -101,7 +101,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_FN1, TG(KEYPAD), KC_LCTRL, KC_LALT, KC_LGUI, M_TESC, M_TPASTE, KC_HOME, - KC_BSPC, KC_DELT, KC_END, + KC_BSPC, KC_DEL, KC_END, //right half KC_POWER, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, MEH_T(KC_F17), KC_Y, KC_U, KC_I, KC_O, KC_P, KC_EQL, diff --git a/layouts/community/ergodox/twey/keymap.c b/layouts/community/ergodox/twey/keymap.c index 0cc98ca77..dac153f07 100644 --- a/layouts/community/ergodox/twey/keymap.c +++ b/layouts/community/ergodox/twey/keymap.c @@ -36,7 +36,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [BASE] = LAYOUT_ergodox( // layer 0 : default // left hand KC_EQL, KC_1, KC_2, KC_3, KC_4, KC_5, TG(STEN), - KC_DELT, KC_QUOT, KC_COMM,KC_DOT, KC_P, KC_Y, KC_ESC, + KC_DEL, KC_QUOT, KC_COMM,KC_DOT, KC_P, KC_Y, KC_ESC, KC_BSPC, KC_A, KC_O, KC_E, KC_U, KC_I, KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_TAB, MO(SYMB), KC_NO, KC_GRV, KC_LEFT,KC_RGHT, diff --git a/layouts/community/ergodox/videck/keymap.c b/layouts/community/ergodox/videck/keymap.c index 1229469d7..7058d9344 100644 --- a/layouts/community/ergodox/videck/keymap.c +++ b/layouts/community/ergodox/videck/keymap.c @@ -29,7 +29,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_PGUP, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_PGDN, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, - KC_DELT, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, TD(TD_R), + KC_DEL, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, TD(TD_R), KC_LBRC, KC_RBRC, KC_EQL, KC_RALT, KC_RCTL, KC_APP, KC_ESC, KC_INS, diff --git a/layouts/community/ergodox/xyverz/keymap.c b/layouts/community/ergodox/xyverz/keymap.c index eeeded47f..3131c3064 100644 --- a/layouts/community/ergodox/xyverz/keymap.c +++ b/layouts/community/ergodox/xyverz/keymap.c @@ -1,6 +1,6 @@ /* * About this keymap: - * + * * The Dvorak layout shown herestems from my early Kinesis years, using the Contour PS/2 with a Dvorak * software layout. Because of this, the RBRC and LBRC were on opposite sides of the board in the corner * keys. I've decided to continue using this layout with my ErgoDox. @@ -99,7 +99,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [_QW] = LAYOUT_ergodox( // left hand KC_EQL, KC_1, KC_2, KC_3, KC_4, KC_5, KC_LEFT, - KC_DELT, KC_Q, KC_W, KC_E, KC_R, KC_T, XXXXXXX, + KC_DEL, KC_Q, KC_W, KC_E, KC_R, KC_T, XXXXXXX, KC_BSPC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, MO(_MD), KC_LGUI, KC_GRV, KC_INS, KC_LEFT, KC_RGHT, @@ -138,10 +138,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * | | | End | | PgDn | | | * `--------------------' `--------------------' */ -[_CM] = LAYOUT_ergodox( +[_CM] = LAYOUT_ergodox( // left hand KC_EQL, KC_1, KC_2, KC_3, KC_4, KC_5, KC_LEFT, - KC_DELT, KC_Q, KC_W, KC_F, KC_P, KC_G, XXXXXXX, + KC_DEL, KC_Q, KC_W, KC_F, KC_P, KC_G, XXXXXXX, KC_BSPC, KC_A, KC_R, KC_S, KC_T, KC_D, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, MO(_MD), KC_LGUI, KC_GRV, KC_INS, KC_LEFT, KC_RGHT, diff --git a/layouts/community/ergodox/zweihander-macos/keymap.c b/layouts/community/ergodox/zweihander-macos/keymap.c index f64808c4d..93a435efb 100644 --- a/layouts/community/ergodox/zweihander-macos/keymap.c +++ b/layouts/community/ergodox/zweihander-macos/keymap.c @@ -35,7 +35,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [BASE] = LAYOUT_ergodox( // layer 0 : default // left hand KC_EQL, KC_1, KC_2, KC_3, KC_4, KC_5, TG(SYMB), - KC_DELT, KC_Q, KC_W, KC_E, KC_R, KC_T, MO(SYMB), + KC_DEL, KC_Q, KC_W, KC_E, KC_R, KC_T, MO(SYMB), KC_BSPC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_LGUI, KC_LCTL, KC_LALT, KC_LGUI,KC_LEFT,KC_RGHT, diff --git a/quantum/quantum_keycodes.h b/quantum/quantum_keycodes.h index bb16da4d5..6fe980798 100644 --- a/quantum/quantum_keycodes.h +++ b/quantum/quantum_keycodes.h @@ -600,8 +600,6 @@ enum quantum_keycodes { #define KC_DOUBLE_QUOTE KC_DQT #define KC_DQUO KC_DQT -#define KC_DELT KC_DELETE // Del key (four letter code) - // Alias for function layers than expand past FN31 #define FUNC(kc) (QK_FUNCTION | (kc)) -- cgit v1.2.3-70-g09d2 From 3619678b10c772c15dd348dce3d2991e178d7a3d Mon Sep 17 00:00:00 2001 From: fauxpark Date: Sat, 3 Aug 2019 06:12:56 +1000 Subject: Migrate ACTION_BACKLIGHT_* to BL_* (#6299) * Branch point for 2019 Aug 30 Breaking Change * LUFA USB descriptor cleanup (#4871) * Fix indentation * Fix braces * Expand descriptor headers * Align descriptor elements * Nicer formatting * Tidy up preprocessor statements * Remove VERSION_BCD redefine - LUFA_VERSION_INTEGER is currently 0x170418 * Tidy up comments * Tweak ordering of HID report elements (no functional changes) * We don't need all of these newlines * Move default USB_MAX_POWER_CONSUMPTION closer to where it makes sense * Ask nicely * Add some more comments * Change indentation back to 4 spaces * Add changelog entry * Language Keymap extras backport from ZSA fork (#6198) * Swedish extra keymap refactor * Fix swedish $ sign definition (#81) * Fix br abnt2 keymap compilation error * Add PR changelog doc * Update PR6198.md * Enforce clang-format (#6293) * Enforce clang-format on commit for core files * forgot about tests * Migrate ACTION_LAYER_MOMENTARYs to MO() (#5176) * Migrate ACTION_LAYER_MOMENTARYs to MO() * Add changelog entry * Update docs/ChangeLog/20190830/PR5176.md Co-Authored-By: skullydazed * Migrate ACTION_BACKLIGHT_* to BL_* * Add changelog * Update docs/ChangeLog/20190830/PR6299.md Co-Authored-By: skullydazed --- docs/ChangeLog/20190830/PR6299.md | 4 ++++ keyboards/jd45/keymaps/justin/keymap.c | 13 +++++-------- keyboards/jd45/keymaps/mjt/keymap.c | 11 ++++++----- keyboards/kc60/keymaps/dbroqua/keymap.c | 14 +------------- keyboards/kc60/keymaps/dbroqua_hhkb/keymap.c | 14 +------------- .../planck/old_keymap_files/common_keymaps/keymap_wilba.c | 12 +++++------- 6 files changed, 22 insertions(+), 46 deletions(-) create mode 100644 docs/ChangeLog/20190830/PR6299.md (limited to 'docs') diff --git a/docs/ChangeLog/20190830/PR6299.md b/docs/ChangeLog/20190830/PR6299.md new file mode 100644 index 000000000..43fb9e031 --- /dev/null +++ b/docs/ChangeLog/20190830/PR6299.md @@ -0,0 +1,4 @@ +* Migrating `ACTION_BACKLIGHT_*()` entries in `fn_actions` to `BL_` keycodes + * `fn_actions` is deprecated, and its functionality has been superseded by direct keycodes and `process_record_user()` + * All keymaps using these actions have had the relevant `KC_FN*` keys replaced with the equivalent `BL_*` keys + * If you currently use `KC_FN*` you will need to replace `fn_actions` with the [custom keycode](https://docs.qmk.fm/#/custom_quantum_functions) and [macro](https://docs.qmk.fm/#/feature_macros) features diff --git a/keyboards/jd45/keymaps/justin/keymap.c b/keyboards/jd45/keymaps/justin/keymap.c index 91cc760c6..1c0e78072 100644 --- a/keyboards/jd45/keymaps/justin/keymap.c +++ b/keyboards/jd45/keymaps/justin/keymap.c @@ -4,6 +4,8 @@ #define KC_MO2 MO(2) #define KC_MO3 MO(3) +#define KC_BLTG BL_TOGG + const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [0] = LAYOUT_kc( ESC, Q, W, F, P, G, J, L, U, Y, SCLN, QUOT, BSPC, @@ -19,7 +21,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, 7, 8, 9, 0, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, LBRC, 4, 5, 6, DOT, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, RBRC, 1, 2, 3, BSLS, TRNS, - TRNS, FN29, TRNS, TRNS, TRNS, PAUSE, EQL, MINS, TRNS, TRNS), + TRNS, BLTG, TRNS, TRNS, TRNS, PAUSE, EQL, MINS, TRNS, TRNS), [3] = LAYOUT_kc( TRNS, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, @@ -29,7 +31,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, 7, 8, 9, 0, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, LBRC, 4, 5, 6, DOT, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, RBRC, 1, 2, 3, BSLS, TRNS, - TRNS, FN29, TRNS, TRNS, TRNS, PAUSE, EQL, MINS, TRNS, TRNS), + TRNS, BLTG, TRNS, TRNS, TRNS, PAUSE, EQL, MINS, TRNS, TRNS), }; enum macro_id @@ -49,12 +51,7 @@ const uint16_t PROGMEM fn_actions[] = { [10] = ACTION_MACRO(PSWD1), [11] = ACTION_MACRO(PSWD2), - [12] = ACTION_MACRO(PSWD3), - - [29] = ACTION_BACKLIGHT_TOGGLE(), - [30] = ACTION_BACKLIGHT_INCREASE(), - [31] = ACTION_BACKLIGHT_DECREASE() - + [12] = ACTION_MACRO(PSWD3) }; /* diff --git a/keyboards/jd45/keymaps/mjt/keymap.c b/keyboards/jd45/keymaps/mjt/keymap.c index 63563d6aa..95f96066d 100644 --- a/keyboards/jd45/keymaps/mjt/keymap.c +++ b/keyboards/jd45/keymaps/mjt/keymap.c @@ -4,6 +4,8 @@ */ #define KC_TT2 TT(2) +#define KC_BLST BL_STEP +#define KC_BLTG BL_TOGG const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [0] = LAYOUT_kc( @@ -15,9 +17,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { GRV, TRNS, UP, TRNS, 7, 8, 9, 0, MINS, EQL, PSCR, LBRC, RBRC, TRNS, LEFT, DOWN, RGHT, 4, 5, 6, INS, HOME, PGUP, SCLN, TRNS, TRNS, TRNS, TRNS, TRNS, 1, 2, 3, DEL, END, PGDN, TRNS, TRNS, - TRNS, TRNS, TRNS, SPC, TRNS, DEL, TRNS, FN3, TRNS, TRNS), + TRNS, TRNS, TRNS, SPC, TRNS, DEL, TRNS, BLST, TRNS, TRNS), [2] = LAYOUT_kc( - TRNS, TRNS, VOLU, TRNS, F7, F8, F9, F10, F11, F12, PSCR, FN3, FN4, + TRNS, TRNS, VOLU, TRNS, F7, F8, F9, F10, F11, F12, PSCR, BLST, BLTG, TRNS, MPRV, VOLD, MNXT, F4, F5, F6, J, K, L, SCLN, TRNS, TRNS, TRNS, TRNS, TRNS, F1, F2, F3, MUTE, MPRV, MNXT, MSTP, TRNS, TRNS, TRNS, TRNS, LGUI, TRNS, TRNS, TRNS, TRNS, PAUS, TRNS) @@ -37,9 +39,8 @@ enum macro_id const uint16_t PROGMEM fn_actions[] = { [0] = ACTION_MODS_TAP_TOGGLE(MOD_LSFT), - [1] = ACTION_MACRO(M_LAYER1), - [3] = ACTION_BACKLIGHT_STEP(), - [4] = ACTION_BACKLIGHT_TOGGLE()}; + [1] = ACTION_MACRO(M_LAYER1) +}; const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) { diff --git a/keyboards/kc60/keymaps/dbroqua/keymap.c b/keyboards/kc60/keymaps/dbroqua/keymap.c index a70e1017e..f7aa36dab 100644 --- a/keyboards/kc60/keymaps/dbroqua/keymap.c +++ b/keyboards/kc60/keymaps/dbroqua/keymap.c @@ -8,18 +8,6 @@ // Fillers to make layering more clear #define ______ KC_TRNS -// Func macro definitions. -#define S_LED FUNC(0) -#define S_LEDI FUNC(1) -#define S_LEDD FUNC(2) - -// Enable these functions using FUNC(n) macro. -const uint16_t PROGMEM fn_actions[] = { - [0] = ACTION_BACKLIGHT_TOGGLE(), - [1] = ACTION_BACKLIGHT_INCREASE(), - [2] = ACTION_BACKLIGHT_DECREASE() - }; - /* * | | | * | | | @@ -67,7 +55,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_INS, \ ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, \ ______, ______, ______, ______, ______, ______, ______, KC_PSCR,______, ______, ______, ______, ______, ______, \ - ______, ______, S_LED, S_LEDI, S_LEDD,______,KC_MUTE,KC_VOLU,KC_VOLD,______, ______, ______, ______,KC_MPLY, \ + ______, ______, BL_TOGG, BL_INC, BL_DEC, ______,KC_MUTE,KC_VOLU,KC_VOLD,______, ______, ______, ______,KC_MPLY, \ ______, ______, ______, ______, KC_DEL, ______, KC_MPRV, KC_MSTP, KC_MNXT \ ), diff --git a/keyboards/kc60/keymaps/dbroqua_hhkb/keymap.c b/keyboards/kc60/keymaps/dbroqua_hhkb/keymap.c index af758ae16..fe5a9c4a8 100644 --- a/keyboards/kc60/keymaps/dbroqua_hhkb/keymap.c +++ b/keyboards/kc60/keymaps/dbroqua_hhkb/keymap.c @@ -7,18 +7,6 @@ // Fillers to make layering more clear #define ______ KC_TRNS -// Func macro definitions. -#define S_LED FUNC(0) -#define S_LEDI FUNC(1) -#define S_LEDD FUNC(2) - -// Enable these functions using FUNC(n) macro. -const uint16_t PROGMEM fn_actions[] = { - [0] = ACTION_BACKLIGHT_TOGGLE(), - [1] = ACTION_BACKLIGHT_INCREASE(), - [2] = ACTION_BACKLIGHT_DECREASE() - }; - const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { /* Qwerty * ,-----------------------------------------------------------------------------------------. @@ -56,7 +44,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { */ [_FN] = LAYOUT( /* Layer 1 */ ______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_INS, \ - KC_CAPS, S_LED, S_LEDI, S_LEDD, ______, ______, ______, ______, KC_PSCR, KC_SLCK, KC_PAUS, KC_UP, ______, ______, \ + KC_CAPS, BL_TOGG, BL_INC, BL_DEC, ______, ______, ______, ______, KC_PSCR, KC_SLCK, KC_PAUS, KC_UP, ______, ______, \ ______, KC_VOLD, KC_VOLU, KC_MUTE, ______, ______, KC_PAST, KC_PSLS,KC_HOME, KC_PGUP, KC_LEFT, KC_RGHT, ______, ______, \ ______, ______, KC_MPRV, KC_MPLY, KC_MNXT,______,______,KC_PPLS,KC_PMNS,KC_END, KC_PGDN, KC_DOWN, ______,______, \ ______, ______, ______, ______, KC_DEL, KC_MSTP, ______, ______, ______ \ diff --git a/keyboards/planck/old_keymap_files/common_keymaps/keymap_wilba.c b/keyboards/planck/old_keymap_files/common_keymaps/keymap_wilba.c index 5bf06382d..054297b63 100644 --- a/keyboards/planck/old_keymap_files/common_keymaps/keymap_wilba.c +++ b/keyboards/planck/old_keymap_files/common_keymaps/keymap_wilba.c @@ -2,10 +2,13 @@ #define KC_MO2 MO(2) #define KC_MO3 MO(3) +#define KC_BLTG BL_TOGG +#define KC_BLIN BL_INC +#define KC_BLDE BL_DEC const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [0] = KEYMAP( /* Wilba */ - FN27, FN28, FN29, E, R, T, Y, U, I, O, P, BSPC, + BLTG, BLIN, BLDE, E, R, T, Y, U, I, O, P, BSPC, TAB, A, S, D, F, G, H, J, K, L, SCLN, QUOT, LSFT, Z, X, C, V, B, N, M, COMM, DOT, SLSH, ENT, LCTL, LGUI, LALT, RSFT, MO2, SPC, MO3, LEFT, DOWN, UP, RGHT), @@ -47,10 +50,5 @@ const uint16_t PROGMEM fn_actions[] = { [24] = ACTION_MODS_KEY(MOD_LSFT, KC_RBRC), // } [25] = ACTION_MODS_KEY(MOD_LSFT, KC_BSLS), // | - [26] = ACTION_MODS_KEY(MOD_LSFT | MOD_RSFT, KC_PAUSE), - - [27] = ACTION_BACKLIGHT_TOGGLE(), - [28] = ACTION_BACKLIGHT_INCREASE(), - [29] = ACTION_BACKLIGHT_DECREASE() - + [26] = ACTION_MODS_KEY(MOD_LSFT | MOD_RSFT, KC_PAUSE) }; -- cgit v1.2.3-70-g09d2 From 75ee8df19e0f14ba466f41ab673dde2fe2fdae9c Mon Sep 17 00:00:00 2001 From: Joel Challis Date: Fri, 2 Aug 2019 21:35:35 +0100 Subject: Update Atreus to current code conventions (#5849) * Update atreus to current code conventions - add multi revision instead of defines * Remove config.h duplication from user keymaps * Add breaking change log * Add missing pragma once --- docs/ChangeLog/20190830/PR5849.md | 3 + keyboards/atreus/astar/astar.c | 16 +++++ keyboards/atreus/astar/astar.h | 17 +++++ keyboards/atreus/astar/config.h | 40 +++++++++++ keyboards/atreus/astar/rules.mk | 58 ++++++++++++++++ keyboards/atreus/atreus.c | 18 ++++- keyboards/atreus/atreus.h | 38 +++++++---- keyboards/atreus/config.h | 57 +++++----------- keyboards/atreus/keymaps/alphadox/config.h | 76 +-------------------- keyboards/atreus/keymaps/dvorak_42_key/config.h | 88 +------------------------ keyboards/atreus/keymaps/erlandsona/config.h | 88 +------------------------ keyboards/atreus/readme.md | 22 ++++--- keyboards/atreus/rules.mk | 76 ++------------------- keyboards/atreus/teensy2/config.h | 36 ++++++++++ keyboards/atreus/teensy2/rules.mk | 58 ++++++++++++++++ keyboards/atreus/teensy2/teensy2.c | 16 +++++ keyboards/atreus/teensy2/teensy2.h | 17 +++++ 17 files changed, 346 insertions(+), 378 deletions(-) create mode 100644 docs/ChangeLog/20190830/PR5849.md create mode 100644 keyboards/atreus/astar/astar.c create mode 100644 keyboards/atreus/astar/astar.h create mode 100644 keyboards/atreus/astar/config.h create mode 100644 keyboards/atreus/astar/rules.mk create mode 100644 keyboards/atreus/teensy2/config.h create mode 100644 keyboards/atreus/teensy2/rules.mk create mode 100644 keyboards/atreus/teensy2/teensy2.c create mode 100644 keyboards/atreus/teensy2/teensy2.h (limited to 'docs') diff --git a/docs/ChangeLog/20190830/PR5849.md b/docs/ChangeLog/20190830/PR5849.md new file mode 100644 index 000000000..24dadc1f2 --- /dev/null +++ b/docs/ChangeLog/20190830/PR5849.md @@ -0,0 +1,3 @@ +* Update Atreus to current code conventions + * Duplicate include guards have bypassed the expected header processing behavior + * All keymaps affected are recommended to remove duplication of `/config.h` to `/keymaps//config.h` and only provide overrides at the keymap level \ No newline at end of file diff --git a/keyboards/atreus/astar/astar.c b/keyboards/atreus/astar/astar.c new file mode 100644 index 000000000..19490deb9 --- /dev/null +++ b/keyboards/atreus/astar/astar.c @@ -0,0 +1,16 @@ +/* Copyright 2019 + * + * 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 . + */ +#include "atreus.h" diff --git a/keyboards/atreus/astar/astar.h b/keyboards/atreus/astar/astar.h new file mode 100644 index 000000000..bf74ceb17 --- /dev/null +++ b/keyboards/atreus/astar/astar.h @@ -0,0 +1,17 @@ +/* Copyright 2019 + * + * 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 . + */ + +#pragma once diff --git a/keyboards/atreus/astar/config.h b/keyboards/atreus/astar/config.h new file mode 100644 index 000000000..a925c6fb1 --- /dev/null +++ b/keyboards/atreus/astar/config.h @@ -0,0 +1,40 @@ +/* Copyright 2019 + * + * 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 . + */ + +#pragma once + +#include "config_common.h" + +/* + * Keyboard Matrix Assignments + * + * Change this to how you wired your keyboard + * COLS: AVR pins used for columns, left to right + * ROWS: AVR pins used for rows, top to bottom + * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode) + * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode) + * +*/ +#define MATRIX_ROW_PINS { D0, D1, D3, D2 } +#if defined(PCBDOWN) + #define MATRIX_COL_PINS { B7, D6, F7, F6, B6, D4, E6, B4, B5, C6, D7 } +#else + #define MATRIX_COL_PINS { D7, C6, B5, B4, E6, D4, B6, F6, F7, D6, B7 } +#endif +#define UNUSED_PINS + +/* COL2ROW, ROW2COL*/ +#define DIODE_DIRECTION COL2ROW diff --git a/keyboards/atreus/astar/rules.mk b/keyboards/atreus/astar/rules.mk new file mode 100644 index 000000000..dc6f19623 --- /dev/null +++ b/keyboards/atreus/astar/rules.mk @@ -0,0 +1,58 @@ +# MCU name +MCU = atmega32u4 + +# Processor frequency. +# This will define a symbol, F_CPU, in all source code files equal to the +# processor frequency in Hz. You can then use this symbol in your source code to +# calculate timings. Do NOT tack on a 'UL' at the end, this will be done +# automatically to create a 32-bit value in your source code. +# +# This will be an integer division of F_USB below, as it is sourced by +# F_USB after it has run through any CPU prescalers. Note that this value +# does not *change* the processor frequency - it should merely be updated to +# reflect the processor speed set externally so that the code can use accurate +# software delays. +F_CPU = 16000000 + + +# +# LUFA specific +# +# Target architecture (see library "Board Types" documentation). +ARCH = AVR8 + +# Input clock frequency. +# This will define a symbol, F_USB, in all source code files equal to the +# input clock frequency (before any prescaling is performed) in Hz. This value may +# differ from F_CPU if prescaling is used on the latter, and is required as the +# raw input clock is fed directly to the PLL sections of the AVR for high speed +# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL' +# at the end, this will be done automatically to create a 32-bit value in your +# source code. +# +# If no clock division is performed on the input clock inside the AVR (via the +# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU. +F_USB = $(F_CPU) + +# Interrupt driven control endpoint task(+60) +OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT + + +# Bootloader selection +# Teensy halfkay +# Pro Micro caterina +# Atmel DFU atmel-dfu +# LUFA DFU lufa-dfu +# QMK DFU qmk-dfu +# atmega32a bootloadHID +BOOTLOADER = caterina + + +# If you don't know the bootloader type, then you can specify the +# Boot Section Size in *bytes* by uncommenting out the OPT_DEFS line +# Teensy halfKay 512 +# Teensy++ halfKay 1024 +# Atmel DFU loader 4096 +# LUFA bootloader 4096 +# USBaspLoader 2048 +# OPT_DEFS += -DBOOTLOADER_SIZE=4096 diff --git a/keyboards/atreus/atreus.c b/keyboards/atreus/atreus.c index 263ec8732..33bb5f35a 100644 --- a/keyboards/atreus/atreus.c +++ b/keyboards/atreus/atreus.c @@ -1 +1,17 @@ -#include "atreus.h" \ No newline at end of file +/* Copyright 2019 + * + * 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 . + */ + +#include "atreus.h" diff --git a/keyboards/atreus/atreus.h b/keyboards/atreus/atreus.h index 8e868ecc0..889a162a2 100644 --- a/keyboards/atreus/atreus.h +++ b/keyboards/atreus/atreus.h @@ -1,10 +1,28 @@ -#ifndef ATREUS_H -#define ATREUS_H +/* Copyright 2019 + * + * 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 . + */ +#pragma once #include "quantum.h" -#include "matrix.h" -#include "backlight.h" -#include +#define ___ KC_NO + +#ifdef KEYBOARD_atreus_astar + #include "astar.h" +#elif KEYBOARD_atreus_teensy2 + #include "teensy2.h" +#endif // This a shortcut to help you visually see your layout. // The first section contains all of the arguements @@ -16,10 +34,8 @@ k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b \ ) \ { \ - { k00, k01, k02, k03, k04, KC_NO, k05, k06, k07, k08, k09 }, \ - { k10, k11, k12, k13, k14, KC_NO, k15, k16, k17, k18, k19 }, \ - { k20, k21, k22, k23, k24, k35, k25, k26, k27, k28, k29 }, \ - { k30, k31, k32, k33, k34, k36, k37, k38, k39, k3a, k3b } \ + { k00, k01, k02, k03, k04, ___, k05, k06, k07, k08, k09 }, \ + { k10, k11, k12, k13, k14, ___, k15, k16, k17, k18, k19 }, \ + { k20, k21, k22, k23, k24, k35, k25, k26, k27, k28, k29 }, \ + { k30, k31, k32, k33, k34, k36, k37, k38, k39, k3a, k3b } \ } - -#endif diff --git a/keyboards/atreus/config.h b/keyboards/atreus/config.h index b1559a29d..d18201443 100644 --- a/keyboards/atreus/config.h +++ b/keyboards/atreus/config.h @@ -1,22 +1,20 @@ -/* -Copyright 2012 Jun Wako - -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 . -*/ +/* Copyright 2019 + * + * 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 . + */ -#ifndef CONFIG_H -#define CONFIG_H +#pragma once #include "config_common.h" @@ -27,31 +25,12 @@ along with this program. If not, see . #define DEVICE_VER 0x0008 #define MANUFACTURER Technomancy #define PRODUCT Atreus -#define DESCRIPTION q.m.k. keyboard firmware for Atreus +#define DESCRIPTION QMK keyboard firmware for Atreus /* key matrix size */ #define MATRIX_ROWS 4 #define MATRIX_COLS 11 -// Change this to how you wired your keyboard -// COLS: Left to right, ROWS: Top to bottom -#if defined(ATREUS_ASTAR) -# define MATRIX_ROW_PINS { D0, D1, D3, D2 } -#if defined(PCBDOWN) -# define MATRIX_COL_PINS { B7, D6, F7, F6, B6, D4, E6, B4, B5, C6, D7 } -#else -# define MATRIX_COL_PINS { D7, C6, B5, B4, E6, D4, B6, F6, F7, D6, B7 } -#endif -# define UNUSED_PINS -#elif defined(ATREUS_TEENSY2) -# define MATRIX_ROW_PINS { D0, D1, D2, D3 } -# define MATRIX_COL_PINS { F6, F5, F4, B7, B6, B5, B4, B3, B2, B1, B0 } -# define UNUSED_PINS -#endif - -/* COL2ROW or ROW2COL */ -#define DIODE_DIRECTION COL2ROW - /* define if matrix has ghost */ //#define MATRIX_HAS_GHOST @@ -83,5 +62,3 @@ along with this program. If not, see . //#define NO_ACTION_ONESHOT //#define NO_ACTION_MACRO //#define NO_ACTION_FUNCTION - -#endif diff --git a/keyboards/atreus/keymaps/alphadox/config.h b/keyboards/atreus/keymaps/alphadox/config.h index e998e5edc..271f48d00 100644 --- a/keyboards/atreus/keymaps/alphadox/config.h +++ b/keyboards/atreus/keymaps/alphadox/config.h @@ -1,75 +1,3 @@ -/* -Copyright 2012 Jun Wako +#pragma once -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 . -*/ - -#ifndef CONFIG_H -#define CONFIG_H - -#include "config_common.h" - -/* USB Device descriptor parameter */ - -#define VENDOR_ID 0xFEED -#define PRODUCT_ID 0x6060 -#define DEVICE_VER 0x0001 -#define MANUFACTURER Arbitrary Definitions -#define PRODUCT Planckeus -#define DESCRIPTION q.m.k. keyboard firmware for Planckeus - -/* key matrix size */ -#define MATRIX_ROWS 4 -#define MATRIX_COLS 11 - -#define MATRIX_ROW_PINS { D0, D1, D2, D3 } -#define MATRIX_COL_PINS { F6, F5, F4, F1, F0, F7, B0, B1, B2, B3, B7 } -#define UNUSED_PINS - -/* COL2ROW or ROW2COL */ -#define DIODE_DIRECTION COL2ROW - -/* define if matrix has ghost */ -//#define MATRIX_HAS_GHOST - -/* number of backlight levels */ -//#define BACKLIGHT_LEVELS 3 - -/* Set 0 if debouncing isn't needed */ -#define DEBOUNCE 5 - -/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ -#define LOCKING_SUPPORT_ENABLE -/* Locking resynchronize hack */ -#define LOCKING_RESYNC_ENABLE - -/* - * Feature disable options - * These options are also useful to firmware size reduction. - */ - -/* disable debug print */ -//#define NO_DEBUG - -/* disable print */ -//#define NO_PRINT - -/* disable action features */ -//#define NO_ACTION_LAYER -//#define NO_ACTION_TAPPING -//#define NO_ACTION_ONESHOT -//#define NO_ACTION_MACRO -//#define NO_ACTION_FUNCTION - -#endif +// place overrides here diff --git a/keyboards/atreus/keymaps/dvorak_42_key/config.h b/keyboards/atreus/keymaps/dvorak_42_key/config.h index 12a221d7f..ac5db196d 100644 --- a/keyboards/atreus/keymaps/dvorak_42_key/config.h +++ b/keyboards/atreus/keymaps/dvorak_42_key/config.h @@ -1,24 +1,6 @@ -/* -Copyright 2012 Jun Wako +#pragma once -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 . -*/ - -#ifndef CONFIG_H -#define CONFIG_H - -#include "config_common.h" +// place overrides here // mouse speed @@ -31,69 +13,3 @@ along with this program. If not, see . #define MOUSEKEY_WHEEL_DELTA 1 #define MOUSEKEY_WHEEL_MAX_SPEED 1 #define MOUSEKEY_WHEEL_TIME_TO_MAX 100 - -/* USB Device descriptor parameter */ - -#define VENDOR_ID 0xFEED -#define PRODUCT_ID 0x6060 -#define DEVICE_VER 0x0001 -#define MANUFACTURER Technomancy -#define PRODUCT Atreus -#define DESCRIPTION q.m.k. keyboard firmware for Atreus - -/* key matrix size */ -#define MATRIX_ROWS 4 -#define MATRIX_COLS 11 - -// Change this to how you wired your keyboard -// COLS: Left to right, ROWS: Top to bottom -#if defined(ATREUS_ASTAR) -# define MATRIX_ROW_PINS { D0, D1, D3, D2 } -#if defined(PCBDOWN) -# define MATRIX_COL_PINS { B7, D6, F7, F6, B6, D4, E6, B4, B5, C6, D7 } -#else -# define MATRIX_COL_PINS { D7, C6, B5, B4, E6, D4, B6, F6, F7, D6, B7 } -#endif -# define UNUSED_PINS -#elif defined(ATREUS_TEENSY2) -# define MATRIX_ROW_PINS { D0, D1, D2, D3 } -# define MATRIX_COL_PINS { F6, F5, F4, B7, B6, B5, B4, B3, B2, B1, B0 } -# define UNUSED_PINS -#endif - -/* COL2ROW or ROW2COL */ -#define DIODE_DIRECTION COL2ROW - -/* define if matrix has ghost */ -//#define MATRIX_HAS_GHOST - -/* number of backlight levels */ -//#define BACKLIGHT_LEVELS 3 - -/* Set 0 if debouncing isn't needed */ -#define DEBOUNCE 5 - -/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ -#define LOCKING_SUPPORT_ENABLE -/* Locking resynchronize hack */ -#define LOCKING_RESYNC_ENABLE - -/* - * Feature disable options - * These options are also useful to firmware size reduction. - */ - -/* disable debug print */ -//#define NO_DEBUG - -/* disable print */ -//#define NO_PRINT - -/* disable action features */ -//#define NO_ACTION_LAYER -//#define NO_ACTION_TAPPING -//#define NO_ACTION_ONESHOT -//#define NO_ACTION_MACRO -//#define NO_ACTION_FUNCTION - -#endif diff --git a/keyboards/atreus/keymaps/erlandsona/config.h b/keyboards/atreus/keymaps/erlandsona/config.h index 4a7ade96a..aa1d8445c 100644 --- a/keyboards/atreus/keymaps/erlandsona/config.h +++ b/keyboards/atreus/keymaps/erlandsona/config.h @@ -1,90 +1,6 @@ -/* -Copyright 2012 Jun Wako +#pragma once -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 . -*/ - -#ifndef CONFIG_H -#define CONFIG_H - -#include "config_common.h" +// place overrides here /* Make Overloaded Keys switch faster */ #define TAPPING_TERM 150 - -/* USB Device descriptor parameter */ - -#define VENDOR_ID 0xFEED -#define PRODUCT_ID 0x6060 -#define DEVICE_VER 0x0001 -#define MANUFACTURER Technomancy -#define PRODUCT Atreus -#define DESCRIPTION q.m.k. keyboard firmware for Atreus - -/* key matrix size */ -#define MATRIX_ROWS 4 -#define MATRIX_COLS 11 - -// Change this to how you wired your keyboard -// COLS: Left to right, ROWS: Top to bottom -#if defined(ATREUS_ASTAR) -# define MATRIX_ROW_PINS { D0, D1, D3, D2 } -#if defined(PCBDOWN) -# define MATRIX_COL_PINS { B7, D6, F7, F6, B6, D4, E6, B4, B5, C6, D7 } -#else -# define MATRIX_COL_PINS { D7, C6, B5, B4, E6, D4, B6, F6, F7, D6, B7 } -#endif -# define UNUSED_PINS -#elif defined(ATREUS_TEENSY2) -# define MATRIX_ROW_PINS { D0, D1, D2, D3 } -# define MATRIX_COL_PINS { F6, F5, F4, B7, B6, B5, B4, B3, B2, B1, B0 } -# define UNUSED_PINS -#endif - -/* COL2ROW or ROW2COL */ -#define DIODE_DIRECTION COL2ROW - -/* define if matrix has ghost */ -//#define MATRIX_HAS_GHOST - -/* number of backlight levels */ -//#define BACKLIGHT_LEVELS 3 - -/* Set 0 if debouncing isn't needed */ -#define DEBOUNCE 5 - -/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ -#define LOCKING_SUPPORT_ENABLE -/* Locking resynchronize hack */ -#define LOCKING_RESYNC_ENABLE - -/* - * Feature disable options - * These options are also useful to firmware size reduction. - */ - -/* disable debug print */ -//#define NO_DEBUG - -/* disable print */ -//#define NO_PRINT - -/* disable action features */ -//#define NO_ACTION_LAYER -//#define NO_ACTION_TAPPING -//#define NO_ACTION_ONESHOT -//#define NO_ACTION_MACRO -//#define NO_ACTION_FUNCTION - -#endif diff --git a/keyboards/atreus/readme.md b/keyboards/atreus/readme.md index 5cd797da9..0dbd098ca 100644 --- a/keyboards/atreus/readme.md +++ b/keyboards/atreus/readme.md @@ -1,5 +1,6 @@ -Atreus -====== +# Atreus + +![Atreus](https://atreus.technomancy.us/photos/1.jpg) A small mechanical keyboard that is based around the shape of the human hand. @@ -9,16 +10,19 @@ Hardware Availability: https://atreus.technomancy.us These configuration files are specifically for the Atreus keyboards created by Phil Hagelberg (@technomancy). This keyboard is available in two variants: one powered by a Teensy 2 (usually hand-wired), one powered by an A-Star (usually using a PCB). You will need to use different `make` commands depending on the variant you have; see examples below. -A-Star:\ -`make atreus:default:avrdude` +Make example for this keyboard (after setting up your build environment): + + make atreus:default:avrdude + +If you would like to use one of the alternative controllers: + + make atreus/astar:default:avrdude + make atreus/teensy2:default:teensy -Teensy:\ -`make TEENSY2=yes atreus:default:teensy` - If your keyboard layout is a mirror image of what you expected (i.e. you do not get QWERTY on the left but YTREWQ on the right), then you have an A-Star powered Atreus (older than March 2016) with PCB labels facing *down* instead of up. Specify that by adding `PCBDOWN=yes` to your `make` commands, e.g. -`make PCBDOWN=yes atreus:default:avrdude` + make PCBDOWN=yes atreus:default:avrdude *Unlike the TMK firmware, these commands should be run from the root of the repository, not the directory containing this readme.* -See [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools), then the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/atreus/rules.mk b/keyboards/atreus/rules.mk index eda77404a..403b0b0ca 100644 --- a/keyboards/atreus/rules.mk +++ b/keyboards/atreus/rules.mk @@ -1,75 +1,7 @@ -# MCU name -MCU = atmega32u4 - -# Processor frequency. -# This will define a symbol, F_CPU, in all source code files equal to the -# processor frequency in Hz. You can then use this symbol in your source code to -# calculate timings. Do NOT tack on a 'UL' at the end, this will be done -# automatically to create a 32-bit value in your source code. -# -# This will be an integer division of F_USB below, as it is sourced by -# F_USB after it has run through any CPU prescalers. Note that this value -# does not *change* the processor frequency - it should merely be updated to -# reflect the processor speed set externally so that the code can use accurate -# software delays. -F_CPU = 16000000 - -# -# LUFA specific -# -# Target architecture (see library "Board Types" documentation). -ARCH = AVR8 - -# Input clock frequency. -# This will define a symbol, F_USB, in all source code files equal to the -# input clock frequency (before any prescaling is performed) in Hz. This value may -# differ from F_CPU if prescaling is used on the latter, and is required as the -# raw input clock is fed directly to the PLL sections of the AVR for high speed -# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL' -# at the end, this will be done automatically to create a 32-bit value in your -# source code. -# -# If no clock division is performed on the input clock inside the AVR (via the -# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU. -F_USB = $(F_CPU) - -# Interrupt driven control endpoint task(+60) -OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT - - -# Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# atmega32a bootloadHID -ifdef TEENSY2 - BOOTLOADER = halfkay - OPT_DEFS += -DATREUS_TEENSY2 -else - BOOTLOADER = caterina - OPT_DEFS += -DATREUS_ASTAR - ifdef PCBDOWN - OPT_DEFS += -DPCBDOWN - endif -endif - - -# If you don't know the bootloader type, then you can specify the -# Boot Section Size in *bytes* by uncommenting out the OPT_DEFS line -# Teensy halfKay 512 -# Teensy++ halfKay 1024 -# Atmel DFU loader 4096 -# LUFA bootloader 4096 -# USBaspLoader 2048 -# OPT_DEFS += -DBOOTLOADER_SIZE=4096 - - # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) +BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) MOUSEKEY_ENABLE = yes # Mouse keys(+4700) EXTRAKEY_ENABLE = yes # Audio control and System control(+450) CONSOLE_ENABLE = yes # Console for debug(+400) @@ -77,12 +9,14 @@ COMMAND_ENABLE = yes # Commands for debug and configuration # Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work -NKRO_ENABLE = yes # USB Nkey Rollover +NKRO_ENABLE = yes # USB Nkey Rollover BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config) -UNICODE_ENABLE = yes # Unicode +UNICODE_ENABLE = yes # Unicode BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID AUDIO_ENABLE = no # Audio output on port C6 FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches HD44780_ENABLE = no # Enable support for HD44780 based LCDs (+400) + +DEFAULT_FOLDER = atreus/astar diff --git a/keyboards/atreus/teensy2/config.h b/keyboards/atreus/teensy2/config.h new file mode 100644 index 000000000..4130ef9bb --- /dev/null +++ b/keyboards/atreus/teensy2/config.h @@ -0,0 +1,36 @@ +/* Copyright 2019 + * + * 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 . + */ + +#pragma once + +#include "config_common.h" + +/* + * Keyboard Matrix Assignments + * + * Change this to how you wired your keyboard + * COLS: AVR pins used for columns, left to right + * ROWS: AVR pins used for rows, top to bottom + * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode) + * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode) + * +*/ +#define MATRIX_ROW_PINS { D0, D1, D2, D3 } +#define MATRIX_COL_PINS { F6, F5, F4, B7, B6, B5, B4, B3, B2, B1, B0 } +#define UNUSED_PINS + +/* COL2ROW, ROW2COL*/ +#define DIODE_DIRECTION COL2ROW diff --git a/keyboards/atreus/teensy2/rules.mk b/keyboards/atreus/teensy2/rules.mk new file mode 100644 index 000000000..3fb7c7e5a --- /dev/null +++ b/keyboards/atreus/teensy2/rules.mk @@ -0,0 +1,58 @@ +# MCU name +MCU = atmega32u4 + +# Processor frequency. +# This will define a symbol, F_CPU, in all source code files equal to the +# processor frequency in Hz. You can then use this symbol in your source code to +# calculate timings. Do NOT tack on a 'UL' at the end, this will be done +# automatically to create a 32-bit value in your source code. +# +# This will be an integer division of F_USB below, as it is sourced by +# F_USB after it has run through any CPU prescalers. Note that this value +# does not *change* the processor frequency - it should merely be updated to +# reflect the processor speed set externally so that the code can use accurate +# software delays. +F_CPU = 16000000 + + +# +# LUFA specific +# +# Target architecture (see library "Board Types" documentation). +ARCH = AVR8 + +# Input clock frequency. +# This will define a symbol, F_USB, in all source code files equal to the +# input clock frequency (before any prescaling is performed) in Hz. This value may +# differ from F_CPU if prescaling is used on the latter, and is required as the +# raw input clock is fed directly to the PLL sections of the AVR for high speed +# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL' +# at the end, this will be done automatically to create a 32-bit value in your +# source code. +# +# If no clock division is performed on the input clock inside the AVR (via the +# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU. +F_USB = $(F_CPU) + +# Interrupt driven control endpoint task(+60) +OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT + + +# Bootloader selection +# Teensy halfkay +# Pro Micro caterina +# Atmel DFU atmel-dfu +# LUFA DFU lufa-dfu +# QMK DFU qmk-dfu +# atmega32a bootloadHID +BOOTLOADER = halfkay + + +# If you don't know the bootloader type, then you can specify the +# Boot Section Size in *bytes* by uncommenting out the OPT_DEFS line +# Teensy halfKay 512 +# Teensy++ halfKay 1024 +# Atmel DFU loader 4096 +# LUFA bootloader 4096 +# USBaspLoader 2048 +# OPT_DEFS += -DBOOTLOADER_SIZE=4096 diff --git a/keyboards/atreus/teensy2/teensy2.c b/keyboards/atreus/teensy2/teensy2.c new file mode 100644 index 000000000..19490deb9 --- /dev/null +++ b/keyboards/atreus/teensy2/teensy2.c @@ -0,0 +1,16 @@ +/* Copyright 2019 + * + * 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 . + */ +#include "atreus.h" diff --git a/keyboards/atreus/teensy2/teensy2.h b/keyboards/atreus/teensy2/teensy2.h new file mode 100644 index 000000000..bf74ceb17 --- /dev/null +++ b/keyboards/atreus/teensy2/teensy2.h @@ -0,0 +1,17 @@ +/* Copyright 2019 + * + * 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 . + */ + +#pragma once -- cgit v1.2.3-70-g09d2 From cf4575b94a3c65e6535a159fc71fc885aebc2620 Mon Sep 17 00:00:00 2001 From: Drashna Jaelre Date: Fri, 2 Aug 2019 14:02:40 -0700 Subject: Fix the LUFA lib to use a submodule instead of just files (#6245) * Remove LUFA files * Update descriptions for newer version of LUFA * Create PR6245.md * Fix CDC(Serial) type errors * Fix missed merge conflict for AUDIO_DTYPE_CSInterface --- docs/ChangeLog/20190830/PR6245.md | 5 + lib/lufa/.gitattributes | 94 - lib/lufa/.gitignore | 16 - lib/lufa/Bootloaders/CDC/BootloaderAPI.c | 75 - lib/lufa/Bootloaders/CDC/BootloaderAPI.h | 58 - lib/lufa/Bootloaders/CDC/BootloaderAPITable.S | 91 - lib/lufa/Bootloaders/CDC/BootloaderCDC.c | 673 ---- lib/lufa/Bootloaders/CDC/BootloaderCDC.h | 144 - lib/lufa/Bootloaders/CDC/BootloaderCDC.txt | 242 -- lib/lufa/Bootloaders/CDC/Config/AppConfig.h | 50 - lib/lufa/Bootloaders/CDC/Config/LUFAConfig.h | 93 - lib/lufa/Bootloaders/CDC/Descriptors.c | 244 -- lib/lufa/Bootloaders/CDC/Descriptors.h | 158 - lib/lufa/Bootloaders/CDC/LUFA CDC Bootloader.inf | 66 - lib/lufa/Bootloaders/CDC/asf.xml | 161 - lib/lufa/Bootloaders/CDC/doxyfile | 2396 ----------- lib/lufa/Bootloaders/CDC/makefile | 62 - lib/lufa/Bootloaders/DFU/BootloaderAPI.c | 76 - lib/lufa/Bootloaders/DFU/BootloaderAPI.h | 58 - lib/lufa/Bootloaders/DFU/BootloaderAPITable.S | 91 - lib/lufa/Bootloaders/DFU/BootloaderDFU.c | 891 ----- lib/lufa/Bootloaders/DFU/BootloaderDFU.h | 216 - lib/lufa/Bootloaders/DFU/BootloaderDFU.txt | 235 -- lib/lufa/Bootloaders/DFU/Config/AppConfig.h | 48 - lib/lufa/Bootloaders/DFU/Config/LUFAConfig.h | 93 - lib/lufa/Bootloaders/DFU/Descriptors.c | 193 - lib/lufa/Bootloaders/DFU/Descriptors.h | 200 - lib/lufa/Bootloaders/DFU/asf.xml | 156 - lib/lufa/Bootloaders/DFU/doxyfile | 2396 ----------- lib/lufa/Bootloaders/DFU/makefile | 62 - lib/lufa/Bootloaders/HID/BootloaderHID.c | 198 - lib/lufa/Bootloaders/HID/BootloaderHID.h | 71 - lib/lufa/Bootloaders/HID/BootloaderHID.txt | 105 - lib/lufa/Bootloaders/HID/Config/LUFAConfig.h | 93 - lib/lufa/Bootloaders/HID/Descriptors.c | 187 - lib/lufa/Bootloaders/HID/Descriptors.h | 80 - lib/lufa/Bootloaders/HID/HostLoaderApp/.gitignore | 1 - lib/lufa/Bootloaders/HID/HostLoaderApp/Makefile | 40 - .../Bootloaders/HID/HostLoaderApp/Makefile.bsd | 21 - lib/lufa/Bootloaders/HID/HostLoaderApp/gpl3.txt | 674 ---- .../HID/HostLoaderApp/hid_bootloader_cli.c | 1013 ----- .../HostLoaderApp_Python/hid_bootloader_loader.py | 120 - lib/lufa/Bootloaders/HID/asf.xml | 123 - lib/lufa/Bootloaders/HID/doxyfile | 2398 ------------ lib/lufa/Bootloaders/HID/makefile | 55 - lib/lufa/Bootloaders/MassStorage/BootloaderAPI.c | 76 - lib/lufa/Bootloaders/MassStorage/BootloaderAPI.h | 63 - .../Bootloaders/MassStorage/BootloaderAPITable.S | 102 - .../MassStorage/BootloaderMassStorage.c | 263 -- .../MassStorage/BootloaderMassStorage.h | 99 - .../MassStorage/BootloaderMassStorage.txt | 240 -- .../Bootloaders/MassStorage/Config/AppConfig.h | 47 - .../Bootloaders/MassStorage/Config/LUFAConfig.h | 93 - lib/lufa/Bootloaders/MassStorage/Descriptors.c | 157 - lib/lufa/Bootloaders/MassStorage/Descriptors.h | 88 - lib/lufa/Bootloaders/MassStorage/Lib/SCSI.c | 294 -- lib/lufa/Bootloaders/MassStorage/Lib/SCSI.h | 84 - lib/lufa/Bootloaders/MassStorage/Lib/VirtualFAT.c | 482 --- lib/lufa/Bootloaders/MassStorage/Lib/VirtualFAT.h | 302 -- lib/lufa/Bootloaders/MassStorage/asf.xml | 156 - lib/lufa/Bootloaders/MassStorage/doxyfile | 2396 ----------- lib/lufa/Bootloaders/MassStorage/makefile | 75 - lib/lufa/Bootloaders/Printer/BootloaderAPI.c | 75 - lib/lufa/Bootloaders/Printer/BootloaderAPI.h | 56 - lib/lufa/Bootloaders/Printer/BootloaderAPITable.S | 91 - lib/lufa/Bootloaders/Printer/BootloaderPrinter.c | 487 --- lib/lufa/Bootloaders/Printer/BootloaderPrinter.h | 108 - lib/lufa/Bootloaders/Printer/BootloaderPrinter.txt | 202 - lib/lufa/Bootloaders/Printer/Config/LUFAConfig.h | 93 - lib/lufa/Bootloaders/Printer/Descriptors.c | 194 - lib/lufa/Bootloaders/Printer/Descriptors.h | 96 - lib/lufa/Bootloaders/Printer/asf.xml | 159 - lib/lufa/Bootloaders/Printer/doxyfile | 2396 ----------- lib/lufa/Bootloaders/Printer/makefile | 62 - lib/lufa/Bootloaders/makefile | 46 - lib/lufa/BuildTests/BoardDriverTest/Board/Board.h | 82 - .../BuildTests/BoardDriverTest/Board/Buttons.h | 92 - .../BuildTests/BoardDriverTest/Board/Dataflash.h | 197 - .../BuildTests/BoardDriverTest/Board/Joystick.h | 104 - lib/lufa/BuildTests/BoardDriverTest/Board/LEDs.h | 132 - .../BuildTests/BoardDriverTest/BoardDeviceMap.cfg | 89 - lib/lufa/BuildTests/BoardDriverTest/Test.c | 115 - lib/lufa/BuildTests/BoardDriverTest/makefile | 69 - lib/lufa/BuildTests/BoardDriverTest/makefile.test | 35 - .../BootloaderTest/BootloaderDeviceMap.cfg | 167 - lib/lufa/BuildTests/BootloaderTest/makefile | 65 - lib/lufa/BuildTests/ModuleTest/Dummy.S | 41 - lib/lufa/BuildTests/ModuleTest/Modules.h | 56 - lib/lufa/BuildTests/ModuleTest/Test_C.c | 31 - lib/lufa/BuildTests/ModuleTest/Test_CPP.cpp | 31 - lib/lufa/BuildTests/ModuleTest/makefile | 67 - lib/lufa/BuildTests/ModuleTest/makefile.test | 94 - lib/lufa/BuildTests/SingleUSBModeTest/Dummy.S | 42 - lib/lufa/BuildTests/SingleUSBModeTest/Test.c | 32 - lib/lufa/BuildTests/SingleUSBModeTest/makefile | 57 - .../BuildTests/SingleUSBModeTest/makefile.test | 75 - lib/lufa/BuildTests/StaticAnalysisTest/makefile | 47 - lib/lufa/BuildTests/makefile | 24 - .../Device/ClassDriver/AudioInput/AudioInput.c | 274 -- .../Device/ClassDriver/AudioInput/AudioInput.h | 94 - .../Device/ClassDriver/AudioInput/AudioInput.txt | 92 - .../ClassDriver/AudioInput/Config/AppConfig.h | 51 - .../ClassDriver/AudioInput/Config/LUFAConfig.h | 93 - .../Device/ClassDriver/AudioInput/Descriptors.c | 312 -- .../Device/ClassDriver/AudioInput/Descriptors.h | 106 - .../Demos/Device/ClassDriver/AudioInput/asf.xml | 52 - .../Demos/Device/ClassDriver/AudioInput/doxyfile | 2395 ----------- .../Demos/Device/ClassDriver/AudioInput/makefile | 43 - .../Device/ClassDriver/AudioOutput/AudioOutput.c | 311 -- .../Device/ClassDriver/AudioOutput/AudioOutput.h | 87 - .../Device/ClassDriver/AudioOutput/AudioOutput.txt | 92 - .../ClassDriver/AudioOutput/Config/AppConfig.h | 50 - .../ClassDriver/AudioOutput/Config/LUFAConfig.h | 93 - .../Device/ClassDriver/AudioOutput/Descriptors.c | 312 -- .../Device/ClassDriver/AudioOutput/Descriptors.h | 106 - .../Demos/Device/ClassDriver/AudioOutput/asf.xml | 50 - .../Demos/Device/ClassDriver/AudioOutput/doxyfile | 2395 ----------- .../Demos/Device/ClassDriver/AudioOutput/makefile | 43 - .../ClassDriver/DualMIDI/Config/LUFAConfig.h | 126 - .../Device/ClassDriver/DualMIDI/Descriptors.c | 366 -- .../Device/ClassDriver/DualMIDI/Descriptors.h | 124 - .../Demos/Device/ClassDriver/DualMIDI/DualMIDI.c | 211 - .../Demos/Device/ClassDriver/DualMIDI/DualMIDI.h | 78 - .../Demos/Device/ClassDriver/DualMIDI/DualMIDI.txt | 78 - lib/lufa/Demos/Device/ClassDriver/DualMIDI/asf.xml | 62 - .../Demos/Device/ClassDriver/DualMIDI/doxyfile | 2395 ----------- .../Demos/Device/ClassDriver/DualMIDI/makefile | 43 - .../DualVirtualSerial/Config/LUFAConfig.h | 126 - .../ClassDriver/DualVirtualSerial/Descriptors.c | 360 -- .../ClassDriver/DualVirtualSerial/Descriptors.h | 135 - .../DualVirtualSerial/DualVirtualSerial.c | 244 -- .../DualVirtualSerial/DualVirtualSerial.h | 76 - .../DualVirtualSerial/DualVirtualSerial.txt | 89 - .../DualVirtualSerial/LUFA DualVirtualSerial.inf | 66 - .../Device/ClassDriver/DualVirtualSerial/asf.xml | 62 - .../Device/ClassDriver/DualVirtualSerial/doxyfile | 2395 ----------- .../Device/ClassDriver/DualVirtualSerial/makefile | 43 - .../ClassDriver/GenericHID/Config/AppConfig.h | 48 - .../ClassDriver/GenericHID/Config/LUFAConfig.h | 126 - .../Device/ClassDriver/GenericHID/Descriptors.c | 220 -- .../Device/ClassDriver/GenericHID/Descriptors.h | 95 - .../Device/ClassDriver/GenericHID/GenericHID.c | 202 - .../Device/ClassDriver/GenericHID/GenericHID.h | 87 - .../Device/ClassDriver/GenericHID/GenericHID.txt | 79 - .../HostTestApp/test_generic_hid_libusb.js | 143 - .../HostTestApp/test_generic_hid_libusb.py | 98 - .../HostTestApp/test_generic_hid_winusb.py | 96 - .../Demos/Device/ClassDriver/GenericHID/asf.xml | 63 - .../Demos/Device/ClassDriver/GenericHID/doxyfile | 2396 ----------- .../Demos/Device/ClassDriver/GenericHID/makefile | 43 - .../ClassDriver/Joystick/Config/LUFAConfig.h | 126 - .../Device/ClassDriver/Joystick/Descriptors.c | 220 -- .../Device/ClassDriver/Joystick/Descriptors.h | 93 - .../Demos/Device/ClassDriver/Joystick/Joystick.c | 202 - .../Demos/Device/ClassDriver/Joystick/Joystick.h | 100 - .../Demos/Device/ClassDriver/Joystick/Joystick.txt | 77 - lib/lufa/Demos/Device/ClassDriver/Joystick/asf.xml | 62 - .../Demos/Device/ClassDriver/Joystick/doxyfile | 2395 ----------- .../Demos/Device/ClassDriver/Joystick/makefile | 43 - .../ClassDriver/Keyboard/Config/LUFAConfig.h | 126 - .../Device/ClassDriver/Keyboard/Descriptors.c | 216 - .../Device/ClassDriver/Keyboard/Descriptors.h | 93 - .../Demos/Device/ClassDriver/Keyboard/Keyboard.c | 219 -- .../Demos/Device/ClassDriver/Keyboard/Keyboard.h | 89 - .../Demos/Device/ClassDriver/Keyboard/Keyboard.txt | 76 - lib/lufa/Demos/Device/ClassDriver/Keyboard/asf.xml | 62 - .../Demos/Device/ClassDriver/Keyboard/doxyfile | 2395 ----------- .../Demos/Device/ClassDriver/Keyboard/makefile | 43 - .../ClassDriver/KeyboardMouse/Config/LUFAConfig.h | 126 - .../Device/ClassDriver/KeyboardMouse/Descriptors.c | 289 -- .../Device/ClassDriver/KeyboardMouse/Descriptors.h | 102 - .../ClassDriver/KeyboardMouse/KeyboardMouse.c | 276 -- .../ClassDriver/KeyboardMouse/KeyboardMouse.h | 84 - .../ClassDriver/KeyboardMouse/KeyboardMouse.txt | 81 - .../Demos/Device/ClassDriver/KeyboardMouse/asf.xml | 62 - .../Device/ClassDriver/KeyboardMouse/doxyfile | 2395 ----------- .../Device/ClassDriver/KeyboardMouse/makefile | 43 - .../KeyboardMouseMultiReport/Config/LUFAConfig.h | 126 - .../KeyboardMouseMultiReport/Descriptors.c | 279 -- .../KeyboardMouseMultiReport/Descriptors.h | 101 - .../KeyboardMouseMultiReport.c | 237 -- .../KeyboardMouseMultiReport.h | 84 - .../KeyboardMouseMultiReport.txt | 78 - .../ClassDriver/KeyboardMouseMultiReport/asf.xml | 61 - .../ClassDriver/KeyboardMouseMultiReport/doxyfile | 2395 ----------- .../ClassDriver/KeyboardMouseMultiReport/makefile | 43 - .../Device/ClassDriver/MIDI/Config/LUFAConfig.h | 126 - .../Demos/Device/ClassDriver/MIDI/Descriptors.c | 314 -- .../Demos/Device/ClassDriver/MIDI/Descriptors.h | 108 - lib/lufa/Demos/Device/ClassDriver/MIDI/MIDI.c | 211 - lib/lufa/Demos/Device/ClassDriver/MIDI/MIDI.h | 78 - lib/lufa/Demos/Device/ClassDriver/MIDI/MIDI.txt | 78 - lib/lufa/Demos/Device/ClassDriver/MIDI/asf.xml | 62 - lib/lufa/Demos/Device/ClassDriver/MIDI/doxyfile | 2395 ----------- lib/lufa/Demos/Device/ClassDriver/MIDI/makefile | 43 - .../ClassDriver/MassStorage/Config/AppConfig.h | 50 - .../ClassDriver/MassStorage/Config/LUFAConfig.h | 126 - .../Device/ClassDriver/MassStorage/Descriptors.c | 194 - .../Device/ClassDriver/MassStorage/Descriptors.h | 98 - .../ClassDriver/MassStorage/Lib/DataflashManager.c | 534 --- .../ClassDriver/MassStorage/Lib/DataflashManager.h | 89 - .../Device/ClassDriver/MassStorage/Lib/SCSI.c | 349 -- .../Device/ClassDriver/MassStorage/Lib/SCSI.h | 89 - .../Device/ClassDriver/MassStorage/MassStorage.c | 162 - .../Device/ClassDriver/MassStorage/MassStorage.h | 83 - .../Device/ClassDriver/MassStorage/MassStorage.txt | 100 - .../Demos/Device/ClassDriver/MassStorage/asf.xml | 67 - .../Demos/Device/ClassDriver/MassStorage/doxyfile | 2395 ----------- .../Demos/Device/ClassDriver/MassStorage/makefile | 43 - .../MassStorageKeyboard/Config/AppConfig.h | 50 - .../MassStorageKeyboard/Config/LUFAConfig.h | 126 - .../ClassDriver/MassStorageKeyboard/Descriptors.c | 254 -- .../ClassDriver/MassStorageKeyboard/Descriptors.h | 111 - .../MassStorageKeyboard/Lib/DataflashManager.c | 534 --- .../MassStorageKeyboard/Lib/DataflashManager.h | 87 - .../ClassDriver/MassStorageKeyboard/Lib/SCSI.c | 349 -- .../ClassDriver/MassStorageKeyboard/Lib/SCSI.h | 89 - .../MassStorageKeyboard/MassStorageKeyboard.c | 270 -- .../MassStorageKeyboard/MassStorageKeyboard.h | 100 - .../MassStorageKeyboard/MassStorageKeyboard.txt | 100 - .../Device/ClassDriver/MassStorageKeyboard/asf.xml | 70 - .../ClassDriver/MassStorageKeyboard/doxyfile | 2395 ----------- .../ClassDriver/MassStorageKeyboard/makefile | 43 - .../Device/ClassDriver/Mouse/Config/LUFAConfig.h | 126 - .../Demos/Device/ClassDriver/Mouse/Descriptors.c | 221 -- .../Demos/Device/ClassDriver/Mouse/Descriptors.h | 93 - lib/lufa/Demos/Device/ClassDriver/Mouse/Mouse.c | 202 - lib/lufa/Demos/Device/ClassDriver/Mouse/Mouse.h | 90 - lib/lufa/Demos/Device/ClassDriver/Mouse/Mouse.txt | 76 - lib/lufa/Demos/Device/ClassDriver/Mouse/asf.xml | 62 - lib/lufa/Demos/Device/ClassDriver/Mouse/doxyfile | 2395 ----------- lib/lufa/Demos/Device/ClassDriver/Mouse/makefile | 43 - .../ClassDriver/RNDISEthernet/Config/AppConfig.h | 60 - .../ClassDriver/RNDISEthernet/Config/LUFAConfig.h | 126 - .../Device/ClassDriver/RNDISEthernet/Descriptors.c | 244 -- .../Device/ClassDriver/RNDISEthernet/Descriptors.h | 112 - .../ClassDriver/RNDISEthernet/LUFA RNDIS.inf | 59 - .../Device/ClassDriver/RNDISEthernet/Lib/ARP.c | 87 - .../Device/ClassDriver/RNDISEthernet/Lib/ARP.h | 76 - .../Device/ClassDriver/RNDISEthernet/Lib/DHCP.c | 129 - .../Device/ClassDriver/RNDISEthernet/Lib/DHCP.h | 131 - .../ClassDriver/RNDISEthernet/Lib/Ethernet.c | 132 - .../ClassDriver/RNDISEthernet/Lib/Ethernet.h | 101 - .../RNDISEthernet/Lib/EthernetProtocols.h | 92 - .../Device/ClassDriver/RNDISEthernet/Lib/ICMP.c | 83 - .../Device/ClassDriver/RNDISEthernet/Lib/ICMP.h | 83 - .../Device/ClassDriver/RNDISEthernet/Lib/IP.c | 116 - .../Device/ClassDriver/RNDISEthernet/Lib/IP.h | 93 - .../RNDISEthernet/Lib/ProtocolDecoders.c | 277 -- .../RNDISEthernet/Lib/ProtocolDecoders.h | 60 - .../Device/ClassDriver/RNDISEthernet/Lib/TCP.c | 632 --- .../Device/ClassDriver/RNDISEthernet/Lib/TCP.h | 260 -- .../Device/ClassDriver/RNDISEthernet/Lib/UDP.c | 84 - .../Device/ClassDriver/RNDISEthernet/Lib/UDP.h | 70 - .../ClassDriver/RNDISEthernet/Lib/Webserver.c | 203 - .../ClassDriver/RNDISEthernet/Lib/Webserver.h | 57 - .../ClassDriver/RNDISEthernet/RNDISEthernet.c | 179 - .../ClassDriver/RNDISEthernet/RNDISEthernet.h | 84 - .../ClassDriver/RNDISEthernet/RNDISEthernet.txt | 146 - .../Demos/Device/ClassDriver/RNDISEthernet/asf.xml | 84 - .../Device/ClassDriver/RNDISEthernet/doxyfile | 2395 ----------- .../Device/ClassDriver/RNDISEthernet/makefile | 44 - .../ClassDriver/VirtualSerial/Config/LUFAConfig.h | 126 - .../Device/ClassDriver/VirtualSerial/Descriptors.c | 245 -- .../Device/ClassDriver/VirtualSerial/Descriptors.h | 110 - .../VirtualSerial/LUFA VirtualSerial.inf | 66 - .../ClassDriver/VirtualSerial/VirtualSerial.c | 204 - .../ClassDriver/VirtualSerial/VirtualSerial.h | 77 - .../ClassDriver/VirtualSerial/VirtualSerial.txt | 76 - .../Demos/Device/ClassDriver/VirtualSerial/asf.xml | 62 - .../Device/ClassDriver/VirtualSerial/doxyfile | 2395 ----------- .../Device/ClassDriver/VirtualSerial/makefile | 43 - .../VirtualSerialMassStorage/Config/AppConfig.h | 50 - .../VirtualSerialMassStorage/Config/LUFAConfig.h | 126 - .../VirtualSerialMassStorage/Descriptors.c | 295 -- .../VirtualSerialMassStorage/Descriptors.h | 128 - .../LUFA VirtualSerialMassStorage.inf | 66 - .../Lib/DataflashManager.c | 534 --- .../Lib/DataflashManager.h | 89 - .../VirtualSerialMassStorage/Lib/SCSI.c | 349 -- .../VirtualSerialMassStorage/Lib/SCSI.h | 89 - .../VirtualSerialMassStorage.c | 259 -- .../VirtualSerialMassStorage.h | 83 - .../VirtualSerialMassStorage.txt | 93 - .../ClassDriver/VirtualSerialMassStorage/asf.xml | 70 - .../ClassDriver/VirtualSerialMassStorage/doxyfile | 2395 ----------- .../ClassDriver/VirtualSerialMassStorage/makefile | 43 - .../VirtualSerialMouse/Config/LUFAConfig.h | 126 - .../ClassDriver/VirtualSerialMouse/Descriptors.c | 323 -- .../ClassDriver/VirtualSerialMouse/Descriptors.h | 123 - .../VirtualSerialMouse/LUFA VirtualSerialMouse.inf | 66 - .../VirtualSerialMouse/VirtualSerialMouse.c | 284 -- .../VirtualSerialMouse/VirtualSerialMouse.h | 88 - .../VirtualSerialMouse/VirtualSerialMouse.txt | 79 - .../Device/ClassDriver/VirtualSerialMouse/asf.xml | 64 - .../Device/ClassDriver/VirtualSerialMouse/doxyfile | 2395 ----------- .../Device/ClassDriver/VirtualSerialMouse/makefile | 43 - lib/lufa/Demos/Device/ClassDriver/makefile | 46 - .../TestAndMeasurement/Config/LUFAConfig.h | 126 - .../Incomplete/TestAndMeasurement/Descriptors.c | 205 - .../Incomplete/TestAndMeasurement/Descriptors.h | 104 - .../TestAndMeasurement/TestAndMeasurement.c | 476 --- .../TestAndMeasurement/TestAndMeasurement.h | 150 - .../Device/Incomplete/TestAndMeasurement/makefile | 43 - .../Demos/Device/LowLevel/AudioInput/AudioInput.c | 259 -- .../Demos/Device/LowLevel/AudioInput/AudioInput.h | 82 - .../Device/LowLevel/AudioInput/AudioInput.txt | 87 - .../Device/LowLevel/AudioInput/Config/AppConfig.h | 51 - .../Device/LowLevel/AudioInput/Config/LUFAConfig.h | 93 - .../Demos/Device/LowLevel/AudioInput/Descriptors.c | 312 -- .../Demos/Device/LowLevel/AudioInput/Descriptors.h | 106 - lib/lufa/Demos/Device/LowLevel/AudioInput/asf.xml | 52 - lib/lufa/Demos/Device/LowLevel/AudioInput/doxyfile | 2395 ----------- lib/lufa/Demos/Device/LowLevel/AudioInput/makefile | 43 - .../Device/LowLevel/AudioOutput/AudioOutput.c | 293 -- .../Device/LowLevel/AudioOutput/AudioOutput.h | 74 - .../Device/LowLevel/AudioOutput/AudioOutput.txt | 92 - .../Device/LowLevel/AudioOutput/Config/AppConfig.h | 50 - .../LowLevel/AudioOutput/Config/LUFAConfig.h | 93 - .../Device/LowLevel/AudioOutput/Descriptors.c | 312 -- .../Device/LowLevel/AudioOutput/Descriptors.h | 106 - lib/lufa/Demos/Device/LowLevel/AudioOutput/asf.xml | 51 - .../Demos/Device/LowLevel/AudioOutput/doxyfile | 2395 ----------- .../Demos/Device/LowLevel/AudioOutput/makefile | 43 - .../Demos/Device/LowLevel/BulkVendor/BulkVendor.c | 136 - .../Demos/Device/LowLevel/BulkVendor/BulkVendor.h | 76 - .../Device/LowLevel/BulkVendor/BulkVendor.txt | 69 - .../Device/LowLevel/BulkVendor/Config/LUFAConfig.h | 126 - .../Demos/Device/LowLevel/BulkVendor/Descriptors.c | 194 - .../Demos/Device/LowLevel/BulkVendor/Descriptors.h | 96 - .../BulkVendor/HostTestApp/test_bulk_vendor.py | 67 - .../WindowsDriver/LUFA_Bulk_Vendor_Demo.inf | Bin 8150 -> 0 bytes .../BulkVendor/WindowsDriver/amd64/libusb0.dll | Bin 76384 -> 0 bytes .../BulkVendor/WindowsDriver/amd64/libusb0.sys | Bin 52832 -> 0 bytes .../BulkVendor/WindowsDriver/ia64/libusb0.dll | Bin 157792 -> 0 bytes .../BulkVendor/WindowsDriver/ia64/libusb0.sys | Bin 110176 -> 0 bytes .../BulkVendor/WindowsDriver/installer_x64.exe | Bin 25088 -> 0 bytes .../BulkVendor/WindowsDriver/installer_x86.exe | Bin 23552 -> 0 bytes .../license/libusb0/installer_license.txt | 851 ---- .../BulkVendor/WindowsDriver/x86/libusb0.sys | Bin 42592 -> 0 bytes .../BulkVendor/WindowsDriver/x86/libusb0_x86.dll | Bin 67680 -> 0 bytes lib/lufa/Demos/Device/LowLevel/BulkVendor/asf.xml | 61 - lib/lufa/Demos/Device/LowLevel/BulkVendor/doxyfile | 2397 ------------ lib/lufa/Demos/Device/LowLevel/BulkVendor/makefile | 43 - .../LowLevel/DualVirtualSerial/Config/LUFAConfig.h | 126 - .../LowLevel/DualVirtualSerial/Descriptors.c | 360 -- .../LowLevel/DualVirtualSerial/Descriptors.h | 135 - .../LowLevel/DualVirtualSerial/DualVirtualSerial.c | 299 -- .../LowLevel/DualVirtualSerial/DualVirtualSerial.h | 77 - .../DualVirtualSerial/DualVirtualSerial.txt | 89 - .../DualVirtualSerial/LUFA DualVirtualSerial.inf | 66 - .../Device/LowLevel/DualVirtualSerial/asf.xml | 62 - .../Device/LowLevel/DualVirtualSerial/doxyfile | 2395 ----------- .../Device/LowLevel/DualVirtualSerial/makefile | 43 - .../Device/LowLevel/GenericHID/Config/AppConfig.h | 48 - .../Device/LowLevel/GenericHID/Config/LUFAConfig.h | 126 - .../Demos/Device/LowLevel/GenericHID/Descriptors.c | 238 -- .../Demos/Device/LowLevel/GenericHID/Descriptors.h | 99 - .../Demos/Device/LowLevel/GenericHID/GenericHID.c | 253 -- .../Demos/Device/LowLevel/GenericHID/GenericHID.h | 81 - .../Device/LowLevel/GenericHID/GenericHID.txt | 79 - .../GenericHID/HostTestApp/test_generic_hid.py | 96 - lib/lufa/Demos/Device/LowLevel/GenericHID/asf.xml | 63 - lib/lufa/Demos/Device/LowLevel/GenericHID/doxyfile | 2396 ----------- lib/lufa/Demos/Device/LowLevel/GenericHID/makefile | 43 - .../Device/LowLevel/Joystick/Config/LUFAConfig.h | 126 - .../Demos/Device/LowLevel/Joystick/Descriptors.c | 240 -- .../Demos/Device/LowLevel/Joystick/Descriptors.h | 99 - lib/lufa/Demos/Device/LowLevel/Joystick/Joystick.c | 217 - lib/lufa/Demos/Device/LowLevel/Joystick/Joystick.h | 91 - .../Demos/Device/LowLevel/Joystick/Joystick.txt | 77 - lib/lufa/Demos/Device/LowLevel/Joystick/asf.xml | 62 - lib/lufa/Demos/Device/LowLevel/Joystick/doxyfile | 2395 ----------- lib/lufa/Demos/Device/LowLevel/Joystick/makefile | 43 - .../Device/LowLevel/Keyboard/Config/LUFAConfig.h | 126 - .../Demos/Device/LowLevel/Keyboard/Descriptors.c | 255 -- .../Demos/Device/LowLevel/Keyboard/Descriptors.h | 98 - lib/lufa/Demos/Device/LowLevel/Keyboard/Keyboard.c | 383 -- lib/lufa/Demos/Device/LowLevel/Keyboard/Keyboard.h | 85 - .../Demos/Device/LowLevel/Keyboard/Keyboard.txt | 76 - lib/lufa/Demos/Device/LowLevel/Keyboard/asf.xml | 62 - lib/lufa/Demos/Device/LowLevel/Keyboard/doxyfile | 2395 ----------- lib/lufa/Demos/Device/LowLevel/Keyboard/makefile | 43 - .../LowLevel/KeyboardMouse/Config/LUFAConfig.h | 126 - .../Device/LowLevel/KeyboardMouse/Descriptors.c | 346 -- .../Device/LowLevel/KeyboardMouse/Descriptors.h | 107 - .../Device/LowLevel/KeyboardMouse/KeyboardMouse.c | 321 -- .../Device/LowLevel/KeyboardMouse/KeyboardMouse.h | 77 - .../LowLevel/KeyboardMouse/KeyboardMouse.txt | 81 - .../Demos/Device/LowLevel/KeyboardMouse/asf.xml | 62 - .../Demos/Device/LowLevel/KeyboardMouse/doxyfile | 2395 ----------- .../Demos/Device/LowLevel/KeyboardMouse/makefile | 43 - .../Demos/Device/LowLevel/MIDI/Config/LUFAConfig.h | 126 - lib/lufa/Demos/Device/LowLevel/MIDI/Descriptors.c | 314 -- lib/lufa/Demos/Device/LowLevel/MIDI/Descriptors.h | 108 - lib/lufa/Demos/Device/LowLevel/MIDI/MIDI.c | 224 -- lib/lufa/Demos/Device/LowLevel/MIDI/MIDI.h | 76 - lib/lufa/Demos/Device/LowLevel/MIDI/MIDI.txt | 78 - lib/lufa/Demos/Device/LowLevel/MIDI/asf.xml | 62 - lib/lufa/Demos/Device/LowLevel/MIDI/doxyfile | 2395 ----------- lib/lufa/Demos/Device/LowLevel/MIDI/makefile | 43 - .../Device/LowLevel/MassStorage/Config/AppConfig.h | 50 - .../LowLevel/MassStorage/Config/LUFAConfig.h | 126 - .../Device/LowLevel/MassStorage/Descriptors.c | 194 - .../Device/LowLevel/MassStorage/Descriptors.h | 98 - .../LowLevel/MassStorage/Lib/DataflashManager.c | 530 --- .../LowLevel/MassStorage/Lib/DataflashManager.h | 86 - .../Demos/Device/LowLevel/MassStorage/Lib/SCSI.c | 344 -- .../Demos/Device/LowLevel/MassStorage/Lib/SCSI.h | 150 - .../Device/LowLevel/MassStorage/MassStorage.c | 332 -- .../Device/LowLevel/MassStorage/MassStorage.h | 92 - .../Device/LowLevel/MassStorage/MassStorage.txt | 100 - lib/lufa/Demos/Device/LowLevel/MassStorage/asf.xml | 67 - .../Demos/Device/LowLevel/MassStorage/doxyfile | 2395 ----------- .../Demos/Device/LowLevel/MassStorage/makefile | 43 - .../Device/LowLevel/Mouse/Config/LUFAConfig.h | 126 - lib/lufa/Demos/Device/LowLevel/Mouse/Descriptors.c | 240 -- lib/lufa/Demos/Device/LowLevel/Mouse/Descriptors.h | 93 - lib/lufa/Demos/Device/LowLevel/Mouse/Mouse.c | 311 -- lib/lufa/Demos/Device/LowLevel/Mouse/Mouse.h | 81 - lib/lufa/Demos/Device/LowLevel/Mouse/Mouse.txt | 76 - lib/lufa/Demos/Device/LowLevel/Mouse/asf.xml | 62 - lib/lufa/Demos/Device/LowLevel/Mouse/doxyfile | 2395 ----------- lib/lufa/Demos/Device/LowLevel/Mouse/makefile | 43 - .../LowLevel/RNDISEthernet/Config/AppConfig.h | 60 - .../LowLevel/RNDISEthernet/Config/LUFAConfig.h | 126 - .../Device/LowLevel/RNDISEthernet/Descriptors.c | 244 -- .../Device/LowLevel/RNDISEthernet/Descriptors.h | 112 - .../Device/LowLevel/RNDISEthernet/LUFA RNDIS.inf | 59 - .../Demos/Device/LowLevel/RNDISEthernet/Lib/ARP.c | 87 - .../Demos/Device/LowLevel/RNDISEthernet/Lib/ARP.h | 78 - .../Demos/Device/LowLevel/RNDISEthernet/Lib/DHCP.c | 129 - .../Demos/Device/LowLevel/RNDISEthernet/Lib/DHCP.h | 131 - .../Device/LowLevel/RNDISEthernet/Lib/Ethernet.c | 136 - .../Device/LowLevel/RNDISEthernet/Lib/Ethernet.h | 111 - .../LowLevel/RNDISEthernet/Lib/EthernetProtocols.h | 88 - .../Demos/Device/LowLevel/RNDISEthernet/Lib/ICMP.c | 81 - .../Demos/Device/LowLevel/RNDISEthernet/Lib/ICMP.h | 82 - .../Demos/Device/LowLevel/RNDISEthernet/Lib/IP.c | 113 - .../Demos/Device/LowLevel/RNDISEthernet/Lib/IP.h | 92 - .../LowLevel/RNDISEthernet/Lib/ProtocolDecoders.c | 276 -- .../LowLevel/RNDISEthernet/Lib/ProtocolDecoders.h | 60 - .../Device/LowLevel/RNDISEthernet/Lib/RNDIS.c | 394 -- .../Device/LowLevel/RNDISEthernet/Lib/RNDIS.h | 67 - .../Demos/Device/LowLevel/RNDISEthernet/Lib/TCP.c | 631 --- .../Demos/Device/LowLevel/RNDISEthernet/Lib/TCP.h | 260 -- .../Demos/Device/LowLevel/RNDISEthernet/Lib/UDP.c | 84 - .../Demos/Device/LowLevel/RNDISEthernet/Lib/UDP.h | 73 - .../Device/LowLevel/RNDISEthernet/Lib/Webserver.c | 203 - .../Device/LowLevel/RNDISEthernet/Lib/Webserver.h | 57 - .../Device/LowLevel/RNDISEthernet/RNDISEthernet.c | 294 -- .../Device/LowLevel/RNDISEthernet/RNDISEthernet.h | 87 - .../LowLevel/RNDISEthernet/RNDISEthernet.txt | 146 - .../Demos/Device/LowLevel/RNDISEthernet/asf.xml | 86 - .../Demos/Device/LowLevel/RNDISEthernet/doxyfile | 2395 ----------- .../Demos/Device/LowLevel/RNDISEthernet/makefile | 44 - .../LowLevel/VirtualSerial/Config/LUFAConfig.h | 126 - .../Device/LowLevel/VirtualSerial/Descriptors.c | 245 -- .../Device/LowLevel/VirtualSerial/Descriptors.h | 110 - .../LowLevel/VirtualSerial/LUFA VirtualSerial.inf | 66 - .../Device/LowLevel/VirtualSerial/VirtualSerial.c | 243 -- .../Device/LowLevel/VirtualSerial/VirtualSerial.h | 76 - .../LowLevel/VirtualSerial/VirtualSerial.txt | 76 - .../Demos/Device/LowLevel/VirtualSerial/asf.xml | 63 - .../Demos/Device/LowLevel/VirtualSerial/doxyfile | 2395 ----------- .../Demos/Device/LowLevel/VirtualSerial/makefile | 43 - lib/lufa/Demos/Device/LowLevel/makefile | 46 - lib/lufa/Demos/Device/makefile | 21 - .../MouseHostDevice/Config/LUFAConfig.h | 93 - .../ClassDriver/MouseHostDevice/Descriptors.c | 221 -- .../ClassDriver/MouseHostDevice/Descriptors.h | 93 - .../ClassDriver/MouseHostDevice/DeviceFunctions.c | 155 - .../ClassDriver/MouseHostDevice/DeviceFunctions.h | 64 - .../ClassDriver/MouseHostDevice/HostFunctions.c | 184 - .../ClassDriver/MouseHostDevice/HostFunctions.h | 56 - .../ClassDriver/MouseHostDevice/MouseHostDevice.c | 99 - .../ClassDriver/MouseHostDevice/MouseHostDevice.h | 78 - .../MouseHostDevice/MouseHostDevice.txt | 80 - .../DualRole/ClassDriver/MouseHostDevice/asf.xml | 56 - .../DualRole/ClassDriver/MouseHostDevice/doxyfile | 2395 ----------- .../DualRole/ClassDriver/MouseHostDevice/makefile | 43 - lib/lufa/Demos/DualRole/ClassDriver/makefile | 46 - lib/lufa/Demos/DualRole/makefile | 20 - .../AndroidAccessoryHost/AndroidAccessoryHost.c | 239 -- .../AndroidAccessoryHost/AndroidAccessoryHost.h | 79 - .../AndroidAccessoryHost/AndroidAccessoryHost.txt | 62 - .../AndroidHostApp/AndroidHostApp.zip | Bin 552813 -> 0 bytes .../AndroidAccessoryHost/Config/LUFAConfig.h | 93 - .../Host/ClassDriver/AndroidAccessoryHost/asf.xml | 49 - .../Host/ClassDriver/AndroidAccessoryHost/doxyfile | 2395 ----------- .../Host/ClassDriver/AndroidAccessoryHost/makefile | 43 - .../ClassDriver/AudioInputHost/AudioInputHost.c | 239 -- .../ClassDriver/AudioInputHost/AudioInputHost.h | 77 - .../ClassDriver/AudioInputHost/AudioInputHost.txt | 66 - .../ClassDriver/AudioInputHost/Config/LUFAConfig.h | 93 - .../Demos/Host/ClassDriver/AudioInputHost/asf.xml | 48 - .../Demos/Host/ClassDriver/AudioInputHost/doxyfile | 2395 ----------- .../Demos/Host/ClassDriver/AudioInputHost/makefile | 43 - .../ClassDriver/AudioOutputHost/AudioOutputHost.c | 243 -- .../ClassDriver/AudioOutputHost/AudioOutputHost.h | 87 - .../AudioOutputHost/AudioOutputHost.txt | 83 - .../ClassDriver/AudioOutputHost/Config/AppConfig.h | 51 - .../AudioOutputHost/Config/LUFAConfig.h | 93 - .../Demos/Host/ClassDriver/AudioOutputHost/asf.xml | 52 - .../Host/ClassDriver/AudioOutputHost/doxyfile | 2395 ----------- .../Host/ClassDriver/AudioOutputHost/makefile | 43 - .../JoystickHostWithParser/Config/LUFAConfig.h | 93 - .../JoystickHostWithParser.c | 286 -- .../JoystickHostWithParser.h | 95 - .../JoystickHostWithParser.txt | 71 - .../ClassDriver/JoystickHostWithParser/asf.xml | 48 - .../ClassDriver/JoystickHostWithParser/doxyfile | 2395 ----------- .../ClassDriver/JoystickHostWithParser/makefile | 43 - .../ClassDriver/KeyboardHost/Config/LUFAConfig.h | 93 - .../Host/ClassDriver/KeyboardHost/KeyboardHost.c | 244 -- .../Host/ClassDriver/KeyboardHost/KeyboardHost.h | 78 - .../Host/ClassDriver/KeyboardHost/KeyboardHost.txt | 71 - .../Demos/Host/ClassDriver/KeyboardHost/asf.xml | 48 - .../Demos/Host/ClassDriver/KeyboardHost/doxyfile | 2395 ----------- .../Demos/Host/ClassDriver/KeyboardHost/makefile | 43 - .../KeyboardHostWithParser/Config/LUFAConfig.h | 93 - .../KeyboardHostWithParser.c | 287 -- .../KeyboardHostWithParser.h | 83 - .../KeyboardHostWithParser.txt | 71 - .../ClassDriver/KeyboardHostWithParser/asf.xml | 48 - .../ClassDriver/KeyboardHostWithParser/doxyfile | 2395 ----------- .../ClassDriver/KeyboardHostWithParser/makefile | 43 - .../Host/ClassDriver/MIDIHost/Config/LUFAConfig.h | 93 - .../Demos/Host/ClassDriver/MIDIHost/MIDIHost.c | 272 -- .../Demos/Host/ClassDriver/MIDIHost/MIDIHost.h | 81 - .../Demos/Host/ClassDriver/MIDIHost/MIDIHost.txt | 60 - lib/lufa/Demos/Host/ClassDriver/MIDIHost/asf.xml | 50 - lib/lufa/Demos/Host/ClassDriver/MIDIHost/doxyfile | 2395 ----------- lib/lufa/Demos/Host/ClassDriver/MIDIHost/makefile | 43 - .../MassStorageHost/Config/LUFAConfig.h | 93 - .../ClassDriver/MassStorageHost/MassStorageHost.c | 311 -- .../ClassDriver/MassStorageHost/MassStorageHost.h | 82 - .../MassStorageHost/MassStorageHost.txt | 68 - .../Demos/Host/ClassDriver/MassStorageHost/asf.xml | 48 - .../Host/ClassDriver/MassStorageHost/doxyfile | 2395 ----------- .../Host/ClassDriver/MassStorageHost/makefile | 43 - .../Host/ClassDriver/MouseHost/Config/LUFAConfig.h | 93 - .../Demos/Host/ClassDriver/MouseHost/MouseHost.c | 227 -- .../Demos/Host/ClassDriver/MouseHost/MouseHost.h | 78 - .../Demos/Host/ClassDriver/MouseHost/MouseHost.txt | 74 - lib/lufa/Demos/Host/ClassDriver/MouseHost/asf.xml | 48 - lib/lufa/Demos/Host/ClassDriver/MouseHost/doxyfile | 2395 ----------- lib/lufa/Demos/Host/ClassDriver/MouseHost/makefile | 43 - .../MouseHostWithParser/Config/LUFAConfig.h | 93 - .../MouseHostWithParser/MouseHostWithParser.c | 300 -- .../MouseHostWithParser/MouseHostWithParser.h | 98 - .../MouseHostWithParser/MouseHostWithParser.txt | 71 - .../Host/ClassDriver/MouseHostWithParser/asf.xml | 48 - .../Host/ClassDriver/MouseHostWithParser/doxyfile | 2395 ----------- .../Host/ClassDriver/MouseHostWithParser/makefile | 43 - .../ClassDriver/PrinterHost/Config/LUFAConfig.h | 93 - .../Host/ClassDriver/PrinterHost/PrinterHost.c | 234 -- .../Host/ClassDriver/PrinterHost/PrinterHost.h | 81 - .../Host/ClassDriver/PrinterHost/PrinterHost.txt | 66 - .../Demos/Host/ClassDriver/PrinterHost/asf.xml | 48 - .../Demos/Host/ClassDriver/PrinterHost/doxyfile | 2395 ----------- .../Demos/Host/ClassDriver/PrinterHost/makefile | 43 - .../RNDISEthernetHost/Config/LUFAConfig.h | 93 - .../RNDISEthernetHost/RNDISEthernetHost.c | 253 -- .../RNDISEthernetHost/RNDISEthernetHost.h | 81 - .../RNDISEthernetHost/RNDISEthernetHost.txt | 63 - .../Host/ClassDriver/RNDISEthernetHost/asf.xml | 48 - .../Host/ClassDriver/RNDISEthernetHost/doxyfile | 2395 ----------- .../Host/ClassDriver/RNDISEthernetHost/makefile | 43 - .../ClassDriver/StillImageHost/Config/LUFAConfig.h | 93 - .../ClassDriver/StillImageHost/StillImageHost.c | 230 -- .../ClassDriver/StillImageHost/StillImageHost.h | 78 - .../ClassDriver/StillImageHost/StillImageHost.txt | 65 - .../Demos/Host/ClassDriver/StillImageHost/asf.xml | 48 - .../Demos/Host/ClassDriver/StillImageHost/doxyfile | 2395 ----------- .../Demos/Host/ClassDriver/StillImageHost/makefile | 43 - .../VirtualSerialHost/Config/LUFAConfig.h | 93 - .../VirtualSerialHost/VirtualSerialHost.c | 217 - .../VirtualSerialHost/VirtualSerialHost.h | 78 - .../VirtualSerialHost/VirtualSerialHost.txt | 66 - .../Host/ClassDriver/VirtualSerialHost/asf.xml | 48 - .../Host/ClassDriver/VirtualSerialHost/doxyfile | 2395 ----------- .../Host/ClassDriver/VirtualSerialHost/makefile | 43 - lib/lufa/Demos/Host/ClassDriver/makefile | 46 - .../AndroidAccessoryHost/AndroidAccessoryHost.c | 263 -- .../AndroidAccessoryHost/AndroidAccessoryHost.h | 86 - .../AndroidAccessoryHost/AndroidAccessoryHost.txt | 62 - .../AndroidAccessoryHost/Config/LUFAConfig.h | 93 - .../AndroidAccessoryHost/ConfigDescriptor.c | 164 - .../AndroidAccessoryHost/ConfigDescriptor.h | 67 - .../AndroidAccessoryHost/DeviceDescriptor.c | 67 - .../AndroidAccessoryHost/DeviceDescriptor.h | 60 - .../Lib/AndroidAccessoryCommands.c | 84 - .../Lib/AndroidAccessoryCommands.h | 52 - .../Host/LowLevel/AndroidAccessoryHost/asf.xml | 55 - .../Host/LowLevel/AndroidAccessoryHost/doxyfile | 2395 ----------- .../Host/LowLevel/AndroidAccessoryHost/makefile | 43 - .../Host/LowLevel/AudioInputHost/AudioInputHost.c | 250 -- .../Host/LowLevel/AudioInputHost/AudioInputHost.h | 79 - .../LowLevel/AudioInputHost/AudioInputHost.txt | 66 - .../LowLevel/AudioInputHost/Config/LUFAConfig.h | 93 - .../LowLevel/AudioInputHost/ConfigDescriptor.c | 220 -- .../LowLevel/AudioInputHost/ConfigDescriptor.h | 72 - .../Demos/Host/LowLevel/AudioInputHost/asf.xml | 50 - .../Demos/Host/LowLevel/AudioInputHost/doxyfile | 2395 ----------- .../Demos/Host/LowLevel/AudioInputHost/makefile | 43 - .../LowLevel/AudioOutputHost/AudioOutputHost.c | 250 -- .../LowLevel/AudioOutputHost/AudioOutputHost.h | 88 - .../LowLevel/AudioOutputHost/AudioOutputHost.txt | 83 - .../LowLevel/AudioOutputHost/Config/AppConfig.h | 51 - .../LowLevel/AudioOutputHost/Config/LUFAConfig.h | 93 - .../LowLevel/AudioOutputHost/ConfigDescriptor.c | 220 -- .../LowLevel/AudioOutputHost/ConfigDescriptor.h | 73 - .../Demos/Host/LowLevel/AudioOutputHost/asf.xml | 54 - .../Demos/Host/LowLevel/AudioOutputHost/doxyfile | 2395 ----------- .../Demos/Host/LowLevel/AudioOutputHost/makefile | 43 - .../LowLevel/GenericHIDHost/Config/LUFAConfig.h | 93 - .../LowLevel/GenericHIDHost/ConfigDescriptor.c | 183 - .../LowLevel/GenericHIDHost/ConfigDescriptor.h | 69 - .../Host/LowLevel/GenericHIDHost/GenericHIDHost.c | 269 -- .../Host/LowLevel/GenericHIDHost/GenericHIDHost.h | 93 - .../LowLevel/GenericHIDHost/GenericHIDHost.txt | 64 - .../Demos/Host/LowLevel/GenericHIDHost/asf.xml | 50 - .../Demos/Host/LowLevel/GenericHIDHost/doxyfile | 2395 ----------- .../Demos/Host/LowLevel/GenericHIDHost/makefile | 43 - .../JoystickHostWithParser/Config/LUFAConfig.h | 93 - .../JoystickHostWithParser/ConfigDescriptor.c | 187 - .../JoystickHostWithParser/ConfigDescriptor.h | 69 - .../LowLevel/JoystickHostWithParser/HIDReport.c | 111 - .../LowLevel/JoystickHostWithParser/HIDReport.h | 79 - .../JoystickHostWithParser.c | 273 -- .../JoystickHostWithParser.h | 83 - .../JoystickHostWithParser.txt | 71 - .../Host/LowLevel/JoystickHostWithParser/asf.xml | 52 - .../Host/LowLevel/JoystickHostWithParser/doxyfile | 2395 ----------- .../Host/LowLevel/JoystickHostWithParser/makefile | 43 - .../Host/LowLevel/KeyboardHost/Config/LUFAConfig.h | 93 - .../Host/LowLevel/KeyboardHost/ConfigDescriptor.c | 155 - .../Host/LowLevel/KeyboardHost/ConfigDescriptor.h | 66 - .../Host/LowLevel/KeyboardHost/KeyboardHost.c | 264 -- .../Host/LowLevel/KeyboardHost/KeyboardHost.h | 80 - .../Host/LowLevel/KeyboardHost/KeyboardHost.txt | 73 - lib/lufa/Demos/Host/LowLevel/KeyboardHost/asf.xml | 50 - lib/lufa/Demos/Host/LowLevel/KeyboardHost/doxyfile | 2395 ----------- lib/lufa/Demos/Host/LowLevel/KeyboardHost/makefile | 43 - .../KeyboardHostWithParser/Config/LUFAConfig.h | 93 - .../KeyboardHostWithParser/ConfigDescriptor.c | 189 - .../KeyboardHostWithParser/ConfigDescriptor.h | 67 - .../LowLevel/KeyboardHostWithParser/HIDReport.c | 90 - .../LowLevel/KeyboardHostWithParser/HIDReport.h | 67 - .../KeyboardHostWithParser.c | 285 -- .../KeyboardHostWithParser.h | 78 - .../KeyboardHostWithParser.txt | 71 - .../Host/LowLevel/KeyboardHostWithParser/asf.xml | 52 - .../Host/LowLevel/KeyboardHostWithParser/doxyfile | 2395 ----------- .../Host/LowLevel/KeyboardHostWithParser/makefile | 43 - .../Host/LowLevel/MIDIHost/Config/LUFAConfig.h | 93 - .../Host/LowLevel/MIDIHost/ConfigDescriptor.c | 173 - .../Host/LowLevel/MIDIHost/ConfigDescriptor.h | 69 - lib/lufa/Demos/Host/LowLevel/MIDIHost/MIDIHost.c | 266 -- lib/lufa/Demos/Host/LowLevel/MIDIHost/MIDIHost.h | 82 - lib/lufa/Demos/Host/LowLevel/MIDIHost/MIDIHost.txt | 60 - lib/lufa/Demos/Host/LowLevel/MIDIHost/asf.xml | 52 - lib/lufa/Demos/Host/LowLevel/MIDIHost/doxyfile | 2395 ----------- lib/lufa/Demos/Host/LowLevel/MIDIHost/makefile | 43 - .../LowLevel/MassStorageHost/Config/LUFAConfig.h | 93 - .../LowLevel/MassStorageHost/ConfigDescriptor.c | 173 - .../LowLevel/MassStorageHost/ConfigDescriptor.h | 78 - .../MassStorageHost/Lib/MassStoreCommands.c | 635 --- .../MassStorageHost/Lib/MassStoreCommands.h | 86 - .../LowLevel/MassStorageHost/MassStorageHost.c | 373 -- .../LowLevel/MassStorageHost/MassStorageHost.h | 91 - .../LowLevel/MassStorageHost/MassStorageHost.txt | 68 - .../Demos/Host/LowLevel/MassStorageHost/asf.xml | 53 - .../Demos/Host/LowLevel/MassStorageHost/doxyfile | 2395 ----------- .../Demos/Host/LowLevel/MassStorageHost/makefile | 43 - .../Host/LowLevel/MouseHost/Config/LUFAConfig.h | 93 - .../Host/LowLevel/MouseHost/ConfigDescriptor.c | 159 - .../Host/LowLevel/MouseHost/ConfigDescriptor.h | 66 - lib/lufa/Demos/Host/LowLevel/MouseHost/MouseHost.c | 250 -- lib/lufa/Demos/Host/LowLevel/MouseHost/MouseHost.h | 82 - .../Demos/Host/LowLevel/MouseHost/MouseHost.txt | 74 - lib/lufa/Demos/Host/LowLevel/MouseHost/asf.xml | 50 - lib/lufa/Demos/Host/LowLevel/MouseHost/doxyfile | 2395 ----------- lib/lufa/Demos/Host/LowLevel/MouseHost/makefile | 43 - .../MouseHostWithParser/Config/LUFAConfig.h | 93 - .../MouseHostWithParser/ConfigDescriptor.c | 187 - .../MouseHostWithParser/ConfigDescriptor.h | 67 - .../Host/LowLevel/MouseHostWithParser/HIDReport.c | 111 - .../Host/LowLevel/MouseHostWithParser/HIDReport.h | 82 - .../MouseHostWithParser/MouseHostWithParser.c | 289 -- .../MouseHostWithParser/MouseHostWithParser.h | 83 - .../MouseHostWithParser/MouseHostWithParser.txt | 71 - .../Host/LowLevel/MouseHostWithParser/asf.xml | 52 - .../Host/LowLevel/MouseHostWithParser/doxyfile | 2395 ----------- .../Host/LowLevel/MouseHostWithParser/makefile | 43 - .../Host/LowLevel/PrinterHost/Config/LUFAConfig.h | 93 - .../Host/LowLevel/PrinterHost/ConfigDescriptor.c | 177 - .../Host/LowLevel/PrinterHost/ConfigDescriptor.h | 76 - .../LowLevel/PrinterHost/Lib/PrinterCommands.c | 162 - .../LowLevel/PrinterHost/Lib/PrinterCommands.h | 56 - .../Demos/Host/LowLevel/PrinterHost/PrinterHost.c | 226 -- .../Demos/Host/LowLevel/PrinterHost/PrinterHost.h | 88 - .../Host/LowLevel/PrinterHost/PrinterHost.txt | 66 - lib/lufa/Demos/Host/LowLevel/PrinterHost/asf.xml | 53 - lib/lufa/Demos/Host/LowLevel/PrinterHost/doxyfile | 2395 ----------- lib/lufa/Demos/Host/LowLevel/PrinterHost/makefile | 43 - .../LowLevel/RNDISEthernetHost/Config/LUFAConfig.h | 93 - .../LowLevel/RNDISEthernetHost/ConfigDescriptor.c | 235 -- .../LowLevel/RNDISEthernetHost/ConfigDescriptor.h | 73 - .../LowLevel/RNDISEthernetHost/Lib/RNDISCommands.c | 311 -- .../LowLevel/RNDISEthernetHost/Lib/RNDISCommands.h | 70 - .../LowLevel/RNDISEthernetHost/RNDISEthernetHost.c | 249 -- .../LowLevel/RNDISEthernetHost/RNDISEthernetHost.h | 85 - .../Host/LowLevel/RNDISEthernetHost/RNDISHost.txt | 63 - .../Demos/Host/LowLevel/RNDISEthernetHost/asf.xml | 53 - .../Demos/Host/LowLevel/RNDISEthernetHost/doxyfile | 2395 ----------- .../Demos/Host/LowLevel/RNDISEthernetHost/makefile | 43 - .../LowLevel/StillImageHost/Config/LUFAConfig.h | 93 - .../LowLevel/StillImageHost/ConfigDescriptor.c | 190 - .../LowLevel/StillImageHost/ConfigDescriptor.h | 72 - .../Host/LowLevel/StillImageHost/Lib/PIMACodes.h | 45 - .../StillImageHost/Lib/StillImageCommands.c | 268 -- .../StillImageHost/Lib/StillImageCommands.h | 65 - .../Host/LowLevel/StillImageHost/StillImageHost.c | 365 -- .../Host/LowLevel/StillImageHost/StillImageHost.h | 89 - .../LowLevel/StillImageHost/StillImageHost.txt | 65 - .../Demos/Host/LowLevel/StillImageHost/asf.xml | 54 - .../Demos/Host/LowLevel/StillImageHost/doxyfile | 2395 ----------- .../Demos/Host/LowLevel/StillImageHost/makefile | 43 - .../LowLevel/VirtualSerialHost/Config/LUFAConfig.h | 93 - .../LowLevel/VirtualSerialHost/ConfigDescriptor.c | 234 -- .../LowLevel/VirtualSerialHost/ConfigDescriptor.h | 73 - .../LowLevel/VirtualSerialHost/VirtualSerialHost.c | 239 -- .../LowLevel/VirtualSerialHost/VirtualSerialHost.h | 80 - .../VirtualSerialHost/VirtualSerialHost.txt | 66 - .../Demos/Host/LowLevel/VirtualSerialHost/asf.xml | 50 - .../Demos/Host/LowLevel/VirtualSerialHost/doxyfile | 2395 ----------- .../Demos/Host/LowLevel/VirtualSerialHost/makefile | 43 - lib/lufa/Demos/Host/LowLevel/makefile | 46 - lib/lufa/Demos/Host/makefile | 21 - lib/lufa/Demos/makefile | 22 - lib/lufa/LUFA/Build/DMBS/.gitignore | 9 - .../DMBS/HID_EEPROM_Loader/HID_EEPROM_Loader.c | 39 - .../Build/DMBS/DMBS/HID_EEPROM_Loader/makefile | 35 - lib/lufa/LUFA/Build/DMBS/DMBS/License.txt | 32 - lib/lufa/LUFA/Build/DMBS/DMBS/ModulesOverview.md | 38 - .../LUFA/Build/DMBS/DMBS/WritingYourOwnModules.md | 95 - lib/lufa/LUFA/Build/DMBS/DMBS/atprogram.md | 119 - lib/lufa/LUFA/Build/DMBS/DMBS/atprogram.mk | 68 - lib/lufa/LUFA/Build/DMBS/DMBS/avrdude.md | 124 - lib/lufa/LUFA/Build/DMBS/DMBS/avrdude.mk | 52 - lib/lufa/LUFA/Build/DMBS/DMBS/core.md | 136 - lib/lufa/LUFA/Build/DMBS/DMBS/core.mk | 147 - lib/lufa/LUFA/Build/DMBS/DMBS/cppcheck.md | 134 - lib/lufa/LUFA/Build/DMBS/DMBS/cppcheck.mk | 66 - lib/lufa/LUFA/Build/DMBS/DMBS/dfu.md | 122 - lib/lufa/LUFA/Build/DMBS/DMBS/dfu.mk | 62 - lib/lufa/LUFA/Build/DMBS/DMBS/doxygen.md | 118 - lib/lufa/LUFA/Build/DMBS/DMBS/doxygen.mk | 62 - lib/lufa/LUFA/Build/DMBS/DMBS/gcc.md | 211 - lib/lufa/LUFA/Build/DMBS/DMBS/gcc.mk | 273 -- lib/lufa/LUFA/Build/DMBS/DMBS/hid.md | 129 - lib/lufa/LUFA/Build/DMBS/DMBS/hid.mk | 57 - lib/lufa/LUFA/Build/DMBS/Readme.md | 123 - lib/lufa/LUFA/Build/DMBS/Template/Template.c | 12 - lib/lufa/LUFA/Build/DMBS/Template/makefile | 32 - lib/lufa/LUFA/Build/LUFA/lufa-gcc.mk | 43 - lib/lufa/LUFA/Build/LUFA/lufa-sources.mk | 95 - lib/lufa/LUFA/Build/lufa_atprogram.mk | 10 - lib/lufa/LUFA/Build/lufa_avrdude.mk | 10 - lib/lufa/LUFA/Build/lufa_build.mk | 12 - lib/lufa/LUFA/Build/lufa_core.mk | 10 - lib/lufa/LUFA/Build/lufa_cppcheck.mk | 10 - lib/lufa/LUFA/Build/lufa_dfu.mk | 10 - lib/lufa/LUFA/Build/lufa_doxygen.mk | 10 - lib/lufa/LUFA/Build/lufa_hid.mk | 10 - lib/lufa/LUFA/Build/lufa_sources.mk | 10 - .../CodeTemplates/DeviceTemplate/Descriptors.c | 180 - .../CodeTemplates/DeviceTemplate/Descriptors.h | 59 - .../DeviceTemplate/DeviceApplication.c | 106 - .../DeviceTemplate/DeviceApplication.h | 53 - lib/lufa/LUFA/CodeTemplates/DeviceTemplate/asf.xml | 55 - lib/lufa/LUFA/CodeTemplates/DriverStubs/Board.h | 82 - lib/lufa/LUFA/CodeTemplates/DriverStubs/Buttons.h | 90 - .../LUFA/CodeTemplates/DriverStubs/Dataflash.h | 223 -- lib/lufa/LUFA/CodeTemplates/DriverStubs/Joystick.h | 102 - lib/lufa/LUFA/CodeTemplates/DriverStubs/LEDs.h | 130 - .../CodeTemplates/HostTemplate/HostApplication.c | 133 - .../CodeTemplates/HostTemplate/HostApplication.h | 56 - lib/lufa/LUFA/CodeTemplates/HostTemplate/asf.xml | 41 - lib/lufa/LUFA/CodeTemplates/LUFAConfig.h | 167 - .../LUFA/CodeTemplates/WindowsINF/LUFA CDC-ACM.inf | 64 - .../LUFA/CodeTemplates/WindowsINF/LUFA RNDIS.inf | 59 - lib/lufa/LUFA/CodeTemplates/makefile_template | 43 - lib/lufa/LUFA/Common/ArchitectureSpecific.h | 185 - lib/lufa/LUFA/Common/Architectures.h | 84 - lib/lufa/LUFA/Common/Attributes.h | 150 - lib/lufa/LUFA/Common/BoardTypes.h | 263 -- lib/lufa/LUFA/Common/Common.h | 393 -- lib/lufa/LUFA/Common/CompilerSpecific.h | 97 - lib/lufa/LUFA/Common/Endianness.h | 493 --- lib/lufa/LUFA/DoxygenPages/BuildSystem.txt | 281 -- .../DoxygenPages/BuildingLinkableLibraries.txt | 23 - lib/lufa/LUFA/DoxygenPages/ChangeLog.txt | 1653 -------- lib/lufa/LUFA/DoxygenPages/CompileTimeTokens.txt | 223 -- lib/lufa/LUFA/DoxygenPages/CompilingApps.txt | 46 - lib/lufa/LUFA/DoxygenPages/ConfiguringApps.txt | 157 - lib/lufa/LUFA/DoxygenPages/DevelopingWithLUFA.txt | 23 - lib/lufa/LUFA/DoxygenPages/DeviceSupport.txt | 424 -- lib/lufa/LUFA/DoxygenPages/DirectorySummaries.txt | 80 - lib/lufa/LUFA/DoxygenPages/Donating.txt | 25 - lib/lufa/LUFA/DoxygenPages/FutureChanges.txt | 47 - lib/lufa/LUFA/DoxygenPages/GettingStarted.txt | 37 - lib/lufa/LUFA/DoxygenPages/Groups.txt | 38 - lib/lufa/LUFA/DoxygenPages/Images/Author.jpg | Bin 28410 -> 0 bytes lib/lufa/LUFA/DoxygenPages/Images/LUFA.png | Bin 10296 -> 0 bytes lib/lufa/LUFA/DoxygenPages/Images/LUFA_thumb.png | Bin 3729 -> 0 bytes lib/lufa/LUFA/DoxygenPages/KnownIssues.txt | 234 -- lib/lufa/LUFA/DoxygenPages/LUFAPoweredProjects.txt | 226 -- lib/lufa/LUFA/DoxygenPages/LibraryResources.txt | 33 - lib/lufa/LUFA/DoxygenPages/LicenseInfo.txt | 43 - lib/lufa/LUFA/DoxygenPages/MainPage.txt | 52 - .../LUFA/DoxygenPages/MigrationInformation.txt | 717 ---- lib/lufa/LUFA/DoxygenPages/OSDrivers.txt | 111 - lib/lufa/LUFA/DoxygenPages/ProgrammingApps.txt | 27 - .../LUFA/DoxygenPages/SoftwareBootloaderJump.txt | 71 - lib/lufa/LUFA/DoxygenPages/Style/Footer.htm | 35 - lib/lufa/LUFA/DoxygenPages/Style/Style.css | 93 - lib/lufa/LUFA/DoxygenPages/VIDAndPIDValues.txt | 199 - lib/lufa/LUFA/DoxygenPages/WritingBoardDrivers.txt | 47 - .../LUFA/Drivers/Board/AVR8/ADAFRUITU4/Board.h | 78 - lib/lufa/LUFA/Drivers/Board/AVR8/ADAFRUITU4/LEDs.h | 135 - .../LUFA/Drivers/Board/AVR8/ATAVRUSBRF01/Board.h | 82 - .../LUFA/Drivers/Board/AVR8/ATAVRUSBRF01/Buttons.h | 103 - .../LUFA/Drivers/Board/AVR8/ATAVRUSBRF01/LEDs.h | 139 - lib/lufa/LUFA/Drivers/Board/AVR8/BENITO/Board.h | 82 - lib/lufa/LUFA/Drivers/Board/AVR8/BENITO/Buttons.h | 103 - lib/lufa/LUFA/Drivers/Board/AVR8/BENITO/LEDs.h | 139 - lib/lufa/LUFA/Drivers/Board/AVR8/BIGMULTIO/Board.h | 78 - lib/lufa/LUFA/Drivers/Board/AVR8/BIGMULTIO/LEDs.h | 161 - lib/lufa/LUFA/Drivers/Board/AVR8/BLACKCAT/Board.h | 78 - lib/lufa/LUFA/Drivers/Board/AVR8/BLACKCAT/LEDs.h | 139 - lib/lufa/LUFA/Drivers/Board/AVR8/BUI/Board.h | 78 - lib/lufa/LUFA/Drivers/Board/AVR8/BUI/LEDs.h | 143 - lib/lufa/LUFA/Drivers/Board/AVR8/BUMBLEB/Board.h | 86 - lib/lufa/LUFA/Drivers/Board/AVR8/BUMBLEB/Buttons.h | 105 - .../LUFA/Drivers/Board/AVR8/BUMBLEB/Joystick.h | 123 - lib/lufa/LUFA/Drivers/Board/AVR8/BUMBLEB/LEDs.h | 149 - lib/lufa/LUFA/Drivers/Board/AVR8/CULV3/Board.h | 82 - lib/lufa/LUFA/Drivers/Board/AVR8/CULV3/Buttons.h | 103 - lib/lufa/LUFA/Drivers/Board/AVR8/CULV3/LEDs.h | 135 - lib/lufa/LUFA/Drivers/Board/AVR8/DUCE/Board.h | 78 - lib/lufa/LUFA/Drivers/Board/AVR8/DUCE/LEDs.h | 147 - lib/lufa/LUFA/Drivers/Board/AVR8/EVK527/Board.h | 90 - lib/lufa/LUFA/Drivers/Board/AVR8/EVK527/Buttons.h | 103 - .../LUFA/Drivers/Board/AVR8/EVK527/Dataflash.h | 222 -- lib/lufa/LUFA/Drivers/Board/AVR8/EVK527/Joystick.h | 130 - lib/lufa/LUFA/Drivers/Board/AVR8/EVK527/LEDs.h | 143 - lib/lufa/LUFA/Drivers/Board/AVR8/JMDBU2/Board.h | 82 - lib/lufa/LUFA/Drivers/Board/AVR8/JMDBU2/Buttons.h | 103 - lib/lufa/LUFA/Drivers/Board/AVR8/JMDBU2/LEDs.h | 135 - lib/lufa/LUFA/Drivers/Board/AVR8/LEONARDO/Board.h | 78 - lib/lufa/LUFA/Drivers/Board/AVR8/LEONARDO/LEDs.h | 169 - lib/lufa/LUFA/Drivers/Board/AVR8/MAXIMUS/Board.h | 78 - lib/lufa/LUFA/Drivers/Board/AVR8/MAXIMUS/LEDs.h | 139 - lib/lufa/LUFA/Drivers/Board/AVR8/MICRO/Board.h | 78 - lib/lufa/LUFA/Drivers/Board/AVR8/MICRO/LEDs.h | 169 - .../LUFA/Drivers/Board/AVR8/MICROPENDOUS/Board.h | 149 - .../LUFA/Drivers/Board/AVR8/MICROPENDOUS/Buttons.h | 205 - .../LUFA/Drivers/Board/AVR8/MICROPENDOUS/LEDs.h | 174 - .../LUFA/Drivers/Board/AVR8/MICROSIN162/Board.h | 82 - .../LUFA/Drivers/Board/AVR8/MICROSIN162/Buttons.h | 103 - .../LUFA/Drivers/Board/AVR8/MICROSIN162/LEDs.h | 135 - lib/lufa/LUFA/Drivers/Board/AVR8/MINIMUS/Board.h | 82 - lib/lufa/LUFA/Drivers/Board/AVR8/MINIMUS/Buttons.h | 103 - lib/lufa/LUFA/Drivers/Board/AVR8/MINIMUS/LEDs.h | 139 - lib/lufa/LUFA/Drivers/Board/AVR8/MULTIO/Board.h | 78 - lib/lufa/LUFA/Drivers/Board/AVR8/MULTIO/LEDs.h | 161 - lib/lufa/LUFA/Drivers/Board/AVR8/OLIMEX162/Board.h | 82 - .../LUFA/Drivers/Board/AVR8/OLIMEX162/Buttons.h | 103 - lib/lufa/LUFA/Drivers/Board/AVR8/OLIMEX162/LEDs.h | 135 - .../LUFA/Drivers/Board/AVR8/OLIMEX32U4/Board.h | 82 - .../LUFA/Drivers/Board/AVR8/OLIMEX32U4/Buttons.h | 103 - lib/lufa/LUFA/Drivers/Board/AVR8/OLIMEX32U4/LEDs.h | 179 - .../LUFA/Drivers/Board/AVR8/OLIMEXISPMK2/Board.h | 82 - .../LUFA/Drivers/Board/AVR8/OLIMEXISPMK2/Buttons.h | 103 - .../LUFA/Drivers/Board/AVR8/OLIMEXISPMK2/LEDs.h | 143 - .../LUFA/Drivers/Board/AVR8/OLIMEXT32U4/Board.h | 82 - .../LUFA/Drivers/Board/AVR8/OLIMEXT32U4/Buttons.h | 103 - .../LUFA/Drivers/Board/AVR8/OLIMEXT32U4/LEDs.h | 169 - .../LUFA/Drivers/Board/AVR8/POLOLUMICRO/Board.h | 79 - .../LUFA/Drivers/Board/AVR8/POLOLUMICRO/LEDs.h | 154 - lib/lufa/LUFA/Drivers/Board/AVR8/QMK/Board.h | 65 - lib/lufa/LUFA/Drivers/Board/AVR8/QMK/LEDs.h | 204 - .../LUFA/Drivers/Board/AVR8/RZUSBSTICK/Board.h | 78 - lib/lufa/LUFA/Drivers/Board/AVR8/RZUSBSTICK/LEDs.h | 175 - .../LUFA/Drivers/Board/AVR8/SPARKFUN8U2/Board.h | 78 - .../LUFA/Drivers/Board/AVR8/SPARKFUN8U2/LEDs.h | 135 - .../LUFA/Drivers/Board/AVR8/STANGE_ISP/Board.h | 82 - .../LUFA/Drivers/Board/AVR8/STANGE_ISP/Buttons.h | 103 - lib/lufa/LUFA/Drivers/Board/AVR8/STANGE_ISP/LEDs.h | 138 - lib/lufa/LUFA/Drivers/Board/AVR8/STK525/Board.h | 90 - lib/lufa/LUFA/Drivers/Board/AVR8/STK525/Buttons.h | 103 - .../LUFA/Drivers/Board/AVR8/STK525/Dataflash.h | 222 -- lib/lufa/LUFA/Drivers/Board/AVR8/STK525/Joystick.h | 130 - lib/lufa/LUFA/Drivers/Board/AVR8/STK525/LEDs.h | 147 - lib/lufa/LUFA/Drivers/Board/AVR8/STK526/Board.h | 90 - lib/lufa/LUFA/Drivers/Board/AVR8/STK526/Buttons.h | 103 - .../LUFA/Drivers/Board/AVR8/STK526/Dataflash.h | 222 -- lib/lufa/LUFA/Drivers/Board/AVR8/STK526/Joystick.h | 123 - lib/lufa/LUFA/Drivers/Board/AVR8/STK526/LEDs.h | 147 - lib/lufa/LUFA/Drivers/Board/AVR8/TEENSY/Board.h | 85 - lib/lufa/LUFA/Drivers/Board/AVR8/TEENSY/LEDs.h | 176 - lib/lufa/LUFA/Drivers/Board/AVR8/TUL/Board.h | 82 - lib/lufa/LUFA/Drivers/Board/AVR8/TUL/Buttons.h | 103 - lib/lufa/LUFA/Drivers/Board/AVR8/TUL/LEDs.h | 135 - lib/lufa/LUFA/Drivers/Board/AVR8/U2S/Board.h | 82 - lib/lufa/LUFA/Drivers/Board/AVR8/U2S/Buttons.h | 103 - lib/lufa/LUFA/Drivers/Board/AVR8/U2S/LEDs.h | 135 - lib/lufa/LUFA/Drivers/Board/AVR8/UDIP/Board.h | 82 - lib/lufa/LUFA/Drivers/Board/AVR8/UDIP/Buttons.h | 103 - lib/lufa/LUFA/Drivers/Board/AVR8/UDIP/LEDs.h | 163 - lib/lufa/LUFA/Drivers/Board/AVR8/UNO/Board.h | 84 - lib/lufa/LUFA/Drivers/Board/AVR8/UNO/LEDs.h | 145 - lib/lufa/LUFA/Drivers/Board/AVR8/USB2AX/Board.h | 105 - lib/lufa/LUFA/Drivers/Board/AVR8/USB2AX/Buttons.h | 120 - lib/lufa/LUFA/Drivers/Board/AVR8/USB2AX/LEDs.h | 218 -- lib/lufa/LUFA/Drivers/Board/AVR8/USBFOO/Board.h | 82 - lib/lufa/LUFA/Drivers/Board/AVR8/USBFOO/Buttons.h | 103 - lib/lufa/LUFA/Drivers/Board/AVR8/USBFOO/LEDs.h | 135 - lib/lufa/LUFA/Drivers/Board/AVR8/USBKEY/Board.h | 90 - lib/lufa/LUFA/Drivers/Board/AVR8/USBKEY/Buttons.h | 103 - .../LUFA/Drivers/Board/AVR8/USBKEY/Dataflash.h | 237 -- lib/lufa/LUFA/Drivers/Board/AVR8/USBKEY/Joystick.h | 130 - lib/lufa/LUFA/Drivers/Board/AVR8/USBKEY/LEDs.h | 147 - .../LUFA/Drivers/Board/AVR8/USBTINYMKII/Board.h | 82 - .../LUFA/Drivers/Board/AVR8/USBTINYMKII/Buttons.h | 103 - .../LUFA/Drivers/Board/AVR8/USBTINYMKII/LEDs.h | 143 - lib/lufa/LUFA/Drivers/Board/AVR8/XPLAIN/Board.h | 89 - .../LUFA/Drivers/Board/AVR8/XPLAIN/Dataflash.h | 245 -- lib/lufa/LUFA/Drivers/Board/AVR8/XPLAIN/LEDs.h | 142 - .../LUFA/Drivers/Board/AVR8/XPLAINED_MINI/Board.h | 78 - .../LUFA/Drivers/Board/AVR8/XPLAINED_MINI/LEDs.h | 135 - lib/lufa/LUFA/Drivers/Board/AVR8/YUN/Board.h | 78 - lib/lufa/LUFA/Drivers/Board/AVR8/YUN/LEDs.h | 169 - lib/lufa/LUFA/Drivers/Board/Board.h | 173 - lib/lufa/LUFA/Drivers/Board/Buttons.h | 189 - lib/lufa/LUFA/Drivers/Board/Dataflash.h | 264 -- lib/lufa/LUFA/Drivers/Board/Joystick.h | 152 - lib/lufa/LUFA/Drivers/Board/LEDs.h | 304 -- lib/lufa/LUFA/Drivers/Board/Temperature.c | 66 - lib/lufa/LUFA/Drivers/Board/Temperature.h | 147 - lib/lufa/LUFA/Drivers/Board/UC3/EVK1100/Board.h | 86 - lib/lufa/LUFA/Drivers/Board/UC3/EVK1100/Buttons.h | 117 - lib/lufa/LUFA/Drivers/Board/UC3/EVK1100/Joystick.h | 122 - lib/lufa/LUFA/Drivers/Board/UC3/EVK1100/LEDs.h | 173 - lib/lufa/LUFA/Drivers/Board/UC3/EVK1101/Board.h | 86 - lib/lufa/LUFA/Drivers/Board/UC3/EVK1101/Buttons.h | 113 - lib/lufa/LUFA/Drivers/Board/UC3/EVK1101/Joystick.h | 131 - lib/lufa/LUFA/Drivers/Board/UC3/EVK1101/LEDs.h | 156 - lib/lufa/LUFA/Drivers/Board/UC3/EVK1104/Board.h | 82 - lib/lufa/LUFA/Drivers/Board/UC3/EVK1104/Buttons.h | 109 - lib/lufa/LUFA/Drivers/Board/UC3/EVK1104/LEDs.h | 174 - .../LUFA/Drivers/Board/UC3/UC3A3_XPLAINED/Board.h | 82 - .../Drivers/Board/UC3/UC3A3_XPLAINED/Buttons.h | 109 - .../LUFA/Drivers/Board/UC3/UC3A3_XPLAINED/LEDs.h | 182 - .../LUFA/Drivers/Board/XMEGA/A3BU_XPLAINED/Board.h | 86 - .../Drivers/Board/XMEGA/A3BU_XPLAINED/Buttons.h | 119 - .../Drivers/Board/XMEGA/A3BU_XPLAINED/Dataflash.h | 228 -- .../LUFA/Drivers/Board/XMEGA/A3BU_XPLAINED/LEDs.h | 181 - .../LUFA/Drivers/Board/XMEGA/B1_XPLAINED/Board.h | 86 - .../LUFA/Drivers/Board/XMEGA/B1_XPLAINED/Buttons.h | 119 - .../Drivers/Board/XMEGA/B1_XPLAINED/Dataflash.h | 229 -- .../LUFA/Drivers/Board/XMEGA/B1_XPLAINED/LEDs.h | 183 - .../LUFA/Drivers/Board/XMEGA/C3_XPLAINED/Board.h | 83 - .../LUFA/Drivers/Board/XMEGA/C3_XPLAINED/Buttons.h | 109 - .../LUFA/Drivers/Board/XMEGA/C3_XPLAINED/LEDs.h | 181 - lib/lufa/LUFA/Drivers/Misc/AT45DB321C.h | 100 - lib/lufa/LUFA/Drivers/Misc/AT45DB642D.h | 116 - lib/lufa/LUFA/Drivers/Misc/RingBuffer.h | 308 -- lib/lufa/LUFA/Drivers/Misc/TerminalCodes.h | 231 -- lib/lufa/LUFA/Drivers/Peripheral/ADC.h | 75 - lib/lufa/LUFA/Drivers/Peripheral/AVR8/ADC_AVR8.h | 446 --- lib/lufa/LUFA/Drivers/Peripheral/AVR8/SPI_AVR8.h | 258 -- .../LUFA/Drivers/Peripheral/AVR8/SerialSPI_AVR8.h | 208 - .../LUFA/Drivers/Peripheral/AVR8/Serial_AVR8.c | 121 - .../LUFA/Drivers/Peripheral/AVR8/Serial_AVR8.h | 271 -- lib/lufa/LUFA/Drivers/Peripheral/AVR8/TWI_AVR8.c | 209 - lib/lufa/LUFA/Drivers/Peripheral/AVR8/TWI_AVR8.h | 305 -- lib/lufa/LUFA/Drivers/Peripheral/SPI.h | 76 - lib/lufa/LUFA/Drivers/Peripheral/Serial.h | 76 - lib/lufa/LUFA/Drivers/Peripheral/SerialSPI.h | 76 - lib/lufa/LUFA/Drivers/Peripheral/TWI.h | 76 - lib/lufa/LUFA/Drivers/Peripheral/XMEGA/SPI_XMEGA.h | 251 -- .../Drivers/Peripheral/XMEGA/SerialSPI_XMEGA.h | 212 - .../LUFA/Drivers/Peripheral/XMEGA/Serial_XMEGA.c | 126 - .../LUFA/Drivers/Peripheral/XMEGA/Serial_XMEGA.h | 289 -- lib/lufa/LUFA/Drivers/Peripheral/XMEGA/TWI_XMEGA.c | 185 - lib/lufa/LUFA/Drivers/Peripheral/XMEGA/TWI_XMEGA.h | 302 -- .../LUFA/Drivers/USB/Class/AndroidAccessoryClass.h | 77 - lib/lufa/LUFA/Drivers/USB/Class/AudioClass.h | 81 - lib/lufa/LUFA/Drivers/USB/Class/CDCClass.h | 81 - .../USB/Class/Common/AndroidAccessoryClassCommon.h | 129 - .../Drivers/USB/Class/Common/AudioClassCommon.h | 780 ---- .../LUFA/Drivers/USB/Class/Common/CDCClassCommon.h | 391 -- .../LUFA/Drivers/USB/Class/Common/HIDClassCommon.h | 681 ---- lib/lufa/LUFA/Drivers/USB/Class/Common/HIDParser.c | 389 -- lib/lufa/LUFA/Drivers/USB/Class/Common/HIDParser.h | 364 -- .../LUFA/Drivers/USB/Class/Common/HIDReportData.h | 126 - .../Drivers/USB/Class/Common/MIDIClassCommon.h | 363 -- .../USB/Class/Common/MassStorageClassCommon.h | 368 -- .../Drivers/USB/Class/Common/PrinterClassCommon.h | 119 - .../Drivers/USB/Class/Common/RNDISClassCommon.h | 411 -- .../USB/Class/Common/StillImageClassCommon.h | 161 - .../Drivers/USB/Class/Device/AudioClassDevice.c | 197 - .../Drivers/USB/Class/Device/AudioClassDevice.h | 396 -- .../LUFA/Drivers/USB/Class/Device/CDCClassDevice.c | 367 -- .../LUFA/Drivers/USB/Class/Device/CDCClassDevice.h | 387 -- .../LUFA/Drivers/USB/Class/Device/HIDClassDevice.c | 211 - .../LUFA/Drivers/USB/Class/Device/HIDClassDevice.h | 210 - .../Drivers/USB/Class/Device/MIDIClassDevice.c | 131 - .../Drivers/USB/Class/Device/MIDIClassDevice.h | 175 - .../USB/Class/Device/MassStorageClassDevice.c | 215 - .../USB/Class/Device/MassStorageClassDevice.h | 161 - .../Drivers/USB/Class/Device/PrinterClassDevice.c | 314 -- .../Drivers/USB/Class/Device/PrinterClassDevice.h | 293 -- .../Drivers/USB/Class/Device/RNDISClassDevice.c | 508 --- .../Drivers/USB/Class/Device/RNDISClassDevice.h | 207 - lib/lufa/LUFA/Drivers/USB/Class/HIDClass.h | 82 - .../USB/Class/Host/AndroidAccessoryClassHost.c | 422 -- .../USB/Class/Host/AndroidAccessoryClassHost.h | 314 -- .../LUFA/Drivers/USB/Class/Host/AudioClassHost.c | 223 -- .../LUFA/Drivers/USB/Class/Host/AudioClassHost.h | 411 -- .../LUFA/Drivers/USB/Class/Host/CDCClassHost.c | 512 --- .../LUFA/Drivers/USB/Class/Host/CDCClassHost.h | 385 -- .../LUFA/Drivers/USB/Class/Host/HIDClassHost.c | 399 -- .../LUFA/Drivers/USB/Class/Host/HIDClassHost.h | 313 -- .../LUFA/Drivers/USB/Class/Host/MIDIClassHost.c | 231 -- .../LUFA/Drivers/USB/Class/Host/MIDIClassHost.h | 190 - .../Drivers/USB/Class/Host/MassStorageClassHost.c | 579 --- .../Drivers/USB/Class/Host/MassStorageClassHost.h | 335 -- .../LUFA/Drivers/USB/Class/Host/PrinterClassHost.c | 400 -- .../LUFA/Drivers/USB/Class/Host/PrinterClassHost.h | 285 -- .../LUFA/Drivers/USB/Class/Host/RNDISClassHost.c | 476 --- .../LUFA/Drivers/USB/Class/Host/RNDISClassHost.h | 270 -- .../Drivers/USB/Class/Host/StillImageClassHost.c | 436 --- .../Drivers/USB/Class/Host/StillImageClassHost.h | 317 -- lib/lufa/LUFA/Drivers/USB/Class/MIDIClass.h | 84 - lib/lufa/LUFA/Drivers/USB/Class/MassStorageClass.h | 81 - lib/lufa/LUFA/Drivers/USB/Class/PrinterClass.h | 83 - lib/lufa/LUFA/Drivers/USB/Class/RNDISClass.h | 81 - lib/lufa/LUFA/Drivers/USB/Class/StillImageClass.h | 76 - lib/lufa/LUFA/Drivers/USB/Core/AVR8/Device_AVR8.c | 57 - lib/lufa/LUFA/Drivers/USB/Core/AVR8/Device_AVR8.h | 269 -- .../Drivers/USB/Core/AVR8/EndpointStream_AVR8.c | 275 -- .../Drivers/USB/Core/AVR8/EndpointStream_AVR8.h | 658 ---- .../LUFA/Drivers/USB/Core/AVR8/Endpoint_AVR8.c | 201 - .../LUFA/Drivers/USB/Core/AVR8/Endpoint_AVR8.h | 819 ---- lib/lufa/LUFA/Drivers/USB/Core/AVR8/Host_AVR8.c | 297 -- lib/lufa/LUFA/Drivers/USB/Core/AVR8/Host_AVR8.h | 372 -- lib/lufa/LUFA/Drivers/USB/Core/AVR8/OTG_AVR8.h | 159 - .../LUFA/Drivers/USB/Core/AVR8/PipeStream_AVR8.c | 221 -- .../LUFA/Drivers/USB/Core/AVR8/PipeStream_AVR8.h | 442 --- lib/lufa/LUFA/Drivers/USB/Core/AVR8/Pipe_AVR8.c | 210 - lib/lufa/LUFA/Drivers/USB/Core/AVR8/Pipe_AVR8.h | 922 ----- .../AVR8/Template/Template_Endpoint_Control_R.c | 84 - .../AVR8/Template/Template_Endpoint_Control_W.c | 95 - .../USB/Core/AVR8/Template/Template_Endpoint_RW.c | 89 - .../USB/Core/AVR8/Template/Template_Pipe_RW.c | 88 - .../Drivers/USB/Core/AVR8/USBController_AVR8.c | 273 -- .../Drivers/USB/Core/AVR8/USBController_AVR8.h | 432 -- .../LUFA/Drivers/USB/Core/AVR8/USBInterrupt_AVR8.c | 279 -- .../LUFA/Drivers/USB/Core/AVR8/USBInterrupt_AVR8.h | 375 -- lib/lufa/LUFA/Drivers/USB/Core/ConfigDescriptors.c | 146 - lib/lufa/LUFA/Drivers/USB/Core/ConfigDescriptors.h | 287 -- lib/lufa/LUFA/Drivers/USB/Core/Device.h | 159 - lib/lufa/LUFA/Drivers/USB/Core/DeviceStandardReq.c | 393 -- lib/lufa/LUFA/Drivers/USB/Core/DeviceStandardReq.h | 158 - lib/lufa/LUFA/Drivers/USB/Core/Endpoint.h | 130 - lib/lufa/LUFA/Drivers/USB/Core/EndpointStream.h | 124 - lib/lufa/LUFA/Drivers/USB/Core/Events.c | 48 - lib/lufa/LUFA/Drivers/USB/Core/Events.h | 374 -- lib/lufa/LUFA/Drivers/USB/Core/Host.h | 139 - lib/lufa/LUFA/Drivers/USB/Core/HostStandardReq.c | 322 -- lib/lufa/LUFA/Drivers/USB/Core/HostStandardReq.h | 292 -- lib/lufa/LUFA/Drivers/USB/Core/OTG.h | 80 - lib/lufa/LUFA/Drivers/USB/Core/Pipe.h | 144 - lib/lufa/LUFA/Drivers/USB/Core/PipeStream.h | 100 - lib/lufa/LUFA/Drivers/USB/Core/StdDescriptors.h | 765 ---- lib/lufa/LUFA/Drivers/USB/Core/StdRequestType.h | 258 -- lib/lufa/LUFA/Drivers/USB/Core/UC3/Device_UC3.c | 51 - lib/lufa/LUFA/Drivers/USB/Core/UC3/Device_UC3.h | 267 -- .../LUFA/Drivers/USB/Core/UC3/EndpointStream_UC3.c | 235 -- .../LUFA/Drivers/USB/Core/UC3/EndpointStream_UC3.h | 438 --- lib/lufa/LUFA/Drivers/USB/Core/UC3/Endpoint_UC3.c | 196 - lib/lufa/LUFA/Drivers/USB/Core/UC3/Endpoint_UC3.h | 794 ---- lib/lufa/LUFA/Drivers/USB/Core/UC3/Host_UC3.c | 297 -- lib/lufa/LUFA/Drivers/USB/Core/UC3/Host_UC3.h | 363 -- .../LUFA/Drivers/USB/Core/UC3/PipeStream_UC3.c | 166 - .../LUFA/Drivers/USB/Core/UC3/PipeStream_UC3.h | 352 -- lib/lufa/LUFA/Drivers/USB/Core/UC3/Pipe_UC3.c | 209 - lib/lufa/LUFA/Drivers/USB/Core/UC3/Pipe_UC3.h | 924 ----- .../UC3/Template/Template_Endpoint_Control_R.c | 84 - .../UC3/Template/Template_Endpoint_Control_W.c | 95 - .../USB/Core/UC3/Template/Template_Endpoint_RW.c | 89 - .../USB/Core/UC3/Template/Template_Pipe_RW.c | 88 - .../LUFA/Drivers/USB/Core/UC3/USBController_UC3.c | 222 -- .../LUFA/Drivers/USB/Core/UC3/USBController_UC3.h | 353 -- .../LUFA/Drivers/USB/Core/UC3/USBInterrupt_UC3.c | 228 -- .../LUFA/Drivers/USB/Core/UC3/USBInterrupt_UC3.h | 376 -- lib/lufa/LUFA/Drivers/USB/Core/USBController.h | 165 - lib/lufa/LUFA/Drivers/USB/Core/USBInterrupt.h | 73 - lib/lufa/LUFA/Drivers/USB/Core/USBMode.h | 283 -- lib/lufa/LUFA/Drivers/USB/Core/USBTask.c | 89 - lib/lufa/LUFA/Drivers/USB/Core/USBTask.h | 200 - .../LUFA/Drivers/USB/Core/XMEGA/Device_XMEGA.c | 49 - .../LUFA/Drivers/USB/Core/XMEGA/Device_XMEGA.h | 266 -- .../Drivers/USB/Core/XMEGA/EndpointStream_XMEGA.c | 275 -- .../Drivers/USB/Core/XMEGA/EndpointStream_XMEGA.h | 658 ---- .../LUFA/Drivers/USB/Core/XMEGA/Endpoint_XMEGA.c | 268 -- .../LUFA/Drivers/USB/Core/XMEGA/Endpoint_XMEGA.h | 689 ---- lib/lufa/LUFA/Drivers/USB/Core/XMEGA/Host_XMEGA.c | 41 - .../LUFA/Drivers/USB/Core/XMEGA/PipeStream_XMEGA.c | 41 - lib/lufa/LUFA/Drivers/USB/Core/XMEGA/Pipe_XMEGA.c | 37 - .../XMEGA/Template/Template_Endpoint_Control_R.c | 86 - .../XMEGA/Template/Template_Endpoint_Control_W.c | 97 - .../USB/Core/XMEGA/Template/Template_Endpoint_RW.c | 89 - .../Drivers/USB/Core/XMEGA/USBController_XMEGA.c | 204 - .../Drivers/USB/Core/XMEGA/USBController_XMEGA.h | 313 -- .../Drivers/USB/Core/XMEGA/USBInterrupt_XMEGA.c | 106 - .../Drivers/USB/Core/XMEGA/USBInterrupt_XMEGA.h | 172 - lib/lufa/LUFA/Drivers/USB/USB.h | 422 -- lib/lufa/LUFA/License.txt | 24 - lib/lufa/LUFA/Platform/Platform.h | 80 - lib/lufa/LUFA/Platform/UC3/ClockManagement.h | 338 -- lib/lufa/LUFA/Platform/UC3/Exception.S | 128 - lib/lufa/LUFA/Platform/UC3/InterruptManagement.c | 62 - lib/lufa/LUFA/Platform/UC3/InterruptManagement.h | 174 - lib/lufa/LUFA/Platform/UC3/UC3ExperimentalInfo.txt | 1 - lib/lufa/LUFA/Platform/XMEGA/ClockManagement.h | 397 -- .../LUFA/Platform/XMEGA/XMEGAExperimentalInfo.txt | 1 - .../StudioIntegration/Docbook/mshelp/README.txt | 13 - .../StudioIntegration/Docbook/mshelp/docbook.xsl | 58 - .../Docbook/mshelp/hv1-common.xsl | 664 ---- .../LUFA/StudioIntegration/Docbook/placeholder.txt | 1 - .../StudioIntegration/HV1/helpcontentsetup.msha | 27 - .../HV1/lufa_docbook_transform.xslt | 806 ---- .../HV1/lufa_helpcontentsetup_transform.xslt | 47 - .../StudioIntegration/HV1/lufa_hv1_transform.xslt | 45 - .../HV1/lufa_studio_help_styling.css | 53 - lib/lufa/LUFA/StudioIntegration/VSIX/LUFA.dll | Bin 785920 -> 0 bytes lib/lufa/LUFA/StudioIntegration/VSIX/LUFA.pkgdef | Bin 2242 -> 0 bytes .../StudioIntegration/VSIX/[Content_Types].xml | 13 - .../LUFA/StudioIntegration/VSIX/asf-manifest.xml | 18 - .../StudioIntegration/VSIX/extension.vsixmanifest | 32 - .../LUFA/StudioIntegration/VSIX/generate_caches.py | 38 - .../VSIX/lufa_asfmanifest_transform.xslt | 36 - .../VSIX/lufa_vsmanifest_transform.xslt | 33 - .../XDK/lufa_extension_transform.xslt | 68 - .../XDK/lufa_filelist_transform.xslt | 35 - .../XDK/lufa_indent_transform.xslt | 23 - .../XDK/lufa_module_transform.xslt | 66 - lib/lufa/LUFA/StudioIntegration/lufa.xml | 96 - lib/lufa/LUFA/StudioIntegration/lufa_common.xml | 34 - .../LUFA/StudioIntegration/lufa_drivers_board.xml | 114 - .../StudioIntegration/lufa_drivers_board_names.xml | 853 ---- .../LUFA/StudioIntegration/lufa_drivers_misc.xml | 57 - .../StudioIntegration/lufa_drivers_peripheral.xml | 198 - .../LUFA/StudioIntegration/lufa_drivers_usb.xml | 32 - .../StudioIntegration/lufa_drivers_usb_class.xml | 32 - .../lufa_drivers_usb_class_android.xml | 54 - .../lufa_drivers_usb_class_audio.xml | 109 - .../lufa_drivers_usb_class_cdc.xml | 99 - .../lufa_drivers_usb_class_hid.xml | 99 - .../lufa_drivers_usb_class_midi.xml | 99 - .../lufa_drivers_usb_class_ms.xml | 99 - .../lufa_drivers_usb_class_printer.xml | 99 - .../lufa_drivers_usb_class_rndis.xml | 99 - .../lufa_drivers_usb_class_si.xml | 56 - .../StudioIntegration/lufa_drivers_usb_core.xml | 85 - .../lufa_drivers_usb_core_avr8.xml | 43 - .../lufa_drivers_usb_core_uc3.xml | 42 - .../lufa_drivers_usb_core_xmega.xml | 36 - lib/lufa/LUFA/StudioIntegration/lufa_platform.xml | 60 - .../LUFA/StudioIntegration/lufa_platform_uc3.xml | 26 - .../LUFA/StudioIntegration/lufa_platform_xmega.xml | 23 - lib/lufa/LUFA/StudioIntegration/lufa_toolchain.xml | 45 - lib/lufa/LUFA/StudioIntegration/makefile | 142 - lib/lufa/LUFA/Version.h | 67 - lib/lufa/LUFA/doxyfile | 2400 ------------ lib/lufa/LUFA/makefile | 40 - .../Maintenance/lufa_functionlist_transform.xslt | 19 - lib/lufa/Maintenance/makefile | 94 - lib/lufa/Projects/AVRISP-MKII/AVRISP-MKII.c | 164 - lib/lufa/Projects/AVRISP-MKII/AVRISP-MKII.h | 90 - lib/lufa/Projects/AVRISP-MKII/AVRISP-MKII.txt | 346 -- lib/lufa/Projects/AVRISP-MKII/AVRISPDescriptors.c | 203 - lib/lufa/Projects/AVRISP-MKII/AVRISPDescriptors.h | 100 - lib/lufa/Projects/AVRISP-MKII/Config/AppConfig.h | 68 - lib/lufa/Projects/AVRISP-MKII/Config/LUFAConfig.h | 93 - .../Projects/AVRISP-MKII/Lib/ISP/ISPProtocol.c | 531 --- .../Projects/AVRISP-MKII/Lib/ISP/ISPProtocol.h | 81 - lib/lufa/Projects/AVRISP-MKII/Lib/ISP/ISPTarget.c | 370 -- lib/lufa/Projects/AVRISP-MKII/Lib/ISP/ISPTarget.h | 147 - lib/lufa/Projects/AVRISP-MKII/Lib/V2Protocol.c | 267 -- lib/lufa/Projects/AVRISP-MKII/Lib/V2Protocol.h | 105 - .../Projects/AVRISP-MKII/Lib/V2ProtocolConstants.h | 90 - .../Projects/AVRISP-MKII/Lib/V2ProtocolParams.c | 207 - .../Projects/AVRISP-MKII/Lib/V2ProtocolParams.h | 91 - lib/lufa/Projects/AVRISP-MKII/Lib/XPROG/TINYNVM.c | 274 -- lib/lufa/Projects/AVRISP-MKII/Lib/XPROG/TINYNVM.h | 86 - lib/lufa/Projects/AVRISP-MKII/Lib/XPROG/XMEGANVM.c | 468 --- lib/lufa/Projects/AVRISP-MKII/Lib/XPROG/XMEGANVM.h | 140 - .../Projects/AVRISP-MKII/Lib/XPROG/XPROGProtocol.c | 480 --- .../Projects/AVRISP-MKII/Lib/XPROG/XPROGProtocol.h | 136 - .../Projects/AVRISP-MKII/Lib/XPROG/XPROGTarget.c | 209 - .../Projects/AVRISP-MKII/Lib/XPROG/XPROGTarget.h | 136 - .../AVRISP-MKII/WindowsDriver/AVRISP_mkII.inf | Bin 8070 -> 0 bytes .../AVRISP-MKII/WindowsDriver/amd64/libusb0.dll | Bin 76384 -> 0 bytes .../AVRISP-MKII/WindowsDriver/amd64/libusb0.sys | Bin 52832 -> 0 bytes .../AVRISP-MKII/WindowsDriver/avrisp_mkii.cat | Bin 9610 -> 0 bytes .../AVRISP-MKII/WindowsDriver/ia64/libusb0.dll | Bin 157792 -> 0 bytes .../AVRISP-MKII/WindowsDriver/ia64/libusb0.sys | Bin 110176 -> 0 bytes .../AVRISP-MKII/WindowsDriver/installer_x64.exe | Bin 25088 -> 0 bytes .../AVRISP-MKII/WindowsDriver/installer_x86.exe | Bin 23552 -> 0 bytes .../license/libusb0/installer_license.txt | 851 ---- .../AVRISP-MKII/WindowsDriver/x86/libusb0.sys | Bin 42592 -> 0 bytes .../AVRISP-MKII/WindowsDriver/x86/libusb0_x86.dll | Bin 67680 -> 0 bytes lib/lufa/Projects/AVRISP-MKII/asf.xml | 91 - lib/lufa/Projects/AVRISP-MKII/doxyfile | 2396 ----------- lib/lufa/Projects/AVRISP-MKII/makefile | 44 - lib/lufa/Projects/Benito/Benito.c | 311 -- lib/lufa/Projects/Benito/Benito.h | 79 - lib/lufa/Projects/Benito/Benito.txt | 106 - lib/lufa/Projects/Benito/Config/AppConfig.h | 57 - lib/lufa/Projects/Benito/Config/LUFAConfig.h | 93 - lib/lufa/Projects/Benito/Descriptors.c | 244 -- lib/lufa/Projects/Benito/Descriptors.h | 112 - .../Projects/Benito/LUFA Benito Programmer.inf | 66 - lib/lufa/Projects/Benito/asf.xml | 53 - lib/lufa/Projects/Benito/doxyfile | 2395 ----------- lib/lufa/Projects/Benito/makefile | 43 - .../Projects/HIDReportViewer/Config/LUFAConfig.h | 93 - .../Projects/HIDReportViewer/HIDReportViewer.c | 325 -- .../Projects/HIDReportViewer/HIDReportViewer.h | 87 - .../Projects/HIDReportViewer/HIDReportViewer.txt | 64 - lib/lufa/Projects/HIDReportViewer/asf.xml | 48 - lib/lufa/Projects/HIDReportViewer/doxyfile | 2395 ----------- lib/lufa/Projects/HIDReportViewer/makefile | 43 - .../LEDNotifier/CPUUsageApp/CPUMonitor.Designer.cs | 131 - .../Projects/LEDNotifier/CPUUsageApp/CPUMonitor.cs | 115 - .../LEDNotifier/CPUUsageApp/CPUMonitor.csproj | 95 - .../LEDNotifier/CPUUsageApp/CPUMonitor.resx | 132 - .../Projects/LEDNotifier/CPUUsageApp/Program.cs | 21 - .../CPUUsageApp/Properties/AssemblyInfo.cs | 36 - .../CPUUsageApp/Properties/Resources.Designer.cs | 63 - .../CPUUsageApp/Properties/Resources.resx | 117 - .../CPUUsageApp/Properties/Settings.Designer.cs | 26 - .../CPUUsageApp/Properties/Settings.settings | 7 - lib/lufa/Projects/LEDNotifier/Config/LUFAConfig.h | 93 - lib/lufa/Projects/LEDNotifier/Descriptors.c | 245 -- lib/lufa/Projects/LEDNotifier/Descriptors.h | 110 - .../LEDNotifier/LEDMixerApp/LEDMixer.Designer.cs | 149 - .../Projects/LEDNotifier/LEDMixerApp/LEDMixer.cs | 75 - .../LEDNotifier/LEDMixerApp/LEDMixer.csproj | 95 - .../Projects/LEDNotifier/LEDMixerApp/LEDMixer.resx | 123 - .../Projects/LEDNotifier/LEDMixerApp/Program.cs | 21 - .../LEDMixerApp/Properties/AssemblyInfo.cs | 36 - .../LEDMixerApp/Properties/Resources.Designer.cs | 63 - .../LEDMixerApp/Properties/Resources.resx | 117 - .../LEDMixerApp/Properties/Settings.Designer.cs | 26 - .../LEDMixerApp/Properties/Settings.settings | 7 - lib/lufa/Projects/LEDNotifier/LEDNotifier.c | 178 - lib/lufa/Projects/LEDNotifier/LEDNotifier.h | 60 - lib/lufa/Projects/LEDNotifier/LEDNotifier.txt | 63 - .../Projects/LEDNotifier/LUFA LED Notifier.inf | 66 - lib/lufa/Projects/LEDNotifier/asf.xml | 51 - lib/lufa/Projects/LEDNotifier/doxyfile | 2397 ------------ lib/lufa/Projects/LEDNotifier/makefile | 43 - .../Projects/MIDIToneGenerator/Config/AppConfig.h | 48 - .../Projects/MIDIToneGenerator/Config/LUFAConfig.h | 93 - lib/lufa/Projects/MIDIToneGenerator/Descriptors.c | 314 -- lib/lufa/Projects/MIDIToneGenerator/Descriptors.h | 110 - .../Projects/MIDIToneGenerator/MIDIToneGenerator.c | 252 -- .../Projects/MIDIToneGenerator/MIDIToneGenerator.h | 105 - .../MIDIToneGenerator/MIDIToneGenerator.txt | 73 - lib/lufa/Projects/MIDIToneGenerator/asf.xml | 50 - lib/lufa/Projects/MIDIToneGenerator/doxyfile | 2395 ----------- lib/lufa/Projects/MIDIToneGenerator/makefile | 43 - lib/lufa/Projects/Magstripe/Config/AppConfig.h | 58 - lib/lufa/Projects/Magstripe/Config/LUFAConfig.h | 93 - lib/lufa/Projects/Magstripe/Descriptors.c | 216 - lib/lufa/Projects/Magstripe/Descriptors.h | 96 - .../Projects/Magstripe/Lib/CircularBitBuffer.c | 115 - .../Projects/Magstripe/Lib/CircularBitBuffer.h | 97 - lib/lufa/Projects/Magstripe/Lib/MagstripeHW.h | 102 - lib/lufa/Projects/Magstripe/Magstripe.c | 228 -- lib/lufa/Projects/Magstripe/Magstripe.h | 90 - lib/lufa/Projects/Magstripe/Magstripe.txt | 163 - lib/lufa/Projects/Magstripe/asf.xml | 52 - lib/lufa/Projects/Magstripe/doxyfile | 2395 ----------- lib/lufa/Projects/Magstripe/makefile | 43 - .../Projects/MediaController/Config/LUFAConfig.h | 93 - lib/lufa/Projects/MediaController/Descriptors.c | 234 -- lib/lufa/Projects/MediaController/Descriptors.h | 93 - .../Projects/MediaController/MediaController.c | 184 - .../Projects/MediaController/MediaController.h | 110 - .../Projects/MediaController/MediaController.txt | 66 - lib/lufa/Projects/MediaController/asf.xml | 50 - lib/lufa/Projects/MediaController/doxyfile | 2395 ----------- lib/lufa/Projects/MediaController/makefile | 43 - .../Projects/MissileLauncher/Config/LUFAConfig.h | 93 - .../Projects/MissileLauncher/ConfigDescriptor.c | 185 - .../Projects/MissileLauncher/ConfigDescriptor.h | 72 - .../Projects/MissileLauncher/MissileLauncher.c | 323 -- .../Projects/MissileLauncher/MissileLauncher.h | 92 - .../Projects/MissileLauncher/MissileLauncher.txt | 60 - lib/lufa/Projects/MissileLauncher/asf.xml | 49 - lib/lufa/Projects/MissileLauncher/doxyfile | 2395 ----------- lib/lufa/Projects/MissileLauncher/makefile | 43 - lib/lufa/Projects/RelayBoard/Config/LUFAConfig.h | 93 - lib/lufa/Projects/RelayBoard/Descriptors.c | 188 - lib/lufa/Projects/RelayBoard/Descriptors.h | 84 - lib/lufa/Projects/RelayBoard/RelayBoard.c | 145 - lib/lufa/Projects/RelayBoard/RelayBoard.h | 65 - lib/lufa/Projects/RelayBoard/RelayBoard.txt | 106 - lib/lufa/Projects/RelayBoard/asf.xml | 47 - lib/lufa/Projects/RelayBoard/doxyfile | 2395 ----------- lib/lufa/Projects/RelayBoard/makefile | 43 - lib/lufa/Projects/SerialToLCD/Config/LUFAConfig.h | 93 - lib/lufa/Projects/SerialToLCD/Descriptors.c | 257 -- lib/lufa/Projects/SerialToLCD/Descriptors.h | 111 - lib/lufa/Projects/SerialToLCD/LUFA SerialToLCD.inf | 66 - lib/lufa/Projects/SerialToLCD/Lib/HD44780.c | 127 - lib/lufa/Projects/SerialToLCD/Lib/HD44780.h | 64 - lib/lufa/Projects/SerialToLCD/SerialToLCD.c | 170 - lib/lufa/Projects/SerialToLCD/SerialToLCD.h | 64 - lib/lufa/Projects/SerialToLCD/SerialToLCD.txt | 109 - lib/lufa/Projects/SerialToLCD/asf.xml | 51 - lib/lufa/Projects/SerialToLCD/doxyfile | 2395 ----------- lib/lufa/Projects/SerialToLCD/makefile | 43 - .../Projects/TempDataLogger/Config/AppConfig.h | 48 - .../Projects/TempDataLogger/Config/LUFAConfig.h | 93 - lib/lufa/Projects/TempDataLogger/Descriptors.c | 257 -- lib/lufa/Projects/TempDataLogger/Descriptors.h | 87 - .../Projects/TempDataLogger/Lib/DataflashManager.c | 534 --- .../Projects/TempDataLogger/Lib/DataflashManager.h | 86 - .../Projects/TempDataLogger/Lib/FATFs/00readme.txt | 135 - .../Projects/TempDataLogger/Lib/FATFs/diskio.c | 98 - .../Projects/TempDataLogger/Lib/FATFs/diskio.h | 55 - lib/lufa/Projects/TempDataLogger/Lib/FATFs/ff.c | 4139 -------------------- lib/lufa/Projects/TempDataLogger/Lib/FATFs/ff.h | 337 -- .../Projects/TempDataLogger/Lib/FATFs/ffconf.h | 191 - .../Projects/TempDataLogger/Lib/FATFs/integer.h | 38 - lib/lufa/Projects/TempDataLogger/Lib/RTC.c | 159 - lib/lufa/Projects/TempDataLogger/Lib/RTC.h | 126 - lib/lufa/Projects/TempDataLogger/Lib/SCSI.c | 344 -- lib/lufa/Projects/TempDataLogger/Lib/SCSI.h | 89 - lib/lufa/Projects/TempDataLogger/TempDataLogger.c | 331 -- lib/lufa/Projects/TempDataLogger/TempDataLogger.h | 112 - .../TempLogHostApp/COPYING.LESSER.txt | 166 - .../TempDataLogger/TempLogHostApp/COPYING.txt | 675 ---- .../TempLogHostApp/DataLoggerSettings.Designer.cs | 181 - .../TempLogHostApp/DataLoggerSettings.cs | 179 - .../TempLogHostApp/DataLoggerSettings.resx | 120 - .../TempDataLogger/TempLogHostApp/Hid.Linux.dll | Bin 9216 -> 0 bytes .../TempDataLogger/TempLogHostApp/Hid.Net.dll | Bin 24576 -> 0 bytes .../TempDataLogger/TempLogHostApp/Hid.Win32.dll | Bin 94208 -> 0 bytes .../TempDataLogger/TempLogHostApp/Program.cs | 21 - .../TempLogHostApp/Properties/AssemblyInfo.cs | 36 - .../Properties/Resources.Designer.cs | 63 - .../TempLogHostApp/Properties/Resources.resx | 117 - .../TempLogHostApp/Properties/Settings.Designer.cs | 26 - .../TempLogHostApp/Properties/Settings.settings | 7 - .../TempDataLogger/TempLogHostApp/README.txt | 24 - .../TempLogHostApp/TempLoggerHostApp.csproj | 99 - .../TempLogHostApp_Python/temp_log_config.py | 99 - .../TempDataLogger/TemperatureDataLogger.txt | 86 - lib/lufa/Projects/TempDataLogger/asf.xml | 72 - lib/lufa/Projects/TempDataLogger/doxyfile | 2397 ------------ lib/lufa/Projects/TempDataLogger/makefile | 44 - lib/lufa/Projects/USBtoSerial/Config/LUFAConfig.h | 93 - lib/lufa/Projects/USBtoSerial/Descriptors.c | 245 -- lib/lufa/Projects/USBtoSerial/Descriptors.h | 110 - lib/lufa/Projects/USBtoSerial/LUFA USBtoSerial.inf | 66 - lib/lufa/Projects/USBtoSerial/USBtoSerial.c | 254 -- lib/lufa/Projects/USBtoSerial/USBtoSerial.h | 77 - lib/lufa/Projects/USBtoSerial/USBtoSerial.txt | 78 - lib/lufa/Projects/USBtoSerial/asf.xml | 51 - lib/lufa/Projects/USBtoSerial/doxyfile | 2395 ----------- lib/lufa/Projects/USBtoSerial/makefile | 43 - lib/lufa/Projects/Webserver/Config/AppConfig.h | 73 - lib/lufa/Projects/Webserver/Config/LUFAConfig.h | 93 - lib/lufa/Projects/Webserver/Descriptors.c | 295 -- lib/lufa/Projects/Webserver/Descriptors.h | 128 - .../Projects/Webserver/LUFA Webserver RNDIS.inf | 59 - lib/lufa/Projects/Webserver/Lib/DHCPClientApp.c | 208 - lib/lufa/Projects/Webserver/Lib/DHCPClientApp.h | 69 - lib/lufa/Projects/Webserver/Lib/DHCPCommon.c | 103 - lib/lufa/Projects/Webserver/Lib/DHCPCommon.h | 159 - lib/lufa/Projects/Webserver/Lib/DHCPServerApp.c | 265 -- lib/lufa/Projects/Webserver/Lib/DHCPServerApp.h | 64 - lib/lufa/Projects/Webserver/Lib/DataflashManager.c | 534 --- lib/lufa/Projects/Webserver/Lib/DataflashManager.h | 87 - lib/lufa/Projects/Webserver/Lib/FATFs/00readme.txt | 135 - lib/lufa/Projects/Webserver/Lib/FATFs/diskio.c | 65 - lib/lufa/Projects/Webserver/Lib/FATFs/diskio.h | 52 - lib/lufa/Projects/Webserver/Lib/FATFs/ff.c | 4139 -------------------- lib/lufa/Projects/Webserver/Lib/FATFs/ff.h | 337 -- lib/lufa/Projects/Webserver/Lib/FATFs/ffconf.h | 190 - lib/lufa/Projects/Webserver/Lib/FATFs/integer.h | 38 - lib/lufa/Projects/Webserver/Lib/HTTPServerApp.c | 284 -- lib/lufa/Projects/Webserver/Lib/HTTPServerApp.h | 84 - lib/lufa/Projects/Webserver/Lib/SCSI.c | 344 -- lib/lufa/Projects/Webserver/Lib/SCSI.h | 87 - lib/lufa/Projects/Webserver/Lib/TELNETServerApp.c | 163 - lib/lufa/Projects/Webserver/Lib/TELNETServerApp.h | 71 - lib/lufa/Projects/Webserver/Lib/uIPManagement.c | 298 -- lib/lufa/Projects/Webserver/Lib/uIPManagement.h | 69 - lib/lufa/Projects/Webserver/Lib/uip/clock.c | 37 - lib/lufa/Projects/Webserver/Lib/uip/clock.h | 13 - lib/lufa/Projects/Webserver/Lib/uip/timer.c | 128 - lib/lufa/Projects/Webserver/Lib/uip/timer.h | 87 - lib/lufa/Projects/Webserver/Lib/uip/uip-split.c | 151 - lib/lufa/Projects/Webserver/Lib/uip/uip-split.h | 104 - lib/lufa/Projects/Webserver/Lib/uip/uip.c | 1941 --------- lib/lufa/Projects/Webserver/Lib/uip/uip.h | 2130 ---------- lib/lufa/Projects/Webserver/Lib/uip/uip_arp.c | 432 -- lib/lufa/Projects/Webserver/Lib/uip/uip_arp.h | 146 - lib/lufa/Projects/Webserver/Lib/uip/uipopt.h | 740 ---- lib/lufa/Projects/Webserver/USBDeviceMode.c | 162 - lib/lufa/Projects/Webserver/USBDeviceMode.h | 62 - lib/lufa/Projects/Webserver/USBHostMode.c | 172 - lib/lufa/Projects/Webserver/USBHostMode.h | 60 - lib/lufa/Projects/Webserver/Webserver.c | 77 - lib/lufa/Projects/Webserver/Webserver.h | 76 - lib/lufa/Projects/Webserver/Webserver.txt | 126 - lib/lufa/Projects/Webserver/asf.xml | 96 - lib/lufa/Projects/Webserver/doxyfile | 2396 ----------- lib/lufa/Projects/Webserver/makefile | 46 - lib/lufa/Projects/XPLAINBridge/Config/AppConfig.h | 64 - lib/lufa/Projects/XPLAINBridge/Config/LUFAConfig.h | 93 - .../Projects/XPLAINBridge/LUFA XPLAIN Bridge.inf | 66 - lib/lufa/Projects/XPLAINBridge/Lib/SoftUART.c | 156 - lib/lufa/Projects/XPLAINBridge/Lib/SoftUART.h | 71 - lib/lufa/Projects/XPLAINBridge/USARTDescriptors.c | 242 -- lib/lufa/Projects/XPLAINBridge/USARTDescriptors.h | 111 - lib/lufa/Projects/XPLAINBridge/XPLAINBridge.c | 292 -- lib/lufa/Projects/XPLAINBridge/XPLAINBridge.h | 103 - lib/lufa/Projects/XPLAINBridge/XPLAINBridge.txt | 89 - lib/lufa/Projects/XPLAINBridge/asf.xml | 57 - lib/lufa/Projects/XPLAINBridge/doxyfile | 2395 ----------- lib/lufa/Projects/XPLAINBridge/makefile | 54 - lib/lufa/Projects/makefile | 47 - lib/lufa/README.txt | 56 - lib/lufa/makefile | 26 - tmk_core/protocol/usb_descriptor.c | 26 +- 1458 files changed, 20 insertions(+), 394696 deletions(-) create mode 100644 docs/ChangeLog/20190830/PR6245.md delete mode 100644 lib/lufa/.gitattributes delete mode 100644 lib/lufa/.gitignore delete mode 100644 lib/lufa/Bootloaders/CDC/BootloaderAPI.c delete mode 100644 lib/lufa/Bootloaders/CDC/BootloaderAPI.h delete mode 100644 lib/lufa/Bootloaders/CDC/BootloaderAPITable.S delete mode 100644 lib/lufa/Bootloaders/CDC/BootloaderCDC.c delete mode 100644 lib/lufa/Bootloaders/CDC/BootloaderCDC.h delete mode 100644 lib/lufa/Bootloaders/CDC/BootloaderCDC.txt delete mode 100644 lib/lufa/Bootloaders/CDC/Config/AppConfig.h delete mode 100644 lib/lufa/Bootloaders/CDC/Config/LUFAConfig.h delete mode 100644 lib/lufa/Bootloaders/CDC/Descriptors.c delete mode 100644 lib/lufa/Bootloaders/CDC/Descriptors.h delete mode 100644 lib/lufa/Bootloaders/CDC/LUFA CDC Bootloader.inf delete mode 100644 lib/lufa/Bootloaders/CDC/asf.xml delete mode 100644 lib/lufa/Bootloaders/CDC/doxyfile delete mode 100644 lib/lufa/Bootloaders/CDC/makefile delete mode 100644 lib/lufa/Bootloaders/DFU/BootloaderAPI.c delete mode 100644 lib/lufa/Bootloaders/DFU/BootloaderAPI.h delete mode 100644 lib/lufa/Bootloaders/DFU/BootloaderAPITable.S delete mode 100644 lib/lufa/Bootloaders/DFU/BootloaderDFU.c delete mode 100644 lib/lufa/Bootloaders/DFU/BootloaderDFU.h delete mode 100644 lib/lufa/Bootloaders/DFU/BootloaderDFU.txt delete mode 100644 lib/lufa/Bootloaders/DFU/Config/AppConfig.h delete mode 100644 lib/lufa/Bootloaders/DFU/Config/LUFAConfig.h delete mode 100644 lib/lufa/Bootloaders/DFU/Descriptors.c delete mode 100644 lib/lufa/Bootloaders/DFU/Descriptors.h delete mode 100644 lib/lufa/Bootloaders/DFU/asf.xml delete mode 100644 lib/lufa/Bootloaders/DFU/doxyfile delete mode 100644 lib/lufa/Bootloaders/DFU/makefile delete mode 100644 lib/lufa/Bootloaders/HID/BootloaderHID.c delete mode 100644 lib/lufa/Bootloaders/HID/BootloaderHID.h delete mode 100644 lib/lufa/Bootloaders/HID/BootloaderHID.txt delete mode 100644 lib/lufa/Bootloaders/HID/Config/LUFAConfig.h delete mode 100644 lib/lufa/Bootloaders/HID/Descriptors.c delete mode 100644 lib/lufa/Bootloaders/HID/Descriptors.h delete mode 100644 lib/lufa/Bootloaders/HID/HostLoaderApp/.gitignore delete mode 100644 lib/lufa/Bootloaders/HID/HostLoaderApp/Makefile delete mode 100644 lib/lufa/Bootloaders/HID/HostLoaderApp/Makefile.bsd delete mode 100644 lib/lufa/Bootloaders/HID/HostLoaderApp/gpl3.txt delete mode 100644 lib/lufa/Bootloaders/HID/HostLoaderApp/hid_bootloader_cli.c delete mode 100644 lib/lufa/Bootloaders/HID/HostLoaderApp_Python/hid_bootloader_loader.py delete mode 100644 lib/lufa/Bootloaders/HID/asf.xml delete mode 100644 lib/lufa/Bootloaders/HID/doxyfile delete mode 100644 lib/lufa/Bootloaders/HID/makefile delete mode 100644 lib/lufa/Bootloaders/MassStorage/BootloaderAPI.c delete mode 100644 lib/lufa/Bootloaders/MassStorage/BootloaderAPI.h delete mode 100644 lib/lufa/Bootloaders/MassStorage/BootloaderAPITable.S delete mode 100644 lib/lufa/Bootloaders/MassStorage/BootloaderMassStorage.c delete mode 100644 lib/lufa/Bootloaders/MassStorage/BootloaderMassStorage.h delete mode 100644 lib/lufa/Bootloaders/MassStorage/BootloaderMassStorage.txt delete mode 100644 lib/lufa/Bootloaders/MassStorage/Config/AppConfig.h delete mode 100644 lib/lufa/Bootloaders/MassStorage/Config/LUFAConfig.h delete mode 100644 lib/lufa/Bootloaders/MassStorage/Descriptors.c delete mode 100644 lib/lufa/Bootloaders/MassStorage/Descriptors.h delete mode 100644 lib/lufa/Bootloaders/MassStorage/Lib/SCSI.c delete mode 100644 lib/lufa/Bootloaders/MassStorage/Lib/SCSI.h delete mode 100644 lib/lufa/Bootloaders/MassStorage/Lib/VirtualFAT.c delete mode 100644 lib/lufa/Bootloaders/MassStorage/Lib/VirtualFAT.h delete mode 100644 lib/lufa/Bootloaders/MassStorage/asf.xml delete mode 100644 lib/lufa/Bootloaders/MassStorage/doxyfile delete mode 100644 lib/lufa/Bootloaders/MassStorage/makefile delete mode 100644 lib/lufa/Bootloaders/Printer/BootloaderAPI.c delete mode 100644 lib/lufa/Bootloaders/Printer/BootloaderAPI.h delete mode 100644 lib/lufa/Bootloaders/Printer/BootloaderAPITable.S delete mode 100644 lib/lufa/Bootloaders/Printer/BootloaderPrinter.c delete mode 100644 lib/lufa/Bootloaders/Printer/BootloaderPrinter.h delete mode 100644 lib/lufa/Bootloaders/Printer/BootloaderPrinter.txt delete mode 100644 lib/lufa/Bootloaders/Printer/Config/LUFAConfig.h delete mode 100644 lib/lufa/Bootloaders/Printer/Descriptors.c delete mode 100644 lib/lufa/Bootloaders/Printer/Descriptors.h delete mode 100644 lib/lufa/Bootloaders/Printer/asf.xml delete mode 100644 lib/lufa/Bootloaders/Printer/doxyfile delete mode 100644 lib/lufa/Bootloaders/Printer/makefile delete mode 100644 lib/lufa/Bootloaders/makefile delete mode 100644 lib/lufa/BuildTests/BoardDriverTest/Board/Board.h delete mode 100644 lib/lufa/BuildTests/BoardDriverTest/Board/Buttons.h delete mode 100644 lib/lufa/BuildTests/BoardDriverTest/Board/Dataflash.h delete mode 100644 lib/lufa/BuildTests/BoardDriverTest/Board/Joystick.h delete mode 100644 lib/lufa/BuildTests/BoardDriverTest/Board/LEDs.h delete mode 100644 lib/lufa/BuildTests/BoardDriverTest/BoardDeviceMap.cfg delete mode 100644 lib/lufa/BuildTests/BoardDriverTest/Test.c delete mode 100644 lib/lufa/BuildTests/BoardDriverTest/makefile delete mode 100644 lib/lufa/BuildTests/BoardDriverTest/makefile.test delete mode 100644 lib/lufa/BuildTests/BootloaderTest/BootloaderDeviceMap.cfg delete mode 100644 lib/lufa/BuildTests/BootloaderTest/makefile delete mode 100644 lib/lufa/BuildTests/ModuleTest/Dummy.S delete mode 100644 lib/lufa/BuildTests/ModuleTest/Modules.h delete mode 100644 lib/lufa/BuildTests/ModuleTest/Test_C.c delete mode 100644 lib/lufa/BuildTests/ModuleTest/Test_CPP.cpp delete mode 100644 lib/lufa/BuildTests/ModuleTest/makefile delete mode 100644 lib/lufa/BuildTests/ModuleTest/makefile.test delete mode 100644 lib/lufa/BuildTests/SingleUSBModeTest/Dummy.S delete mode 100644 lib/lufa/BuildTests/SingleUSBModeTest/Test.c delete mode 100644 lib/lufa/BuildTests/SingleUSBModeTest/makefile delete mode 100644 lib/lufa/BuildTests/SingleUSBModeTest/makefile.test delete mode 100644 lib/lufa/BuildTests/StaticAnalysisTest/makefile delete mode 100644 lib/lufa/BuildTests/makefile delete mode 100644 lib/lufa/Demos/Device/ClassDriver/AudioInput/AudioInput.c delete mode 100644 lib/lufa/Demos/Device/ClassDriver/AudioInput/AudioInput.h delete mode 100644 lib/lufa/Demos/Device/ClassDriver/AudioInput/AudioInput.txt delete mode 100644 lib/lufa/Demos/Device/ClassDriver/AudioInput/Config/AppConfig.h delete mode 100644 lib/lufa/Demos/Device/ClassDriver/AudioInput/Config/LUFAConfig.h delete mode 100644 lib/lufa/Demos/Device/ClassDriver/AudioInput/Descriptors.c delete mode 100644 lib/lufa/Demos/Device/ClassDriver/AudioInput/Descriptors.h delete mode 100644 lib/lufa/Demos/Device/ClassDriver/AudioInput/asf.xml delete mode 100644 lib/lufa/Demos/Device/ClassDriver/AudioInput/doxyfile delete mode 100644 lib/lufa/Demos/Device/ClassDriver/AudioInput/makefile delete mode 100644 lib/lufa/Demos/Device/ClassDriver/AudioOutput/AudioOutput.c delete mode 100644 lib/lufa/Demos/Device/ClassDriver/AudioOutput/AudioOutput.h delete mode 100644 lib/lufa/Demos/Device/ClassDriver/AudioOutput/AudioOutput.txt delete mode 100644 lib/lufa/Demos/Device/ClassDriver/AudioOutput/Config/AppConfig.h delete mode 100644 lib/lufa/Demos/Device/ClassDriver/AudioOutput/Config/LUFAConfig.h delete mode 100644 lib/lufa/Demos/Device/ClassDriver/AudioOutput/Descriptors.c delete mode 100644 lib/lufa/Demos/Device/ClassDriver/AudioOutput/Descriptors.h delete mode 100644 lib/lufa/Demos/Device/ClassDriver/AudioOutput/asf.xml delete mode 100644 lib/lufa/Demos/Device/ClassDriver/AudioOutput/doxyfile delete mode 100644 lib/lufa/Demos/Device/ClassDriver/AudioOutput/makefile delete mode 100644 lib/lufa/Demos/Device/ClassDriver/DualMIDI/Config/LUFAConfig.h delete mode 100644 lib/lufa/Demos/Device/ClassDriver/DualMIDI/Descriptors.c delete mode 100644 lib/lufa/Demos/Device/ClassDriver/DualMIDI/Descriptors.h delete mode 100644 lib/lufa/Demos/Device/ClassDriver/DualMIDI/DualMIDI.c delete mode 100644 lib/lufa/Demos/Device/ClassDriver/DualMIDI/DualMIDI.h delete mode 100644 lib/lufa/Demos/Device/ClassDriver/DualMIDI/DualMIDI.txt delete mode 100644 lib/lufa/Demos/Device/ClassDriver/DualMIDI/asf.xml delete mode 100644 lib/lufa/Demos/Device/ClassDriver/DualMIDI/doxyfile delete mode 100644 lib/lufa/Demos/Device/ClassDriver/DualMIDI/makefile delete mode 100644 lib/lufa/Demos/Device/ClassDriver/DualVirtualSerial/Config/LUFAConfig.h delete mode 100644 lib/lufa/Demos/Device/ClassDriver/DualVirtualSerial/Descriptors.c delete mode 100644 lib/lufa/Demos/Device/ClassDriver/DualVirtualSerial/Descriptors.h delete mode 100644 lib/lufa/Demos/Device/ClassDriver/DualVirtualSerial/DualVirtualSerial.c delete mode 100644 lib/lufa/Demos/Device/ClassDriver/DualVirtualSerial/DualVirtualSerial.h delete mode 100644 lib/lufa/Demos/Device/ClassDriver/DualVirtualSerial/DualVirtualSerial.txt delete mode 100644 lib/lufa/Demos/Device/ClassDriver/DualVirtualSerial/LUFA DualVirtualSerial.inf delete mode 100644 lib/lufa/Demos/Device/ClassDriver/DualVirtualSerial/asf.xml delete mode 100644 lib/lufa/Demos/Device/ClassDriver/DualVirtualSerial/doxyfile delete mode 100644 lib/lufa/Demos/Device/ClassDriver/DualVirtualSerial/makefile delete mode 100644 lib/lufa/Demos/Device/ClassDriver/GenericHID/Config/AppConfig.h delete mode 100644 lib/lufa/Demos/Device/ClassDriver/GenericHID/Config/LUFAConfig.h delete mode 100644 lib/lufa/Demos/Device/ClassDriver/GenericHID/Descriptors.c delete mode 100644 lib/lufa/Demos/Device/ClassDriver/GenericHID/Descriptors.h delete mode 100644 lib/lufa/Demos/Device/ClassDriver/GenericHID/GenericHID.c delete mode 100644 lib/lufa/Demos/Device/ClassDriver/GenericHID/GenericHID.h delete mode 100644 lib/lufa/Demos/Device/ClassDriver/GenericHID/GenericHID.txt delete mode 100755 lib/lufa/Demos/Device/ClassDriver/GenericHID/HostTestApp/test_generic_hid_libusb.js delete mode 100755 lib/lufa/Demos/Device/ClassDriver/GenericHID/HostTestApp/test_generic_hid_libusb.py delete mode 100644 lib/lufa/Demos/Device/ClassDriver/GenericHID/HostTestApp/test_generic_hid_winusb.py delete mode 100644 lib/lufa/Demos/Device/ClassDriver/GenericHID/asf.xml delete mode 100644 lib/lufa/Demos/Device/ClassDriver/GenericHID/doxyfile delete mode 100644 lib/lufa/Demos/Device/ClassDriver/GenericHID/makefile delete mode 100644 lib/lufa/Demos/Device/ClassDriver/Joystick/Config/LUFAConfig.h delete mode 100644 lib/lufa/Demos/Device/ClassDriver/Joystick/Descriptors.c delete mode 100644 lib/lufa/Demos/Device/ClassDriver/Joystick/Descriptors.h delete mode 100644 lib/lufa/Demos/Device/ClassDriver/Joystick/Joystick.c delete mode 100644 lib/lufa/Demos/Device/ClassDriver/Joystick/Joystick.h delete mode 100644 lib/lufa/Demos/Device/ClassDriver/Joystick/Joystick.txt delete mode 100644 lib/lufa/Demos/Device/ClassDriver/Joystick/asf.xml delete mode 100644 lib/lufa/Demos/Device/ClassDriver/Joystick/doxyfile delete mode 100644 lib/lufa/Demos/Device/ClassDriver/Joystick/makefile delete mode 100644 lib/lufa/Demos/Device/ClassDriver/Keyboard/Config/LUFAConfig.h delete mode 100644 lib/lufa/Demos/Device/ClassDriver/Keyboard/Descriptors.c delete mode 100644 lib/lufa/Demos/Device/ClassDriver/Keyboard/Descriptors.h delete mode 100644 lib/lufa/Demos/Device/ClassDriver/Keyboard/Keyboard.c delete mode 100644 lib/lufa/Demos/Device/ClassDriver/Keyboard/Keyboard.h delete mode 100644 lib/lufa/Demos/Device/ClassDriver/Keyboard/Keyboard.txt delete mode 100644 lib/lufa/Demos/Device/ClassDriver/Keyboard/asf.xml delete mode 100644 lib/lufa/Demos/Device/ClassDriver/Keyboard/doxyfile delete mode 100644 lib/lufa/Demos/Device/ClassDriver/Keyboard/makefile delete mode 100644 lib/lufa/Demos/Device/ClassDriver/KeyboardMouse/Config/LUFAConfig.h delete mode 100644 lib/lufa/Demos/Device/ClassDriver/KeyboardMouse/Descriptors.c delete mode 100644 lib/lufa/Demos/Device/ClassDriver/KeyboardMouse/Descriptors.h delete mode 100644 lib/lufa/Demos/Device/ClassDriver/KeyboardMouse/KeyboardMouse.c delete mode 100644 lib/lufa/Demos/Device/ClassDriver/KeyboardMouse/KeyboardMouse.h delete mode 100644 lib/lufa/Demos/Device/ClassDriver/KeyboardMouse/KeyboardMouse.txt delete mode 100644 lib/lufa/Demos/Device/ClassDriver/KeyboardMouse/asf.xml delete mode 100644 lib/lufa/Demos/Device/ClassDriver/KeyboardMouse/doxyfile delete mode 100644 lib/lufa/Demos/Device/ClassDriver/KeyboardMouse/makefile delete mode 100644 lib/lufa/Demos/Device/ClassDriver/KeyboardMouseMultiReport/Config/LUFAConfig.h delete mode 100644 lib/lufa/Demos/Device/ClassDriver/KeyboardMouseMultiReport/Descriptors.c delete mode 100644 lib/lufa/Demos/Device/ClassDriver/KeyboardMouseMultiReport/Descriptors.h delete mode 100644 lib/lufa/Demos/Device/ClassDriver/KeyboardMouseMultiReport/KeyboardMouseMultiReport.c delete mode 100644 lib/lufa/Demos/Device/ClassDriver/KeyboardMouseMultiReport/KeyboardMouseMultiReport.h delete mode 100644 lib/lufa/Demos/Device/ClassDriver/KeyboardMouseMultiReport/KeyboardMouseMultiReport.txt delete mode 100644 lib/lufa/Demos/Device/ClassDriver/KeyboardMouseMultiReport/asf.xml delete mode 100644 lib/lufa/Demos/Device/ClassDriver/KeyboardMouseMultiReport/doxyfile delete mode 100644 lib/lufa/Demos/Device/ClassDriver/KeyboardMouseMultiReport/makefile delete mode 100644 lib/lufa/Demos/Device/ClassDriver/MIDI/Config/LUFAConfig.h delete mode 100644 lib/lufa/Demos/Device/ClassDriver/MIDI/Descriptors.c delete mode 100644 lib/lufa/Demos/Device/ClassDriver/MIDI/Descriptors.h delete mode 100644 lib/lufa/Demos/Device/ClassDriver/MIDI/MIDI.c delete mode 100644 lib/lufa/Demos/Device/ClassDriver/MIDI/MIDI.h delete mode 100644 lib/lufa/Demos/Device/ClassDriver/MIDI/MIDI.txt delete mode 100644 lib/lufa/Demos/Device/ClassDriver/MIDI/asf.xml delete mode 100644 lib/lufa/Demos/Device/ClassDriver/MIDI/doxyfile delete mode 100644 lib/lufa/Demos/Device/ClassDriver/MIDI/makefile delete mode 100644 lib/lufa/Demos/Device/ClassDriver/MassStorage/Config/AppConfig.h delete mode 100644 lib/lufa/Demos/Device/ClassDriver/MassStorage/Config/LUFAConfig.h delete mode 100644 lib/lufa/Demos/Device/ClassDriver/MassStorage/Descriptors.c delete mode 100644 lib/lufa/Demos/Device/ClassDriver/MassStorage/Descriptors.h delete mode 100644 lib/lufa/Demos/Device/ClassDriver/MassStorage/Lib/DataflashManager.c delete mode 100644 lib/lufa/Demos/Device/ClassDriver/MassStorage/Lib/DataflashManager.h delete mode 100644 lib/lufa/Demos/Device/ClassDriver/MassStorage/Lib/SCSI.c delete mode 100644 lib/lufa/Demos/Device/ClassDriver/MassStorage/Lib/SCSI.h delete mode 100644 lib/lufa/Demos/Device/ClassDriver/MassStorage/MassStorage.c delete mode 100644 lib/lufa/Demos/Device/ClassDriver/MassStorage/MassStorage.h delete mode 100644 lib/lufa/Demos/Device/ClassDriver/MassStorage/MassStorage.txt delete mode 100644 lib/lufa/Demos/Device/ClassDriver/MassStorage/asf.xml delete mode 100644 lib/lufa/Demos/Device/ClassDriver/MassStorage/doxyfile delete mode 100644 lib/lufa/Demos/Device/ClassDriver/MassStorage/makefile delete mode 100644 lib/lufa/Demos/Device/ClassDriver/MassStorageKeyboard/Config/AppConfig.h delete mode 100644 lib/lufa/Demos/Device/ClassDriver/MassStorageKeyboard/Config/LUFAConfig.h delete mode 100644 lib/lufa/Demos/Device/ClassDriver/MassStorageKeyboard/Descriptors.c delete mode 100644 lib/lufa/Demos/Device/ClassDriver/MassStorageKeyboard/Descriptors.h delete mode 100644 lib/lufa/Demos/Device/ClassDriver/MassStorageKeyboard/Lib/DataflashManager.c delete mode 100644 lib/lufa/Demos/Device/ClassDriver/MassStorageKeyboard/Lib/DataflashManager.h delete mode 100644 lib/lufa/Demos/Device/ClassDriver/MassStorageKeyboard/Lib/SCSI.c delete mode 100644 lib/lufa/Demos/Device/ClassDriver/MassStorageKeyboard/Lib/SCSI.h delete mode 100644 lib/lufa/Demos/Device/ClassDriver/MassStorageKeyboard/MassStorageKeyboard.c delete mode 100644 lib/lufa/Demos/Device/ClassDriver/MassStorageKeyboard/MassStorageKeyboard.h delete mode 100644 lib/lufa/Demos/Device/ClassDriver/MassStorageKeyboard/MassStorageKeyboard.txt delete mode 100644 lib/lufa/Demos/Device/ClassDriver/MassStorageKeyboard/asf.xml delete mode 100644 lib/lufa/Demos/Device/ClassDriver/MassStorageKeyboard/doxyfile delete mode 100644 lib/lufa/Demos/Device/ClassDriver/MassStorageKeyboard/makefile delete mode 100644 lib/lufa/Demos/Device/ClassDriver/Mouse/Config/LUFAConfig.h delete mode 100644 lib/lufa/Demos/Device/ClassDriver/Mouse/Descriptors.c delete mode 100644 lib/lufa/Demos/Device/ClassDriver/Mouse/Descriptors.h delete mode 100644 lib/lufa/Demos/Device/ClassDriver/Mouse/Mouse.c delete mode 100644 lib/lufa/Demos/Device/ClassDriver/Mouse/Mouse.h delete mode 100644 lib/lufa/Demos/Device/ClassDriver/Mouse/Mouse.txt delete mode 100644 lib/lufa/Demos/Device/ClassDriver/Mouse/asf.xml delete mode 100644 lib/lufa/Demos/Device/ClassDriver/Mouse/doxyfile delete mode 100644 lib/lufa/Demos/Device/ClassDriver/Mouse/makefile delete mode 100644 lib/lufa/Demos/Device/ClassDriver/RNDISEthernet/Config/AppConfig.h delete mode 100644 lib/lufa/Demos/Device/ClassDriver/RNDISEthernet/Config/LUFAConfig.h delete mode 100644 lib/lufa/Demos/Device/ClassDriver/RNDISEthernet/Descriptors.c delete mode 100644 lib/lufa/Demos/Device/ClassDriver/RNDISEthernet/Descriptors.h delete mode 100644 lib/lufa/Demos/Device/ClassDriver/RNDISEthernet/LUFA RNDIS.inf delete mode 100644 lib/lufa/Demos/Device/ClassDriver/RNDISEthernet/Lib/ARP.c delete mode 100644 lib/lufa/Demos/Device/ClassDriver/RNDISEthernet/Lib/ARP.h delete mode 100644 lib/lufa/Demos/Device/ClassDriver/RNDISEthernet/Lib/DHCP.c delete mode 100644 lib/lufa/Demos/Device/ClassDriver/RNDISEthernet/Lib/DHCP.h delete mode 100644 lib/lufa/Demos/Device/ClassDriver/RNDISEthernet/Lib/Ethernet.c delete mode 100644 lib/lufa/Demos/Device/ClassDriver/RNDISEthernet/Lib/Ethernet.h delete mode 100644 lib/lufa/Demos/Device/ClassDriver/RNDISEthernet/Lib/EthernetProtocols.h delete mode 100644 lib/lufa/Demos/Device/ClassDriver/RNDISEthernet/Lib/ICMP.c delete mode 100644 lib/lufa/Demos/Device/ClassDriver/RNDISEthernet/Lib/ICMP.h delete mode 100644 lib/lufa/Demos/Device/ClassDriver/RNDISEthernet/Lib/IP.c delete mode 100644 lib/lufa/Demos/Device/ClassDriver/RNDISEthernet/Lib/IP.h delete mode 100644 lib/lufa/Demos/Device/ClassDriver/RNDISEthernet/Lib/ProtocolDecoders.c delete mode 100644 lib/lufa/Demos/Device/ClassDriver/RNDISEthernet/Lib/ProtocolDecoders.h delete mode 100644 lib/lufa/Demos/Device/ClassDriver/RNDISEthernet/Lib/TCP.c delete mode 100644 lib/lufa/Demos/Device/ClassDriver/RNDISEthernet/Lib/TCP.h delete mode 100644 lib/lufa/Demos/Device/ClassDriver/RNDISEthernet/Lib/UDP.c delete mode 100644 lib/lufa/Demos/Device/ClassDriver/RNDISEthernet/Lib/UDP.h delete mode 100644 lib/lufa/Demos/Device/ClassDriver/RNDISEthernet/Lib/Webserver.c delete mode 100644 lib/lufa/Demos/Device/ClassDriver/RNDISEthernet/Lib/Webserver.h delete mode 100644 lib/lufa/Demos/Device/ClassDriver/RNDISEthernet/RNDISEthernet.c delete mode 100644 lib/lufa/Demos/Device/ClassDriver/RNDISEthernet/RNDISEthernet.h delete mode 100644 lib/lufa/Demos/Device/ClassDriver/RNDISEthernet/RNDISEthernet.txt delete mode 100644 lib/lufa/Demos/Device/ClassDriver/RNDISEthernet/asf.xml delete mode 100644 lib/lufa/Demos/Device/ClassDriver/RNDISEthernet/doxyfile delete mode 100644 lib/lufa/Demos/Device/ClassDriver/RNDISEthernet/makefile delete mode 100644 lib/lufa/Demos/Device/ClassDriver/VirtualSerial/Config/LUFAConfig.h delete mode 100644 lib/lufa/Demos/Device/ClassDriver/VirtualSerial/Descriptors.c delete mode 100644 lib/lufa/Demos/Device/ClassDriver/VirtualSerial/Descriptors.h delete mode 100644 lib/lufa/Demos/Device/ClassDriver/VirtualSerial/LUFA VirtualSerial.inf delete mode 100644 lib/lufa/Demos/Device/ClassDriver/VirtualSerial/VirtualSerial.c delete mode 100644 lib/lufa/Demos/Device/ClassDriver/VirtualSerial/VirtualSerial.h delete mode 100644 lib/lufa/Demos/Device/ClassDriver/VirtualSerial/VirtualSerial.txt delete mode 100644 lib/lufa/Demos/Device/ClassDriver/VirtualSerial/asf.xml delete mode 100644 lib/lufa/Demos/Device/ClassDriver/VirtualSerial/doxyfile delete mode 100644 lib/lufa/Demos/Device/ClassDriver/VirtualSerial/makefile delete mode 100644 lib/lufa/Demos/Device/ClassDriver/VirtualSerialMassStorage/Config/AppConfig.h delete mode 100644 lib/lufa/Demos/Device/ClassDriver/VirtualSerialMassStorage/Config/LUFAConfig.h delete mode 100644 lib/lufa/Demos/Device/ClassDriver/VirtualSerialMassStorage/Descriptors.c delete mode 100644 lib/lufa/Demos/Device/ClassDriver/VirtualSerialMassStorage/Descriptors.h delete mode 100644 lib/lufa/Demos/Device/ClassDriver/VirtualSerialMassStorage/LUFA VirtualSerialMassStorage.inf delete mode 100644 lib/lufa/Demos/Device/ClassDriver/VirtualSerialMassStorage/Lib/DataflashManager.c delete mode 100644 lib/lufa/Demos/Device/ClassDriver/VirtualSerialMassStorage/Lib/DataflashManager.h delete mode 100644 lib/lufa/Demos/Device/ClassDriver/VirtualSerialMassStorage/Lib/SCSI.c delete mode 100644 lib/lufa/Demos/Device/ClassDriver/VirtualSerialMassStorage/Lib/SCSI.h delete mode 100644 lib/lufa/Demos/Device/ClassDriver/VirtualSerialMassStorage/VirtualSerialMassStorage.c delete mode 100644 lib/lufa/Demos/Device/ClassDriver/VirtualSerialMassStorage/VirtualSerialMassStorage.h delete mode 100644 lib/lufa/Demos/Device/ClassDriver/VirtualSerialMassStorage/VirtualSerialMassStorage.txt delete mode 100644 lib/lufa/Demos/Device/ClassDriver/VirtualSerialMassStorage/asf.xml delete mode 100644 lib/lufa/Demos/Device/ClassDriver/VirtualSerialMassStorage/doxyfile delete mode 100644 lib/lufa/Demos/Device/ClassDriver/VirtualSerialMassStorage/makefile delete mode 100644 lib/lufa/Demos/Device/ClassDriver/VirtualSerialMouse/Config/LUFAConfig.h delete mode 100644 lib/lufa/Demos/Device/ClassDriver/VirtualSerialMouse/Descriptors.c delete mode 100644 lib/lufa/Demos/Device/ClassDriver/VirtualSerialMouse/Descriptors.h delete mode 100644 lib/lufa/Demos/Device/ClassDriver/VirtualSerialMouse/LUFA VirtualSerialMouse.inf delete mode 100644 lib/lufa/Demos/Device/ClassDriver/VirtualSerialMouse/VirtualSerialMouse.c delete mode 100644 lib/lufa/Demos/Device/ClassDriver/VirtualSerialMouse/VirtualSerialMouse.h delete mode 100644 lib/lufa/Demos/Device/ClassDriver/VirtualSerialMouse/VirtualSerialMouse.txt delete mode 100644 lib/lufa/Demos/Device/ClassDriver/VirtualSerialMouse/asf.xml delete mode 100644 lib/lufa/Demos/Device/ClassDriver/VirtualSerialMouse/doxyfile delete mode 100644 lib/lufa/Demos/Device/ClassDriver/VirtualSerialMouse/makefile delete mode 100644 lib/lufa/Demos/Device/ClassDriver/makefile delete mode 100644 lib/lufa/Demos/Device/Incomplete/TestAndMeasurement/Config/LUFAConfig.h delete mode 100644 lib/lufa/Demos/Device/Incomplete/TestAndMeasurement/Descriptors.c delete mode 100644 lib/lufa/Demos/Device/Incomplete/TestAndMeasurement/Descriptors.h delete mode 100644 lib/lufa/Demos/Device/Incomplete/TestAndMeasurement/TestAndMeasurement.c delete mode 100644 lib/lufa/Demos/Device/Incomplete/TestAndMeasurement/TestAndMeasurement.h delete mode 100644 lib/lufa/Demos/Device/Incomplete/TestAndMeasurement/makefile delete mode 100644 lib/lufa/Demos/Device/LowLevel/AudioInput/AudioInput.c delete mode 100644 lib/lufa/Demos/Device/LowLevel/AudioInput/AudioInput.h delete mode 100644 lib/lufa/Demos/Device/LowLevel/AudioInput/AudioInput.txt delete mode 100644 lib/lufa/Demos/Device/LowLevel/AudioInput/Config/AppConfig.h delete mode 100644 lib/lufa/Demos/Device/LowLevel/AudioInput/Config/LUFAConfig.h delete mode 100644 lib/lufa/Demos/Device/LowLevel/AudioInput/Descriptors.c delete mode 100644 lib/lufa/Demos/Device/LowLevel/AudioInput/Descriptors.h delete mode 100644 lib/lufa/Demos/Device/LowLevel/AudioInput/asf.xml delete mode 100644 lib/lufa/Demos/Device/LowLevel/AudioInput/doxyfile delete mode 100644 lib/lufa/Demos/Device/LowLevel/AudioInput/makefile delete mode 100644 lib/lufa/Demos/Device/LowLevel/AudioOutput/AudioOutput.c delete mode 100644 lib/lufa/Demos/Device/LowLevel/AudioOutput/AudioOutput.h delete mode 100644 lib/lufa/Demos/Device/LowLevel/AudioOutput/AudioOutput.txt delete mode 100644 lib/lufa/Demos/Device/LowLevel/AudioOutput/Config/AppConfig.h delete mode 100644 lib/lufa/Demos/Device/LowLevel/AudioOutput/Config/LUFAConfig.h delete mode 100644 lib/lufa/Demos/Device/LowLevel/AudioOutput/Descriptors.c delete mode 100644 lib/lufa/Demos/Device/LowLevel/AudioOutput/Descriptors.h delete mode 100644 lib/lufa/Demos/Device/LowLevel/AudioOutput/asf.xml delete mode 100644 lib/lufa/Demos/Device/LowLevel/AudioOutput/doxyfile delete mode 100644 lib/lufa/Demos/Device/LowLevel/AudioOutput/makefile delete mode 100644 lib/lufa/Demos/Device/LowLevel/BulkVendor/BulkVendor.c delete mode 100644 lib/lufa/Demos/Device/LowLevel/BulkVendor/BulkVendor.h delete mode 100644 lib/lufa/Demos/Device/LowLevel/BulkVendor/BulkVendor.txt delete mode 100644 lib/lufa/Demos/Device/LowLevel/BulkVendor/Config/LUFAConfig.h delete mode 100644 lib/lufa/Demos/Device/LowLevel/BulkVendor/Descriptors.c delete mode 100644 lib/lufa/Demos/Device/LowLevel/BulkVendor/Descriptors.h delete mode 100644 lib/lufa/Demos/Device/LowLevel/BulkVendor/HostTestApp/test_bulk_vendor.py delete mode 100644 lib/lufa/Demos/Device/LowLevel/BulkVendor/WindowsDriver/LUFA_Bulk_Vendor_Demo.inf delete mode 100644 lib/lufa/Demos/Device/LowLevel/BulkVendor/WindowsDriver/amd64/libusb0.dll delete mode 100644 lib/lufa/Demos/Device/LowLevel/BulkVendor/WindowsDriver/amd64/libusb0.sys delete mode 100644 lib/lufa/Demos/Device/LowLevel/BulkVendor/WindowsDriver/ia64/libusb0.dll delete mode 100644 lib/lufa/Demos/Device/LowLevel/BulkVendor/WindowsDriver/ia64/libusb0.sys delete mode 100644 lib/lufa/Demos/Device/LowLevel/BulkVendor/WindowsDriver/installer_x64.exe delete mode 100644 lib/lufa/Demos/Device/LowLevel/BulkVendor/WindowsDriver/installer_x86.exe delete mode 100644 lib/lufa/Demos/Device/LowLevel/BulkVendor/WindowsDriver/license/libusb0/installer_license.txt delete mode 100644 lib/lufa/Demos/Device/LowLevel/BulkVendor/WindowsDriver/x86/libusb0.sys delete mode 100644 lib/lufa/Demos/Device/LowLevel/BulkVendor/WindowsDriver/x86/libusb0_x86.dll delete mode 100644 lib/lufa/Demos/Device/LowLevel/BulkVendor/asf.xml delete mode 100644 lib/lufa/Demos/Device/LowLevel/BulkVendor/doxyfile delete mode 100644 lib/lufa/Demos/Device/LowLevel/BulkVendor/makefile delete mode 100644 lib/lufa/Demos/Device/LowLevel/DualVirtualSerial/Config/LUFAConfig.h delete mode 100644 lib/lufa/Demos/Device/LowLevel/DualVirtualSerial/Descriptors.c delete mode 100644 lib/lufa/Demos/Device/LowLevel/DualVirtualSerial/Descriptors.h delete mode 100644 lib/lufa/Demos/Device/LowLevel/DualVirtualSerial/DualVirtualSerial.c delete mode 100644 lib/lufa/Demos/Device/LowLevel/DualVirtualSerial/DualVirtualSerial.h delete mode 100644 lib/lufa/Demos/Device/LowLevel/DualVirtualSerial/DualVirtualSerial.txt delete mode 100644 lib/lufa/Demos/Device/LowLevel/DualVirtualSerial/LUFA DualVirtualSerial.inf delete mode 100644 lib/lufa/Demos/Device/LowLevel/DualVirtualSerial/asf.xml delete mode 100644 lib/lufa/Demos/Device/LowLevel/DualVirtualSerial/doxyfile delete mode 100644 lib/lufa/Demos/Device/LowLevel/DualVirtualSerial/makefile delete mode 100644 lib/lufa/Demos/Device/LowLevel/GenericHID/Config/AppConfig.h delete mode 100644 lib/lufa/Demos/Device/LowLevel/GenericHID/Config/LUFAConfig.h delete mode 100644 lib/lufa/Demos/Device/LowLevel/GenericHID/Descriptors.c delete mode 100644 lib/lufa/Demos/Device/LowLevel/GenericHID/Descriptors.h delete mode 100644 lib/lufa/Demos/Device/LowLevel/GenericHID/GenericHID.c delete mode 100644 lib/lufa/Demos/Device/LowLevel/GenericHID/GenericHID.h delete mode 100644 lib/lufa/Demos/Device/LowLevel/GenericHID/GenericHID.txt delete mode 100644 lib/lufa/Demos/Device/LowLevel/GenericHID/HostTestApp/test_generic_hid.py delete mode 100644 lib/lufa/Demos/Device/LowLevel/GenericHID/asf.xml delete mode 100644 lib/lufa/Demos/Device/LowLevel/GenericHID/doxyfile delete mode 100644 lib/lufa/Demos/Device/LowLevel/GenericHID/makefile delete mode 100644 lib/lufa/Demos/Device/LowLevel/Joystick/Config/LUFAConfig.h delete mode 100644 lib/lufa/Demos/Device/LowLevel/Joystick/Descriptors.c delete mode 100644 lib/lufa/Demos/Device/LowLevel/Joystick/Descriptors.h delete mode 100644 lib/lufa/Demos/Device/LowLevel/Joystick/Joystick.c delete mode 100644 lib/lufa/Demos/Device/LowLevel/Joystick/Joystick.h delete mode 100644 lib/lufa/Demos/Device/LowLevel/Joystick/Joystick.txt delete mode 100644 lib/lufa/Demos/Device/LowLevel/Joystick/asf.xml delete mode 100644 lib/lufa/Demos/Device/LowLevel/Joystick/doxyfile delete mode 100644 lib/lufa/Demos/Device/LowLevel/Joystick/makefile delete mode 100644 lib/lufa/Demos/Device/LowLevel/Keyboard/Config/LUFAConfig.h delete mode 100644 lib/lufa/Demos/Device/LowLevel/Keyboard/Descriptors.c delete mode 100644 lib/lufa/Demos/Device/LowLevel/Keyboard/Descriptors.h delete mode 100644 lib/lufa/Demos/Device/LowLevel/Keyboard/Keyboard.c delete mode 100644 lib/lufa/Demos/Device/LowLevel/Keyboard/Keyboard.h delete mode 100644 lib/lufa/Demos/Device/LowLevel/Keyboard/Keyboard.txt delete mode 100644 lib/lufa/Demos/Device/LowLevel/Keyboard/asf.xml delete mode 100644 lib/lufa/Demos/Device/LowLevel/Keyboard/doxyfile delete mode 100644 lib/lufa/Demos/Device/LowLevel/Keyboard/makefile delete mode 100644 lib/lufa/Demos/Device/LowLevel/KeyboardMouse/Config/LUFAConfig.h delete mode 100644 lib/lufa/Demos/Device/LowLevel/KeyboardMouse/Descriptors.c delete mode 100644 lib/lufa/Demos/Device/LowLevel/KeyboardMouse/Descriptors.h delete mode 100644 lib/lufa/Demos/Device/LowLevel/KeyboardMouse/KeyboardMouse.c delete mode 100644 lib/lufa/Demos/Device/LowLevel/KeyboardMouse/KeyboardMouse.h delete mode 100644 lib/lufa/Demos/Device/LowLevel/KeyboardMouse/KeyboardMouse.txt delete mode 100644 lib/lufa/Demos/Device/LowLevel/KeyboardMouse/asf.xml delete mode 100644 lib/lufa/Demos/Device/LowLevel/KeyboardMouse/doxyfile delete mode 100644 lib/lufa/Demos/Device/LowLevel/KeyboardMouse/makefile delete mode 100644 lib/lufa/Demos/Device/LowLevel/MIDI/Config/LUFAConfig.h delete mode 100644 lib/lufa/Demos/Device/LowLevel/MIDI/Descriptors.c delete mode 100644 lib/lufa/Demos/Device/LowLevel/MIDI/Descriptors.h delete mode 100644 lib/lufa/Demos/Device/LowLevel/MIDI/MIDI.c delete mode 100644 lib/lufa/Demos/Device/LowLevel/MIDI/MIDI.h delete mode 100644 lib/lufa/Demos/Device/LowLevel/MIDI/MIDI.txt delete mode 100644 lib/lufa/Demos/Device/LowLevel/MIDI/asf.xml delete mode 100644 lib/lufa/Demos/Device/LowLevel/MIDI/doxyfile delete mode 100644 lib/lufa/Demos/Device/LowLevel/MIDI/makefile delete mode 100644 lib/lufa/Demos/Device/LowLevel/MassStorage/Config/AppConfig.h delete mode 100644 lib/lufa/Demos/Device/LowLevel/MassStorage/Config/LUFAConfig.h delete mode 100644 lib/lufa/Demos/Device/LowLevel/MassStorage/Descriptors.c delete mode 100644 lib/lufa/Demos/Device/LowLevel/MassStorage/Descriptors.h delete mode 100644 lib/lufa/Demos/Device/LowLevel/MassStorage/Lib/DataflashManager.c delete mode 100644 lib/lufa/Demos/Device/LowLevel/MassStorage/Lib/DataflashManager.h delete mode 100644 lib/lufa/Demos/Device/LowLevel/MassStorage/Lib/SCSI.c delete mode 100644 lib/lufa/Demos/Device/LowLevel/MassStorage/Lib/SCSI.h delete mode 100644 lib/lufa/Demos/Device/LowLevel/MassStorage/MassStorage.c delete mode 100644 lib/lufa/Demos/Device/LowLevel/MassStorage/MassStorage.h delete mode 100644 lib/lufa/Demos/Device/LowLevel/MassStorage/MassStorage.txt delete mode 100644 lib/lufa/Demos/Device/LowLevel/MassStorage/asf.xml delete mode 100644 lib/lufa/Demos/Device/LowLevel/MassStorage/doxyfile delete mode 100644 lib/lufa/Demos/Device/LowLevel/MassStorage/makefile delete mode 100644 lib/lufa/Demos/Device/LowLevel/Mouse/Config/LUFAConfig.h delete mode 100644 lib/lufa/Demos/Device/LowLevel/Mouse/Descriptors.c delete mode 100644 lib/lufa/Demos/Device/LowLevel/Mouse/Descriptors.h delete mode 100644 lib/lufa/Demos/Device/LowLevel/Mouse/Mouse.c delete mode 100644 lib/lufa/Demos/Device/LowLevel/Mouse/Mouse.h delete mode 100644 lib/lufa/Demos/Device/LowLevel/Mouse/Mouse.txt delete mode 100644 lib/lufa/Demos/Device/LowLevel/Mouse/asf.xml delete mode 100644 lib/lufa/Demos/Device/LowLevel/Mouse/doxyfile delete mode 100644 lib/lufa/Demos/Device/LowLevel/Mouse/makefile delete mode 100644 lib/lufa/Demos/Device/LowLevel/RNDISEthernet/Config/AppConfig.h delete mode 100644 lib/lufa/Demos/Device/LowLevel/RNDISEthernet/Config/LUFAConfig.h delete mode 100644 lib/lufa/Demos/Device/LowLevel/RNDISEthernet/Descriptors.c delete mode 100644 lib/lufa/Demos/Device/LowLevel/RNDISEthernet/Descriptors.h delete mode 100644 lib/lufa/Demos/Device/LowLevel/RNDISEthernet/LUFA RNDIS.inf delete mode 100644 lib/lufa/Demos/Device/LowLevel/RNDISEthernet/Lib/ARP.c delete mode 100644 lib/lufa/Demos/Device/LowLevel/RNDISEthernet/Lib/ARP.h delete mode 100644 lib/lufa/Demos/Device/LowLevel/RNDISEthernet/Lib/DHCP.c delete mode 100644 lib/lufa/Demos/Device/LowLevel/RNDISEthernet/Lib/DHCP.h delete mode 100644 lib/lufa/Demos/Device/LowLevel/RNDISEthernet/Lib/Ethernet.c delete mode 100644 lib/lufa/Demos/Device/LowLevel/RNDISEthernet/Lib/Ethernet.h delete mode 100644 lib/lufa/Demos/Device/LowLevel/RNDISEthernet/Lib/EthernetProtocols.h delete mode 100644 lib/lufa/Demos/Device/LowLevel/RNDISEthernet/Lib/ICMP.c delete mode 100644 lib/lufa/Demos/Device/LowLevel/RNDISEthernet/Lib/ICMP.h delete mode 100644 lib/lufa/Demos/Device/LowLevel/RNDISEthernet/Lib/IP.c delete mode 100644 lib/lufa/Demos/Device/LowLevel/RNDISEthernet/Lib/IP.h delete mode 100644 lib/lufa/Demos/Device/LowLevel/RNDISEthernet/Lib/ProtocolDecoders.c delete mode 100644 lib/lufa/Demos/Device/LowLevel/RNDISEthernet/Lib/ProtocolDecoders.h delete mode 100644 lib/lufa/Demos/Device/LowLevel/RNDISEthernet/Lib/RNDIS.c delete mode 100644 lib/lufa/Demos/Device/LowLevel/RNDISEthernet/Lib/RNDIS.h delete mode 100644 lib/lufa/Demos/Device/LowLevel/RNDISEthernet/Lib/TCP.c delete mode 100644 lib/lufa/Demos/Device/LowLevel/RNDISEthernet/Lib/TCP.h delete mode 100644 lib/lufa/Demos/Device/LowLevel/RNDISEthernet/Lib/UDP.c delete mode 100644 lib/lufa/Demos/Device/LowLevel/RNDISEthernet/Lib/UDP.h delete mode 100644 lib/lufa/Demos/Device/LowLevel/RNDISEthernet/Lib/Webserver.c delete mode 100644 lib/lufa/Demos/Device/LowLevel/RNDISEthernet/Lib/Webserver.h delete mode 100644 lib/lufa/Demos/Device/LowLevel/RNDISEthernet/RNDISEthernet.c delete mode 100644 lib/lufa/Demos/Device/LowLevel/RNDISEthernet/RNDISEthernet.h delete mode 100644 lib/lufa/Demos/Device/LowLevel/RNDISEthernet/RNDISEthernet.txt delete mode 100644 lib/lufa/Demos/Device/LowLevel/RNDISEthernet/asf.xml delete mode 100644 lib/lufa/Demos/Device/LowLevel/RNDISEthernet/doxyfile delete mode 100644 lib/lufa/Demos/Device/LowLevel/RNDISEthernet/makefile delete mode 100644 lib/lufa/Demos/Device/LowLevel/VirtualSerial/Config/LUFAConfig.h delete mode 100644 lib/lufa/Demos/Device/LowLevel/VirtualSerial/Descriptors.c delete mode 100644 lib/lufa/Demos/Device/LowLevel/VirtualSerial/Descriptors.h delete mode 100644 lib/lufa/Demos/Device/LowLevel/VirtualSerial/LUFA VirtualSerial.inf delete mode 100644 lib/lufa/Demos/Device/LowLevel/VirtualSerial/VirtualSerial.c delete mode 100644 lib/lufa/Demos/Device/LowLevel/VirtualSerial/VirtualSerial.h delete mode 100644 lib/lufa/Demos/Device/LowLevel/VirtualSerial/VirtualSerial.txt delete mode 100644 lib/lufa/Demos/Device/LowLevel/VirtualSerial/asf.xml delete mode 100644 lib/lufa/Demos/Device/LowLevel/VirtualSerial/doxyfile delete mode 100644 lib/lufa/Demos/Device/LowLevel/VirtualSerial/makefile delete mode 100644 lib/lufa/Demos/Device/LowLevel/makefile delete mode 100644 lib/lufa/Demos/Device/makefile delete mode 100644 lib/lufa/Demos/DualRole/ClassDriver/MouseHostDevice/Config/LUFAConfig.h delete mode 100644 lib/lufa/Demos/DualRole/ClassDriver/MouseHostDevice/Descriptors.c delete mode 100644 lib/lufa/Demos/DualRole/ClassDriver/MouseHostDevice/Descriptors.h delete mode 100644 lib/lufa/Demos/DualRole/ClassDriver/MouseHostDevice/DeviceFunctions.c delete mode 100644 lib/lufa/Demos/DualRole/ClassDriver/MouseHostDevice/DeviceFunctions.h delete mode 100644 lib/lufa/Demos/DualRole/ClassDriver/MouseHostDevice/HostFunctions.c delete mode 100644 lib/lufa/Demos/DualRole/ClassDriver/MouseHostDevice/HostFunctions.h delete mode 100644 lib/lufa/Demos/DualRole/ClassDriver/MouseHostDevice/MouseHostDevice.c delete mode 100644 lib/lufa/Demos/DualRole/ClassDriver/MouseHostDevice/MouseHostDevice.h delete mode 100644 lib/lufa/Demos/DualRole/ClassDriver/MouseHostDevice/MouseHostDevice.txt delete mode 100644 lib/lufa/Demos/DualRole/ClassDriver/MouseHostDevice/asf.xml delete mode 100644 lib/lufa/Demos/DualRole/ClassDriver/MouseHostDevice/doxyfile delete mode 100644 lib/lufa/Demos/DualRole/ClassDriver/MouseHostDevice/makefile delete mode 100644 lib/lufa/Demos/DualRole/ClassDriver/makefile delete mode 100644 lib/lufa/Demos/DualRole/makefile delete mode 100644 lib/lufa/Demos/Host/ClassDriver/AndroidAccessoryHost/AndroidAccessoryHost.c delete mode 100644 lib/lufa/Demos/Host/ClassDriver/AndroidAccessoryHost/AndroidAccessoryHost.h delete mode 100644 lib/lufa/Demos/Host/ClassDriver/AndroidAccessoryHost/AndroidAccessoryHost.txt delete mode 100644 lib/lufa/Demos/Host/ClassDriver/AndroidAccessoryHost/AndroidHostApp/AndroidHostApp.zip delete mode 100644 lib/lufa/Demos/Host/ClassDriver/AndroidAccessoryHost/Config/LUFAConfig.h delete mode 100644 lib/lufa/Demos/Host/ClassDriver/AndroidAccessoryHost/asf.xml delete mode 100644 lib/lufa/Demos/Host/ClassDriver/AndroidAccessoryHost/doxyfile delete mode 100644 lib/lufa/Demos/Host/ClassDriver/AndroidAccessoryHost/makefile delete mode 100644 lib/lufa/Demos/Host/ClassDriver/AudioInputHost/AudioInputHost.c delete mode 100644 lib/lufa/Demos/Host/ClassDriver/AudioInputHost/AudioInputHost.h delete mode 100644 lib/lufa/Demos/Host/ClassDriver/AudioInputHost/AudioInputHost.txt delete mode 100644 lib/lufa/Demos/Host/ClassDriver/AudioInputHost/Config/LUFAConfig.h delete mode 100644 lib/lufa/Demos/Host/ClassDriver/AudioInputHost/asf.xml delete mode 100644 lib/lufa/Demos/Host/ClassDriver/AudioInputHost/doxyfile delete mode 100644 lib/lufa/Demos/Host/ClassDriver/AudioInputHost/makefile delete mode 100644 lib/lufa/Demos/Host/ClassDriver/AudioOutputHost/AudioOutputHost.c delete mode 100644 lib/lufa/Demos/Host/ClassDriver/AudioOutputHost/AudioOutputHost.h delete mode 100644 lib/lufa/Demos/Host/ClassDriver/AudioOutputHost/AudioOutputHost.txt delete mode 100644 lib/lufa/Demos/Host/ClassDriver/AudioOutputHost/Config/AppConfig.h delete mode 100644 lib/lufa/Demos/Host/ClassDriver/AudioOutputHost/Config/LUFAConfig.h delete mode 100644 lib/lufa/Demos/Host/ClassDriver/AudioOutputHost/asf.xml delete mode 100644 lib/lufa/Demos/Host/ClassDriver/AudioOutputHost/doxyfile delete mode 100644 lib/lufa/Demos/Host/ClassDriver/AudioOutputHost/makefile delete mode 100644 lib/lufa/Demos/Host/ClassDriver/JoystickHostWithParser/Config/LUFAConfig.h delete mode 100644 lib/lufa/Demos/Host/ClassDriver/JoystickHostWithParser/JoystickHostWithParser.c delete mode 100644 lib/lufa/Demos/Host/ClassDriver/JoystickHostWithParser/JoystickHostWithParser.h delete mode 100644 lib/lufa/Demos/Host/ClassDriver/JoystickHostWithParser/JoystickHostWithParser.txt delete mode 100644 lib/lufa/Demos/Host/ClassDriver/JoystickHostWithParser/asf.xml delete mode 100644 lib/lufa/Demos/Host/ClassDriver/JoystickHostWithParser/doxyfile delete mode 100644 lib/lufa/Demos/Host/ClassDriver/JoystickHostWithParser/makefile delete mode 100644 lib/lufa/Demos/Host/ClassDriver/KeyboardHost/Config/LUFAConfig.h delete mode 100644 lib/lufa/Demos/Host/ClassDriver/KeyboardHost/KeyboardHost.c delete mode 100644 lib/lufa/Demos/Host/ClassDriver/KeyboardHost/KeyboardHost.h delete mode 100644 lib/lufa/Demos/Host/ClassDriver/KeyboardHost/KeyboardHost.txt delete mode 100644 lib/lufa/Demos/Host/ClassDriver/KeyboardHost/asf.xml delete mode 100644 lib/lufa/Demos/Host/ClassDriver/KeyboardHost/doxyfile delete mode 100644 lib/lufa/Demos/Host/ClassDriver/KeyboardHost/makefile delete mode 100644 lib/lufa/Demos/Host/ClassDriver/KeyboardHostWithParser/Config/LUFAConfig.h delete mode 100644 lib/lufa/Demos/Host/ClassDriver/KeyboardHostWithParser/KeyboardHostWithParser.c delete mode 100644 lib/lufa/Demos/Host/ClassDriver/KeyboardHostWithParser/KeyboardHostWithParser.h delete mode 100644 lib/lufa/Demos/Host/ClassDriver/KeyboardHostWithParser/KeyboardHostWithParser.txt delete mode 100644 lib/lufa/Demos/Host/ClassDriver/KeyboardHostWithParser/asf.xml delete mode 100644 lib/lufa/Demos/Host/ClassDriver/KeyboardHostWithParser/doxyfile delete mode 100644 lib/lufa/Demos/Host/ClassDriver/KeyboardHostWithParser/makefile delete mode 100644 lib/lufa/Demos/Host/ClassDriver/MIDIHost/Config/LUFAConfig.h delete mode 100644 lib/lufa/Demos/Host/ClassDriver/MIDIHost/MIDIHost.c delete mode 100644 lib/lufa/Demos/Host/ClassDriver/MIDIHost/MIDIHost.h delete mode 100644 lib/lufa/Demos/Host/ClassDriver/MIDIHost/MIDIHost.txt delete mode 100644 lib/lufa/Demos/Host/ClassDriver/MIDIHost/asf.xml delete mode 100644 lib/lufa/Demos/Host/ClassDriver/MIDIHost/doxyfile delete mode 100644 lib/lufa/Demos/Host/ClassDriver/MIDIHost/makefile delete mode 100644 lib/lufa/Demos/Host/ClassDriver/MassStorageHost/Config/LUFAConfig.h delete mode 100644 lib/lufa/Demos/Host/ClassDriver/MassStorageHost/MassStorageHost.c delete mode 100644 lib/lufa/Demos/Host/ClassDriver/MassStorageHost/MassStorageHost.h delete mode 100644 lib/lufa/Demos/Host/ClassDriver/MassStorageHost/MassStorageHost.txt delete mode 100644 lib/lufa/Demos/Host/ClassDriver/MassStorageHost/asf.xml delete mode 100644 lib/lufa/Demos/Host/ClassDriver/MassStorageHost/doxyfile delete mode 100644 lib/lufa/Demos/Host/ClassDriver/MassStorageHost/makefile delete mode 100644 lib/lufa/Demos/Host/ClassDriver/MouseHost/Config/LUFAConfig.h delete mode 100644 lib/lufa/Demos/Host/ClassDriver/MouseHost/MouseHost.c delete mode 100644 lib/lufa/Demos/Host/ClassDriver/MouseHost/MouseHost.h delete mode 100644 lib/lufa/Demos/Host/ClassDriver/MouseHost/MouseHost.txt delete mode 100644 lib/lufa/Demos/Host/ClassDriver/MouseHost/asf.xml delete mode 100644 lib/lufa/Demos/Host/ClassDriver/MouseHost/doxyfile delete mode 100644 lib/lufa/Demos/Host/ClassDriver/MouseHost/makefile delete mode 100644 lib/lufa/Demos/Host/ClassDriver/MouseHostWithParser/Config/LUFAConfig.h delete mode 100644 lib/lufa/Demos/Host/ClassDriver/MouseHostWithParser/MouseHostWithParser.c delete mode 100644 lib/lufa/Demos/Host/ClassDriver/MouseHostWithParser/MouseHostWithParser.h delete mode 100644 lib/lufa/Demos/Host/ClassDriver/MouseHostWithParser/MouseHostWithParser.txt delete mode 100644 lib/lufa/Demos/Host/ClassDriver/MouseHostWithParser/asf.xml delete mode 100644 lib/lufa/Demos/Host/ClassDriver/MouseHostWithParser/doxyfile delete mode 100644 lib/lufa/Demos/Host/ClassDriver/MouseHostWithParser/makefile delete mode 100644 lib/lufa/Demos/Host/ClassDriver/PrinterHost/Config/LUFAConfig.h delete mode 100644 lib/lufa/Demos/Host/ClassDriver/PrinterHost/PrinterHost.c delete mode 100644 lib/lufa/Demos/Host/ClassDriver/PrinterHost/PrinterHost.h delete mode 100644 lib/lufa/Demos/Host/ClassDriver/PrinterHost/PrinterHost.txt delete mode 100644 lib/lufa/Demos/Host/ClassDriver/PrinterHost/asf.xml delete mode 100644 lib/lufa/Demos/Host/ClassDriver/PrinterHost/doxyfile delete mode 100644 lib/lufa/Demos/Host/ClassDriver/PrinterHost/makefile delete mode 100644 lib/lufa/Demos/Host/ClassDriver/RNDISEthernetHost/Config/LUFAConfig.h delete mode 100644 lib/lufa/Demos/Host/ClassDriver/RNDISEthernetHost/RNDISEthernetHost.c delete mode 100644 lib/lufa/Demos/Host/ClassDriver/RNDISEthernetHost/RNDISEthernetHost.h delete mode 100644 lib/lufa/Demos/Host/ClassDriver/RNDISEthernetHost/RNDISEthernetHost.txt delete mode 100644 lib/lufa/Demos/Host/ClassDriver/RNDISEthernetHost/asf.xml delete mode 100644 lib/lufa/Demos/Host/ClassDriver/RNDISEthernetHost/doxyfile delete mode 100644 lib/lufa/Demos/Host/ClassDriver/RNDISEthernetHost/makefile delete mode 100644 lib/lufa/Demos/Host/ClassDriver/StillImageHost/Config/LUFAConfig.h delete mode 100644 lib/lufa/Demos/Host/ClassDriver/StillImageHost/StillImageHost.c delete mode 100644 lib/lufa/Demos/Host/ClassDriver/StillImageHost/StillImageHost.h delete mode 100644 lib/lufa/Demos/Host/ClassDriver/StillImageHost/StillImageHost.txt delete mode 100644 lib/lufa/Demos/Host/ClassDriver/StillImageHost/asf.xml delete mode 100644 lib/lufa/Demos/Host/ClassDriver/StillImageHost/doxyfile delete mode 100644 lib/lufa/Demos/Host/ClassDriver/StillImageHost/makefile delete mode 100644 lib/lufa/Demos/Host/ClassDriver/VirtualSerialHost/Config/LUFAConfig.h delete mode 100644 lib/lufa/Demos/Host/ClassDriver/VirtualSerialHost/VirtualSerialHost.c delete mode 100644 lib/lufa/Demos/Host/ClassDriver/VirtualSerialHost/VirtualSerialHost.h delete mode 100644 lib/lufa/Demos/Host/ClassDriver/VirtualSerialHost/VirtualSerialHost.txt delete mode 100644 lib/lufa/Demos/Host/ClassDriver/VirtualSerialHost/asf.xml delete mode 100644 lib/lufa/Demos/Host/ClassDriver/VirtualSerialHost/doxyfile delete mode 100644 lib/lufa/Demos/Host/ClassDriver/VirtualSerialHost/makefile delete mode 100644 lib/lufa/Demos/Host/ClassDriver/makefile delete mode 100644 lib/lufa/Demos/Host/LowLevel/AndroidAccessoryHost/AndroidAccessoryHost.c delete mode 100644 lib/lufa/Demos/Host/LowLevel/AndroidAccessoryHost/AndroidAccessoryHost.h delete mode 100644 lib/lufa/Demos/Host/LowLevel/AndroidAccessoryHost/AndroidAccessoryHost.txt delete mode 100644 lib/lufa/Demos/Host/LowLevel/AndroidAccessoryHost/Config/LUFAConfig.h delete mode 100644 lib/lufa/Demos/Host/LowLevel/AndroidAccessoryHost/ConfigDescriptor.c delete mode 100644 lib/lufa/Demos/Host/LowLevel/AndroidAccessoryHost/ConfigDescriptor.h delete mode 100644 lib/lufa/Demos/Host/LowLevel/AndroidAccessoryHost/DeviceDescriptor.c delete mode 100644 lib/lufa/Demos/Host/LowLevel/AndroidAccessoryHost/DeviceDescriptor.h delete mode 100644 lib/lufa/Demos/Host/LowLevel/AndroidAccessoryHost/Lib/AndroidAccessoryCommands.c delete mode 100644 lib/lufa/Demos/Host/LowLevel/AndroidAccessoryHost/Lib/AndroidAccessoryCommands.h delete mode 100644 lib/lufa/Demos/Host/LowLevel/AndroidAccessoryHost/asf.xml delete mode 100644 lib/lufa/Demos/Host/LowLevel/AndroidAccessoryHost/doxyfile delete mode 100644 lib/lufa/Demos/Host/LowLevel/AndroidAccessoryHost/makefile delete mode 100644 lib/lufa/Demos/Host/LowLevel/AudioInputHost/AudioInputHost.c delete mode 100644 lib/lufa/Demos/Host/LowLevel/AudioInputHost/AudioInputHost.h delete mode 100644 lib/lufa/Demos/Host/LowLevel/AudioInputHost/AudioInputHost.txt delete mode 100644 lib/lufa/Demos/Host/LowLevel/AudioInputHost/Config/LUFAConfig.h delete mode 100644 lib/lufa/Demos/Host/LowLevel/AudioInputHost/ConfigDescriptor.c delete mode 100644 lib/lufa/Demos/Host/LowLevel/AudioInputHost/ConfigDescriptor.h delete mode 100644 lib/lufa/Demos/Host/LowLevel/AudioInputHost/asf.xml delete mode 100644 lib/lufa/Demos/Host/LowLevel/AudioInputHost/doxyfile delete mode 100644 lib/lufa/Demos/Host/LowLevel/AudioInputHost/makefile delete mode 100644 lib/lufa/Demos/Host/LowLevel/AudioOutputHost/AudioOutputHost.c delete mode 100644 lib/lufa/Demos/Host/LowLevel/AudioOutputHost/AudioOutputHost.h delete mode 100644 lib/lufa/Demos/Host/LowLevel/AudioOutputHost/AudioOutputHost.txt delete mode 100644 lib/lufa/Demos/Host/LowLevel/AudioOutputHost/Config/AppConfig.h delete mode 100644 lib/lufa/Demos/Host/LowLevel/AudioOutputHost/Config/LUFAConfig.h delete mode 100644 lib/lufa/Demos/Host/LowLevel/AudioOutputHost/ConfigDescriptor.c delete mode 100644 lib/lufa/Demos/Host/LowLevel/AudioOutputHost/ConfigDescriptor.h delete mode 100644 lib/lufa/Demos/Host/LowLevel/AudioOutputHost/asf.xml delete mode 100644 lib/lufa/Demos/Host/LowLevel/AudioOutputHost/doxyfile delete mode 100644 lib/lufa/Demos/Host/LowLevel/AudioOutputHost/makefile delete mode 100644 lib/lufa/Demos/Host/LowLevel/GenericHIDHost/Config/LUFAConfig.h delete mode 100644 lib/lufa/Demos/Host/LowLevel/GenericHIDHost/ConfigDescriptor.c delete mode 100644 lib/lufa/Demos/Host/LowLevel/GenericHIDHost/ConfigDescriptor.h delete mode 100644 lib/lufa/Demos/Host/LowLevel/GenericHIDHost/GenericHIDHost.c delete mode 100644 lib/lufa/Demos/Host/LowLevel/GenericHIDHost/GenericHIDHost.h delete mode 100644 lib/lufa/Demos/Host/LowLevel/GenericHIDHost/GenericHIDHost.txt delete mode 100644 lib/lufa/Demos/Host/LowLevel/GenericHIDHost/asf.xml delete mode 100644 lib/lufa/Demos/Host/LowLevel/GenericHIDHost/doxyfile delete mode 100644 lib/lufa/Demos/Host/LowLevel/GenericHIDHost/makefile delete mode 100644 lib/lufa/Demos/Host/LowLevel/JoystickHostWithParser/Config/LUFAConfig.h delete mode 100644 lib/lufa/Demos/Host/LowLevel/JoystickHostWithParser/ConfigDescriptor.c delete mode 100644 lib/lufa/Demos/Host/LowLevel/JoystickHostWithParser/ConfigDescriptor.h delete mode 100644 lib/lufa/Demos/Host/LowLevel/JoystickHostWithParser/HIDReport.c delete mode 100644 lib/lufa/Demos/Host/LowLevel/JoystickHostWithParser/HIDReport.h delete mode 100644 lib/lufa/Demos/Host/LowLevel/JoystickHostWithParser/JoystickHostWithParser.c delete mode 100644 lib/lufa/Demos/Host/LowLevel/JoystickHostWithParser/JoystickHostWithParser.h delete mode 100644 lib/lufa/Demos/Host/LowLevel/JoystickHostWithParser/JoystickHostWithParser.txt delete mode 100644 lib/lufa/Demos/Host/LowLevel/JoystickHostWithParser/asf.xml delete mode 100644 lib/lufa/Demos/Host/LowLevel/JoystickHostWithParser/doxyfile delete mode 100644 lib/lufa/Demos/Host/LowLevel/JoystickHostWithParser/makefile delete mode 100644 lib/lufa/Demos/Host/LowLevel/KeyboardHost/Config/LUFAConfig.h delete mode 100644 lib/lufa/Demos/Host/LowLevel/KeyboardHost/ConfigDescriptor.c delete mode 100644 lib/lufa/Demos/Host/LowLevel/KeyboardHost/ConfigDescriptor.h delete mode 100644 lib/lufa/Demos/Host/LowLevel/KeyboardHost/KeyboardHost.c delete mode 100644 lib/lufa/Demos/Host/LowLevel/KeyboardHost/KeyboardHost.h delete mode 100644 lib/lufa/Demos/Host/LowLevel/KeyboardHost/KeyboardHost.txt delete mode 100644 lib/lufa/Demos/Host/LowLevel/KeyboardHost/asf.xml delete mode 100644 lib/lufa/Demos/Host/LowLevel/KeyboardHost/doxyfile delete mode 100644 lib/lufa/Demos/Host/LowLevel/KeyboardHost/makefile delete mode 100644 lib/lufa/Demos/Host/LowLevel/KeyboardHostWithParser/Config/LUFAConfig.h delete mode 100644 lib/lufa/Demos/Host/LowLevel/KeyboardHostWithParser/ConfigDescriptor.c delete mode 100644 lib/lufa/Demos/Host/LowLevel/KeyboardHostWithParser/ConfigDescriptor.h delete mode 100644 lib/lufa/Demos/Host/LowLevel/KeyboardHostWithParser/HIDReport.c delete mode 100644 lib/lufa/Demos/Host/LowLevel/KeyboardHostWithParser/HIDReport.h delete mode 100644 lib/lufa/Demos/Host/LowLevel/KeyboardHostWithParser/KeyboardHostWithParser.c delete mode 100644 lib/lufa/Demos/Host/LowLevel/KeyboardHostWithParser/KeyboardHostWithParser.h delete mode 100644 lib/lufa/Demos/Host/LowLevel/KeyboardHostWithParser/KeyboardHostWithParser.txt delete mode 100644 lib/lufa/Demos/Host/LowLevel/KeyboardHostWithParser/asf.xml delete mode 100644 lib/lufa/Demos/Host/LowLevel/KeyboardHostWithParser/doxyfile delete mode 100644 lib/lufa/Demos/Host/LowLevel/KeyboardHostWithParser/makefile delete mode 100644 lib/lufa/Demos/Host/LowLevel/MIDIHost/Config/LUFAConfig.h delete mode 100644 lib/lufa/Demos/Host/LowLevel/MIDIHost/ConfigDescriptor.c delete mode 100644 lib/lufa/Demos/Host/LowLevel/MIDIHost/ConfigDescriptor.h delete mode 100644 lib/lufa/Demos/Host/LowLevel/MIDIHost/MIDIHost.c delete mode 100644 lib/lufa/Demos/Host/LowLevel/MIDIHost/MIDIHost.h delete mode 100644 lib/lufa/Demos/Host/LowLevel/MIDIHost/MIDIHost.txt delete mode 100644 lib/lufa/Demos/Host/LowLevel/MIDIHost/asf.xml delete mode 100644 lib/lufa/Demos/Host/LowLevel/MIDIHost/doxyfile delete mode 100644 lib/lufa/Demos/Host/LowLevel/MIDIHost/makefile delete mode 100644 lib/lufa/Demos/Host/LowLevel/MassStorageHost/Config/LUFAConfig.h delete mode 100644 lib/lufa/Demos/Host/LowLevel/MassStorageHost/ConfigDescriptor.c delete mode 100644 lib/lufa/Demos/Host/LowLevel/MassStorageHost/ConfigDescriptor.h delete mode 100644 lib/lufa/Demos/Host/LowLevel/MassStorageHost/Lib/MassStoreCommands.c delete mode 100644 lib/lufa/Demos/Host/LowLevel/MassStorageHost/Lib/MassStoreCommands.h delete mode 100644 lib/lufa/Demos/Host/LowLevel/MassStorageHost/MassStorageHost.c delete mode 100644 lib/lufa/Demos/Host/LowLevel/MassStorageHost/MassStorageHost.h delete mode 100644 lib/lufa/Demos/Host/LowLevel/MassStorageHost/MassStorageHost.txt delete mode 100644 lib/lufa/Demos/Host/LowLevel/MassStorageHost/asf.xml delete mode 100644 lib/lufa/Demos/Host/LowLevel/MassStorageHost/doxyfile delete mode 100644 lib/lufa/Demos/Host/LowLevel/MassStorageHost/makefile delete mode 100644 lib/lufa/Demos/Host/LowLevel/MouseHost/Config/LUFAConfig.h delete mode 100644 lib/lufa/Demos/Host/LowLevel/MouseHost/ConfigDescriptor.c delete mode 100644 lib/lufa/Demos/Host/LowLevel/MouseHost/ConfigDescriptor.h delete mode 100644 lib/lufa/Demos/Host/LowLevel/MouseHost/MouseHost.c delete mode 100644 lib/lufa/Demos/Host/LowLevel/MouseHost/MouseHost.h delete mode 100644 lib/lufa/Demos/Host/LowLevel/MouseHost/MouseHost.txt delete mode 100644 lib/lufa/Demos/Host/LowLevel/MouseHost/asf.xml delete mode 100644 lib/lufa/Demos/Host/LowLevel/MouseHost/doxyfile delete mode 100644 lib/lufa/Demos/Host/LowLevel/MouseHost/makefile delete mode 100644 lib/lufa/Demos/Host/LowLevel/MouseHostWithParser/Config/LUFAConfig.h delete mode 100644 lib/lufa/Demos/Host/LowLevel/MouseHostWithParser/ConfigDescriptor.c delete mode 100644 lib/lufa/Demos/Host/LowLevel/MouseHostWithParser/ConfigDescriptor.h delete mode 100644 lib/lufa/Demos/Host/LowLevel/MouseHostWithParser/HIDReport.c delete mode 100644 lib/lufa/Demos/Host/LowLevel/MouseHostWithParser/HIDReport.h delete mode 100644 lib/lufa/Demos/Host/LowLevel/MouseHostWithParser/MouseHostWithParser.c delete mode 100644 lib/lufa/Demos/Host/LowLevel/MouseHostWithParser/MouseHostWithParser.h delete mode 100644 lib/lufa/Demos/Host/LowLevel/MouseHostWithParser/MouseHostWithParser.txt delete mode 100644 lib/lufa/Demos/Host/LowLevel/MouseHostWithParser/asf.xml delete mode 100644 lib/lufa/Demos/Host/LowLevel/MouseHostWithParser/doxyfile delete mode 100644 lib/lufa/Demos/Host/LowLevel/MouseHostWithParser/makefile delete mode 100644 lib/lufa/Demos/Host/LowLevel/PrinterHost/Config/LUFAConfig.h delete mode 100644 lib/lufa/Demos/Host/LowLevel/PrinterHost/ConfigDescriptor.c delete mode 100644 lib/lufa/Demos/Host/LowLevel/PrinterHost/ConfigDescriptor.h delete mode 100644 lib/lufa/Demos/Host/LowLevel/PrinterHost/Lib/PrinterCommands.c delete mode 100644 lib/lufa/Demos/Host/LowLevel/PrinterHost/Lib/PrinterCommands.h delete mode 100644 lib/lufa/Demos/Host/LowLevel/PrinterHost/PrinterHost.c delete mode 100644 lib/lufa/Demos/Host/LowLevel/PrinterHost/PrinterHost.h delete mode 100644 lib/lufa/Demos/Host/LowLevel/PrinterHost/PrinterHost.txt delete mode 100644 lib/lufa/Demos/Host/LowLevel/PrinterHost/asf.xml delete mode 100644 lib/lufa/Demos/Host/LowLevel/PrinterHost/doxyfile delete mode 100644 lib/lufa/Demos/Host/LowLevel/PrinterHost/makefile delete mode 100644 lib/lufa/Demos/Host/LowLevel/RNDISEthernetHost/Config/LUFAConfig.h delete mode 100644 lib/lufa/Demos/Host/LowLevel/RNDISEthernetHost/ConfigDescriptor.c delete mode 100644 lib/lufa/Demos/Host/LowLevel/RNDISEthernetHost/ConfigDescriptor.h delete mode 100644 lib/lufa/Demos/Host/LowLevel/RNDISEthernetHost/Lib/RNDISCommands.c delete mode 100644 lib/lufa/Demos/Host/LowLevel/RNDISEthernetHost/Lib/RNDISCommands.h delete mode 100644 lib/lufa/Demos/Host/LowLevel/RNDISEthernetHost/RNDISEthernetHost.c delete mode 100644 lib/lufa/Demos/Host/LowLevel/RNDISEthernetHost/RNDISEthernetHost.h delete mode 100644 lib/lufa/Demos/Host/LowLevel/RNDISEthernetHost/RNDISHost.txt delete mode 100644 lib/lufa/Demos/Host/LowLevel/RNDISEthernetHost/asf.xml delete mode 100644 lib/lufa/Demos/Host/LowLevel/RNDISEthernetHost/doxyfile delete mode 100644 lib/lufa/Demos/Host/LowLevel/RNDISEthernetHost/makefile delete mode 100644 lib/lufa/Demos/Host/LowLevel/StillImageHost/Config/LUFAConfig.h delete mode 100644 lib/lufa/Demos/Host/LowLevel/StillImageHost/ConfigDescriptor.c delete mode 100644 lib/lufa/Demos/Host/LowLevel/StillImageHost/ConfigDescriptor.h delete mode 100644 lib/lufa/Demos/Host/LowLevel/StillImageHost/Lib/PIMACodes.h delete mode 100644 lib/lufa/Demos/Host/LowLevel/StillImageHost/Lib/StillImageCommands.c delete mode 100644 lib/lufa/Demos/Host/LowLevel/StillImageHost/Lib/StillImageCommands.h delete mode 100644 lib/lufa/Demos/Host/LowLevel/StillImageHost/StillImageHost.c delete mode 100644 lib/lufa/Demos/Host/LowLevel/StillImageHost/StillImageHost.h delete mode 100644 lib/lufa/Demos/Host/LowLevel/StillImageHost/StillImageHost.txt delete mode 100644 lib/lufa/Demos/Host/LowLevel/StillImageHost/asf.xml delete mode 100644 lib/lufa/Demos/Host/LowLevel/StillImageHost/doxyfile delete mode 100644 lib/lufa/Demos/Host/LowLevel/StillImageHost/makefile delete mode 100644 lib/lufa/Demos/Host/LowLevel/VirtualSerialHost/Config/LUFAConfig.h delete mode 100644 lib/lufa/Demos/Host/LowLevel/VirtualSerialHost/ConfigDescriptor.c delete mode 100644 lib/lufa/Demos/Host/LowLevel/VirtualSerialHost/ConfigDescriptor.h delete mode 100644 lib/lufa/Demos/Host/LowLevel/VirtualSerialHost/VirtualSerialHost.c delete mode 100644 lib/lufa/Demos/Host/LowLevel/VirtualSerialHost/VirtualSerialHost.h delete mode 100644 lib/lufa/Demos/Host/LowLevel/VirtualSerialHost/VirtualSerialHost.txt delete mode 100644 lib/lufa/Demos/Host/LowLevel/VirtualSerialHost/asf.xml delete mode 100644 lib/lufa/Demos/Host/LowLevel/VirtualSerialHost/doxyfile delete mode 100644 lib/lufa/Demos/Host/LowLevel/VirtualSerialHost/makefile delete mode 100644 lib/lufa/Demos/Host/LowLevel/makefile delete mode 100644 lib/lufa/Demos/Host/makefile delete mode 100644 lib/lufa/Demos/makefile delete mode 100644 lib/lufa/LUFA/Build/DMBS/.gitignore delete mode 100644 lib/lufa/LUFA/Build/DMBS/DMBS/HID_EEPROM_Loader/HID_EEPROM_Loader.c delete mode 100644 lib/lufa/LUFA/Build/DMBS/DMBS/HID_EEPROM_Loader/makefile delete mode 100644 lib/lufa/LUFA/Build/DMBS/DMBS/License.txt delete mode 100644 lib/lufa/LUFA/Build/DMBS/DMBS/ModulesOverview.md delete mode 100644 lib/lufa/LUFA/Build/DMBS/DMBS/WritingYourOwnModules.md delete mode 100644 lib/lufa/LUFA/Build/DMBS/DMBS/atprogram.md delete mode 100644 lib/lufa/LUFA/Build/DMBS/DMBS/atprogram.mk delete mode 100644 lib/lufa/LUFA/Build/DMBS/DMBS/avrdude.md delete mode 100644 lib/lufa/LUFA/Build/DMBS/DMBS/avrdude.mk delete mode 100644 lib/lufa/LUFA/Build/DMBS/DMBS/core.md delete mode 100644 lib/lufa/LUFA/Build/DMBS/DMBS/core.mk delete mode 100644 lib/lufa/LUFA/Build/DMBS/DMBS/cppcheck.md delete mode 100644 lib/lufa/LUFA/Build/DMBS/DMBS/cppcheck.mk delete mode 100644 lib/lufa/LUFA/Build/DMBS/DMBS/dfu.md delete mode 100644 lib/lufa/LUFA/Build/DMBS/DMBS/dfu.mk delete mode 100644 lib/lufa/LUFA/Build/DMBS/DMBS/doxygen.md delete mode 100644 lib/lufa/LUFA/Build/DMBS/DMBS/doxygen.mk delete mode 100644 lib/lufa/LUFA/Build/DMBS/DMBS/gcc.md delete mode 100644 lib/lufa/LUFA/Build/DMBS/DMBS/gcc.mk delete mode 100644 lib/lufa/LUFA/Build/DMBS/DMBS/hid.md delete mode 100644 lib/lufa/LUFA/Build/DMBS/DMBS/hid.mk delete mode 100644 lib/lufa/LUFA/Build/DMBS/Readme.md delete mode 100644 lib/lufa/LUFA/Build/DMBS/Template/Template.c delete mode 100644 lib/lufa/LUFA/Build/DMBS/Template/makefile delete mode 100644 lib/lufa/LUFA/Build/LUFA/lufa-gcc.mk delete mode 100644 lib/lufa/LUFA/Build/LUFA/lufa-sources.mk delete mode 100644 lib/lufa/LUFA/Build/lufa_atprogram.mk delete mode 100644 lib/lufa/LUFA/Build/lufa_avrdude.mk delete mode 100644 lib/lufa/LUFA/Build/lufa_build.mk delete mode 100644 lib/lufa/LUFA/Build/lufa_core.mk delete mode 100644 lib/lufa/LUFA/Build/lufa_cppcheck.mk delete mode 100644 lib/lufa/LUFA/Build/lufa_dfu.mk delete mode 100644 lib/lufa/LUFA/Build/lufa_doxygen.mk delete mode 100644 lib/lufa/LUFA/Build/lufa_hid.mk delete mode 100644 lib/lufa/LUFA/Build/lufa_sources.mk delete mode 100644 lib/lufa/LUFA/CodeTemplates/DeviceTemplate/Descriptors.c delete mode 100644 lib/lufa/LUFA/CodeTemplates/DeviceTemplate/Descriptors.h delete mode 100644 lib/lufa/LUFA/CodeTemplates/DeviceTemplate/DeviceApplication.c delete mode 100644 lib/lufa/LUFA/CodeTemplates/DeviceTemplate/DeviceApplication.h delete mode 100644 lib/lufa/LUFA/CodeTemplates/DeviceTemplate/asf.xml delete mode 100644 lib/lufa/LUFA/CodeTemplates/DriverStubs/Board.h delete mode 100644 lib/lufa/LUFA/CodeTemplates/DriverStubs/Buttons.h delete mode 100644 lib/lufa/LUFA/CodeTemplates/DriverStubs/Dataflash.h delete mode 100644 lib/lufa/LUFA/CodeTemplates/DriverStubs/Joystick.h delete mode 100644 lib/lufa/LUFA/CodeTemplates/DriverStubs/LEDs.h delete mode 100644 lib/lufa/LUFA/CodeTemplates/HostTemplate/HostApplication.c delete mode 100644 lib/lufa/LUFA/CodeTemplates/HostTemplate/HostApplication.h delete mode 100644 lib/lufa/LUFA/CodeTemplates/HostTemplate/asf.xml delete mode 100644 lib/lufa/LUFA/CodeTemplates/LUFAConfig.h delete mode 100644 lib/lufa/LUFA/CodeTemplates/WindowsINF/LUFA CDC-ACM.inf delete mode 100644 lib/lufa/LUFA/CodeTemplates/WindowsINF/LUFA RNDIS.inf delete mode 100644 lib/lufa/LUFA/CodeTemplates/makefile_template delete mode 100644 lib/lufa/LUFA/Common/ArchitectureSpecific.h delete mode 100644 lib/lufa/LUFA/Common/Architectures.h delete mode 100644 lib/lufa/LUFA/Common/Attributes.h delete mode 100644 lib/lufa/LUFA/Common/BoardTypes.h delete mode 100644 lib/lufa/LUFA/Common/Common.h delete mode 100644 lib/lufa/LUFA/Common/CompilerSpecific.h delete mode 100644 lib/lufa/LUFA/Common/Endianness.h delete mode 100644 lib/lufa/LUFA/DoxygenPages/BuildSystem.txt delete mode 100644 lib/lufa/LUFA/DoxygenPages/BuildingLinkableLibraries.txt delete mode 100644 lib/lufa/LUFA/DoxygenPages/ChangeLog.txt delete mode 100644 lib/lufa/LUFA/DoxygenPages/CompileTimeTokens.txt delete mode 100644 lib/lufa/LUFA/DoxygenPages/CompilingApps.txt delete mode 100644 lib/lufa/LUFA/DoxygenPages/ConfiguringApps.txt delete mode 100644 lib/lufa/LUFA/DoxygenPages/DevelopingWithLUFA.txt delete mode 100644 lib/lufa/LUFA/DoxygenPages/DeviceSupport.txt delete mode 100644 lib/lufa/LUFA/DoxygenPages/DirectorySummaries.txt delete mode 100644 lib/lufa/LUFA/DoxygenPages/Donating.txt delete mode 100644 lib/lufa/LUFA/DoxygenPages/FutureChanges.txt delete mode 100644 lib/lufa/LUFA/DoxygenPages/GettingStarted.txt delete mode 100644 lib/lufa/LUFA/DoxygenPages/Groups.txt delete mode 100644 lib/lufa/LUFA/DoxygenPages/Images/Author.jpg delete mode 100644 lib/lufa/LUFA/DoxygenPages/Images/LUFA.png delete mode 100644 lib/lufa/LUFA/DoxygenPages/Images/LUFA_thumb.png delete mode 100644 lib/lufa/LUFA/DoxygenPages/KnownIssues.txt delete mode 100644 lib/lufa/LUFA/DoxygenPages/LUFAPoweredProjects.txt delete mode 100644 lib/lufa/LUFA/DoxygenPages/LibraryResources.txt delete mode 100644 lib/lufa/LUFA/DoxygenPages/LicenseInfo.txt delete mode 100644 lib/lufa/LUFA/DoxygenPages/MainPage.txt delete mode 100644 lib/lufa/LUFA/DoxygenPages/MigrationInformation.txt delete mode 100644 lib/lufa/LUFA/DoxygenPages/OSDrivers.txt delete mode 100644 lib/lufa/LUFA/DoxygenPages/ProgrammingApps.txt delete mode 100644 lib/lufa/LUFA/DoxygenPages/SoftwareBootloaderJump.txt delete mode 100644 lib/lufa/LUFA/DoxygenPages/Style/Footer.htm delete mode 100644 lib/lufa/LUFA/DoxygenPages/Style/Style.css delete mode 100644 lib/lufa/LUFA/DoxygenPages/VIDAndPIDValues.txt delete mode 100644 lib/lufa/LUFA/DoxygenPages/WritingBoardDrivers.txt delete mode 100644 lib/lufa/LUFA/Drivers/Board/AVR8/ADAFRUITU4/Board.h delete mode 100644 lib/lufa/LUFA/Drivers/Board/AVR8/ADAFRUITU4/LEDs.h delete mode 100644 lib/lufa/LUFA/Drivers/Board/AVR8/ATAVRUSBRF01/Board.h delete mode 100644 lib/lufa/LUFA/Drivers/Board/AVR8/ATAVRUSBRF01/Buttons.h delete mode 100644 lib/lufa/LUFA/Drivers/Board/AVR8/ATAVRUSBRF01/LEDs.h delete mode 100644 lib/lufa/LUFA/Drivers/Board/AVR8/BENITO/Board.h delete mode 100644 lib/lufa/LUFA/Drivers/Board/AVR8/BENITO/Buttons.h delete mode 100644 lib/lufa/LUFA/Drivers/Board/AVR8/BENITO/LEDs.h delete mode 100644 lib/lufa/LUFA/Drivers/Board/AVR8/BIGMULTIO/Board.h delete mode 100644 lib/lufa/LUFA/Drivers/Board/AVR8/BIGMULTIO/LEDs.h delete mode 100644 lib/lufa/LUFA/Drivers/Board/AVR8/BLACKCAT/Board.h delete mode 100644 lib/lufa/LUFA/Drivers/Board/AVR8/BLACKCAT/LEDs.h delete mode 100644 lib/lufa/LUFA/Drivers/Board/AVR8/BUI/Board.h delete mode 100644 lib/lufa/LUFA/Drivers/Board/AVR8/BUI/LEDs.h delete mode 100644 lib/lufa/LUFA/Drivers/Board/AVR8/BUMBLEB/Board.h delete mode 100644 lib/lufa/LUFA/Drivers/Board/AVR8/BUMBLEB/Buttons.h delete mode 100644 lib/lufa/LUFA/Drivers/Board/AVR8/BUMBLEB/Joystick.h delete mode 100644 lib/lufa/LUFA/Drivers/Board/AVR8/BUMBLEB/LEDs.h delete mode 100644 lib/lufa/LUFA/Drivers/Board/AVR8/CULV3/Board.h delete mode 100644 lib/lufa/LUFA/Drivers/Board/AVR8/CULV3/Buttons.h delete mode 100644 lib/lufa/LUFA/Drivers/Board/AVR8/CULV3/LEDs.h delete mode 100644 lib/lufa/LUFA/Drivers/Board/AVR8/DUCE/Board.h delete mode 100644 lib/lufa/LUFA/Drivers/Board/AVR8/DUCE/LEDs.h delete mode 100644 lib/lufa/LUFA/Drivers/Board/AVR8/EVK527/Board.h delete mode 100644 lib/lufa/LUFA/Drivers/Board/AVR8/EVK527/Buttons.h delete mode 100644 lib/lufa/LUFA/Drivers/Board/AVR8/EVK527/Dataflash.h delete mode 100644 lib/lufa/LUFA/Drivers/Board/AVR8/EVK527/Joystick.h delete mode 100644 lib/lufa/LUFA/Drivers/Board/AVR8/EVK527/LEDs.h delete mode 100644 lib/lufa/LUFA/Drivers/Board/AVR8/JMDBU2/Board.h delete mode 100644 lib/lufa/LUFA/Drivers/Board/AVR8/JMDBU2/Buttons.h delete mode 100644 lib/lufa/LUFA/Drivers/Board/AVR8/JMDBU2/LEDs.h delete mode 100644 lib/lufa/LUFA/Drivers/Board/AVR8/LEONARDO/Board.h delete mode 100644 lib/lufa/LUFA/Drivers/Board/AVR8/LEONARDO/LEDs.h delete mode 100644 lib/lufa/LUFA/Drivers/Board/AVR8/MAXIMUS/Board.h delete mode 100644 lib/lufa/LUFA/Drivers/Board/AVR8/MAXIMUS/LEDs.h delete mode 100644 lib/lufa/LUFA/Drivers/Board/AVR8/MICRO/Board.h delete mode 100644 lib/lufa/LUFA/Drivers/Board/AVR8/MICRO/LEDs.h delete mode 100644 lib/lufa/LUFA/Drivers/Board/AVR8/MICROPENDOUS/Board.h delete mode 100644 lib/lufa/LUFA/Drivers/Board/AVR8/MICROPENDOUS/Buttons.h delete mode 100644 lib/lufa/LUFA/Drivers/Board/AVR8/MICROPENDOUS/LEDs.h delete mode 100644 lib/lufa/LUFA/Drivers/Board/AVR8/MICROSIN162/Board.h delete mode 100644 lib/lufa/LUFA/Drivers/Board/AVR8/MICROSIN162/Buttons.h delete mode 100644 lib/lufa/LUFA/Drivers/Board/AVR8/MICROSIN162/LEDs.h delete mode 100644 lib/lufa/LUFA/Drivers/Board/AVR8/MINIMUS/Board.h delete mode 100644 lib/lufa/LUFA/Drivers/Board/AVR8/MINIMUS/Buttons.h delete mode 100644 lib/lufa/LUFA/Drivers/Board/AVR8/MINIMUS/LEDs.h delete mode 100644 lib/lufa/LUFA/Drivers/Board/AVR8/MULTIO/Board.h delete mode 100644 lib/lufa/LUFA/Drivers/Board/AVR8/MULTIO/LEDs.h delete mode 100644 lib/lufa/LUFA/Drivers/Board/AVR8/OLIMEX162/Board.h delete mode 100644 lib/lufa/LUFA/Drivers/Board/AVR8/OLIMEX162/Buttons.h delete mode 100644 lib/lufa/LUFA/Drivers/Board/AVR8/OLIMEX162/LEDs.h delete mode 100644 lib/lufa/LUFA/Drivers/Board/AVR8/OLIMEX32U4/Board.h delete mode 100644 lib/lufa/LUFA/Drivers/Board/AVR8/OLIMEX32U4/Buttons.h delete mode 100644 lib/lufa/LUFA/Drivers/Board/AVR8/OLIMEX32U4/LEDs.h delete mode 100644 lib/lufa/LUFA/Drivers/Board/AVR8/OLIMEXISPMK2/Board.h delete mode 100644 lib/lufa/LUFA/Drivers/Board/AVR8/OLIMEXISPMK2/Buttons.h delete mode 100644 lib/lufa/LUFA/Drivers/Board/AVR8/OLIMEXISPMK2/LEDs.h delete mode 100644 lib/lufa/LUFA/Drivers/Board/AVR8/OLIMEXT32U4/Board.h delete mode 100644 lib/lufa/LUFA/Drivers/Board/AVR8/OLIMEXT32U4/Buttons.h delete mode 100644 lib/lufa/LUFA/Drivers/Board/AVR8/OLIMEXT32U4/LEDs.h delete mode 100644 lib/lufa/LUFA/Drivers/Board/AVR8/POLOLUMICRO/Board.h delete mode 100644 lib/lufa/LUFA/Drivers/Board/AVR8/POLOLUMICRO/LEDs.h delete mode 100644 lib/lufa/LUFA/Drivers/Board/AVR8/QMK/Board.h delete mode 100644 lib/lufa/LUFA/Drivers/Board/AVR8/QMK/LEDs.h delete mode 100644 lib/lufa/LUFA/Drivers/Board/AVR8/RZUSBSTICK/Board.h delete mode 100644 lib/lufa/LUFA/Drivers/Board/AVR8/RZUSBSTICK/LEDs.h delete mode 100644 lib/lufa/LUFA/Drivers/Board/AVR8/SPARKFUN8U2/Board.h delete mode 100644 lib/lufa/LUFA/Drivers/Board/AVR8/SPARKFUN8U2/LEDs.h delete mode 100644 lib/lufa/LUFA/Drivers/Board/AVR8/STANGE_ISP/Board.h delete mode 100644 lib/lufa/LUFA/Drivers/Board/AVR8/STANGE_ISP/Buttons.h delete mode 100644 lib/lufa/LUFA/Drivers/Board/AVR8/STANGE_ISP/LEDs.h delete mode 100644 lib/lufa/LUFA/Drivers/Board/AVR8/STK525/Board.h delete mode 100644 lib/lufa/LUFA/Drivers/Board/AVR8/STK525/Buttons.h delete mode 100644 lib/lufa/LUFA/Drivers/Board/AVR8/STK525/Dataflash.h delete mode 100644 lib/lufa/LUFA/Drivers/Board/AVR8/STK525/Joystick.h delete mode 100644 lib/lufa/LUFA/Drivers/Board/AVR8/STK525/LEDs.h delete mode 100644 lib/lufa/LUFA/Drivers/Board/AVR8/STK526/Board.h delete mode 100644 lib/lufa/LUFA/Drivers/Board/AVR8/STK526/Buttons.h delete mode 100644 lib/lufa/LUFA/Drivers/Board/AVR8/STK526/Dataflash.h delete mode 100644 lib/lufa/LUFA/Drivers/Board/AVR8/STK526/Joystick.h delete mode 100644 lib/lufa/LUFA/Drivers/Board/AVR8/STK526/LEDs.h delete mode 100644 lib/lufa/LUFA/Drivers/Board/AVR8/TEENSY/Board.h delete mode 100644 lib/lufa/LUFA/Drivers/Board/AVR8/TEENSY/LEDs.h delete mode 100644 lib/lufa/LUFA/Drivers/Board/AVR8/TUL/Board.h delete mode 100644 lib/lufa/LUFA/Drivers/Board/AVR8/TUL/Buttons.h delete mode 100644 lib/lufa/LUFA/Drivers/Board/AVR8/TUL/LEDs.h delete mode 100644 lib/lufa/LUFA/Drivers/Board/AVR8/U2S/Board.h delete mode 100644 lib/lufa/LUFA/Drivers/Board/AVR8/U2S/Buttons.h delete mode 100644 lib/lufa/LUFA/Drivers/Board/AVR8/U2S/LEDs.h delete mode 100644 lib/lufa/LUFA/Drivers/Board/AVR8/UDIP/Board.h delete mode 100644 lib/lufa/LUFA/Drivers/Board/AVR8/UDIP/Buttons.h delete mode 100644 lib/lufa/LUFA/Drivers/Board/AVR8/UDIP/LEDs.h delete mode 100644 lib/lufa/LUFA/Drivers/Board/AVR8/UNO/Board.h delete mode 100644 lib/lufa/LUFA/Drivers/Board/AVR8/UNO/LEDs.h delete mode 100644 lib/lufa/LUFA/Drivers/Board/AVR8/USB2AX/Board.h delete mode 100644 lib/lufa/LUFA/Drivers/Board/AVR8/USB2AX/Buttons.h delete mode 100644 lib/lufa/LUFA/Drivers/Board/AVR8/USB2AX/LEDs.h delete mode 100644 lib/lufa/LUFA/Drivers/Board/AVR8/USBFOO/Board.h delete mode 100644 lib/lufa/LUFA/Drivers/Board/AVR8/USBFOO/Buttons.h delete mode 100644 lib/lufa/LUFA/Drivers/Board/AVR8/USBFOO/LEDs.h delete mode 100644 lib/lufa/LUFA/Drivers/Board/AVR8/USBKEY/Board.h delete mode 100644 lib/lufa/LUFA/Drivers/Board/AVR8/USBKEY/Buttons.h delete mode 100644 lib/lufa/LUFA/Drivers/Board/AVR8/USBKEY/Dataflash.h delete mode 100644 lib/lufa/LUFA/Drivers/Board/AVR8/USBKEY/Joystick.h delete mode 100644 lib/lufa/LUFA/Drivers/Board/AVR8/USBKEY/LEDs.h delete mode 100644 lib/lufa/LUFA/Drivers/Board/AVR8/USBTINYMKII/Board.h delete mode 100644 lib/lufa/LUFA/Drivers/Board/AVR8/USBTINYMKII/Buttons.h delete mode 100644 lib/lufa/LUFA/Drivers/Board/AVR8/USBTINYMKII/LEDs.h delete mode 100644 lib/lufa/LUFA/Drivers/Board/AVR8/XPLAIN/Board.h delete mode 100644 lib/lufa/LUFA/Drivers/Board/AVR8/XPLAIN/Dataflash.h delete mode 100644 lib/lufa/LUFA/Drivers/Board/AVR8/XPLAIN/LEDs.h delete mode 100644 lib/lufa/LUFA/Drivers/Board/AVR8/XPLAINED_MINI/Board.h delete mode 100644 lib/lufa/LUFA/Drivers/Board/AVR8/XPLAINED_MINI/LEDs.h delete mode 100644 lib/lufa/LUFA/Drivers/Board/AVR8/YUN/Board.h delete mode 100644 lib/lufa/LUFA/Drivers/Board/AVR8/YUN/LEDs.h delete mode 100644 lib/lufa/LUFA/Drivers/Board/Board.h delete mode 100644 lib/lufa/LUFA/Drivers/Board/Buttons.h delete mode 100644 lib/lufa/LUFA/Drivers/Board/Dataflash.h delete mode 100644 lib/lufa/LUFA/Drivers/Board/Joystick.h delete mode 100644 lib/lufa/LUFA/Drivers/Board/LEDs.h delete mode 100644 lib/lufa/LUFA/Drivers/Board/Temperature.c delete mode 100644 lib/lufa/LUFA/Drivers/Board/Temperature.h delete mode 100644 lib/lufa/LUFA/Drivers/Board/UC3/EVK1100/Board.h delete mode 100644 lib/lufa/LUFA/Drivers/Board/UC3/EVK1100/Buttons.h delete mode 100644 lib/lufa/LUFA/Drivers/Board/UC3/EVK1100/Joystick.h delete mode 100644 lib/lufa/LUFA/Drivers/Board/UC3/EVK1100/LEDs.h delete mode 100644 lib/lufa/LUFA/Drivers/Board/UC3/EVK1101/Board.h delete mode 100644 lib/lufa/LUFA/Drivers/Board/UC3/EVK1101/Buttons.h delete mode 100644 lib/lufa/LUFA/Drivers/Board/UC3/EVK1101/Joystick.h delete mode 100644 lib/lufa/LUFA/Drivers/Board/UC3/EVK1101/LEDs.h delete mode 100644 lib/lufa/LUFA/Drivers/Board/UC3/EVK1104/Board.h delete mode 100644 lib/lufa/LUFA/Drivers/Board/UC3/EVK1104/Buttons.h delete mode 100644 lib/lufa/LUFA/Drivers/Board/UC3/EVK1104/LEDs.h delete mode 100644 lib/lufa/LUFA/Drivers/Board/UC3/UC3A3_XPLAINED/Board.h delete mode 100644 lib/lufa/LUFA/Drivers/Board/UC3/UC3A3_XPLAINED/Buttons.h delete mode 100644 lib/lufa/LUFA/Drivers/Board/UC3/UC3A3_XPLAINED/LEDs.h delete mode 100644 lib/lufa/LUFA/Drivers/Board/XMEGA/A3BU_XPLAINED/Board.h delete mode 100644 lib/lufa/LUFA/Drivers/Board/XMEGA/A3BU_XPLAINED/Buttons.h delete mode 100644 lib/lufa/LUFA/Drivers/Board/XMEGA/A3BU_XPLAINED/Dataflash.h delete mode 100644 lib/lufa/LUFA/Drivers/Board/XMEGA/A3BU_XPLAINED/LEDs.h delete mode 100644 lib/lufa/LUFA/Drivers/Board/XMEGA/B1_XPLAINED/Board.h delete mode 100644 lib/lufa/LUFA/Drivers/Board/XMEGA/B1_XPLAINED/Buttons.h delete mode 100644 lib/lufa/LUFA/Drivers/Board/XMEGA/B1_XPLAINED/Dataflash.h delete mode 100644 lib/lufa/LUFA/Drivers/Board/XMEGA/B1_XPLAINED/LEDs.h delete mode 100644 lib/lufa/LUFA/Drivers/Board/XMEGA/C3_XPLAINED/Board.h delete mode 100644 lib/lufa/LUFA/Drivers/Board/XMEGA/C3_XPLAINED/Buttons.h delete mode 100644 lib/lufa/LUFA/Drivers/Board/XMEGA/C3_XPLAINED/LEDs.h delete mode 100644 lib/lufa/LUFA/Drivers/Misc/AT45DB321C.h delete mode 100644 lib/lufa/LUFA/Drivers/Misc/AT45DB642D.h delete mode 100644 lib/lufa/LUFA/Drivers/Misc/RingBuffer.h delete mode 100644 lib/lufa/LUFA/Drivers/Misc/TerminalCodes.h delete mode 100644 lib/lufa/LUFA/Drivers/Peripheral/ADC.h delete mode 100644 lib/lufa/LUFA/Drivers/Peripheral/AVR8/ADC_AVR8.h delete mode 100644 lib/lufa/LUFA/Drivers/Peripheral/AVR8/SPI_AVR8.h delete mode 100644 lib/lufa/LUFA/Drivers/Peripheral/AVR8/SerialSPI_AVR8.h delete mode 100644 lib/lufa/LUFA/Drivers/Peripheral/AVR8/Serial_AVR8.c delete mode 100644 lib/lufa/LUFA/Drivers/Peripheral/AVR8/Serial_AVR8.h delete mode 100644 lib/lufa/LUFA/Drivers/Peripheral/AVR8/TWI_AVR8.c delete mode 100644 lib/lufa/LUFA/Drivers/Peripheral/AVR8/TWI_AVR8.h delete mode 100644 lib/lufa/LUFA/Drivers/Peripheral/SPI.h delete mode 100644 lib/lufa/LUFA/Drivers/Peripheral/Serial.h delete mode 100644 lib/lufa/LUFA/Drivers/Peripheral/SerialSPI.h delete mode 100644 lib/lufa/LUFA/Drivers/Peripheral/TWI.h delete mode 100644 lib/lufa/LUFA/Drivers/Peripheral/XMEGA/SPI_XMEGA.h delete mode 100644 lib/lufa/LUFA/Drivers/Peripheral/XMEGA/SerialSPI_XMEGA.h delete mode 100644 lib/lufa/LUFA/Drivers/Peripheral/XMEGA/Serial_XMEGA.c delete mode 100644 lib/lufa/LUFA/Drivers/Peripheral/XMEGA/Serial_XMEGA.h delete mode 100644 lib/lufa/LUFA/Drivers/Peripheral/XMEGA/TWI_XMEGA.c delete mode 100644 lib/lufa/LUFA/Drivers/Peripheral/XMEGA/TWI_XMEGA.h delete mode 100644 lib/lufa/LUFA/Drivers/USB/Class/AndroidAccessoryClass.h delete mode 100644 lib/lufa/LUFA/Drivers/USB/Class/AudioClass.h delete mode 100644 lib/lufa/LUFA/Drivers/USB/Class/CDCClass.h delete mode 100644 lib/lufa/LUFA/Drivers/USB/Class/Common/AndroidAccessoryClassCommon.h delete mode 100644 lib/lufa/LUFA/Drivers/USB/Class/Common/AudioClassCommon.h delete mode 100644 lib/lufa/LUFA/Drivers/USB/Class/Common/CDCClassCommon.h delete mode 100644 lib/lufa/LUFA/Drivers/USB/Class/Common/HIDClassCommon.h delete mode 100644 lib/lufa/LUFA/Drivers/USB/Class/Common/HIDParser.c delete mode 100644 lib/lufa/LUFA/Drivers/USB/Class/Common/HIDParser.h delete mode 100644 lib/lufa/LUFA/Drivers/USB/Class/Common/HIDReportData.h delete mode 100644 lib/lufa/LUFA/Drivers/USB/Class/Common/MIDIClassCommon.h delete mode 100644 lib/lufa/LUFA/Drivers/USB/Class/Common/MassStorageClassCommon.h delete mode 100644 lib/lufa/LUFA/Drivers/USB/Class/Common/PrinterClassCommon.h delete mode 100644 lib/lufa/LUFA/Drivers/USB/Class/Common/RNDISClassCommon.h delete mode 100644 lib/lufa/LUFA/Drivers/USB/Class/Common/StillImageClassCommon.h delete mode 100644 lib/lufa/LUFA/Drivers/USB/Class/Device/AudioClassDevice.c delete mode 100644 lib/lufa/LUFA/Drivers/USB/Class/Device/AudioClassDevice.h delete mode 100644 lib/lufa/LUFA/Drivers/USB/Class/Device/CDCClassDevice.c delete mode 100644 lib/lufa/LUFA/Drivers/USB/Class/Device/CDCClassDevice.h delete mode 100644 lib/lufa/LUFA/Drivers/USB/Class/Device/HIDClassDevice.c delete mode 100644 lib/lufa/LUFA/Drivers/USB/Class/Device/HIDClassDevice.h delete mode 100644 lib/lufa/LUFA/Drivers/USB/Class/Device/MIDIClassDevice.c delete mode 100644 lib/lufa/LUFA/Drivers/USB/Class/Device/MIDIClassDevice.h delete mode 100644 lib/lufa/LUFA/Drivers/USB/Class/Device/MassStorageClassDevice.c delete mode 100644 lib/lufa/LUFA/Drivers/USB/Class/Device/MassStorageClassDevice.h delete mode 100644 lib/lufa/LUFA/Drivers/USB/Class/Device/PrinterClassDevice.c delete mode 100644 lib/lufa/LUFA/Drivers/USB/Class/Device/PrinterClassDevice.h delete mode 100644 lib/lufa/LUFA/Drivers/USB/Class/Device/RNDISClassDevice.c delete mode 100644 lib/lufa/LUFA/Drivers/USB/Class/Device/RNDISClassDevice.h delete mode 100644 lib/lufa/LUFA/Drivers/USB/Class/HIDClass.h delete mode 100644 lib/lufa/LUFA/Drivers/USB/Class/Host/AndroidAccessoryClassHost.c delete mode 100644 lib/lufa/LUFA/Drivers/USB/Class/Host/AndroidAccessoryClassHost.h delete mode 100644 lib/lufa/LUFA/Drivers/USB/Class/Host/AudioClassHost.c delete mode 100644 lib/lufa/LUFA/Drivers/USB/Class/Host/AudioClassHost.h delete mode 100644 lib/lufa/LUFA/Drivers/USB/Class/Host/CDCClassHost.c delete mode 100644 lib/lufa/LUFA/Drivers/USB/Class/Host/CDCClassHost.h delete mode 100644 lib/lufa/LUFA/Drivers/USB/Class/Host/HIDClassHost.c delete mode 100644 lib/lufa/LUFA/Drivers/USB/Class/Host/HIDClassHost.h delete mode 100644 lib/lufa/LUFA/Drivers/USB/Class/Host/MIDIClassHost.c delete mode 100644 lib/lufa/LUFA/Drivers/USB/Class/Host/MIDIClassHost.h delete mode 100644 lib/lufa/LUFA/Drivers/USB/Class/Host/MassStorageClassHost.c delete mode 100644 lib/lufa/LUFA/Drivers/USB/Class/Host/MassStorageClassHost.h delete mode 100644 lib/lufa/LUFA/Drivers/USB/Class/Host/PrinterClassHost.c delete mode 100644 lib/lufa/LUFA/Drivers/USB/Class/Host/PrinterClassHost.h delete mode 100644 lib/lufa/LUFA/Drivers/USB/Class/Host/RNDISClassHost.c delete mode 100644 lib/lufa/LUFA/Drivers/USB/Class/Host/RNDISClassHost.h delete mode 100644 lib/lufa/LUFA/Drivers/USB/Class/Host/StillImageClassHost.c delete mode 100644 lib/lufa/LUFA/Drivers/USB/Class/Host/StillImageClassHost.h delete mode 100644 lib/lufa/LUFA/Drivers/USB/Class/MIDIClass.h delete mode 100644 lib/lufa/LUFA/Drivers/USB/Class/MassStorageClass.h delete mode 100644 lib/lufa/LUFA/Drivers/USB/Class/PrinterClass.h delete mode 100644 lib/lufa/LUFA/Drivers/USB/Class/RNDISClass.h delete mode 100644 lib/lufa/LUFA/Drivers/USB/Class/StillImageClass.h delete mode 100644 lib/lufa/LUFA/Drivers/USB/Core/AVR8/Device_AVR8.c delete mode 100644 lib/lufa/LUFA/Drivers/USB/Core/AVR8/Device_AVR8.h delete mode 100644 lib/lufa/LUFA/Drivers/USB/Core/AVR8/EndpointStream_AVR8.c delete mode 100644 lib/lufa/LUFA/Drivers/USB/Core/AVR8/EndpointStream_AVR8.h delete mode 100644 lib/lufa/LUFA/Drivers/USB/Core/AVR8/Endpoint_AVR8.c delete mode 100644 lib/lufa/LUFA/Drivers/USB/Core/AVR8/Endpoint_AVR8.h delete mode 100644 lib/lufa/LUFA/Drivers/USB/Core/AVR8/Host_AVR8.c delete mode 100644 lib/lufa/LUFA/Drivers/USB/Core/AVR8/Host_AVR8.h delete mode 100644 lib/lufa/LUFA/Drivers/USB/Core/AVR8/OTG_AVR8.h delete mode 100644 lib/lufa/LUFA/Drivers/USB/Core/AVR8/PipeStream_AVR8.c delete mode 100644 lib/lufa/LUFA/Drivers/USB/Core/AVR8/PipeStream_AVR8.h delete mode 100644 lib/lufa/LUFA/Drivers/USB/Core/AVR8/Pipe_AVR8.c delete mode 100644 lib/lufa/LUFA/Drivers/USB/Core/AVR8/Pipe_AVR8.h delete mode 100644 lib/lufa/LUFA/Drivers/USB/Core/AVR8/Template/Template_Endpoint_Control_R.c delete mode 100644 lib/lufa/LUFA/Drivers/USB/Core/AVR8/Template/Template_Endpoint_Control_W.c delete mode 100644 lib/lufa/LUFA/Drivers/USB/Core/AVR8/Template/Template_Endpoint_RW.c delete mode 100644 lib/lufa/LUFA/Drivers/USB/Core/AVR8/Template/Template_Pipe_RW.c delete mode 100644 lib/lufa/LUFA/Drivers/USB/Core/AVR8/USBController_AVR8.c delete mode 100644 lib/lufa/LUFA/Drivers/USB/Core/AVR8/USBController_AVR8.h delete mode 100644 lib/lufa/LUFA/Drivers/USB/Core/AVR8/USBInterrupt_AVR8.c delete mode 100644 lib/lufa/LUFA/Drivers/USB/Core/AVR8/USBInterrupt_AVR8.h delete mode 100644 lib/lufa/LUFA/Drivers/USB/Core/ConfigDescriptors.c delete mode 100644 lib/lufa/LUFA/Drivers/USB/Core/ConfigDescriptors.h delete mode 100644 lib/lufa/LUFA/Drivers/USB/Core/Device.h delete mode 100644 lib/lufa/LUFA/Drivers/USB/Core/DeviceStandardReq.c delete mode 100644 lib/lufa/LUFA/Drivers/USB/Core/DeviceStandardReq.h delete mode 100644 lib/lufa/LUFA/Drivers/USB/Core/Endpoint.h delete mode 100644 lib/lufa/LUFA/Drivers/USB/Core/EndpointStream.h delete mode 100644 lib/lufa/LUFA/Drivers/USB/Core/Events.c delete mode 100644 lib/lufa/LUFA/Drivers/USB/Core/Events.h delete mode 100644 lib/lufa/LUFA/Drivers/USB/Core/Host.h delete mode 100644 lib/lufa/LUFA/Drivers/USB/Core/HostStandardReq.c delete mode 100644 lib/lufa/LUFA/Drivers/USB/Core/HostStandardReq.h delete mode 100644 lib/lufa/LUFA/Drivers/USB/Core/OTG.h delete mode 100644 lib/lufa/LUFA/Drivers/USB/Core/Pipe.h delete mode 100644 lib/lufa/LUFA/Drivers/USB/Core/PipeStream.h delete mode 100644 lib/lufa/LUFA/Drivers/USB/Core/StdDescriptors.h delete mode 100644 lib/lufa/LUFA/Drivers/USB/Core/StdRequestType.h delete mode 100644 lib/lufa/LUFA/Drivers/USB/Core/UC3/Device_UC3.c delete mode 100644 lib/lufa/LUFA/Drivers/USB/Core/UC3/Device_UC3.h delete mode 100644 lib/lufa/LUFA/Drivers/USB/Core/UC3/EndpointStream_UC3.c delete mode 100644 lib/lufa/LUFA/Drivers/USB/Core/UC3/EndpointStream_UC3.h delete mode 100644 lib/lufa/LUFA/Drivers/USB/Core/UC3/Endpoint_UC3.c delete mode 100644 lib/lufa/LUFA/Drivers/USB/Core/UC3/Endpoint_UC3.h delete mode 100644 lib/lufa/LUFA/Drivers/USB/Core/UC3/Host_UC3.c delete mode 100644 lib/lufa/LUFA/Drivers/USB/Core/UC3/Host_UC3.h delete mode 100644 lib/lufa/LUFA/Drivers/USB/Core/UC3/PipeStream_UC3.c delete mode 100644 lib/lufa/LUFA/Drivers/USB/Core/UC3/PipeStream_UC3.h delete mode 100644 lib/lufa/LUFA/Drivers/USB/Core/UC3/Pipe_UC3.c delete mode 100644 lib/lufa/LUFA/Drivers/USB/Core/UC3/Pipe_UC3.h delete mode 100644 lib/lufa/LUFA/Drivers/USB/Core/UC3/Template/Template_Endpoint_Control_R.c delete mode 100644 lib/lufa/LUFA/Drivers/USB/Core/UC3/Template/Template_Endpoint_Control_W.c delete mode 100644 lib/lufa/LUFA/Drivers/USB/Core/UC3/Template/Template_Endpoint_RW.c delete mode 100644 lib/lufa/LUFA/Drivers/USB/Core/UC3/Template/Template_Pipe_RW.c delete mode 100644 lib/lufa/LUFA/Drivers/USB/Core/UC3/USBController_UC3.c delete mode 100644 lib/lufa/LUFA/Drivers/USB/Core/UC3/USBController_UC3.h delete mode 100644 lib/lufa/LUFA/Drivers/USB/Core/UC3/USBInterrupt_UC3.c delete mode 100644 lib/lufa/LUFA/Drivers/USB/Core/UC3/USBInterrupt_UC3.h delete mode 100644 lib/lufa/LUFA/Drivers/USB/Core/USBController.h delete mode 100644 lib/lufa/LUFA/Drivers/USB/Core/USBInterrupt.h delete mode 100644 lib/lufa/LUFA/Drivers/USB/Core/USBMode.h delete mode 100644 lib/lufa/LUFA/Drivers/USB/Core/USBTask.c delete mode 100644 lib/lufa/LUFA/Drivers/USB/Core/USBTask.h delete mode 100644 lib/lufa/LUFA/Drivers/USB/Core/XMEGA/Device_XMEGA.c delete mode 100644 lib/lufa/LUFA/Drivers/USB/Core/XMEGA/Device_XMEGA.h delete mode 100644 lib/lufa/LUFA/Drivers/USB/Core/XMEGA/EndpointStream_XMEGA.c delete mode 100644 lib/lufa/LUFA/Drivers/USB/Core/XMEGA/EndpointStream_XMEGA.h delete mode 100644 lib/lufa/LUFA/Drivers/USB/Core/XMEGA/Endpoint_XMEGA.c delete mode 100644 lib/lufa/LUFA/Drivers/USB/Core/XMEGA/Endpoint_XMEGA.h delete mode 100644 lib/lufa/LUFA/Drivers/USB/Core/XMEGA/Host_XMEGA.c delete mode 100644 lib/lufa/LUFA/Drivers/USB/Core/XMEGA/PipeStream_XMEGA.c delete mode 100644 lib/lufa/LUFA/Drivers/USB/Core/XMEGA/Pipe_XMEGA.c delete mode 100644 lib/lufa/LUFA/Drivers/USB/Core/XMEGA/Template/Template_Endpoint_Control_R.c delete mode 100644 lib/lufa/LUFA/Drivers/USB/Core/XMEGA/Template/Template_Endpoint_Control_W.c delete mode 100644 lib/lufa/LUFA/Drivers/USB/Core/XMEGA/Template/Template_Endpoint_RW.c delete mode 100644 lib/lufa/LUFA/Drivers/USB/Core/XMEGA/USBController_XMEGA.c delete mode 100644 lib/lufa/LUFA/Drivers/USB/Core/XMEGA/USBController_XMEGA.h delete mode 100644 lib/lufa/LUFA/Drivers/USB/Core/XMEGA/USBInterrupt_XMEGA.c delete mode 100644 lib/lufa/LUFA/Drivers/USB/Core/XMEGA/USBInterrupt_XMEGA.h delete mode 100644 lib/lufa/LUFA/Drivers/USB/USB.h delete mode 100644 lib/lufa/LUFA/License.txt delete mode 100644 lib/lufa/LUFA/Platform/Platform.h delete mode 100644 lib/lufa/LUFA/Platform/UC3/ClockManagement.h delete mode 100644 lib/lufa/LUFA/Platform/UC3/Exception.S delete mode 100644 lib/lufa/LUFA/Platform/UC3/InterruptManagement.c delete mode 100644 lib/lufa/LUFA/Platform/UC3/InterruptManagement.h delete mode 100644 lib/lufa/LUFA/Platform/UC3/UC3ExperimentalInfo.txt delete mode 100644 lib/lufa/LUFA/Platform/XMEGA/ClockManagement.h delete mode 100644 lib/lufa/LUFA/Platform/XMEGA/XMEGAExperimentalInfo.txt delete mode 100644 lib/lufa/LUFA/StudioIntegration/Docbook/mshelp/README.txt delete mode 100644 lib/lufa/LUFA/StudioIntegration/Docbook/mshelp/docbook.xsl delete mode 100644 lib/lufa/LUFA/StudioIntegration/Docbook/mshelp/hv1-common.xsl delete mode 100644 lib/lufa/LUFA/StudioIntegration/Docbook/placeholder.txt delete mode 100644 lib/lufa/LUFA/StudioIntegration/HV1/helpcontentsetup.msha delete mode 100644 lib/lufa/LUFA/StudioIntegration/HV1/lufa_docbook_transform.xslt delete mode 100644 lib/lufa/LUFA/StudioIntegration/HV1/lufa_helpcontentsetup_transform.xslt delete mode 100644 lib/lufa/LUFA/StudioIntegration/HV1/lufa_hv1_transform.xslt delete mode 100644 lib/lufa/LUFA/StudioIntegration/HV1/lufa_studio_help_styling.css delete mode 100644 lib/lufa/LUFA/StudioIntegration/VSIX/LUFA.dll delete mode 100644 lib/lufa/LUFA/StudioIntegration/VSIX/LUFA.pkgdef delete mode 100644 lib/lufa/LUFA/StudioIntegration/VSIX/[Content_Types].xml delete mode 100644 lib/lufa/LUFA/StudioIntegration/VSIX/asf-manifest.xml delete mode 100644 lib/lufa/LUFA/StudioIntegration/VSIX/extension.vsixmanifest delete mode 100644 lib/lufa/LUFA/StudioIntegration/VSIX/generate_caches.py delete mode 100644 lib/lufa/LUFA/StudioIntegration/VSIX/lufa_asfmanifest_transform.xslt delete mode 100644 lib/lufa/LUFA/StudioIntegration/VSIX/lufa_vsmanifest_transform.xslt delete mode 100644 lib/lufa/LUFA/StudioIntegration/XDK/lufa_extension_transform.xslt delete mode 100644 lib/lufa/LUFA/StudioIntegration/XDK/lufa_filelist_transform.xslt delete mode 100644 lib/lufa/LUFA/StudioIntegration/XDK/lufa_indent_transform.xslt delete mode 100644 lib/lufa/LUFA/StudioIntegration/XDK/lufa_module_transform.xslt delete mode 100644 lib/lufa/LUFA/StudioIntegration/lufa.xml delete mode 100644 lib/lufa/LUFA/StudioIntegration/lufa_common.xml delete mode 100644 lib/lufa/LUFA/StudioIntegration/lufa_drivers_board.xml delete mode 100644 lib/lufa/LUFA/StudioIntegration/lufa_drivers_board_names.xml delete mode 100644 lib/lufa/LUFA/StudioIntegration/lufa_drivers_misc.xml delete mode 100644 lib/lufa/LUFA/StudioIntegration/lufa_drivers_peripheral.xml delete mode 100644 lib/lufa/LUFA/StudioIntegration/lufa_drivers_usb.xml delete mode 100644 lib/lufa/LUFA/StudioIntegration/lufa_drivers_usb_class.xml delete mode 100644 lib/lufa/LUFA/StudioIntegration/lufa_drivers_usb_class_android.xml delete mode 100644 lib/lufa/LUFA/StudioIntegration/lufa_drivers_usb_class_audio.xml delete mode 100644 lib/lufa/LUFA/StudioIntegration/lufa_drivers_usb_class_cdc.xml delete mode 100644 lib/lufa/LUFA/StudioIntegration/lufa_drivers_usb_class_hid.xml delete mode 100644 lib/lufa/LUFA/StudioIntegration/lufa_drivers_usb_class_midi.xml delete mode 100644 lib/lufa/LUFA/StudioIntegration/lufa_drivers_usb_class_ms.xml delete mode 100644 lib/lufa/LUFA/StudioIntegration/lufa_drivers_usb_class_printer.xml delete mode 100644 lib/lufa/LUFA/StudioIntegration/lufa_drivers_usb_class_rndis.xml delete mode 100644 lib/lufa/LUFA/StudioIntegration/lufa_drivers_usb_class_si.xml delete mode 100644 lib/lufa/LUFA/StudioIntegration/lufa_drivers_usb_core.xml delete mode 100644 lib/lufa/LUFA/StudioIntegration/lufa_drivers_usb_core_avr8.xml delete mode 100644 lib/lufa/LUFA/StudioIntegration/lufa_drivers_usb_core_uc3.xml delete mode 100644 lib/lufa/LUFA/StudioIntegration/lufa_drivers_usb_core_xmega.xml delete mode 100644 lib/lufa/LUFA/StudioIntegration/lufa_platform.xml delete mode 100644 lib/lufa/LUFA/StudioIntegration/lufa_platform_uc3.xml delete mode 100644 lib/lufa/LUFA/StudioIntegration/lufa_platform_xmega.xml delete mode 100644 lib/lufa/LUFA/StudioIntegration/lufa_toolchain.xml delete mode 100644 lib/lufa/LUFA/StudioIntegration/makefile delete mode 100644 lib/lufa/LUFA/Version.h delete mode 100644 lib/lufa/LUFA/doxyfile delete mode 100644 lib/lufa/LUFA/makefile delete mode 100644 lib/lufa/Maintenance/lufa_functionlist_transform.xslt delete mode 100644 lib/lufa/Maintenance/makefile delete mode 100644 lib/lufa/Projects/AVRISP-MKII/AVRISP-MKII.c delete mode 100644 lib/lufa/Projects/AVRISP-MKII/AVRISP-MKII.h delete mode 100644 lib/lufa/Projects/AVRISP-MKII/AVRISP-MKII.txt delete mode 100644 lib/lufa/Projects/AVRISP-MKII/AVRISPDescriptors.c delete mode 100644 lib/lufa/Projects/AVRISP-MKII/AVRISPDescriptors.h delete mode 100644 lib/lufa/Projects/AVRISP-MKII/Config/AppConfig.h delete mode 100644 lib/lufa/Projects/AVRISP-MKII/Config/LUFAConfig.h delete mode 100644 lib/lufa/Projects/AVRISP-MKII/Lib/ISP/ISPProtocol.c delete mode 100644 lib/lufa/Projects/AVRISP-MKII/Lib/ISP/ISPProtocol.h delete mode 100644 lib/lufa/Projects/AVRISP-MKII/Lib/ISP/ISPTarget.c delete mode 100644 lib/lufa/Projects/AVRISP-MKII/Lib/ISP/ISPTarget.h delete mode 100644 lib/lufa/Projects/AVRISP-MKII/Lib/V2Protocol.c delete mode 100644 lib/lufa/Projects/AVRISP-MKII/Lib/V2Protocol.h delete mode 100644 lib/lufa/Projects/AVRISP-MKII/Lib/V2ProtocolConstants.h delete mode 100644 lib/lufa/Projects/AVRISP-MKII/Lib/V2ProtocolParams.c delete mode 100644 lib/lufa/Projects/AVRISP-MKII/Lib/V2ProtocolParams.h delete mode 100644 lib/lufa/Projects/AVRISP-MKII/Lib/XPROG/TINYNVM.c delete mode 100644 lib/lufa/Projects/AVRISP-MKII/Lib/XPROG/TINYNVM.h delete mode 100644 lib/lufa/Projects/AVRISP-MKII/Lib/XPROG/XMEGANVM.c delete mode 100644 lib/lufa/Projects/AVRISP-MKII/Lib/XPROG/XMEGANVM.h delete mode 100644 lib/lufa/Projects/AVRISP-MKII/Lib/XPROG/XPROGProtocol.c delete mode 100644 lib/lufa/Projects/AVRISP-MKII/Lib/XPROG/XPROGProtocol.h delete mode 100644 lib/lufa/Projects/AVRISP-MKII/Lib/XPROG/XPROGTarget.c delete mode 100644 lib/lufa/Projects/AVRISP-MKII/Lib/XPROG/XPROGTarget.h delete mode 100644 lib/lufa/Projects/AVRISP-MKII/WindowsDriver/AVRISP_mkII.inf delete mode 100644 lib/lufa/Projects/AVRISP-MKII/WindowsDriver/amd64/libusb0.dll delete mode 100644 lib/lufa/Projects/AVRISP-MKII/WindowsDriver/amd64/libusb0.sys delete mode 100644 lib/lufa/Projects/AVRISP-MKII/WindowsDriver/avrisp_mkii.cat delete mode 100644 lib/lufa/Projects/AVRISP-MKII/WindowsDriver/ia64/libusb0.dll delete mode 100644 lib/lufa/Projects/AVRISP-MKII/WindowsDriver/ia64/libusb0.sys delete mode 100644 lib/lufa/Projects/AVRISP-MKII/WindowsDriver/installer_x64.exe delete mode 100644 lib/lufa/Projects/AVRISP-MKII/WindowsDriver/installer_x86.exe delete mode 100644 lib/lufa/Projects/AVRISP-MKII/WindowsDriver/license/libusb0/installer_license.txt delete mode 100644 lib/lufa/Projects/AVRISP-MKII/WindowsDriver/x86/libusb0.sys delete mode 100644 lib/lufa/Projects/AVRISP-MKII/WindowsDriver/x86/libusb0_x86.dll delete mode 100644 lib/lufa/Projects/AVRISP-MKII/asf.xml delete mode 100644 lib/lufa/Projects/AVRISP-MKII/doxyfile delete mode 100644 lib/lufa/Projects/AVRISP-MKII/makefile delete mode 100644 lib/lufa/Projects/Benito/Benito.c delete mode 100644 lib/lufa/Projects/Benito/Benito.h delete mode 100644 lib/lufa/Projects/Benito/Benito.txt delete mode 100644 lib/lufa/Projects/Benito/Config/AppConfig.h delete mode 100644 lib/lufa/Projects/Benito/Config/LUFAConfig.h delete mode 100644 lib/lufa/Projects/Benito/Descriptors.c delete mode 100644 lib/lufa/Projects/Benito/Descriptors.h delete mode 100644 lib/lufa/Projects/Benito/LUFA Benito Programmer.inf delete mode 100644 lib/lufa/Projects/Benito/asf.xml delete mode 100644 lib/lufa/Projects/Benito/doxyfile delete mode 100644 lib/lufa/Projects/Benito/makefile delete mode 100644 lib/lufa/Projects/HIDReportViewer/Config/LUFAConfig.h delete mode 100644 lib/lufa/Projects/HIDReportViewer/HIDReportViewer.c delete mode 100644 lib/lufa/Projects/HIDReportViewer/HIDReportViewer.h delete mode 100644 lib/lufa/Projects/HIDReportViewer/HIDReportViewer.txt delete mode 100644 lib/lufa/Projects/HIDReportViewer/asf.xml delete mode 100644 lib/lufa/Projects/HIDReportViewer/doxyfile delete mode 100644 lib/lufa/Projects/HIDReportViewer/makefile delete mode 100644 lib/lufa/Projects/LEDNotifier/CPUUsageApp/CPUMonitor.Designer.cs delete mode 100644 lib/lufa/Projects/LEDNotifier/CPUUsageApp/CPUMonitor.cs delete mode 100644 lib/lufa/Projects/LEDNotifier/CPUUsageApp/CPUMonitor.csproj delete mode 100644 lib/lufa/Projects/LEDNotifier/CPUUsageApp/CPUMonitor.resx delete mode 100644 lib/lufa/Projects/LEDNotifier/CPUUsageApp/Program.cs delete mode 100644 lib/lufa/Projects/LEDNotifier/CPUUsageApp/Properties/AssemblyInfo.cs delete mode 100644 lib/lufa/Projects/LEDNotifier/CPUUsageApp/Properties/Resources.Designer.cs delete mode 100644 lib/lufa/Projects/LEDNotifier/CPUUsageApp/Properties/Resources.resx delete mode 100644 lib/lufa/Projects/LEDNotifier/CPUUsageApp/Properties/Settings.Designer.cs delete mode 100644 lib/lufa/Projects/LEDNotifier/CPUUsageApp/Properties/Settings.settings delete mode 100644 lib/lufa/Projects/LEDNotifier/Config/LUFAConfig.h delete mode 100644 lib/lufa/Projects/LEDNotifier/Descriptors.c delete mode 100644 lib/lufa/Projects/LEDNotifier/Descriptors.h delete mode 100644 lib/lufa/Projects/LEDNotifier/LEDMixerApp/LEDMixer.Designer.cs delete mode 100644 lib/lufa/Projects/LEDNotifier/LEDMixerApp/LEDMixer.cs delete mode 100644 lib/lufa/Projects/LEDNotifier/LEDMixerApp/LEDMixer.csproj delete mode 100644 lib/lufa/Projects/LEDNotifier/LEDMixerApp/LEDMixer.resx delete mode 100644 lib/lufa/Projects/LEDNotifier/LEDMixerApp/Program.cs delete mode 100644 lib/lufa/Projects/LEDNotifier/LEDMixerApp/Properties/AssemblyInfo.cs delete mode 100644 lib/lufa/Projects/LEDNotifier/LEDMixerApp/Properties/Resources.Designer.cs delete mode 100644 lib/lufa/Projects/LEDNotifier/LEDMixerApp/Properties/Resources.resx delete mode 100644 lib/lufa/Projects/LEDNotifier/LEDMixerApp/Properties/Settings.Designer.cs delete mode 100644 lib/lufa/Projects/LEDNotifier/LEDMixerApp/Properties/Settings.settings delete mode 100644 lib/lufa/Projects/LEDNotifier/LEDNotifier.c delete mode 100644 lib/lufa/Projects/LEDNotifier/LEDNotifier.h delete mode 100644 lib/lufa/Projects/LEDNotifier/LEDNotifier.txt delete mode 100644 lib/lufa/Projects/LEDNotifier/LUFA LED Notifier.inf delete mode 100644 lib/lufa/Projects/LEDNotifier/asf.xml delete mode 100644 lib/lufa/Projects/LEDNotifier/doxyfile delete mode 100644 lib/lufa/Projects/LEDNotifier/makefile delete mode 100644 lib/lufa/Projects/MIDIToneGenerator/Config/AppConfig.h delete mode 100644 lib/lufa/Projects/MIDIToneGenerator/Config/LUFAConfig.h delete mode 100644 lib/lufa/Projects/MIDIToneGenerator/Descriptors.c delete mode 100644 lib/lufa/Projects/MIDIToneGenerator/Descriptors.h delete mode 100644 lib/lufa/Projects/MIDIToneGenerator/MIDIToneGenerator.c delete mode 100644 lib/lufa/Projects/MIDIToneGenerator/MIDIToneGenerator.h delete mode 100644 lib/lufa/Projects/MIDIToneGenerator/MIDIToneGenerator.txt delete mode 100644 lib/lufa/Projects/MIDIToneGenerator/asf.xml delete mode 100644 lib/lufa/Projects/MIDIToneGenerator/doxyfile delete mode 100644 lib/lufa/Projects/MIDIToneGenerator/makefile delete mode 100644 lib/lufa/Projects/Magstripe/Config/AppConfig.h delete mode 100644 lib/lufa/Projects/Magstripe/Config/LUFAConfig.h delete mode 100644 lib/lufa/Projects/Magstripe/Descriptors.c delete mode 100644 lib/lufa/Projects/Magstripe/Descriptors.h delete mode 100644 lib/lufa/Projects/Magstripe/Lib/CircularBitBuffer.c delete mode 100644 lib/lufa/Projects/Magstripe/Lib/CircularBitBuffer.h delete mode 100644 lib/lufa/Projects/Magstripe/Lib/MagstripeHW.h delete mode 100644 lib/lufa/Projects/Magstripe/Magstripe.c delete mode 100644 lib/lufa/Projects/Magstripe/Magstripe.h delete mode 100644 lib/lufa/Projects/Magstripe/Magstripe.txt delete mode 100644 lib/lufa/Projects/Magstripe/asf.xml delete mode 100644 lib/lufa/Projects/Magstripe/doxyfile delete mode 100644 lib/lufa/Projects/Magstripe/makefile delete mode 100644 lib/lufa/Projects/MediaController/Config/LUFAConfig.h delete mode 100644 lib/lufa/Projects/MediaController/Descriptors.c delete mode 100644 lib/lufa/Projects/MediaController/Descriptors.h delete mode 100644 lib/lufa/Projects/MediaController/MediaController.c delete mode 100644 lib/lufa/Projects/MediaController/MediaController.h delete mode 100644 lib/lufa/Projects/MediaController/MediaController.txt delete mode 100644 lib/lufa/Projects/MediaController/asf.xml delete mode 100644 lib/lufa/Projects/MediaController/doxyfile delete mode 100644 lib/lufa/Projects/MediaController/makefile delete mode 100644 lib/lufa/Projects/MissileLauncher/Config/LUFAConfig.h delete mode 100644 lib/lufa/Projects/MissileLauncher/ConfigDescriptor.c delete mode 100644 lib/lufa/Projects/MissileLauncher/ConfigDescriptor.h delete mode 100644 lib/lufa/Projects/MissileLauncher/MissileLauncher.c delete mode 100644 lib/lufa/Projects/MissileLauncher/MissileLauncher.h delete mode 100644 lib/lufa/Projects/MissileLauncher/MissileLauncher.txt delete mode 100644 lib/lufa/Projects/MissileLauncher/asf.xml delete mode 100644 lib/lufa/Projects/MissileLauncher/doxyfile delete mode 100644 lib/lufa/Projects/MissileLauncher/makefile delete mode 100644 lib/lufa/Projects/RelayBoard/Config/LUFAConfig.h delete mode 100644 lib/lufa/Projects/RelayBoard/Descriptors.c delete mode 100644 lib/lufa/Projects/RelayBoard/Descriptors.h delete mode 100644 lib/lufa/Projects/RelayBoard/RelayBoard.c delete mode 100644 lib/lufa/Projects/RelayBoard/RelayBoard.h delete mode 100644 lib/lufa/Projects/RelayBoard/RelayBoard.txt delete mode 100644 lib/lufa/Projects/RelayBoard/asf.xml delete mode 100644 lib/lufa/Projects/RelayBoard/doxyfile delete mode 100644 lib/lufa/Projects/RelayBoard/makefile delete mode 100644 lib/lufa/Projects/SerialToLCD/Config/LUFAConfig.h delete mode 100644 lib/lufa/Projects/SerialToLCD/Descriptors.c delete mode 100644 lib/lufa/Projects/SerialToLCD/Descriptors.h delete mode 100644 lib/lufa/Projects/SerialToLCD/LUFA SerialToLCD.inf delete mode 100644 lib/lufa/Projects/SerialToLCD/Lib/HD44780.c delete mode 100644 lib/lufa/Projects/SerialToLCD/Lib/HD44780.h delete mode 100644 lib/lufa/Projects/SerialToLCD/SerialToLCD.c delete mode 100644 lib/lufa/Projects/SerialToLCD/SerialToLCD.h delete mode 100644 lib/lufa/Projects/SerialToLCD/SerialToLCD.txt delete mode 100644 lib/lufa/Projects/SerialToLCD/asf.xml delete mode 100644 lib/lufa/Projects/SerialToLCD/doxyfile delete mode 100644 lib/lufa/Projects/SerialToLCD/makefile delete mode 100644 lib/lufa/Projects/TempDataLogger/Config/AppConfig.h delete mode 100644 lib/lufa/Projects/TempDataLogger/Config/LUFAConfig.h delete mode 100644 lib/lufa/Projects/TempDataLogger/Descriptors.c delete mode 100644 lib/lufa/Projects/TempDataLogger/Descriptors.h delete mode 100644 lib/lufa/Projects/TempDataLogger/Lib/DataflashManager.c delete mode 100644 lib/lufa/Projects/TempDataLogger/Lib/DataflashManager.h delete mode 100644 lib/lufa/Projects/TempDataLogger/Lib/FATFs/00readme.txt delete mode 100644 lib/lufa/Projects/TempDataLogger/Lib/FATFs/diskio.c delete mode 100644 lib/lufa/Projects/TempDataLogger/Lib/FATFs/diskio.h delete mode 100644 lib/lufa/Projects/TempDataLogger/Lib/FATFs/ff.c delete mode 100644 lib/lufa/Projects/TempDataLogger/Lib/FATFs/ff.h delete mode 100644 lib/lufa/Projects/TempDataLogger/Lib/FATFs/ffconf.h delete mode 100644 lib/lufa/Projects/TempDataLogger/Lib/FATFs/integer.h delete mode 100644 lib/lufa/Projects/TempDataLogger/Lib/RTC.c delete mode 100644 lib/lufa/Projects/TempDataLogger/Lib/RTC.h delete mode 100644 lib/lufa/Projects/TempDataLogger/Lib/SCSI.c delete mode 100644 lib/lufa/Projects/TempDataLogger/Lib/SCSI.h delete mode 100644 lib/lufa/Projects/TempDataLogger/TempDataLogger.c delete mode 100644 lib/lufa/Projects/TempDataLogger/TempDataLogger.h delete mode 100644 lib/lufa/Projects/TempDataLogger/TempLogHostApp/COPYING.LESSER.txt delete mode 100644 lib/lufa/Projects/TempDataLogger/TempLogHostApp/COPYING.txt delete mode 100644 lib/lufa/Projects/TempDataLogger/TempLogHostApp/DataLoggerSettings.Designer.cs delete mode 100644 lib/lufa/Projects/TempDataLogger/TempLogHostApp/DataLoggerSettings.cs delete mode 100644 lib/lufa/Projects/TempDataLogger/TempLogHostApp/DataLoggerSettings.resx delete mode 100644 lib/lufa/Projects/TempDataLogger/TempLogHostApp/Hid.Linux.dll delete mode 100644 lib/lufa/Projects/TempDataLogger/TempLogHostApp/Hid.Net.dll delete mode 100644 lib/lufa/Projects/TempDataLogger/TempLogHostApp/Hid.Win32.dll delete mode 100644 lib/lufa/Projects/TempDataLogger/TempLogHostApp/Program.cs delete mode 100644 lib/lufa/Projects/TempDataLogger/TempLogHostApp/Properties/AssemblyInfo.cs delete mode 100644 lib/lufa/Projects/TempDataLogger/TempLogHostApp/Properties/Resources.Designer.cs delete mode 100644 lib/lufa/Projects/TempDataLogger/TempLogHostApp/Properties/Resources.resx delete mode 100644 lib/lufa/Projects/TempDataLogger/TempLogHostApp/Properties/Settings.Designer.cs delete mode 100644 lib/lufa/Projects/TempDataLogger/TempLogHostApp/Properties/Settings.settings delete mode 100644 lib/lufa/Projects/TempDataLogger/TempLogHostApp/README.txt delete mode 100644 lib/lufa/Projects/TempDataLogger/TempLogHostApp/TempLoggerHostApp.csproj delete mode 100644 lib/lufa/Projects/TempDataLogger/TempLogHostApp_Python/temp_log_config.py delete mode 100644 lib/lufa/Projects/TempDataLogger/TemperatureDataLogger.txt delete mode 100644 lib/lufa/Projects/TempDataLogger/asf.xml delete mode 100644 lib/lufa/Projects/TempDataLogger/doxyfile delete mode 100644 lib/lufa/Projects/TempDataLogger/makefile delete mode 100644 lib/lufa/Projects/USBtoSerial/Config/LUFAConfig.h delete mode 100644 lib/lufa/Projects/USBtoSerial/Descriptors.c delete mode 100644 lib/lufa/Projects/USBtoSerial/Descriptors.h delete mode 100644 lib/lufa/Projects/USBtoSerial/LUFA USBtoSerial.inf delete mode 100644 lib/lufa/Projects/USBtoSerial/USBtoSerial.c delete mode 100644 lib/lufa/Projects/USBtoSerial/USBtoSerial.h delete mode 100644 lib/lufa/Projects/USBtoSerial/USBtoSerial.txt delete mode 100644 lib/lufa/Projects/USBtoSerial/asf.xml delete mode 100644 lib/lufa/Projects/USBtoSerial/doxyfile delete mode 100644 lib/lufa/Projects/USBtoSerial/makefile delete mode 100644 lib/lufa/Projects/Webserver/Config/AppConfig.h delete mode 100644 lib/lufa/Projects/Webserver/Config/LUFAConfig.h delete mode 100644 lib/lufa/Projects/Webserver/Descriptors.c delete mode 100644 lib/lufa/Projects/Webserver/Descriptors.h delete mode 100644 lib/lufa/Projects/Webserver/LUFA Webserver RNDIS.inf delete mode 100644 lib/lufa/Projects/Webserver/Lib/DHCPClientApp.c delete mode 100644 lib/lufa/Projects/Webserver/Lib/DHCPClientApp.h delete mode 100644 lib/lufa/Projects/Webserver/Lib/DHCPCommon.c delete mode 100644 lib/lufa/Projects/Webserver/Lib/DHCPCommon.h delete mode 100644 lib/lufa/Projects/Webserver/Lib/DHCPServerApp.c delete mode 100644 lib/lufa/Projects/Webserver/Lib/DHCPServerApp.h delete mode 100644 lib/lufa/Projects/Webserver/Lib/DataflashManager.c delete mode 100644 lib/lufa/Projects/Webserver/Lib/DataflashManager.h delete mode 100644 lib/lufa/Projects/Webserver/Lib/FATFs/00readme.txt delete mode 100644 lib/lufa/Projects/Webserver/Lib/FATFs/diskio.c delete mode 100644 lib/lufa/Projects/Webserver/Lib/FATFs/diskio.h delete mode 100644 lib/lufa/Projects/Webserver/Lib/FATFs/ff.c delete mode 100644 lib/lufa/Projects/Webserver/Lib/FATFs/ff.h delete mode 100644 lib/lufa/Projects/Webserver/Lib/FATFs/ffconf.h delete mode 100644 lib/lufa/Projects/Webserver/Lib/FATFs/integer.h delete mode 100644 lib/lufa/Projects/Webserver/Lib/HTTPServerApp.c delete mode 100644 lib/lufa/Projects/Webserver/Lib/HTTPServerApp.h delete mode 100644 lib/lufa/Projects/Webserver/Lib/SCSI.c delete mode 100644 lib/lufa/Projects/Webserver/Lib/SCSI.h delete mode 100644 lib/lufa/Projects/Webserver/Lib/TELNETServerApp.c delete mode 100644 lib/lufa/Projects/Webserver/Lib/TELNETServerApp.h delete mode 100644 lib/lufa/Projects/Webserver/Lib/uIPManagement.c delete mode 100644 lib/lufa/Projects/Webserver/Lib/uIPManagement.h delete mode 100644 lib/lufa/Projects/Webserver/Lib/uip/clock.c delete mode 100644 lib/lufa/Projects/Webserver/Lib/uip/clock.h delete mode 100644 lib/lufa/Projects/Webserver/Lib/uip/timer.c delete mode 100644 lib/lufa/Projects/Webserver/Lib/uip/timer.h delete mode 100644 lib/lufa/Projects/Webserver/Lib/uip/uip-split.c delete mode 100644 lib/lufa/Projects/Webserver/Lib/uip/uip-split.h delete mode 100644 lib/lufa/Projects/Webserver/Lib/uip/uip.c delete mode 100644 lib/lufa/Projects/Webserver/Lib/uip/uip.h delete mode 100644 lib/lufa/Projects/Webserver/Lib/uip/uip_arp.c delete mode 100644 lib/lufa/Projects/Webserver/Lib/uip/uip_arp.h delete mode 100644 lib/lufa/Projects/Webserver/Lib/uip/uipopt.h delete mode 100644 lib/lufa/Projects/Webserver/USBDeviceMode.c delete mode 100644 lib/lufa/Projects/Webserver/USBDeviceMode.h delete mode 100644 lib/lufa/Projects/Webserver/USBHostMode.c delete mode 100644 lib/lufa/Projects/Webserver/USBHostMode.h delete mode 100644 lib/lufa/Projects/Webserver/Webserver.c delete mode 100644 lib/lufa/Projects/Webserver/Webserver.h delete mode 100644 lib/lufa/Projects/Webserver/Webserver.txt delete mode 100644 lib/lufa/Projects/Webserver/asf.xml delete mode 100644 lib/lufa/Projects/Webserver/doxyfile delete mode 100644 lib/lufa/Projects/Webserver/makefile delete mode 100644 lib/lufa/Projects/XPLAINBridge/Config/AppConfig.h delete mode 100644 lib/lufa/Projects/XPLAINBridge/Config/LUFAConfig.h delete mode 100644 lib/lufa/Projects/XPLAINBridge/LUFA XPLAIN Bridge.inf delete mode 100644 lib/lufa/Projects/XPLAINBridge/Lib/SoftUART.c delete mode 100644 lib/lufa/Projects/XPLAINBridge/Lib/SoftUART.h delete mode 100644 lib/lufa/Projects/XPLAINBridge/USARTDescriptors.c delete mode 100644 lib/lufa/Projects/XPLAINBridge/USARTDescriptors.h delete mode 100644 lib/lufa/Projects/XPLAINBridge/XPLAINBridge.c delete mode 100644 lib/lufa/Projects/XPLAINBridge/XPLAINBridge.h delete mode 100644 lib/lufa/Projects/XPLAINBridge/XPLAINBridge.txt delete mode 100644 lib/lufa/Projects/XPLAINBridge/asf.xml delete mode 100644 lib/lufa/Projects/XPLAINBridge/doxyfile delete mode 100644 lib/lufa/Projects/XPLAINBridge/makefile delete mode 100644 lib/lufa/Projects/makefile delete mode 100644 lib/lufa/README.txt delete mode 100644 lib/lufa/makefile (limited to 'docs') diff --git a/docs/ChangeLog/20190830/PR6245.md b/docs/ChangeLog/20190830/PR6245.md new file mode 100644 index 000000000..62e71eee9 --- /dev/null +++ b/docs/ChangeLog/20190830/PR6245.md @@ -0,0 +1,5 @@ +* Update repo to use LUFA as a git submodule + * `/lib/LUFA` removed from the repo + * LUFA set as a submodule, pointing to qmk/lufa + * This should allow more flexibility with LUFA, and allow us to keep the sub-module up to date, a lot more easily. It was ~2 years out of date with no easy path to fix that. This prevents that from being an issue in the future + diff --git a/lib/lufa/.gitattributes b/lib/lufa/.gitattributes deleted file mode 100644 index 92dfc3c61..000000000 --- a/lib/lufa/.gitattributes +++ /dev/null @@ -1,94 +0,0 @@ -# auto for anything unspecified -* text=auto - -# sources -*.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 - -# make files (need to always use lf for compatibility with Windows 10 bash) -*.sh eol=lf - -# documentation -*.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 -*.bmp binary -*.eps binary -*.gif binary -*.ico binary -*.jng binary -*.jp2 binary -*.jpg binary -*.jpeg binary -*.jpx binary -*.jxr binary -*.pdf binary -*.png binary -*.psb binary -*.psd binary -*.svg text -*.svgz binary -*.tif binary -*.tiff binary -*.wbmp binary -*.webp binary - -# hex files -*.hex binary -*.eep binary diff --git a/lib/lufa/.gitignore b/lib/lufa/.gitignore deleted file mode 100644 index 1cd1dccf8..000000000 --- a/lib/lufa/.gitignore +++ /dev/null @@ -1,16 +0,0 @@ -*.o -*.d -*.elf -*.hex -*.eep -*.sym -*.bin -*.lss -*.map -*.bak -*.class -Documentation/ -LUFA/StudioIntegration/ProjectGenerator/* -LUFA/StudioIntegration/DocBook/* -!LUFA/StudioIntegration/Docbook/mshelp/* -Keyboard.h \ No newline at end of file diff --git a/lib/lufa/Bootloaders/CDC/BootloaderAPI.c b/lib/lufa/Bootloaders/CDC/BootloaderAPI.c deleted file mode 100644 index 2be156808..000000000 --- a/lib/lufa/Bootloaders/CDC/BootloaderAPI.c +++ /dev/null @@ -1,75 +0,0 @@ -/* - LUFA Library - Copyright (C) Dean Camera, 2017. - - dean [at] fourwalledcubicle [dot] com - www.lufa-lib.org -*/ - -/* - Copyright 2017 Dean Camera (dean [at] fourwalledcubicle [dot] com) - - Permission to use, copy, modify, distribute, and sell this - software and its documentation for any purpose is hereby granted - without fee, provided that the above copyright notice appear in - all copies and that both that the copyright notice and this - permission notice and warranty disclaimer appear in supporting - documentation, and that the name of the author not be used in - advertising or publicity pertaining to distribution of the - software without specific, written prior permission. - - The author disclaims all warranties with regard to this - software, including all implied warranties of merchantability - and fitness. In no event shall the author be liable for any - special, indirect or consequential damages or any damages - whatsoever resulting from loss of use, data or profits, whether - in an action of contract, negligence or other tortious action, - arising out of or in connection with the use or performance of - this software. -*/ - -/** \file - * - * Bootloader user application API functions. - */ - -#include "BootloaderAPI.h" - -void BootloaderAPI_ErasePage(const uint32_t Address) -{ - boot_page_erase_safe(Address); - boot_spm_busy_wait(); - boot_rww_enable(); -} - -void BootloaderAPI_WritePage(const uint32_t Address) -{ - boot_page_write_safe(Address); - boot_spm_busy_wait(); - boot_rww_enable(); -} - -void BootloaderAPI_FillWord(const uint32_t Address, const uint16_t Word) -{ - boot_page_fill_safe(Address, Word); -} - -uint8_t BootloaderAPI_ReadSignature(const uint16_t Address) -{ - return boot_signature_byte_get(Address); -} - -uint8_t BootloaderAPI_ReadFuse(const uint16_t Address) -{ - return boot_lock_fuse_bits_get(Address); -} - -uint8_t BootloaderAPI_ReadLock(void) -{ - return boot_lock_fuse_bits_get(GET_LOCK_BITS); -} - -void BootloaderAPI_WriteLock(const uint8_t LockBits) -{ - boot_lock_bits_set_safe(LockBits); -} diff --git a/lib/lufa/Bootloaders/CDC/BootloaderAPI.h b/lib/lufa/Bootloaders/CDC/BootloaderAPI.h deleted file mode 100644 index 5169bbc3c..000000000 --- a/lib/lufa/Bootloaders/CDC/BootloaderAPI.h +++ /dev/null @@ -1,58 +0,0 @@ -/* - LUFA Library - Copyright (C) Dean Camera, 2017. - - dean [at] fourwalledcubicle [dot] com - www.lufa-lib.org -*/ - -/* - Copyright 2017 Dean Camera (dean [at] fourwalledcubicle [dot] com) - - Permission to use, copy, modify, distribute, and sell this - software and its documentation for any purpose is hereby granted - without fee, provided that the above copyright notice appear in - all copies and that both that the copyright notice and this - permission notice and warranty disclaimer appear in supporting - documentation, and that the name of the author not be used in - advertising or publicity pertaining to distribution of the - software without specific, written prior permission. - - The author disclaims all warranties with regard to this - software, including all implied warranties of merchantability - and fitness. In no event shall the author be liable for any - special, indirect or consequential damages or any damages - whatsoever resulting from loss of use, data or profits, whether - in an action of contract, negligence or other tortious action, - arising out of or in connection with the use or performance of - this software. -*/ - -/** \file - * - * Header file for BootloaderAPI.c. - */ - -#ifndef _BOOTLOADER_API_H_ -#define _BOOTLOADER_API_H_ - - /* Includes: */ - #include - #include - #include - - #include - - #include "Config/AppConfig.h" - - /* Function Prototypes: */ - void BootloaderAPI_ErasePage(const uint32_t Address); - void BootloaderAPI_WritePage(const uint32_t Address); - void BootloaderAPI_FillWord(const uint32_t Address, const uint16_t Word); - uint8_t BootloaderAPI_ReadSignature(const uint16_t Address); - uint8_t BootloaderAPI_ReadFuse(const uint16_t Address); - uint8_t BootloaderAPI_ReadLock(void); - void BootloaderAPI_WriteLock(const uint8_t LockBits); - -#endif - diff --git a/lib/lufa/Bootloaders/CDC/BootloaderAPITable.S b/lib/lufa/Bootloaders/CDC/BootloaderAPITable.S deleted file mode 100644 index 2c60f84e8..000000000 --- a/lib/lufa/Bootloaders/CDC/BootloaderAPITable.S +++ /dev/null @@ -1,91 +0,0 @@ -/* - LUFA Library - Copyright (C) Dean Camera, 2017. - - dean [at] fourwalledcubicle [dot] com - www.lufa-lib.org -*/ - -/* - Copyright 2017 Dean Camera (dean [at] fourwalledcubicle [dot] com) - - Permission to use, copy, modify, distribute, and sell this - software and its documentation for any purpose is hereby granted - without fee, provided that the above copyright notice appear in - all copies and that both that the copyright notice and this - permission notice and warranty disclaimer appear in supporting - documentation, and that the name of the author not be used in - advertising or publicity pertaining to distribution of the - software without specific, written prior permission. - - The author disclaims all warranties with regard to this - software, including all implied warranties of merchantability - and fitness. In no event shall the author be liable for any - special, indirect or consequential damages or any damages - whatsoever resulting from loss of use, data or profits, whether - in an action of contract, negligence or other tortious action, - arising out of or in connection with the use or performance of - this software. -*/ - -; Trampolines to actual API implementations if the target address is outside the -; range of a rjmp instruction (can happen with large bootloader sections) -.section .apitable_trampolines, "ax" -.global BootloaderAPI_Trampolines -BootloaderAPI_Trampolines: - - BootloaderAPI_ErasePage_Trampoline: - jmp BootloaderAPI_ErasePage - BootloaderAPI_WritePage_Trampoline: - jmp BootloaderAPI_WritePage - BootloaderAPI_FillWord_Trampoline: - jmp BootloaderAPI_FillWord - BootloaderAPI_ReadSignature_Trampoline: - jmp BootloaderAPI_ReadSignature - BootloaderAPI_ReadFuse_Trampoline: - jmp BootloaderAPI_ReadFuse - BootloaderAPI_ReadLock_Trampoline: - jmp BootloaderAPI_ReadLock - BootloaderAPI_WriteLock_Trampoline: - jmp BootloaderAPI_WriteLock - BootloaderAPI_UNUSED1: - ret - BootloaderAPI_UNUSED2: - ret - BootloaderAPI_UNUSED3: - ret - BootloaderAPI_UNUSED4: - ret - BootloaderAPI_UNUSED5: - ret - - - -; API function jump table -.section .apitable_jumptable, "ax" -.global BootloaderAPI_JumpTable -BootloaderAPI_JumpTable: - - rjmp BootloaderAPI_ErasePage_Trampoline - rjmp BootloaderAPI_WritePage_Trampoline - rjmp BootloaderAPI_FillWord_Trampoline - rjmp BootloaderAPI_ReadSignature_Trampoline - rjmp BootloaderAPI_ReadFuse_Trampoline - rjmp BootloaderAPI_ReadLock_Trampoline - rjmp BootloaderAPI_WriteLock_Trampoline - rjmp BootloaderAPI_UNUSED1 ; UNUSED ENTRY 1 - rjmp BootloaderAPI_UNUSED2 ; UNUSED ENTRY 2 - rjmp BootloaderAPI_UNUSED3 ; UNUSED ENTRY 3 - rjmp BootloaderAPI_UNUSED4 ; UNUSED ENTRY 4 - rjmp BootloaderAPI_UNUSED5 ; UNUSED ENTRY 5 - - - -; Bootloader table signatures and information -.section .apitable_signatures, "ax" -.global BootloaderAPI_Signatures -BootloaderAPI_Signatures: - - .long BOOT_START_ADDR ; Start address of the bootloader - .word 0xDF00 ; Signature for the CDC class bootloader - .word 0xDCFB ; Signature for a LUFA class bootloader diff --git a/lib/lufa/Bootloaders/CDC/BootloaderCDC.c b/lib/lufa/Bootloaders/CDC/BootloaderCDC.c deleted file mode 100644 index aa17bc15b..000000000 --- a/lib/lufa/Bootloaders/CDC/BootloaderCDC.c +++ /dev/null @@ -1,673 +0,0 @@ -/* - LUFA Library - Copyright (C) Dean Camera, 2017. - - dean [at] fourwalledcubicle [dot] com - www.lufa-lib.org -*/ - -/* - Copyright 2017 Dean Camera (dean [at] fourwalledcubicle [dot] com) - - Permission to use, copy, modify, distribute, and sell this - software and its documentation for any purpose is hereby granted - without fee, provided that the above copyright notice appear in - all copies and that both that the copyright notice and this - permission notice and warranty disclaimer appear in supporting - documentation, and that the name of the author not be used in - advertising or publicity pertaining to distribution of the - software without specific, written prior permission. - - The author disclaims all warranties with regard to this - software, including all implied warranties of merchantability - and fitness. In no event shall the author be liable for any - special, indirect or consequential damages or any damages - whatsoever resulting from loss of use, data or profits, whether - in an action of contract, negligence or other tortious action, - arising out of or in connection with the use or performance of - this software. -*/ - -/** \file - * - * Main source file for the CDC class bootloader. This file contains the complete bootloader logic. - */ - -#define INCLUDE_FROM_BOOTLOADERCDC_C -#include "BootloaderCDC.h" - -/** Contains the current baud rate and other settings of the first virtual serial port. This must be retained as some - * operating systems will not open the port unless the settings can be set successfully. - */ -static CDC_LineEncoding_t LineEncoding = { .BaudRateBPS = 0, - .CharFormat = CDC_LINEENCODING_OneStopBit, - .ParityType = CDC_PARITY_None, - .DataBits = 8 }; - -/** Current address counter. This stores the current address of the FLASH or EEPROM as set by the host, - * and is used when reading or writing to the AVRs memory (either FLASH or EEPROM depending on the issued - * command.) - */ -static uint32_t CurrAddress; - -/** Flag to indicate if the bootloader should be running, or should exit and allow the application code to run - * via a watchdog reset. When cleared the bootloader will exit, starting the watchdog and entering an infinite - * loop until the AVR restarts and the application runs. - */ -static bool RunBootloader = true; - -/** Magic lock for forced application start. If the HWBE fuse is programmed and BOOTRST is unprogrammed, the bootloader - * will start if the /HWB line of the AVR is held low and the system is reset. However, if the /HWB line is still held - * low when the application attempts to start via a watchdog reset, the bootloader will re-start. If set to the value - * \ref MAGIC_BOOT_KEY the special init function \ref Application_Jump_Check() will force the application to start. - */ -uint16_t MagicBootKey ATTR_NO_INIT; - - -/** Special startup routine to check if the bootloader was started via a watchdog reset, and if the magic application - * start key has been loaded into \ref MagicBootKey. If the bootloader started via the watchdog and the key is valid, - * this will force the user application to start via a software jump. - */ -void Application_Jump_Check(void) -{ - bool JumpToApplication = false; - - #if (BOARD == BOARD_LEONARDO) - /* Enable pull-up on the IO13 pin so we can use it to select the mode */ - PORTC |= (1 << 7); - Delay_MS(10); - - /* If IO13 is not jumpered to ground, start the user application instead */ - JumpToApplication = ((PINC & (1 << 7)) != 0); - - /* Disable pull-up after the check has completed */ - PORTC &= ~(1 << 7); - #elif ((BOARD == BOARD_XPLAIN) || (BOARD == BOARD_XPLAIN_REV1)) - /* Disable JTAG debugging */ - JTAG_DISABLE(); - - /* Enable pull-up on the JTAG TCK pin so we can use it to select the mode */ - PORTF |= (1 << 4); - Delay_MS(10); - - /* If the TCK pin is not jumpered to ground, start the user application instead */ - JumpToApplication = ((PINF & (1 << 4)) != 0); - - /* Re-enable JTAG debugging */ - JTAG_ENABLE(); - #else - /* Check if the device's BOOTRST fuse is set */ - if (boot_lock_fuse_bits_get(GET_HIGH_FUSE_BITS) & FUSE_BOOTRST) - { - /* If the reset source was not an external reset or the key is correct, clear it and jump to the application */ - if (!(MCUSR & (1 << EXTRF)) || (MagicBootKey == MAGIC_BOOT_KEY)) - JumpToApplication = true; - - /* Clear reset source */ - MCUSR &= ~(1 << EXTRF); - } - else - { - /* If the reset source was the bootloader and the key is correct, clear it and jump to the application; - * this can happen in the HWBE fuse is set, and the HBE pin is low during the watchdog reset */ - if ((MCUSR & (1 << WDRF)) && (MagicBootKey == MAGIC_BOOT_KEY)) - JumpToApplication = true; - - /* Clear reset source */ - MCUSR &= ~(1 << WDRF); - } - #endif - - /* Don't run the user application if the reset vector is blank (no app loaded) */ - bool ApplicationValid = (pgm_read_word_near(0) != 0xFFFF); - - /* If a request has been made to jump to the user application, honor it */ - if (JumpToApplication && ApplicationValid) - { - /* Turn off the watchdog */ - MCUSR &= ~(1 << WDRF); - wdt_disable(); - - /* Clear the boot key and jump to the user application */ - MagicBootKey = 0; - - // cppcheck-suppress constStatement - ((void (*)(void))0x0000)(); - } -} - -/** Main program entry point. This routine configures the hardware required by the bootloader, then continuously - * runs the bootloader processing routine until instructed to soft-exit, or hard-reset via the watchdog to start - * the loaded application code. - */ -int main(void) -{ - /* Setup hardware required for the bootloader */ - SetupHardware(); - - /* Turn on first LED on the board to indicate that the bootloader has started */ - LEDs_SetAllLEDs(LEDS_LED1); - - /* Enable global interrupts so that the USB stack can function */ - GlobalInterruptEnable(); - - while (RunBootloader) - { - CDC_Task(); - USB_USBTask(); - } - - /* Wait a short time to end all USB transactions and then disconnect */ - _delay_us(1000); - - /* Disconnect from the host - USB interface will be reset later along with the AVR */ - USB_Detach(); - - /* Unlock the forced application start mode of the bootloader if it is restarted */ - MagicBootKey = MAGIC_BOOT_KEY; - - /* Enable the watchdog and force a timeout to reset the AVR */ - wdt_enable(WDTO_250MS); - - for (;;); -} - -/** Configures all hardware required for the bootloader. */ -static void SetupHardware(void) -{ - /* Disable watchdog if enabled by bootloader/fuses */ - MCUSR &= ~(1 << WDRF); - wdt_disable(); - - /* Disable clock division */ - clock_prescale_set(clock_div_1); - - /* Relocate the interrupt vector table to the bootloader section */ - MCUCR = (1 << IVCE); - MCUCR = (1 << IVSEL); - - /* Initialize the USB and other board hardware drivers */ - USB_Init(); - LEDs_Init(); - - /* Bootloader active LED toggle timer initialization */ - TIMSK1 = (1 << TOIE1); - TCCR1B = ((1 << CS11) | (1 << CS10)); -} - -/** ISR to periodically toggle the LEDs on the board to indicate that the bootloader is active. */ -ISR(TIMER1_OVF_vect, ISR_BLOCK) -{ - LEDs_ToggleLEDs(LEDS_LED1 | LEDS_LED2); -} - -/** Event handler for the USB_ConfigurationChanged event. This configures the device's endpoints ready - * to relay data to and from the attached USB host. - */ -void EVENT_USB_Device_ConfigurationChanged(void) -{ - /* Setup CDC Notification, Rx and Tx Endpoints */ - Endpoint_ConfigureEndpoint(CDC_NOTIFICATION_EPADDR, EP_TYPE_INTERRUPT, - CDC_NOTIFICATION_EPSIZE, 1); - - Endpoint_ConfigureEndpoint(CDC_TX_EPADDR, EP_TYPE_BULK, CDC_TXRX_EPSIZE, 1); - - Endpoint_ConfigureEndpoint(CDC_RX_EPADDR, EP_TYPE_BULK, CDC_TXRX_EPSIZE, 1); -} - -/** Event handler for the USB_ControlRequest event. This is used to catch and process control requests sent to - * the device from the USB host before passing along unhandled control requests to the library for processing - * internally. - */ -void EVENT_USB_Device_ControlRequest(void) -{ - /* Ignore any requests that aren't directed to the CDC interface */ - if ((USB_ControlRequest.bmRequestType & (CONTROL_REQTYPE_TYPE | CONTROL_REQTYPE_RECIPIENT)) != - (REQTYPE_CLASS | REQREC_INTERFACE)) - { - return; - } - - /* Activity - toggle indicator LEDs */ - LEDs_ToggleLEDs(LEDS_LED1 | LEDS_LED2); - - /* Process CDC specific control requests */ - switch (USB_ControlRequest.bRequest) - { - case CDC_REQ_GetLineEncoding: - if (USB_ControlRequest.bmRequestType == (REQDIR_DEVICETOHOST | REQTYPE_CLASS | REQREC_INTERFACE)) - { - Endpoint_ClearSETUP(); - - /* Write the line coding data to the control endpoint */ - Endpoint_Write_Control_Stream_LE(&LineEncoding, sizeof(CDC_LineEncoding_t)); - Endpoint_ClearOUT(); - } - - break; - case CDC_REQ_SetLineEncoding: - if (USB_ControlRequest.bmRequestType == (REQDIR_HOSTTODEVICE | REQTYPE_CLASS | REQREC_INTERFACE)) - { - Endpoint_ClearSETUP(); - - /* Read the line coding data in from the host into the global struct */ - Endpoint_Read_Control_Stream_LE(&LineEncoding, sizeof(CDC_LineEncoding_t)); - Endpoint_ClearIN(); - } - - break; - case CDC_REQ_SetControlLineState: - if (USB_ControlRequest.bmRequestType == (REQDIR_HOSTTODEVICE | REQTYPE_CLASS | REQREC_INTERFACE)) - { - Endpoint_ClearSETUP(); - Endpoint_ClearStatusStage(); - } - - break; - } -} - -#if !defined(NO_BLOCK_SUPPORT) -/** Reads or writes a block of EEPROM or FLASH memory to or from the appropriate CDC data endpoint, depending - * on the AVR109 protocol command issued. - * - * \param[in] Command Single character AVR109 protocol command indicating what memory operation to perform - */ -static void ReadWriteMemoryBlock(const uint8_t Command) -{ - uint16_t BlockSize; - char MemoryType; - - uint8_t HighByte = 0; - uint8_t LowByte = 0; - - BlockSize = (FetchNextCommandByte() << 8); - BlockSize |= FetchNextCommandByte(); - - MemoryType = FetchNextCommandByte(); - - if ((MemoryType != MEMORY_TYPE_FLASH) && (MemoryType != MEMORY_TYPE_EEPROM)) - { - /* Send error byte back to the host */ - WriteNextResponseByte('?'); - - return; - } - - /* Check if command is to read a memory block */ - if (Command == AVR109_COMMAND_BlockRead) - { - /* Re-enable RWW section */ - boot_rww_enable(); - - while (BlockSize--) - { - if (MemoryType == MEMORY_TYPE_FLASH) - { - /* Read the next FLASH byte from the current FLASH page */ - #if (FLASHEND > 0xFFFF) - WriteNextResponseByte(pgm_read_byte_far(CurrAddress | HighByte)); - #else - WriteNextResponseByte(pgm_read_byte(CurrAddress | HighByte)); - #endif - - /* If both bytes in current word have been read, increment the address counter */ - if (HighByte) - CurrAddress += 2; - - HighByte = !HighByte; - } - else - { - /* Read the next EEPROM byte into the endpoint */ - WriteNextResponseByte(eeprom_read_byte((uint8_t*)(intptr_t)(CurrAddress >> 1))); - - /* Increment the address counter after use */ - CurrAddress += 2; - } - } - } - else - { - uint32_t PageStartAddress = CurrAddress; - - if (MemoryType == MEMORY_TYPE_FLASH) - { - boot_page_erase(PageStartAddress); - boot_spm_busy_wait(); - } - - while (BlockSize--) - { - if (MemoryType == MEMORY_TYPE_FLASH) - { - /* If both bytes in current word have been written, increment the address counter */ - if (HighByte) - { - /* Write the next FLASH word to the current FLASH page */ - boot_page_fill(CurrAddress, ((FetchNextCommandByte() << 8) | LowByte)); - - /* Increment the address counter after use */ - CurrAddress += 2; - } - else - { - LowByte = FetchNextCommandByte(); - } - - HighByte = !HighByte; - } - else - { - /* Write the next EEPROM byte from the endpoint */ - eeprom_update_byte((uint8_t*)((intptr_t)(CurrAddress >> 1)), FetchNextCommandByte()); - - /* Increment the address counter after use */ - CurrAddress += 2; - } - } - - /* If in FLASH programming mode, commit the page after writing */ - if (MemoryType == MEMORY_TYPE_FLASH) - { - /* Commit the flash page to memory */ - boot_page_write(PageStartAddress); - - /* Wait until write operation has completed */ - boot_spm_busy_wait(); - } - - /* Send response byte back to the host */ - WriteNextResponseByte('\r'); - } -} -#endif - -/** Retrieves the next byte from the host in the CDC data OUT endpoint, and clears the endpoint bank if needed - * to allow reception of the next data packet from the host. - * - * \return Next received byte from the host in the CDC data OUT endpoint - */ -static uint8_t FetchNextCommandByte(void) -{ - /* Select the OUT endpoint so that the next data byte can be read */ - Endpoint_SelectEndpoint(CDC_RX_EPADDR); - - /* If OUT endpoint empty, clear it and wait for the next packet from the host */ - while (!(Endpoint_IsReadWriteAllowed())) - { - Endpoint_ClearOUT(); - - while (!(Endpoint_IsOUTReceived())) - { - if (USB_DeviceState == DEVICE_STATE_Unattached) - return 0; - } - } - - /* Fetch the next byte from the OUT endpoint */ - return Endpoint_Read_8(); -} - -/** Writes the next response byte to the CDC data IN endpoint, and sends the endpoint back if needed to free up the - * bank when full ready for the next byte in the packet to the host. - * - * \param[in] Response Next response byte to send to the host - */ -static void WriteNextResponseByte(const uint8_t Response) -{ - /* Select the IN endpoint so that the next data byte can be written */ - Endpoint_SelectEndpoint(CDC_TX_EPADDR); - - /* If IN endpoint full, clear it and wait until ready for the next packet to the host */ - if (!(Endpoint_IsReadWriteAllowed())) - { - Endpoint_ClearIN(); - - while (!(Endpoint_IsINReady())) - { - if (USB_DeviceState == DEVICE_STATE_Unattached) - return; - } - } - - /* Write the next byte to the IN endpoint */ - Endpoint_Write_8(Response); -} - -/** Task to read in AVR109 commands from the CDC data OUT endpoint, process them, perform the required actions - * and send the appropriate response back to the host. - */ -static void CDC_Task(void) -{ - /* Select the OUT endpoint */ - Endpoint_SelectEndpoint(CDC_RX_EPADDR); - - /* Check if endpoint has a command in it sent from the host */ - if (!(Endpoint_IsOUTReceived())) - return; - - /* Read in the bootloader command (first byte sent from host) */ - uint8_t Command = FetchNextCommandByte(); - - if (Command == AVR109_COMMAND_ExitBootloader) - { - RunBootloader = false; - - /* Send confirmation byte back to the host */ - WriteNextResponseByte('\r'); - } - else if ((Command == AVR109_COMMAND_SetLED) || (Command == AVR109_COMMAND_ClearLED) || - (Command == AVR109_COMMAND_SelectDeviceType)) - { - FetchNextCommandByte(); - - /* Send confirmation byte back to the host */ - WriteNextResponseByte('\r'); - } - else if ((Command == AVR109_COMMAND_EnterProgrammingMode) || (Command == AVR109_COMMAND_LeaveProgrammingMode)) - { - /* Send confirmation byte back to the host */ - WriteNextResponseByte('\r'); - } - else if (Command == AVR109_COMMAND_ReadPartCode) - { - /* Return ATMEGA128 part code - this is only to allow AVRProg to use the bootloader */ - WriteNextResponseByte(0x44); - WriteNextResponseByte(0x00); - } - else if (Command == AVR109_COMMAND_ReadAutoAddressIncrement) - { - /* Indicate auto-address increment is supported */ - WriteNextResponseByte('Y'); - } - else if (Command == AVR109_COMMAND_SetCurrentAddress) - { - /* Set the current address to that given by the host (translate 16-bit word address to byte address) */ - CurrAddress = (FetchNextCommandByte() << 9); - CurrAddress |= (FetchNextCommandByte() << 1); - - /* Send confirmation byte back to the host */ - WriteNextResponseByte('\r'); - } - else if (Command == AVR109_COMMAND_ReadBootloaderInterface) - { - /* Indicate serial programmer back to the host */ - WriteNextResponseByte('S'); - } - else if (Command == AVR109_COMMAND_ReadBootloaderIdentifier) - { - /* Write the 7-byte software identifier to the endpoint */ - for (uint8_t CurrByte = 0; CurrByte < 7; CurrByte++) - WriteNextResponseByte(SOFTWARE_IDENTIFIER[CurrByte]); - } - else if (Command == AVR109_COMMAND_ReadBootloaderSWVersion) - { - WriteNextResponseByte('0' + BOOTLOADER_VERSION_MAJOR); - WriteNextResponseByte('0' + BOOTLOADER_VERSION_MINOR); - } - else if (Command == AVR109_COMMAND_ReadSignature) - { - WriteNextResponseByte(AVR_SIGNATURE_3); - WriteNextResponseByte(AVR_SIGNATURE_2); - WriteNextResponseByte(AVR_SIGNATURE_1); - } - else if (Command == AVR109_COMMAND_EraseFLASH) - { - /* Clear the application section of flash */ - for (uint32_t CurrFlashAddress = 0; CurrFlashAddress < (uint32_t)BOOT_START_ADDR; CurrFlashAddress += SPM_PAGESIZE) - { - boot_page_erase(CurrFlashAddress); - boot_spm_busy_wait(); - boot_page_write(CurrFlashAddress); - boot_spm_busy_wait(); - } - - /* Send confirmation byte back to the host */ - WriteNextResponseByte('\r'); - } - #if !defined(NO_LOCK_BYTE_WRITE_SUPPORT) - else if (Command == AVR109_COMMAND_WriteLockbits) - { - /* Set the lock bits to those given by the host */ - boot_lock_bits_set(FetchNextCommandByte()); - - /* Send confirmation byte back to the host */ - WriteNextResponseByte('\r'); - } - #endif - else if (Command == AVR109_COMMAND_ReadLockbits) - { - WriteNextResponseByte(boot_lock_fuse_bits_get(GET_LOCK_BITS)); - } - else if (Command == AVR109_COMMAND_ReadLowFuses) - { - WriteNextResponseByte(boot_lock_fuse_bits_get(GET_LOW_FUSE_BITS)); - } - else if (Command == AVR109_COMMAND_ReadHighFuses) - { - WriteNextResponseByte(boot_lock_fuse_bits_get(GET_HIGH_FUSE_BITS)); - } - else if (Command == AVR109_COMMAND_ReadExtendedFuses) - { - WriteNextResponseByte(boot_lock_fuse_bits_get(GET_EXTENDED_FUSE_BITS)); - } - #if !defined(NO_BLOCK_SUPPORT) - else if (Command == AVR109_COMMAND_GetBlockWriteSupport) - { - WriteNextResponseByte('Y'); - - /* Send block size to the host */ - WriteNextResponseByte(SPM_PAGESIZE >> 8); - WriteNextResponseByte(SPM_PAGESIZE & 0xFF); - } - else if ((Command == AVR109_COMMAND_BlockWrite) || (Command == AVR109_COMMAND_BlockRead)) - { - /* Delegate the block write/read to a separate function for clarity */ - ReadWriteMemoryBlock(Command); - } - #endif - #if !defined(NO_FLASH_BYTE_SUPPORT) - else if (Command == AVR109_COMMAND_FillFlashPageWordHigh) - { - /* Write the high byte to the current flash page */ - boot_page_fill(CurrAddress, FetchNextCommandByte()); - - /* Send confirmation byte back to the host */ - WriteNextResponseByte('\r'); - } - else if (Command == AVR109_COMMAND_FillFlashPageWordLow) - { - /* Write the low byte to the current flash page */ - boot_page_fill(CurrAddress | 0x01, FetchNextCommandByte()); - - /* Increment the address */ - CurrAddress += 2; - - /* Send confirmation byte back to the host */ - WriteNextResponseByte('\r'); - } - else if (Command == AVR109_COMMAND_WriteFlashPage) - { - /* Commit the flash page to memory */ - boot_page_write(CurrAddress); - - /* Wait until write operation has completed */ - boot_spm_busy_wait(); - - /* Send confirmation byte back to the host */ - WriteNextResponseByte('\r'); - } - else if (Command == AVR109_COMMAND_ReadFLASHWord) - { - #if (FLASHEND > 0xFFFF) - uint16_t ProgramWord = pgm_read_word_far(CurrAddress); - #else - uint16_t ProgramWord = pgm_read_word(CurrAddress); - #endif - - WriteNextResponseByte(ProgramWord >> 8); - WriteNextResponseByte(ProgramWord & 0xFF); - } - #endif - #if !defined(NO_EEPROM_BYTE_SUPPORT) - else if (Command == AVR109_COMMAND_WriteEEPROM) - { - /* Read the byte from the endpoint and write it to the EEPROM */ - eeprom_update_byte((uint8_t*)((intptr_t)(CurrAddress >> 1)), FetchNextCommandByte()); - - /* Increment the address after use */ - CurrAddress += 2; - - /* Send confirmation byte back to the host */ - WriteNextResponseByte('\r'); - } - else if (Command == AVR109_COMMAND_ReadEEPROM) - { - /* Read the EEPROM byte and write it to the endpoint */ - WriteNextResponseByte(eeprom_read_byte((uint8_t*)((intptr_t)(CurrAddress >> 1)))); - - /* Increment the address after use */ - CurrAddress += 2; - } - #endif - else if (Command != AVR109_COMMAND_Sync) - { - /* Unknown (non-sync) command, return fail code */ - WriteNextResponseByte('?'); - } - - /* Select the IN endpoint */ - Endpoint_SelectEndpoint(CDC_TX_EPADDR); - - /* Remember if the endpoint is completely full before clearing it */ - bool IsEndpointFull = !(Endpoint_IsReadWriteAllowed()); - - /* Send the endpoint data to the host */ - Endpoint_ClearIN(); - - /* If a full endpoint's worth of data was sent, we need to send an empty packet afterwards to signal end of transfer */ - if (IsEndpointFull) - { - while (!(Endpoint_IsINReady())) - { - if (USB_DeviceState == DEVICE_STATE_Unattached) - return; - } - - Endpoint_ClearIN(); - } - - /* Wait until the data has been sent to the host */ - while (!(Endpoint_IsINReady())) - { - if (USB_DeviceState == DEVICE_STATE_Unattached) - return; - } - - /* Select the OUT endpoint */ - Endpoint_SelectEndpoint(CDC_RX_EPADDR); - - /* Acknowledge the command from the host */ - Endpoint_ClearOUT(); -} diff --git a/lib/lufa/Bootloaders/CDC/BootloaderCDC.h b/lib/lufa/Bootloaders/CDC/BootloaderCDC.h deleted file mode 100644 index b6543aa73..000000000 --- a/lib/lufa/Bootloaders/CDC/BootloaderCDC.h +++ /dev/null @@ -1,144 +0,0 @@ -/* - LUFA Library - Copyright (C) Dean Camera, 2017. - - dean [at] fourwalledcubicle [dot] com - www.lufa-lib.org -*/ - -/* - Copyright 2017 Dean Camera (dean [at] fourwalledcubicle [dot] com) - - Permission to use, copy, modify, distribute, and sell this - software and its documentation for any purpose is hereby granted - without fee, provided that the above copyright notice appear in - all copies and that both that the copyright notice and this - permission notice and warranty disclaimer appear in supporting - documentation, and that the name of the author not be used in - advertising or publicity pertaining to distribution of the - software without specific, written prior permission. - - The author disclaims all warranties with regard to this - software, including all implied warranties of merchantability - and fitness. In no event shall the author be liable for any - special, indirect or consequential damages or any damages - whatsoever resulting from loss of use, data or profits, whether - in an action of contract, negligence or other tortious action, - arising out of or in connection with the use or performance of - this software. -*/ - -/** \file - * - * Header file for BootloaderCDC.c. - */ - -#ifndef _CDC_H_ -#define _CDC_H_ - - /* Includes: */ - #include - #include - #include - #include - #include - #include - #include - - #include "Descriptors.h" - #include "BootloaderAPI.h" - #include "Config/AppConfig.h" - - #include - #include - #include - - /* Preprocessor Checks: */ - #if !defined(__OPTIMIZE_SIZE__) - #error This bootloader requires that it be optimized for size, not speed, to fit into the target device. Change optimization settings and try again. - #endif - - /* Macros: */ - /** Version major of the CDC bootloader. */ - #define BOOTLOADER_VERSION_MAJOR 0x01 - - /** Version minor of the CDC bootloader. */ - #define BOOTLOADER_VERSION_MINOR 0x00 - - /** Hardware version major of the CDC bootloader. */ - #define BOOTLOADER_HWVERSION_MAJOR 0x01 - - /** Hardware version minor of the CDC bootloader. */ - #define BOOTLOADER_HWVERSION_MINOR 0x00 - - /** Eight character bootloader firmware identifier reported to the host when requested. */ - #define SOFTWARE_IDENTIFIER "LUFACDC" - - /** Magic bootloader key to unlock forced application start mode. */ - #define MAGIC_BOOT_KEY 0xDC42 - - /* Enums: */ - /** Possible memory types that can be addressed via the bootloader. */ - enum AVR109_Memories - { - MEMORY_TYPE_FLASH = 'F', - MEMORY_TYPE_EEPROM = 'E', - }; - - /** Possible commands that can be issued to the bootloader. */ - enum AVR109_Commands - { - AVR109_COMMAND_Sync = 27, - AVR109_COMMAND_ReadEEPROM = 'd', - AVR109_COMMAND_WriteEEPROM = 'D', - AVR109_COMMAND_ReadFLASHWord = 'R', - AVR109_COMMAND_WriteFlashPage = 'm', - AVR109_COMMAND_FillFlashPageWordLow = 'c', - AVR109_COMMAND_FillFlashPageWordHigh = 'C', - AVR109_COMMAND_GetBlockWriteSupport = 'b', - AVR109_COMMAND_BlockWrite = 'B', - AVR109_COMMAND_BlockRead = 'g', - AVR109_COMMAND_ReadExtendedFuses = 'Q', - AVR109_COMMAND_ReadHighFuses = 'N', - AVR109_COMMAND_ReadLowFuses = 'F', - AVR109_COMMAND_ReadLockbits = 'r', - AVR109_COMMAND_WriteLockbits = 'l', - AVR109_COMMAND_EraseFLASH = 'e', - AVR109_COMMAND_ReadSignature = 's', - AVR109_COMMAND_ReadBootloaderSWVersion = 'V', - AVR109_COMMAND_ReadBootloaderHWVersion = 'v', - AVR109_COMMAND_ReadBootloaderIdentifier = 'S', - AVR109_COMMAND_ReadBootloaderInterface = 'p', - AVR109_COMMAND_SetCurrentAddress = 'A', - AVR109_COMMAND_ReadAutoAddressIncrement = 'a', - AVR109_COMMAND_ReadPartCode = 't', - AVR109_COMMAND_EnterProgrammingMode = 'P', - AVR109_COMMAND_LeaveProgrammingMode = 'L', - AVR109_COMMAND_SelectDeviceType = 'T', - AVR109_COMMAND_SetLED = 'x', - AVR109_COMMAND_ClearLED = 'y', - AVR109_COMMAND_ExitBootloader = 'E', - }; - - /* Type Defines: */ - /** Type define for a non-returning pointer to the start of the loaded application in flash memory. */ - typedef void (*AppPtr_t)(void) ATTR_NO_RETURN; - - /* Function Prototypes: */ - static void CDC_Task(void); - static void SetupHardware(void); - - void Application_Jump_Check(void) ATTR_INIT_SECTION(3); - - void EVENT_USB_Device_ConfigurationChanged(void); - - #if defined(INCLUDE_FROM_BOOTLOADERCDC_C) || defined(__DOXYGEN__) - #if !defined(NO_BLOCK_SUPPORT) - static void ReadWriteMemoryBlock(const uint8_t Command); - #endif - static uint8_t FetchNextCommandByte(void); - static void WriteNextResponseByte(const uint8_t Response); - #endif - -#endif - diff --git a/lib/lufa/Bootloaders/CDC/BootloaderCDC.txt b/lib/lufa/Bootloaders/CDC/BootloaderCDC.txt deleted file mode 100644 index f8c349cde..000000000 --- a/lib/lufa/Bootloaders/CDC/BootloaderCDC.txt +++ /dev/null @@ -1,242 +0,0 @@ -/** \file - * - * This file contains special DoxyGen information for the generation of the main page and other special - * documentation pages. It is not a project source file. - */ - -/** \mainpage CDC Class USB AVR Bootloader - * - * \section Sec_Compat Demo Compatibility: - * - * The following list indicates what microcontrollers are compatible with this demo. - * - * \li Series 7 USB AVRs (AT90USBxxx7) - * \li Series 6 USB AVRs (AT90USBxxx6) - * \li Series 4 USB AVRs (ATMEGAxxU4) - * \li Series 2 USB AVRs (AT90USBxx2, ATMEGAxxU2) - * - * \section Sec_Info USB Information: - * - * The following table gives a rundown of the USB utilization of this demo. - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - *
USB Mode:Device
USB Class:Communications Device Class (CDC)
USB Subclass:Abstract Control Model (ACM)
Relevant Standards:USBIF CDC Class Standard
Supported USB Speeds:Full Speed Mode
- * - * \section Sec_Description Project Description: - * - * This bootloader enumerates to the host as a CDC Class device (virtual serial port), allowing for AVR109 - * protocol compatible programming software to load firmware onto the AVR. - * - * Out of the box this bootloader builds for the AT90USB1287 with an 8KB bootloader section size, and will fit - * into 4KB of bootloader space. If you wish to alter this size and/or change the AVR model, you will need to - * edit the MCU, FLASH_SIZE_KB and BOOT_SECTION_SIZE_KB values in the accompanying makefile. - * - * When the bootloader is running, the board's LED(s) will flash at regular intervals to distinguish the - * bootloader from the normal user application. - * - * \warning THIS BOOTLOADER IS NOT SECURE. Malicious entities can recover written data, even if the device - * lockbits are set. - * - * \section Sec_Running Running the Bootloader - * - * On the USB AVR8 devices, setting the \c HWBE device fuse will cause the bootloader to run if the \c HWB pin of - * the AVR is grounded when the device is reset. - * - * The are two behaviours of this bootloader, depending on the device's fuses: - * - * If the device's BOOTRST fuse is set, the bootloader will run any time the system is reset from - * the external reset pin, unless no valid user application has been loaded. To initiate the bootloader, the - * device's external reset pin should be grounded momentarily. - * - * If the device's BOOTRST fuse is not set, the bootloader will run only if initiated via a software - * jump, or if the \c HWB pin was low during the last device reset (if the \c HWBE fuse is set). - * - * For board specific exceptions to the above, see below. - * - * \subsection SSec_XPLAIN Atmel Xplain Board - * Ground the USB AVR JTAG's \c TCK pin to ground when powering on the board to start the bootloader. This assumes the - * \c HWBE fuse is cleared and the \c BOOTRST fuse is set as the HWBE pin is not user accessible on this board. - * - * \subsection SSec_Leonardo Arduino Leonardo Board - * Ground \c IO13 when powering the board to start the bootloader. This assumes the \c HWBE fuse is cleared and the - * \c BOOTRST fuse is set as the HWBE pin is not user accessible on this board. - * - * \section Sec_Installation Driver Installation - * - * After running this bootloader for the first time on a new computer, you will need to supply the .INF - * file located in this bootloader project's directory as the device's driver when running under Windows. - * This will enable Windows to use its inbuilt CDC drivers, negating the need for custom drivers for the - * device. Other Operating Systems should automatically use their own inbuilt CDC-ACM drivers. - * - * \section Sec_HostApp Host Controller Application - * - * This bootloader is compatible with the open source application AVRDUDE, Atmel's AVRPROG, or other - * applications implementing the AVR109 protocol, which is documented on the Atmel website as an application - * note. - * - * \subsection SSec_AVRDude AVRDUDE (Windows, Mac, Linux) - * - * AVRDude is a free, cross-platform and open source command line programmer for Atmel and third party AVR - * programmers. It is available on the the Windows platform as part of the "WinAVR" package, or on other systems - * either from a build from the official source code, or in many distributions as a precompiled binary package. - * - * To load a new HEX file with AVRDude, specify "AVR109" as the programmer, with the allocated COM port. On Windows - * platforms this will be a COMx port name: - * \code - * avrdude -c AVR109 -p at90usb1287 -P COM0 -U flash:w:Mouse.hex - * \endcode - * - * On Linux systems, this will typically be a /dev/ttyACMx port name: - * \code - * avrdude -c AVR109 -p at90usb1287 -P /dev/ttyACM0 -U flash:w:Mouse.hex - * \endcode - * - * Refer to the AVRDude project documentation for additional usage instructions. - * - * \section Sec_API User Application API - * - * Several user application functions for FLASH and other special memory area manipulations are exposed by the bootloader, - * allowing the user application to call into the bootloader at runtime to read and write FLASH data. - * - * By default, the bootloader API jump table is located 32 bytes from the end of the device's FLASH memory, and follows the - * following layout: - * - * \code - * #define BOOTLOADER_API_TABLE_SIZE 32 - * #define BOOTLOADER_API_TABLE_START ((FLASHEND + 1UL) - BOOTLOADER_API_TABLE_SIZE) - * #define BOOTLOADER_API_CALL(Index) (void*)((BOOTLOADER_API_TABLE_START + (Index * 2)) / 2) - * - * void (*BootloaderAPI_ErasePage)(uint32_t Address) = BOOTLOADER_API_CALL(0); - * void (*BootloaderAPI_WritePage)(uint32_t Address) = BOOTLOADER_API_CALL(1); - * void (*BootloaderAPI_FillWord)(uint32_t Address, uint16_t Word) = BOOTLOADER_API_CALL(2); - * uint8_t (*BootloaderAPI_ReadSignature)(uint16_t Address) = BOOTLOADER_API_CALL(3); - * uint8_t (*BootloaderAPI_ReadFuse)(uint16_t Address) = BOOTLOADER_API_CALL(4); - * uint8_t (*BootloaderAPI_ReadLock)(void) = BOOTLOADER_API_CALL(5); - * void (*BootloaderAPI_WriteLock)(uint8_t LockBits) = BOOTLOADER_API_CALL(6); - * - * #define BOOTLOADER_MAGIC_SIGNATURE_START (BOOTLOADER_API_TABLE_START + (BOOTLOADER_API_TABLE_SIZE - 2)) - * #define BOOTLOADER_MAGIC_SIGNATURE 0xDCFB - * - * #define BOOTLOADER_CLASS_SIGNATURE_START (BOOTLOADER_API_TABLE_START + (BOOTLOADER_API_TABLE_SIZE - 4)) - * #define BOOTLOADER_CDC_SIGNATURE 0xDF00 - * - * #define BOOTLOADER_ADDRESS_START (BOOTLOADER_API_TABLE_START + (BOOTLOADER_API_TABLE_SIZE - 8)) - * #define BOOTLOADER_ADDRESS_LENGTH 4 - * \endcode - * - * From the application the API support of the bootloader can be detected by reading the FLASH memory bytes located at address - * \c BOOTLOADER_MAGIC_SIGNATURE_START and comparing them to the value \c BOOTLOADER_MAGIC_SIGNATURE. The class of bootloader - * can be determined by reading the FLASH memory bytes located at address \c BOOTLOADER_CLASS_SIGNATURE_START and comparing them - * to the value \c BOOTLOADER_CDC_SIGNATURE. The start address of the bootloader can be retrieved by reading the bytes of FLASH - * memory starting from address \c BOOTLOADER_ADDRESS_START. - * - * \subsection SSec_API_MemLayout Device Memory Map - * The following illustration indicates the final memory map of the device when loaded with the bootloader. - * - * \verbatim - * +----------------------------+ 0x0000 - * | | - * | | - * | | - * | | - * | | - * | | - * | | - * | | - * | User Application | - * | | - * | | - * | | - * | | - * | | - * | | - * | | - * +----------------------------+ FLASHEND - BOOT_SECTION_SIZE - * | | - * | Bootloader Application | - * | (Not User App. Accessible) | - * | | - * +----------------------------+ FLASHEND - 96 - * | API Table Trampolines | - * | (Not User App. Accessible) | - * +----------------------------+ FLASHEND - 32 - * | Bootloader API Table | - * | (User App. Accessible) | - * +----------------------------+ FLASHEND - 8 - * | Bootloader ID Constants | - * | (User App. Accessible) | - * +----------------------------+ FLASHEND - * \endverbatim - * - * \section Sec_KnownIssues Known Issues: - * - * \par On Linux machines, the CDC bootloader is unstable or inaccessible. - * A change to the \c ModemManager module in many Linux distributions causes - * this module to try to take control over inserted CDC devices, corrupting the - * datastream. A UDEV rule is required to prevent this. - * See here for resolution steps. - * If the issue still persists then uninstall modemmanager by executing sudo apt-get remove modemmanager, or - * the equivalent using your chosen distribution's package manager. - * - * \par On Linux machines, the CDC bootloader is inaccessible. - * On many Linux systems, non-root users do not have automatic access to newly - * inserted CDC devices. Root privileges or a UDEV rule is required to gain - * access. - * See here for resolution steps. - * - * \section Sec_Options Project Options - * - * The following defines can be found in this demo, which can control the demo behaviour when defined, or changed in value. - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - *
Define Name:Location:Description:
NO_BLOCK_SUPPORTAppConfig.hDefine to disable memory block read/write support in the bootloader, requiring all reads and writes to be made - * using the byte-level commands.
NO_EEPROM_BYTE_SUPPORTAppConfig.hDefine to disable EEPROM memory byte read/write support in the bootloader, requiring all EEPROM reads and writes - * to be made using the block-level commands.
NO_FLASH_BYTE_SUPPORTAppConfig.hDefine to disable FLASH memory byte read/write support in the bootloader, requiring all FLASH reads and writes - * to be made using the block-level commands.
NO_LOCK_BYTE_WRITE_SUPPORTAppConfig.hDefine to disable lock byte write support in the bootloader, preventing the lock bits from being set programmatically.
- */ - diff --git a/lib/lufa/Bootloaders/CDC/Config/AppConfig.h b/lib/lufa/Bootloaders/CDC/Config/AppConfig.h deleted file mode 100644 index 22972b72f..000000000 --- a/lib/lufa/Bootloaders/CDC/Config/AppConfig.h +++ /dev/null @@ -1,50 +0,0 @@ -/* - LUFA Library - Copyright (C) Dean Camera, 2017. - - dean [at] fourwalledcubicle [dot] com - www.lufa-lib.org -*/ - -/* - Copyright 2017 Dean Camera (dean [at] fourwalledcubicle [dot] com) - - Permission to use, copy, modify, distribute, and sell this - software and its documentation for any purpose is hereby granted - without fee, provided that the above copyright notice appear in - all copies and that both that the copyright notice and this - permission notice and warranty disclaimer appear in supporting - documentation, and that the name of the author not be used in - advertising or publicity pertaining to distribution of the - software without specific, written prior permission. - - The author disclaims all warranties with regard to this - software, including all implied warranties of merchantability - and fitness. In no event shall the author be liable for any - special, indirect or consequential damages or any damages - whatsoever resulting from loss of use, data or profits, whether - in an action of contract, negligence or other tortious action, - arising out of or in connection with the use or performance of - this software. -*/ - -/** \file - * \brief Application Configuration Header File - * - * This is a header file which is be used to configure LUFA's - * compile time options, as an alternative to the compile time - * constants supplied through a makefile. - * - * For information on what each token does, refer to the - * \ref Sec_Options section of the application documentation. - */ - -#ifndef _APP_CONFIG_H_ -#define _APP_CONFIG_H_ - -// #define NO_BLOCK_SUPPORT -// #define NO_EEPROM_BYTE_SUPPORT -// #define NO_FLASH_BYTE_SUPPORT -// #define NO_LOCK_BYTE_WRITE_SUPPORT - -#endif diff --git a/lib/lufa/Bootloaders/CDC/Config/LUFAConfig.h b/lib/lufa/Bootloaders/CDC/Config/LUFAConfig.h deleted file mode 100644 index 5aa0e765b..000000000 --- a/lib/lufa/Bootloaders/CDC/Config/LUFAConfig.h +++ /dev/null @@ -1,93 +0,0 @@ -/* - LUFA Library - Copyright (C) Dean Camera, 2017. - - dean [at] fourwalledcubicle [dot] com - www.lufa-lib.org -*/ - -/* - Copyright 2017 Dean Camera (dean [at] fourwalledcubicle [dot] com) - - Permission to use, copy, modify, distribute, and sell this - software and its documentation for any purpose is hereby granted - without fee, provided that the above copyright notice appear in - all copies and that both that the copyright notice and this - permission notice and warranty disclaimer appear in supporting - documentation, and that the name of the author not be used in - advertising or publicity pertaining to distribution of the - software without specific, written prior permission. - - The author disclaims all warranties with regard to this - software, including all implied warranties of merchantability - and fitness. In no event shall the author be liable for any - special, indirect or consequential damages or any damages - whatsoever resulting from loss of use, data or profits, whether - in an action of contract, negligence or other tortious action, - arising out of or in connection with the use or performance of - this software. -*/ - -/** \file - * \brief LUFA Library Configuration Header File - * - * This header file is used to configure LUFA's compile time options, - * as an alternative to the compile time constants supplied through - * a makefile. - * - * For information on what each token does, refer to the LUFA - * manual section "Summary of Compile Tokens". - */ - -#ifndef _LUFA_CONFIG_H_ -#define _LUFA_CONFIG_H_ - - #if (ARCH == ARCH_AVR8) - - /* Non-USB Related Configuration Tokens: */ -// #define DISABLE_TERMINAL_CODES - - /* USB Class Driver Related Tokens: */ -// #define HID_HOST_BOOT_PROTOCOL_ONLY -// #define HID_STATETABLE_STACK_DEPTH {Insert Value Here} -// #define HID_USAGE_STACK_DEPTH {Insert Value Here} -// #define HID_MAX_COLLECTIONS {Insert Value Here} -// #define HID_MAX_REPORTITEMS {Insert Value Here} -// #define HID_MAX_REPORT_IDS {Insert Value Here} -// #define NO_CLASS_DRIVER_AUTOFLUSH - - /* General USB Driver Related Tokens: */ - #define ORDERED_EP_CONFIG - #define USE_STATIC_OPTIONS (USB_DEVICE_OPT_FULLSPEED | USB_OPT_REG_ENABLED | USB_OPT_AUTO_PLL) - #define USB_DEVICE_ONLY -// #define USB_HOST_ONLY -// #define USB_STREAM_TIMEOUT_MS {Insert Value Here} -// #define NO_LIMITED_CONTROLLER_CONNECT - #define NO_SOF_EVENTS - - /* USB Device Mode Driver Related Tokens: */ - #define USE_RAM_DESCRIPTORS -// #define USE_FLASH_DESCRIPTORS -// #define USE_EEPROM_DESCRIPTORS - #define NO_INTERNAL_SERIAL - #define FIXED_CONTROL_ENDPOINT_SIZE 8 - #define DEVICE_STATE_AS_GPIOR 0 - #define FIXED_NUM_CONFIGURATIONS 1 -// #define CONTROL_ONLY_DEVICE -// #define INTERRUPT_CONTROL_ENDPOINT - #define NO_DEVICE_REMOTE_WAKEUP - #define NO_DEVICE_SELF_POWER - - /* USB Host Mode Driver Related Tokens: */ -// #define HOST_STATE_AS_GPIOR {Insert Value Here} -// #define USB_HOST_TIMEOUT_MS {Insert Value Here} -// #define HOST_DEVICE_SETTLE_DELAY_MS {Insert Value Here} -// #define NO_AUTO_VBUS_MANAGEMENT -// #define INVERTED_VBUS_ENABLE_LINE - - #else - - #error Unsupported architecture for this LUFA configuration file. - - #endif -#endif diff --git a/lib/lufa/Bootloaders/CDC/Descriptors.c b/lib/lufa/Bootloaders/CDC/Descriptors.c deleted file mode 100644 index 627657037..000000000 --- a/lib/lufa/Bootloaders/CDC/Descriptors.c +++ /dev/null @@ -1,244 +0,0 @@ -/* - LUFA Library - Copyright (C) Dean Camera, 2017. - - dean [at] fourwalledcubicle [dot] com - www.lufa-lib.org -*/ - -/* - Copyright 2017 Dean Camera (dean [at] fourwalledcubicle [dot] com) - - Permission to use, copy, modify, distribute, and sell this - software and its documentation for any purpose is hereby granted - without fee, provided that the above copyright notice appear in - all copies and that both that the copyright notice and this - permission notice and warranty disclaimer appear in supporting - documentation, and that the name of the author not be used in - advertising or publicity pertaining to distribution of the - software without specific, written prior permission. - - The author disclaims all warranties with regard to this - software, including all implied warranties of merchantability - and fitness. In no event shall the author be liable for any - special, indirect or consequential damages or any damages - whatsoever resulting from loss of use, data or profits, whether - in an action of contract, negligence or other tortious action, - arising out of or in connection with the use or performance of - this software. -*/ - -/** \file - * - * USB Device Descriptors, for library use when in USB device mode. Descriptors are special - * computer-readable structures which the host requests upon device enumeration, to determine - * the device's capabilities and functions. - */ - -#include "Descriptors.h" - -/** Device descriptor structure. This descriptor, located in SRAM memory, describes the overall - * device characteristics, including the supported USB version, control endpoint size and the - * number of device configurations. The descriptor is read out by the USB host when the enumeration - * process begins. - */ -const USB_Descriptor_Device_t DeviceDescriptor = -{ - .Header = {.Size = sizeof(USB_Descriptor_Device_t), .Type = DTYPE_Device}, - - .USBSpecification = VERSION_BCD(1,1,0), - .Class = CDC_CSCP_CDCClass, - .SubClass = CDC_CSCP_NoSpecificSubclass, - .Protocol = CDC_CSCP_NoSpecificProtocol, - - .Endpoint0Size = FIXED_CONTROL_ENDPOINT_SIZE, - - .VendorID = 0x03EB, - .ProductID = 0x204A, - .ReleaseNumber = VERSION_BCD(1,0,0), - - .ManufacturerStrIndex = STRING_ID_Manufacturer, - .ProductStrIndex = STRING_ID_Product, - .SerialNumStrIndex = NO_DESCRIPTOR, - - .NumberOfConfigurations = FIXED_NUM_CONFIGURATIONS -}; - -/** Configuration descriptor structure. This descriptor, located in SRAM memory, describes the usage - * of the device in one of its supported configurations, including information about any device interfaces - * and endpoints. The descriptor is read out by the USB host during the enumeration process when selecting - * a configuration so that the host may correctly communicate with the USB device. - */ -const USB_Descriptor_Configuration_t ConfigurationDescriptor = -{ - .Config = - { - .Header = {.Size = sizeof(USB_Descriptor_Configuration_Header_t), .Type = DTYPE_Configuration}, - - .TotalConfigurationSize = sizeof(USB_Descriptor_Configuration_t), - .TotalInterfaces = 2, - - .ConfigurationNumber = 1, - .ConfigurationStrIndex = NO_DESCRIPTOR, - - .ConfigAttributes = USB_CONFIG_ATTR_RESERVED, - - .MaxPowerConsumption = USB_CONFIG_POWER_MA(100) - }, - - .CDC_CCI_Interface = - { - .Header = {.Size = sizeof(USB_Descriptor_Interface_t), .Type = DTYPE_Interface}, - - .InterfaceNumber = INTERFACE_ID_CDC_CCI, - .AlternateSetting = 0, - - .TotalEndpoints = 1, - - .Class = CDC_CSCP_CDCClass, - .SubClass = CDC_CSCP_ACMSubclass, - .Protocol = CDC_CSCP_ATCommandProtocol, - - .InterfaceStrIndex = NO_DESCRIPTOR - }, - - .CDC_Functional_Header = - { - .Header = {.Size = sizeof(USB_CDC_Descriptor_FunctionalHeader_t), .Type = DTYPE_CSInterface}, - .Subtype = 0x00, - - .CDCSpecification = VERSION_BCD(1,1,0), - }, - - .CDC_Functional_ACM = - { - .Header = {.Size = sizeof(USB_CDC_Descriptor_FunctionalACM_t), .Type = DTYPE_CSInterface}, - .Subtype = 0x02, - - .Capabilities = 0x02, - }, - - .CDC_Functional_Union = - { - .Header = {.Size = sizeof(USB_CDC_Descriptor_FunctionalUnion_t), .Type = DTYPE_CSInterface}, - .Subtype = 0x06, - - .MasterInterfaceNumber = INTERFACE_ID_CDC_CCI, - .SlaveInterfaceNumber = INTERFACE_ID_CDC_DCI, - }, - - .CDC_NotificationEndpoint = - { - .Header = {.Size = sizeof(USB_Descriptor_Endpoint_t), .Type = DTYPE_Endpoint}, - - .EndpointAddress = CDC_NOTIFICATION_EPADDR, - .Attributes = (EP_TYPE_INTERRUPT | ENDPOINT_ATTR_NO_SYNC | ENDPOINT_USAGE_DATA), - .EndpointSize = CDC_NOTIFICATION_EPSIZE, - .PollingIntervalMS = 0xFF - }, - - .CDC_DCI_Interface = - { - .Header = {.Size = sizeof(USB_Descriptor_Interface_t), .Type = DTYPE_Interface}, - - .InterfaceNumber = INTERFACE_ID_CDC_DCI, - .AlternateSetting = 0, - - .TotalEndpoints = 2, - - .Class = CDC_CSCP_CDCDataClass, - .SubClass = CDC_CSCP_NoDataSubclass, - .Protocol = CDC_CSCP_NoDataProtocol, - - .InterfaceStrIndex = NO_DESCRIPTOR - }, - - .CDC_DataOutEndpoint = - { - .Header = {.Size = sizeof(USB_Descriptor_Endpoint_t), .Type = DTYPE_Endpoint}, - - .EndpointAddress = CDC_RX_EPADDR, - .Attributes = (EP_TYPE_BULK | ENDPOINT_ATTR_NO_SYNC | ENDPOINT_USAGE_DATA), - .EndpointSize = CDC_TXRX_EPSIZE, - .PollingIntervalMS = 0x05 - }, - - .CDC_DataInEndpoint = - { - .Header = {.Size = sizeof(USB_Descriptor_Endpoint_t), .Type = DTYPE_Endpoint}, - - .EndpointAddress = CDC_TX_EPADDR, - .Attributes = (EP_TYPE_BULK | ENDPOINT_ATTR_NO_SYNC | ENDPOINT_USAGE_DATA), - .EndpointSize = CDC_TXRX_EPSIZE, - .PollingIntervalMS = 0x05 - } -}; - -/** Language descriptor structure. This descriptor, located in SRAM memory, is returned when the host requests - * the string descriptor with index 0 (the first index). It is actually an array of 16-bit integers, which indicate - * via the language ID table available at USB.org what languages the device supports for its string descriptors. - */ -const USB_Descriptor_String_t LanguageString = USB_STRING_DESCRIPTOR_ARRAY(LANGUAGE_ID_ENG); - -/** Manufacturer descriptor string. This is a Unicode string containing the manufacturer's details in human readable - * form, and is read out upon request by the host when the appropriate string ID is requested, listed in the Device - * Descriptor. - */ -const USB_Descriptor_String_t ManufacturerString = USB_STRING_DESCRIPTOR(L"Dean Camera"); - -/** Product descriptor string. This is a Unicode string containing the product's details in human readable form, - * and is read out upon request by the host when the appropriate string ID is requested, listed in the Device - * Descriptor. - */ -const USB_Descriptor_String_t ProductString = USB_STRING_DESCRIPTOR(L"LUFA CDC"); - -/** This function is called by the library when in device mode, and must be overridden (see LUFA library "USB Descriptors" - * documentation) by the application code so that the address and size of a requested descriptor can be given - * to the USB library. When the device receives a Get Descriptor request on the control endpoint, this function - * is called so that the descriptor details can be passed back and the appropriate descriptor sent back to the - * USB host. - */ -uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, - const uint16_t wIndex, - const void** const DescriptorAddress) -{ - const uint8_t DescriptorType = (wValue >> 8); - const uint8_t DescriptorNumber = (wValue & 0xFF); - - const void* Address = NULL; - uint16_t Size = NO_DESCRIPTOR; - - switch (DescriptorType) - { - case DTYPE_Device: - Address = &DeviceDescriptor; - Size = sizeof(USB_Descriptor_Device_t); - break; - case DTYPE_Configuration: - Address = &ConfigurationDescriptor; - Size = sizeof(USB_Descriptor_Configuration_t); - break; - case DTYPE_String: - if (DescriptorNumber == STRING_ID_Language) - { - Address = &LanguageString; - Size = LanguageString.Header.Size; - } - else if (DescriptorNumber == STRING_ID_Manufacturer) - { - Address = &ManufacturerString; - Size = ManufacturerString.Header.Size; - } - else if (DescriptorNumber == STRING_ID_Product) - { - Address = &ProductString; - Size = ProductString.Header.Size; - } - - break; - } - - *DescriptorAddress = Address; - return Size; -} - diff --git a/lib/lufa/Bootloaders/CDC/Descriptors.h b/lib/lufa/Bootloaders/CDC/Descriptors.h deleted file mode 100644 index a6fbf5262..000000000 --- a/lib/lufa/Bootloaders/CDC/Descriptors.h +++ /dev/null @@ -1,158 +0,0 @@ -/* - LUFA Library - Copyright (C) Dean Camera, 2017. - - dean [at] fourwalledcubicle [dot] com - www.lufa-lib.org -*/ - -/* - Copyright 2017 Dean Camera (dean [at] fourwalledcubicle [dot] com) - - Permission to use, copy, modify, distribute, and sell this - software and its documentation for any purpose is hereby granted - without fee, provided that the above copyright notice appear in - all copies and that both that the copyright notice and this - permission notice and warranty disclaimer appear in supporting - documentation, and that the name of the author not be used in - advertising or publicity pertaining to distribution of the - software without specific, written prior permission. - - The author disclaims all warranties with regard to this - software, including all implied warranties of merchantability - and fitness. In no event shall the author be liable for any - special, indirect or consequential damages or any damages - whatsoever resulting from loss of use, data or profits, whether - in an action of contract, negligence or other tortious action, - arising out of or in connection with the use or performance of - this software. -*/ - -/** \file - * - * Header file for Descriptors.c. - */ - -#ifndef _DESCRIPTORS_H_ -#define _DESCRIPTORS_H_ - - /* Includes: */ - #include - - #include "Config/AppConfig.h" - - /* Macros: */ - #if defined(__AVR_AT90USB1287__) - #define AVR_SIGNATURE_1 0x1E - #define AVR_SIGNATURE_2 0x97 - #define AVR_SIGNATURE_3 0x82 - #elif defined(__AVR_AT90USB647__) - #define AVR_SIGNATURE_1 0x1E - #define AVR_SIGNATURE_2 0x96 - #define AVR_SIGNATURE_3 0x82 - #elif defined(__AVR_AT90USB1286__) - #define AVR_SIGNATURE_1 0x1E - #define AVR_SIGNATURE_2 0x97 - #define AVR_SIGNATURE_3 0x82 - #elif defined(__AVR_AT90USB646__) - #define AVR_SIGNATURE_1 0x1E - #define AVR_SIGNATURE_2 0x96 - #define AVR_SIGNATURE_3 0x82 - #elif defined(__AVR_ATmega32U4__) - #define AVR_SIGNATURE_1 0x1E - #define AVR_SIGNATURE_2 0x95 - #define AVR_SIGNATURE_3 0x87 - #elif defined(__AVR_ATmega16U4__) - #define AVR_SIGNATURE_1 0x1E - #define AVR_SIGNATURE_2 0x94 - #define AVR_SIGNATURE_3 0x88 - #elif defined(__AVR_ATmega32U2__) - #define AVR_SIGNATURE_1 0x1E - #define AVR_SIGNATURE_2 0x95 - #define AVR_SIGNATURE_3 0x8A - #elif defined(__AVR_ATmega16U2__) - #define AVR_SIGNATURE_1 0x1E - #define AVR_SIGNATURE_2 0x94 - #define AVR_SIGNATURE_3 0x89 - #elif defined(__AVR_AT90USB162__) - #define AVR_SIGNATURE_1 0x1E - #define AVR_SIGNATURE_2 0x94 - #define AVR_SIGNATURE_3 0x82 - #elif defined(__AVR_ATmega8U2__) - #define AVR_SIGNATURE_1 0x1E - #define AVR_SIGNATURE_2 0x93 - #define AVR_SIGNATURE_3 0x89 - #elif defined(__AVR_AT90USB82__) - #define AVR_SIGNATURE_1 0x1E - #define AVR_SIGNATURE_2 0x93 - #define AVR_SIGNATURE_3 0x82 - #else - #error The selected AVR part is not currently supported by this bootloader. - #endif - - /** Endpoint address for the CDC control interface event notification endpoint. */ - #define CDC_NOTIFICATION_EPADDR (ENDPOINT_DIR_IN | 2) - - /** Endpoint address for the CDC data interface TX (data IN) endpoint. */ - #define CDC_TX_EPADDR (ENDPOINT_DIR_IN | 3) - - /** Endpoint address for the CDC data interface RX (data OUT) endpoint. */ - #define CDC_RX_EPADDR (ENDPOINT_DIR_OUT | 4) - - /** Size of the CDC data interface TX and RX data endpoint banks, in bytes. */ - #define CDC_TXRX_EPSIZE 16 - - /** Size of the CDC control interface notification endpoint bank, in bytes. */ - #define CDC_NOTIFICATION_EPSIZE 8 - - /* Type Defines: */ - /** Type define for the device configuration descriptor structure. This must be defined in the - * application code, as the configuration descriptor contains several sub-descriptors which - * vary between devices, and which describe the device's usage to the host. - */ - typedef struct - { - USB_Descriptor_Configuration_Header_t Config; - - // CDC Control Interface - USB_Descriptor_Interface_t CDC_CCI_Interface; - USB_CDC_Descriptor_FunctionalHeader_t CDC_Functional_Header; - USB_CDC_Descriptor_FunctionalACM_t CDC_Functional_ACM; - USB_CDC_Descriptor_FunctionalUnion_t CDC_Functional_Union; - USB_Descriptor_Endpoint_t CDC_NotificationEndpoint; - - // CDC Data Interface - USB_Descriptor_Interface_t CDC_DCI_Interface; - USB_Descriptor_Endpoint_t CDC_DataOutEndpoint; - USB_Descriptor_Endpoint_t CDC_DataInEndpoint; - } USB_Descriptor_Configuration_t; - - /** Enum for the device interface descriptor IDs within the device. Each interface descriptor - * should have a unique ID index associated with it, which can be used to refer to the - * interface from other descriptors. - */ - enum InterfaceDescriptors_t - { - INTERFACE_ID_CDC_CCI = 0, /**< CDC CCI interface descriptor ID */ - INTERFACE_ID_CDC_DCI = 1, /**< CDC DCI interface descriptor ID */ - }; - - /** Enum for the device string descriptor IDs within the device. Each string descriptor should - * have a unique ID index associated with it, which can be used to refer to the string from - * other descriptors. - */ - enum StringDescriptors_t - { - STRING_ID_Language = 0, /**< Supported Languages string descriptor ID (must be zero) */ - STRING_ID_Manufacturer = 1, /**< Manufacturer string ID */ - STRING_ID_Product = 2, /**< Product string ID */ - }; - - /* Function Prototypes: */ - uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, - const uint16_t wIndex, - const void** const DescriptorAddress) - ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3); - -#endif - diff --git a/lib/lufa/Bootloaders/CDC/LUFA CDC Bootloader.inf b/lib/lufa/Bootloaders/CDC/LUFA CDC Bootloader.inf deleted file mode 100644 index 61624c731..000000000 --- a/lib/lufa/Bootloaders/CDC/LUFA CDC Bootloader.inf +++ /dev/null @@ -1,66 +0,0 @@ -;************************************************************ -; Windows USB CDC ACM Setup File -; Copyright (c) 2000 Microsoft Corporation -;************************************************************ - -[DefaultInstall] -CopyINF="LUFA CDC Bootloader.inf" - -[Version] -Signature="$Windows NT$" -Class=Ports -ClassGuid={4D36E978-E325-11CE-BFC1-08002BE10318} -Provider=%MFGNAME% -DriverVer=7/1/2012,10.0.0.0 - -[Manufacturer] -%MFGNAME%=DeviceList, NTx86, NTamd64, NTia64 - -[SourceDisksNames] - -[SourceDisksFiles] - -[DestinationDirs] -DefaultDestDir=12 - -[DriverInstall] -Include=mdmcpq.inf -CopyFiles=FakeModemCopyFileSection -AddReg=DriverInstall.AddReg - -[DriverInstall.Services] -Include=mdmcpq.inf -AddService=usbser, 0x00000002, LowerFilter_Service_Inst - -[DriverInstall.AddReg] -HKR,,EnumPropPages32,,"msports.dll,SerialPortPropPageProvider" - -;------------------------------------------------------------------------------ -; Vendor and Product ID Definitions -;------------------------------------------------------------------------------ -; When developing your USB device, the VID and PID used in the PC side -; application program and the firmware on the microcontroller must match. -; Modify the below line to use your VID and PID. Use the format as shown below. -; Note: One INF file can be used for multiple devices with different VID and PIDs. -; For each supported device, append ",USB\VID_xxxx&PID_yyyy" to the end of the line. -;------------------------------------------------------------------------------ -[DeviceList] -%DESCRIPTION%=DriverInstall, USB\VID_03EB&PID_204A - -[DeviceList.NTx86] -%DESCRIPTION%=DriverInstall, USB\VID_03EB&PID_204A - -[DeviceList.NTamd64] -%DESCRIPTION%=DriverInstall, USB\VID_03EB&PID_204A - -[DeviceList.NTia64] -%DESCRIPTION%=DriverInstall, USB\VID_03EB&PID_204A - -;------------------------------------------------------------------------------ -; String Definitions -;------------------------------------------------------------------------------ -;Modify these strings to customize your device -;------------------------------------------------------------------------------ -[Strings] -MFGNAME="http://www.lufa-lib.org" -DESCRIPTION="LUFA CDC Class Bootloader" diff --git a/lib/lufa/Bootloaders/CDC/asf.xml b/lib/lufa/Bootloaders/CDC/asf.xml deleted file mode 100644 index 02e7063c6..000000000 --- a/lib/lufa/Bootloaders/CDC/asf.xml +++ /dev/null @@ -1,161 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - CDC Class Bootloader, capable of reprogramming a device using avrdude or other AVR109 protocol compliant software when plugged into a host. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/lib/lufa/Bootloaders/CDC/doxyfile b/lib/lufa/Bootloaders/CDC/doxyfile deleted file mode 100644 index 414693479..000000000 --- a/lib/lufa/Bootloaders/CDC/doxyfile +++ /dev/null @@ -1,2396 +0,0 @@ -# Doxyfile 1.8.9 - -# This file describes the settings to be used by the documentation system -# doxygen (www.doxygen.org) for a project. -# -# 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 -#--------------------------------------------------------------------------- - -# This tag specifies the encoding used for all characters in the config file -# that follow. The default is UTF-8 which is also the encoding used for all text -# before the first occurrence of this tag. Doxygen uses libiconv (or the iconv -# built into libc) for the transcoding. See http://www.gnu.org/software/libiconv -# for the list of possible encodings. -# The default value is: UTF-8. - -DOXYFILE_ENCODING = UTF-8 - -# The PROJECT_NAME tag is a single word (or a sequence of words surrounded by -# double-quotes, unless you are using Doxywizard) that should identify the -# project for which the documentation is generated. This name is used in the -# title of most generated pages and in a few other places. -# The default value is: My Project. - -PROJECT_NAME = "LUFA Library - CDC Class Bootloader" - -# The PROJECT_NUMBER tag can be used to enter a project or revision number. This -# could be handy for archiving the generated documentation or if some version -# control system is used. - -PROJECT_NUMBER = - -# Using the PROJECT_BRIEF tag one can provide an optional one line description -# for a project that appears at the top of each page and should give viewer a -# quick idea about the purpose of the project. Keep the description short. - -PROJECT_BRIEF = - -# With the PROJECT_LOGO tag one can specify a logo or an icon that is included -# in the documentation. The maximum height of the logo should not exceed 55 -# pixels and the maximum width should not exceed 200 pixels. Doxygen will copy -# the logo to the output directory. - -PROJECT_LOGO = - -# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) path -# into which the generated documentation will be written. If a relative path is -# entered, it will be relative to the location where doxygen was started. If -# left blank the current directory will be used. - -OUTPUT_DIRECTORY = ./Documentation/ - -# If the CREATE_SUBDIRS tag is set to YES then doxygen will create 4096 sub- -# directories (in 2 levels) under the output directory of each output format and -# will distribute the generated files over these directories. Enabling this -# option can be useful when feeding doxygen a huge amount of source files, where -# putting all generated files in the same directory would otherwise causes -# performance problems for the file system. -# The default value is: NO. - -CREATE_SUBDIRS = NO - -# If the ALLOW_UNICODE_NAMES tag is set to YES, doxygen will allow non-ASCII -# characters to appear in the names of generated files. If set to NO, non-ASCII -# characters will be escaped, for example _xE3_x81_x84 will be used for Unicode -# U+3044. -# The default value is: NO. - -ALLOW_UNICODE_NAMES = NO - -# The OUTPUT_LANGUAGE tag is used to specify the language in which all -# documentation generated by doxygen is written. Doxygen will use this -# information to generate all constant output in the proper language. -# Possible values are: Afrikaans, Arabic, Armenian, Brazilian, Catalan, Chinese, -# Chinese-Traditional, Croatian, Czech, Danish, Dutch, English (United States), -# Esperanto, Farsi (Persian), Finnish, French, German, Greek, Hungarian, -# Indonesian, Italian, Japanese, Japanese-en (Japanese with English messages), -# Korean, Korean-en (Korean with English messages), Latvian, Lithuanian, -# Macedonian, Norwegian, Persian (Farsi), Polish, Portuguese, Romanian, Russian, -# Serbian, Serbian-Cyrillic, Slovak, Slovene, Spanish, Swedish, Turkish, -# Ukrainian and Vietnamese. -# The default value is: English. - -OUTPUT_LANGUAGE = English - -# If the BRIEF_MEMBER_DESC tag is set to YES, doxygen will include brief member -# descriptions after the members that are listed in the file and class -# documentation (similar to Javadoc). Set to NO to disable this. -# The default value is: YES. - -BRIEF_MEMBER_DESC = YES - -# If the REPEAT_BRIEF tag is set to YES, doxygen will prepend the brief -# description of a member or function before the detailed description -# -# Note: If both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the -# brief descriptions will be completely suppressed. -# The default value is: YES. - -REPEAT_BRIEF = YES - -# This tag implements a quasi-intelligent brief description abbreviator that is -# used to form the text in various listings. Each string in this list, if found -# as the leading text of the brief description, will be stripped from the text -# and the result, after processing the whole list, is used as the annotated -# text. Otherwise, the brief description is used as-is. If left blank, the -# following values are used ($name is automatically replaced with the name of -# the entity):The $name class, The $name widget, The $name file, is, provides, -# specifies, contains, represents, a, an and the. - -ABBREVIATE_BRIEF = "The $name class" \ - "The $name widget" \ - "The $name file" \ - is \ - provides \ - specifies \ - contains \ - represents \ - a \ - an \ - the - -# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then -# doxygen will generate a detailed section even if there is only a brief -# description. -# The default value is: NO. - -ALWAYS_DETAILED_SEC = NO - -# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all -# inherited members of a class in the documentation of that class as if those -# members were ordinary class members. Constructors, destructors and assignment -# operators of the base classes will not be shown. -# The default value is: NO. - -INLINE_INHERITED_MEMB = NO - -# If the FULL_PATH_NAMES tag is set to YES, doxygen will prepend the full path -# before files name in the file list and in the header files. If set to NO the -# shortest path that makes the file name unique will be used -# The default value is: YES. - -FULL_PATH_NAMES = YES - -# The STRIP_FROM_PATH tag can be used to strip a user-defined part of the path. -# Stripping is only done if one of the specified strings matches the left-hand -# part of the path. The tag can be used to show relative paths in the file list. -# If left blank the directory from which doxygen is run is used as the path to -# strip. -# -# Note that you can specify absolute paths here, but also relative paths, which -# will be relative from the directory where doxygen is started. -# This tag requires that the tag FULL_PATH_NAMES is set to YES. - -STRIP_FROM_PATH = - -# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of the -# path mentioned in the documentation of a class, which tells the reader which -# header file to include in order to use a class. If left blank only the name of -# the header file containing the class definition is used. Otherwise one should -# specify the list of include paths that are normally passed to the compiler -# using the -I flag. - -STRIP_FROM_INC_PATH = - -# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter (but -# less readable) file names. This can be useful is your file systems doesn't -# support long names like on DOS, Mac, or CD-ROM. -# The default value is: NO. - -SHORT_NAMES = YES - -# If the JAVADOC_AUTOBRIEF tag is set to YES then doxygen will interpret the -# first line (until the first dot) of a Javadoc-style comment as the brief -# description. If set to NO, the Javadoc-style will behave just like regular Qt- -# style comments (thus requiring an explicit @brief command for a brief -# description.) -# The default value is: NO. - -JAVADOC_AUTOBRIEF = NO - -# If the QT_AUTOBRIEF tag is set to YES then doxygen will interpret the first -# line (until the first dot) of a Qt-style comment as the brief description. If -# set to NO, the Qt-style will behave just like regular Qt-style comments (thus -# requiring an explicit \brief command for a brief description.) -# The default value is: NO. - -QT_AUTOBRIEF = NO - -# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make doxygen treat a -# multi-line C++ special comment block (i.e. a block of //! or /// comments) as -# a brief description. This used to be the default behavior. The new default is -# to treat a multi-line C++ comment block as a detailed description. Set this -# tag to YES if you prefer the old behavior instead. -# -# Note that setting this tag to YES also means that rational rose comments are -# not recognized any more. -# The default value is: NO. - -MULTILINE_CPP_IS_BRIEF = NO - -# If the INHERIT_DOCS tag is set to YES then an undocumented member inherits the -# documentation from any documented member that it re-implements. -# The default value is: YES. - -INHERIT_DOCS = YES - -# If the SEPARATE_MEMBER_PAGES tag is set to YES then doxygen will produce a new -# page for each member. If set to NO, the documentation of a member will be part -# of the file/class/namespace that contains it. -# The default value is: NO. - -SEPARATE_MEMBER_PAGES = NO - -# The TAB_SIZE tag can be used to set the number of spaces in a tab. Doxygen -# uses this value to replace tabs by spaces in code fragments. -# Minimum value: 1, maximum value: 16, default value: 4. - -TAB_SIZE = 4 - -# This tag can be used to specify a number of aliases that act as commands in -# the documentation. An alias has the form: -# name=value -# For example adding -# "sideeffect=@par Side Effects:\n" -# will allow you to put the command \sideeffect (or @sideeffect) in the -# documentation, which will result in a user-defined paragraph with heading -# "Side Effects:". You can put \n's in the value part of an alias to insert -# newlines. - -ALIASES = - -# This tag can be used to specify a number of word-keyword mappings (TCL only). -# A mapping has the form "name=value". For example adding "class=itcl::class" -# will allow you to use the command class in the itcl::class meaning. - -TCL_SUBST = - -# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C sources -# only. Doxygen will then generate output that is more tailored for C. For -# instance, some of the names that are used will be different. The list of all -# members will be omitted, etc. -# The default value is: NO. - -OPTIMIZE_OUTPUT_FOR_C = YES - -# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java or -# Python sources only. Doxygen will then generate output that is more tailored -# for that language. For instance, namespaces will be presented as packages, -# qualified scopes will look different, etc. -# The default value is: NO. - -OPTIMIZE_OUTPUT_JAVA = NO - -# Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran -# sources. Doxygen will then generate output that is tailored for Fortran. -# The default value is: NO. - -OPTIMIZE_FOR_FORTRAN = NO - -# Set the OPTIMIZE_OUTPUT_VHDL tag to YES if your project consists of VHDL -# sources. Doxygen will then generate output that is tailored for VHDL. -# The default value is: NO. - -OPTIMIZE_OUTPUT_VHDL = NO - -# Doxygen selects the parser to use depending on the extension of the files it -# parses. With this tag you can assign which parser to use for a given -# extension. Doxygen has a built-in mapping, but you can override or extend it -# using this tag. The format is ext=language, where ext is a file extension, and -# language is one of the parsers supported by doxygen: IDL, Java, Javascript, -# C#, C, C++, D, PHP, Objective-C, Python, Fortran (fixed format Fortran: -# FortranFixed, free formatted Fortran: FortranFree, unknown formatted Fortran: -# Fortran. In the later case the parser tries to guess whether the code is fixed -# or free formatted code, this is the default for Fortran type files), VHDL. For -# instance to make doxygen treat .inc files as Fortran files (default is PHP), -# and .f files as C (default is Fortran), use: inc=Fortran f=C. -# -# Note: For files without extension you can use no_extension as a placeholder. -# -# Note that for custom extensions you also need to set FILE_PATTERNS otherwise -# the files are not read by doxygen. - -EXTENSION_MAPPING = - -# If the MARKDOWN_SUPPORT tag is enabled then doxygen pre-processes all comments -# according to the Markdown format, which allows for more readable -# documentation. See http://daringfireball.net/projects/markdown/ for details. -# The output of markdown processing is further processed by doxygen, so you can -# mix doxygen, HTML, and XML commands with Markdown formatting. Disable only in -# case of backward compatibilities issues. -# The default value is: YES. - -MARKDOWN_SUPPORT = NO - -# When enabled doxygen tries to link words that correspond to documented -# classes, or namespaces to their corresponding documentation. Such a link can -# be prevented in individual cases by putting a % sign in front of the word or -# globally by setting AUTOLINK_SUPPORT to NO. -# The default value is: YES. - -AUTOLINK_SUPPORT = YES - -# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want -# to include (a tag file for) the STL sources as input, then you should set this -# tag to YES in order to let doxygen match functions declarations and -# definitions whose arguments contain STL classes (e.g. func(std::string); -# versus func(std::string) {}). This also make the inheritance and collaboration -# diagrams that involve STL classes more complete and accurate. -# The default value is: NO. - -BUILTIN_STL_SUPPORT = NO - -# If you use Microsoft's C++/CLI language, you should set this option to YES to -# enable parsing support. -# The default value is: NO. - -CPP_CLI_SUPPORT = NO - -# Set the SIP_SUPPORT tag to YES if your project consists of sip (see: -# http://www.riverbankcomputing.co.uk/software/sip/intro) sources only. Doxygen -# will parse them like normal C++ but will assume all classes use public instead -# of private inheritance when no explicit protection keyword is present. -# The default value is: NO. - -SIP_SUPPORT = NO - -# For Microsoft's IDL there are propget and propput attributes to indicate -# getter and setter methods for a property. Setting this option to YES will make -# doxygen to replace the get and set methods by a property in the documentation. -# This will only work if the methods are indeed getting or setting a simple -# type. If this is not the case, or you want to show the methods anyway, you -# should set this option to NO. -# The default value is: YES. - -IDL_PROPERTY_SUPPORT = YES - -# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC -# tag is set to YES then doxygen will reuse the documentation of the first -# member in the group (if any) for the other members of the group. By default -# all members of a group must be documented explicitly. -# The default value is: NO. - -DISTRIBUTE_GROUP_DOC = NO - -# Set the SUBGROUPING tag to YES to allow class member groups of the same type -# (for instance a group of public functions) to be put as a subgroup of that -# type (e.g. under the Public Functions section). Set it to NO to prevent -# subgrouping. Alternatively, this can be done per class using the -# \nosubgrouping command. -# The default value is: YES. - -SUBGROUPING = YES - -# When the INLINE_GROUPED_CLASSES tag is set to YES, classes, structs and unions -# are shown inside the group in which they are included (e.g. using \ingroup) -# instead of on a separate page (for HTML and Man pages) or section (for LaTeX -# and RTF). -# -# Note that this feature does not work in combination with -# SEPARATE_MEMBER_PAGES. -# The default value is: NO. - -INLINE_GROUPED_CLASSES = NO - -# When the INLINE_SIMPLE_STRUCTS tag is set to YES, structs, classes, and unions -# with only public data fields or simple typedef fields will be shown inline in -# the documentation of the scope in which they are defined (i.e. file, -# namespace, or group documentation), provided this scope is documented. If set -# to NO, structs, classes, and unions are shown on a separate page (for HTML and -# Man pages) or section (for LaTeX and RTF). -# The default value is: NO. - -INLINE_SIMPLE_STRUCTS = NO - -# When TYPEDEF_HIDES_STRUCT tag is enabled, a typedef of a struct, union, or -# enum is documented as struct, union, or enum with the name of the typedef. So -# typedef struct TypeS {} TypeT, will appear in the documentation as a struct -# with name TypeT. When disabled the typedef will appear as a member of a file, -# namespace, or class. And the struct will be named TypeS. This can typically be -# useful for C code in case the coding convention dictates that all compound -# types are typedef'ed and only the typedef is referenced, never the tag name. -# The default value is: NO. - -TYPEDEF_HIDES_STRUCT = NO - -# The size of the symbol lookup cache can be set using LOOKUP_CACHE_SIZE. This -# cache is used to resolve symbols given their name and scope. Since this can be -# an expensive process and often the same symbol appears multiple times in the -# code, doxygen keeps a cache of pre-resolved symbols. If the cache is too small -# doxygen will become slower. If the cache is too large, memory is wasted. The -# cache size is given by this formula: 2^(16+LOOKUP_CACHE_SIZE). The valid range -# is 0..9, the default is 0, corresponding to a cache size of 2^16=65536 -# symbols. At the end of a run doxygen will report the cache usage and suggest -# the optimal cache size from a speed point of view. -# Minimum value: 0, maximum value: 9, default value: 0. - -LOOKUP_CACHE_SIZE = 0 - -#--------------------------------------------------------------------------- -# Build related configuration options -#--------------------------------------------------------------------------- - -# If the EXTRACT_ALL tag is set to YES, doxygen will assume all entities in -# documentation are documented, even if no documentation was available. Private -# class members and static file members will be hidden unless the -# EXTRACT_PRIVATE respectively EXTRACT_STATIC tags are set to YES. -# Note: This will also disable the warnings about undocumented members that are -# normally produced when WARNINGS is set to YES. -# The default value is: NO. - -EXTRACT_ALL = YES - -# If the EXTRACT_PRIVATE tag is set to YES, all private members of a class will -# be included in the documentation. -# The default value is: NO. - -EXTRACT_PRIVATE = YES - -# If the EXTRACT_PACKAGE tag is set to YES, all members with package or internal -# scope will be included in the documentation. -# The default value is: NO. - -EXTRACT_PACKAGE = NO - -# If the EXTRACT_STATIC tag is set to YES, all static members of a file will be -# included in the documentation. -# The default value is: NO. - -EXTRACT_STATIC = YES - -# If the EXTRACT_LOCAL_CLASSES tag is set to YES, classes (and structs) defined -# locally in source files will be included in the documentation. If set to NO, -# only classes defined in header files are included. Does not have any effect -# for Java sources. -# The default value is: YES. - -EXTRACT_LOCAL_CLASSES = YES - -# This flag is only useful for Objective-C code. If set to YES, local methods, -# which are defined in the implementation section but not in the interface are -# included in the documentation. If set to NO, only methods in the interface are -# included. -# The default value is: NO. - -EXTRACT_LOCAL_METHODS = NO - -# If this flag is set to YES, the members of anonymous namespaces will be -# extracted and appear in the documentation as a namespace called -# 'anonymous_namespace{file}', where file will be replaced with the base name of -# the file that contains the anonymous namespace. By default anonymous namespace -# are hidden. -# The default value is: NO. - -EXTRACT_ANON_NSPACES = NO - -# If the HIDE_UNDOC_MEMBERS tag is set to YES, doxygen will hide all -# undocumented members inside documented classes or files. If set to NO these -# members will be included in the various overviews, but no documentation -# section is generated. This option has no effect if EXTRACT_ALL is enabled. -# The default value is: NO. - -HIDE_UNDOC_MEMBERS = NO - -# If the HIDE_UNDOC_CLASSES tag is set to YES, doxygen will hide all -# undocumented classes that are normally visible in the class hierarchy. If set -# to NO, these classes will be included in the various overviews. This option -# has no effect if EXTRACT_ALL is enabled. -# The default value is: NO. - -HIDE_UNDOC_CLASSES = NO - -# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, doxygen will hide all friend -# (class|struct|union) declarations. If set to NO, these declarations will be -# included in the documentation. -# The default value is: NO. - -HIDE_FRIEND_COMPOUNDS = NO - -# If the HIDE_IN_BODY_DOCS tag is set to YES, doxygen will hide any -# documentation blocks found inside the body of a function. If set to NO, these -# blocks will be appended to the function's detailed documentation block. -# The default value is: NO. - -HIDE_IN_BODY_DOCS = NO - -# The INTERNAL_DOCS tag determines if documentation that is typed after a -# \internal command is included. If the tag is set to NO then the documentation -# will be excluded. Set it to YES to include the internal documentation. -# The default value is: NO. - -INTERNAL_DOCS = NO - -# If the CASE_SENSE_NAMES tag is set to NO then doxygen will only generate file -# names in lower-case letters. If set to YES, upper-case letters are also -# allowed. This is useful if you have classes or files whose names only differ -# in case and if your file system supports case sensitive file names. Windows -# and Mac users are advised to set this option to NO. -# The default value is: system dependent. - -CASE_SENSE_NAMES = NO - -# If the HIDE_SCOPE_NAMES tag is set to NO then doxygen will show members with -# their full class and namespace scopes in the documentation. If set to YES, the -# scope will be hidden. -# The default value is: NO. - -HIDE_SCOPE_NAMES = NO - -# If the HIDE_COMPOUND_REFERENCE tag is set to NO (default) then doxygen will -# append additional text to a page's title, such as Class Reference. If set to -# YES the compound reference will be hidden. -# The default value is: NO. - -HIDE_COMPOUND_REFERENCE= NO - -# If the SHOW_INCLUDE_FILES tag is set to YES then doxygen will put a list of -# the files that are included by a file in the documentation of that file. -# The default value is: YES. - -SHOW_INCLUDE_FILES = YES - -# If the SHOW_GROUPED_MEMB_INC tag is set to YES then Doxygen will add for each -# grouped member an include statement to the documentation, telling the reader -# which file to include in order to use the member. -# The default value is: NO. - -SHOW_GROUPED_MEMB_INC = NO - -# If the FORCE_LOCAL_INCLUDES tag is set to YES then doxygen will list include -# files with double quotes in the documentation rather than with sharp brackets. -# The default value is: NO. - -FORCE_LOCAL_INCLUDES = NO - -# If the INLINE_INFO tag is set to YES then a tag [inline] is inserted in the -# documentation for inline members. -# The default value is: YES. - -INLINE_INFO = YES - -# If the SORT_MEMBER_DOCS tag is set to YES then doxygen will sort the -# (detailed) documentation of file and class members alphabetically by member -# name. If set to NO, the members will appear in declaration order. -# The default value is: YES. - -SORT_MEMBER_DOCS = YES - -# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the brief -# descriptions of file, namespace and class members alphabetically by member -# name. If set to NO, the members will appear in declaration order. Note that -# this will also influence the order of the classes in the class list. -# The default value is: NO. - -SORT_BRIEF_DOCS = NO - -# If the SORT_MEMBERS_CTORS_1ST tag is set to YES then doxygen will sort the -# (brief and detailed) documentation of class members so that constructors and -# destructors are listed first. If set to NO the constructors will appear in the -# respective orders defined by SORT_BRIEF_DOCS and SORT_MEMBER_DOCS. -# Note: If SORT_BRIEF_DOCS is set to NO this option is ignored for sorting brief -# member documentation. -# Note: If SORT_MEMBER_DOCS is set to NO this option is ignored for sorting -# detailed member documentation. -# The default value is: NO. - -SORT_MEMBERS_CTORS_1ST = NO - -# If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the hierarchy -# of group names into alphabetical order. If set to NO the group names will -# appear in their defined order. -# The default value is: NO. - -SORT_GROUP_NAMES = NO - -# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be sorted by -# fully-qualified names, including namespaces. If set to NO, the class list will -# be sorted only by class name, not including the namespace part. -# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES. -# Note: This option applies only to the class list, not to the alphabetical -# list. -# The default value is: NO. - -SORT_BY_SCOPE_NAME = NO - -# If the STRICT_PROTO_MATCHING option is enabled and doxygen fails to do proper -# type resolution of all parameters of a function it will reject a match between -# the prototype and the implementation of a member function even if there is -# only one candidate or it is obvious which candidate to choose by doing a -# simple string match. By disabling STRICT_PROTO_MATCHING doxygen will still -# accept a match between prototype and implementation in such cases. -# The default value is: NO. - -STRICT_PROTO_MATCHING = NO - -# The GENERATE_TODOLIST tag can be used to enable (YES) or disable (NO) the todo -# list. This list is created by putting \todo commands in the documentation. -# The default value is: YES. - -GENERATE_TODOLIST = NO - -# The GENERATE_TESTLIST tag can be used to enable (YES) or disable (NO) the test -# list. This list is created by putting \test commands in the documentation. -# The default value is: YES. - -GENERATE_TESTLIST = NO - -# The GENERATE_BUGLIST tag can be used to enable (YES) or disable (NO) the bug -# list. This list is created by putting \bug commands in the documentation. -# The default value is: YES. - -GENERATE_BUGLIST = NO - -# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or disable (NO) -# the deprecated list. This list is created by putting \deprecated commands in -# the documentation. -# The default value is: YES. - -GENERATE_DEPRECATEDLIST= YES - -# The ENABLED_SECTIONS tag can be used to enable conditional documentation -# sections, marked by \if ... \endif and \cond -# ... \endcond blocks. - -ENABLED_SECTIONS = - -# The MAX_INITIALIZER_LINES tag determines the maximum number of lines that the -# initial value of a variable or macro / define can have for it to appear in the -# documentation. If the initializer consists of more lines than specified here -# it will be hidden. Use a value of 0 to hide initializers completely. The -# appearance of the value of individual variables and macros / defines can be -# controlled using \showinitializer or \hideinitializer command in the -# documentation regardless of this setting. -# Minimum value: 0, maximum value: 10000, default value: 30. - -MAX_INITIALIZER_LINES = 30 - -# Set the SHOW_USED_FILES tag to NO to disable the list of files generated at -# the bottom of the documentation of classes and structs. If set to YES, the -# list will mention the files that were used to generate the documentation. -# The default value is: YES. - -SHOW_USED_FILES = YES - -# Set the SHOW_FILES tag to NO to disable the generation of the Files page. This -# will remove the Files entry from the Quick Index and from the Folder Tree View -# (if specified). -# The default value is: YES. - -SHOW_FILES = YES - -# Set the SHOW_NAMESPACES tag to NO to disable the generation of the Namespaces -# page. This will remove the Namespaces entry from the Quick Index and from the -# Folder Tree View (if specified). -# The default value is: YES. - -SHOW_NAMESPACES = YES - -# The FILE_VERSION_FILTER tag can be used to specify a program or script that -# doxygen should invoke to get the current version for each file (typically from -# the version control system). Doxygen will invoke the program by executing (via -# popen()) the command command input-file, where command is the value of the -# FILE_VERSION_FILTER tag, and input-file is the name of an input file provided -# by doxygen. Whatever the program writes to standard output is used as the file -# version. For an example see the documentation. - -FILE_VERSION_FILTER = - -# The LAYOUT_FILE tag can be used to specify a layout file which will be parsed -# by doxygen. The layout file controls the global structure of the generated -# output files in an output format independent way. To create the layout file -# that represents doxygen's defaults, run doxygen with the -l option. You can -# optionally specify a file name after the option, if omitted DoxygenLayout.xml -# will be used as the name of the layout file. -# -# Note that if you run doxygen from a directory containing a file called -# DoxygenLayout.xml, doxygen will parse it automatically even if the LAYOUT_FILE -# tag is left empty. - -LAYOUT_FILE = - -# The CITE_BIB_FILES tag can be used to specify one or more bib files containing -# the reference definitions. This must be a list of .bib files. The .bib -# extension is automatically appended if omitted. This requires the bibtex tool -# to be installed. See also http://en.wikipedia.org/wiki/BibTeX for more info. -# For LaTeX the style of the bibliography can be controlled using -# LATEX_BIB_STYLE. To use this feature you need bibtex and perl available in the -# search path. See also \cite for info how to create references. - -CITE_BIB_FILES = - -#--------------------------------------------------------------------------- -# Configuration options related to warning and progress messages -#--------------------------------------------------------------------------- - -# The QUIET tag can be used to turn on/off the messages that are generated to -# standard output by doxygen. If QUIET is set to YES this implies that the -# messages are off. -# The default value is: NO. - -QUIET = YES - -# The WARNINGS tag can be used to turn on/off the warning messages that are -# generated to standard error (stderr) by doxygen. If WARNINGS is set to YES -# this implies that the warnings are on. -# -# Tip: Turn warnings on while writing the documentation. -# The default value is: YES. - -WARNINGS = YES - -# If the WARN_IF_UNDOCUMENTED tag is set to YES then doxygen will generate -# warnings for undocumented members. If EXTRACT_ALL is set to YES then this flag -# will automatically be disabled. -# The default value is: YES. - -WARN_IF_UNDOCUMENTED = YES - -# If the WARN_IF_DOC_ERROR tag is set to YES, doxygen will generate warnings for -# potential errors in the documentation, such as not documenting some parameters -# in a documented function, or documenting parameters that don't exist or using -# markup commands wrongly. -# The default value is: YES. - -WARN_IF_DOC_ERROR = YES - -# This WARN_NO_PARAMDOC option can be enabled to get warnings for functions that -# are documented, but have no documentation for their parameters or return -# value. If set to NO, doxygen will only warn about wrong or incomplete -# parameter documentation, but not about the absence of documentation. -# The default value is: NO. - -WARN_NO_PARAMDOC = YES - -# The WARN_FORMAT tag determines the format of the warning messages that doxygen -# can produce. The string should contain the $file, $line, and $text tags, which -# will be replaced by the file and line number from which the warning originated -# and the warning text. Optionally the format may contain $version, which will -# be replaced by the version of the file (if it could be obtained via -# FILE_VERSION_FILTER) -# The default value is: $file:$line: $text. - -WARN_FORMAT = "$file:$line: $text" - -# The WARN_LOGFILE tag can be used to specify a file to which warning and error -# messages should be written. If left blank the output is written to standard -# error (stderr). - -WARN_LOGFILE = - -#--------------------------------------------------------------------------- -# Configuration options related to the input files -#--------------------------------------------------------------------------- - -# The INPUT tag is used to specify the files and/or directories that contain -# documented source files. You may enter file names like myfile.cpp or -# directories like /usr/src/myproject. Separate the files or directories with -# spaces. -# Note: If this tag is empty the current directory is searched. - -INPUT = ./ - -# This tag can be used to specify the character encoding of the source files -# that doxygen parses. Internally doxygen uses the UTF-8 encoding. Doxygen uses -# libiconv (or the iconv built into libc) for the transcoding. See the libiconv -# documentation (see: http://www.gnu.org/software/libiconv) for the list of -# possible encodings. -# The default value is: UTF-8. - -INPUT_ENCODING = UTF-8 - -# If the value of the INPUT tag contains directories, you can use the -# FILE_PATTERNS tag to specify one or more wildcard patterns (like *.cpp and -# *.h) to filter out the source-files in the directories. If left blank the -# following patterns are tested:*.c, *.cc, *.cxx, *.cpp, *.c++, *.java, *.ii, -# *.ixx, *.ipp, *.i++, *.inl, *.idl, *.ddl, *.odl, *.h, *.hh, *.hxx, *.hpp, -# *.h++, *.cs, *.d, *.php, *.php4, *.php5, *.phtml, *.inc, *.m, *.markdown, -# *.md, *.mm, *.dox, *.py, *.f90, *.f, *.for, *.tcl, *.vhd, *.vhdl, *.ucf, -# *.qsf, *.as and *.js. - -FILE_PATTERNS = *.h \ - *.c \ - *.txt - -# The RECURSIVE tag can be used to specify whether or not subdirectories should -# be searched for input files as well. -# The default value is: NO. - -RECURSIVE = YES - -# The EXCLUDE tag can be used to specify files and/or directories that should be -# excluded from the INPUT source files. This way you can easily exclude a -# subdirectory from a directory tree whose root is specified with the INPUT tag. -# -# Note that relative paths are relative to the directory from which doxygen is -# run. - -EXCLUDE = Documentation/ - -# The EXCLUDE_SYMLINKS tag can be used to select whether or not files or -# directories that are symbolic links (a Unix file system feature) are excluded -# from the input. -# The default value is: NO. - -EXCLUDE_SYMLINKS = NO - -# If the value of the INPUT tag contains directories, you can use the -# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude -# certain files from those directories. -# -# Note that the wildcards are matched against the file with absolute path, so to -# exclude all test directories for example use the pattern */test/* - -EXCLUDE_PATTERNS = - -# The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names -# (namespaces, classes, functions, etc.) that should be excluded from the -# output. The symbol name can be a fully qualified name, a word, or if the -# wildcard * is used, a substring. Examples: ANamespace, AClass, -# AClass::ANamespace, ANamespace::*Test -# -# Note that the wildcards are matched against the file with absolute path, so to -# exclude all test directories use the pattern */test/* - -EXCLUDE_SYMBOLS = __* \ - INCLUDE_FROM_* - -# The EXAMPLE_PATH tag can be used to specify one or more files or directories -# that contain example code fragments that are included (see the \include -# command). - -EXAMPLE_PATH = - -# If the value of the EXAMPLE_PATH tag contains directories, you can use the -# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp and -# *.h) to filter out the source-files in the directories. If left blank all -# files are included. - -EXAMPLE_PATTERNS = * - -# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be -# searched for input files to be used with the \include or \dontinclude commands -# irrespective of the value of the RECURSIVE tag. -# The default value is: NO. - -EXAMPLE_RECURSIVE = NO - -# The IMAGE_PATH tag can be used to specify one or more files or directories -# that contain images that are to be included in the documentation (see the -# \image command). - -IMAGE_PATH = - -# The INPUT_FILTER tag can be used to specify a program that doxygen should -# invoke to filter for each input file. Doxygen will invoke the filter program -# by executing (via popen()) the command: -# -# -# -# where is the value of the INPUT_FILTER tag, and is the -# name of an input file. Doxygen will then use the output that the filter -# program writes to standard output. If FILTER_PATTERNS is specified, this tag -# will be ignored. -# -# Note that the filter must not add or remove lines; it is applied before the -# code is scanned, but not when the output code is generated. If lines are added -# or removed, the anchors will not be placed correctly. - -INPUT_FILTER = - -# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern -# basis. Doxygen will compare the file name with each pattern and apply the -# filter if there is a match. The filters are a list of the form: pattern=filter -# (like *.cpp=my_cpp_filter). See INPUT_FILTER for further information on how -# filters are used. If the FILTER_PATTERNS tag is empty or if none of the -# patterns match the file name, INPUT_FILTER is applied. - -FILTER_PATTERNS = - -# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using -# INPUT_FILTER) will also be used to filter the input files that are used for -# producing the source files to browse (i.e. when SOURCE_BROWSER is set to YES). -# The default value is: NO. - -FILTER_SOURCE_FILES = NO - -# The FILTER_SOURCE_PATTERNS tag can be used to specify source filters per file -# pattern. A pattern will override the setting for FILTER_PATTERN (if any) and -# it is also possible to disable source filtering for a specific pattern using -# *.ext= (so without naming a filter). -# This tag requires that the tag FILTER_SOURCE_FILES is set to YES. - -FILTER_SOURCE_PATTERNS = - -# If the USE_MDFILE_AS_MAINPAGE tag refers to the name of a markdown file that -# is part of the input, its contents will be placed on the main page -# (index.html). This can be useful if you have a project on for instance GitHub -# and want to reuse the introduction page also for the doxygen output. - -USE_MDFILE_AS_MAINPAGE = - -#--------------------------------------------------------------------------- -# Configuration options related to source browsing -#--------------------------------------------------------------------------- - -# If the SOURCE_BROWSER tag is set to YES then a list of source files will be -# generated. Documented entities will be cross-referenced with these sources. -# -# Note: To get rid of all source code in the generated output, make sure that -# also VERBATIM_HEADERS is set to NO. -# The default value is: NO. - -SOURCE_BROWSER = NO - -# Setting the INLINE_SOURCES tag to YES will include the body of functions, -# classes and enums directly into the documentation. -# The default value is: NO. - -INLINE_SOURCES = NO - -# Setting the STRIP_CODE_COMMENTS tag to YES will instruct doxygen to hide any -# special comment blocks from generated source code fragments. Normal C, C++ and -# Fortran comments will always remain visible. -# The default value is: YES. - -STRIP_CODE_COMMENTS = YES - -# If the REFERENCED_BY_RELATION tag is set to YES then for each documented -# function all documented functions referencing it will be listed. -# The default value is: NO. - -REFERENCED_BY_RELATION = NO - -# If the REFERENCES_RELATION tag is set to YES then for each documented function -# all documented entities called/used by that function will be listed. -# The default value is: NO. - -REFERENCES_RELATION = NO - -# If the REFERENCES_LINK_SOURCE tag is set to YES and SOURCE_BROWSER tag is set -# to YES then the hyperlinks from functions in REFERENCES_RELATION and -# REFERENCED_BY_RELATION lists will link to the source code. Otherwise they will -# link to the documentation. -# The default value is: YES. - -REFERENCES_LINK_SOURCE = NO - -# If SOURCE_TOOLTIPS is enabled (the default) then hovering a hyperlink in the -# source code will show a tooltip with additional information such as prototype, -# brief description and links to the definition and documentation. Since this -# will make the HTML file larger and loading of large files a bit slower, you -# can opt to disable this feature. -# The default value is: YES. -# This tag requires that the tag SOURCE_BROWSER is set to YES. - -SOURCE_TOOLTIPS = YES - -# If the USE_HTAGS tag is set to YES then the references to source code will -# point to the HTML generated by the htags(1) tool instead of doxygen built-in -# source browser. The htags tool is part of GNU's global source tagging system -# (see http://www.gnu.org/software/global/global.html). You will need version -# 4.8.6 or higher. -# -# To use it do the following: -# - Install the latest version of global -# - Enable SOURCE_BROWSER and USE_HTAGS in the config file -# - Make sure the INPUT points to the root of the source tree -# - Run doxygen as normal -# -# Doxygen will invoke htags (and that will in turn invoke gtags), so these -# tools must be available from the command line (i.e. in the search path). -# -# The result: instead of the source browser generated by doxygen, the links to -# source code will now point to the output of htags. -# The default value is: NO. -# This tag requires that the tag SOURCE_BROWSER is set to YES. - -USE_HTAGS = NO - -# If the VERBATIM_HEADERS tag is set the YES then doxygen will generate a -# verbatim copy of the header file for each class for which an include is -# specified. Set to NO to disable this. -# See also: Section \class. -# The default value is: YES. - -VERBATIM_HEADERS = NO - -# If the CLANG_ASSISTED_PARSING tag is set to YES then doxygen will use the -# clang parser (see: http://clang.llvm.org/) for more accurate parsing at the -# cost of reduced performance. This can be particularly helpful with template -# rich C++ code for which doxygen's built-in parser lacks the necessary type -# information. -# Note: The availability of this option depends on whether or not doxygen was -# compiled with the --with-libclang option. -# The default value is: NO. - -CLANG_ASSISTED_PARSING = NO - -# If clang assisted parsing is enabled you can provide the compiler with command -# line options that you would normally use when invoking the compiler. Note that -# the include paths will already be set by doxygen for the files and directories -# specified with INPUT and INCLUDE_PATH. -# This tag requires that the tag CLANG_ASSISTED_PARSING is set to YES. - -CLANG_OPTIONS = - -#--------------------------------------------------------------------------- -# Configuration options related to the alphabetical class index -#--------------------------------------------------------------------------- - -# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index of all -# compounds will be generated. Enable this if the project contains a lot of -# classes, structs, unions or interfaces. -# The default value is: YES. - -ALPHABETICAL_INDEX = YES - -# The COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns in -# which the alphabetical index list will be split. -# Minimum value: 1, maximum value: 20, default value: 5. -# This tag requires that the tag ALPHABETICAL_INDEX is set to YES. - -COLS_IN_ALPHA_INDEX = 5 - -# In case all classes in a project start with a common prefix, all classes will -# be put under the same header in the alphabetical index. The IGNORE_PREFIX tag -# can be used to specify a prefix (or a list of prefixes) that should be ignored -# while generating the index headers. -# This tag requires that the tag ALPHABETICAL_INDEX is set to YES. - -IGNORE_PREFIX = - -#--------------------------------------------------------------------------- -# Configuration options related to the HTML output -#--------------------------------------------------------------------------- - -# If the GENERATE_HTML tag is set to YES, doxygen will generate HTML output -# The default value is: YES. - -GENERATE_HTML = YES - -# The HTML_OUTPUT tag is used to specify where the HTML docs will be put. If a -# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of -# it. -# The default directory is: html. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_OUTPUT = html - -# The HTML_FILE_EXTENSION tag can be used to specify the file extension for each -# generated HTML page (for example: .htm, .php, .asp). -# The default value is: .html. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_FILE_EXTENSION = .html - -# The HTML_HEADER tag can be used to specify a user-defined HTML header file for -# each generated HTML page. If the tag is left blank doxygen will generate a -# standard header. -# -# To get valid HTML the header file that includes any scripts and style sheets -# that doxygen needs, which is dependent on the configuration options used (e.g. -# the setting GENERATE_TREEVIEW). It is highly recommended to start with a -# default header using -# doxygen -w html new_header.html new_footer.html new_stylesheet.css -# YourConfigFile -# and then modify the file new_header.html. See also section "Doxygen usage" -# for information on how to generate the default header that doxygen normally -# uses. -# Note: The header is subject to change so you typically have to regenerate the -# default header when upgrading to a newer version of doxygen. For a description -# of the possible markers and block names see the documentation. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_HEADER = - -# The HTML_FOOTER tag can be used to specify a user-defined HTML footer for each -# generated HTML page. If the tag is left blank doxygen will generate a standard -# footer. See HTML_HEADER for more information on how to generate a default -# footer and what special commands can be used inside the footer. See also -# section "Doxygen usage" for information on how to generate the default footer -# that doxygen normally uses. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_FOOTER = - -# The HTML_STYLESHEET tag can be used to specify a user-defined cascading style -# sheet that is used by each HTML page. It can be used to fine-tune the look of -# the HTML output. If left blank doxygen will generate a default style sheet. -# See also section "Doxygen usage" for information on how to generate the style -# sheet that doxygen normally uses. -# Note: It is recommended to use HTML_EXTRA_STYLESHEET instead of this tag, as -# it is more robust and this tag (HTML_STYLESHEET) will in the future become -# obsolete. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_STYLESHEET = - -# The HTML_EXTRA_STYLESHEET tag can be used to specify additional user-defined -# cascading style sheets that are included after the standard style sheets -# created by doxygen. Using this option one can overrule certain style aspects. -# This is preferred over using HTML_STYLESHEET since it does not replace the -# standard style sheet and is therefore more robust against future updates. -# Doxygen will copy the style sheet files to the output directory. -# Note: The order of the extra style sheet files is of importance (e.g. the last -# style sheet in the list overrules the setting of the previous ones in the -# list). For an example see the documentation. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_EXTRA_STYLESHEET = - -# The HTML_EXTRA_FILES tag can be used to specify one or more extra images or -# other source files which should be copied to the HTML output directory. Note -# that these files will be copied to the base HTML output directory. Use the -# $relpath^ marker in the HTML_HEADER and/or HTML_FOOTER files to load these -# files. In the HTML_STYLESHEET file, use the file name only. Also note that the -# files will be copied as-is; there are no commands or markers available. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_EXTRA_FILES = - -# The HTML_COLORSTYLE_HUE tag controls the color of the HTML output. Doxygen -# will adjust the colors in the style sheet and background images according to -# this color. Hue is specified as an angle on a colorwheel, see -# http://en.wikipedia.org/wiki/Hue for more information. For instance the value -# 0 represents red, 60 is yellow, 120 is green, 180 is cyan, 240 is blue, 300 -# purple, and 360 is red again. -# Minimum value: 0, maximum value: 359, default value: 220. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_COLORSTYLE_HUE = 220 - -# The HTML_COLORSTYLE_SAT tag controls the purity (or saturation) of the colors -# in the HTML output. For a value of 0 the output will use grayscales only. A -# value of 255 will produce the most vivid colors. -# Minimum value: 0, maximum value: 255, default value: 100. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_COLORSTYLE_SAT = 100 - -# The HTML_COLORSTYLE_GAMMA tag controls the gamma correction applied to the -# luminance component of the colors in the HTML output. Values below 100 -# gradually make the output lighter, whereas values above 100 make the output -# darker. The value divided by 100 is the actual gamma applied, so 80 represents -# a gamma of 0.8, The value 220 represents a gamma of 2.2, and 100 does not -# change the gamma. -# Minimum value: 40, maximum value: 240, default value: 80. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_COLORSTYLE_GAMMA = 80 - -# If the HTML_TIMESTAMP tag is set to YES then the footer of each generated HTML -# page will contain the date and time when the page was generated. Setting this -# to NO can help when comparing the output of multiple runs. -# The default value is: YES. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_TIMESTAMP = NO - -# If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML -# documentation will contain sections that can be hidden and shown after the -# page has loaded. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_DYNAMIC_SECTIONS = YES - -# With HTML_INDEX_NUM_ENTRIES one can control the preferred number of entries -# shown in the various tree structured indices initially; the user can expand -# and collapse entries dynamically later on. Doxygen will expand the tree to -# such a level that at most the specified number of entries are visible (unless -# a fully collapsed tree already exceeds this amount). So setting the number of -# entries 1 will produce a full collapsed tree by default. 0 is a special value -# representing an infinite number of entries and will result in a full expanded -# tree by default. -# Minimum value: 0, maximum value: 9999, default value: 100. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_INDEX_NUM_ENTRIES = 100 - -# If the GENERATE_DOCSET tag is set to YES, additional index files will be -# generated that can be used as input for Apple's Xcode 3 integrated development -# environment (see: http://developer.apple.com/tools/xcode/), introduced with -# OSX 10.5 (Leopard). To create a documentation set, doxygen will generate a -# Makefile in the HTML output directory. Running make will produce the docset in -# that directory and running make install will install the docset in -# ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find it at -# startup. See http://developer.apple.com/tools/creatingdocsetswithdoxygen.html -# for more information. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTML is set to YES. - -GENERATE_DOCSET = NO - -# This tag determines the name of the docset feed. A documentation feed provides -# an umbrella under which multiple documentation sets from a single provider -# (such as a company or product suite) can be grouped. -# The default value is: Doxygen generated docs. -# This tag requires that the tag GENERATE_DOCSET is set to YES. - -DOCSET_FEEDNAME = "Doxygen generated docs" - -# This tag specifies a string that should uniquely identify the documentation -# set bundle. This should be a reverse domain-name style string, e.g. -# com.mycompany.MyDocSet. Doxygen will append .docset to the name. -# The default value is: org.doxygen.Project. -# This tag requires that the tag GENERATE_DOCSET is set to YES. - -DOCSET_BUNDLE_ID = org.doxygen.Project - -# The DOCSET_PUBLISHER_ID tag specifies a string that should uniquely identify -# the documentation publisher. This should be a reverse domain-name style -# string, e.g. com.mycompany.MyDocSet.documentation. -# The default value is: org.doxygen.Publisher. -# This tag requires that the tag GENERATE_DOCSET is set to YES. - -DOCSET_PUBLISHER_ID = org.doxygen.Publisher - -# The DOCSET_PUBLISHER_NAME tag identifies the documentation publisher. -# The default value is: Publisher. -# This tag requires that the tag GENERATE_DOCSET is set to YES. - -DOCSET_PUBLISHER_NAME = Publisher - -# If the GENERATE_HTMLHELP tag is set to YES then doxygen generates three -# additional HTML index files: index.hhp, index.hhc, and index.hhk. The -# index.hhp is a project file that can be read by Microsoft's HTML Help Workshop -# (see: http://www.microsoft.com/en-us/download/details.aspx?id=21138) on -# Windows. -# -# The HTML Help Workshop contains a compiler that can convert all HTML output -# generated by doxygen into a single compiled HTML file (.chm). Compiled HTML -# files are now used as the Windows 98 help format, and will replace the old -# Windows help format (.hlp) on all Windows platforms in the future. Compressed -# HTML files also contain an index, a table of contents, and you can search for -# words in the documentation. The HTML workshop also contains a viewer for -# compressed HTML files. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTML is set to YES. - -GENERATE_HTMLHELP = NO - -# The CHM_FILE tag can be used to specify the file name of the resulting .chm -# file. You can add a path in front of the file if the result should not be -# written to the html output directory. -# This tag requires that the tag GENERATE_HTMLHELP is set to YES. - -CHM_FILE = - -# The HHC_LOCATION tag can be used to specify the location (absolute path -# including file name) of the HTML help compiler (hhc.exe). If non-empty, -# doxygen will try to run the HTML help compiler on the generated index.hhp. -# The file has to be specified with full path. -# This tag requires that the tag GENERATE_HTMLHELP is set to YES. - -HHC_LOCATION = - -# The GENERATE_CHI flag controls if a separate .chi index file is generated -# (YES) or that it should be included in the master .chm file (NO). -# The default value is: NO. -# This tag requires that the tag GENERATE_HTMLHELP is set to YES. - -GENERATE_CHI = NO - -# The CHM_INDEX_ENCODING is used to encode HtmlHelp index (hhk), content (hhc) -# and project file content. -# This tag requires that the tag GENERATE_HTMLHELP is set to YES. - -CHM_INDEX_ENCODING = - -# The BINARY_TOC flag controls whether a binary table of contents is generated -# (YES) or a normal table of contents (NO) in the .chm file. Furthermore it -# enables the Previous and Next buttons. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTMLHELP is set to YES. - -BINARY_TOC = NO - -# The TOC_EXPAND flag can be set to YES to add extra items for group members to -# the table of contents of the HTML help documentation and to the tree view. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTMLHELP is set to YES. - -TOC_EXPAND = YES - -# If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and -# QHP_VIRTUAL_FOLDER are set, an additional index file will be generated that -# can be used as input for Qt's qhelpgenerator to generate a Qt Compressed Help -# (.qch) of the generated HTML documentation. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTML is set to YES. - -GENERATE_QHP = NO - -# If the QHG_LOCATION tag is specified, the QCH_FILE tag can be used to specify -# the file name of the resulting .qch file. The path specified is relative to -# the HTML output folder. -# This tag requires that the tag GENERATE_QHP is set to YES. - -QCH_FILE = - -# The QHP_NAMESPACE tag specifies the namespace to use when generating Qt Help -# Project output. For more information please see Qt Help Project / Namespace -# (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#namespace). -# The default value is: org.doxygen.Project. -# This tag requires that the tag GENERATE_QHP is set to YES. - -QHP_NAMESPACE = org.doxygen.Project - -# The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating Qt -# Help Project output. For more information please see Qt Help Project / Virtual -# Folders (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#virtual- -# folders). -# The default value is: doc. -# This tag requires that the tag GENERATE_QHP is set to YES. - -QHP_VIRTUAL_FOLDER = doc - -# If the QHP_CUST_FILTER_NAME tag is set, it specifies the name of a custom -# filter to add. For more information please see Qt Help Project / Custom -# Filters (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#custom- -# filters). -# This tag requires that the tag GENERATE_QHP is set to YES. - -QHP_CUST_FILTER_NAME = - -# The QHP_CUST_FILTER_ATTRS tag specifies the list of the attributes of the -# custom filter to add. For more information please see Qt Help Project / Custom -# Filters (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#custom- -# filters). -# This tag requires that the tag GENERATE_QHP is set to YES. - -QHP_CUST_FILTER_ATTRS = - -# The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this -# project's filter section matches. Qt Help Project / Filter Attributes (see: -# http://qt-project.org/doc/qt-4.8/qthelpproject.html#filter-attributes). -# This tag requires that the tag GENERATE_QHP is set to YES. - -QHP_SECT_FILTER_ATTRS = - -# The QHG_LOCATION tag can be used to specify the location of Qt's -# qhelpgenerator. If non-empty doxygen will try to run qhelpgenerator on the -# generated .qhp file. -# This tag requires that the tag GENERATE_QHP is set to YES. - -QHG_LOCATION = - -# If the GENERATE_ECLIPSEHELP tag is set to YES, additional index files will be -# generated, together with the HTML files, they form an Eclipse help plugin. To -# install this plugin and make it available under the help contents menu in -# Eclipse, the contents of the directory containing the HTML and XML files needs -# to be copied into the plugins directory of eclipse. The name of the directory -# within the plugins directory should be the same as the ECLIPSE_DOC_ID value. -# After copying Eclipse needs to be restarted before the help appears. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTML is set to YES. - -GENERATE_ECLIPSEHELP = NO - -# A unique identifier for the Eclipse help plugin. When installing the plugin -# the directory name containing the HTML and XML files should also have this -# name. Each documentation set should have its own identifier. -# The default value is: org.doxygen.Project. -# This tag requires that the tag GENERATE_ECLIPSEHELP is set to YES. - -ECLIPSE_DOC_ID = org.doxygen.Project - -# If you want full control over the layout of the generated HTML pages it might -# be necessary to disable the index and replace it with your own. The -# DISABLE_INDEX tag can be used to turn on/off the condensed index (tabs) at top -# of each HTML page. A value of NO enables the index and the value YES disables -# it. Since the tabs in the index contain the same information as the navigation -# tree, you can set this option to YES if you also set GENERATE_TREEVIEW to YES. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTML is set to YES. - -DISABLE_INDEX = YES - -# The GENERATE_TREEVIEW tag is used to specify whether a tree-like index -# structure should be generated to display hierarchical information. If the tag -# value is set to YES, a side panel will be generated containing a tree-like -# index structure (just like the one that is generated for HTML Help). For this -# to work a browser that supports JavaScript, DHTML, CSS and frames is required -# (i.e. any modern browser). Windows users are probably better off using the -# HTML help feature. Via custom style sheets (see HTML_EXTRA_STYLESHEET) one can -# further fine-tune the look of the index. As an example, the default style -# sheet generated by doxygen has an example that shows how to put an image at -# the root of the tree instead of the PROJECT_NAME. Since the tree basically has -# the same information as the tab index, you could consider setting -# DISABLE_INDEX to YES when enabling this option. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTML is set to YES. - -GENERATE_TREEVIEW = YES - -# The ENUM_VALUES_PER_LINE tag can be used to set the number of enum values that -# doxygen will group on one line in the generated HTML documentation. -# -# Note that a value of 0 will completely suppress the enum values from appearing -# in the overview section. -# Minimum value: 0, maximum value: 20, default value: 4. -# This tag requires that the tag GENERATE_HTML is set to YES. - -ENUM_VALUES_PER_LINE = 1 - -# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be used -# to set the initial width (in pixels) of the frame in which the tree is shown. -# Minimum value: 0, maximum value: 1500, default value: 250. -# This tag requires that the tag GENERATE_HTML is set to YES. - -TREEVIEW_WIDTH = 250 - -# If the EXT_LINKS_IN_WINDOW option is set to YES, doxygen will open links to -# external symbols imported via tag files in a separate window. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTML is set to YES. - -EXT_LINKS_IN_WINDOW = NO - -# Use this tag to change the font size of LaTeX formulas included as images in -# the HTML documentation. When you change the font size after a successful -# doxygen run you need to manually remove any form_*.png images from the HTML -# output directory to force them to be regenerated. -# Minimum value: 8, maximum value: 50, default value: 10. -# This tag requires that the tag GENERATE_HTML is set to YES. - -FORMULA_FONTSIZE = 10 - -# Use the FORMULA_TRANPARENT tag to determine whether or not the images -# generated for formulas are transparent PNGs. Transparent PNGs are not -# supported properly for IE 6.0, but are supported on all modern browsers. -# -# Note that when changing this option you need to delete any form_*.png files in -# the HTML output directory before the changes have effect. -# The default value is: YES. -# This tag requires that the tag GENERATE_HTML is set to YES. - -FORMULA_TRANSPARENT = YES - -# Enable the USE_MATHJAX option to render LaTeX formulas using MathJax (see -# http://www.mathjax.org) which uses client side Javascript for the rendering -# instead of using pre-rendered bitmaps. Use this if you do not have LaTeX -# installed or if you want to formulas look prettier in the HTML output. When -# enabled you may also need to install MathJax separately and configure the path -# to it using the MATHJAX_RELPATH option. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTML is set to YES. - -USE_MATHJAX = NO - -# When MathJax is enabled you can set the default output format to be used for -# the MathJax output. See the MathJax site (see: -# http://docs.mathjax.org/en/latest/output.html) for more details. -# Possible values are: HTML-CSS (which is slower, but has the best -# compatibility), NativeMML (i.e. MathML) and SVG. -# The default value is: HTML-CSS. -# This tag requires that the tag USE_MATHJAX is set to YES. - -MATHJAX_FORMAT = HTML-CSS - -# When MathJax is enabled you need to specify the location relative to the HTML -# output directory using the MATHJAX_RELPATH option. The destination directory -# should contain the MathJax.js script. For instance, if the mathjax directory -# is located at the same level as the HTML output directory, then -# MATHJAX_RELPATH should be ../mathjax. The default value points to the MathJax -# Content Delivery Network so you can quickly see the result without installing -# MathJax. However, it is strongly recommended to install a local copy of -# MathJax from http://www.mathjax.org before deployment. -# The default value is: http://cdn.mathjax.org/mathjax/latest. -# This tag requires that the tag USE_MATHJAX is set to YES. - -MATHJAX_RELPATH = http://cdn.mathjax.org/mathjax/latest - -# The MATHJAX_EXTENSIONS tag can be used to specify one or more MathJax -# extension names that should be enabled during MathJax rendering. For example -# MATHJAX_EXTENSIONS = TeX/AMSmath TeX/AMSsymbols -# This tag requires that the tag USE_MATHJAX is set to YES. - -MATHJAX_EXTENSIONS = - -# The MATHJAX_CODEFILE tag can be used to specify a file with javascript pieces -# of code that will be used on startup of the MathJax code. See the MathJax site -# (see: http://docs.mathjax.org/en/latest/output.html) for more details. For an -# example see the documentation. -# This tag requires that the tag USE_MATHJAX is set to YES. - -MATHJAX_CODEFILE = - -# When the SEARCHENGINE tag is enabled doxygen will generate a search box for -# the HTML output. The underlying search engine uses javascript and DHTML and -# should work on any modern browser. Note that when using HTML help -# (GENERATE_HTMLHELP), Qt help (GENERATE_QHP), or docsets (GENERATE_DOCSET) -# there is already a search function so this one should typically be disabled. -# For large projects the javascript based search engine can be slow, then -# enabling SERVER_BASED_SEARCH may provide a better solution. It is possible to -# search using the keyboard; to jump to the search box use + S -# (what the is depends on the OS and browser, but it is typically -# , /