mirror of
https://github.com/qmk/qmk_firmware.git
synced 2026-07-10 19:04:28 -04:00
Compare commits
43 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 517f6d2c22 | |||
| 156ed69b46 | |||
| 7c7078faf3 | |||
| c957eed04b | |||
| f1299f3292 | |||
| ce5cdc6f8a | |||
| e2d4cd1a41 | |||
| 98e1e18f6b | |||
| 215b71716a | |||
| c7b56bee96 | |||
| b506c498a7 | |||
| a536e1bd8f | |||
| 78fef0a46a | |||
| 245797f6b9 | |||
| a260cbbea6 | |||
| 99905dcfa3 | |||
| 55102ed980 | |||
| 24c898218b | |||
| 7d2cfadb55 | |||
| 06f698a496 | |||
| 395fd7bb56 | |||
| fc8cf8ec82 | |||
| 242336d475 | |||
| 4e8af9d41b | |||
| 871d35aa43 | |||
| 2d8703f6cc | |||
| c125d0a7a0 | |||
| 997d1b2bb5 | |||
| db54a7b79e | |||
| 671d066c84 | |||
| b531bd3b04 | |||
| 8dc2502177 | |||
| 547410b655 | |||
| 1b4f47c8ee | |||
| d9fe755f7e | |||
| c8b721d7c6 | |||
| 60d8d8677a | |||
| 0d04d95326 | |||
| 7222df36e7 | |||
| b8438c74e3 | |||
| cb9b81cc10 | |||
| 904c5613f4 | |||
| 37cbf7bcec |
@@ -26,7 +26,8 @@
|
||||
|
||||
<!--- Go over all the following points, and put an `x` in all the boxes that apply. -->
|
||||
<!--- If you're unsure about any of these, don't hesitate to ask. We're here to help! -->
|
||||
- [ ] My code follows the code style of this project.
|
||||
- [ ] My code follows the code style of this project: [**C**](https://docs.qmk.fm/#/coding_conventions_c), [**Python**](https://docs.qmk.fm/#/coding_conventions_python)
|
||||
- [ ] I have read the [**PR Checklist** document](https://docs.qmk.fm/#/pr_checklist) and have made the appropriate changes.
|
||||
- [ ] My change requires a change to the documentation.
|
||||
- [ ] I have updated the documentation accordingly.
|
||||
- [ ] I have read the [**CONTRIBUTING** document](https://docs.qmk.fm/#/contributing).
|
||||
|
||||
@@ -27,6 +27,7 @@
|
||||
# qmk-dfu QMK DFU (LUFA + blinkenlight)
|
||||
# bootloadHID HIDBootFlash compatible (ATmega32A)
|
||||
# USBasp USBaspLoader (ATmega328P)
|
||||
# kiibohd Input:Club Kiibohd bootloader (only used on their boards)
|
||||
#
|
||||
# BOOTLOADER_SIZE can still be defined manually, but it's recommended
|
||||
# you add any possible configuration to this list
|
||||
@@ -89,6 +90,18 @@ ifeq ($(strip $(BOOTLOADER)), lufa-ms)
|
||||
BOOTLOADER_SIZE = 6144
|
||||
FIRMWARE_FORMAT = bin
|
||||
endif
|
||||
ifeq ($(strip $(BOOTLOADER)), kiibohd)
|
||||
OPT_DEFS += -DBOOTLOADER_KIIBOHD
|
||||
ifeq ($(strip $(MCU)), MK20DX128)
|
||||
MCU_LDSCRIPT = MK20DX128BLDR4
|
||||
endif
|
||||
ifeq ($(strip $(MCU)), MK20DX256)
|
||||
MCU_LDSCRIPT = MK20DX256BLDR8
|
||||
endif
|
||||
|
||||
DFU_ARGS = -d 1C11:B007
|
||||
DFU_SUFFIX_ARGS = -v 1C11 -p B007
|
||||
endif
|
||||
|
||||
ifdef BOOTLOADER_SIZE
|
||||
OPT_DEFS += -DBOOTLOADER_SIZE=$(strip $(BOOTLOADER_SIZE))
|
||||
|
||||
@@ -111,6 +111,7 @@
|
||||
* [Velocikey](feature_velocikey.md)
|
||||
|
||||
* Developing QMK
|
||||
* [PR Checklist](pr_checklist.md)
|
||||
* Breaking Changes
|
||||
* [Overview](breaking_changes.md)
|
||||
* [My Pull Request Was Flagged](breaking_changes_instructions.md)
|
||||
|
||||
@@ -0,0 +1,125 @@
|
||||
# PR checklists
|
||||
|
||||
This is a non-exhaustive checklist of what the QMK collaborators will be checking when reviewing submitted PRs.
|
||||
|
||||
If there are any inconsistencies with these recommendations, you're best off [creating an issue](https://github.com/qmk/qmk_firmware/issues/new) against this document, or getting in touch with a QMK Collaborator on Discord.
|
||||
|
||||
## General PRs
|
||||
|
||||
- PR should be submitted using a non-`master` branch on the source repository
|
||||
- This does not mean you target a different branch for your PR, rather that you're not working out of your own master branch
|
||||
- If submitter _does_ use their own `master` branch, they'll be given a link to the ["how to git"](https://docs.qmk.fm/#/newbs_git_using_your_master_branch) page after merging -- (end of this document will contain the contents of the message)
|
||||
- Newly-added directories and filenames must be lowercase
|
||||
- This rule may be relaxed if upstream sources originally had uppercase characters (e.g. ChibiOS, or imported files from other repositories etc.)
|
||||
- If there is enough justification (i.e. consistency with existing core files etc.) this can be relaxed
|
||||
- a board designer naming their keyboard with uppercase letters is not enough justification
|
||||
- Valid license headers on all `*.c` and `*.h` source files
|
||||
- GPL2/GPL3 recommended for consistency
|
||||
- Other licenses are permitted, however they must be GPL-compatible and must allow for redistribution. Using a different license will almost certainly delay a PR getting merged.
|
||||
- QMK codebase "best practices" followed
|
||||
- This is not an exhaustive list, and will likely get amended as time goes by
|
||||
- `#pragma once` instead of `#ifndef` include guards in header files
|
||||
- No "old-school" GPIO/I2C/SPI functions used -- must use QMK abstractions unless justifiable (and laziness is not valid justification)
|
||||
- Timing abstractions should be followed too:
|
||||
- `wait_ms()` instead of `_delay_ms()` (remove `#include <util/delay.h>` too)
|
||||
- `timer_read()` and `timer_read32()` etc. -- see [timer.h](https://github.com/qmk/qmk_firmware/blob/master/tmk_core/common/timer.h) for the timing APIs
|
||||
- If you think a new abstraction is useful, you're encouraged to:
|
||||
- prototype it in your own keyboard until it's feature-complete
|
||||
- discuss it with QMK Collaborators on Discord
|
||||
- refactor it as a separate core change
|
||||
- remove your specific copy in your board
|
||||
|
||||
## Core PRs
|
||||
|
||||
- Must now target `develop` branch, which will subsequently be merged back to `master` on the breaking changes timeline
|
||||
- Other notes TBD
|
||||
- Core is a lot more subjective given the breadth of posted changes
|
||||
|
||||
## Keyboard PRs
|
||||
|
||||
Closed PRs (for inspiration, previous sets of review comments will help you eliminate ping-pong of your own reviews):
|
||||
https://github.com/qmk/qmk_firmware/pulls?q=is%3Apr+is%3Aclosed+label%3Akeyboard
|
||||
|
||||
- `info.json`
|
||||
- valid URL
|
||||
- valid maintainer
|
||||
- displays correctly in Configurator (press Ctrl+Shift+I to preview local file, turn on fast input to verify ordering)
|
||||
- `readme.md`
|
||||
- standard template should be present
|
||||
- flash command has `:flash` at end
|
||||
- valid hardware availability link (unless handwired) -- private groupbuys are okay, but one-off prototypes will be questioned. If open-source, a link to files should be provided.
|
||||
- `rules.mk`
|
||||
- removed `MIDI_ENABLE`, `FAUXCLICKY_ENABLE` and `HD44780_ENABLE`
|
||||
- modified `# Enable Bluetooth with the Adafruit EZ-Key HID` -> `# Enable Bluetooth`
|
||||
- No `(-/+size)` comments related to enabling features
|
||||
- Remove the list of alternate bootloaders if one has been specified
|
||||
- No re-definitions of the default MCU parameters if same value, when compared to the equivalent MCU in [mcu_selection.mk](https://github.com/qmk/qmk_firmware/blob/master/quantum/mcu_selection.mk)
|
||||
- keyboard `config.h`
|
||||
- don't repeat `MANUFACTURER` in the `PRODUCT` value
|
||||
- no `#define DESCRIPTION`
|
||||
- no Magic Key Options, MIDI Options or HD44780 configuration
|
||||
- user preference configurable `#define`s need to be moved to keymap `config.h`
|
||||
- "`DEBOUNCE`" instead of "`DEBOUNCING_DELAY`"
|
||||
- bare minimum required code for a board to boot into QMK should be present
|
||||
- initialisation code for the matrix and critical devices
|
||||
- mirroring existing functionality of a commercial board (like custom keycodes and special animations etc.) should be handled through non-`default` keymaps
|
||||
- `keyboard.c`
|
||||
- empty `xxxx_xxxx_kb()` or other weak-defined default implemented functions removed
|
||||
- commented-out functions removed too
|
||||
- `matrix_init_board()` etc. migrated to `keyboard_pre_init_kb()`, see: [keyboard_pre_init*](https://docs.qmk.fm/#/custom_quantum_functions?id=keyboard_pre_init_-function-documentation)
|
||||
- prefer `CUSTOM_MATRIX = lite` if custom matrix used, allows for standard debounce, see [custom matrix 'lite'](https://docs.qmk.fm/#/custom_matrix?id=lite)
|
||||
- `keyboard.h`
|
||||
- `#include "quantum.h"` appears at the top
|
||||
- `LAYOUT` macros should use standard definitions if applicable
|
||||
- Use the Community Layout macro names where they apply (preferred above `LAYOUT`/`LAYOUT_all`)
|
||||
- keymap `config.h`
|
||||
- no duplication of `rules.mk` or `config.h` from keyboard
|
||||
- `keymaps/default/keymap.c`
|
||||
- `QMKBEST`/`QMKURL` removed (sheesh)
|
||||
- If using `MO(_LOWER)` and `MO(_RAISE)` keycodes or equivalent, and the keymap has an adjust layer when holding both keys -- if the keymap has no "direct-to-adjust" keycode (such as `MO(_ADJUST)`) then you should prefer to write...
|
||||
```
|
||||
layer_state_t layer_state_set_user(layer_state_t state) {
|
||||
return update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST);
|
||||
}
|
||||
```
|
||||
...instead of manually handling `layer_on()`, `update_tri_layer()` inside the keymap's `process_record_user()`.
|
||||
- default (and via) keymaps should be "pristine"
|
||||
- bare minimum to be used as a "clean slate" for another user to develop their own user-specific keymap
|
||||
- standard layouts preferred in these keymaps, if possible
|
||||
- submitters can have a personal (or bells-and-whistles) keymap showcasing capabilities in the same PR but it shouldn't be embedded in the 'default' keymap
|
||||
- submitters can also have a "manufacturer-matching" keymap that mirrors existing functionality of the commercial product, if porting an existing board
|
||||
|
||||
Also, specific to ChibiOS:
|
||||
- **Strong** preference to using existing ChibiOS board definitions.
|
||||
- A lot of the time, an equivalent Nucleo board can be used with a different flash size or slightly different model in the same family
|
||||
- Example: For an STM32L082KZ, given the similarity to an STM32L073RZ, you can use `BOARD = ST_NUCLEO64_L073RZ` in rules.mk
|
||||
- QMK is migrating to not having custom board definitions if at all possible, due to the ongoing maintenance burden when upgrading ChibiOS
|
||||
- If a board definition is unavoidable, `board.c` must have a standard `__early_init()` (as per normal ChibiOS board defs) and an empty `boardInit()`:
|
||||
- see Arm/ChibiOS [early initialization](https://docs.qmk.fm/#/platformdev_chibios_earlyinit?id=board-init)
|
||||
- `__early_init()` should be replaced by either `early_hardware_init_pre()` or `early_hardware_init_post()` as appropriate
|
||||
- `boardInit()` should be migrated to `board_init()`
|
||||
|
||||
## Keymap PRs
|
||||
|
||||
- `#include QMK_KEYBOARD_H` preferred to including specific board files
|
||||
- Prefer layer `enum`s to `#define`s
|
||||
- Require custom keycode `enum`s to `#define`s, first entry must have ` = SAFE_RANGE`
|
||||
- Terminating backslash (`\`) in lines of LAYOUT macro parameters is superfluous
|
||||
- Some care with spacing (e.g., alignment on commas or first char of keycodes) makes for a much nicer-looking keymap
|
||||
|
||||
---
|
||||
|
||||
## Notes
|
||||
|
||||
For when people use their own `master` branch, post this after merge:
|
||||
```
|
||||
For future reference, we recommend against committing to your `master` branch as you've done here, because pull requests from modified `master` branches can make it more difficult to keep your QMK fork updated. It is highly recommended for QMK development – regardless of what is being done or where – to keep your master updated, but **NEVER** commit to it. Instead, do all your changes in a branch (branches are basically free in Git) and issue PRs from your branches when you're developing.
|
||||
|
||||
There are instructions on how to keep your fork updated here:
|
||||
|
||||
[**Best Practices: Your Fork's Master: Update Often, Commit Never**](https://docs.qmk.fm/#/newbs_git_using_your_master_branch)
|
||||
|
||||
[Fixing Your Branch](https://docs.qmk.fm/#/newbs_git_resynchronize_a_branch) will walk you through fixing up your `master` branch moving forward. If you need any help with this just ask.
|
||||
|
||||
Thanks for contributing!
|
||||
```
|
||||
@@ -9,6 +9,6 @@ Hardware Availability: Custom keyboard group buys
|
||||
|
||||
Make example for this keyboard (after setting up your build environment):
|
||||
|
||||
make aeboards/ext65:default
|
||||
make aeboards/ext65/rev1:default
|
||||
|
||||
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).
|
||||
@@ -0,0 +1,7 @@
|
||||
/* Address for jumping to bootloader on STM32 chips. */
|
||||
/* It is chip dependent, the correct number can be looked up here (page 175):
|
||||
* http://www.st.com/web/en/resource/technical/document/application_note/CD00167594.pdf
|
||||
* This also requires a patch to chibios:
|
||||
* <tmk_dir>/tmk_core/tool/chibios/ch-bootloader-jump.patch
|
||||
*/
|
||||
#define STM32_BOOTLOADER_ADDRESS 0x1FFFC800
|
||||
@@ -0,0 +1,714 @@
|
||||
/*
|
||||
ChibiOS - Copyright (C) 2006..2018 Giovanni Di Sirio
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
*/
|
||||
|
||||
/**
|
||||
* @file rt/templates/chconf.h
|
||||
* @brief Configuration file template.
|
||||
* @details A copy of this file must be placed in each project directory, it
|
||||
* contains the application specific kernel settings.
|
||||
*
|
||||
* @addtogroup config
|
||||
* @details Kernel related settings and hooks.
|
||||
* @{
|
||||
*/
|
||||
|
||||
#ifndef CHCONF_H
|
||||
#define CHCONF_H
|
||||
|
||||
#define _CHIBIOS_RT_CONF_
|
||||
#define _CHIBIOS_RT_CONF_VER_6_0_
|
||||
|
||||
/*===========================================================================*/
|
||||
/**
|
||||
* @name System timers settings
|
||||
* @{
|
||||
*/
|
||||
/*===========================================================================*/
|
||||
|
||||
/**
|
||||
* @brief System time counter resolution.
|
||||
* @note Allowed values are 16 or 32 bits.
|
||||
*/
|
||||
#if !defined(CH_CFG_ST_RESOLUTION)
|
||||
#define CH_CFG_ST_RESOLUTION 32
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief System tick frequency.
|
||||
* @details Frequency of the system timer that drives the system ticks. This
|
||||
* setting also defines the system tick time unit.
|
||||
*/
|
||||
#if !defined(CH_CFG_ST_FREQUENCY)
|
||||
#define CH_CFG_ST_FREQUENCY 10000
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Time intervals data size.
|
||||
* @note Allowed values are 16, 32 or 64 bits.
|
||||
*/
|
||||
#if !defined(CH_CFG_INTERVALS_SIZE)
|
||||
#define CH_CFG_INTERVALS_SIZE 32
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Time types data size.
|
||||
* @note Allowed values are 16 or 32 bits.
|
||||
*/
|
||||
#if !defined(CH_CFG_TIME_TYPES_SIZE)
|
||||
#define CH_CFG_TIME_TYPES_SIZE 32
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Time delta constant for the tick-less mode.
|
||||
* @note If this value is zero then the system uses the classic
|
||||
* periodic tick. This value represents the minimum number
|
||||
* of ticks that is safe to specify in a timeout directive.
|
||||
* The value one is not valid, timeouts are rounded up to
|
||||
* this value.
|
||||
*/
|
||||
#if !defined(CH_CFG_ST_TIMEDELTA)
|
||||
#define CH_CFG_ST_TIMEDELTA 2
|
||||
#endif
|
||||
|
||||
/** @} */
|
||||
|
||||
/*===========================================================================*/
|
||||
/**
|
||||
* @name Kernel parameters and options
|
||||
* @{
|
||||
*/
|
||||
/*===========================================================================*/
|
||||
|
||||
/**
|
||||
* @brief Round robin interval.
|
||||
* @details This constant is the number of system ticks allowed for the
|
||||
* threads before preemption occurs. Setting this value to zero
|
||||
* disables the preemption for threads with equal priority and the
|
||||
* round robin becomes cooperative. Note that higher priority
|
||||
* threads can still preempt, the kernel is always preemptive.
|
||||
* @note Disabling the round robin preemption makes the kernel more compact
|
||||
* and generally faster.
|
||||
* @note The round robin preemption is not supported in tickless mode and
|
||||
* must be set to zero in that case.
|
||||
*/
|
||||
#if !defined(CH_CFG_TIME_QUANTUM)
|
||||
#define CH_CFG_TIME_QUANTUM 0
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Managed RAM size.
|
||||
* @details Size of the RAM area to be managed by the OS. If set to zero
|
||||
* then the whole available RAM is used. The core memory is made
|
||||
* available to the heap allocator and/or can be used directly through
|
||||
* the simplified core memory allocator.
|
||||
*
|
||||
* @note In order to let the OS manage the whole RAM the linker script must
|
||||
* provide the @p __heap_base__ and @p __heap_end__ symbols.
|
||||
* @note Requires @p CH_CFG_USE_MEMCORE.
|
||||
*/
|
||||
#if !defined(CH_CFG_MEMCORE_SIZE)
|
||||
#define CH_CFG_MEMCORE_SIZE 0
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Idle thread automatic spawn suppression.
|
||||
* @details When this option is activated the function @p chSysInit()
|
||||
* does not spawn the idle thread. The application @p main()
|
||||
* function becomes the idle thread and must implement an
|
||||
* infinite loop.
|
||||
*/
|
||||
#if !defined(CH_CFG_NO_IDLE_THREAD)
|
||||
#define CH_CFG_NO_IDLE_THREAD FALSE
|
||||
#endif
|
||||
|
||||
/** @} */
|
||||
|
||||
/*===========================================================================*/
|
||||
/**
|
||||
* @name Performance options
|
||||
* @{
|
||||
*/
|
||||
/*===========================================================================*/
|
||||
|
||||
/**
|
||||
* @brief OS optimization.
|
||||
* @details If enabled then time efficient rather than space efficient code
|
||||
* is used when two possible implementations exist.
|
||||
*
|
||||
* @note This is not related to the compiler optimization options.
|
||||
* @note The default is @p TRUE.
|
||||
*/
|
||||
#if !defined(CH_CFG_OPTIMIZE_SPEED)
|
||||
#define CH_CFG_OPTIMIZE_SPEED FALSE
|
||||
#endif
|
||||
|
||||
/** @} */
|
||||
|
||||
/*===========================================================================*/
|
||||
/**
|
||||
* @name Subsystem options
|
||||
* @{
|
||||
*/
|
||||
/*===========================================================================*/
|
||||
|
||||
/**
|
||||
* @brief Time Measurement APIs.
|
||||
* @details If enabled then the time measurement APIs are included in
|
||||
* the kernel.
|
||||
*
|
||||
* @note The default is @p TRUE.
|
||||
*/
|
||||
#if !defined(CH_CFG_USE_TM)
|
||||
#define CH_CFG_USE_TM FALSE
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Threads registry APIs.
|
||||
* @details If enabled then the registry APIs are included in the kernel.
|
||||
*
|
||||
* @note The default is @p TRUE.
|
||||
*/
|
||||
#if !defined(CH_CFG_USE_REGISTRY)
|
||||
#define CH_CFG_USE_REGISTRY TRUE
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Threads synchronization APIs.
|
||||
* @details If enabled then the @p chThdWait() function is included in
|
||||
* the kernel.
|
||||
*
|
||||
* @note The default is @p TRUE.
|
||||
*/
|
||||
#if !defined(CH_CFG_USE_WAITEXIT)
|
||||
#define CH_CFG_USE_WAITEXIT TRUE
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Semaphores APIs.
|
||||
* @details If enabled then the Semaphores APIs are included in the kernel.
|
||||
*
|
||||
* @note The default is @p TRUE.
|
||||
*/
|
||||
#if !defined(CH_CFG_USE_SEMAPHORES)
|
||||
#define CH_CFG_USE_SEMAPHORES TRUE
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Semaphores queuing mode.
|
||||
* @details If enabled then the threads are enqueued on semaphores by
|
||||
* priority rather than in FIFO order.
|
||||
*
|
||||
* @note The default is @p FALSE. Enable this if you have special
|
||||
* requirements.
|
||||
* @note Requires @p CH_CFG_USE_SEMAPHORES.
|
||||
*/
|
||||
#if !defined(CH_CFG_USE_SEMAPHORES_PRIORITY)
|
||||
#define CH_CFG_USE_SEMAPHORES_PRIORITY FALSE
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Mutexes APIs.
|
||||
* @details If enabled then the mutexes APIs are included in the kernel.
|
||||
*
|
||||
* @note The default is @p TRUE.
|
||||
*/
|
||||
#if !defined(CH_CFG_USE_MUTEXES)
|
||||
#define CH_CFG_USE_MUTEXES TRUE
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Enables recursive behavior on mutexes.
|
||||
* @note Recursive mutexes are heavier and have an increased
|
||||
* memory footprint.
|
||||
*
|
||||
* @note The default is @p FALSE.
|
||||
* @note Requires @p CH_CFG_USE_MUTEXES.
|
||||
*/
|
||||
#if !defined(CH_CFG_USE_MUTEXES_RECURSIVE)
|
||||
#define CH_CFG_USE_MUTEXES_RECURSIVE FALSE
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Conditional Variables APIs.
|
||||
* @details If enabled then the conditional variables APIs are included
|
||||
* in the kernel.
|
||||
*
|
||||
* @note The default is @p TRUE.
|
||||
* @note Requires @p CH_CFG_USE_MUTEXES.
|
||||
*/
|
||||
#if !defined(CH_CFG_USE_CONDVARS)
|
||||
#define CH_CFG_USE_CONDVARS TRUE
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Conditional Variables APIs with timeout.
|
||||
* @details If enabled then the conditional variables APIs with timeout
|
||||
* specification are included in the kernel.
|
||||
*
|
||||
* @note The default is @p TRUE.
|
||||
* @note Requires @p CH_CFG_USE_CONDVARS.
|
||||
*/
|
||||
#if !defined(CH_CFG_USE_CONDVARS_TIMEOUT)
|
||||
#define CH_CFG_USE_CONDVARS_TIMEOUT FALSE
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Events Flags APIs.
|
||||
* @details If enabled then the event flags APIs are included in the kernel.
|
||||
*
|
||||
* @note The default is @p TRUE.
|
||||
*/
|
||||
#if !defined(CH_CFG_USE_EVENTS)
|
||||
#define CH_CFG_USE_EVENTS TRUE
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Events Flags APIs with timeout.
|
||||
* @details If enabled then the events APIs with timeout specification
|
||||
* are included in the kernel.
|
||||
*
|
||||
* @note The default is @p TRUE.
|
||||
* @note Requires @p CH_CFG_USE_EVENTS.
|
||||
*/
|
||||
#if !defined(CH_CFG_USE_EVENTS_TIMEOUT)
|
||||
#define CH_CFG_USE_EVENTS_TIMEOUT TRUE
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Synchronous Messages APIs.
|
||||
* @details If enabled then the synchronous messages APIs are included
|
||||
* in the kernel.
|
||||
*
|
||||
* @note The default is @p TRUE.
|
||||
*/
|
||||
#if !defined(CH_CFG_USE_MESSAGES)
|
||||
#define CH_CFG_USE_MESSAGES TRUE
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Synchronous Messages queuing mode.
|
||||
* @details If enabled then messages are served by priority rather than in
|
||||
* FIFO order.
|
||||
*
|
||||
* @note The default is @p FALSE. Enable this if you have special
|
||||
* requirements.
|
||||
* @note Requires @p CH_CFG_USE_MESSAGES.
|
||||
*/
|
||||
#if !defined(CH_CFG_USE_MESSAGES_PRIORITY)
|
||||
#define CH_CFG_USE_MESSAGES_PRIORITY FALSE
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Mailboxes APIs.
|
||||
* @details If enabled then the asynchronous messages (mailboxes) APIs are
|
||||
* included in the kernel.
|
||||
*
|
||||
* @note The default is @p TRUE.
|
||||
* @note Requires @p CH_CFG_USE_SEMAPHORES.
|
||||
*/
|
||||
#if !defined(CH_CFG_USE_MAILBOXES)
|
||||
#define CH_CFG_USE_MAILBOXES TRUE
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Core Memory Manager APIs.
|
||||
* @details If enabled then the core memory manager APIs are included
|
||||
* in the kernel.
|
||||
*
|
||||
* @note The default is @p TRUE.
|
||||
*/
|
||||
#if !defined(CH_CFG_USE_MEMCORE)
|
||||
#define CH_CFG_USE_MEMCORE FALSE
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Heap Allocator APIs.
|
||||
* @details If enabled then the memory heap allocator APIs are included
|
||||
* in the kernel.
|
||||
*
|
||||
* @note The default is @p TRUE.
|
||||
* @note Requires @p CH_CFG_USE_MEMCORE and either @p CH_CFG_USE_MUTEXES or
|
||||
* @p CH_CFG_USE_SEMAPHORES.
|
||||
* @note Mutexes are recommended.
|
||||
*/
|
||||
#if !defined(CH_CFG_USE_HEAP)
|
||||
#define CH_CFG_USE_HEAP FALSE
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Memory Pools Allocator APIs.
|
||||
* @details If enabled then the memory pools allocator APIs are included
|
||||
* in the kernel.
|
||||
*
|
||||
* @note The default is @p TRUE.
|
||||
*/
|
||||
#if !defined(CH_CFG_USE_MEMPOOLS)
|
||||
#define CH_CFG_USE_MEMPOOLS FALSE
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Objects FIFOs APIs.
|
||||
* @details If enabled then the objects FIFOs APIs are included
|
||||
* in the kernel.
|
||||
*
|
||||
* @note The default is @p TRUE.
|
||||
*/
|
||||
#if !defined(CH_CFG_USE_OBJ_FIFOS)
|
||||
#define CH_CFG_USE_OBJ_FIFOS FALSE
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Pipes APIs.
|
||||
* @details If enabled then the pipes APIs are included
|
||||
* in the kernel.
|
||||
*
|
||||
* @note The default is @p TRUE.
|
||||
*/
|
||||
#if !defined(CH_CFG_USE_PIPES)
|
||||
#define CH_CFG_USE_PIPES FALSE
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Dynamic Threads APIs.
|
||||
* @details If enabled then the dynamic threads creation APIs are included
|
||||
* in the kernel.
|
||||
*
|
||||
* @note The default is @p TRUE.
|
||||
* @note Requires @p CH_CFG_USE_WAITEXIT.
|
||||
* @note Requires @p CH_CFG_USE_HEAP and/or @p CH_CFG_USE_MEMPOOLS.
|
||||
*/
|
||||
#if !defined(CH_CFG_USE_DYNAMIC)
|
||||
#define CH_CFG_USE_DYNAMIC FALSE
|
||||
#endif
|
||||
|
||||
/** @} */
|
||||
|
||||
/*===========================================================================*/
|
||||
/**
|
||||
* @name Objects factory options
|
||||
* @{
|
||||
*/
|
||||
/*===========================================================================*/
|
||||
|
||||
/**
|
||||
* @brief Objects Factory APIs.
|
||||
* @details If enabled then the objects factory APIs are included in the
|
||||
* kernel.
|
||||
*
|
||||
* @note The default is @p FALSE.
|
||||
*/
|
||||
#if !defined(CH_CFG_USE_FACTORY)
|
||||
#define CH_CFG_USE_FACTORY FALSE
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Maximum length for object names.
|
||||
* @details If the specified length is zero then the name is stored by
|
||||
* pointer but this could have unintended side effects.
|
||||
*/
|
||||
#if !defined(CH_CFG_FACTORY_MAX_NAMES_LENGTH)
|
||||
#define CH_CFG_FACTORY_MAX_NAMES_LENGTH 8
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Enables the registry of generic objects.
|
||||
*/
|
||||
#if !defined(CH_CFG_FACTORY_OBJECTS_REGISTRY)
|
||||
#define CH_CFG_FACTORY_OBJECTS_REGISTRY FALSE
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Enables factory for generic buffers.
|
||||
*/
|
||||
#if !defined(CH_CFG_FACTORY_GENERIC_BUFFERS)
|
||||
#define CH_CFG_FACTORY_GENERIC_BUFFERS FALSE
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Enables factory for semaphores.
|
||||
*/
|
||||
#if !defined(CH_CFG_FACTORY_SEMAPHORES)
|
||||
#define CH_CFG_FACTORY_SEMAPHORES FALSE
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Enables factory for mailboxes.
|
||||
*/
|
||||
#if !defined(CH_CFG_FACTORY_MAILBOXES)
|
||||
#define CH_CFG_FACTORY_MAILBOXES FALSE
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Enables factory for objects FIFOs.
|
||||
*/
|
||||
#if !defined(CH_CFG_FACTORY_OBJ_FIFOS)
|
||||
#define CH_CFG_FACTORY_OBJ_FIFOS FALSE
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Enables factory for Pipes.
|
||||
*/
|
||||
#if !defined(CH_CFG_FACTORY_PIPES) || defined(__DOXYGEN__)
|
||||
#define CH_CFG_FACTORY_PIPES FALSE
|
||||
#endif
|
||||
|
||||
/** @} */
|
||||
|
||||
/*===========================================================================*/
|
||||
/**
|
||||
* @name Debug options
|
||||
* @{
|
||||
*/
|
||||
/*===========================================================================*/
|
||||
|
||||
/**
|
||||
* @brief Debug option, kernel statistics.
|
||||
*
|
||||
* @note The default is @p FALSE.
|
||||
*/
|
||||
#if !defined(CH_DBG_STATISTICS)
|
||||
#define CH_DBG_STATISTICS FALSE
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Debug option, system state check.
|
||||
* @details If enabled the correct call protocol for system APIs is checked
|
||||
* at runtime.
|
||||
*
|
||||
* @note The default is @p FALSE.
|
||||
*/
|
||||
#if !defined(CH_DBG_SYSTEM_STATE_CHECK)
|
||||
#define CH_DBG_SYSTEM_STATE_CHECK FALSE
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Debug option, parameters checks.
|
||||
* @details If enabled then the checks on the API functions input
|
||||
* parameters are activated.
|
||||
*
|
||||
* @note The default is @p FALSE.
|
||||
*/
|
||||
#if !defined(CH_DBG_ENABLE_CHECKS)
|
||||
#define CH_DBG_ENABLE_CHECKS FALSE
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Debug option, consistency checks.
|
||||
* @details If enabled then all the assertions in the kernel code are
|
||||
* activated. This includes consistency checks inside the kernel,
|
||||
* runtime anomalies and port-defined checks.
|
||||
*
|
||||
* @note The default is @p FALSE.
|
||||
*/
|
||||
#if !defined(CH_DBG_ENABLE_ASSERTS)
|
||||
#define CH_DBG_ENABLE_ASSERTS FALSE
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Debug option, trace buffer.
|
||||
* @details If enabled then the trace buffer is activated.
|
||||
*
|
||||
* @note The default is @p CH_DBG_TRACE_MASK_DISABLED.
|
||||
*/
|
||||
#if !defined(CH_DBG_TRACE_MASK)
|
||||
#define CH_DBG_TRACE_MASK CH_DBG_TRACE_MASK_DISABLED
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Trace buffer entries.
|
||||
* @note The trace buffer is only allocated if @p CH_DBG_TRACE_MASK is
|
||||
* different from @p CH_DBG_TRACE_MASK_DISABLED.
|
||||
*/
|
||||
#if !defined(CH_DBG_TRACE_BUFFER_SIZE)
|
||||
#define CH_DBG_TRACE_BUFFER_SIZE 128
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Debug option, stack checks.
|
||||
* @details If enabled then a runtime stack check is performed.
|
||||
*
|
||||
* @note The default is @p FALSE.
|
||||
* @note The stack check is performed in a architecture/port dependent way.
|
||||
* It may not be implemented or some ports.
|
||||
* @note The default failure mode is to halt the system with the global
|
||||
* @p panic_msg variable set to @p NULL.
|
||||
*/
|
||||
#if !defined(CH_DBG_ENABLE_STACK_CHECK)
|
||||
#define CH_DBG_ENABLE_STACK_CHECK FALSE
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Debug option, stacks initialization.
|
||||
* @details If enabled then the threads working area is filled with a byte
|
||||
* value when a thread is created. This can be useful for the
|
||||
* runtime measurement of the used stack.
|
||||
*
|
||||
* @note The default is @p FALSE.
|
||||
*/
|
||||
#if !defined(CH_DBG_FILL_THREADS)
|
||||
#define CH_DBG_FILL_THREADS FALSE
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Debug option, threads profiling.
|
||||
* @details If enabled then a field is added to the @p thread_t structure that
|
||||
* counts the system ticks occurred while executing the thread.
|
||||
*
|
||||
* @note The default is @p FALSE.
|
||||
* @note This debug option is not currently compatible with the
|
||||
* tickless mode.
|
||||
*/
|
||||
#if !defined(CH_DBG_THREADS_PROFILING)
|
||||
#define CH_DBG_THREADS_PROFILING FALSE
|
||||
#endif
|
||||
|
||||
/** @} */
|
||||
|
||||
/*===========================================================================*/
|
||||
/**
|
||||
* @name Kernel hooks
|
||||
* @{
|
||||
*/
|
||||
/*===========================================================================*/
|
||||
|
||||
/**
|
||||
* @brief System structure extension.
|
||||
* @details User fields added to the end of the @p ch_system_t structure.
|
||||
*/
|
||||
#define CH_CFG_SYSTEM_EXTRA_FIELDS \
|
||||
/* Add threads custom fields here.*/
|
||||
|
||||
/**
|
||||
* @brief System initialization hook.
|
||||
* @details User initialization code added to the @p chSysInit() function
|
||||
* just before interrupts are enabled globally.
|
||||
*/
|
||||
#define CH_CFG_SYSTEM_INIT_HOOK() { \
|
||||
/* Add threads initialization code here.*/ \
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Threads descriptor structure extension.
|
||||
* @details User fields added to the end of the @p thread_t structure.
|
||||
*/
|
||||
#define CH_CFG_THREAD_EXTRA_FIELDS \
|
||||
/* Add threads custom fields here.*/
|
||||
|
||||
/**
|
||||
* @brief Threads initialization hook.
|
||||
* @details User initialization code added to the @p _thread_init() function.
|
||||
*
|
||||
* @note It is invoked from within @p _thread_init() and implicitly from all
|
||||
* the threads creation APIs.
|
||||
*/
|
||||
#define CH_CFG_THREAD_INIT_HOOK(tp) { \
|
||||
/* Add threads initialization code here.*/ \
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Threads finalization hook.
|
||||
* @details User finalization code added to the @p chThdExit() API.
|
||||
*/
|
||||
#define CH_CFG_THREAD_EXIT_HOOK(tp) { \
|
||||
/* Add threads finalization code here.*/ \
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Context switch hook.
|
||||
* @details This hook is invoked just before switching between threads.
|
||||
*/
|
||||
#define CH_CFG_CONTEXT_SWITCH_HOOK(ntp, otp) { \
|
||||
/* Context switch code here.*/ \
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief ISR enter hook.
|
||||
*/
|
||||
#define CH_CFG_IRQ_PROLOGUE_HOOK() { \
|
||||
/* IRQ prologue code here.*/ \
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief ISR exit hook.
|
||||
*/
|
||||
#define CH_CFG_IRQ_EPILOGUE_HOOK() { \
|
||||
/* IRQ epilogue code here.*/ \
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Idle thread enter hook.
|
||||
* @note This hook is invoked within a critical zone, no OS functions
|
||||
* should be invoked from here.
|
||||
* @note This macro can be used to activate a power saving mode.
|
||||
*/
|
||||
#define CH_CFG_IDLE_ENTER_HOOK() { \
|
||||
/* Idle-enter code here.*/ \
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Idle thread leave hook.
|
||||
* @note This hook is invoked within a critical zone, no OS functions
|
||||
* should be invoked from here.
|
||||
* @note This macro can be used to deactivate a power saving mode.
|
||||
*/
|
||||
#define CH_CFG_IDLE_LEAVE_HOOK() { \
|
||||
/* Idle-leave code here.*/ \
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Idle Loop hook.
|
||||
* @details This hook is continuously invoked by the idle thread loop.
|
||||
*/
|
||||
#define CH_CFG_IDLE_LOOP_HOOK() { \
|
||||
/* Idle loop code here.*/ \
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief System tick event hook.
|
||||
* @details This hook is invoked in the system tick handler immediately
|
||||
* after processing the virtual timers queue.
|
||||
*/
|
||||
#define CH_CFG_SYSTEM_TICK_HOOK() { \
|
||||
/* System tick event code here.*/ \
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief System halt hook.
|
||||
* @details This hook is invoked in case to a system halting error before
|
||||
* the system is halted.
|
||||
*/
|
||||
#define CH_CFG_SYSTEM_HALT_HOOK(reason) { \
|
||||
/* System halt code here.*/ \
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Trace hook.
|
||||
* @details This hook is invoked each time a new record is written in the
|
||||
* trace buffer.
|
||||
*/
|
||||
#define CH_CFG_TRACE_HOOK(tep) { \
|
||||
/* Trace code here.*/ \
|
||||
}
|
||||
|
||||
/** @} */
|
||||
|
||||
/*===========================================================================*/
|
||||
/* Port-specific settings (override port settings defaulted in chcore.h). */
|
||||
/*===========================================================================*/
|
||||
|
||||
#endif /* CHCONF_H */
|
||||
|
||||
/** @} */
|
||||
@@ -0,0 +1,77 @@
|
||||
/*
|
||||
Copyright 2015 Jun Wako <wakojun@gmail.com>
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
/* USB Device descriptor parameter */
|
||||
#define VENDOR_ID 0x4145 // "AE"
|
||||
#define PRODUCT_ID 0xA652 // AEboards EXT65 Rev2
|
||||
#define DEVICE_VER 0x0001
|
||||
#define MANUFACTURER AEboards
|
||||
#define PRODUCT AEBoards Ext65 Rev2
|
||||
|
||||
/* key matrix size */
|
||||
/* key matrix size */
|
||||
#define MATRIX_ROWS 10
|
||||
#define MATRIX_COLS 10
|
||||
|
||||
/* key matrix pins */
|
||||
#define MATRIX_ROW_PINS { A10, A9, A8, B7, A2, A1, B12, B11, B10, B2 }
|
||||
#define MATRIX_COL_PINS { B14, B6, A0, B1, B0, A7, A6, A5, A4, A3 }
|
||||
|
||||
#define DIODE_DIRECTION COL2ROW
|
||||
|
||||
/* 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
|
||||
|
||||
//RGB Underglow WS2812
|
||||
#define RGBLIGHT_ANIMATIONS
|
||||
#define RGBLED_NUM 24
|
||||
#define RGB_DI_PIN B15
|
||||
|
||||
//SPI
|
||||
#define WS2812_SPI SPID2
|
||||
#define WS2812_SPI_MOSI_PAL_MODE 0
|
||||
#define WS2812_EXTERNAL_PULLUP
|
||||
|
||||
// I2C OLED defines
|
||||
#define I2C1_SCL 8
|
||||
#define I2C1_SDA 9
|
||||
|
||||
#define I2C1_SCL_PAL_MODE 1
|
||||
#define I2C1_SDA_PAL_MODE 1
|
||||
|
||||
#define I2C1_TIMINGR_PRESC 0U
|
||||
#define I2C1_TIMINGR_SCLDEL 3U
|
||||
#define I2C1_TIMINGR_SDADEL 1U
|
||||
#define I2C1_TIMINGR_SCLH 3U
|
||||
#define I2C1_TIMINGR_SCLL 9U
|
||||
|
||||
// LED defines
|
||||
#define BACKLIGHT_PIN B5
|
||||
#define BACKLIGHT_PWM_DRIVER PWMD3
|
||||
#define BACKLIGHT_PWM_CHANNEL 2
|
||||
#define BACKLIGHT_PAL_MODE 1
|
||||
|
||||
#define BACKLIGHT_LEVELS 6
|
||||
#define BACKLIGHT_BREATHING
|
||||
#define BREATHING_PERIOD 6
|
||||
@@ -0,0 +1,525 @@
|
||||
/*
|
||||
ChibiOS - Copyright (C) 2006..2018 Giovanni Di Sirio
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
*/
|
||||
|
||||
/**
|
||||
* @file templates/halconf.h
|
||||
* @brief HAL configuration header.
|
||||
* @details HAL configuration file, this file allows to enable or disable the
|
||||
* various device drivers from your application. You may also use
|
||||
* this file in order to override the device drivers default settings.
|
||||
*
|
||||
* @addtogroup HAL_CONF
|
||||
* @{
|
||||
*/
|
||||
|
||||
#ifndef HALCONF_H
|
||||
#define HALCONF_H
|
||||
|
||||
#define _CHIBIOS_HAL_CONF_
|
||||
#define _CHIBIOS_HAL_CONF_VER_7_0_
|
||||
|
||||
#include "mcuconf.h"
|
||||
|
||||
/**
|
||||
* @brief Enables the PAL subsystem.
|
||||
*/
|
||||
#if !defined(HAL_USE_PAL) || defined(__DOXYGEN__)
|
||||
#define HAL_USE_PAL TRUE
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Enables the ADC subsystem.
|
||||
*/
|
||||
#if !defined(HAL_USE_ADC) || defined(__DOXYGEN__)
|
||||
#define HAL_USE_ADC FALSE
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Enables the CAN subsystem.
|
||||
*/
|
||||
#if !defined(HAL_USE_CAN) || defined(__DOXYGEN__)
|
||||
#define HAL_USE_CAN FALSE
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Enables the cryptographic subsystem.
|
||||
*/
|
||||
#if !defined(HAL_USE_CRY) || defined(__DOXYGEN__)
|
||||
#define HAL_USE_CRY FALSE
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Enables the DAC subsystem.
|
||||
*/
|
||||
#if !defined(HAL_USE_DAC) || defined(__DOXYGEN__)
|
||||
#define HAL_USE_DAC FALSE
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Enables the GPT subsystem.
|
||||
*/
|
||||
#if !defined(HAL_USE_GPT) || defined(__DOXYGEN__)
|
||||
#define HAL_USE_GPT FALSE
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Enables the I2C subsystem.
|
||||
*/
|
||||
#if !defined(HAL_USE_I2C) || defined(__DOXYGEN__)
|
||||
#define HAL_USE_I2C TRUE
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Enables the I2S subsystem.
|
||||
*/
|
||||
#if !defined(HAL_USE_I2S) || defined(__DOXYGEN__)
|
||||
#define HAL_USE_I2S FALSE
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Enables the ICU subsystem.
|
||||
*/
|
||||
#if !defined(HAL_USE_ICU) || defined(__DOXYGEN__)
|
||||
#define HAL_USE_ICU FALSE
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Enables the MAC subsystem.
|
||||
*/
|
||||
#if !defined(HAL_USE_MAC) || defined(__DOXYGEN__)
|
||||
#define HAL_USE_MAC FALSE
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Enables the MMC_SPI subsystem.
|
||||
*/
|
||||
#if !defined(HAL_USE_MMC_SPI) || defined(__DOXYGEN__)
|
||||
#define HAL_USE_MMC_SPI FALSE
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Enables the PWM subsystem.
|
||||
*/
|
||||
#if !defined(HAL_USE_PWM) || defined(__DOXYGEN__)
|
||||
#define HAL_USE_PWM TRUE
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Enables the RTC subsystem.
|
||||
*/
|
||||
#if !defined(HAL_USE_RTC) || defined(__DOXYGEN__)
|
||||
#define HAL_USE_RTC FALSE
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Enables the SDC subsystem.
|
||||
*/
|
||||
#if !defined(HAL_USE_SDC) || defined(__DOXYGEN__)
|
||||
#define HAL_USE_SDC FALSE
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Enables the SERIAL subsystem.
|
||||
*/
|
||||
#if !defined(HAL_USE_SERIAL) || defined(__DOXYGEN__)
|
||||
#define HAL_USE_SERIAL FALSE
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Enables the SERIAL over USB subsystem.
|
||||
*/
|
||||
#if !defined(HAL_USE_SERIAL_USB) || defined(__DOXYGEN__)
|
||||
#define HAL_USE_SERIAL_USB FALSE
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Enables the SIO subsystem.
|
||||
*/
|
||||
#if !defined(HAL_USE_SIO) || defined(__DOXYGEN__)
|
||||
#define HAL_USE_SIO FALSE
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Enables the SPI subsystem.
|
||||
*/
|
||||
#if !defined(HAL_USE_SPI) || defined(__DOXYGEN__)
|
||||
#define HAL_USE_SPI TRUE
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Enables the TRNG subsystem.
|
||||
*/
|
||||
#if !defined(HAL_USE_TRNG) || defined(__DOXYGEN__)
|
||||
#define HAL_USE_TRNG FALSE
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Enables the UART subsystem.
|
||||
*/
|
||||
#if !defined(HAL_USE_UART) || defined(__DOXYGEN__)
|
||||
#define HAL_USE_UART FALSE
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Enables the USB subsystem.
|
||||
*/
|
||||
#if !defined(HAL_USE_USB) || defined(__DOXYGEN__)
|
||||
#define HAL_USE_USB TRUE
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Enables the WDG subsystem.
|
||||
*/
|
||||
#if !defined(HAL_USE_WDG) || defined(__DOXYGEN__)
|
||||
#define HAL_USE_WDG FALSE
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Enables the WSPI subsystem.
|
||||
*/
|
||||
#if !defined(HAL_USE_WSPI) || defined(__DOXYGEN__)
|
||||
#define HAL_USE_WSPI FALSE
|
||||
#endif
|
||||
|
||||
/*===========================================================================*/
|
||||
/* PAL driver related settings. */
|
||||
/*===========================================================================*/
|
||||
|
||||
/**
|
||||
* @brief Enables synchronous APIs.
|
||||
* @note Disabling this option saves both code and data space.
|
||||
*/
|
||||
#if !defined(PAL_USE_CALLBACKS) || defined(__DOXYGEN__)
|
||||
#define PAL_USE_CALLBACKS FALSE
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Enables synchronous APIs.
|
||||
* @note Disabling this option saves both code and data space.
|
||||
*/
|
||||
#if !defined(PAL_USE_WAIT) || defined(__DOXYGEN__)
|
||||
#define PAL_USE_WAIT FALSE
|
||||
#endif
|
||||
|
||||
/*===========================================================================*/
|
||||
/* ADC driver related settings. */
|
||||
/*===========================================================================*/
|
||||
|
||||
/**
|
||||
* @brief Enables synchronous APIs.
|
||||
* @note Disabling this option saves both code and data space.
|
||||
*/
|
||||
#if !defined(ADC_USE_WAIT) || defined(__DOXYGEN__)
|
||||
#define ADC_USE_WAIT TRUE
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Enables the @p adcAcquireBus() and @p adcReleaseBus() APIs.
|
||||
* @note Disabling this option saves both code and data space.
|
||||
*/
|
||||
#if !defined(ADC_USE_MUTUAL_EXCLUSION) || defined(__DOXYGEN__)
|
||||
#define ADC_USE_MUTUAL_EXCLUSION TRUE
|
||||
#endif
|
||||
|
||||
/*===========================================================================*/
|
||||
/* CAN driver related settings. */
|
||||
/*===========================================================================*/
|
||||
|
||||
/**
|
||||
* @brief Sleep mode related APIs inclusion switch.
|
||||
*/
|
||||
#if !defined(CAN_USE_SLEEP_MODE) || defined(__DOXYGEN__)
|
||||
#define CAN_USE_SLEEP_MODE TRUE
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Enforces the driver to use direct callbacks rather than OSAL events.
|
||||
*/
|
||||
#if !defined(CAN_ENFORCE_USE_CALLBACKS) || defined(__DOXYGEN__)
|
||||
#define CAN_ENFORCE_USE_CALLBACKS FALSE
|
||||
#endif
|
||||
|
||||
/*===========================================================================*/
|
||||
/* CRY driver related settings. */
|
||||
/*===========================================================================*/
|
||||
|
||||
/**
|
||||
* @brief Enables the SW fall-back of the cryptographic driver.
|
||||
* @details When enabled, this option, activates a fall-back software
|
||||
* implementation for algorithms not supported by the underlying
|
||||
* hardware.
|
||||
* @note Fall-back implementations may not be present for all algorithms.
|
||||
*/
|
||||
#if !defined(HAL_CRY_USE_FALLBACK) || defined(__DOXYGEN__)
|
||||
#define HAL_CRY_USE_FALLBACK FALSE
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Makes the driver forcibly use the fall-back implementations.
|
||||
*/
|
||||
#if !defined(HAL_CRY_ENFORCE_FALLBACK) || defined(__DOXYGEN__)
|
||||
#define HAL_CRY_ENFORCE_FALLBACK FALSE
|
||||
#endif
|
||||
|
||||
/*===========================================================================*/
|
||||
/* DAC driver related settings. */
|
||||
/*===========================================================================*/
|
||||
|
||||
/**
|
||||
* @brief Enables synchronous APIs.
|
||||
* @note Disabling this option saves both code and data space.
|
||||
*/
|
||||
#if !defined(DAC_USE_WAIT) || defined(__DOXYGEN__)
|
||||
#define DAC_USE_WAIT TRUE
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Enables the @p dacAcquireBus() and @p dacReleaseBus() APIs.
|
||||
* @note Disabling this option saves both code and data space.
|
||||
*/
|
||||
#if !defined(DAC_USE_MUTUAL_EXCLUSION) || defined(__DOXYGEN__)
|
||||
#define DAC_USE_MUTUAL_EXCLUSION TRUE
|
||||
#endif
|
||||
|
||||
/*===========================================================================*/
|
||||
/* I2C driver related settings. */
|
||||
/*===========================================================================*/
|
||||
|
||||
/**
|
||||
* @brief Enables the mutual exclusion APIs on the I2C bus.
|
||||
*/
|
||||
#if !defined(I2C_USE_MUTUAL_EXCLUSION) || defined(__DOXYGEN__)
|
||||
#define I2C_USE_MUTUAL_EXCLUSION TRUE
|
||||
#endif
|
||||
|
||||
/*===========================================================================*/
|
||||
/* MAC driver related settings. */
|
||||
/*===========================================================================*/
|
||||
|
||||
/**
|
||||
* @brief Enables the zero-copy API.
|
||||
*/
|
||||
#if !defined(MAC_USE_ZERO_COPY) || defined(__DOXYGEN__)
|
||||
#define MAC_USE_ZERO_COPY FALSE
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Enables an event sources for incoming packets.
|
||||
*/
|
||||
#if !defined(MAC_USE_EVENTS) || defined(__DOXYGEN__)
|
||||
#define MAC_USE_EVENTS TRUE
|
||||
#endif
|
||||
|
||||
/*===========================================================================*/
|
||||
/* MMC_SPI driver related settings. */
|
||||
/*===========================================================================*/
|
||||
|
||||
/**
|
||||
* @brief Delays insertions.
|
||||
* @details If enabled this options inserts delays into the MMC waiting
|
||||
* routines releasing some extra CPU time for the threads with
|
||||
* lower priority, this may slow down the driver a bit however.
|
||||
* This option is recommended also if the SPI driver does not
|
||||
* use a DMA channel and heavily loads the CPU.
|
||||
*/
|
||||
#if !defined(MMC_NICE_WAITING) || defined(__DOXYGEN__)
|
||||
#define MMC_NICE_WAITING TRUE
|
||||
#endif
|
||||
|
||||
/*===========================================================================*/
|
||||
/* SDC driver related settings. */
|
||||
/*===========================================================================*/
|
||||
|
||||
/**
|
||||
* @brief Number of initialization attempts before rejecting the card.
|
||||
* @note Attempts are performed at 10mS intervals.
|
||||
*/
|
||||
#if !defined(SDC_INIT_RETRY) || defined(__DOXYGEN__)
|
||||
#define SDC_INIT_RETRY 100
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Include support for MMC cards.
|
||||
* @note MMC support is not yet implemented so this option must be kept
|
||||
* at @p FALSE.
|
||||
*/
|
||||
#if !defined(SDC_MMC_SUPPORT) || defined(__DOXYGEN__)
|
||||
#define SDC_MMC_SUPPORT FALSE
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Delays insertions.
|
||||
* @details If enabled this options inserts delays into the MMC waiting
|
||||
* routines releasing some extra CPU time for the threads with
|
||||
* lower priority, this may slow down the driver a bit however.
|
||||
*/
|
||||
#if !defined(SDC_NICE_WAITING) || defined(__DOXYGEN__)
|
||||
#define SDC_NICE_WAITING TRUE
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief OCR initialization constant for V20 cards.
|
||||
*/
|
||||
#if !defined(SDC_INIT_OCR_V20) || defined(__DOXYGEN__)
|
||||
#define SDC_INIT_OCR_V20 0x50FF8000U
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief OCR initialization constant for non-V20 cards.
|
||||
*/
|
||||
#if !defined(SDC_INIT_OCR) || defined(__DOXYGEN__)
|
||||
#define SDC_INIT_OCR 0x80100000U
|
||||
#endif
|
||||
|
||||
/*===========================================================================*/
|
||||
/* SERIAL driver related settings. */
|
||||
/*===========================================================================*/
|
||||
|
||||
/**
|
||||
* @brief Default bit rate.
|
||||
* @details Configuration parameter, this is the baud rate selected for the
|
||||
* default configuration.
|
||||
*/
|
||||
#if !defined(SERIAL_DEFAULT_BITRATE) || defined(__DOXYGEN__)
|
||||
#define SERIAL_DEFAULT_BITRATE 38400
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Serial buffers size.
|
||||
* @details Configuration parameter, you can change the depth of the queue
|
||||
* buffers depending on the requirements of your application.
|
||||
* @note The default is 16 bytes for both the transmission and receive
|
||||
* buffers.
|
||||
*/
|
||||
#if !defined(SERIAL_BUFFERS_SIZE) || defined(__DOXYGEN__)
|
||||
#define SERIAL_BUFFERS_SIZE 16
|
||||
#endif
|
||||
|
||||
/*===========================================================================*/
|
||||
/* SERIAL_USB driver related setting. */
|
||||
/*===========================================================================*/
|
||||
|
||||
/**
|
||||
* @brief Serial over USB buffers size.
|
||||
* @details Configuration parameter, the buffer size must be a multiple of
|
||||
* the USB data endpoint maximum packet size.
|
||||
* @note The default is 256 bytes for both the transmission and receive
|
||||
* buffers.
|
||||
*/
|
||||
#if !defined(SERIAL_USB_BUFFERS_SIZE) || defined(__DOXYGEN__)
|
||||
#define SERIAL_USB_BUFFERS_SIZE 1
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Serial over USB number of buffers.
|
||||
* @note The default is 2 buffers.
|
||||
*/
|
||||
#if !defined(SERIAL_USB_BUFFERS_NUMBER) || defined(__DOXYGEN__)
|
||||
#define SERIAL_USB_BUFFERS_NUMBER 2
|
||||
#endif
|
||||
|
||||
/*===========================================================================*/
|
||||
/* SPI driver related settings. */
|
||||
/*===========================================================================*/
|
||||
|
||||
/**
|
||||
* @brief Enables synchronous APIs.
|
||||
* @note Disabling this option saves both code and data space.
|
||||
*/
|
||||
#if !defined(SPI_USE_WAIT) || defined(__DOXYGEN__)
|
||||
#define SPI_USE_WAIT TRUE
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Enables circular transfers APIs.
|
||||
* @note Disabling this option saves both code and data space.
|
||||
*/
|
||||
#if !defined(SPI_USE_CIRCULAR) || defined(__DOXYGEN__)
|
||||
#define SPI_USE_CIRCULAR FALSE
|
||||
#endif
|
||||
|
||||
|
||||
/**
|
||||
* @brief Enables the @p spiAcquireBus() and @p spiReleaseBus() APIs.
|
||||
* @note Disabling this option saves both code and data space.
|
||||
*/
|
||||
#if !defined(SPI_USE_MUTUAL_EXCLUSION) || defined(__DOXYGEN__)
|
||||
#define SPI_USE_MUTUAL_EXCLUSION TRUE
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Handling method for SPI CS line.
|
||||
* @note Disabling this option saves both code and data space.
|
||||
*/
|
||||
#if !defined(SPI_SELECT_MODE) || defined(__DOXYGEN__)
|
||||
#define SPI_SELECT_MODE SPI_SELECT_MODE_PAD
|
||||
#endif
|
||||
|
||||
/*===========================================================================*/
|
||||
/* UART driver related settings. */
|
||||
/*===========================================================================*/
|
||||
|
||||
/**
|
||||
* @brief Enables synchronous APIs.
|
||||
* @note Disabling this option saves both code and data space.
|
||||
*/
|
||||
#if !defined(UART_USE_WAIT) || defined(__DOXYGEN__)
|
||||
#define UART_USE_WAIT FALSE
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Enables the @p uartAcquireBus() and @p uartReleaseBus() APIs.
|
||||
* @note Disabling this option saves both code and data space.
|
||||
*/
|
||||
#if !defined(UART_USE_MUTUAL_EXCLUSION) || defined(__DOXYGEN__)
|
||||
#define UART_USE_MUTUAL_EXCLUSION FALSE
|
||||
#endif
|
||||
|
||||
/*===========================================================================*/
|
||||
/* USB driver related settings. */
|
||||
/*===========================================================================*/
|
||||
|
||||
/**
|
||||
* @brief Enables synchronous APIs.
|
||||
* @note Disabling this option saves both code and data space.
|
||||
*/
|
||||
#if !defined(USB_USE_WAIT) || defined(__DOXYGEN__)
|
||||
#define USB_USE_WAIT TRUE
|
||||
#endif
|
||||
|
||||
/*===========================================================================*/
|
||||
/* WSPI driver related settings. */
|
||||
/*===========================================================================*/
|
||||
|
||||
/**
|
||||
* @brief Enables synchronous APIs.
|
||||
* @note Disabling this option saves both code and data space.
|
||||
*/
|
||||
#if !defined(WSPI_USE_WAIT) || defined(__DOXYGEN__)
|
||||
#define WSPI_USE_WAIT TRUE
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Enables the @p wspiAcquireBus() and @p wspiReleaseBus() APIs.
|
||||
* @note Disabling this option saves both code and data space.
|
||||
*/
|
||||
#if !defined(WSPI_USE_MUTUAL_EXCLUSION) || defined(__DOXYGEN__)
|
||||
#define WSPI_USE_MUTUAL_EXCLUSION TRUE
|
||||
#endif
|
||||
|
||||
#endif /* HALCONF_H */
|
||||
|
||||
/** @} */
|
||||
@@ -0,0 +1,98 @@
|
||||
/* Copyright 2018 Jason Williams (Wilba)
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
#include QMK_KEYBOARD_H
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
/* Keymap BASE: (Base Layer) Default Layer
|
||||
* ,-------------------. ,-------------------------------------------------------------------.
|
||||
* |- | * | / |NmLK| |Esc| 1 | 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =|pipe| ~ | Pscr|
|
||||
* |-------------------| |-------------------------------------------------------------------|
|
||||
* | | 9 | 8 | 7 | |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]| BSPC | Del |
|
||||
* | + |--------------| |-------------------------------------------------------------------|
|
||||
* | | 6 | 5 | 4 | |Caps | A| S| D| F| G| H| J| K| L| ;| '|Return | Pgup|
|
||||
* |-------------------| |-------------------------------------------------------------------|
|
||||
* | | 3 | 2 | 1 | |Shift | Z| X| C| V| B| N| M| ,| .| /|Shift | Up | Pgdn|
|
||||
* | ENT|-------------------------------------------------------------------------------------|
|
||||
* | | . | 0 | | Ctrl | Win | Alt | Space | FN | Ctrl | |Left| Dn | Rght|
|
||||
* `------------------------------------------------------------------------------------------'
|
||||
*/
|
||||
[0] = LAYOUT_ext65(
|
||||
RGB_M_T, BL_INC , BL_DEC , BL_TOGG, 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_PSCR,
|
||||
RGB_TOG, KC_P9 , KC_P8 , KC_P7 , 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_PPLS, KC_P6 , KC_P5 , KC_P4 , 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_PGUP,
|
||||
KC_PENT, KC_P3 , KC_P2 , KC_P1 , 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_PGDN,
|
||||
KC_PENT, KC_PDOT, KC_P0 , KC_P0 , KC_LCTL, KC_LGUI, KC_LALT, KC_SPC , MO(1) , KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
|
||||
),
|
||||
|
||||
[1] = LAYOUT_ext65(
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RESET , 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_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_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
|
||||
),
|
||||
|
||||
[2] = LAYOUT_ext65(
|
||||
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_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_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
|
||||
),
|
||||
|
||||
[3] = LAYOUT_ext65(
|
||||
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_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_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
|
||||
)
|
||||
};
|
||||
|
||||
#ifdef OLED_DRIVER_ENABLE
|
||||
|
||||
void render_layer_state(void) {
|
||||
oled_write_ln(PSTR("LAYER"), false);
|
||||
oled_write_ln(PSTR("L1"), layer_state_is(1));
|
||||
oled_write_ln(PSTR("L2"), layer_state_is(2));
|
||||
oled_write_ln(PSTR("L3"), layer_state_is(3));
|
||||
oled_write_ln(PSTR(" "), false);
|
||||
}
|
||||
|
||||
void render_keylock_status(led_t led_state) {
|
||||
oled_write_ln(PSTR("Lock:"), false);
|
||||
oled_write(PSTR("N"), led_state.num_lock);
|
||||
oled_write(PSTR("C"), led_state.caps_lock);
|
||||
oled_write_ln(PSTR("S"), led_state.scroll_lock);
|
||||
oled_write_ln(PSTR(" "), false);
|
||||
}
|
||||
|
||||
void render_mod_status(uint8_t modifiers) {
|
||||
oled_write_ln(PSTR("Mods:"), false);
|
||||
oled_write(PSTR("S"), (modifiers & MOD_MASK_SHIFT));
|
||||
oled_write(PSTR("C"), (modifiers & MOD_MASK_CTRL));
|
||||
oled_write(PSTR("A"), (modifiers & MOD_MASK_ALT));
|
||||
oled_write_ln(PSTR("G"), (modifiers & MOD_MASK_GUI));
|
||||
oled_write_ln(PSTR(" "), false);
|
||||
}
|
||||
|
||||
void oled_task_user(void) {
|
||||
render_layer_state();
|
||||
render_keylock_status(host_keyboard_led_state());
|
||||
render_mod_status(get_mods()|get_oneshot_mods());
|
||||
}
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,2 @@
|
||||
# The Default Ext65Rev2 Layout
|
||||
|
||||
@@ -0,0 +1,98 @@
|
||||
/* Copyright 2018 Jason Williams (Wilba)
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
#include QMK_KEYBOARD_H
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
/* Keymap BASE: (Base Layer) Default Layer
|
||||
* ,-------------------. ,-------------------------------------------------------------------.
|
||||
* |- | * | / |NmLK| |Esc| 1 | 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =|pipe| ~ | Pscr|
|
||||
* |-------------------| |-------------------------------------------------------------------|
|
||||
* | | 9 | 8 | 7 | |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]| BSPC | Del |
|
||||
* | + |--------------| |-------------------------------------------------------------------|
|
||||
* | | 6 | 5 | 4 | |Caps | A| S| D| F| G| H| J| K| L| ;| '|Return | Pgup|
|
||||
* |-------------------| |-------------------------------------------------------------------|
|
||||
* | | 3 | 2 | 1 | |Shift | Z| X| C| V| B| N| M| ,| .| /|Shift | Up | Pgdn|
|
||||
* | ENT|-------------------------------------------------------------------------------------|
|
||||
* | | . | 0 | | Ctrl | Win | Alt | Space | FN | Ctrl | |Left| Dn | Rght|
|
||||
* `------------------------------------------------------------------------------------------'
|
||||
*/
|
||||
[0] = LAYOUT_ext65(
|
||||
RGB_M_T, BL_INC , BL_DEC , BL_TOGG, 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_PSCR,
|
||||
RGB_TOG, KC_P9 , KC_P8 , KC_P7 , 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_PPLS, KC_P6 , KC_P5 , KC_P4 , 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_PGUP,
|
||||
KC_PENT, KC_P3 , KC_P2 , KC_P1 , 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_PGDN,
|
||||
KC_PENT, KC_PDOT, KC_P0 , KC_P0 , KC_LCTL, KC_LGUI, KC_LALT, KC_SPC , MO(1) , KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
|
||||
),
|
||||
|
||||
[1] = LAYOUT_ext65(
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RESET , 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_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_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
|
||||
),
|
||||
|
||||
[2] = LAYOUT_ext65(
|
||||
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_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_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
|
||||
),
|
||||
|
||||
[3] = LAYOUT_ext65(
|
||||
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_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_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
|
||||
)
|
||||
};
|
||||
|
||||
#ifdef OLED_DRIVER_ENABLE
|
||||
|
||||
void render_layer_state(void) {
|
||||
oled_write_ln(PSTR("LAYER"), false);
|
||||
oled_write_ln(PSTR("L1"), layer_state_is(1));
|
||||
oled_write_ln(PSTR("L2"), layer_state_is(2));
|
||||
oled_write_ln(PSTR("L3"), layer_state_is(3));
|
||||
oled_write_ln(PSTR(" "), false);
|
||||
}
|
||||
|
||||
void render_keylock_status(led_t led_state) {
|
||||
oled_write_ln(PSTR("Lock:"), false);
|
||||
oled_write(PSTR("N"), led_state.num_lock);
|
||||
oled_write(PSTR("C"), led_state.caps_lock);
|
||||
oled_write_ln(PSTR("S"), led_state.scroll_lock);
|
||||
oled_write_ln(PSTR(" "), false);
|
||||
}
|
||||
|
||||
void render_mod_status(uint8_t modifiers) {
|
||||
oled_write_ln(PSTR("Mods:"), false);
|
||||
oled_write(PSTR("S"), (modifiers & MOD_MASK_SHIFT));
|
||||
oled_write(PSTR("C"), (modifiers & MOD_MASK_CTRL));
|
||||
oled_write(PSTR("A"), (modifiers & MOD_MASK_ALT));
|
||||
oled_write_ln(PSTR("G"), (modifiers & MOD_MASK_GUI));
|
||||
oled_write_ln(PSTR(" "), false);
|
||||
}
|
||||
|
||||
void oled_task_user(void) {
|
||||
render_layer_state();
|
||||
render_keylock_status(host_keyboard_led_state());
|
||||
render_mod_status(get_mods()|get_oneshot_mods());
|
||||
}
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,2 @@
|
||||
# The VIA Ext65Rev2 Layout
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
VIA_ENABLE = yes
|
||||
@@ -0,0 +1,176 @@
|
||||
/*
|
||||
ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
*/
|
||||
|
||||
#ifndef _MCUCONF_H_
|
||||
#define _MCUCONF_H_
|
||||
|
||||
/*
|
||||
* STM32F0xx drivers configuration.
|
||||
* The following settings override the default settings present in
|
||||
* the various device driver implementation headers.
|
||||
* Note that the settings for each driver only have effect if the whole
|
||||
* driver is enabled in halconf.h.
|
||||
*
|
||||
* IRQ priorities:
|
||||
* 3...0 Lowest...Highest.
|
||||
*
|
||||
* DMA priorities:
|
||||
* 0...3 Lowest...Highest.
|
||||
*/
|
||||
|
||||
#define STM32F0xx_MCUCONF
|
||||
// #define STM32F070xB
|
||||
|
||||
/*
|
||||
* HAL driver system settings.
|
||||
*/
|
||||
#define STM32_NO_INIT FALSE
|
||||
#define STM32_PVD_ENABLE FALSE
|
||||
#define STM32_PLS STM32_PLS_LEV0
|
||||
#define STM32_HSI_ENABLED TRUE
|
||||
#define STM32_HSI14_ENABLED TRUE
|
||||
#define STM32_HSI48_ENABLED FALSE
|
||||
#define STM32_LSI_ENABLED TRUE
|
||||
#define STM32_HSE_ENABLED FALSE
|
||||
#define STM32_LSE_ENABLED FALSE
|
||||
#define STM32_SW STM32_SW_PLL
|
||||
#define STM32_PLLSRC STM32_PLLSRC_HSI_DIV2
|
||||
#define STM32_PREDIV_VALUE 1
|
||||
#define STM32_PLLMUL_VALUE 12
|
||||
#define STM32_HPRE STM32_HPRE_DIV1
|
||||
#define STM32_PPRE STM32_PPRE_DIV1
|
||||
#define STM32_ADCSW STM32_ADCSW_HSI14
|
||||
#define STM32_ADCPRE STM32_ADCPRE_DIV4
|
||||
#define STM32_MCOSEL STM32_MCOSEL_NOCLOCK
|
||||
#define STM32_ADCPRE STM32_ADCPRE_DIV4
|
||||
#define STM32_ADCSW STM32_ADCSW_HSI14
|
||||
#define STM32_USBSW STM32_USBSW_HSI48
|
||||
#define STM32_CECSW STM32_CECSW_HSI
|
||||
#define STM32_I2C1SW STM32_I2C1SW_HSI
|
||||
#define STM32_USART1SW STM32_USART1SW_PCLK
|
||||
#define STM32_RTCSEL STM32_RTCSEL_LSI
|
||||
|
||||
/*
|
||||
* ADC driver system settings.
|
||||
*/
|
||||
#define STM32_ADC_USE_ADC1 FALSE
|
||||
#define STM32_ADC_ADC1_DMA_PRIORITY 2
|
||||
#define STM32_ADC_IRQ_PRIORITY 2
|
||||
#define STM32_ADC_ADC1_DMA_IRQ_PRIORITY 2
|
||||
|
||||
/*
|
||||
* EXT driver system settings.
|
||||
*/
|
||||
#define STM32_EXT_EXTI0_1_IRQ_PRIORITY 3
|
||||
#define STM32_EXT_EXTI2_3_IRQ_PRIORITY 3
|
||||
#define STM32_EXT_EXTI4_15_IRQ_PRIORITY 3
|
||||
#define STM32_EXT_EXTI16_IRQ_PRIORITY 3
|
||||
#define STM32_EXT_EXTI17_IRQ_PRIORITY 3
|
||||
|
||||
/*
|
||||
* GPT driver system settings.
|
||||
*/
|
||||
#define STM32_GPT_USE_TIM1 FALSE
|
||||
#define STM32_GPT_USE_TIM2 FALSE
|
||||
#define STM32_GPT_USE_TIM3 FALSE
|
||||
#define STM32_GPT_USE_TIM14 FALSE
|
||||
#define STM32_GPT_TIM1_IRQ_PRIORITY 2
|
||||
#define STM32_GPT_TIM2_IRQ_PRIORITY 2
|
||||
#define STM32_GPT_TIM3_IRQ_PRIORITY 2
|
||||
#define STM32_GPT_TIM14_IRQ_PRIORITY 2
|
||||
|
||||
/*
|
||||
* I2C driver system settings.
|
||||
*/
|
||||
#define STM32_I2C_USE_I2C1 TRUE
|
||||
#define STM32_I2C_USE_I2C2 FALSE
|
||||
#define STM32_I2C_BUSY_TIMEOUT 50
|
||||
#define STM32_I2C_I2C1_IRQ_PRIORITY 3
|
||||
#define STM32_I2C_I2C2_IRQ_PRIORITY 3
|
||||
#define STM32_I2C_USE_DMA TRUE
|
||||
#define STM32_I2C_I2C1_DMA_PRIORITY 1
|
||||
#define STM32_I2C_I2C2_DMA_PRIORITY 1
|
||||
#define STM32_I2C_I2C1_RX_DMA_STREAM STM32_DMA_STREAM_ID(1, 7)
|
||||
#define STM32_I2C_I2C1_TX_DMA_STREAM STM32_DMA_STREAM_ID(1, 6)
|
||||
#define STM32_I2C_DMA_ERROR_HOOK(i2cp) osalSysHalt("DMA failure")
|
||||
|
||||
/*
|
||||
* ICU driver system settings.
|
||||
*/
|
||||
#define STM32_ICU_USE_TIM1 FALSE
|
||||
#define STM32_ICU_USE_TIM2 FALSE
|
||||
#define STM32_ICU_USE_TIM3 FALSE
|
||||
#define STM32_ICU_TIM1_IRQ_PRIORITY 3
|
||||
#define STM32_ICU_TIM2_IRQ_PRIORITY 3
|
||||
#define STM32_ICU_TIM3_IRQ_PRIORITY 3
|
||||
|
||||
/*
|
||||
* PWM driver system settings.
|
||||
*/
|
||||
#define STM32_PWM_USE_ADVANCED FALSE
|
||||
#define STM32_PWM_USE_TIM1 FALSE
|
||||
#define STM32_PWM_USE_TIM2 FALSE
|
||||
#define STM32_PWM_USE_TIM3 TRUE
|
||||
#define STM32_PWM_TIM1_IRQ_PRIORITY 3
|
||||
#define STM32_PWM_TIM2_IRQ_PRIORITY 3
|
||||
#define STM32_PWM_TIM3_IRQ_PRIORITY 3
|
||||
|
||||
/*
|
||||
* SERIAL driver system settings.
|
||||
*/
|
||||
#define STM32_SERIAL_USE_USART1 FALSE
|
||||
#define STM32_SERIAL_USE_USART2 FALSE
|
||||
#define STM32_SERIAL_USART1_PRIORITY 3
|
||||
#define STM32_SERIAL_USART2_PRIORITY 3
|
||||
|
||||
/*
|
||||
* SPI driver system settings.
|
||||
*/
|
||||
#define STM32_SPI_USE_SPI1 FALSE
|
||||
#define STM32_SPI_USE_SPI2 TRUE
|
||||
#define STM32_SPI_SPI1_DMA_PRIORITY 1
|
||||
#define STM32_SPI_SPI2_DMA_PRIORITY 1
|
||||
#define STM32_SPI_SPI1_IRQ_PRIORITY 2
|
||||
#define STM32_SPI_SPI2_IRQ_PRIORITY 2
|
||||
#define STM32_SPI_SPI2_RX_DMA_STREAM STM32_DMA_STREAM_ID(1, 4)
|
||||
#define STM32_SPI_SPI2_TX_DMA_STREAM STM32_DMA_STREAM_ID(1, 5)
|
||||
#define STM32_SPI_DMA_ERROR_HOOK(spip) osalSysHalt("DMA failure")
|
||||
|
||||
/*
|
||||
* ST driver system settings.
|
||||
*/
|
||||
#define STM32_ST_IRQ_PRIORITY 2
|
||||
#define STM32_ST_USE_TIMER 2
|
||||
|
||||
/*
|
||||
* UART driver system settings.
|
||||
*/
|
||||
#define STM32_UART_USE_USART1 FALSE
|
||||
#define STM32_UART_USE_USART2 FALSE
|
||||
#define STM32_UART_USART1_IRQ_PRIORITY 3
|
||||
#define STM32_UART_USART2_IRQ_PRIORITY 3
|
||||
#define STM32_UART_USART1_DMA_PRIORITY 0
|
||||
#define STM32_UART_USART2_DMA_PRIORITY 0
|
||||
#define STM32_UART_DMA_ERROR_HOOK(uartp) osalSysHalt("DMA failure")
|
||||
|
||||
/*
|
||||
* USB driver system settings.
|
||||
*/
|
||||
#define STM32_USB_USE_USB1 TRUE
|
||||
#define STM32_USB_LOW_POWER_ON_SUSPEND FALSE
|
||||
#define STM32_USB_USB1_LP_IRQ_PRIORITY 3
|
||||
|
||||
#endif /* _MCUCONF_H_ */
|
||||
@@ -0,0 +1,13 @@
|
||||
# Ext65Rev2
|
||||
|
||||
Ext65Rev2 Keyboard
|
||||
|
||||
* Keyboard Maintainer: [Xelus22](https://github.com/Xelus22)
|
||||
* Hardware Supported: Ext65Rev2
|
||||
* Hardware Availability: [Keyboard Treehouse](https://keyboardtreehouse.com/collections/all/products/ext65-r2-pcb)
|
||||
|
||||
Make example for this keyboard (after setting up your build environment):
|
||||
|
||||
make aeboards/ext65/rev2:default
|
||||
|
||||
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).
|
||||
@@ -0,0 +1,45 @@
|
||||
#include "rev2.h"
|
||||
|
||||
#ifdef OLED_DRIVER_ENABLE
|
||||
void board_init(void) {
|
||||
SYSCFG->CFGR1 |= SYSCFG_CFGR1_I2C1_DMA_RMP;
|
||||
SYSCFG->CFGR1 &= ~(SYSCFG_CFGR1_SPI2_DMA_RMP);
|
||||
}
|
||||
|
||||
oled_rotation_t oled_init_user(oled_rotation_t rotation) {
|
||||
return OLED_ROTATION_90; // rotates the display 90 degrees
|
||||
}
|
||||
|
||||
#else
|
||||
|
||||
void keyboard_pre_init_user(void) {
|
||||
// Call the keyboard pre init code.
|
||||
// Set our LED pins as output
|
||||
setPinOutput(B4);
|
||||
setPinOutput(B3);
|
||||
setPinOutput(A15);
|
||||
setPinOutput(A14);
|
||||
}
|
||||
|
||||
bool led_update_kb(led_t led_state) {
|
||||
bool res = led_update_user(led_state);
|
||||
if(res) {
|
||||
writePin(B4, led_state.num_lock);
|
||||
writePin(B3, led_state.caps_lock);
|
||||
writePin(A15, led_state.scroll_lock);
|
||||
}
|
||||
return res;
|
||||
}
|
||||
|
||||
layer_state_t layer_state_set_kb(layer_state_t state) {
|
||||
switch (get_highest_layer(state)) {
|
||||
case 1:
|
||||
writePinHigh(A14);
|
||||
break;
|
||||
default: // for any other layers, or the default layer
|
||||
writePinLow(A14);
|
||||
break;
|
||||
}
|
||||
return layer_state_set_user(state);
|
||||
}
|
||||
#endif
|
||||
@@ -0,0 +1,24 @@
|
||||
#pragma once
|
||||
|
||||
#include "quantum.h"
|
||||
|
||||
#define ____ KC_NO
|
||||
|
||||
#define LAYOUT_ext65( \
|
||||
K000, K100, K001, K101, K002, K102, K003, K103, K004, K104, K005, K105, K006, K106, K007, K107, K008, K108, K508, K009, \
|
||||
K200, K300, K201, K301, K202, K302, K203, K303, K204, K304, K205, K305, K206, K306, K207, K307, K208, K308, K209, \
|
||||
K400, K500, K401, K501, K402, K502, K403, K503, K404, K504, K405, K505, K406, K506, K407, K507, K408, K409, \
|
||||
K600, K700, K601, K701, K602, K702, K603, K703, K604, K704, K605, K705, K606, K706, K607, K708, K608, K709, \
|
||||
K800, K900, K801, K901, K802, K902, K803, K805, K906, K807, K908, K808, K909 \
|
||||
) { \
|
||||
{ K000, K001, K002, K003, K004, K005, K006, K007, K008, K009 }, \
|
||||
{ K100, K101, K102, K103, K104, K105, K106, K107, K108, ____ }, \
|
||||
{ K200, K201, K202, K203, K204, K205, K206, K207, K208, K209 }, \
|
||||
{ K300, K301, K302, K303, K304, K305, K306, K307, K308, ____ }, \
|
||||
{ K400, K401, K402, K403, K404, K405, K406, K407, K408, K409 }, \
|
||||
{ K500, K501, K502, K503, K504, K505, K506, K507, K508, ____ }, \
|
||||
{ K600, K601, K602, K603, K604, K605, K606, K607, K608, ____ }, \
|
||||
{ K700, K701, K702, K703, K704, K705, K706, ____, K708, K709 }, \
|
||||
{ K800, K801, K802, K803, ____, K805, ____, K807, K808, ____ }, \
|
||||
{ K900, K901, K902, ____, ____, ____, K906, ____, K908, K909 } \
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
# MCU name
|
||||
MCU = STM32F072
|
||||
|
||||
# Build Options
|
||||
# comment out to disable the options.
|
||||
#
|
||||
BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration
|
||||
MOUSEKEY_ENABLE = yes # Mouse keys
|
||||
EXTRAKEY_ENABLE = yes # Audio control and System control
|
||||
CONSOLE_ENABLE = yes # Console for debug
|
||||
COMMAND_ENABLE = no # Commands for debug and configuration
|
||||
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
|
||||
SLEEP_LED_ENABLE = yes # 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
|
||||
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
|
||||
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
|
||||
BLUETOOTH_ENABLE = no # Enable Bluetooth
|
||||
AUDIO_ENABLE = no # Audio output
|
||||
WS2812_DRIVER = spi
|
||||
|
||||
# Enter lower-power sleep mode when on the ChibiOS idle thread
|
||||
OPT_DEFS += -DCORTEX_ENABLE_WFI_IDLE=TRUE
|
||||
@@ -0,0 +1,7 @@
|
||||
/* Address for jumping to bootloader on STM32 chips. */
|
||||
/* It is chip dependent, the correct number can be looked up here (page 175):
|
||||
* http://www.st.com/web/en/resource/technical/document/application_note/CD00167594.pdf
|
||||
* This also requires a patch to chibios:
|
||||
* <tmk_dir>/tmk_core/tool/chibios/ch-bootloader-jump.patch
|
||||
*/
|
||||
#define STM32_BOOTLOADER_ADDRESS 0x1FFFC800
|
||||
@@ -0,0 +1,714 @@
|
||||
/*
|
||||
ChibiOS - Copyright (C) 2006..2018 Giovanni Di Sirio
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
*/
|
||||
|
||||
/**
|
||||
* @file rt/templates/chconf.h
|
||||
* @brief Configuration file template.
|
||||
* @details A copy of this file must be placed in each project directory, it
|
||||
* contains the application specific kernel settings.
|
||||
*
|
||||
* @addtogroup config
|
||||
* @details Kernel related settings and hooks.
|
||||
* @{
|
||||
*/
|
||||
|
||||
#ifndef CHCONF_H
|
||||
#define CHCONF_H
|
||||
|
||||
#define _CHIBIOS_RT_CONF_
|
||||
#define _CHIBIOS_RT_CONF_VER_6_0_
|
||||
|
||||
/*===========================================================================*/
|
||||
/**
|
||||
* @name System timers settings
|
||||
* @{
|
||||
*/
|
||||
/*===========================================================================*/
|
||||
|
||||
/**
|
||||
* @brief System time counter resolution.
|
||||
* @note Allowed values are 16 or 32 bits.
|
||||
*/
|
||||
#if !defined(CH_CFG_ST_RESOLUTION)
|
||||
#define CH_CFG_ST_RESOLUTION 32
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief System tick frequency.
|
||||
* @details Frequency of the system timer that drives the system ticks. This
|
||||
* setting also defines the system tick time unit.
|
||||
*/
|
||||
#if !defined(CH_CFG_ST_FREQUENCY)
|
||||
#define CH_CFG_ST_FREQUENCY 10000
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Time intervals data size.
|
||||
* @note Allowed values are 16, 32 or 64 bits.
|
||||
*/
|
||||
#if !defined(CH_CFG_INTERVALS_SIZE)
|
||||
#define CH_CFG_INTERVALS_SIZE 32
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Time types data size.
|
||||
* @note Allowed values are 16 or 32 bits.
|
||||
*/
|
||||
#if !defined(CH_CFG_TIME_TYPES_SIZE)
|
||||
#define CH_CFG_TIME_TYPES_SIZE 32
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Time delta constant for the tick-less mode.
|
||||
* @note If this value is zero then the system uses the classic
|
||||
* periodic tick. This value represents the minimum number
|
||||
* of ticks that is safe to specify in a timeout directive.
|
||||
* The value one is not valid, timeouts are rounded up to
|
||||
* this value.
|
||||
*/
|
||||
#if !defined(CH_CFG_ST_TIMEDELTA)
|
||||
#define CH_CFG_ST_TIMEDELTA 2
|
||||
#endif
|
||||
|
||||
/** @} */
|
||||
|
||||
/*===========================================================================*/
|
||||
/**
|
||||
* @name Kernel parameters and options
|
||||
* @{
|
||||
*/
|
||||
/*===========================================================================*/
|
||||
|
||||
/**
|
||||
* @brief Round robin interval.
|
||||
* @details This constant is the number of system ticks allowed for the
|
||||
* threads before preemption occurs. Setting this value to zero
|
||||
* disables the preemption for threads with equal priority and the
|
||||
* round robin becomes cooperative. Note that higher priority
|
||||
* threads can still preempt, the kernel is always preemptive.
|
||||
* @note Disabling the round robin preemption makes the kernel more compact
|
||||
* and generally faster.
|
||||
* @note The round robin preemption is not supported in tickless mode and
|
||||
* must be set to zero in that case.
|
||||
*/
|
||||
#if !defined(CH_CFG_TIME_QUANTUM)
|
||||
#define CH_CFG_TIME_QUANTUM 0
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Managed RAM size.
|
||||
* @details Size of the RAM area to be managed by the OS. If set to zero
|
||||
* then the whole available RAM is used. The core memory is made
|
||||
* available to the heap allocator and/or can be used directly through
|
||||
* the simplified core memory allocator.
|
||||
*
|
||||
* @note In order to let the OS manage the whole RAM the linker script must
|
||||
* provide the @p __heap_base__ and @p __heap_end__ symbols.
|
||||
* @note Requires @p CH_CFG_USE_MEMCORE.
|
||||
*/
|
||||
#if !defined(CH_CFG_MEMCORE_SIZE)
|
||||
#define CH_CFG_MEMCORE_SIZE 0
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Idle thread automatic spawn suppression.
|
||||
* @details When this option is activated the function @p chSysInit()
|
||||
* does not spawn the idle thread. The application @p main()
|
||||
* function becomes the idle thread and must implement an
|
||||
* infinite loop.
|
||||
*/
|
||||
#if !defined(CH_CFG_NO_IDLE_THREAD)
|
||||
#define CH_CFG_NO_IDLE_THREAD FALSE
|
||||
#endif
|
||||
|
||||
/** @} */
|
||||
|
||||
/*===========================================================================*/
|
||||
/**
|
||||
* @name Performance options
|
||||
* @{
|
||||
*/
|
||||
/*===========================================================================*/
|
||||
|
||||
/**
|
||||
* @brief OS optimization.
|
||||
* @details If enabled then time efficient rather than space efficient code
|
||||
* is used when two possible implementations exist.
|
||||
*
|
||||
* @note This is not related to the compiler optimization options.
|
||||
* @note The default is @p TRUE.
|
||||
*/
|
||||
#if !defined(CH_CFG_OPTIMIZE_SPEED)
|
||||
#define CH_CFG_OPTIMIZE_SPEED FALSE
|
||||
#endif
|
||||
|
||||
/** @} */
|
||||
|
||||
/*===========================================================================*/
|
||||
/**
|
||||
* @name Subsystem options
|
||||
* @{
|
||||
*/
|
||||
/*===========================================================================*/
|
||||
|
||||
/**
|
||||
* @brief Time Measurement APIs.
|
||||
* @details If enabled then the time measurement APIs are included in
|
||||
* the kernel.
|
||||
*
|
||||
* @note The default is @p TRUE.
|
||||
*/
|
||||
#if !defined(CH_CFG_USE_TM)
|
||||
#define CH_CFG_USE_TM FALSE
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Threads registry APIs.
|
||||
* @details If enabled then the registry APIs are included in the kernel.
|
||||
*
|
||||
* @note The default is @p TRUE.
|
||||
*/
|
||||
#if !defined(CH_CFG_USE_REGISTRY)
|
||||
#define CH_CFG_USE_REGISTRY TRUE
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Threads synchronization APIs.
|
||||
* @details If enabled then the @p chThdWait() function is included in
|
||||
* the kernel.
|
||||
*
|
||||
* @note The default is @p TRUE.
|
||||
*/
|
||||
#if !defined(CH_CFG_USE_WAITEXIT)
|
||||
#define CH_CFG_USE_WAITEXIT TRUE
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Semaphores APIs.
|
||||
* @details If enabled then the Semaphores APIs are included in the kernel.
|
||||
*
|
||||
* @note The default is @p TRUE.
|
||||
*/
|
||||
#if !defined(CH_CFG_USE_SEMAPHORES)
|
||||
#define CH_CFG_USE_SEMAPHORES TRUE
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Semaphores queuing mode.
|
||||
* @details If enabled then the threads are enqueued on semaphores by
|
||||
* priority rather than in FIFO order.
|
||||
*
|
||||
* @note The default is @p FALSE. Enable this if you have special
|
||||
* requirements.
|
||||
* @note Requires @p CH_CFG_USE_SEMAPHORES.
|
||||
*/
|
||||
#if !defined(CH_CFG_USE_SEMAPHORES_PRIORITY)
|
||||
#define CH_CFG_USE_SEMAPHORES_PRIORITY FALSE
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Mutexes APIs.
|
||||
* @details If enabled then the mutexes APIs are included in the kernel.
|
||||
*
|
||||
* @note The default is @p TRUE.
|
||||
*/
|
||||
#if !defined(CH_CFG_USE_MUTEXES)
|
||||
#define CH_CFG_USE_MUTEXES TRUE
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Enables recursive behavior on mutexes.
|
||||
* @note Recursive mutexes are heavier and have an increased
|
||||
* memory footprint.
|
||||
*
|
||||
* @note The default is @p FALSE.
|
||||
* @note Requires @p CH_CFG_USE_MUTEXES.
|
||||
*/
|
||||
#if !defined(CH_CFG_USE_MUTEXES_RECURSIVE)
|
||||
#define CH_CFG_USE_MUTEXES_RECURSIVE FALSE
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Conditional Variables APIs.
|
||||
* @details If enabled then the conditional variables APIs are included
|
||||
* in the kernel.
|
||||
*
|
||||
* @note The default is @p TRUE.
|
||||
* @note Requires @p CH_CFG_USE_MUTEXES.
|
||||
*/
|
||||
#if !defined(CH_CFG_USE_CONDVARS)
|
||||
#define CH_CFG_USE_CONDVARS TRUE
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Conditional Variables APIs with timeout.
|
||||
* @details If enabled then the conditional variables APIs with timeout
|
||||
* specification are included in the kernel.
|
||||
*
|
||||
* @note The default is @p TRUE.
|
||||
* @note Requires @p CH_CFG_USE_CONDVARS.
|
||||
*/
|
||||
#if !defined(CH_CFG_USE_CONDVARS_TIMEOUT)
|
||||
#define CH_CFG_USE_CONDVARS_TIMEOUT FALSE
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Events Flags APIs.
|
||||
* @details If enabled then the event flags APIs are included in the kernel.
|
||||
*
|
||||
* @note The default is @p TRUE.
|
||||
*/
|
||||
#if !defined(CH_CFG_USE_EVENTS)
|
||||
#define CH_CFG_USE_EVENTS TRUE
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Events Flags APIs with timeout.
|
||||
* @details If enabled then the events APIs with timeout specification
|
||||
* are included in the kernel.
|
||||
*
|
||||
* @note The default is @p TRUE.
|
||||
* @note Requires @p CH_CFG_USE_EVENTS.
|
||||
*/
|
||||
#if !defined(CH_CFG_USE_EVENTS_TIMEOUT)
|
||||
#define CH_CFG_USE_EVENTS_TIMEOUT TRUE
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Synchronous Messages APIs.
|
||||
* @details If enabled then the synchronous messages APIs are included
|
||||
* in the kernel.
|
||||
*
|
||||
* @note The default is @p TRUE.
|
||||
*/
|
||||
#if !defined(CH_CFG_USE_MESSAGES)
|
||||
#define CH_CFG_USE_MESSAGES TRUE
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Synchronous Messages queuing mode.
|
||||
* @details If enabled then messages are served by priority rather than in
|
||||
* FIFO order.
|
||||
*
|
||||
* @note The default is @p FALSE. Enable this if you have special
|
||||
* requirements.
|
||||
* @note Requires @p CH_CFG_USE_MESSAGES.
|
||||
*/
|
||||
#if !defined(CH_CFG_USE_MESSAGES_PRIORITY)
|
||||
#define CH_CFG_USE_MESSAGES_PRIORITY FALSE
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Mailboxes APIs.
|
||||
* @details If enabled then the asynchronous messages (mailboxes) APIs are
|
||||
* included in the kernel.
|
||||
*
|
||||
* @note The default is @p TRUE.
|
||||
* @note Requires @p CH_CFG_USE_SEMAPHORES.
|
||||
*/
|
||||
#if !defined(CH_CFG_USE_MAILBOXES)
|
||||
#define CH_CFG_USE_MAILBOXES TRUE
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Core Memory Manager APIs.
|
||||
* @details If enabled then the core memory manager APIs are included
|
||||
* in the kernel.
|
||||
*
|
||||
* @note The default is @p TRUE.
|
||||
*/
|
||||
#if !defined(CH_CFG_USE_MEMCORE)
|
||||
#define CH_CFG_USE_MEMCORE TRUE
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Heap Allocator APIs.
|
||||
* @details If enabled then the memory heap allocator APIs are included
|
||||
* in the kernel.
|
||||
*
|
||||
* @note The default is @p TRUE.
|
||||
* @note Requires @p CH_CFG_USE_MEMCORE and either @p CH_CFG_USE_MUTEXES or
|
||||
* @p CH_CFG_USE_SEMAPHORES.
|
||||
* @note Mutexes are recommended.
|
||||
*/
|
||||
#if !defined(CH_CFG_USE_HEAP)
|
||||
#define CH_CFG_USE_HEAP FALSE
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Memory Pools Allocator APIs.
|
||||
* @details If enabled then the memory pools allocator APIs are included
|
||||
* in the kernel.
|
||||
*
|
||||
* @note The default is @p TRUE.
|
||||
*/
|
||||
#if !defined(CH_CFG_USE_MEMPOOLS)
|
||||
#define CH_CFG_USE_MEMPOOLS FALSE
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Objects FIFOs APIs.
|
||||
* @details If enabled then the objects FIFOs APIs are included
|
||||
* in the kernel.
|
||||
*
|
||||
* @note The default is @p TRUE.
|
||||
*/
|
||||
#if !defined(CH_CFG_USE_OBJ_FIFOS)
|
||||
#define CH_CFG_USE_OBJ_FIFOS FALSE
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Pipes APIs.
|
||||
* @details If enabled then the pipes APIs are included
|
||||
* in the kernel.
|
||||
*
|
||||
* @note The default is @p TRUE.
|
||||
*/
|
||||
#if !defined(CH_CFG_USE_PIPES)
|
||||
#define CH_CFG_USE_PIPES FALSE
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Dynamic Threads APIs.
|
||||
* @details If enabled then the dynamic threads creation APIs are included
|
||||
* in the kernel.
|
||||
*
|
||||
* @note The default is @p TRUE.
|
||||
* @note Requires @p CH_CFG_USE_WAITEXIT.
|
||||
* @note Requires @p CH_CFG_USE_HEAP and/or @p CH_CFG_USE_MEMPOOLS.
|
||||
*/
|
||||
#if !defined(CH_CFG_USE_DYNAMIC)
|
||||
#define CH_CFG_USE_DYNAMIC FALSE
|
||||
#endif
|
||||
|
||||
/** @} */
|
||||
|
||||
/*===========================================================================*/
|
||||
/**
|
||||
* @name Objects factory options
|
||||
* @{
|
||||
*/
|
||||
/*===========================================================================*/
|
||||
|
||||
/**
|
||||
* @brief Objects Factory APIs.
|
||||
* @details If enabled then the objects factory APIs are included in the
|
||||
* kernel.
|
||||
*
|
||||
* @note The default is @p FALSE.
|
||||
*/
|
||||
#if !defined(CH_CFG_USE_FACTORY)
|
||||
#define CH_CFG_USE_FACTORY FALSE
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Maximum length for object names.
|
||||
* @details If the specified length is zero then the name is stored by
|
||||
* pointer but this could have unintended side effects.
|
||||
*/
|
||||
#if !defined(CH_CFG_FACTORY_MAX_NAMES_LENGTH)
|
||||
#define CH_CFG_FACTORY_MAX_NAMES_LENGTH 8
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Enables the registry of generic objects.
|
||||
*/
|
||||
#if !defined(CH_CFG_FACTORY_OBJECTS_REGISTRY)
|
||||
#define CH_CFG_FACTORY_OBJECTS_REGISTRY FALSE
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Enables factory for generic buffers.
|
||||
*/
|
||||
#if !defined(CH_CFG_FACTORY_GENERIC_BUFFERS)
|
||||
#define CH_CFG_FACTORY_GENERIC_BUFFERS FALSE
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Enables factory for semaphores.
|
||||
*/
|
||||
#if !defined(CH_CFG_FACTORY_SEMAPHORES)
|
||||
#define CH_CFG_FACTORY_SEMAPHORES FALSE
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Enables factory for mailboxes.
|
||||
*/
|
||||
#if !defined(CH_CFG_FACTORY_MAILBOXES)
|
||||
#define CH_CFG_FACTORY_MAILBOXES FALSE
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Enables factory for objects FIFOs.
|
||||
*/
|
||||
#if !defined(CH_CFG_FACTORY_OBJ_FIFOS)
|
||||
#define CH_CFG_FACTORY_OBJ_FIFOS FALSE
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Enables factory for Pipes.
|
||||
*/
|
||||
#if !defined(CH_CFG_FACTORY_PIPES) || defined(__DOXYGEN__)
|
||||
#define CH_CFG_FACTORY_PIPES FALSE
|
||||
#endif
|
||||
|
||||
/** @} */
|
||||
|
||||
/*===========================================================================*/
|
||||
/**
|
||||
* @name Debug options
|
||||
* @{
|
||||
*/
|
||||
/*===========================================================================*/
|
||||
|
||||
/**
|
||||
* @brief Debug option, kernel statistics.
|
||||
*
|
||||
* @note The default is @p FALSE.
|
||||
*/
|
||||
#if !defined(CH_DBG_STATISTICS)
|
||||
#define CH_DBG_STATISTICS FALSE
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Debug option, system state check.
|
||||
* @details If enabled the correct call protocol for system APIs is checked
|
||||
* at runtime.
|
||||
*
|
||||
* @note The default is @p FALSE.
|
||||
*/
|
||||
#if !defined(CH_DBG_SYSTEM_STATE_CHECK)
|
||||
#define CH_DBG_SYSTEM_STATE_CHECK FALSE
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Debug option, parameters checks.
|
||||
* @details If enabled then the checks on the API functions input
|
||||
* parameters are activated.
|
||||
*
|
||||
* @note The default is @p FALSE.
|
||||
*/
|
||||
#if !defined(CH_DBG_ENABLE_CHECKS)
|
||||
#define CH_DBG_ENABLE_CHECKS FALSE
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Debug option, consistency checks.
|
||||
* @details If enabled then all the assertions in the kernel code are
|
||||
* activated. This includes consistency checks inside the kernel,
|
||||
* runtime anomalies and port-defined checks.
|
||||
*
|
||||
* @note The default is @p FALSE.
|
||||
*/
|
||||
#if !defined(CH_DBG_ENABLE_ASSERTS)
|
||||
#define CH_DBG_ENABLE_ASSERTS FALSE
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Debug option, trace buffer.
|
||||
* @details If enabled then the trace buffer is activated.
|
||||
*
|
||||
* @note The default is @p CH_DBG_TRACE_MASK_DISABLED.
|
||||
*/
|
||||
#if !defined(CH_DBG_TRACE_MASK)
|
||||
#define CH_DBG_TRACE_MASK CH_DBG_TRACE_MASK_DISABLED
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Trace buffer entries.
|
||||
* @note The trace buffer is only allocated if @p CH_DBG_TRACE_MASK is
|
||||
* different from @p CH_DBG_TRACE_MASK_DISABLED.
|
||||
*/
|
||||
#if !defined(CH_DBG_TRACE_BUFFER_SIZE)
|
||||
#define CH_DBG_TRACE_BUFFER_SIZE 128
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Debug option, stack checks.
|
||||
* @details If enabled then a runtime stack check is performed.
|
||||
*
|
||||
* @note The default is @p FALSE.
|
||||
* @note The stack check is performed in a architecture/port dependent way.
|
||||
* It may not be implemented or some ports.
|
||||
* @note The default failure mode is to halt the system with the global
|
||||
* @p panic_msg variable set to @p NULL.
|
||||
*/
|
||||
#if !defined(CH_DBG_ENABLE_STACK_CHECK)
|
||||
#define CH_DBG_ENABLE_STACK_CHECK FALSE
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Debug option, stacks initialization.
|
||||
* @details If enabled then the threads working area is filled with a byte
|
||||
* value when a thread is created. This can be useful for the
|
||||
* runtime measurement of the used stack.
|
||||
*
|
||||
* @note The default is @p FALSE.
|
||||
*/
|
||||
#if !defined(CH_DBG_FILL_THREADS)
|
||||
#define CH_DBG_FILL_THREADS FALSE
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Debug option, threads profiling.
|
||||
* @details If enabled then a field is added to the @p thread_t structure that
|
||||
* counts the system ticks occurred while executing the thread.
|
||||
*
|
||||
* @note The default is @p FALSE.
|
||||
* @note This debug option is not currently compatible with the
|
||||
* tickless mode.
|
||||
*/
|
||||
#if !defined(CH_DBG_THREADS_PROFILING)
|
||||
#define CH_DBG_THREADS_PROFILING FALSE
|
||||
#endif
|
||||
|
||||
/** @} */
|
||||
|
||||
/*===========================================================================*/
|
||||
/**
|
||||
* @name Kernel hooks
|
||||
* @{
|
||||
*/
|
||||
/*===========================================================================*/
|
||||
|
||||
/**
|
||||
* @brief System structure extension.
|
||||
* @details User fields added to the end of the @p ch_system_t structure.
|
||||
*/
|
||||
#define CH_CFG_SYSTEM_EXTRA_FIELDS \
|
||||
/* Add threads custom fields here.*/
|
||||
|
||||
/**
|
||||
* @brief System initialization hook.
|
||||
* @details User initialization code added to the @p chSysInit() function
|
||||
* just before interrupts are enabled globally.
|
||||
*/
|
||||
#define CH_CFG_SYSTEM_INIT_HOOK() { \
|
||||
/* Add threads initialization code here.*/ \
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Threads descriptor structure extension.
|
||||
* @details User fields added to the end of the @p thread_t structure.
|
||||
*/
|
||||
#define CH_CFG_THREAD_EXTRA_FIELDS \
|
||||
/* Add threads custom fields here.*/
|
||||
|
||||
/**
|
||||
* @brief Threads initialization hook.
|
||||
* @details User initialization code added to the @p _thread_init() function.
|
||||
*
|
||||
* @note It is invoked from within @p _thread_init() and implicitly from all
|
||||
* the threads creation APIs.
|
||||
*/
|
||||
#define CH_CFG_THREAD_INIT_HOOK(tp) { \
|
||||
/* Add threads initialization code here.*/ \
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Threads finalization hook.
|
||||
* @details User finalization code added to the @p chThdExit() API.
|
||||
*/
|
||||
#define CH_CFG_THREAD_EXIT_HOOK(tp) { \
|
||||
/* Add threads finalization code here.*/ \
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Context switch hook.
|
||||
* @details This hook is invoked just before switching between threads.
|
||||
*/
|
||||
#define CH_CFG_CONTEXT_SWITCH_HOOK(ntp, otp) { \
|
||||
/* Context switch code here.*/ \
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief ISR enter hook.
|
||||
*/
|
||||
#define CH_CFG_IRQ_PROLOGUE_HOOK() { \
|
||||
/* IRQ prologue code here.*/ \
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief ISR exit hook.
|
||||
*/
|
||||
#define CH_CFG_IRQ_EPILOGUE_HOOK() { \
|
||||
/* IRQ epilogue code here.*/ \
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Idle thread enter hook.
|
||||
* @note This hook is invoked within a critical zone, no OS functions
|
||||
* should be invoked from here.
|
||||
* @note This macro can be used to activate a power saving mode.
|
||||
*/
|
||||
#define CH_CFG_IDLE_ENTER_HOOK() { \
|
||||
/* Idle-enter code here.*/ \
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Idle thread leave hook.
|
||||
* @note This hook is invoked within a critical zone, no OS functions
|
||||
* should be invoked from here.
|
||||
* @note This macro can be used to deactivate a power saving mode.
|
||||
*/
|
||||
#define CH_CFG_IDLE_LEAVE_HOOK() { \
|
||||
/* Idle-leave code here.*/ \
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Idle Loop hook.
|
||||
* @details This hook is continuously invoked by the idle thread loop.
|
||||
*/
|
||||
#define CH_CFG_IDLE_LOOP_HOOK() { \
|
||||
/* Idle loop code here.*/ \
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief System tick event hook.
|
||||
* @details This hook is invoked in the system tick handler immediately
|
||||
* after processing the virtual timers queue.
|
||||
*/
|
||||
#define CH_CFG_SYSTEM_TICK_HOOK() { \
|
||||
/* System tick event code here.*/ \
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief System halt hook.
|
||||
* @details This hook is invoked in case to a system halting error before
|
||||
* the system is halted.
|
||||
*/
|
||||
#define CH_CFG_SYSTEM_HALT_HOOK(reason) { \
|
||||
/* System halt code here.*/ \
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Trace hook.
|
||||
* @details This hook is invoked each time a new record is written in the
|
||||
* trace buffer.
|
||||
*/
|
||||
#define CH_CFG_TRACE_HOOK(tep) { \
|
||||
/* Trace code here.*/ \
|
||||
}
|
||||
|
||||
/** @} */
|
||||
|
||||
/*===========================================================================*/
|
||||
/* Port-specific settings (override port settings defaulted in chcore.h). */
|
||||
/*===========================================================================*/
|
||||
|
||||
#endif /* CHCONF_H */
|
||||
|
||||
/** @} */
|
||||
@@ -0,0 +1,63 @@
|
||||
/*
|
||||
Copyright 2015 Jun Wako <wakojun@gmail.com>
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
/* USB Device descriptor parameter */
|
||||
#define VENDOR_ID 0xA103
|
||||
#define PRODUCT_ID 0x0015
|
||||
#define DEVICE_VER 0x0001
|
||||
#define MANUFACTURER ai03 Design Studio
|
||||
#define PRODUCT Vega
|
||||
|
||||
/* key matrix size */
|
||||
#define MATRIX_ROWS 5
|
||||
#define MATRIX_COLS 15
|
||||
|
||||
#define MATRIX_COL_PINS { B5, A3, A9, A8, B15, B14, B13, B12, B11, B10, B2, B1, B0, A7, A6 }
|
||||
#define MATRIX_ROW_PINS { A1, A2, B3, A15, A10 }
|
||||
#define DIODE_DIRECTION COL2ROW
|
||||
|
||||
/* define if matrix has ghost */
|
||||
//#define MATRIX_HAS_GHOST
|
||||
|
||||
/* 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
|
||||
@@ -0,0 +1,525 @@
|
||||
/*
|
||||
ChibiOS - Copyright (C) 2006..2018 Giovanni Di Sirio
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
*/
|
||||
|
||||
/**
|
||||
* @file templates/halconf.h
|
||||
* @brief HAL configuration header.
|
||||
* @details HAL configuration file, this file allows to enable or disable the
|
||||
* various device drivers from your application. You may also use
|
||||
* this file in order to override the device drivers default settings.
|
||||
*
|
||||
* @addtogroup HAL_CONF
|
||||
* @{
|
||||
*/
|
||||
|
||||
#ifndef HALCONF_H
|
||||
#define HALCONF_H
|
||||
|
||||
#define _CHIBIOS_HAL_CONF_
|
||||
#define _CHIBIOS_HAL_CONF_VER_7_0_
|
||||
|
||||
#include "mcuconf.h"
|
||||
|
||||
/**
|
||||
* @brief Enables the PAL subsystem.
|
||||
*/
|
||||
#if !defined(HAL_USE_PAL) || defined(__DOXYGEN__)
|
||||
#define HAL_USE_PAL TRUE
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Enables the ADC subsystem.
|
||||
*/
|
||||
#if !defined(HAL_USE_ADC) || defined(__DOXYGEN__)
|
||||
#define HAL_USE_ADC FALSE
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Enables the CAN subsystem.
|
||||
*/
|
||||
#if !defined(HAL_USE_CAN) || defined(__DOXYGEN__)
|
||||
#define HAL_USE_CAN FALSE
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Enables the cryptographic subsystem.
|
||||
*/
|
||||
#if !defined(HAL_USE_CRY) || defined(__DOXYGEN__)
|
||||
#define HAL_USE_CRY FALSE
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Enables the DAC subsystem.
|
||||
*/
|
||||
#if !defined(HAL_USE_DAC) || defined(__DOXYGEN__)
|
||||
#define HAL_USE_DAC FALSE
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Enables the GPT subsystem.
|
||||
*/
|
||||
#if !defined(HAL_USE_GPT) || defined(__DOXYGEN__)
|
||||
#define HAL_USE_GPT FALSE
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Enables the I2C subsystem.
|
||||
*/
|
||||
#if !defined(HAL_USE_I2C) || defined(__DOXYGEN__)
|
||||
#define HAL_USE_I2C FALSE
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Enables the I2S subsystem.
|
||||
*/
|
||||
#if !defined(HAL_USE_I2S) || defined(__DOXYGEN__)
|
||||
#define HAL_USE_I2S FALSE
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Enables the ICU subsystem.
|
||||
*/
|
||||
#if !defined(HAL_USE_ICU) || defined(__DOXYGEN__)
|
||||
#define HAL_USE_ICU FALSE
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Enables the MAC subsystem.
|
||||
*/
|
||||
#if !defined(HAL_USE_MAC) || defined(__DOXYGEN__)
|
||||
#define HAL_USE_MAC FALSE
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Enables the MMC_SPI subsystem.
|
||||
*/
|
||||
#if !defined(HAL_USE_MMC_SPI) || defined(__DOXYGEN__)
|
||||
#define HAL_USE_MMC_SPI FALSE
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Enables the PWM subsystem.
|
||||
*/
|
||||
#if !defined(HAL_USE_PWM) || defined(__DOXYGEN__)
|
||||
#define HAL_USE_PWM FALSE
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Enables the RTC subsystem.
|
||||
*/
|
||||
#if !defined(HAL_USE_RTC) || defined(__DOXYGEN__)
|
||||
#define HAL_USE_RTC FALSE
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Enables the SDC subsystem.
|
||||
*/
|
||||
#if !defined(HAL_USE_SDC) || defined(__DOXYGEN__)
|
||||
#define HAL_USE_SDC FALSE
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Enables the SERIAL subsystem.
|
||||
*/
|
||||
#if !defined(HAL_USE_SERIAL) || defined(__DOXYGEN__)
|
||||
#define HAL_USE_SERIAL FALSE
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Enables the SERIAL over USB subsystem.
|
||||
*/
|
||||
#if !defined(HAL_USE_SERIAL_USB) || defined(__DOXYGEN__)
|
||||
#define HAL_USE_SERIAL_USB FALSE
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Enables the SIO subsystem.
|
||||
*/
|
||||
#if !defined(HAL_USE_SIO) || defined(__DOXYGEN__)
|
||||
#define HAL_USE_SIO FALSE
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Enables the SPI subsystem.
|
||||
*/
|
||||
#if !defined(HAL_USE_SPI) || defined(__DOXYGEN__)
|
||||
#define HAL_USE_SPI FALSE
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Enables the TRNG subsystem.
|
||||
*/
|
||||
#if !defined(HAL_USE_TRNG) || defined(__DOXYGEN__)
|
||||
#define HAL_USE_TRNG FALSE
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Enables the UART subsystem.
|
||||
*/
|
||||
#if !defined(HAL_USE_UART) || defined(__DOXYGEN__)
|
||||
#define HAL_USE_UART FALSE
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Enables the USB subsystem.
|
||||
*/
|
||||
#if !defined(HAL_USE_USB) || defined(__DOXYGEN__)
|
||||
#define HAL_USE_USB TRUE
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Enables the WDG subsystem.
|
||||
*/
|
||||
#if !defined(HAL_USE_WDG) || defined(__DOXYGEN__)
|
||||
#define HAL_USE_WDG FALSE
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Enables the WSPI subsystem.
|
||||
*/
|
||||
#if !defined(HAL_USE_WSPI) || defined(__DOXYGEN__)
|
||||
#define HAL_USE_WSPI FALSE
|
||||
#endif
|
||||
|
||||
/*===========================================================================*/
|
||||
/* PAL driver related settings. */
|
||||
/*===========================================================================*/
|
||||
|
||||
/**
|
||||
* @brief Enables synchronous APIs.
|
||||
* @note Disabling this option saves both code and data space.
|
||||
*/
|
||||
#if !defined(PAL_USE_CALLBACKS) || defined(__DOXYGEN__)
|
||||
#define PAL_USE_CALLBACKS FALSE
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Enables synchronous APIs.
|
||||
* @note Disabling this option saves both code and data space.
|
||||
*/
|
||||
#if !defined(PAL_USE_WAIT) || defined(__DOXYGEN__)
|
||||
#define PAL_USE_WAIT FALSE
|
||||
#endif
|
||||
|
||||
/*===========================================================================*/
|
||||
/* ADC driver related settings. */
|
||||
/*===========================================================================*/
|
||||
|
||||
/**
|
||||
* @brief Enables synchronous APIs.
|
||||
* @note Disabling this option saves both code and data space.
|
||||
*/
|
||||
#if !defined(ADC_USE_WAIT) || defined(__DOXYGEN__)
|
||||
#define ADC_USE_WAIT TRUE
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Enables the @p adcAcquireBus() and @p adcReleaseBus() APIs.
|
||||
* @note Disabling this option saves both code and data space.
|
||||
*/
|
||||
#if !defined(ADC_USE_MUTUAL_EXCLUSION) || defined(__DOXYGEN__)
|
||||
#define ADC_USE_MUTUAL_EXCLUSION TRUE
|
||||
#endif
|
||||
|
||||
/*===========================================================================*/
|
||||
/* CAN driver related settings. */
|
||||
/*===========================================================================*/
|
||||
|
||||
/**
|
||||
* @brief Sleep mode related APIs inclusion switch.
|
||||
*/
|
||||
#if !defined(CAN_USE_SLEEP_MODE) || defined(__DOXYGEN__)
|
||||
#define CAN_USE_SLEEP_MODE TRUE
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Enforces the driver to use direct callbacks rather than OSAL events.
|
||||
*/
|
||||
#if !defined(CAN_ENFORCE_USE_CALLBACKS) || defined(__DOXYGEN__)
|
||||
#define CAN_ENFORCE_USE_CALLBACKS FALSE
|
||||
#endif
|
||||
|
||||
/*===========================================================================*/
|
||||
/* CRY driver related settings. */
|
||||
/*===========================================================================*/
|
||||
|
||||
/**
|
||||
* @brief Enables the SW fall-back of the cryptographic driver.
|
||||
* @details When enabled, this option, activates a fall-back software
|
||||
* implementation for algorithms not supported by the underlying
|
||||
* hardware.
|
||||
* @note Fall-back implementations may not be present for all algorithms.
|
||||
*/
|
||||
#if !defined(HAL_CRY_USE_FALLBACK) || defined(__DOXYGEN__)
|
||||
#define HAL_CRY_USE_FALLBACK FALSE
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Makes the driver forcibly use the fall-back implementations.
|
||||
*/
|
||||
#if !defined(HAL_CRY_ENFORCE_FALLBACK) || defined(__DOXYGEN__)
|
||||
#define HAL_CRY_ENFORCE_FALLBACK FALSE
|
||||
#endif
|
||||
|
||||
/*===========================================================================*/
|
||||
/* DAC driver related settings. */
|
||||
/*===========================================================================*/
|
||||
|
||||
/**
|
||||
* @brief Enables synchronous APIs.
|
||||
* @note Disabling this option saves both code and data space.
|
||||
*/
|
||||
#if !defined(DAC_USE_WAIT) || defined(__DOXYGEN__)
|
||||
#define DAC_USE_WAIT TRUE
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Enables the @p dacAcquireBus() and @p dacReleaseBus() APIs.
|
||||
* @note Disabling this option saves both code and data space.
|
||||
*/
|
||||
#if !defined(DAC_USE_MUTUAL_EXCLUSION) || defined(__DOXYGEN__)
|
||||
#define DAC_USE_MUTUAL_EXCLUSION TRUE
|
||||
#endif
|
||||
|
||||
/*===========================================================================*/
|
||||
/* I2C driver related settings. */
|
||||
/*===========================================================================*/
|
||||
|
||||
/**
|
||||
* @brief Enables the mutual exclusion APIs on the I2C bus.
|
||||
*/
|
||||
#if !defined(I2C_USE_MUTUAL_EXCLUSION) || defined(__DOXYGEN__)
|
||||
#define I2C_USE_MUTUAL_EXCLUSION TRUE
|
||||
#endif
|
||||
|
||||
/*===========================================================================*/
|
||||
/* MAC driver related settings. */
|
||||
/*===========================================================================*/
|
||||
|
||||
/**
|
||||
* @brief Enables the zero-copy API.
|
||||
*/
|
||||
#if !defined(MAC_USE_ZERO_COPY) || defined(__DOXYGEN__)
|
||||
#define MAC_USE_ZERO_COPY FALSE
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Enables an event sources for incoming packets.
|
||||
*/
|
||||
#if !defined(MAC_USE_EVENTS) || defined(__DOXYGEN__)
|
||||
#define MAC_USE_EVENTS TRUE
|
||||
#endif
|
||||
|
||||
/*===========================================================================*/
|
||||
/* MMC_SPI driver related settings. */
|
||||
/*===========================================================================*/
|
||||
|
||||
/**
|
||||
* @brief Delays insertions.
|
||||
* @details If enabled this options inserts delays into the MMC waiting
|
||||
* routines releasing some extra CPU time for the threads with
|
||||
* lower priority, this may slow down the driver a bit however.
|
||||
* This option is recommended also if the SPI driver does not
|
||||
* use a DMA channel and heavily loads the CPU.
|
||||
*/
|
||||
#if !defined(MMC_NICE_WAITING) || defined(__DOXYGEN__)
|
||||
#define MMC_NICE_WAITING TRUE
|
||||
#endif
|
||||
|
||||
/*===========================================================================*/
|
||||
/* SDC driver related settings. */
|
||||
/*===========================================================================*/
|
||||
|
||||
/**
|
||||
* @brief Number of initialization attempts before rejecting the card.
|
||||
* @note Attempts are performed at 10mS intervals.
|
||||
*/
|
||||
#if !defined(SDC_INIT_RETRY) || defined(__DOXYGEN__)
|
||||
#define SDC_INIT_RETRY 100
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Include support for MMC cards.
|
||||
* @note MMC support is not yet implemented so this option must be kept
|
||||
* at @p FALSE.
|
||||
*/
|
||||
#if !defined(SDC_MMC_SUPPORT) || defined(__DOXYGEN__)
|
||||
#define SDC_MMC_SUPPORT FALSE
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Delays insertions.
|
||||
* @details If enabled this options inserts delays into the MMC waiting
|
||||
* routines releasing some extra CPU time for the threads with
|
||||
* lower priority, this may slow down the driver a bit however.
|
||||
*/
|
||||
#if !defined(SDC_NICE_WAITING) || defined(__DOXYGEN__)
|
||||
#define SDC_NICE_WAITING TRUE
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief OCR initialization constant for V20 cards.
|
||||
*/
|
||||
#if !defined(SDC_INIT_OCR_V20) || defined(__DOXYGEN__)
|
||||
#define SDC_INIT_OCR_V20 0x50FF8000U
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief OCR initialization constant for non-V20 cards.
|
||||
*/
|
||||
#if !defined(SDC_INIT_OCR) || defined(__DOXYGEN__)
|
||||
#define SDC_INIT_OCR 0x80100000U
|
||||
#endif
|
||||
|
||||
/*===========================================================================*/
|
||||
/* SERIAL driver related settings. */
|
||||
/*===========================================================================*/
|
||||
|
||||
/**
|
||||
* @brief Default bit rate.
|
||||
* @details Configuration parameter, this is the baud rate selected for the
|
||||
* default configuration.
|
||||
*/
|
||||
#if !defined(SERIAL_DEFAULT_BITRATE) || defined(__DOXYGEN__)
|
||||
#define SERIAL_DEFAULT_BITRATE 38400
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Serial buffers size.
|
||||
* @details Configuration parameter, you can change the depth of the queue
|
||||
* buffers depending on the requirements of your application.
|
||||
* @note The default is 16 bytes for both the transmission and receive
|
||||
* buffers.
|
||||
*/
|
||||
#if !defined(SERIAL_BUFFERS_SIZE) || defined(__DOXYGEN__)
|
||||
#define SERIAL_BUFFERS_SIZE 16
|
||||
#endif
|
||||
|
||||
/*===========================================================================*/
|
||||
/* SERIAL_USB driver related setting. */
|
||||
/*===========================================================================*/
|
||||
|
||||
/**
|
||||
* @brief Serial over USB buffers size.
|
||||
* @details Configuration parameter, the buffer size must be a multiple of
|
||||
* the USB data endpoint maximum packet size.
|
||||
* @note The default is 256 bytes for both the transmission and receive
|
||||
* buffers.
|
||||
*/
|
||||
#if !defined(SERIAL_USB_BUFFERS_SIZE) || defined(__DOXYGEN__)
|
||||
#define SERIAL_USB_BUFFERS_SIZE 1
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Serial over USB number of buffers.
|
||||
* @note The default is 2 buffers.
|
||||
*/
|
||||
#if !defined(SERIAL_USB_BUFFERS_NUMBER) || defined(__DOXYGEN__)
|
||||
#define SERIAL_USB_BUFFERS_NUMBER 2
|
||||
#endif
|
||||
|
||||
/*===========================================================================*/
|
||||
/* SPI driver related settings. */
|
||||
/*===========================================================================*/
|
||||
|
||||
/**
|
||||
* @brief Enables synchronous APIs.
|
||||
* @note Disabling this option saves both code and data space.
|
||||
*/
|
||||
#if !defined(SPI_USE_WAIT) || defined(__DOXYGEN__)
|
||||
#define SPI_USE_WAIT TRUE
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Enables circular transfers APIs.
|
||||
* @note Disabling this option saves both code and data space.
|
||||
*/
|
||||
#if !defined(SPI_USE_CIRCULAR) || defined(__DOXYGEN__)
|
||||
#define SPI_USE_CIRCULAR FALSE
|
||||
#endif
|
||||
|
||||
|
||||
/**
|
||||
* @brief Enables the @p spiAcquireBus() and @p spiReleaseBus() APIs.
|
||||
* @note Disabling this option saves both code and data space.
|
||||
*/
|
||||
#if !defined(SPI_USE_MUTUAL_EXCLUSION) || defined(__DOXYGEN__)
|
||||
#define SPI_USE_MUTUAL_EXCLUSION TRUE
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Handling method for SPI CS line.
|
||||
* @note Disabling this option saves both code and data space.
|
||||
*/
|
||||
#if !defined(SPI_SELECT_MODE) || defined(__DOXYGEN__)
|
||||
#define SPI_SELECT_MODE SPI_SELECT_MODE_PAD
|
||||
#endif
|
||||
|
||||
/*===========================================================================*/
|
||||
/* UART driver related settings. */
|
||||
/*===========================================================================*/
|
||||
|
||||
/**
|
||||
* @brief Enables synchronous APIs.
|
||||
* @note Disabling this option saves both code and data space.
|
||||
*/
|
||||
#if !defined(UART_USE_WAIT) || defined(__DOXYGEN__)
|
||||
#define UART_USE_WAIT FALSE
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Enables the @p uartAcquireBus() and @p uartReleaseBus() APIs.
|
||||
* @note Disabling this option saves both code and data space.
|
||||
*/
|
||||
#if !defined(UART_USE_MUTUAL_EXCLUSION) || defined(__DOXYGEN__)
|
||||
#define UART_USE_MUTUAL_EXCLUSION FALSE
|
||||
#endif
|
||||
|
||||
/*===========================================================================*/
|
||||
/* USB driver related settings. */
|
||||
/*===========================================================================*/
|
||||
|
||||
/**
|
||||
* @brief Enables synchronous APIs.
|
||||
* @note Disabling this option saves both code and data space.
|
||||
*/
|
||||
#if !defined(USB_USE_WAIT) || defined(__DOXYGEN__)
|
||||
#define USB_USE_WAIT TRUE
|
||||
#endif
|
||||
|
||||
/*===========================================================================*/
|
||||
/* WSPI driver related settings. */
|
||||
/*===========================================================================*/
|
||||
|
||||
/**
|
||||
* @brief Enables synchronous APIs.
|
||||
* @note Disabling this option saves both code and data space.
|
||||
*/
|
||||
#if !defined(WSPI_USE_WAIT) || defined(__DOXYGEN__)
|
||||
#define WSPI_USE_WAIT TRUE
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Enables the @p wspiAcquireBus() and @p wspiReleaseBus() APIs.
|
||||
* @note Disabling this option saves both code and data space.
|
||||
*/
|
||||
#if !defined(WSPI_USE_MUTUAL_EXCLUSION) || defined(__DOXYGEN__)
|
||||
#define WSPI_USE_MUTUAL_EXCLUSION TRUE
|
||||
#endif
|
||||
|
||||
#endif /* HALCONF_H */
|
||||
|
||||
/** @} */
|
||||
@@ -0,0 +1,379 @@
|
||||
{
|
||||
"keyboard_name": "Vega",
|
||||
"url": "ai03.com",
|
||||
"maintainer": "ai03",
|
||||
"width": 16,
|
||||
"height": 5,
|
||||
"layouts": {
|
||||
"LAYOUT_all": {
|
||||
"layout": [
|
||||
{
|
||||
"label": "Esc",
|
||||
"x": 0,
|
||||
"y": 0
|
||||
},
|
||||
{
|
||||
"label": "!",
|
||||
"x": 1,
|
||||
"y": 0
|
||||
},
|
||||
{
|
||||
"label": "@",
|
||||
"x": 2,
|
||||
"y": 0
|
||||
},
|
||||
{
|
||||
"label": "#",
|
||||
"x": 3,
|
||||
"y": 0
|
||||
},
|
||||
{
|
||||
"label": "$",
|
||||
"x": 4,
|
||||
"y": 0
|
||||
},
|
||||
{
|
||||
"label": "%",
|
||||
"x": 5,
|
||||
"y": 0
|
||||
},
|
||||
{
|
||||
"label": "^",
|
||||
"x": 6,
|
||||
"y": 0
|
||||
},
|
||||
{
|
||||
"label": "&",
|
||||
"x": 7,
|
||||
"y": 0
|
||||
},
|
||||
{
|
||||
"label": "*",
|
||||
"x": 8,
|
||||
"y": 0
|
||||
},
|
||||
{
|
||||
"label": "(",
|
||||
"x": 9,
|
||||
"y": 0
|
||||
},
|
||||
{
|
||||
"label": ")",
|
||||
"x": 10,
|
||||
"y": 0
|
||||
},
|
||||
{
|
||||
"label": "_",
|
||||
"x": 11,
|
||||
"y": 0
|
||||
},
|
||||
{
|
||||
"label": "+",
|
||||
"x": 12,
|
||||
"y": 0
|
||||
},
|
||||
{
|
||||
"label": "Back Space",
|
||||
"x": 13,
|
||||
"y": 0
|
||||
},
|
||||
{
|
||||
"label": "Delete",
|
||||
"x": 14,
|
||||
"y": 0
|
||||
},
|
||||
{
|
||||
"label": "PgUp",
|
||||
"x": 15,
|
||||
"y": 0
|
||||
},
|
||||
{
|
||||
"label": "Tab",
|
||||
"x": 0,
|
||||
"y": 1,
|
||||
"w": 1.5
|
||||
},
|
||||
{
|
||||
"label": "Q",
|
||||
"x": 1.5,
|
||||
"y": 1
|
||||
},
|
||||
{
|
||||
"label": "W",
|
||||
"x": 2.5,
|
||||
"y": 1
|
||||
},
|
||||
{
|
||||
"label": "E",
|
||||
"x": 3.5,
|
||||
"y": 1
|
||||
},
|
||||
{
|
||||
"label": "R",
|
||||
"x": 4.5,
|
||||
"y": 1
|
||||
},
|
||||
{
|
||||
"label": "T",
|
||||
"x": 5.5,
|
||||
"y": 1
|
||||
},
|
||||
{
|
||||
"label": "Y",
|
||||
"x": 6.5,
|
||||
"y": 1
|
||||
},
|
||||
{
|
||||
"label": "U",
|
||||
"x": 7.5,
|
||||
"y": 1
|
||||
},
|
||||
{
|
||||
"label": "I",
|
||||
"x": 8.5,
|
||||
"y": 1
|
||||
},
|
||||
{
|
||||
"label": "O",
|
||||
"x": 9.5,
|
||||
"y": 1
|
||||
},
|
||||
{
|
||||
"label": "P",
|
||||
"x": 10.5,
|
||||
"y": 1
|
||||
},
|
||||
{
|
||||
"label": "{",
|
||||
"x": 11.5,
|
||||
"y": 1
|
||||
},
|
||||
{
|
||||
"label": "}",
|
||||
"x": 12.5,
|
||||
"y": 1
|
||||
},
|
||||
{
|
||||
"label": "|",
|
||||
"x": 13.5,
|
||||
"y": 1,
|
||||
"w": 1.5
|
||||
},
|
||||
{
|
||||
"label": "PgDn",
|
||||
"x": 15,
|
||||
"y": 1
|
||||
},
|
||||
{
|
||||
"label": "Caps Lock",
|
||||
"x": 0,
|
||||
"y": 2,
|
||||
"w": 1.75
|
||||
},
|
||||
{
|
||||
"label": "A",
|
||||
"x": 1.75,
|
||||
"y": 2
|
||||
},
|
||||
{
|
||||
"label": "S",
|
||||
"x": 2.75,
|
||||
"y": 2
|
||||
},
|
||||
{
|
||||
"label": "D",
|
||||
"x": 3.75,
|
||||
"y": 2
|
||||
},
|
||||
{
|
||||
"label": "F",
|
||||
"x": 4.75,
|
||||
"y": 2
|
||||
},
|
||||
{
|
||||
"label": "G",
|
||||
"x": 5.75,
|
||||
"y": 2
|
||||
},
|
||||
{
|
||||
"label": "H",
|
||||
"x": 6.75,
|
||||
"y": 2
|
||||
},
|
||||
{
|
||||
"label": "J",
|
||||
"x": 7.75,
|
||||
"y": 2
|
||||
},
|
||||
{
|
||||
"label": "K",
|
||||
"x": 8.75,
|
||||
"y": 2
|
||||
},
|
||||
{
|
||||
"label": "L",
|
||||
"x": 9.75,
|
||||
"y": 2
|
||||
},
|
||||
{
|
||||
"label": ":",
|
||||
"x": 10.75,
|
||||
"y": 2
|
||||
},
|
||||
{
|
||||
"label": "\"",
|
||||
"x": 11.75,
|
||||
"y": 2
|
||||
},
|
||||
{
|
||||
"label": "Enter",
|
||||
"x": 12.75,
|
||||
"y": 2,
|
||||
"w": 2.25
|
||||
},
|
||||
{
|
||||
"label": "Home",
|
||||
"x": 15,
|
||||
"y": 2
|
||||
},
|
||||
{
|
||||
"label": "Shift",
|
||||
"x": 0,
|
||||
"y": 3,
|
||||
"w": 1.25
|
||||
},
|
||||
{
|
||||
"label": "|",
|
||||
"x": 1.25,
|
||||
"y": 3
|
||||
},
|
||||
{
|
||||
"label": "Z",
|
||||
"x": 2.25,
|
||||
"y": 3
|
||||
},
|
||||
{
|
||||
"label": "X",
|
||||
"x": 3.25,
|
||||
"y": 3
|
||||
},
|
||||
{
|
||||
"label": "C",
|
||||
"x": 4.25,
|
||||
"y": 3
|
||||
},
|
||||
{
|
||||
"label": "V",
|
||||
"x": 5.25,
|
||||
"y": 3
|
||||
},
|
||||
{
|
||||
"label": "B",
|
||||
"x": 6.25,
|
||||
"y": 3
|
||||
},
|
||||
{
|
||||
"label": "N",
|
||||
"x": 7.25,
|
||||
"y": 3
|
||||
},
|
||||
{
|
||||
"label": "M",
|
||||
"x": 8.25,
|
||||
"y": 3
|
||||
},
|
||||
{
|
||||
"label": "<",
|
||||
"x": 9.25,
|
||||
"y": 3
|
||||
},
|
||||
{
|
||||
"label": ">",
|
||||
"x": 10.25,
|
||||
"y": 3
|
||||
},
|
||||
{
|
||||
"label": "?",
|
||||
"x": 11.25,
|
||||
"y": 3
|
||||
},
|
||||
{
|
||||
"label": "Shift",
|
||||
"x": 12.25,
|
||||
"y": 3,
|
||||
"w": 1.75
|
||||
},
|
||||
{
|
||||
"label": "↑",
|
||||
"x": 14,
|
||||
"y": 3
|
||||
},
|
||||
{
|
||||
"label": "End",
|
||||
"x": 15,
|
||||
"y": 3
|
||||
},
|
||||
{
|
||||
"label": "Ctrl",
|
||||
"x": 0,
|
||||
"y": 4,
|
||||
"w": 1.25
|
||||
},
|
||||
{
|
||||
"label": "Win",
|
||||
"x": 1.25,
|
||||
"y": 4,
|
||||
"w": 1.25
|
||||
},
|
||||
{
|
||||
"label": "Alt",
|
||||
"x": 2.5,
|
||||
"y": 4,
|
||||
"w": 1.25
|
||||
},
|
||||
{
|
||||
"x": 3.75,
|
||||
"y": 4,
|
||||
"w": 2.25
|
||||
},
|
||||
{
|
||||
"x": 6,
|
||||
"y": 4,
|
||||
"w": 1.25
|
||||
},
|
||||
{
|
||||
"x": 7.25,
|
||||
"y": 4,
|
||||
"w": 2.75
|
||||
},
|
||||
{
|
||||
"label": "Alt",
|
||||
"x": 10,
|
||||
"y": 4,
|
||||
"w": 1.25
|
||||
},
|
||||
{
|
||||
"label": "Ctrl",
|
||||
"x": 11.25,
|
||||
"y": 4,
|
||||
"w": 1.25
|
||||
},
|
||||
{
|
||||
"label": "←",
|
||||
"x": 13,
|
||||
"y": 4
|
||||
},
|
||||
{
|
||||
"label": "↓",
|
||||
"x": 14,
|
||||
"y": 4
|
||||
},
|
||||
{
|
||||
"label": "→",
|
||||
"x": 15,
|
||||
"y": 4
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,47 @@
|
||||
/*
|
||||
Copyright 2012,2013 Jun Wako <wakojun@gmail.com>
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
#include QMK_KEYBOARD_H
|
||||
|
||||
|
||||
// Each layer gets a name for readability, which is then used in the keymap matrix below.
|
||||
// The underscores don't mean anything - you can have a layer called STUFF or any other name.
|
||||
// Layer names don't all need to be of the same length, obviously, and you can also skip them
|
||||
// entirely and just use numbers.
|
||||
enum layer_names {
|
||||
_BASE,
|
||||
_FN
|
||||
};
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
|
||||
[_BASE] = 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_BSPC, KC_DEL, KC_HOME,
|
||||
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_END,
|
||||
MO(1), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGUP,
|
||||
KC_LSFT, KC_BSLS, 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_SPC, KC_SPC, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
|
||||
),
|
||||
|
||||
[_FN] = 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_PGUP, _______, _______, _______, _______, KC_UP, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, KC_HOME, KC_PGDN, KC_END, _______, _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_PGUP, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, KC_HOME, KC_PGDN, KC_END
|
||||
)
|
||||
|
||||
};
|
||||
@@ -0,0 +1,65 @@
|
||||
/*
|
||||
Copyright 2012,2013 Jun Wako <wakojun@gmail.com>
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
#include QMK_KEYBOARD_H
|
||||
|
||||
|
||||
// Each layer gets a name for readability, which is then used in the keymap matrix below.
|
||||
// The underscores don't mean anything - you can have a layer called STUFF or any other name.
|
||||
// Layer names don't all need to be of the same length, obviously, and you can also skip them
|
||||
// entirely and just use numbers.
|
||||
enum layer_names {
|
||||
_BASE,
|
||||
_FN1,
|
||||
_FN2,
|
||||
_FN3
|
||||
};
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
|
||||
[_BASE] = 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_BSPC, KC_DEL, KC_HOME,
|
||||
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_END,
|
||||
MO(1), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGUP,
|
||||
KC_LSFT, KC_BSLS, 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_SPC, KC_SPC, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
|
||||
),
|
||||
|
||||
[_FN1] = 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_PGUP, _______, _______, _______, _______, KC_UP, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, KC_HOME, KC_PGDN, KC_END, _______, _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_PGUP, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, KC_HOME, KC_PGDN, KC_END
|
||||
),
|
||||
|
||||
[_FN2] = LAYOUT_all(
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
|
||||
),
|
||||
|
||||
[_FN3] = LAYOUT_all(
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
|
||||
),
|
||||
|
||||
};
|
||||
@@ -0,0 +1,2 @@
|
||||
VIA_ENABLE = yes
|
||||
|
||||
@@ -0,0 +1,176 @@
|
||||
/*
|
||||
ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
*/
|
||||
|
||||
#ifndef _MCUCONF_H_
|
||||
#define _MCUCONF_H_
|
||||
|
||||
/*
|
||||
* STM32F0xx drivers configuration.
|
||||
* The following settings override the default settings present in
|
||||
* the various device driver implementation headers.
|
||||
* Note that the settings for each driver only have effect if the whole
|
||||
* driver is enabled in halconf.h.
|
||||
*
|
||||
* IRQ priorities:
|
||||
* 3...0 Lowest...Highest.
|
||||
*
|
||||
* DMA priorities:
|
||||
* 0...3 Lowest...Highest.
|
||||
*/
|
||||
|
||||
#define STM32F0xx_MCUCONF
|
||||
// #define STM32F070xB
|
||||
|
||||
/*
|
||||
* HAL driver system settings.
|
||||
*/
|
||||
#define STM32_NO_INIT FALSE
|
||||
#define STM32_PVD_ENABLE FALSE
|
||||
#define STM32_PLS STM32_PLS_LEV0
|
||||
#define STM32_HSI_ENABLED TRUE
|
||||
#define STM32_HSI14_ENABLED TRUE
|
||||
#define STM32_HSI48_ENABLED FALSE
|
||||
#define STM32_LSI_ENABLED TRUE
|
||||
#define STM32_HSE_ENABLED FALSE
|
||||
#define STM32_LSE_ENABLED FALSE
|
||||
#define STM32_SW STM32_SW_PLL
|
||||
#define STM32_PLLSRC STM32_PLLSRC_HSI_DIV2
|
||||
#define STM32_PREDIV_VALUE 1
|
||||
#define STM32_PLLMUL_VALUE 12
|
||||
#define STM32_HPRE STM32_HPRE_DIV1
|
||||
#define STM32_PPRE STM32_PPRE_DIV1
|
||||
#define STM32_ADCSW STM32_ADCSW_HSI14
|
||||
#define STM32_ADCPRE STM32_ADCPRE_DIV4
|
||||
#define STM32_MCOSEL STM32_MCOSEL_NOCLOCK
|
||||
#define STM32_ADCPRE STM32_ADCPRE_DIV4
|
||||
#define STM32_ADCSW STM32_ADCSW_HSI14
|
||||
#define STM32_USBSW STM32_USBSW_HSI48
|
||||
#define STM32_CECSW STM32_CECSW_HSI
|
||||
#define STM32_I2C1SW STM32_I2C1SW_HSI
|
||||
#define STM32_USART1SW STM32_USART1SW_PCLK
|
||||
#define STM32_RTCSEL STM32_RTCSEL_LSI
|
||||
|
||||
/*
|
||||
* ADC driver system settings.
|
||||
*/
|
||||
#define STM32_ADC_USE_ADC1 FALSE
|
||||
#define STM32_ADC_ADC1_DMA_PRIORITY 2
|
||||
#define STM32_ADC_IRQ_PRIORITY 2
|
||||
#define STM32_ADC_ADC1_DMA_IRQ_PRIORITY 2
|
||||
|
||||
/*
|
||||
* EXT driver system settings.
|
||||
*/
|
||||
#define STM32_EXT_EXTI0_1_IRQ_PRIORITY 3
|
||||
#define STM32_EXT_EXTI2_3_IRQ_PRIORITY 3
|
||||
#define STM32_EXT_EXTI4_15_IRQ_PRIORITY 3
|
||||
#define STM32_EXT_EXTI16_IRQ_PRIORITY 3
|
||||
#define STM32_EXT_EXTI17_IRQ_PRIORITY 3
|
||||
|
||||
/*
|
||||
* GPT driver system settings.
|
||||
*/
|
||||
#define STM32_GPT_USE_TIM1 FALSE
|
||||
#define STM32_GPT_USE_TIM2 FALSE
|
||||
#define STM32_GPT_USE_TIM3 FALSE
|
||||
#define STM32_GPT_USE_TIM14 FALSE
|
||||
#define STM32_GPT_TIM1_IRQ_PRIORITY 2
|
||||
#define STM32_GPT_TIM2_IRQ_PRIORITY 2
|
||||
#define STM32_GPT_TIM3_IRQ_PRIORITY 2
|
||||
#define STM32_GPT_TIM14_IRQ_PRIORITY 2
|
||||
|
||||
/*
|
||||
* I2C driver system settings.
|
||||
*/
|
||||
#define STM32_I2C_USE_I2C1 FALSE
|
||||
#define STM32_I2C_USE_I2C2 FALSE
|
||||
#define STM32_I2C_BUSY_TIMEOUT 50
|
||||
#define STM32_I2C_I2C1_IRQ_PRIORITY 3
|
||||
#define STM32_I2C_I2C2_IRQ_PRIORITY 3
|
||||
#define STM32_I2C_USE_DMA TRUE
|
||||
#define STM32_I2C_I2C1_DMA_PRIORITY 1
|
||||
#define STM32_I2C_I2C2_DMA_PRIORITY 1
|
||||
#define STM32_I2C_I2C1_RX_DMA_STREAM STM32_DMA_STREAM_ID(1, 7)
|
||||
#define STM32_I2C_I2C1_TX_DMA_STREAM STM32_DMA_STREAM_ID(1, 6)
|
||||
#define STM32_I2C_DMA_ERROR_HOOK(i2cp) osalSysHalt("DMA failure")
|
||||
|
||||
/*
|
||||
* ICU driver system settings.
|
||||
*/
|
||||
#define STM32_ICU_USE_TIM1 FALSE
|
||||
#define STM32_ICU_USE_TIM2 FALSE
|
||||
#define STM32_ICU_USE_TIM3 FALSE
|
||||
#define STM32_ICU_TIM1_IRQ_PRIORITY 3
|
||||
#define STM32_ICU_TIM2_IRQ_PRIORITY 3
|
||||
#define STM32_ICU_TIM3_IRQ_PRIORITY 3
|
||||
|
||||
/*
|
||||
* PWM driver system settings.
|
||||
*/
|
||||
#define STM32_PWM_USE_ADVANCED FALSE
|
||||
#define STM32_PWM_USE_TIM1 FALSE
|
||||
#define STM32_PWM_USE_TIM2 FALSE
|
||||
#define STM32_PWM_USE_TIM3 FALSE
|
||||
#define STM32_PWM_TIM1_IRQ_PRIORITY 3
|
||||
#define STM32_PWM_TIM2_IRQ_PRIORITY 3
|
||||
#define STM32_PWM_TIM3_IRQ_PRIORITY 3
|
||||
|
||||
/*
|
||||
* SERIAL driver system settings.
|
||||
*/
|
||||
#define STM32_SERIAL_USE_USART1 FALSE
|
||||
#define STM32_SERIAL_USE_USART2 FALSE
|
||||
#define STM32_SERIAL_USART1_PRIORITY 3
|
||||
#define STM32_SERIAL_USART2_PRIORITY 3
|
||||
|
||||
/*
|
||||
* SPI driver system settings.
|
||||
*/
|
||||
#define STM32_SPI_USE_SPI1 FALSE
|
||||
#define STM32_SPI_USE_SPI2 FALSE
|
||||
#define STM32_SPI_SPI1_DMA_PRIORITY 1
|
||||
#define STM32_SPI_SPI2_DMA_PRIORITY 1
|
||||
#define STM32_SPI_SPI1_IRQ_PRIORITY 2
|
||||
#define STM32_SPI_SPI2_IRQ_PRIORITY 2
|
||||
#define STM32_SPI_SPI2_RX_DMA_STREAM STM32_DMA_STREAM_ID(1, 4)
|
||||
#define STM32_SPI_SPI2_TX_DMA_STREAM STM32_DMA_STREAM_ID(1, 5)
|
||||
#define STM32_SPI_DMA_ERROR_HOOK(spip) osalSysHalt("DMA failure")
|
||||
|
||||
/*
|
||||
* ST driver system settings.
|
||||
*/
|
||||
#define STM32_ST_IRQ_PRIORITY 2
|
||||
#define STM32_ST_USE_TIMER 2
|
||||
|
||||
/*
|
||||
* UART driver system settings.
|
||||
*/
|
||||
#define STM32_UART_USE_USART1 FALSE
|
||||
#define STM32_UART_USE_USART2 FALSE
|
||||
#define STM32_UART_USART1_IRQ_PRIORITY 3
|
||||
#define STM32_UART_USART2_IRQ_PRIORITY 3
|
||||
#define STM32_UART_USART1_DMA_PRIORITY 0
|
||||
#define STM32_UART_USART2_DMA_PRIORITY 0
|
||||
#define STM32_UART_DMA_ERROR_HOOK(uartp) osalSysHalt("DMA failure")
|
||||
|
||||
/*
|
||||
* USB driver system settings.
|
||||
*/
|
||||
#define STM32_USB_USE_USB1 TRUE
|
||||
#define STM32_USB_LOW_POWER_ON_SUSPEND FALSE
|
||||
#define STM32_USB_USB1_LP_IRQ_PRIORITY 3
|
||||
|
||||
#endif /* _MCUCONF_H_ */
|
||||
@@ -0,0 +1,15 @@
|
||||
# Vega
|
||||
|
||||

|
||||
|
||||
A typical 65% keyboard
|
||||
|
||||
* Keyboard Maintainer: [ai03](https://github.com/ai03-2725)
|
||||
* Hardware Supported: Vega PCBs, both solderable and hotswap
|
||||
* Hardware Availability: Check the Vega page on [ai03's website](https://ai03.com/)
|
||||
|
||||
Make example for this keyboard (after setting up your build environment):
|
||||
|
||||
make ai03/vega:default
|
||||
|
||||
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).
|
||||
@@ -0,0 +1,22 @@
|
||||
# MCU name
|
||||
MCU = STM32F072
|
||||
|
||||
# Build Options
|
||||
# change yes to no to disable
|
||||
#
|
||||
BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration
|
||||
MOUSEKEY_ENABLE = yes # Mouse keys
|
||||
EXTRAKEY_ENABLE = yes # Audio control and System control
|
||||
CONSOLE_ENABLE = yes # Console for debug
|
||||
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
|
||||
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
|
||||
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
|
||||
BLUETOOTH_ENABLE = no # Enable Bluetooth
|
||||
AUDIO_ENABLE = no # Audio output
|
||||
|
||||
# Enter lower-power sleep mode when on the ChibiOS idle thread
|
||||
OPT_DEFS += -DCORTEX_ENABLE_WFI_IDLE=TRUE
|
||||
@@ -0,0 +1,37 @@
|
||||
/* Copyright 2020 ai03
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include "vega.h"
|
||||
|
||||
void matrix_init_kb(void) {
|
||||
// Initialize indicator LEDs to output
|
||||
|
||||
setPinOutput(B7); // Caps
|
||||
setPinOutput(A5); // Slck
|
||||
|
||||
matrix_init_user();
|
||||
}
|
||||
|
||||
bool led_update_kb(led_t led_state) {
|
||||
|
||||
bool res = led_update_user(led_state);
|
||||
|
||||
if(res) {
|
||||
writePin(B7, !led_state.caps_lock);
|
||||
writePin(A5, !led_state.scroll_lock);
|
||||
}
|
||||
return res;
|
||||
}
|
||||
@@ -0,0 +1,33 @@
|
||||
/* Copyright 2020 ai03
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "quantum.h"
|
||||
|
||||
#define LAYOUT_all( \
|
||||
K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K212, K014, \
|
||||
K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114, \
|
||||
K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K213, K214, \
|
||||
K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, K314, \
|
||||
K400, K401, K402, K404, K406, K408, K410, K411, K412, K413, K414 \
|
||||
) { \
|
||||
{ K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014 }, \
|
||||
{ K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114 }, \
|
||||
{ K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, K214 }, \
|
||||
{ K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, K314 }, \
|
||||
{ K400, K401, K402, KC_NO, K404, KC_NO, K406, KC_NO, K408, KC_NO, K410, K411, K412, K413, K414 } \
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
/* Copyright 2020 Obosob <obosob@riseup.net>
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
#include "arch_36.h"
|
||||
@@ -0,0 +1,43 @@
|
||||
/* Copyright 2020 Obosob <obosob@riseup.net>
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
#pragma once
|
||||
|
||||
#include "quantum.h"
|
||||
|
||||
/* This a shortcut to help you visually see your layout.
|
||||
*
|
||||
* The first section contains all of the arguments representing the physical
|
||||
* layout of the board and position of the keys.
|
||||
*
|
||||
* The second converts the arguments into a two-dimensional array which
|
||||
* represents the switch matrix.
|
||||
*/
|
||||
#define LAYOUT_split_3x5_3( \
|
||||
L00, L01, L02, L03, L04, R05, R06, R07, R08, R09, \
|
||||
L10, L11, L12, L13, L14, R15, R16, R17, R18, R19, \
|
||||
L20, L21, L22, L23, L24, R25, R26, R27, R28, R29, \
|
||||
L32, L33, L34, R35, R36, R37 \
|
||||
) \
|
||||
{ \
|
||||
{ L00, L01, L02, L03, L04 }, \
|
||||
{ L10, L11, L12, L13, L14 }, \
|
||||
{ L20, L21, L22, L23, L24 }, \
|
||||
{ KC_NO, KC_NO, L32, L33, L34 }, \
|
||||
{ R09, R08, R07, R06, R05 }, \
|
||||
{ R19, R18, R17, R16, R15 }, \
|
||||
{ R29, R28, R27, R26, R25 }, \
|
||||
{ KC_NO, KC_NO, R37, R36, R35 }, \
|
||||
}
|
||||
@@ -0,0 +1,58 @@
|
||||
/*
|
||||
Copyright 2020 Obosob <obosob@riseup.net>
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
#include "config_common.h"
|
||||
|
||||
|
||||
/* USB Device descriptor parameter */
|
||||
#define VENDOR_ID 0xFEED
|
||||
#define PRODUCT_ID 0x9CE3
|
||||
#define DEVICE_VER 0x0001
|
||||
#define MANUFACTURER obosob
|
||||
#define PRODUCT Arch-36
|
||||
|
||||
/* key matrix size */
|
||||
/* Rows are doubled up */
|
||||
#define MATRIX_ROWS 8
|
||||
#define MATRIX_COLS 5
|
||||
|
||||
// wiring
|
||||
#define MATRIX_ROW_PINS { D7, E6, B4, B5 }
|
||||
#define MATRIX_COL_PINS { F7, B1, B3, B2, B6 }
|
||||
#define UNUSED_PINS
|
||||
|
||||
/* COL2ROW, ROW2COL*/
|
||||
#define DIODE_DIRECTION COL2ROW
|
||||
|
||||
/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
|
||||
#define DEBOUNCE 5
|
||||
|
||||
/*
|
||||
* Split Keyboard specific options, make sure you have 'SPLIT_KEYBOARD = yes' in your rules.mk, and define SOFT_SERIAL_PIN.
|
||||
*/
|
||||
#define SOFT_SERIAL_PIN D2
|
||||
|
||||
#ifdef RGBLIGHT_ENABLE
|
||||
#define RGB_DI_PIN D3
|
||||
#define RGBLED_SPLIT { 6, 6 }
|
||||
#define RGBLED_NUM 12
|
||||
#define RGBLIGHT_LED_MAP { 0, 1, 2, 3, 4, 5, \
|
||||
11, 10, 9, 8, 7, 6 }
|
||||
#endif
|
||||
|
||||
#define EE_HANDS
|
||||
@@ -0,0 +1,309 @@
|
||||
#include QMK_KEYBOARD_H
|
||||
|
||||
// Defines names for use in layer keycodes and the keymap
|
||||
enum layer_names {
|
||||
_QWERTY,
|
||||
_LOWER,
|
||||
_RAISE,
|
||||
_ADJUST
|
||||
};
|
||||
|
||||
#define LOWER MO(_LOWER)
|
||||
#define RAISE MO(_RAISE)
|
||||
|
||||
// Defines for task manager and such
|
||||
#define CALTDEL LCTL(LALT(KC_DEL))
|
||||
#define TSKMGR LCTL(LSFT(KC_ESC))
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
|
||||
/* Qwerty
|
||||
*
|
||||
* ,----------------------------------. ,----------------------------------.
|
||||
* | Q | W | E | R | T | | Y | U | I | O | P |
|
||||
* |------+------+------+------+------| |------+------+------+------+------|
|
||||
* | A | S | D | F | G | | H | J | K | L | ; |
|
||||
* |------+------+------+------+------| |------+------+------+------+------|
|
||||
* | Z | X | C | V | B | | N | M | , | . | / |
|
||||
* `----------------------------------' `----------------------------------'
|
||||
* ,--------------------. ,--------------------.
|
||||
* | Ctrl | LOWER| Space| |BckSpc| RAISE| Shift|
|
||||
* `--------------------' `--------------------.
|
||||
*/
|
||||
[_QWERTY] = LAYOUT_split_3x5_3(
|
||||
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,
|
||||
KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH,
|
||||
KC_LCTL, LOWER, KC_SPC, KC_BSPC, RAISE, OSM(MOD_LSFT)
|
||||
),
|
||||
|
||||
/* Raise
|
||||
*
|
||||
* ,----------------------------------. ,----------------------------------.
|
||||
* | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 |
|
||||
* |------+------+------+------+------| |------+------+------+------+------|
|
||||
* | Tab | Left | Down | Up | Right| | | - | = | [ | ] |
|
||||
* |------+------+------+------+------| |------+------+------+------+------|
|
||||
* | Ctrl| ` | GUI | Alt | | | | | | \ | ' |
|
||||
* `----------------------------------' `----------------------------------'
|
||||
* ,--------------------. ,--------------------.
|
||||
* | | LOWER| | | | RAISE| |
|
||||
* `--------------------' `--------------------.
|
||||
*/
|
||||
[_RAISE] = LAYOUT_split_3x5_3(
|
||||
KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0,
|
||||
KC_TAB, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, _______, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC,
|
||||
KC_LCTL, KC_GRV, KC_LGUI, KC_LALT, _______, _______, _______, _______, KC_BSLS, KC_QUOT,
|
||||
_______, _______, _______, _______, _______, _______
|
||||
),
|
||||
|
||||
/* Lower
|
||||
*
|
||||
* ,----------------------------------. ,----------------------------------.
|
||||
* | ! | @ | # | $ | % | | ^ | & | * | ( | ) |
|
||||
* |------+------+------+------+------| |------+------+------+------+------|
|
||||
* | Esc | | | | | | | _ | + | { | } |
|
||||
* |------+------+------+------+------| |------+------+------+------+------|
|
||||
* | Caps| ~ | | | | | | | | | | " |
|
||||
* `----------------------------------' `----------------------------------'
|
||||
* ,--------------------. ,--------------------.
|
||||
* | | LOWER| | | | RAISE| Del |
|
||||
* `--------------------' `--------------------.
|
||||
*/
|
||||
[_LOWER] = LAYOUT_split_3x5_3(
|
||||
KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN,
|
||||
KC_ESC, _______, _______, _______, _______, _______, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR,
|
||||
KC_CAPS, KC_TILD, _______, _______, _______, _______, _______, _______, KC_PIPE, KC_DQT,
|
||||
_______, _______, _______, KC_ENT, _______, KC_DEL
|
||||
),
|
||||
|
||||
/* Adjust (Lower + Raise)
|
||||
*
|
||||
* ,----------------------------------. ,----------------------------------.
|
||||
* | F1 | F2 | F3 | F4 | F5 | | F6 | F7 | F8 | F9 | F10 |
|
||||
* |------+------+------+------+------| |------+------+------+------+------|
|
||||
* | F11 | F12 | | | | | | | |Taskmg|caltde|
|
||||
* |------+------+------+------+------| |------+------+------+------+------|
|
||||
* | Reset| | | | | | | | | | |
|
||||
* `----------------------------------' `----------------------------------'
|
||||
* ,--------------------. ,--------------------.
|
||||
* | | LOWER| | | | RAISE| |
|
||||
* `--------------------' `--------------------.
|
||||
*/
|
||||
[_ADJUST] = LAYOUT_split_3x5_3(
|
||||
KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10,
|
||||
KC_F11, KC_F12, _______, _______, _______, _______, _______, _______, TSKMGR, CALTDEL,
|
||||
RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______
|
||||
)
|
||||
};
|
||||
|
||||
layer_state_t layer_state_set_user(layer_state_t state) {
|
||||
return update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST);
|
||||
}
|
||||
|
||||
uint16_t rgb_edit_timer = 0;
|
||||
uint16_t last_rgb_char = 0;
|
||||
|
||||
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
||||
switch(keycode) {
|
||||
case RGB_TOG:
|
||||
case RGB_MOD:
|
||||
case RGB_HUD:
|
||||
case RGB_HUI:
|
||||
case RGB_SAD:
|
||||
case RGB_SAI:
|
||||
case RGB_VAI:
|
||||
case RGB_VAD:
|
||||
rgb_edit_timer = timer_read();
|
||||
last_rgb_char = keycode;
|
||||
return true;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
#ifdef OLED_DRIVER_ENABLE
|
||||
|
||||
oled_rotation_t oled_init_user(oled_rotation_t rotation) {
|
||||
return OLED_ROTATION_180;
|
||||
}
|
||||
|
||||
void render_default_layer_state(void) {
|
||||
oled_write_P(PSTR("Layout: "), false);
|
||||
switch (get_highest_layer(default_layer_state)) {
|
||||
case _QWERTY:
|
||||
oled_write_ln_P(PSTR("Qwerty"), false);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
#ifdef RGBLIGHT_ENABLE
|
||||
bool cleared = false;
|
||||
void render_rgb_state(void) {
|
||||
if(!rgblight_get_mode()) {
|
||||
if(!cleared) {
|
||||
oled_clear();
|
||||
cleared = true;
|
||||
}
|
||||
return;
|
||||
}
|
||||
cleared = false;
|
||||
uint8_t width = (OLED_DISPLAY_WIDTH/OLED_FONT_WIDTH)-10;
|
||||
uint8_t hue = (rgblight_get_hue()*width/255),
|
||||
sat = (rgblight_get_sat()*width/255),
|
||||
val = (rgblight_get_val()*width/255);
|
||||
bool changing_hue = timer_elapsed(rgb_edit_timer) < 1000 && (last_rgb_char == RGB_HUI || last_rgb_char == RGB_HUD);
|
||||
bool changing_sat = timer_elapsed(rgb_edit_timer) < 1000 && (last_rgb_char == RGB_SAI || last_rgb_char == RGB_SAD);
|
||||
bool changing_val = timer_elapsed(rgb_edit_timer) < 1000 && (last_rgb_char == RGB_VAI || last_rgb_char == RGB_VAD);
|
||||
|
||||
uint8_t i;
|
||||
|
||||
oled_write_ln_P(PSTR(""), false);
|
||||
|
||||
oled_write_P(PSTR("Hue: ["), changing_hue);
|
||||
for(i = 0; i < width; ++i) {
|
||||
oled_write_P(i<hue?PSTR("-"):i==hue?PSTR("|"):PSTR(" "), changing_hue);
|
||||
}
|
||||
oled_write_P(PSTR("]"), changing_hue);
|
||||
oled_write_P(PSTR("Sat: ["), changing_sat);
|
||||
for(i = 0; i < width; ++i) {
|
||||
oled_write_P(i<sat?PSTR("-"):i==sat?PSTR("|"):PSTR(" "), changing_sat);
|
||||
}
|
||||
oled_write_P(PSTR("]"), changing_sat);
|
||||
oled_write_P(PSTR("Bri: ["), changing_val);
|
||||
for(i = 0; i < width; ++i) {
|
||||
oled_write_P(i<val?PSTR("-"):i==val?PSTR("|"):PSTR(" "), changing_val);
|
||||
}
|
||||
oled_write_P(PSTR("]"), changing_val);
|
||||
}
|
||||
#endif // RGBLIGHT_ENABLE
|
||||
|
||||
void render_layer_state(void) {
|
||||
oled_write_P(PSTR("Layer: "), false);
|
||||
switch (get_highest_layer(layer_state)) {
|
||||
case _QWERTY:
|
||||
oled_write_ln_P(PSTR("Base"), false);
|
||||
break;
|
||||
case _LOWER:
|
||||
oled_write_ln_P(PSTR("Lower"), false);
|
||||
break;
|
||||
case _RAISE:
|
||||
oled_write_ln_P(PSTR("Raise"), false);
|
||||
break;
|
||||
case _ADJUST:
|
||||
oled_write_ln_P(PSTR("Adjust"), false);
|
||||
break;
|
||||
default:
|
||||
oled_write_ln_P(PSTR("Unknown"), false);
|
||||
}
|
||||
}
|
||||
|
||||
void render_keylock_status(led_t led_state) {
|
||||
oled_write_P(PSTR("Lock: "), false);
|
||||
oled_write_P(PSTR("123"), led_state.num_lock);
|
||||
oled_write_P(PSTR(" "), false);
|
||||
oled_write_ln_P(led_state.caps_lock?PSTR("ABC"):PSTR("abc"), led_state.caps_lock);
|
||||
}
|
||||
|
||||
void render_mod_status(uint8_t modifiers) {
|
||||
oled_write_P(PSTR("Mods: "), false);
|
||||
oled_write_P(PSTR("S"), (modifiers & MOD_MASK_SHIFT));
|
||||
oled_write_P(PSTR(" "), false);
|
||||
oled_write_P(PSTR("C"), (modifiers & MOD_MASK_CTRL));
|
||||
oled_write_P(PSTR(" "), false);
|
||||
oled_write_P(PSTR("A"), (modifiers & MOD_MASK_ALT));
|
||||
oled_write_P(PSTR(" "), false);
|
||||
oled_write_ln_P(PSTR("W"), (modifiers & MOD_MASK_GUI));
|
||||
}
|
||||
|
||||
static void render_status(void) {
|
||||
// Host Keyboard Layer Status
|
||||
render_default_layer_state();
|
||||
render_layer_state();
|
||||
render_keylock_status(host_keyboard_led_state());
|
||||
render_mod_status(get_mods() | get_oneshot_mods());
|
||||
#ifdef RGBLIGHT_ENABLE
|
||||
render_rgb_state();
|
||||
#endif // RGBLIGHT_ENABLE
|
||||
}
|
||||
|
||||
static void render_logo(void) {
|
||||
static const char PROGMEM logo[] = {
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xfc, 0x1c, 0x1c, 0x38, 0xf8,
|
||||
0xf0, 0xe0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xf0, 0x00, 0x00, 0x00,
|
||||
0x03, 0x1f, 0x7f, 0xfe, 0xf0, 0xc0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x87, 0x9f, 0x3f, 0xfc, 0xf0,
|
||||
0xe0, 0xc0, 0x00, 0x01, 0x07, 0x0f, 0x3f, 0x3f, 0x7f, 0xfe, 0xfe, 0xee, 0xce, 0xfe, 0x8e, 0x0e,
|
||||
0xfe, 0x8e, 0x0e, 0xfe, 0x8e, 0x0e, 0xfe, 0xfe, 0x7e, 0xee, 0xdc, 0x9c, 0x38, 0x78, 0xf0, 0xe0,
|
||||
0xc0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xf7, 0xe3, 0xc3, 0xc7, 0x8f, 0x0e, 0x1f,
|
||||
0x1f, 0x3f, 0x7f, 0x7f, 0xfe, 0xfc, 0xf8, 0xf8, 0xf8, 0xf0, 0xf0, 0xf0, 0xe0, 0xe0, 0xe0, 0xe0,
|
||||
0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe1, 0xe1, 0xe7, 0xff, 0xdb, 0xff, 0xff, 0x00, 0x00, 0x00, 0x03,
|
||||
0x1f, 0xff, 0xfe, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0xfc, 0xff, 0xff, 0x8f, 0x8f, 0x0f, 0x0f, 0x0f, 0x0f,
|
||||
0x0e, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x0f, 0x0f, 0x0c, 0x08, 0x0f, 0x0c, 0x08,
|
||||
0x0f, 0x0c, 0x08, 0x0f, 0x0c, 0x08, 0x0f, 0x0f, 0x0e, 0x07, 0x03, 0x01, 0x80, 0xc0, 0xe0, 0x40,
|
||||
0x01, 0x03, 0x07, 0x1f, 0xfe, 0xfc, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0,
|
||||
0xe0, 0xe0, 0xe0, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xf3, 0xf3, 0xf3, 0x03, 0x03, 0x03, 0x03,
|
||||
0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0xf3, 0xff, 0xff, 0x9f, 0x8f, 0x80, 0x80, 0xc0, 0xf0, 0xfc,
|
||||
0x7e, 0x1e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0xce, 0xce, 0xef, 0x67, 0x67, 0x6f, 0x6f, 0xef, 0xee,
|
||||
0xce, 0x8e, 0x0e, 0x0e, 0x0f, 0x0f, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x80, 0xc0, 0xe0, 0xe0, 0x60,
|
||||
0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xfc, 0xff,
|
||||
0xbf, 0x83, 0x8f, 0xff, 0xff, 0xf0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xfe, 0xfe,
|
||||
0x1c, 0x0c, 0x06, 0x06, 0x06, 0x06, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xf8, 0xfc, 0x1c, 0x0e, 0x06,
|
||||
0x06, 0x06, 0x06, 0x06, 0x04, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x0c, 0x06, 0x06, 0x06,
|
||||
0x0e, 0xfe, 0xfc, 0xf8, 0x00, 0x00, 0x03, 0x03, 0x03, 0x03, 0x33, 0x33, 0x33, 0x33, 0x33, 0x31,
|
||||
0x30, 0x30, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x30, 0x30, 0x30, 0x30, 0x78, 0xff,
|
||||
0xef, 0xc7, 0x80, 0x00, 0x00, 0x00, 0xe0, 0xf8, 0xfc, 0x7e, 0x3f, 0x1f, 0x1b, 0x39, 0x70, 0xf0,
|
||||
0xe0, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x3f, 0x3f, 0x1f, 0x01,
|
||||
0x01, 0x01, 0x01, 0x01, 0x07, 0x3f, 0x3f, 0x3c, 0x20, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x3f, 0x3f,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x0f, 0x1f, 0x1c, 0x38, 0x30,
|
||||
0x30, 0x30, 0x30, 0x38, 0x18, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x3f, 0x3f, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x3f, 0x3f, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x38, 0x30, 0x30, 0x30, 0x30, 0x30, 0x38, 0x3f,
|
||||
0x1f, 0x1f, 0x0f, 0x00, 0x00, 0x00, 0x07, 0x1f, 0x1f, 0x3c, 0x30, 0x30, 0x30, 0x30, 0x3c, 0x1f,
|
||||
0x0f, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
||||
};
|
||||
|
||||
oled_write_raw_P(logo, 1024);
|
||||
}
|
||||
|
||||
void oled_task_user(void) {
|
||||
if (is_keyboard_master()) {
|
||||
render_status(); // Renders the current keyboard state (layer, lock, caps, scroll, etc)
|
||||
}
|
||||
else {
|
||||
render_logo();
|
||||
}
|
||||
}
|
||||
#endif
|
||||
@@ -0,0 +1,31 @@
|
||||
/* Copyright 2020 Obosob <obosob@riseup.net>
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#ifdef OLED_DRIVER_ENABLE
|
||||
#define OLED_DISPLAY_128X64
|
||||
#endif
|
||||
|
||||
#ifdef RGBLIGHT_ENABLE
|
||||
// #define RGBLIGHT_ANIMATIONS
|
||||
#define RGBLIGHT_EFFECT_RAINBOW_SWIRL
|
||||
#define RGBLIGHT_HUE_STEP 8
|
||||
#define RGBLIGHT_SAT_STEP 8
|
||||
#define RGBLIGHT_VAL_STEP 8
|
||||
#endif
|
||||
|
||||
#define PERMISSIVE_HOLD
|
||||
@@ -0,0 +1,818 @@
|
||||
/* Copyright 2020 Obosob <obosob@riseup.net>
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
#include QMK_KEYBOARD_H
|
||||
|
||||
enum layer_names {
|
||||
_QWERTY,
|
||||
_COLMAK,
|
||||
_NUM,
|
||||
_NAV,
|
||||
_SYM,
|
||||
_MISC,
|
||||
_ADJUST
|
||||
};
|
||||
|
||||
#define MY_SPC LT(_NAV, KC_SPC)
|
||||
#define MY_ENT LT(_NUM, KC_ENT)
|
||||
#define MY_BSPC SFT_T(KC_BSPC)
|
||||
#define MY_DEL SFT_T(KC_DEL)
|
||||
#define MY_ESC CTL_T(KC_ESC)
|
||||
#define MY_TAB RALT_T(KC_TAB)
|
||||
|
||||
#define KC_NUPI S(KC_NUBS)
|
||||
|
||||
#define OS_SFT OSM(MOD_LSFT)
|
||||
#define OS_CTL OSM(MOD_LCTL)
|
||||
#define OS_GUI OSM(MOD_LGUI)
|
||||
#define OS_ALT OSM(MOD_LALT)
|
||||
|
||||
enum keycodes {
|
||||
QWERTY = SAFE_RANGE,
|
||||
COLEMAK,
|
||||
// layers
|
||||
SYM,
|
||||
MISC,
|
||||
// special keys
|
||||
ENC_PRS,
|
||||
DOTSPC,
|
||||
COMMSPC,
|
||||
EXLMSPC,
|
||||
QUESSPC,
|
||||
DQUOT,
|
||||
QUOT,
|
||||
PRN,
|
||||
BRC,
|
||||
CBR,
|
||||
LTGT,
|
||||
LTGTC,
|
||||
GRV,
|
||||
A_TAB,
|
||||
AS_TAB,
|
||||
WOKE,
|
||||
};
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
|
||||
// Qwerty ________ ________
|
||||
// ________| E |________ ________| I |________
|
||||
// | W | | R |________ ________| U | | O |
|
||||
// ________| |________| | T | | Y | |________| |________
|
||||
// | Q |________| D |________| | | |________| K |________| P |
|
||||
// | | S | | F |________| |________| J | | L | |
|
||||
// |________| |________| | G | | H | |________| |________|
|
||||
// | A |________| C |________| | | |________| SYM |________| : |
|
||||
// | | X | | V |________| |________| M | | MISC | ; |
|
||||
// |________| |________| | B | | N | |________| |________|
|
||||
// | Z |________| |________| | | |________| |________| ? |
|
||||
// | | | Esc |________| |________| Tab | | / |
|
||||
// |________| | Ctrl | Enter |________ ________| Space | Alt | |________|
|
||||
// |________| NUM | Del | | BkSp | NAV |________|
|
||||
// ________| Shift | | Shift |________
|
||||
// |________| |________|
|
||||
|
||||
[_QWERTY] = LAYOUT_split_3x5_3(
|
||||
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,
|
||||
KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, SYM, MISC, KC_SLSH,
|
||||
MY_ESC, MY_ENT, MY_DEL, MY_BSPC, MY_SPC, MY_TAB
|
||||
),
|
||||
// Colemak (Mod-DH) ________ ________
|
||||
// ________| F |________ ________| U |________
|
||||
// | W | | P |________ ________| L | | Y |
|
||||
// ________| |________| | B | | J | |________| |________
|
||||
// | Q |________| S |________| | | |________| E |________| : |
|
||||
// | | R | | T |________| |________| N | | I | ; |
|
||||
// |________| |________| | G | | K | |________| |________|
|
||||
// | A |________| C |________| | | |________| SYM |________| O |
|
||||
// | | X | | D |________| |________| H | | MISC | |
|
||||
// |________| |________| | V | | M | |________| |________|
|
||||
// | Z |________| |________| | | |________| |________| ? |
|
||||
// | | | Esc |________| |________| Tab | | / |
|
||||
// |________| | Ctrl | Enter |________ ________| Space | Alt | |________|
|
||||
// |________| NUM | Del | | BkSp | NAV |________|
|
||||
// ________| Shift | | Shift |________
|
||||
// |________| |________|
|
||||
|
||||
[_COLMAK] = LAYOUT_split_3x5_3(
|
||||
KC_Q, KC_W, KC_F, KC_P, KC_B, KC_J, KC_L, KC_U, KC_Y, KC_SCLN,
|
||||
KC_A, KC_R, KC_S, KC_T, KC_G, KC_K, KC_N, KC_E, KC_I, KC_O,
|
||||
KC_Z, KC_X, KC_C, KC_D, KC_V, KC_M, KC_H, SYM, MISC, KC_SLSH,
|
||||
MY_ESC, MY_ENT, MY_DEL, MY_BSPC, MY_SPC, MY_TAB
|
||||
),
|
||||
// Number ________ ________
|
||||
// ________| F3 |________ ________| 8 |________
|
||||
// | F2 | | F4 |________ ________| 7 | | 9 |
|
||||
// ________| |________| | | | + | |________| |________
|
||||
// | F1 |________| F7 |________| | | |________| 5 |________| / |
|
||||
// | | F6 | | F8 |________| |________| 4 | | 6 | |
|
||||
// |________| |________| | | | 0 | |________| |________|
|
||||
// | F5 |________| F11 |________| | | |________| 2 |________| . |
|
||||
// | | F10 | | F12 |________| |________| 1 | | 3 | |
|
||||
// |________| |________| | | | - | |________| |________|
|
||||
// | F9 |________| |________| | | |________| |________| * |
|
||||
// | | | |________| |________| | | |
|
||||
// |________| | | |________ ________| ADJUST | | |________|
|
||||
// |________| **** | | | | |________|
|
||||
// |________| | | |________|
|
||||
// |________| |________|
|
||||
[_NUM] = LAYOUT_split_3x5_3(
|
||||
KC_F1, KC_F2, KC_F3, KC_F4, XXXXXXX, KC_PLUS, KC_7, KC_8, KC_9, KC_SLSH,
|
||||
KC_F5, KC_F6, KC_F7, KC_F8, XXXXXXX, KC_COMM, KC_4, KC_5, KC_6, KC_DOT,
|
||||
KC_F9, KC_F10, KC_F11, KC_F12, XXXXXXX, KC_MINS, KC_1, KC_2, KC_3, KC_ASTR,
|
||||
XXXXXXX, _______, XXXXXXX, _______, _______, KC_0
|
||||
),
|
||||
// Navigation ________ ________
|
||||
// ________| OS |________ ________| PgUp |________
|
||||
// | OS | Ctrl | OS |________ ________| PgDn | | End |
|
||||
// ________| Alt |________| Shift | AltTab | | Home | |________| |________
|
||||
// | OS |________| Ctrl |________| | | |________| Up |________| PrtScr |
|
||||
// | Super | Alt | | Shift |________| |________| Down | | Right | |
|
||||
// |________| |________| | | | Left | |________| |________|
|
||||
// | Super |________| |________| | | |________| |________| Insert |
|
||||
// | | | | |________| |________| | | | |
|
||||
// |________| |________| | | | | |________| |________|
|
||||
// | |________| |________| | | |________| |________| |
|
||||
// | | | |________| |________| | | |
|
||||
// |________| | | ADJUST |________ ________| | | |________|
|
||||
// |________| | | | | **** |________|
|
||||
// |________| | | |________|
|
||||
// |________| |________|
|
||||
[_NAV] = LAYOUT_split_3x5_3(
|
||||
OS_GUI, OS_ALT, OS_CTL, OS_SFT, XXXXXXX, KC_HOME, KC_PGDN, KC_PGUP, KC_END, KC_PSCR,
|
||||
KC_LGUI, KC_LALT, KC_LCTL, KC_LSFT, XXXXXXX, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_INS,
|
||||
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, AS_TAB, A_TAB, XXXXXXX, XXXXXXX,
|
||||
_______, _______, _______, XXXXXXX, _______, XXXXXXX
|
||||
),
|
||||
// Symbol ________ ________
|
||||
// ________| { |________ ________| |________
|
||||
// | > | | } |________ ________| | | |
|
||||
// ________| |________| | ` | | | |________| |________
|
||||
// | < |________| ( |________| | | |________| |________| | |
|
||||
// | | £ | | ) |________| |________| - | | & | |
|
||||
// |________| |________| | ^ | | _ | |________| |________|
|
||||
// | * |________| [ |________| | | |________| |________| ~ |
|
||||
// | | $ | | ] |________| |________| + | **** | % | |
|
||||
// |________| |________| | @ | | = | |________| |________|
|
||||
// | \ |________| |________| | | |________| |________| # |
|
||||
// | | | ? |________| |________| ! | | |
|
||||
// |________| | | ' |________ ________| . | | |________|
|
||||
// |________| | " | | , | |________|
|
||||
// |________| | | |________|
|
||||
// |________| |________|
|
||||
//
|
||||
[_SYM] = LAYOUT_split_3x5_3(
|
||||
KC_LT, KC_GT, KC_LCBR, KC_RCBR, KC_GRV, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_NUPI,
|
||||
KC_ASTR, KC_HASH, KC_LPRN, KC_RPRN, KC_CIRC, KC_UNDS, KC_MINS, XXXXXXX, KC_AMPR, KC_PIPE,
|
||||
KC_NUBS, KC_DLR, KC_LBRC, KC_RBRC, KC_DQUO, KC_EQL, KC_PLUS, _______, KC_PERC, KC_NUHS,
|
||||
KC_QUES, KC_QUOT, KC_AT, KC_COMM, KC_DOT, KC_EXLM
|
||||
),
|
||||
// Miscellaneous ________ ________
|
||||
// ________| {|} |________ ________| |________
|
||||
// | </|> | | {|} |________ ________| | | |
|
||||
// ________| |________| | | | | |________| |________
|
||||
// | <|> |________| (|) |________| | | |________| |________| |
|
||||
// | | | | (|) |________| |________| | | | |
|
||||
// |________| |________| | | | | |________| |________|
|
||||
// | |________| [|] |________| | | |________| |________| |
|
||||
// | | | | [|] |________| |________| | | | |
|
||||
// |________| |________| | | | | |________| **** |________|
|
||||
// | |________| |________| | | |________| |________| |
|
||||
// | | | ?_^ |________| |________| !_^ | | |
|
||||
// |________| | | '|' |________ ________| ._^ | | |________|
|
||||
// |________| | "|" | | ,_ | |________|
|
||||
// |________| | | |________|
|
||||
// |________| |________|
|
||||
//
|
||||
[_MISC] = LAYOUT_split_3x5_3(
|
||||
LTGT, LTGTC, CBR, CBR, GRV, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
|
||||
XXXXXXX, XXXXXXX, PRN, PRN, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
|
||||
XXXXXXX, XXXXXXX, BRC, BRC, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______, XXXXXXX,
|
||||
QUESSPC, QUOT, DQUOT, COMMSPC, DOTSPC, EXLMSPC
|
||||
),
|
||||
// Adjust ________ ________
|
||||
// ________| RESET |________ ________| |________
|
||||
// | | EEPROM | RESET |________ ________| | | |
|
||||
// ________| |________| | | | | |________| |________
|
||||
// | |________| RGB |________| | | |________| |________| |
|
||||
// | | RGB | Hue+ | RGB |________| |________| | | | |
|
||||
// |________| Toggle |________| Sat+ | RGB | | | |________| |________|
|
||||
// | |________| RGB |________| Bri+ | | |________| |________| |
|
||||
// | | RGB | Hue- | RGB |________| |________| | | | |
|
||||
// |________| Mode |________| Sat- | RGB | | | |________| |________|
|
||||
// | |________| |________| Bri- | | |________| |________| |
|
||||
// | | | |________| |________| | | |
|
||||
// |________| | | |________ ________| | | |________|
|
||||
// |________| **** | | | | **** |________|
|
||||
// |________| | | |________|
|
||||
// |________| |________|
|
||||
[_ADJUST] = LAYOUT_split_3x5_3(
|
||||
XXXXXXX, WOKE, EEP_RST, RESET, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
|
||||
XXXXXXX, RGB_TOG, RGB_HUI, RGB_SAI, RGB_VAI, XXXXXXX, QWERTY, COLEMAK, XXXXXXX, XXXXXXX,
|
||||
XXXXXXX, RGB_MOD, RGB_HUD, RGB_SAD, RGB_VAD, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
|
||||
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX
|
||||
),
|
||||
};
|
||||
|
||||
bool alt_tabbing = false;
|
||||
bool woke_mode = false;
|
||||
uint16_t rgb_edit_timer = 0;
|
||||
uint16_t last_rgb_char = 0;
|
||||
|
||||
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
||||
switch (keycode) {
|
||||
case QWERTY:
|
||||
if (record->event.pressed) {
|
||||
set_single_persistent_default_layer(_QWERTY);
|
||||
}
|
||||
return false;
|
||||
case COLEMAK:
|
||||
if (record->event.pressed) {
|
||||
set_single_persistent_default_layer(_COLMAK);
|
||||
}
|
||||
return false;
|
||||
case SYM:
|
||||
if (record->event.pressed) {
|
||||
layer_on(_SYM);
|
||||
} else {
|
||||
layer_off(_SYM);
|
||||
}
|
||||
return false;
|
||||
case MY_SPC:
|
||||
if (!record->event.pressed) {
|
||||
if(alt_tabbing) {
|
||||
unregister_code(KC_LALT);
|
||||
alt_tabbing = false;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
case MISC:
|
||||
if (record->event.pressed) {
|
||||
layer_on(_MISC);
|
||||
} else {
|
||||
layer_off(_MISC);
|
||||
}
|
||||
return false;
|
||||
case DOTSPC:
|
||||
if (record->event.pressed) {
|
||||
tap_code(KC_DOT);
|
||||
tap_code(KC_SPC);
|
||||
set_oneshot_mods(MOD_LSFT);
|
||||
}
|
||||
return false;
|
||||
case COMMSPC:
|
||||
if (record->event.pressed) {
|
||||
tap_code(KC_COMM);
|
||||
tap_code(KC_SPC);
|
||||
}
|
||||
return false;
|
||||
case EXLMSPC:
|
||||
if (record->event.pressed) {
|
||||
tap_code16(KC_EXLM);
|
||||
tap_code(KC_SPC);
|
||||
set_oneshot_mods(MOD_LSFT);
|
||||
}
|
||||
return false;
|
||||
case QUESSPC:
|
||||
if (record->event.pressed) {
|
||||
tap_code16(KC_QUES);
|
||||
tap_code(KC_SPC);
|
||||
set_oneshot_mods(MOD_LSFT);
|
||||
}
|
||||
return false;
|
||||
case QUOT:
|
||||
if (record->event.pressed) {
|
||||
tap_code(KC_QUOT);
|
||||
tap_code(KC_QUOT);
|
||||
tap_code(KC_LEFT);
|
||||
}
|
||||
return false;
|
||||
case DQUOT:
|
||||
if (record->event.pressed) {
|
||||
tap_code16(KC_DQUO);
|
||||
tap_code16(KC_DQUO);
|
||||
tap_code(KC_LEFT);
|
||||
}
|
||||
return false;
|
||||
case PRN:
|
||||
if (record->event.pressed) {
|
||||
tap_code16(KC_LPRN);
|
||||
tap_code16(KC_RPRN);
|
||||
tap_code(KC_LEFT);
|
||||
}
|
||||
return false;
|
||||
case BRC:
|
||||
if (record->event.pressed) {
|
||||
tap_code(KC_LBRC);
|
||||
tap_code(KC_RBRC);
|
||||
tap_code(KC_LEFT);
|
||||
}
|
||||
return false;
|
||||
case CBR:
|
||||
if (record->event.pressed) {
|
||||
tap_code16(KC_LCBR);
|
||||
tap_code16(KC_RCBR);
|
||||
tap_code(KC_LEFT);
|
||||
}
|
||||
return false;
|
||||
case LTGT:
|
||||
if (record->event.pressed) {
|
||||
tap_code16(KC_LT);
|
||||
tap_code16(KC_GT);
|
||||
tap_code(KC_LEFT);
|
||||
}
|
||||
return false;
|
||||
case LTGTC:
|
||||
if (record->event.pressed) {
|
||||
tap_code16(KC_LT);
|
||||
tap_code(KC_SLSH);
|
||||
tap_code16(KC_GT);
|
||||
tap_code(KC_LEFT);
|
||||
}
|
||||
return false;
|
||||
case GRV:
|
||||
if (record->event.pressed) {
|
||||
tap_code(KC_GRV);
|
||||
tap_code(KC_GRV);
|
||||
tap_code(KC_LEFT);
|
||||
}
|
||||
return false;
|
||||
case AS_TAB:
|
||||
if (record->event.pressed) {
|
||||
register_code(KC_LSFT);
|
||||
} else {
|
||||
unregister_code(KC_LSFT);
|
||||
}
|
||||
case A_TAB:
|
||||
if (record->event.pressed) {
|
||||
register_code(KC_LALT);
|
||||
register_code(KC_TAB);
|
||||
alt_tabbing = true;
|
||||
} else {
|
||||
unregister_code(KC_TAB);
|
||||
}
|
||||
return false;
|
||||
case WOKE:
|
||||
if (!record->event.pressed) {
|
||||
woke_mode = !woke_mode;
|
||||
}
|
||||
return false;
|
||||
case RGB_TOG:
|
||||
case RGB_MOD:
|
||||
case RGB_HUD:
|
||||
case RGB_HUI:
|
||||
case RGB_SAD:
|
||||
case RGB_SAI:
|
||||
case RGB_VAI:
|
||||
case RGB_VAD:
|
||||
rgb_edit_timer = timer_read();
|
||||
last_rgb_char = keycode;
|
||||
return true;
|
||||
}
|
||||
|
||||
if (woke_mode && ((keycode >= KC_A && keycode <= KC_Z) || keycode == MY_BSPC)) {
|
||||
if (record->event.pressed) {
|
||||
tap_code(KC_CAPS);
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
layer_state_t layer_state_set_user(layer_state_t state) {
|
||||
state = update_tri_layer_state(state, _NAV, _NUM, _ADJUST);
|
||||
return state;
|
||||
}
|
||||
|
||||
#ifdef OLED_DRIVER_ENABLE
|
||||
|
||||
#define ANIM_NUM_FRAMES 4
|
||||
#define ANIM_FRAME_DURATION 100
|
||||
|
||||
#ifdef ANIM_REVERSE
|
||||
#define ANIM_TOTAL_FRAMES (2*((ANIM_NUM_FRAMES)-1))
|
||||
#else
|
||||
#define ANIM_TOTAL_FRAMES ANIM_NUM_FRAMES
|
||||
#endif
|
||||
|
||||
uint16_t anim_timer = 0;
|
||||
uint8_t current_anim_frame = 0;
|
||||
|
||||
oled_rotation_t oled_init_user(oled_rotation_t rotation) {
|
||||
return OLED_ROTATION_180;
|
||||
}
|
||||
|
||||
void render_default_layer_state(void) {
|
||||
oled_write_P(PSTR("Layout: "), false);
|
||||
switch (get_highest_layer(default_layer_state)) {
|
||||
case _QWERTY:
|
||||
if(woke_mode) {
|
||||
oled_write_ln_P(PSTR("QwErTy"), false);
|
||||
} else {
|
||||
oled_write_ln_P(PSTR("Qwerty"), false);
|
||||
}
|
||||
break;
|
||||
case _COLMAK:
|
||||
oled_write_ln_P(PSTR("Colemak"), false);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
#ifdef RGBLIGHT_ENABLE
|
||||
bool cleared = false;
|
||||
void render_rgb_state(void) {
|
||||
if(!rgblight_get_mode()) {
|
||||
if(!cleared) {
|
||||
oled_clear();
|
||||
cleared = true;
|
||||
}
|
||||
return;
|
||||
}
|
||||
cleared = false;
|
||||
uint8_t width = (OLED_DISPLAY_WIDTH/OLED_FONT_WIDTH)-10;
|
||||
uint8_t hue = (rgblight_get_hue()*width/255),
|
||||
sat = (rgblight_get_sat()*width/255),
|
||||
val = (rgblight_get_val()*width/255);
|
||||
bool changing_hue = timer_elapsed(rgb_edit_timer) < 1000 && (last_rgb_char == RGB_HUI || last_rgb_char == RGB_HUD);
|
||||
bool changing_sat = timer_elapsed(rgb_edit_timer) < 1000 && (last_rgb_char == RGB_SAI || last_rgb_char == RGB_SAD);
|
||||
bool changing_val = timer_elapsed(rgb_edit_timer) < 1000 && (last_rgb_char == RGB_VAI || last_rgb_char == RGB_VAD);
|
||||
|
||||
uint8_t i;
|
||||
|
||||
oled_write_ln_P(PSTR(""), false);
|
||||
|
||||
oled_write_P(PSTR("Hue: ["), changing_hue);
|
||||
for(i = 0; i < width; ++i) {
|
||||
oled_write_P(i<hue?PSTR("-"):i==hue?PSTR("|"):PSTR(" "), changing_hue);
|
||||
}
|
||||
oled_write_P(PSTR("]"), changing_hue);
|
||||
oled_write_P(PSTR("Sat: ["), changing_sat);
|
||||
for(i = 0; i < width; ++i) {
|
||||
oled_write_P(i<sat?PSTR("-"):i==sat?PSTR("|"):PSTR(" "), changing_sat);
|
||||
}
|
||||
oled_write_P(PSTR("]"), changing_sat);
|
||||
oled_write_P(PSTR("Bri: ["), changing_val);
|
||||
for(i = 0; i < width; ++i) {
|
||||
oled_write_P(i<val?PSTR("-"):i==val?PSTR("|"):PSTR(" "), changing_val);
|
||||
}
|
||||
oled_write_P(PSTR("]"), changing_val);
|
||||
}
|
||||
#endif // RGBLIGHT_ENABLE
|
||||
|
||||
void render_layer_state(void) {
|
||||
oled_write_P(PSTR("Layer: "), false);
|
||||
switch (get_highest_layer(layer_state)) {
|
||||
case _QWERTY:
|
||||
oled_write_ln_P(PSTR("Base"), false);
|
||||
break;
|
||||
case _NAV:
|
||||
oled_write_ln_P(PSTR("Navigation"), false);
|
||||
break;
|
||||
case _NUM:
|
||||
oled_write_ln_P(PSTR("Number"), false);
|
||||
break;
|
||||
case _SYM:
|
||||
oled_write_ln_P(PSTR("Symbol"), false);
|
||||
break;
|
||||
case _MISC:
|
||||
oled_write_ln_P(PSTR("Misc"), false);
|
||||
break;
|
||||
case _ADJUST:
|
||||
oled_write_ln_P(PSTR("Adjust"), false);
|
||||
break;
|
||||
default:
|
||||
oled_write_ln_P(PSTR("Unknown"), false);
|
||||
}
|
||||
}
|
||||
|
||||
void render_keylock_status(led_t led_state) {
|
||||
oled_write_P(PSTR("Lock: "), false);
|
||||
oled_write_P(PSTR("123"), led_state.num_lock);
|
||||
oled_write_P(PSTR(" "), false);
|
||||
oled_write_ln_P(led_state.caps_lock?PSTR("ABC"):PSTR("abc"), led_state.caps_lock);
|
||||
}
|
||||
|
||||
void render_mod_status(uint8_t modifiers) {
|
||||
oled_write_P(PSTR("Mods: "), false);
|
||||
oled_write_P(PSTR("S"), (modifiers & MOD_MASK_SHIFT));
|
||||
oled_write_P(PSTR(" "), false);
|
||||
oled_write_P(PSTR("C"), (modifiers & MOD_MASK_CTRL));
|
||||
oled_write_P(PSTR(" "), false);
|
||||
oled_write_P(PSTR("A"), (modifiers & MOD_MASK_ALT));
|
||||
oled_write_P(PSTR(" "), false);
|
||||
oled_write_ln_P(PSTR("W"), (modifiers & MOD_MASK_GUI));
|
||||
}
|
||||
|
||||
static void render_status(void) {
|
||||
// Host Keyboard Layer Status
|
||||
render_default_layer_state();
|
||||
render_layer_state();
|
||||
render_keylock_status(host_keyboard_led_state());
|
||||
render_mod_status(get_mods() | get_oneshot_mods());
|
||||
#ifdef RGBLIGHT_ENABLE
|
||||
render_rgb_state();
|
||||
#endif // RGBLIGHT_ENABLE
|
||||
}
|
||||
|
||||
static void render_logo(void) {
|
||||
static const char PROGMEM frame[ANIM_NUM_FRAMES][1024] = {
|
||||
{
|
||||
// leekspin: frame 0
|
||||
0xff, 0xbf, 0xfb, 0x6f, 0xff, 0xdb, 0x7f, 0xf7, 0xde, 0x7c, 0xf1, 0xc6, 0x98, 0x21, 0x66, 0x9a,
|
||||
0xc9, 0x24, 0x33, 0xcf, 0x2f, 0xfd, 0xff, 0x6b, 0x7f, 0x9d, 0x81, 0x76, 0x14, 0x81, 0x67, 0x0f,
|
||||
0xfb, 0xff, 0xef, 0xbb, 0xff, 0xef, 0xbb, 0xff, 0xef, 0xbb, 0xff, 0xef, 0xbb, 0xff, 0xef, 0xbb,
|
||||
0xff, 0x6f, 0xfb, 0xdf, 0x77, 0xff, 0x0d, 0xe0, 0x3f, 0xc0, 0x0d, 0x37, 0xd0, 0x26, 0xa9, 0xd8,
|
||||
0xc7, 0x1d, 0xf0, 0xff, 0xff, 0xf0, 0xc7, 0xb1, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xf1, 0xc6,
|
||||
0xff, 0xf7, 0xf8, 0xf3, 0xcf, 0x90, 0xf7, 0xfc, 0xe3, 0x9b, 0x2e, 0xe2, 0xfc, 0x03, 0xfc, 0x7c,
|
||||
0x83, 0x1b, 0x6c, 0xa5, 0xb3, 0x4e, 0x59, 0x64, 0x13, 0xdb, 0xae, 0x20, 0xdf, 0xff, 0xbb, 0xef,
|
||||
0xff, 0xbb, 0xef, 0xdf, 0x7b, 0xef, 0xbf, 0xfb, 0x6f, 0xff, 0xdb, 0x7f, 0xf7, 0xdf, 0x7b, 0xef,
|
||||
0xff, 0xff, 0xdd, 0x77, 0xff, 0xdd, 0x77, 0xff, 0xdd, 0x77, 0xff, 0xdd, 0x77, 0xfe, 0xdc, 0xf1,
|
||||
0xcc, 0x23, 0x99, 0x64, 0x26, 0x98, 0x63, 0x0f, 0x30, 0xcc, 0x33, 0x24, 0xcd, 0x19, 0xe0, 0xff,
|
||||
0xff, 0xde, 0x7b, 0xef, 0xbe, 0xfb, 0xef, 0xbe, 0xfb, 0x6f, 0xfe, 0xdb, 0x7f, 0xf6, 0xdf, 0xfd,
|
||||
0xb7, 0xff, 0x6d, 0xff, 0xdb, 0xff, 0x00, 0xbd, 0x67, 0x48, 0x13, 0xfc, 0x85, 0xff, 0x5f, 0x3f,
|
||||
0xb7, 0x97, 0xcf, 0xcb, 0xeb, 0xcf, 0x97, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
0xef, 0x9f, 0xd7, 0xcf, 0xcb, 0xdf, 0xd7, 0xcf, 0x8f, 0x3f, 0x1f, 0x7f, 0xff, 0xfe, 0xff, 0xf2,
|
||||
0x07, 0xe9, 0x3e, 0x00, 0x35, 0xef, 0xc9, 0x1b, 0xc2, 0xbc, 0x37, 0xc0, 0xff, 0xbf, 0xfb, 0x6e,
|
||||
0xef, 0xfb, 0xde, 0xf7, 0xb7, 0xfd, 0xef, 0xbd, 0xf7, 0x77, 0xdd, 0xff, 0xb7, 0xfd, 0xef, 0xbb,
|
||||
0xff, 0xff, 0xdd, 0xf7, 0x7f, 0xdd, 0xf7, 0x7f, 0xdd, 0xf7, 0x7f, 0xdd, 0xf7, 0xbf, 0xed, 0xff,
|
||||
0xdf, 0xf7, 0xf6, 0x7c, 0xf9, 0xb1, 0xe6, 0xcb, 0x18, 0xa4, 0xb3, 0x09, 0xfc, 0xff, 0xfb, 0x6f,
|
||||
0xfe, 0xdf, 0xfb, 0xbf, 0xf7, 0x7e, 0xef, 0xfd, 0xb7, 0xff, 0x6d, 0xff, 0xdb, 0xff, 0xb6, 0xff,
|
||||
0x6d, 0xff, 0xdb, 0x7f, 0xf6, 0xdf, 0xf9, 0x21, 0x8e, 0xfb, 0x00, 0x7e, 0xc0, 0xff, 0xfe, 0xff,
|
||||
0xf7, 0xff, 0xff, 0xff, 0x3f, 0x3f, 0x7f, 0x7f, 0x3f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f,
|
||||
0x3f, 0x7f, 0x7f, 0x3f, 0x3f, 0x7f, 0x37, 0xff, 0xff, 0xff, 0xff, 0xfc, 0xff, 0xef, 0x3f, 0xc0,
|
||||
0x6e, 0x3b, 0x09, 0xe0, 0x6f, 0x1a, 0x92, 0x64, 0x6d, 0x99, 0xf2, 0x7f, 0xef, 0xfd, 0xb7, 0xff,
|
||||
0x7b, 0xde, 0xf7, 0xbf, 0xfb, 0x7e, 0xef, 0xbf, 0xff, 0xfb, 0xef, 0xbe, 0xfb, 0x6f, 0xfe, 0xdb,
|
||||
0xff, 0xff, 0xfe, 0xf7, 0xbf, 0xfb, 0xff, 0xbf, 0xef, 0xfd, 0xdf, 0xf7, 0x7d, 0xff, 0xee, 0x7f,
|
||||
0xf7, 0xbd, 0xff, 0xef, 0xfb, 0xbf, 0xfd, 0x77, 0xfe, 0xa0, 0xf9, 0xfe, 0xf0, 0xef, 0xbf, 0xf7,
|
||||
0x7f, 0xfb, 0xde, 0xff, 0xbb, 0xff, 0xf7, 0xbe, 0xfb, 0xdf, 0xff, 0xfd, 0xb7, 0xfe, 0xef, 0x7f,
|
||||
0xfb, 0xbf, 0xed, 0xff, 0xf7, 0xbe, 0xfb, 0xdf, 0xf0, 0x06, 0x98, 0xe7, 0x3c, 0x03, 0xcf, 0x2f,
|
||||
0x1f, 0x9f, 0x7f, 0x7f, 0x7e, 0xf8, 0xf1, 0xe6, 0xf8, 0xc9, 0xca, 0xfa, 0xc8, 0xda, 0xf2, 0xcc,
|
||||
0xd9, 0xf2, 0xe0, 0xed, 0xf1, 0xfa, 0xfc, 0x7f, 0x7f, 0x3f, 0xbf, 0x9f, 0x0f, 0xe3, 0x34, 0x8d,
|
||||
0xe3, 0x18, 0x17, 0x85, 0xa0, 0x38, 0xcf, 0x13, 0xf8, 0xef, 0xdd, 0x7f, 0xff, 0xf7, 0xfd, 0xef,
|
||||
0xbb, 0xff, 0x7f, 0xf7, 0xfd, 0xef, 0xbf, 0xfb, 0xee, 0xff, 0xff, 0xbb, 0xef, 0x7f, 0xfb, 0xee,
|
||||
0xff, 0xff, 0xde, 0xf7, 0xff, 0xef, 0xbd, 0xff, 0xdb, 0xff, 0xfe, 0x77, 0x7f, 0xf7, 0xfd, 0x7f,
|
||||
0xf7, 0xff, 0xdb, 0x7e, 0xff, 0xef, 0xfb, 0xff, 0xb7, 0xff, 0xc8, 0xff, 0xff, 0xff, 0xfc, 0x27,
|
||||
0xff, 0xff, 0xff, 0xed, 0xbf, 0xfe, 0xf7, 0x7f, 0xfb, 0xdf, 0xfe, 0xf7, 0xdf, 0xff, 0xfd, 0x6f,
|
||||
0xff, 0xbf, 0xfb, 0xff, 0xde, 0xff, 0xf7, 0xfd, 0xbf, 0x00, 0x77, 0x6c, 0x89, 0x11, 0x04, 0xa2,
|
||||
0x08, 0x69, 0x46, 0x90, 0x02, 0x64, 0x94, 0x24, 0x09, 0x91, 0x85, 0x21, 0x09, 0xff, 0xf7, 0xdd,
|
||||
0x3d, 0x37, 0x1d, 0x1d, 0x06, 0xc6, 0x07, 0x10, 0x20, 0x83, 0x84, 0x30, 0x66, 0x19, 0x92, 0x06,
|
||||
0x40, 0x31, 0x0c, 0xc0, 0x14, 0xb7, 0x09, 0xfa, 0xff, 0xdf, 0xfb, 0xbf, 0xfd, 0xf7, 0xef, 0xef,
|
||||
0xff, 0xdf, 0xf7, 0xff, 0x6e, 0xff, 0xff, 0xde, 0xf7, 0xff, 0x7e, 0xdb, 0xff, 0xb7, 0xff, 0xee,
|
||||
0xff, 0xff, 0x7f, 0xf6, 0xdf, 0xfd, 0xff, 0xff, 0xef, 0xbb, 0xfe, 0x7f, 0xf7, 0xdf, 0xff, 0xf7,
|
||||
0xdd, 0xff, 0xff, 0xbf, 0xed, 0xff, 0xfe, 0xef, 0x3f, 0xde, 0xee, 0xc9, 0xff, 0xff, 0xdf, 0xff,
|
||||
0xc9, 0xff, 0x9e, 0xdf, 0xdf, 0xb7, 0xfd, 0xff, 0xef, 0xff, 0xfb, 0xef, 0xfd, 0xbf, 0xf7, 0xff,
|
||||
0xbb, 0xef, 0xff, 0xfd, 0xff, 0xef, 0x7e, 0xff, 0xb1, 0x06, 0x7b, 0xc9, 0x00, 0x42, 0x98, 0x31,
|
||||
0x46, 0x44, 0x38, 0x89, 0xc4, 0x30, 0x00, 0x42, 0x10, 0x84, 0x20, 0x08, 0x81, 0x03, 0x10, 0x80,
|
||||
0x24, 0x00, 0x88, 0x21, 0x04, 0xc0, 0x08, 0xa1, 0x34, 0x4c, 0x03, 0x90, 0x46, 0x00, 0x30, 0xd1,
|
||||
0x04, 0x69, 0x88, 0x30, 0x22, 0xcb, 0x04, 0x3f, 0xfb, 0xff, 0xfd, 0x6f, 0xfe, 0xf7, 0xbf, 0xfe,
|
||||
0xdb, 0xff, 0xee, 0x7f, 0xf7, 0xbf, 0xfd, 0xef, 0x7e, 0xf7, 0xff, 0xdb, 0xff, 0xb7, 0xfe, 0x7b,
|
||||
0xff, 0xff, 0xff, 0xbb, 0xef, 0xff, 0xf6, 0xff, 0xbf, 0xef, 0xff, 0xdf, 0xfd, 0x7f, 0xfe, 0xbf,
|
||||
0xef, 0xfe, 0xff, 0xdf, 0xff, 0xfe, 0xff, 0xe4, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
0xff, 0xff, 0xfe, 0xfb, 0x37, 0xfd, 0xfe, 0xff, 0xff, 0x6f, 0xff, 0xf6, 0xff, 0xbf, 0xfb, 0xdf,
|
||||
0xff, 0xff, 0x77, 0x7f, 0x9d, 0x9f, 0x27, 0x21, 0xcc, 0x18, 0x63, 0x84, 0x80, 0x2a, 0x29, 0x44,
|
||||
0x59, 0x43, 0x94, 0x34, 0x42, 0x49, 0x2c, 0x92, 0x92, 0x64, 0x0c, 0x80, 0xb8, 0x22, 0x86, 0x34,
|
||||
0x48, 0x23, 0x34, 0x44, 0xc9, 0x18, 0x46, 0x09, 0x80, 0x72, 0x08, 0x61, 0x80, 0x9b, 0x12, 0x64,
|
||||
0x8d, 0x90, 0x23, 0xa8, 0x26, 0x44, 0x59, 0x89, 0x24, 0xd3, 0x1f, 0xff, 0xfd, 0xef, 0xff, 0x7d,
|
||||
0xef, 0xfe, 0xf7, 0xbf, 0xfb, 0xdf, 0x7d, 0xff, 0xf7, 0xbf, 0xfe, 0xdb, 0x7f, 0xfd, 0xff, 0xcf,
|
||||
0xff, 0xff, 0xfb, 0xff, 0x7f, 0xff, 0xb6, 0xff, 0xff, 0xff, 0xfd, 0xb7, 0xff, 0xfb, 0xbf, 0xff,
|
||||
0xef, 0xfb, 0x7e, 0xdf, 0xff, 0xf6, 0xff, 0xdf, 0xff, 0xed, 0xfb, 0xff, 0xef, 0x2f, 0xef, 0xef,
|
||||
0xf7, 0xf7, 0x9f, 0xfb, 0xfc, 0xff, 0xf7, 0xdf, 0xbb, 0x7f, 0xff, 0xef, 0xfe, 0xf7, 0x1f, 0x07,
|
||||
0xd1, 0x19, 0x22, 0x66, 0x44, 0x98, 0x8b, 0x21, 0x64, 0x1a, 0x42, 0xd4, 0x14, 0x23, 0xa8, 0x4d,
|
||||
0x91, 0x92, 0x64, 0x25, 0x99, 0x44, 0x23, 0x88, 0x50, 0x96, 0xa3, 0x18, 0x44, 0x65, 0x99, 0x22,
|
||||
0x8a, 0x69, 0x25, 0x86, 0xd8, 0x1d, 0xb7, 0x9a, 0x9e, 0x30, 0x8b, 0xe2, 0xcc, 0xd9, 0xe1, 0xfc,
|
||||
0xee, 0xf8, 0xfe, 0xe1, 0xc9, 0x06, 0x98, 0x69, 0x22, 0x92, 0x4c, 0x23, 0xa7, 0x1f, 0x7d, 0xff,
|
||||
0xff, 0xbf, 0xef, 0xfb, 0xbe, 0xef, 0x7f, 0xfb, 0xfe, 0x77, 0xff, 0xbf, 0xef, 0xfd, 0xf7, 0xff,
|
||||
|
||||
},
|
||||
{
|
||||
// leekspin: frame 1
|
||||
0xff, 0xbf, 0xfb, 0xcf, 0xff, 0xbb, 0xef, 0xff, 0xbb, 0xef, 0xff, 0xbb, 0xef, 0xff, 0xff, 0xdf,
|
||||
0x77, 0xff, 0xdb, 0xff, 0xb7, 0xff, 0xfb, 0x6f, 0xff, 0xff, 0xdd, 0xf7, 0xff, 0xff, 0xff, 0xbb,
|
||||
0xef, 0xff, 0xbb, 0xef, 0xff, 0xbb, 0xef, 0xff, 0xbb, 0xef, 0xff, 0xbb, 0x6f, 0xff, 0xbb, 0xef,
|
||||
0xff, 0xbb, 0xef, 0x7f, 0xdb, 0xff, 0x27, 0xd0, 0x5f, 0x60, 0x8d, 0x37, 0xe0, 0x8d, 0x31, 0xd8,
|
||||
0xc7, 0x1d, 0xf0, 0xff, 0xff, 0xf0, 0xcf, 0xe0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xf9, 0xc1,
|
||||
0xff, 0xfe, 0xf9, 0xe7, 0xcc, 0x91, 0xf7, 0xfc, 0xe3, 0x99, 0x2e, 0xe2, 0xfc, 0x03, 0xfc, 0x7c,
|
||||
0x03, 0x3b, 0xec, 0x85, 0x33, 0x76, 0xcd, 0xa8, 0x23, 0x5b, 0xee, 0x20, 0x9f, 0xff, 0x7b, 0xef,
|
||||
0xbf, 0xfb, 0xef, 0xbf, 0xfb, 0xef, 0xbf, 0xfb, 0xef, 0xbf, 0xfb, 0x6f, 0xff, 0xdb, 0xff, 0xb7,
|
||||
0xff, 0xff, 0x76, 0xdf, 0xfd, 0x77, 0xde, 0xfb, 0xbf, 0xf6, 0xdf, 0xfd, 0xb7, 0xff, 0x6d, 0xff,
|
||||
0xfe, 0xfb, 0xdf, 0xf6, 0xbf, 0xed, 0xff, 0xef, 0xbf, 0xf6, 0xff, 0xef, 0xfb, 0xbf, 0xee, 0xfb,
|
||||
0xbf, 0xee, 0xfb, 0xbf, 0xee, 0xfb, 0xbf, 0xee, 0xfb, 0xbf, 0xee, 0x7b, 0xdf, 0xfd, 0xb7, 0xfe,
|
||||
0xef, 0xbd, 0xf7, 0x7f, 0xed, 0xff, 0x00, 0x6e, 0xdb, 0x91, 0x24, 0xee, 0x09, 0xff, 0x5f, 0x3f,
|
||||
0xa7, 0x9f, 0xcb, 0xcb, 0xef, 0xcb, 0x9f, 0xb7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
0xff, 0x8f, 0xd7, 0xdf, 0xcb, 0xcf, 0xd7, 0xdf, 0x8f, 0x3f, 0x1f, 0x7f, 0xff, 0xff, 0xff, 0xf0,
|
||||
0x07, 0xb3, 0xec, 0x08, 0x33, 0xf7, 0x8c, 0x66, 0x11, 0xdb, 0x2e, 0xa0, 0xff, 0xdf, 0xf7, 0xbd,
|
||||
0xef, 0xfe, 0xbb, 0xef, 0x7e, 0xdb, 0xff, 0xb6, 0xff, 0x6d, 0xff, 0xdb, 0xff, 0xb6, 0xff, 0x6d,
|
||||
0xff, 0xff, 0xb7, 0xfd, 0xef, 0xbb, 0xff, 0x6e, 0xfb, 0xdf, 0x76, 0xff, 0xdd, 0x77, 0xff, 0xef,
|
||||
0xbf, 0xfb, 0xf6, 0x7f, 0xef, 0xff, 0x7f, 0xed, 0xfd, 0xf7, 0xbf, 0xff, 0xde, 0xf7, 0xfd, 0xbf,
|
||||
0xf7, 0xde, 0xfb, 0xbf, 0xee, 0xfb, 0xdf, 0x76, 0xff, 0xed, 0xbf, 0xfb, 0x6f, 0xfe, 0xdb, 0xff,
|
||||
0xb6, 0xff, 0xed, 0xbf, 0xfb, 0x6f, 0xfc, 0x83, 0x32, 0xde, 0x00, 0xbf, 0xc0, 0xff, 0xfe, 0xff,
|
||||
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf7, 0xff, 0xff, 0xff, 0xff, 0xfc, 0xff, 0xef, 0x3f, 0xc0,
|
||||
0xde, 0x33, 0x0c, 0xe0, 0xb7, 0x1c, 0x85, 0x70, 0x6f, 0x8d, 0xf0, 0x7f, 0xdf, 0xf7, 0xfe, 0xbb,
|
||||
0xef, 0x7f, 0xd9, 0xff, 0xbf, 0xf7, 0xff, 0x6f, 0xff, 0xfb, 0xff, 0xb6, 0xff, 0x6d, 0xff, 0xdb,
|
||||
0xff, 0xff, 0xff, 0xed, 0xbf, 0xfb, 0xff, 0xdf, 0xf7, 0xfd, 0x7f, 0xef, 0xbb, 0xff, 0xdd, 0xff,
|
||||
0x77, 0xfe, 0xef, 0xbb, 0xff, 0x7d, 0xef, 0xff, 0xb6, 0xff, 0xdd, 0xff, 0x7b, 0xde, 0xff, 0xed,
|
||||
0x7f, 0xfb, 0xde, 0xff, 0xb7, 0xfd, 0xff, 0xdb, 0x7f, 0xfe, 0xbb, 0xef, 0x7f, 0xdb, 0xfe, 0xef,
|
||||
0x7b, 0xfe, 0xef, 0x7d, 0xf7, 0xbf, 0xed, 0x7f, 0xf8, 0x02, 0xc6, 0xbd, 0x34, 0x47, 0x47, 0x9f,
|
||||
0x1f, 0x3f, 0x3f, 0x7f, 0x7e, 0xff, 0xff, 0xfe, 0xff, 0xfd, 0xfd, 0xff, 0xfe, 0xff, 0xfd, 0xff,
|
||||
0xfe, 0xff, 0xfe, 0xff, 0xff, 0xff, 0x7f, 0xff, 0x3f, 0x7f, 0x9f, 0x9f, 0x0d, 0xe3, 0x3a, 0x8c,
|
||||
0x63, 0x58, 0x17, 0x84, 0x21, 0xb8, 0xcf, 0x63, 0xd8, 0xff, 0xef, 0xbb, 0xff, 0xff, 0xfd, 0xf7,
|
||||
0xdd, 0xff, 0xbf, 0x7b, 0xff, 0xf6, 0xdf, 0xff, 0xb7, 0xfd, 0xff, 0xef, 0x7d, 0xdf, 0xfb, 0xee,
|
||||
0xff, 0xff, 0xbe, 0xef, 0xfb, 0x7f, 0xef, 0xbe, 0xfb, 0xff, 0x77, 0xff, 0xef, 0x7d, 0xff, 0xfb,
|
||||
0xff, 0xed, 0xff, 0xdf, 0x7d, 0xef, 0xff, 0xf6, 0x7f, 0xdf, 0xfd, 0xb7, 0xff, 0xfb, 0xdf, 0xfd,
|
||||
0xff, 0xb7, 0xff, 0xed, 0x7f, 0xfe, 0xb7, 0xff, 0xfb, 0xdf, 0xff, 0xf7, 0xff, 0xef, 0xff, 0x7d,
|
||||
0xef, 0xff, 0xb7, 0xff, 0xfd, 0xff, 0xdf, 0x77, 0xff, 0x80, 0x36, 0xed, 0x09, 0x12, 0x44, 0x21,
|
||||
0x0c, 0x51, 0x51, 0x86, 0x00, 0x58, 0x46, 0x30, 0x24, 0x85, 0x09, 0x21, 0x85, 0xff, 0x7b, 0xed,
|
||||
0x3d, 0x1d, 0x1d, 0x47, 0x0e, 0x8e, 0x23, 0x00, 0x22, 0x02, 0xc4, 0xb0, 0x26, 0x19, 0x4c, 0x03,
|
||||
0xc0, 0x18, 0x06, 0x60, 0x89, 0xbd, 0x02, 0xfa, 0xff, 0xff, 0xb6, 0xff, 0xfb, 0xbe, 0xf7, 0xf7,
|
||||
0xdf, 0x7f, 0xf7, 0xff, 0x6f, 0xfe, 0xff, 0xdf, 0xfb, 0x6f, 0xfe, 0xdf, 0x7b, 0xff, 0xf7, 0xde,
|
||||
0x23, 0xcf, 0x9f, 0x37, 0x7d, 0xff, 0xff, 0xf7, 0xff, 0xfb, 0x6f, 0xff, 0xdb, 0xff, 0xbf, 0xfe,
|
||||
0xdb, 0xef, 0xff, 0xff, 0xb7, 0xfd, 0x7f, 0xff, 0xef, 0xfb, 0x7f, 0xf7, 0xbd, 0xff, 0xde, 0xdf,
|
||||
0xfb, 0xdf, 0xde, 0xd7, 0xbf, 0xef, 0xfb, 0xf7, 0xfe, 0xfb, 0xfb, 0xfd, 0x7c, 0x7f, 0xfd, 0xfe,
|
||||
0x7d, 0xfd, 0x9e, 0x62, 0x6f, 0xff, 0xff, 0x7f, 0xd2, 0x08, 0xef, 0x31, 0x00, 0x42, 0x48, 0x39,
|
||||
0x86, 0x60, 0x0c, 0xd9, 0x90, 0x20, 0x02, 0x10, 0x44, 0x08, 0x02, 0x10, 0x40, 0x03, 0x11, 0x80,
|
||||
0x20, 0x24, 0x81, 0x08, 0x42, 0x90, 0x04, 0xc1, 0x78, 0x06, 0x24, 0x09, 0x42, 0x40, 0x98, 0x22,
|
||||
0x30, 0xc9, 0x88, 0x32, 0x44, 0x4d, 0x80, 0x3f, 0xff, 0xfe, 0xf7, 0x7f, 0xed, 0xbf, 0xfe, 0xf7,
|
||||
0xbf, 0xfb, 0xdf, 0xfd, 0xef, 0x7f, 0xfb, 0xde, 0xff, 0xef, 0xfb, 0xbf, 0xff, 0x6d, 0xff, 0xf6,
|
||||
0x92, 0x24, 0x65, 0x99, 0xc6, 0x30, 0x8b, 0x67, 0x37, 0x87, 0x6f, 0xff, 0xf5, 0x77, 0x7f, 0xfe,
|
||||
0xff, 0xef, 0xfe, 0x7f, 0xf7, 0xed, 0x0f, 0xfe, 0xfe, 0xfb, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
0xff, 0xff, 0xff, 0xff, 0x7f, 0xb6, 0xec, 0xfe, 0xff, 0x7e, 0xef, 0xff, 0x7f, 0xf7, 0xff, 0xbf,
|
||||
0xef, 0xff, 0xf7, 0x7f, 0x1f, 0x9f, 0x63, 0x03, 0xdc, 0x90, 0x23, 0x8a, 0x20, 0x05, 0xc9, 0x5a,
|
||||
0x11, 0xa4, 0x8b, 0x30, 0x24, 0x4b, 0x48, 0x26, 0x34, 0xc1, 0x8c, 0x22, 0x98, 0x91, 0x66, 0x08,
|
||||
0x32, 0xc4, 0x99, 0x12, 0x62, 0xcc, 0x00, 0x33, 0x04, 0xc0, 0x38, 0x83, 0x40, 0x96, 0x19, 0x61,
|
||||
0x86, 0x18, 0x60, 0x93, 0x4c, 0x24, 0x93, 0x48, 0x6c, 0x83, 0x3f, 0xff, 0xfb, 0xff, 0xdd, 0xff,
|
||||
0xf7, 0xfd, 0xff, 0xde, 0xf7, 0x7f, 0xfb, 0xbf, 0xee, 0xff, 0xbd, 0xf7, 0x7f, 0xfb, 0xff, 0xde,
|
||||
0xfe, 0xff, 0xde, 0xfe, 0xfe, 0xfe, 0x6f, 0xfe, 0xff, 0xff, 0xff, 0xb7, 0xff, 0xdf, 0x7f, 0xff,
|
||||
0xd7, 0xfd, 0xef, 0xff, 0x7d, 0xff, 0xdf, 0xff, 0xf5, 0x7f, 0xf7, 0xff, 0xef, 0xef, 0xe7, 0x7f,
|
||||
0xfb, 0xfb, 0xfe, 0xfd, 0xff, 0xfb, 0xef, 0xfd, 0xdf, 0x7f, 0xff, 0xfb, 0xdf, 0xff, 0x0b, 0x07,
|
||||
0x35, 0xc9, 0x48, 0x92, 0x93, 0x6c, 0x08, 0x93, 0xc4, 0x30, 0x46, 0x99, 0xa1, 0x26, 0x48, 0x8c,
|
||||
0x33, 0xc4, 0x28, 0x0b, 0xd1, 0x34, 0x01, 0xc3, 0x18, 0x64, 0x86, 0x30, 0x4d, 0x90, 0xa6, 0x29,
|
||||
0x49, 0x44, 0xb4, 0x83, 0x5a, 0x9c, 0x37, 0x56, 0x9e, 0x21, 0xcc, 0xd1, 0xd6, 0xe4, 0xc9, 0xfc,
|
||||
0xec, 0xef, 0xf8, 0xe4, 0xc3, 0x19, 0xa4, 0x26, 0xd0, 0x0d, 0x24, 0xd3, 0x47, 0x1f, 0x7e, 0xff,
|
||||
0xff, 0x6f, 0xff, 0xd9, 0xff, 0xbf, 0xe7, 0xff, 0xf9, 0x7f, 0xff, 0xdf, 0xdf, 0xf5, 0xff, 0xfb,
|
||||
|
||||
},
|
||||
{
|
||||
// leekspin: frame 2
|
||||
0xff, 0xbf, 0xfb, 0xef, 0xbf, 0xfb, 0xef, 0xbf, 0xfb, 0xef, 0xbf, 0xfb, 0x6f, 0xff, 0xff, 0xef,
|
||||
0xbf, 0xfb, 0xdf, 0xf7, 0xbf, 0xfb, 0x7f, 0x7f, 0xdb, 0xff, 0xbf, 0xfb, 0xef, 0xff, 0x7f, 0xdf,
|
||||
0xff, 0xf3, 0xbf, 0xef, 0xfb, 0xbf, 0xef, 0xfb, 0xbf, 0xef, 0xfb, 0xbf, 0xef, 0xfb, 0xbf, 0xef,
|
||||
0xfb, 0xbf, 0xef, 0x7b, 0xdf, 0xf7, 0x2f, 0x60, 0xdf, 0x80, 0x2d, 0x57, 0xd0, 0x93, 0x24, 0xfc,
|
||||
0xc3, 0x1b, 0xf4, 0xf7, 0xff, 0xf0, 0xcf, 0xb0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xf9, 0xc1,
|
||||
0xff, 0xfe, 0xf9, 0xe7, 0xcc, 0x91, 0xf7, 0xfc, 0xe3, 0x99, 0x2e, 0xe2, 0xfc, 0x03, 0xec, 0x7c,
|
||||
0x93, 0x2b, 0x6c, 0x95, 0x53, 0xce, 0x39, 0xc4, 0x33, 0x6b, 0xce, 0x90, 0xbf, 0xef, 0xfb, 0xbf,
|
||||
0xef, 0xfb, 0xbf, 0xef, 0xfb, 0xbf, 0xef, 0xfb, 0xbf, 0xef, 0xfb, 0xbf, 0xef, 0xfb, 0xbf, 0xed,
|
||||
0xff, 0xff, 0xee, 0xbb, 0xff, 0x6e, 0xfb, 0xdf, 0x76, 0xff, 0xdd, 0xf7, 0xbf, 0xed, 0xff, 0xff,
|
||||
0xee, 0xff, 0x75, 0xdf, 0xff, 0xf6, 0xdf, 0xff, 0xb7, 0xff, 0xfb, 0xef, 0xfd, 0xb7, 0xff, 0xdb,
|
||||
0xfe, 0x6f, 0xfb, 0xbe, 0xef, 0xfb, 0xbe, 0xef, 0xfb, 0xbe, 0xef, 0xfb, 0xbe, 0xef, 0x7b, 0xde,
|
||||
0xf7, 0x7d, 0xdf, 0xf7, 0xbd, 0xff, 0x00, 0xf7, 0x9c, 0x21, 0x27, 0xd8, 0x46, 0xff, 0x5f, 0x3f,
|
||||
0xa7, 0x9f, 0xcb, 0xcb, 0xef, 0xcb, 0xdf, 0x9f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
0xef, 0x9f, 0xd7, 0xcf, 0xcb, 0xdf, 0xd7, 0xcf, 0x8f, 0x3f, 0x1f, 0x7f, 0xff, 0xff, 0xff, 0xf0,
|
||||
0x07, 0x73, 0xdc, 0x01, 0x6e, 0x99, 0x73, 0x4e, 0x88, 0xf3, 0x1e, 0xc0, 0xff, 0x7f, 0xde, 0xf3,
|
||||
0xbf, 0xee, 0xfb, 0xbf, 0xee, 0xfb, 0xbf, 0xee, 0xfb, 0xbf, 0xee, 0x7b, 0xdf, 0xf6, 0xbf, 0xed,
|
||||
0xff, 0xff, 0x76, 0xdf, 0xfd, 0xb7, 0xff, 0xed, 0xbf, 0xfb, 0x6e, 0xff, 0xbd, 0xef, 0xfe, 0xf7,
|
||||
0xbf, 0xfd, 0xf7, 0xdf, 0x7f, 0xff, 0xb7, 0xfc, 0xef, 0xff, 0xf7, 0xbf, 0xfa, 0xdf, 0xfd, 0xef,
|
||||
0x7b, 0xff, 0xed, 0x7f, 0xde, 0xfb, 0xef, 0xbe, 0xfb, 0xdf, 0xf6, 0x7f, 0xdd, 0xf7, 0xbf, 0xed,
|
||||
0xff, 0xbb, 0xef, 0x7e, 0xdb, 0xff, 0x76, 0xc0, 0x1d, 0x77, 0x00, 0x7f, 0xc0, 0xff, 0xfe, 0xff,
|
||||
0xff, 0xff, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf7, 0xff, 0xff, 0xff, 0xff, 0xfc, 0xff, 0xef, 0x3f, 0xc0,
|
||||
0xbb, 0x37, 0x04, 0xf0, 0xce, 0x39, 0x07, 0x70, 0xdd, 0x86, 0xf2, 0x7f, 0xdf, 0xf7, 0xfd, 0xbf,
|
||||
0xef, 0x79, 0xff, 0xef, 0xfd, 0xdf, 0x7b, 0xef, 0xbf, 0xfd, 0xff, 0xfb, 0xdf, 0xf6, 0xbf, 0xed,
|
||||
0xff, 0xff, 0xef, 0x7d, 0xff, 0xfb, 0xdf, 0xfd, 0xff, 0x6f, 0xfb, 0xbf, 0xfd, 0xef, 0x7e, 0xf7,
|
||||
0xbf, 0xee, 0xfb, 0x7f, 0xdf, 0xfb, 0xbf, 0xfd, 0xef, 0xfe, 0xdf, 0xfb, 0xef, 0xfe, 0xbf, 0xed,
|
||||
0xff, 0xf7, 0xbd, 0xff, 0x6f, 0xfb, 0xfe, 0xdf, 0xf7, 0xfd, 0xbf, 0xfb, 0x6f, 0xfe, 0xf7, 0xff,
|
||||
0xdd, 0x7f, 0xfb, 0xef, 0xfd, 0xdf, 0x7b, 0xff, 0xe4, 0x09, 0xc9, 0xb6, 0x36, 0x4b, 0x47, 0x9f,
|
||||
0x1f, 0x3f, 0x3f, 0x7f, 0x7f, 0xff, 0xfe, 0xfe, 0xff, 0xfd, 0xff, 0xfe, 0xfd, 0xff, 0xfd, 0xff,
|
||||
0xfe, 0xff, 0xfe, 0xff, 0xff, 0xff, 0x7f, 0xff, 0x3f, 0x3f, 0x9f, 0xdf, 0x0d, 0xa3, 0x3a, 0x4c,
|
||||
0xe3, 0x18, 0x17, 0x06, 0x60, 0xd8, 0xcf, 0x33, 0xd8, 0xfe, 0xef, 0x7b, 0xdf, 0xff, 0x7f, 0xfd,
|
||||
0xfd, 0xf7, 0xdf, 0xff, 0xbe, 0xfb, 0xff, 0xb7, 0xdf, 0xfd, 0xff, 0x6e, 0xff, 0xdd, 0xf7, 0xbe,
|
||||
0xff, 0xff, 0xdd, 0xff, 0xef, 0x7b, 0xfe, 0xbf, 0xef, 0x7b, 0xff, 0xbd, 0x37, 0xff, 0xfb, 0x7f,
|
||||
0xf7, 0xfd, 0xef, 0xff, 0xbb, 0xff, 0xf7, 0xfe, 0xdb, 0xff, 0xee, 0xff, 0xfb, 0xbe, 0xff, 0xef,
|
||||
0xfb, 0x7e, 0xdf, 0xf7, 0xff, 0xbd, 0xff, 0xee, 0xff, 0xdb, 0xff, 0xf7, 0x7f, 0xff, 0xf7, 0xbe,
|
||||
0xff, 0x77, 0xff, 0xbb, 0xfe, 0xff, 0xff, 0xb7, 0xff, 0x00, 0xb6, 0xed, 0x09, 0x02, 0x64, 0x81,
|
||||
0x0c, 0x31, 0xc5, 0x48, 0x02, 0x24, 0x98, 0x62, 0x24, 0x05, 0x89, 0x21, 0x05, 0xff, 0xfb, 0x6d,
|
||||
0x3d, 0x9d, 0x17, 0x1c, 0x4d, 0x07, 0x26, 0x80, 0x11, 0x41, 0x84, 0xb0, 0x66, 0x19, 0x0b, 0x82,
|
||||
0x10, 0x64, 0x09, 0x90, 0xc6, 0x3b, 0x08, 0xf6, 0xff, 0xbf, 0xfb, 0xef, 0xff, 0xdd, 0xff, 0xbb,
|
||||
0xff, 0x77, 0xf7, 0xbf, 0xfb, 0xfe, 0xb7, 0xff, 0xdf, 0xfd, 0xef, 0x7f, 0xdd, 0xf7, 0xff, 0x6d,
|
||||
0xff, 0xff, 0x7b, 0xfe, 0xdf, 0xf7, 0xf7, 0x7d, 0xe9, 0xbe, 0xfe, 0xff, 0xff, 0xfd, 0xff, 0xf7,
|
||||
0xfd, 0xcf, 0xff, 0x7f, 0xef, 0xbe, 0xfb, 0xdf, 0xbd, 0xbf, 0xbb, 0xbe, 0xff, 0xbf, 0xef, 0x7d,
|
||||
0x77, 0xff, 0xff, 0xdb, 0xfe, 0xff, 0xef, 0x7b, 0xfe, 0xff, 0xbf, 0xfd, 0xef, 0xff, 0xfb, 0xef,
|
||||
0xff, 0x7b, 0xff, 0xff, 0xfe, 0xbf, 0xef, 0xff, 0xd8, 0x03, 0xbd, 0x64, 0x00, 0x89, 0xa8, 0x22,
|
||||
0x1c, 0xe1, 0x08, 0x56, 0x90, 0x20, 0x04, 0x90, 0x02, 0x20, 0x04, 0x10, 0x41, 0x03, 0x88, 0x20,
|
||||
0x04, 0x40, 0x08, 0x81, 0x30, 0x02, 0x10, 0xc4, 0x30, 0x8e, 0x21, 0x08, 0x22, 0xc1, 0x18, 0xc0,
|
||||
0x31, 0x0c, 0x60, 0x98, 0xc2, 0x23, 0x0c, 0x5f, 0xff, 0xfb, 0xef, 0xfe, 0x77, 0xfd, 0xff, 0xdb,
|
||||
0xff, 0x6f, 0xfb, 0xbf, 0xfd, 0xef, 0xff, 0xdb, 0xfe, 0x7f, 0xf7, 0xdf, 0xfd, 0xef, 0xfb, 0xbf,
|
||||
0xff, 0xff, 0xff, 0xf7, 0xff, 0xdd, 0xff, 0xef, 0xff, 0x7b, 0xff, 0xde, 0xff, 0xff, 0x7b, 0xff,
|
||||
0xf7, 0xff, 0xef, 0xef, 0xde, 0x73, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
0xff, 0xfe, 0xfe, 0xff, 0x89, 0xbf, 0xff, 0xbf, 0xf7, 0x7f, 0x7d, 0xff, 0xef, 0x7e, 0xff, 0xfb,
|
||||
0xdf, 0xff, 0xef, 0x7d, 0x1f, 0x97, 0xa7, 0x21, 0x1c, 0xd0, 0x23, 0x0a, 0x40, 0x14, 0xa4, 0x93,
|
||||
0x99, 0x24, 0x62, 0x8a, 0x19, 0x51, 0x46, 0xb0, 0x8c, 0x43, 0x18, 0xc4, 0x30, 0x26, 0xc4, 0x18,
|
||||
0xc9, 0x26, 0x98, 0x41, 0x4c, 0xb3, 0x80, 0x0d, 0x02, 0x70, 0x88, 0x23, 0xc4, 0x10, 0x96, 0x64,
|
||||
0x09, 0x93, 0x24, 0x68, 0x44, 0x95, 0x89, 0x6a, 0x10, 0xc7, 0x3f, 0xfb, 0xff, 0xff, 0x6e, 0xfb,
|
||||
0xbf, 0xff, 0xfb, 0xef, 0xff, 0x76, 0xff, 0x9f, 0xfd, 0xdf, 0xff, 0xbb, 0xee, 0xff, 0x3d, 0xff,
|
||||
0xff, 0xff, 0xde, 0xfb, 0xff, 0xff, 0xef, 0xbe, 0xff, 0xff, 0xff, 0x77, 0xfd, 0xff, 0xdf, 0xff,
|
||||
0xfb, 0x7e, 0xdf, 0xf7, 0xff, 0xff, 0xfe, 0xdf, 0xfd, 0xfb, 0xfb, 0xf7, 0xdf, 0xd9, 0xbf, 0xbf,
|
||||
0xd7, 0xf7, 0xfb, 0xfc, 0xff, 0xfb, 0xfb, 0xef, 0xb7, 0x7f, 0xff, 0xf7, 0xff, 0xee, 0x0f, 0x0e,
|
||||
0xae, 0x6f, 0x8c, 0x90, 0x53, 0x8c, 0x28, 0x23, 0x99, 0x48, 0x66, 0x91, 0x19, 0x66, 0x48, 0x92,
|
||||
0x94, 0x65, 0x24, 0x89, 0x69, 0x46, 0x12, 0xc4, 0x88, 0x32, 0x93, 0x4c, 0x48, 0x33, 0x84, 0x32,
|
||||
0xca, 0x0c, 0xb1, 0x22, 0xce, 0x9c, 0x33, 0x96, 0xdf, 0x18, 0xa1, 0xe6, 0xd8, 0xc6, 0xf1, 0xf8,
|
||||
0xee, 0xfd, 0xf9, 0xf2, 0xc2, 0x0c, 0x66, 0x90, 0x93, 0x4c, 0x48, 0x33, 0x87, 0x9f, 0x7f, 0xff,
|
||||
0xff, 0xff, 0xd7, 0x7d, 0xfd, 0xf7, 0xdf, 0xfb, 0xbf, 0xfe, 0x7b, 0xdf, 0xff, 0xf7, 0xf7, 0xfd,
|
||||
},
|
||||
{
|
||||
// leekspin: frame 3
|
||||
0xff, 0xef, 0xbf, 0xfb, 0xef, 0xbf, 0xfb, 0xef, 0xbf, 0xfb, 0x6f, 0xff, 0xdb, 0x7f, 0xff, 0xff,
|
||||
0xbb, 0xef, 0x7f, 0xdb, 0xff, 0xb7, 0xfd, 0x5d, 0x02, 0xb8, 0xc6, 0x12, 0x30, 0xc4, 0x32, 0x4a,
|
||||
0x0c, 0xf1, 0xfd, 0xbf, 0xfb, 0x6d, 0xfb, 0xbb, 0x77, 0x77, 0xbb, 0xef, 0x6f, 0xfb, 0xcf, 0xdf,
|
||||
0xbb, 0x6f, 0x7f, 0xdb, 0xff, 0xf7, 0x0f, 0xe0, 0x3f, 0xc0, 0x0d, 0xb7, 0xe0, 0x0d, 0xa9, 0xf8,
|
||||
0xc7, 0x1d, 0xf0, 0xff, 0xff, 0xf0, 0xc7, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xf1, 0xc6,
|
||||
0xff, 0xf7, 0xf8, 0xf3, 0xcf, 0x90, 0xf7, 0xfc, 0xe3, 0x99, 0x2e, 0xe2, 0xfc, 0x03, 0xfc, 0x78,
|
||||
0x13, 0x27, 0xec, 0x19, 0x53, 0xe6, 0x2d, 0xd8, 0x83, 0x3b, 0xee, 0x00, 0x7f, 0xff, 0xbb, 0xef,
|
||||
0xff, 0xbb, 0xef, 0xff, 0xbb, 0xef, 0xff, 0xbb, 0xef, 0xff, 0xbb, 0xef, 0x7f, 0xdb, 0xff, 0xb7,
|
||||
0xff, 0xfb, 0x6f, 0xfe, 0xdb, 0x7f, 0xf6, 0xdf, 0xfd, 0xb7, 0xff, 0x6d, 0xff, 0xdb, 0xff, 0xf7,
|
||||
0xff, 0xfd, 0x9f, 0xfb, 0xf7, 0xff, 0xbb, 0x00, 0x66, 0x99, 0x4c, 0x63, 0x99, 0x8c, 0x63, 0x7c,
|
||||
0x1f, 0xce, 0x26, 0x35, 0xc9, 0x0b, 0x30, 0x4c, 0x83, 0xb0, 0xfc, 0x6f, 0xef, 0xdb, 0xbf, 0x6e,
|
||||
0x7b, 0xdf, 0xf7, 0xbe, 0xee, 0xfd, 0x00, 0xd9, 0x7b, 0x02, 0x86, 0x7c, 0x09, 0xff, 0x5f, 0x3f,
|
||||
0xa7, 0x9f, 0xcb, 0xcb, 0xef, 0xcb, 0xdb, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
0xef, 0x9f, 0xd7, 0xcf, 0xcb, 0xdf, 0xd7, 0xcf, 0x8f, 0x3f, 0x1f, 0x7f, 0xff, 0xff, 0xfb, 0x72,
|
||||
0x87, 0xb9, 0x6c, 0x03, 0x3b, 0xcc, 0xd3, 0x36, 0x88, 0xdb, 0x75, 0x84, 0xff, 0xfb, 0xef, 0xbe,
|
||||
0xfb, 0xef, 0xfe, 0x7b, 0xef, 0xfe, 0xdb, 0xff, 0xb6, 0xff, 0xed, 0xbf, 0xfb, 0x6f, 0xfe, 0xdb,
|
||||
0xff, 0xff, 0x77, 0xfd, 0xef, 0x7b, 0xff, 0xb6, 0xff, 0xed, 0x7f, 0xfb, 0xdf, 0xfe, 0xb7, 0xff,
|
||||
0xee, 0xfe, 0xb7, 0xff, 0x7f, 0xef, 0xf9, 0x02, 0x66, 0x99, 0x92, 0x66, 0x49, 0x98, 0xa6, 0xb1,
|
||||
0xcd, 0xe4, 0xf3, 0xf9, 0xbc, 0xef, 0xfd, 0xde, 0x77, 0xff, 0xed, 0xbb, 0xfb, 0xf6, 0x6f, 0x1f,
|
||||
0x37, 0x4e, 0xce, 0x31, 0x93, 0x63, 0x4c, 0x84, 0x32, 0x59, 0x45, 0x22, 0xaa, 0xc8, 0xfe, 0xff,
|
||||
0xf7, 0xf7, 0xdf, 0x7f, 0x3f, 0x3f, 0x7f, 0x7f, 0x3f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f,
|
||||
0x7f, 0x3f, 0x7f, 0x7f, 0x3f, 0x3f, 0x77, 0xff, 0xff, 0xff, 0xff, 0xfc, 0xff, 0xef, 0x3f, 0xc4,
|
||||
0xdd, 0x33, 0x82, 0xc8, 0x3f, 0x32, 0x82, 0xec, 0x33, 0x86, 0xf8, 0x7f, 0xf7, 0xdd, 0xff, 0xbb,
|
||||
0xee, 0x7f, 0xdd, 0xf7, 0xff, 0xee, 0xbb, 0xff, 0xf7, 0xbf, 0xfe, 0xff, 0xed, 0xbf, 0xfb, 0x6e,
|
||||
0xff, 0xff, 0xbf, 0xed, 0xff, 0xff, 0xb7, 0xff, 0xfd, 0xdf, 0xf7, 0xff, 0x6e, 0xfb, 0xff, 0xb7,
|
||||
0xfe, 0xef, 0x7d, 0xf7, 0xbf, 0xfd, 0xdf, 0xf0, 0x06, 0x99, 0xe4, 0x26, 0xff, 0xfd, 0xdf, 0xff,
|
||||
0xf6, 0xbf, 0xff, 0xee, 0xfb, 0x7f, 0xdd, 0xff, 0x37, 0x9f, 0xce, 0x27, 0x31, 0xcc, 0x62, 0x9b,
|
||||
0x89, 0x26, 0xb2, 0x98, 0x71, 0x46, 0x9e, 0x1d, 0x70, 0x86, 0x89, 0x33, 0x94, 0x87, 0x2f, 0x4f,
|
||||
0x1f, 0xbf, 0x3f, 0x7f, 0x7e, 0xf9, 0xe4, 0x60, 0xdb, 0xd8, 0xc6, 0xf8, 0xc9, 0xda, 0xf2, 0xcc,
|
||||
0xc8, 0xf3, 0xf4, 0xe0, 0xfb, 0xf8, 0xfe, 0x7f, 0x7f, 0x3f, 0x9f, 0x5f, 0x0f, 0xc9, 0x72, 0x0e,
|
||||
0xe1, 0x3c, 0x06, 0x09, 0x61, 0xb4, 0xd7, 0x4c, 0xf1, 0xbf, 0xff, 0xfd, 0xe7, 0xbf, 0xff, 0x7d,
|
||||
0xf7, 0xff, 0xed, 0xff, 0xfe, 0xcf, 0xff, 0xbe, 0xf7, 0xdd, 0xff, 0xef, 0xfe, 0x7b, 0xdf, 0xf7,
|
||||
0xff, 0xff, 0x7b, 0xdf, 0xfe, 0xfb, 0xdf, 0xfd, 0xef, 0xfe, 0xf7, 0xdf, 0xfb, 0xff, 0x76, 0xff,
|
||||
0xef, 0xfd, 0xff, 0xf7, 0xdf, 0x7d, 0xff, 0xff, 0xb0, 0xbf, 0xff, 0xff, 0xf6, 0x9f, 0xff, 0xfb,
|
||||
0xfe, 0xdf, 0xf7, 0xfd, 0x9f, 0xef, 0xf1, 0xf4, 0x66, 0xc9, 0xfc, 0xf3, 0xf9, 0xfc, 0xb6, 0xf8,
|
||||
0xf1, 0xf6, 0xdc, 0xf1, 0xf2, 0xee, 0xf1, 0xf4, 0x64, 0x01, 0xb4, 0x26, 0x49, 0x10, 0x24, 0x81,
|
||||
0x12, 0x94, 0x65, 0x08, 0x02, 0x64, 0x18, 0x42, 0x24, 0x19, 0x01, 0x85, 0x21, 0xbf, 0xff, 0x6d,
|
||||
0x5d, 0x37, 0x1d, 0x1d, 0x86, 0x26, 0x07, 0x10, 0x40, 0x09, 0x21, 0xd2, 0x4c, 0x19, 0x42, 0x13,
|
||||
0x40, 0x4c, 0x11, 0xc0, 0x0e, 0xbb, 0x80, 0xfe, 0xff, 0x6f, 0xfb, 0xbe, 0xf7, 0xdf, 0xfb, 0xff,
|
||||
0xbd, 0xef, 0xfb, 0xff, 0xbd, 0xef, 0xfb, 0xff, 0xdf, 0xfb, 0xef, 0x7e, 0xf7, 0xbf, 0xff, 0x6d,
|
||||
0xff, 0xff, 0xef, 0xfb, 0xbf, 0xfe, 0xef, 0x7b, 0xfe, 0xdf, 0xff, 0xf6, 0xdf, 0x7f, 0xf7, 0xdf,
|
||||
0xfe, 0xfb, 0xdf, 0x77, 0xff, 0xef, 0xfd, 0xff, 0x6f, 0xfc, 0xa7, 0xbf, 0xff, 0xff, 0xd9, 0xdf,
|
||||
0xbe, 0xbf, 0x77, 0x7e, 0xff, 0xdf, 0xfb, 0xfc, 0x7f, 0xdf, 0xff, 0xff, 0xbe, 0xfb, 0xff, 0xfd,
|
||||
0xdf, 0xfe, 0xff, 0x7b, 0xfe, 0xbf, 0xff, 0xef, 0xd9, 0x11, 0xef, 0x28, 0x00, 0x41, 0x4c, 0x31,
|
||||
0xc4, 0x0c, 0x68, 0x93, 0x10, 0x64, 0x01, 0x10, 0x04, 0x41, 0x10, 0x04, 0x00, 0x43, 0x11, 0x00,
|
||||
0x88, 0x22, 0x00, 0x48, 0x82, 0x90, 0x11, 0xc4, 0x30, 0x0d, 0x43, 0x10, 0x24, 0xc1, 0x10, 0xb4,
|
||||
0x81, 0x68, 0x24, 0x90, 0x4a, 0x2b, 0x80, 0x3f, 0xff, 0xdb, 0xff, 0xf7, 0xfd, 0xbf, 0xee, 0xff,
|
||||
0x7b, 0xef, 0xbe, 0xff, 0xed, 0x7f, 0xf6, 0xbf, 0xfb, 0xfe, 0x6f, 0xff, 0xdb, 0xff, 0xfd, 0x6f,
|
||||
0xff, 0xff, 0xfb, 0xfe, 0xef, 0xff, 0xbd, 0xff, 0xf7, 0xff, 0xbd, 0xff, 0xef, 0xff, 0xdf, 0xfe,
|
||||
0xff, 0xbd, 0xff, 0xdf, 0xff, 0xff, 0xf7, 0x9c, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
0xff, 0xf9, 0xdf, 0x5f, 0xe6, 0xfd, 0xff, 0xff, 0xf7, 0xbf, 0xfb, 0xff, 0xfd, 0xdf, 0xfe, 0xff,
|
||||
0xf7, 0xbd, 0xff, 0x5f, 0x37, 0x9f, 0x47, 0x61, 0x9c, 0x10, 0x63, 0x06, 0xc0, 0x09, 0x64, 0x93,
|
||||
0x18, 0x66, 0x82, 0x59, 0x11, 0xa6, 0xa4, 0x19, 0x42, 0x32, 0x8c, 0x44, 0x20, 0x98, 0x47, 0x68,
|
||||
0x08, 0xd2, 0x93, 0x24, 0x8c, 0x70, 0x02, 0x0d, 0xc0, 0x32, 0x08, 0xe1, 0x82, 0x0a, 0x3a, 0xc0,
|
||||
0x16, 0x44, 0x61, 0x19, 0x46, 0xc8, 0x31, 0x06, 0xd8, 0x43, 0x3f, 0xfe, 0xff, 0xf7, 0xbd, 0xff,
|
||||
0xdb, 0xff, 0xf7, 0xff, 0xfd, 0xbf, 0xef, 0xef, 0xff, 0x6d, 0xff, 0xf7, 0xfe, 0xfb, 0xaf, 0xff,
|
||||
0xff, 0xff, 0xbe, 0xef, 0xfd, 0xff, 0xff, 0xdf, 0xfd, 0xff, 0x7f, 0xfb, 0xdf, 0xfe, 0xef, 0xfd,
|
||||
0x7f, 0xff, 0xdb, 0xff, 0xfd, 0xdf, 0xfe, 0x7e, 0xfb, 0xef, 0xef, 0xdf, 0x9f, 0xff, 0xdf, 0xdf,
|
||||
0x6f, 0xef, 0xf3, 0xfc, 0xfd, 0xff, 0xf7, 0xef, 0xbf, 0x7d, 0xff, 0xfe, 0xef, 0xdf, 0x1b, 0x26,
|
||||
0x27, 0xc9, 0x98, 0x12, 0x63, 0x2c, 0x82, 0x5a, 0x41, 0x94, 0x93, 0x2c, 0x20, 0xd3, 0x8c, 0x24,
|
||||
0x53, 0x48, 0x25, 0xb4, 0x83, 0x28, 0x24, 0xc5, 0x11, 0x52, 0x8c, 0x20, 0x9b, 0xa0, 0x26, 0x59,
|
||||
0x82, 0x2a, 0x68, 0x86, 0x99, 0x5c, 0x37, 0x96, 0x5e, 0xb1, 0x84, 0xcc, 0xf1, 0xc6, 0xc9, 0xf8,
|
||||
0xfe, 0xed, 0xf8, 0xeb, 0xc2, 0x14, 0x51, 0x4d, 0xa4, 0x92, 0x18, 0x63, 0x47, 0x9f, 0x3f, 0xff,
|
||||
0xff, 0xff, 0xf7, 0xdc, 0xff, 0xbb, 0xff, 0xf6, 0xdf, 0x7f, 0xff, 0xde, 0xf7, 0xff, 0xfb, 0xfe
|
||||
}
|
||||
};
|
||||
|
||||
if(timer_elapsed(anim_timer) > ANIM_FRAME_DURATION) {
|
||||
anim_timer = timer_read();
|
||||
current_anim_frame = (current_anim_frame + 1) % ANIM_TOTAL_FRAMES;
|
||||
oled_write_raw_P(frame[abs((ANIM_NUM_FRAMES-1)-current_anim_frame)], 1024);
|
||||
}
|
||||
}
|
||||
|
||||
void oled_task_user(void) {
|
||||
if (is_keyboard_master()) {
|
||||
render_status(); // Renders the current keyboard state (layer, lock, caps, scroll, etc)
|
||||
}
|
||||
else {
|
||||
render_logo();
|
||||
}
|
||||
}
|
||||
#endif
|
||||
@@ -0,0 +1 @@
|
||||
# Obosob's keymap for Arch-36
|
||||
@@ -0,0 +1,3 @@
|
||||
EXTRAKEY_ENABLE = no # Audio control and System control
|
||||
UNICODE_ENABLE = no # Unicode
|
||||
LTO_ENABLE = yes
|
||||
@@ -0,0 +1,16 @@
|
||||
# Arch-36
|
||||
|
||||
An ergonomic 30% split keyboard
|
||||
|
||||
* Keyboard Maintainer: [obosob](https://github.com/obosob)
|
||||
* Hardware Supported: Pro Micro 5V/16MHz and compatible.
|
||||
|
||||
Make example for this keyboard (after setting up your build environment):
|
||||
|
||||
make arch_36:default
|
||||
|
||||
Example of flashing this keyboard:
|
||||
|
||||
make arch_36:default:flash
|
||||
|
||||
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).
|
||||
@@ -0,0 +1,26 @@
|
||||
# MCU name
|
||||
MCU = atmega32u4
|
||||
|
||||
# Bootloader selection
|
||||
BOOTLOADER = caterina
|
||||
|
||||
# Build Options
|
||||
# change yes to no to disable
|
||||
#
|
||||
BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration
|
||||
MOUSEKEY_ENABLE = no # Mouse keys
|
||||
EXTRAKEY_ENABLE = yes # Audio control and System control
|
||||
CONSOLE_ENABLE = no # Console for debug
|
||||
COMMAND_ENABLE = no # 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 = no # USB Nkey Rollover
|
||||
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
|
||||
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
|
||||
OLED_DRIVER_ENABLE = yes # Enables the use of OLED displays
|
||||
BLUETOOTH_ENABLE = no # Enable Bluetooth
|
||||
AUDIO_ENABLE = no # Audio output
|
||||
SPLIT_KEYBOARD = yes # Split common
|
||||
|
||||
LAYOUTS = split_3x5_3
|
||||
@@ -0,0 +1,25 @@
|
||||
/* Copyright 2020 sh_xguitar
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
#include "ash_xiix.h"
|
||||
|
||||
bool led_update_kb(led_t led_state) {
|
||||
if (led_update_user(led_state)) {
|
||||
writePin(NUM_LOCK_LED_PIN, led_state.num_lock);
|
||||
writePin(CAPS_LOCK_LED_PIN, led_state.caps_lock);
|
||||
writePin(SCROLL_LOCK_LED_PIN, led_state.scroll_lock);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
@@ -0,0 +1,51 @@
|
||||
/* Copyright 2020 sh_xguitar
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
#pragma once
|
||||
|
||||
#include "quantum.h"
|
||||
|
||||
/* This a shortcut to help you visually see your layout.
|
||||
*
|
||||
* The first section contains all of the arguments representing the physical
|
||||
* layout of the board and position of the keys.
|
||||
*
|
||||
* The second converts the arguments into a two-dimensional array which
|
||||
* represents the switch matrix.
|
||||
*/
|
||||
#define LAYOUT_all( \
|
||||
k00, k01, k02, k03, k60, k61, k62, k63, k04, k05, k06, k07, k08, k54, k55, k56, k57, \
|
||||
k64, k65, k66, k67, \
|
||||
k10, k11, k12, k13, k70, k71, k72, k73, k14, k15, k16, k17, k18, k19, k74, k75, k76, k77, \
|
||||
k20, k21, k22, k23, k80, k81, k82, k83, k24, k25, k26, k27, k28, k29, k84, k85, k86, k87, \
|
||||
k30, k31, k32, k33, k90, k91, k92, k93, k34, k35, k36, k37, k38, k94, k95, k96, k97, \
|
||||
k40, k41, k42, k43, ka0, ka1, ka2, ka3, k44, k45, k46, k47, k48, ka9, ka4, ka5, ka6, ka7, \
|
||||
k50, k51, k52, k53, kb4, kb7, ka8, kb8, kb9, kb5, kb6 \
|
||||
) \
|
||||
{ \
|
||||
{ k00, k01, k02, k03, k04, k05, k06, k07, k08, KC_NO }, \
|
||||
{ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19 }, \
|
||||
{ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29 }, \
|
||||
{ k30, k31, k32, k33, k34, k35, k36, k37, k38, KC_NO }, \
|
||||
{ k40, k41, k42, k43, k44, k45, k46, k47, k48, KC_NO }, \
|
||||
{ k50, k51, k52, k53, k54, k55, k56, k57, KC_NO, KC_NO }, \
|
||||
{ k60, k61, k62, k63, k64, k65, k66, k67, KC_NO, KC_NO }, \
|
||||
{ k70, k71, k72, k73, k74, k75, k76, k77, KC_NO, KC_NO }, \
|
||||
{ k80, k81, k82, k83, k84, k85, k86, k87, KC_NO, KC_NO }, \
|
||||
{ k90, k91, k92, k93, k94, k95, k96, k97, KC_NO, KC_NO }, \
|
||||
{ ka0, ka1, ka2, ka3, ka4, ka5, ka6, ka7, ka8, ka9 }, \
|
||||
{ KC_NO, KC_NO, KC_NO, KC_NO, kb4, kb5, kb6, kb7, kb8, kb9 } \
|
||||
}
|
||||
|
||||
@@ -0,0 +1,56 @@
|
||||
/*
|
||||
Copyright 2020 sh_xguitar
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "config_common.h"
|
||||
|
||||
/* USB Device descriptor parameter */
|
||||
#define VENDOR_ID 0xFEED
|
||||
#define PRODUCT_ID 0x14BC
|
||||
#define DEVICE_VER 0x0001
|
||||
#define MANUFACTURER ASH
|
||||
#define PRODUCT XIIX
|
||||
|
||||
/* key matrix size */
|
||||
#define MATRIX_ROWS 12
|
||||
#define MATRIX_COLS 10
|
||||
|
||||
/*
|
||||
* 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 { C6, B6, B5, B4, D7, D0, D1, D2, D3, D5, D4, D6 }
|
||||
#define MATRIX_COL_PINS { F1, F4, F5, F6, B0, B2, B1, B3, B7, C7 }
|
||||
#define UNUSED_PINS
|
||||
|
||||
#define NUM_LOCK_LED_PIN E6
|
||||
#define CAPS_LOCK_LED_PIN F0
|
||||
#define SCROLL_LOCK_LED_PIN F7
|
||||
|
||||
/* COL2ROW, ROW2COL*/
|
||||
#define DIODE_DIRECTION COL2ROW
|
||||
|
||||
/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
|
||||
#define DEBOUNCE 5
|
||||
|
||||
/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
|
||||
#define LOCKING_SUPPORT_ENABLE
|
||||
#define LOCKING_RESYNC_ENABLE
|
||||
@@ -0,0 +1,540 @@
|
||||
{
|
||||
"keyboard_name": "ASH-XIIX",
|
||||
"url": "config.qmk.fm",
|
||||
"maintainer": "qmk",
|
||||
"width": 19.5,
|
||||
"height": 7.25,
|
||||
"layouts": {
|
||||
"LAYOUT_all": {
|
||||
"layout": [
|
||||
{
|
||||
"label": "Esc",
|
||||
"x": 0,
|
||||
"y": 0
|
||||
},
|
||||
{
|
||||
"label": "F1",
|
||||
"x": 1.25,
|
||||
"y": 0
|
||||
},
|
||||
{
|
||||
"label": "F2",
|
||||
"x": 2.25,
|
||||
"y": 0
|
||||
},
|
||||
{
|
||||
"label": "F3",
|
||||
"x": 3.25,
|
||||
"y": 0
|
||||
},
|
||||
{
|
||||
"label": "F4",
|
||||
"x": 4.25,
|
||||
"y": 0
|
||||
},
|
||||
{
|
||||
"label": "F5",
|
||||
"x": 5.5,
|
||||
"y": 0
|
||||
},
|
||||
{
|
||||
"label": "F6",
|
||||
"x": 6.5,
|
||||
"y": 0
|
||||
},
|
||||
{
|
||||
"label": "F7",
|
||||
"x": 7.5,
|
||||
"y": 0
|
||||
},
|
||||
{
|
||||
"label": "F8",
|
||||
"x": 8.5,
|
||||
"y": 0
|
||||
},
|
||||
{
|
||||
"label": "F9",
|
||||
"x": 9.75,
|
||||
"y": 0
|
||||
},
|
||||
{
|
||||
"label": "F10",
|
||||
"x": 10.75,
|
||||
"y": 0
|
||||
},
|
||||
{
|
||||
"label": "F11",
|
||||
"x": 11.75,
|
||||
"y": 0
|
||||
},
|
||||
{
|
||||
"label": "F12",
|
||||
"x": 12.75,
|
||||
"y": 0
|
||||
},
|
||||
{
|
||||
"label": "Insert",
|
||||
"x": 15.5,
|
||||
"y": 0
|
||||
},
|
||||
{
|
||||
"label": "Home",
|
||||
"x": 16.5,
|
||||
"y": 0
|
||||
},
|
||||
{
|
||||
"label": "PgUp",
|
||||
"x": 17.5,
|
||||
"y": 0
|
||||
},
|
||||
{
|
||||
"label": "PrtSc",
|
||||
"x": 18.5,
|
||||
"y": 0
|
||||
},
|
||||
{
|
||||
"label": "Del",
|
||||
"x": 15.5,
|
||||
"y": 1
|
||||
},
|
||||
{
|
||||
"label": "End",
|
||||
"x": 16.5,
|
||||
"y": 1
|
||||
},
|
||||
{
|
||||
"label": "PgDn",
|
||||
"x": 17.5,
|
||||
"y": 1
|
||||
},
|
||||
{
|
||||
"label": "Scroll Lock",
|
||||
"x": 18.5,
|
||||
"y": 1
|
||||
},
|
||||
{
|
||||
"label": "~",
|
||||
"x": 0,
|
||||
"y": 2
|
||||
},
|
||||
{
|
||||
"label": "!",
|
||||
"x": 1,
|
||||
"y": 2
|
||||
},
|
||||
{
|
||||
"label": "@",
|
||||
"x": 2,
|
||||
"y": 2
|
||||
},
|
||||
{
|
||||
"label": "#",
|
||||
"x": 3,
|
||||
"y": 2
|
||||
},
|
||||
{
|
||||
"label": "$",
|
||||
"x": 4,
|
||||
"y": 2
|
||||
},
|
||||
{
|
||||
"label": "%",
|
||||
"x": 5,
|
||||
"y": 2
|
||||
},
|
||||
{
|
||||
"label": "^",
|
||||
"x": 6,
|
||||
"y": 2
|
||||
},
|
||||
{
|
||||
"label": "&",
|
||||
"x": 7,
|
||||
"y": 2
|
||||
},
|
||||
{
|
||||
"label": "",
|
||||
"x": 8,
|
||||
"y": 2
|
||||
},
|
||||
{
|
||||
"label": "(",
|
||||
"x": 9,
|
||||
"y": 2
|
||||
},
|
||||
{
|
||||
"label": ")",
|
||||
"x": 10,
|
||||
"y": 2
|
||||
},
|
||||
{
|
||||
"label": "_",
|
||||
"x": 11,
|
||||
"y": 2
|
||||
},
|
||||
{
|
||||
"label": "+",
|
||||
"x": 12,
|
||||
"y": 2
|
||||
},
|
||||
{
|
||||
"label": "Backspace",
|
||||
"x": 13,
|
||||
"y": 2,
|
||||
"w": 2
|
||||
},
|
||||
{
|
||||
"label": "Num Lock",
|
||||
"x": 15.5,
|
||||
"y": 2
|
||||
},
|
||||
{
|
||||
"label": "/",
|
||||
"x": 16.5,
|
||||
"y": 2
|
||||
},
|
||||
{
|
||||
"x": 17.5,
|
||||
"y": 2
|
||||
},
|
||||
{
|
||||
"label": "Pause",
|
||||
"x": 18.5,
|
||||
"y": 2
|
||||
},
|
||||
{
|
||||
"label": "Tab",
|
||||
"x": 0,
|
||||
"y": 3,
|
||||
"w": 1.5
|
||||
},
|
||||
{
|
||||
"label": "Q",
|
||||
"x": 1.5,
|
||||
"y": 3
|
||||
},
|
||||
{
|
||||
"label": "W",
|
||||
"x": 2.5,
|
||||
"y": 3
|
||||
},
|
||||
{
|
||||
"label": "E",
|
||||
"x": 3.5,
|
||||
"y": 3
|
||||
},
|
||||
{
|
||||
"label": "R",
|
||||
"x": 4.5,
|
||||
"y": 3
|
||||
},
|
||||
{
|
||||
"label": "T",
|
||||
"x": 5.5,
|
||||
"y": 3
|
||||
},
|
||||
{
|
||||
"label": "Y",
|
||||
"x": 6.5,
|
||||
"y": 3
|
||||
},
|
||||
{
|
||||
"label": "U",
|
||||
"x": 7.5,
|
||||
"y": 3
|
||||
},
|
||||
{
|
||||
"label": "I",
|
||||
"x": 8.5,
|
||||
"y": 3
|
||||
},
|
||||
{
|
||||
"label": "O",
|
||||
"x": 9.5,
|
||||
"y": 3
|
||||
},
|
||||
{
|
||||
"label": "P",
|
||||
"x": 10.5,
|
||||
"y": 3
|
||||
},
|
||||
{
|
||||
"label": "{",
|
||||
"x": 11.5,
|
||||
"y": 3
|
||||
},
|
||||
{
|
||||
"label": "}",
|
||||
"x": 12.5,
|
||||
"y": 3
|
||||
},
|
||||
{
|
||||
"label": "|",
|
||||
"x": 13.5,
|
||||
"y": 3,
|
||||
"w": 1.5
|
||||
},
|
||||
{
|
||||
"label": "7",
|
||||
"x": 15.5,
|
||||
"y": 3
|
||||
},
|
||||
{
|
||||
"label": "8",
|
||||
"x": 16.5,
|
||||
"y": 3
|
||||
},
|
||||
{
|
||||
"label": "9",
|
||||
"x": 17.5,
|
||||
"y": 3
|
||||
},
|
||||
{
|
||||
"label": "-",
|
||||
"x": 18.5,
|
||||
"y": 3
|
||||
},
|
||||
{
|
||||
"label": "Caps Lock",
|
||||
"x": 0,
|
||||
"y": 4,
|
||||
"w": 1.75
|
||||
},
|
||||
{
|
||||
"label": "A",
|
||||
"x": 1.75,
|
||||
"y": 4
|
||||
},
|
||||
{
|
||||
"label": "S",
|
||||
"x": 2.75,
|
||||
"y": 4
|
||||
},
|
||||
{
|
||||
"label": "D",
|
||||
"x": 3.75,
|
||||
"y": 4
|
||||
},
|
||||
{
|
||||
"label": "F",
|
||||
"x": 4.75,
|
||||
"y": 4
|
||||
},
|
||||
{
|
||||
"label": "G",
|
||||
"x": 5.75,
|
||||
"y": 4
|
||||
},
|
||||
{
|
||||
"label": "H",
|
||||
"x": 6.75,
|
||||
"y": 4
|
||||
},
|
||||
{
|
||||
"label": "J",
|
||||
"x": 7.75,
|
||||
"y": 4
|
||||
},
|
||||
{
|
||||
"label": "K",
|
||||
"x": 8.75,
|
||||
"y": 4
|
||||
},
|
||||
{
|
||||
"label": "L",
|
||||
"x": 9.75,
|
||||
"y": 4
|
||||
},
|
||||
{
|
||||
"label": ":",
|
||||
"x": 10.75,
|
||||
"y": 4
|
||||
},
|
||||
{
|
||||
"label": "\"",
|
||||
"x": 11.75,
|
||||
"y": 4
|
||||
},
|
||||
{
|
||||
"label": "Enter",
|
||||
"x": 12.75,
|
||||
"y": 4,
|
||||
"w": 2.25
|
||||
},
|
||||
{
|
||||
"label": "4",
|
||||
"x": 15.5,
|
||||
"y": 4
|
||||
},
|
||||
{
|
||||
"label": "5",
|
||||
"x": 16.5,
|
||||
"y": 4
|
||||
},
|
||||
{
|
||||
"label": "6",
|
||||
"x": 17.5,
|
||||
"y": 4
|
||||
},
|
||||
{
|
||||
"label": "+",
|
||||
"x": 18.5,
|
||||
"y": 4
|
||||
},
|
||||
{
|
||||
"label": "Shift",
|
||||
"x": 0,
|
||||
"y": 5,
|
||||
"w": 1.25
|
||||
},
|
||||
{
|
||||
"label": "ISO1",
|
||||
"x": 1.25,
|
||||
"y": 5
|
||||
},
|
||||
{
|
||||
"label": "Z",
|
||||
"x": 2.25,
|
||||
"y": 5
|
||||
},
|
||||
{
|
||||
"label": "X",
|
||||
"x": 3.25,
|
||||
"y": 5
|
||||
},
|
||||
{
|
||||
"label": "C",
|
||||
"x": 4.25,
|
||||
"y": 5
|
||||
},
|
||||
{
|
||||
"label": "V",
|
||||
"x": 5.25,
|
||||
"y": 5
|
||||
},
|
||||
{
|
||||
"label": "B",
|
||||
"x": 6.25,
|
||||
"y": 5
|
||||
},
|
||||
{
|
||||
"label": "N",
|
||||
"x": 7.25,
|
||||
"y": 5
|
||||
},
|
||||
{
|
||||
"label": "M",
|
||||
"x": 8.25,
|
||||
"y": 5
|
||||
},
|
||||
{
|
||||
"label": "<",
|
||||
"x": 9.25,
|
||||
"y": 5
|
||||
},
|
||||
{
|
||||
"label": ">",
|
||||
"x": 10.25,
|
||||
"y": 5
|
||||
},
|
||||
{
|
||||
"label": "?",
|
||||
"x": 11.25,
|
||||
"y": 5
|
||||
},
|
||||
{
|
||||
"label": "Shift",
|
||||
"x": 12.25,
|
||||
"y": 5,
|
||||
"w": 1.75
|
||||
},
|
||||
{
|
||||
"label": "up",
|
||||
"x": 14.25,
|
||||
"y": 5.25
|
||||
},
|
||||
{
|
||||
"label": "1",
|
||||
"x": 15.5,
|
||||
"y": 5
|
||||
},
|
||||
{
|
||||
"label": "2",
|
||||
"x": 16.5,
|
||||
"y": 5
|
||||
},
|
||||
{
|
||||
"label": "3",
|
||||
"x": 17.5,
|
||||
"y": 5
|
||||
},
|
||||
{
|
||||
"label": "Enter",
|
||||
"x": 18.5,
|
||||
"y": 5,
|
||||
"h": 2
|
||||
},
|
||||
{
|
||||
"label": "Ctrl",
|
||||
"x": 0,
|
||||
"y": 6,
|
||||
"w": 1.25
|
||||
},
|
||||
{
|
||||
"label": "OS",
|
||||
"x": 1.25,
|
||||
"y": 6,
|
||||
"w": 1.25
|
||||
},
|
||||
{
|
||||
"label": "Alt",
|
||||
"x": 2.5,
|
||||
"y": 6,
|
||||
"w": 1.25
|
||||
},
|
||||
{
|
||||
"x": 3.75,
|
||||
"y": 6,
|
||||
"w": 6.25
|
||||
},
|
||||
{
|
||||
"label": "Alt",
|
||||
"x": 10,
|
||||
"y": 6,
|
||||
"w": 1.5
|
||||
},
|
||||
{
|
||||
"label": "Ctrl",
|
||||
"x": 11.5,
|
||||
"y": 6,
|
||||
"w": 1.5
|
||||
},
|
||||
{
|
||||
"label": "left",
|
||||
"x": 13.25,
|
||||
"y": 6.25
|
||||
},
|
||||
{
|
||||
"label": "down",
|
||||
"x": 14.25,
|
||||
"y": 6.25
|
||||
},
|
||||
{
|
||||
"label": "right",
|
||||
"x": 15.25,
|
||||
"y": 6.25
|
||||
},
|
||||
{
|
||||
"label": "0",
|
||||
"x": 16.5,
|
||||
"y": 6
|
||||
},
|
||||
{
|
||||
"label": ".",
|
||||
"x": 17.5,
|
||||
"y": 6
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,37 @@
|
||||
/* Copyright 2020 sh_xguitar
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
#include QMK_KEYBOARD_H
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
[0] = LAYOUT_all ( /* Base */
|
||||
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_INS, KC_HOME, KC_PGUP, KC_PSCR,
|
||||
KC_DEL, KC_END, KC_PGDN, KC_SLCK,
|
||||
KC_GRV, 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_NLCK, KC_PSLS, KC_PAST, MO(1),
|
||||
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_P7, KC_P8, KC_P9, KC_PMNS,
|
||||
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_P4, KC_P5, KC_P6, KC_PPLS,
|
||||
KC_LSFT, KC_BSLS, 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_P1, KC_P2, KC_P3, KC_PENT,
|
||||
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RIGHT, KC_P0, KC_PDOT
|
||||
),
|
||||
[1] = LAYOUT_all (
|
||||
RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, KC_MUTE, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_CALC, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_VOLU, _______, _______, _______, _______,
|
||||
_______, _______, _______, KC_MPLY, _______, _______, KC_MPRV, KC_VOLD, KC_MNXT, _______, _______
|
||||
),
|
||||
};
|
||||
@@ -0,0 +1,15 @@
|
||||
# ASH-XIIX
|
||||
|
||||

|
||||
|
||||
In mission to fill my Cherry 1800 case. So I continue developing 1800 PCB (ASH-1800) to fit G80-1800 case. It has some update to make ASH-XIIX more user friendly.
|
||||
|
||||
* Keyboard Maintainer: [sh_xguitar](https://github.com/sh-xguitar)
|
||||
* Keyboard Specification: ATmega32u4, 5P TH MINI USB, JST-PH 5P, Larger ISP Header.
|
||||
* Hardware Availability: Sold in Indonesia only
|
||||
|
||||
Make example for this keyboard (after setting up your build environment):
|
||||
|
||||
make ash_xiix:default
|
||||
|
||||
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).
|
||||
@@ -0,0 +1,22 @@
|
||||
# MCU name
|
||||
MCU = atmega32u4
|
||||
|
||||
# Bootloader selection
|
||||
BOOTLOADER = atmel-dfu
|
||||
|
||||
# Build Options
|
||||
# change yes to no to disable
|
||||
#
|
||||
BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration
|
||||
MOUSEKEY_ENABLE = yes # Mouse keys
|
||||
EXTRAKEY_ENABLE = yes # Audio control and System control
|
||||
CONSOLE_ENABLE = no # Console for debug
|
||||
COMMAND_ENABLE = no # 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
|
||||
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
|
||||
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
|
||||
BLUETOOTH_ENABLE = no # Enable Bluetooth
|
||||
AUDIO_ENABLE = no # Audio output
|
||||
@@ -20,7 +20,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#include "config_common.h"
|
||||
|
||||
/* USB Device descriptor parameter */
|
||||
#define VENDOR_ID 0xFEED
|
||||
#define VENDOR_ID 0x4B50 // "KP"
|
||||
#define PRODUCT_ID 0xEF8C
|
||||
#define DEVICE_VER 0x0001
|
||||
#define MANUFACTURER KP Republic
|
||||
|
||||
@@ -0,0 +1,47 @@
|
||||
/* Copyright 2020 MechMerlin
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
#include QMK_KEYBOARD_H
|
||||
|
||||
const uint16_t PROGMEM 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_BSPC,
|
||||
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS,
|
||||
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
|
||||
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_RSFT, KC_UP, KC_SLSH,
|
||||
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT
|
||||
),
|
||||
[1] = LAYOUT(
|
||||
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, _______,
|
||||
_______, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______
|
||||
),
|
||||
[2] = LAYOUT(
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______
|
||||
),
|
||||
[3] = LAYOUT(
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______
|
||||
)
|
||||
};
|
||||
@@ -0,0 +1 @@
|
||||
# The VIA default keymap for bm60rgb
|
||||
@@ -0,0 +1 @@
|
||||
VIA_ENABLE = yes
|
||||
@@ -28,38 +28,37 @@ enum layer_names {
|
||||
_FN3
|
||||
};
|
||||
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
|
||||
[_BASE] = LAYOUT_default(
|
||||
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_DEL, KC_INS,
|
||||
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_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_BSLS, KC_DEL,
|
||||
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_NUBS, KC_ENT, KC_PGUP,
|
||||
KC_LSFT, KC_NUHS, 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_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_PGUP,
|
||||
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_PGDN,
|
||||
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, MO(_FN1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
|
||||
),
|
||||
|
||||
[_FN1] = LAYOUT_default(
|
||||
KC_GESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_TRNS, RGB_TOG,
|
||||
KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_MOD,
|
||||
BL_BRTG, KC_LEFT, KC_DOWN, KC_RGHT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||
BL_INC, BL_DEC, BL_TOGG, 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_GRV, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RESET, KC_TRNS, KC_TRNS
|
||||
KC_GESC, 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, RGB_TOG,
|
||||
KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, RGB_HUI, RGB_SAI, RGB_VAI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_MOD,
|
||||
BL_BRTG, KC_LEFT, KC_DOWN, KC_RGHT, RGB_HUD, RGB_SAD, RGB_VAD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||
BL_INC, BL_TOGG, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||
BL_DEC, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RESET, KC_TRNS, KC_TRNS
|
||||
),
|
||||
|
||||
[_FN2] = LAYOUT_default(
|
||||
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_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_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_TRNS, KC_TRNS
|
||||
),
|
||||
|
||||
[_FN3] = LAYOUT_default(
|
||||
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_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_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_TRNS, KC_TRNS
|
||||
)
|
||||
};
|
||||
|
||||
@@ -32,7 +32,7 @@ enum layer_names {
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
|
||||
[_BASE] = LAYOUT_all(
|
||||
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,
|
||||
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_MPLY,
|
||||
KC_GRV, 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_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_BSLS, KC_DEL,
|
||||
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_NUBS, KC_ENT, KC_PGUP,
|
||||
@@ -41,10 +41,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
),
|
||||
|
||||
[_FN1] = LAYOUT_all(
|
||||
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,
|
||||
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_TRNS,
|
||||
KC_GESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_TRNS, RGB_TOG,
|
||||
KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_MOD,
|
||||
BL_BRTG, KC_LEFT, KC_DOWN, KC_RGHT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, RGB_HUI, RGB_SAI, RGB_VAI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_MOD,
|
||||
BL_BRTG, KC_LEFT, KC_DOWN, KC_RGHT, RGB_HUD, RGB_SAD, RGB_VAD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||
BL_INC, BL_DEC, BL_TOGG, 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_GRV, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RESET, KC_TRNS, KC_TRNS
|
||||
),
|
||||
|
||||
@@ -17,7 +17,6 @@ MIDI_ENABLE = no # MIDI support
|
||||
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
|
||||
WS2812_DRIVER = spi
|
||||
|
||||
# Enter lower-power sleep mode when on the ChibiOS idle thread
|
||||
|
||||
@@ -28,22 +28,38 @@
|
||||
#define set_led_cyan red_led_off; grn_led_on; blu_led_on
|
||||
#define set_led_white red_led_on; grn_led_on; blu_led_on
|
||||
|
||||
// For readability
|
||||
#define ___ KC_NO
|
||||
|
||||
// This a shortcut to help you visually see your layout.
|
||||
// The first section contains all of the arguments
|
||||
// The second converts the arguments into a two-dimensional array
|
||||
#define LAYOUT( \
|
||||
#define LAYOUT_split_3x6_3( \
|
||||
k0a, k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0b, \
|
||||
k1a, k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1b,\
|
||||
k2a, k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2b,\
|
||||
k32, k33, k34, k35, k36, k37 \
|
||||
) \
|
||||
{ \
|
||||
{ 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, k25, k26, k27, k28, k29 }, \
|
||||
{ KC_NO, KC_NO, k32, k33, k34, k35, k36, k37, KC_NO, KC_NO }, \
|
||||
{ KC_NO, KC_NO, k2a, k1a, k0a, k0b, k1b, k2b, KC_NO, KC_NO } \
|
||||
{ \
|
||||
{ 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, k25, k26, k27, k28, k29 }, \
|
||||
{ ___, ___, k32, k33, k34, k35, k36, k37, ___, ___ }, \
|
||||
{ ___, ___, k2a, k1a, k0a, k0b, k1b, k2b, ___, ___ } \
|
||||
}
|
||||
|
||||
#define LAYOUT_split_3x6_3 LAYOUT
|
||||
#define LAYOUT_split_3x5_3( \
|
||||
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, k25, k26, k27, k28, k29,\
|
||||
k32, k33, k34, k35, k36, k37 \
|
||||
) \
|
||||
{ \
|
||||
{ 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, k25, k26, k27, k28, k29 }, \
|
||||
{ ___, ___, k32, k33, k34, k35, k36, k37, ___, ___ }, \
|
||||
{ ___, ___, ___, ___, ___, ___, ___, ___, ___, ___ } \
|
||||
}
|
||||
|
||||
#define LAYOUT LAYOUT_split_3x6_3
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
"width": 14,
|
||||
"height": 4,
|
||||
"layouts": {
|
||||
"LAYOUT": {
|
||||
"LAYOUT_split_3x6_3": {
|
||||
"layout": [
|
||||
{"label":"Tab", "x":0, "y":0.25},
|
||||
{"label":"Q", "x":1, "y":0.25},
|
||||
@@ -50,6 +50,46 @@
|
||||
{"label":"MO(_NUM)", "x":8.5, "y":3.25},
|
||||
{"label":"RAlt", "x":9.5, "y":3.125}
|
||||
]
|
||||
},
|
||||
"LAYOUT_split_3x5_3": {
|
||||
"layout": [
|
||||
{"label":"Q", "x":0, "y":0.25},
|
||||
{"label":"W", "x":1, "y":0.125},
|
||||
{"label":"E", "x":2, "y":0},
|
||||
{"label":"R", "x":3, "y":0.125},
|
||||
{"label":"T", "x":4, "y":0.25},
|
||||
{"label":"Y", "x":7, "y":0.25},
|
||||
{"label":"U", "x":8, "y":0.125},
|
||||
{"label":"I", "x":9, "y":0},
|
||||
{"label":"O", "x":10, "y":0.125},
|
||||
{"label":"P", "x":11, "y":0.25},
|
||||
{"label":"A", "x":0, "y":1.25},
|
||||
{"label":"S", "x":1, "y":1.125},
|
||||
{"label":"D", "x":2, "y":1},
|
||||
{"label":"F", "x":3, "y":1.125},
|
||||
{"label":"G", "x":4, "y":1.25},
|
||||
{"label":"H", "x":7, "y":1.25},
|
||||
{"label":"J", "x":8, "y":1.125},
|
||||
{"label":"K", "x":9, "y":1},
|
||||
{"label":"L", "x":10, "y":1.125},
|
||||
{"label":";", "x":11, "y":1.25},
|
||||
{"label":"Z", "x":0, "y":2.25},
|
||||
{"label":"X", "x":1, "y":2.125},
|
||||
{"label":"C", "x":2, "y":2},
|
||||
{"label":"V", "x":3, "y":2.125},
|
||||
{"label":"B", "x":4, "y":2.25},
|
||||
{"label":"N", "x":7, "y":2.25},
|
||||
{"label":"M", "x":8, "y":2.125},
|
||||
{"label":",", "x":9, "y":2},
|
||||
{"label":".", "x":10, "y":2.125},
|
||||
{"label":"/", "x":11, "y":2.25},
|
||||
{"label":"LGUI", "x":2.5, "y":3.125},
|
||||
{"label":"MO(_FN)", "x":3.5, "y":3.25},
|
||||
{"label":"Space", "x":4.5, "y":3.375},
|
||||
{"label":"Space", "x":6.5, "y":3.375},
|
||||
{"label":"MO(_NUM)", "x":7.5, "y":3.25},
|
||||
{"label":"RAlt", "x":8.5, "y":3.125}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -10,7 +10,7 @@ enum centromere_layers
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
|
||||
[_STD] = LAYOUT( \
|
||||
[_STD] = LAYOUT_split_3x6_3( \
|
||||
//,-----------------------------------------------------. ,-----------------------------------------------------.
|
||||
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,\
|
||||
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
|
||||
@@ -24,7 +24,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
),
|
||||
|
||||
|
||||
[_NUM] = LAYOUT( \
|
||||
[_NUM] = LAYOUT_split_3x6_3( \
|
||||
//,-----------------------------------------------------. ,-----------------------------------------------------.
|
||||
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC,\
|
||||
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
|
||||
@@ -36,7 +36,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
//`--------------------------' `--------------------------'
|
||||
),
|
||||
|
||||
[_FN] = LAYOUT( \
|
||||
[_FN] = LAYOUT_split_3x6_3( \
|
||||
//,-----------------------------------------------------. ,-----------------------------------------------------.
|
||||
KC_ESC, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC,\
|
||||
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
|
||||
|
||||
@@ -9,7 +9,7 @@ enum centromere_layers
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
|
||||
[_STD] = LAYOUT( \
|
||||
[_STD] = LAYOUT_split_3x6_3( \
|
||||
//,-----------------------------------------------------. ,-----------------------------------------------------.
|
||||
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,\
|
||||
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
|
||||
@@ -23,7 +23,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
),
|
||||
|
||||
|
||||
[_NUM] = LAYOUT( \
|
||||
[_NUM] = LAYOUT_split_3x6_3( \
|
||||
//,-----------------------------------------------------. ,-----------------------------------------------------.
|
||||
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC,\
|
||||
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
|
||||
@@ -35,7 +35,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
//`--------------------------' `--------------------------'
|
||||
),
|
||||
|
||||
[_FN] = LAYOUT( \
|
||||
[_FN] = LAYOUT_split_3x6_3( \
|
||||
//,-----------------------------------------------------. ,-----------------------------------------------------.
|
||||
KC_ESC, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC,\
|
||||
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
|
||||
|
||||
@@ -38,10 +38,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
* | | | |
|
||||
* `------' `------'
|
||||
*/
|
||||
[_QWERTY] = LAYOUT(
|
||||
KC_NO, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_NO,
|
||||
KC_NO, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_NO,
|
||||
KC_NO, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_NO,
|
||||
[_QWERTY] = LAYOUT_split_3x5_3(
|
||||
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,
|
||||
KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH,
|
||||
KC_LCTL, LOWER, KC_SPC, KC_BSPC, RAISE, OSM(MOD_LSFT)
|
||||
),
|
||||
|
||||
@@ -60,10 +60,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
* | | | |
|
||||
* `------' `------'
|
||||
*/
|
||||
[_RAISE] = LAYOUT(
|
||||
KC_NO, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_NO,
|
||||
KC_NO, KC_TAB, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, _______, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_NO,
|
||||
KC_NO, KC_LCTL, KC_GRV, KC_LGUI, KC_LALT, _______, _______, _______, _______, KC_BSLS, KC_QUOT, KC_NO,
|
||||
[_RAISE] = LAYOUT_split_3x5_3(
|
||||
KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0,
|
||||
KC_TAB, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, _______, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC,
|
||||
KC_LCTL, KC_GRV, KC_LGUI, KC_LALT, _______, _______, _______, _______, KC_BSLS, KC_QUOT,
|
||||
_______, _______, _______, _______, _______, _______
|
||||
),
|
||||
|
||||
@@ -82,10 +82,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
* | | | |
|
||||
* `------' `------'
|
||||
*/
|
||||
[_LOWER] = LAYOUT(
|
||||
KC_NO, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_NO,
|
||||
KC_NO, KC_ESC, _______, _______, _______, _______, _______, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_NO,
|
||||
KC_NO, KC_CAPS, KC_TILD, _______, _______, _______, _______, _______, _______, KC_PIPE, KC_DQT, KC_NO,
|
||||
[_LOWER] = LAYOUT_split_3x5_3(
|
||||
KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN,
|
||||
KC_ESC, _______, _______, _______, _______, _______, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR,
|
||||
KC_CAPS, KC_TILD, _______, _______, _______, _______, _______, _______, KC_PIPE, KC_DQT,
|
||||
_______, _______, _______, KC_ENT, _______, KC_DEL
|
||||
),
|
||||
|
||||
@@ -104,10 +104,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
* | | | |
|
||||
* `------' `------'
|
||||
*/
|
||||
[_ADJUST] = LAYOUT(
|
||||
KC_NO, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_NO,
|
||||
KC_NO, KC_F11, KC_F12, _______, _______, _______, _______, _______, _______, TSKMGR, CALTDEL, KC_NO,
|
||||
KC_NO, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_NO,
|
||||
[_ADJUST] = LAYOUT_split_3x5_3(
|
||||
KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10,
|
||||
KC_F11, KC_F12, _______, _______, _______, _______, _______, _______, TSKMGR, CALTDEL,
|
||||
RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______
|
||||
)
|
||||
};
|
||||
|
||||
@@ -0,0 +1,28 @@
|
||||
/* Copyright 2020 keyboard-magpie
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#ifdef COMBO_ENABLE
|
||||
# define COMBO_COUNT 10
|
||||
# define COMBO_TERM 50
|
||||
#endif
|
||||
|
||||
#ifdef TAPPING_TERM
|
||||
# undef TAPPING_TERM
|
||||
#endif
|
||||
#define TAPPING_TERM 200
|
||||
#define IGNORE_MOD_TAP_INTERRUPT
|
||||
@@ -0,0 +1,153 @@
|
||||
/* Copyright 2020 keyboard-magpie
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include QMK_KEYBOARD_H
|
||||
|
||||
|
||||
// Each layer gets a name for readability, which is then used in the keymap matrix below.
|
||||
// The underscores don't mean anything - you can have a layer called STUFF or any other name.
|
||||
// Layer names don't all need to be of the same length, obviously, and you can also skip them
|
||||
// entirely and just use numbers.
|
||||
|
||||
|
||||
enum centromere_layers
|
||||
{
|
||||
_BASE,
|
||||
_SYMB,
|
||||
_NUMB,
|
||||
};
|
||||
|
||||
enum combo_events {
|
||||
COMBO_BSPC,
|
||||
COMBO_TAB,
|
||||
COMBO_ESC,
|
||||
COMBO_DEL,
|
||||
COMBO_UNDS,
|
||||
COMBO_BKSL,
|
||||
COMBO_LESS,
|
||||
COMBO_MORE,
|
||||
COMBO_QUOT,
|
||||
COMBO_DASH,
|
||||
};
|
||||
|
||||
|
||||
/* Combomap
|
||||
*
|
||||
* ,-----------------------------. ,--------------------------------.
|
||||
* | | ESC | | | | | | BSLH |
|
||||
* |-----+-----+-----+-----+------| |--------------------------------|
|
||||
* | | BSPC | | | LES | GRT | |
|
||||
* |-----+-----+-----+--RMB+-LMB--+ |--------------------------------|
|
||||
* | | MINS | | | | QUO | UNDR | | |
|
||||
* `------+-----+-----+------+----' `--------------------------------'
|
||||
* .-------------------------. .-----------------.
|
||||
* | | | | | | | |
|
||||
* '-------------------------' '-----------------'
|
||||
*/
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
|
||||
/* Keymap 0: Basic layer
|
||||
*
|
||||
* ,-----------------------------. ,--------------------------------.
|
||||
* | Q | W | E | R | T | | Y | U | I | O | P |
|
||||
* |-----+-----+-----+-----+------| |--------------------------------|
|
||||
* |CTRL/A| S | D | F | G | | H | J | K | L | CTRL/; |
|
||||
* |-----+-----+-----+-----+------+ |--------------------------------|
|
||||
* |SHFT/Z| X | C | V | B | | N | M | < | > | SHFT/? |
|
||||
* `------+-----+-----+------+----' `--------------------------------'
|
||||
* .-------------------------. .-----------------.
|
||||
* |ESC/META|ENT/ALT|SPC(SYM)| |SPC(NUM)|BSPC|TAB|
|
||||
* '-------------------------' '-----------------'
|
||||
*/
|
||||
|
||||
[_BASE] = LAYOUT(
|
||||
KC_NO, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_NO,
|
||||
KC_NO, MT(MOD_LCTL, KC_A), KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, MT(MOD_LCTL, KC_SCLN), KC_NO,
|
||||
KC_NO, MT(MOD_RSFT, KC_Z), KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, MT(MOD_RSFT, KC_SLSH), KC_NO,
|
||||
MT(MOD_LGUI, KC_ESC), MT(MOD_LALT, KC_ENT), LT(_SYMB, KC_SPC), LT(_NUMB, KC_SPC), KC_LSFT, MT(MOD_RSFT, KC_TAB)
|
||||
),
|
||||
|
||||
/* Keymap 1: Symbols layer
|
||||
* ,-----------------------------. ,--------------------------------.
|
||||
* | ! | @ | { | } | | ` | ~ | | | \ |
|
||||
* |-----+-----+-----+-----+------| |--------------------------------|
|
||||
* | # | $ | ( | ) | LMB | | + | - | / | * | ' |
|
||||
* |-----+-----+-----+-----+------+ |--------------------------------|
|
||||
* | % | ^ | [ | ] | RMB | | & | = | , | . | - |
|
||||
* `------+-----+-----+------+----' `--------------------------------'
|
||||
* .-----------------. .------------------.
|
||||
* |MMB | ; | = | | = | ; | DEL |
|
||||
* '-----------------' '------------------'
|
||||
*/
|
||||
[_SYMB] = LAYOUT(
|
||||
KC_NO, KC_EXLM, KC_AT, KC_LCBR, KC_RCBR, KC_PIPE, KC_GRV, KC_TILD, KC_TRNS, KC_TRNS, KC_BSLS, KC_NO,
|
||||
KC_NO, KC_HASH, KC_DLR, KC_LPRN, KC_RPRN, KC_BTN2, KC_PLUS, KC_MINS, KC_SLSH, KC_ASTR, KC_QUOT, KC_NO,
|
||||
KC_NO, KC_PERC, KC_CIRC, KC_LBRC, KC_RBRC, KC_BTN1, KC_AMPR, KC_EQL, KC_COMM, KC_DOT, KC_MINS, KC_NO,
|
||||
CMB_TOG, KC_SCLN, KC_EQL, KC_EQL, KC_SCLN, KC_DEL
|
||||
),
|
||||
|
||||
/* Keymap 2: Pad/Function layer
|
||||
* ,-----------------------------. ,-------------------------------.
|
||||
* | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 |
|
||||
* |-----+-----+-----+-----+------| |-------------------------------|
|
||||
* | F1 | F2 | F3 | F4 | F5 | | LFT | DWN | UP | RGT | VOLUP |
|
||||
* |-----+-----+-----+-----+------+ |-------------------------------|
|
||||
* | F6 | F7 | F8 | F9 | F10 | |MLFT | MDWN| MUP | MRGT| VOLDN |
|
||||
* `------+-----+-----+------+----' `-------------------------------'
|
||||
* .-----------------. .-----------------.
|
||||
* | F11 | F12| | | | PLY | SKP |
|
||||
* '-----------------' '-----------------'
|
||||
*/
|
||||
[_NUMB] = LAYOUT(
|
||||
KC_NO, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_NO,
|
||||
KC_NO, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_VOLU, KC_NO,
|
||||
KC_NO, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_MS_L, KC_MS_D, KC_MS_U, KC_MS_R, KC_VOLD, KC_NO,
|
||||
KC_F11, KC_F12, KC_TRNS, KC_TRNS, KC_MPLY, KC_MNXT
|
||||
),
|
||||
|
||||
};
|
||||
|
||||
|
||||
// layer_state_t layer_state_set_user(layer_state_t state) {
|
||||
// return update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST);
|
||||
// }
|
||||
|
||||
#ifdef COMBO_ENABLE
|
||||
const uint16_t PROGMEM combo_bspc[] = {KC_S, KC_D, COMBO_END};
|
||||
const uint16_t PROGMEM combo_tab[] = {KC_D, KC_F, COMBO_END};
|
||||
const uint16_t PROGMEM combo_esc[] = {KC_W, KC_E, COMBO_END};
|
||||
const uint16_t PROGMEM combo_del[] = {KC_A, KC_S, COMBO_END};
|
||||
const uint16_t PROGMEM combo_unds[] = {KC_M, KC_COMM, COMBO_END};
|
||||
const uint16_t PROGMEM combo_bksl[] = {KC_O, KC_P, COMBO_END};
|
||||
const uint16_t PROGMEM combo_less[] = {KC_H, KC_J, COMBO_END};
|
||||
const uint16_t PROGMEM combo_more[] = {KC_K, KC_L, COMBO_END};
|
||||
const uint16_t PROGMEM combo_quot[] = {KC_N, KC_M, COMBO_END};
|
||||
const uint16_t PROGMEM combo_dash[] = {KC_X, KC_C, COMBO_END};
|
||||
|
||||
combo_t key_combos[COMBO_COUNT] = {
|
||||
[COMBO_BSPC] = COMBO(combo_bspc,KC_BSPC),
|
||||
[COMBO_TAB] = COMBO(combo_tab,KC_TAB),
|
||||
[COMBO_ESC] = COMBO(combo_esc,KC_ESC),
|
||||
[COMBO_DEL] = COMBO(combo_del,KC_DEL),
|
||||
[COMBO_UNDS] = COMBO(combo_unds, KC_UNDS),
|
||||
[COMBO_BKSL] = COMBO(combo_bksl,KC_BSLS),
|
||||
[COMBO_LESS] = COMBO(combo_less,KC_LT),
|
||||
[COMBO_MORE] = COMBO(combo_more,KC_GT),
|
||||
[COMBO_QUOT] = COMBO(combo_quot, KC_QUOT),
|
||||
[COMBO_DASH] = COMBO(combo_dash, KC_MINS),
|
||||
};
|
||||
#endif
|
||||
@@ -0,0 +1 @@
|
||||
Porting a keymap with chording inspired by gboards.ca gergoplex default keymap, to the centromere mini.
|
||||
@@ -0,0 +1 @@
|
||||
COMBO_ENABLE = yes
|
||||
@@ -41,4 +41,4 @@ OPT_DEFS += -DCENTROMERE_PROMICRO
|
||||
# # project specific files
|
||||
SRC = matrix.c
|
||||
|
||||
LAYOUTS = split_3x6_3
|
||||
LAYOUTS = split_3x5_3 split_3x6_3
|
||||
|
||||
@@ -0,0 +1,266 @@
|
||||
/*
|
||||
ChibiOS - Copyright (C) 2006..2020 Giovanni Di Sirio
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
*/
|
||||
|
||||
/*
|
||||
* This file has been automatically generated using ChibiStudio board
|
||||
* generator plugin. Do not edit manually.
|
||||
*/
|
||||
|
||||
#include "hal.h"
|
||||
#include "stm32_gpio.h"
|
||||
|
||||
/*===========================================================================*/
|
||||
/* Driver local definitions. */
|
||||
/*===========================================================================*/
|
||||
|
||||
/*===========================================================================*/
|
||||
/* Driver exported variables. */
|
||||
/*===========================================================================*/
|
||||
|
||||
/*===========================================================================*/
|
||||
/* Driver local variables and types. */
|
||||
/*===========================================================================*/
|
||||
|
||||
/**
|
||||
* @brief Type of STM32 GPIO port setup.
|
||||
*/
|
||||
typedef struct {
|
||||
uint32_t moder;
|
||||
uint32_t otyper;
|
||||
uint32_t ospeedr;
|
||||
uint32_t pupdr;
|
||||
uint32_t odr;
|
||||
uint32_t afrl;
|
||||
uint32_t afrh;
|
||||
} gpio_setup_t;
|
||||
|
||||
/**
|
||||
* @brief Type of STM32 GPIO initialization data.
|
||||
*/
|
||||
typedef struct {
|
||||
#if STM32_HAS_GPIOA || defined(__DOXYGEN__)
|
||||
gpio_setup_t PAData;
|
||||
#endif
|
||||
#if STM32_HAS_GPIOB || defined(__DOXYGEN__)
|
||||
gpio_setup_t PBData;
|
||||
#endif
|
||||
#if STM32_HAS_GPIOC || defined(__DOXYGEN__)
|
||||
gpio_setup_t PCData;
|
||||
#endif
|
||||
#if STM32_HAS_GPIOD || defined(__DOXYGEN__)
|
||||
gpio_setup_t PDData;
|
||||
#endif
|
||||
#if STM32_HAS_GPIOE || defined(__DOXYGEN__)
|
||||
gpio_setup_t PEData;
|
||||
#endif
|
||||
#if STM32_HAS_GPIOF || defined(__DOXYGEN__)
|
||||
gpio_setup_t PFData;
|
||||
#endif
|
||||
#if STM32_HAS_GPIOG || defined(__DOXYGEN__)
|
||||
gpio_setup_t PGData;
|
||||
#endif
|
||||
#if STM32_HAS_GPIOH || defined(__DOXYGEN__)
|
||||
gpio_setup_t PHData;
|
||||
#endif
|
||||
#if STM32_HAS_GPIOI || defined(__DOXYGEN__)
|
||||
gpio_setup_t PIData;
|
||||
#endif
|
||||
#if STM32_HAS_GPIOJ || defined(__DOXYGEN__)
|
||||
gpio_setup_t PJData;
|
||||
#endif
|
||||
#if STM32_HAS_GPIOK || defined(__DOXYGEN__)
|
||||
gpio_setup_t PKData;
|
||||
#endif
|
||||
} gpio_config_t;
|
||||
|
||||
/**
|
||||
* @brief STM32 GPIO static initialization data.
|
||||
*/
|
||||
static const gpio_config_t gpio_default_config = {
|
||||
#if STM32_HAS_GPIOA
|
||||
{VAL_GPIOA_MODER, VAL_GPIOA_OTYPER, VAL_GPIOA_OSPEEDR, VAL_GPIOA_PUPDR,
|
||||
VAL_GPIOA_ODR, VAL_GPIOA_AFRL, VAL_GPIOA_AFRH},
|
||||
#endif
|
||||
#if STM32_HAS_GPIOB
|
||||
{VAL_GPIOB_MODER, VAL_GPIOB_OTYPER, VAL_GPIOB_OSPEEDR, VAL_GPIOB_PUPDR,
|
||||
VAL_GPIOB_ODR, VAL_GPIOB_AFRL, VAL_GPIOB_AFRH},
|
||||
#endif
|
||||
#if STM32_HAS_GPIOC
|
||||
{VAL_GPIOC_MODER, VAL_GPIOC_OTYPER, VAL_GPIOC_OSPEEDR, VAL_GPIOC_PUPDR,
|
||||
VAL_GPIOC_ODR, VAL_GPIOC_AFRL, VAL_GPIOC_AFRH},
|
||||
#endif
|
||||
#if STM32_HAS_GPIOD
|
||||
{VAL_GPIOD_MODER, VAL_GPIOD_OTYPER, VAL_GPIOD_OSPEEDR, VAL_GPIOD_PUPDR,
|
||||
VAL_GPIOD_ODR, VAL_GPIOD_AFRL, VAL_GPIOD_AFRH},
|
||||
#endif
|
||||
#if STM32_HAS_GPIOE
|
||||
{VAL_GPIOE_MODER, VAL_GPIOE_OTYPER, VAL_GPIOE_OSPEEDR, VAL_GPIOE_PUPDR,
|
||||
VAL_GPIOE_ODR, VAL_GPIOE_AFRL, VAL_GPIOE_AFRH},
|
||||
#endif
|
||||
#if STM32_HAS_GPIOF
|
||||
{VAL_GPIOF_MODER, VAL_GPIOF_OTYPER, VAL_GPIOF_OSPEEDR, VAL_GPIOF_PUPDR,
|
||||
VAL_GPIOF_ODR, VAL_GPIOF_AFRL, VAL_GPIOF_AFRH},
|
||||
#endif
|
||||
#if STM32_HAS_GPIOG
|
||||
{VAL_GPIOG_MODER, VAL_GPIOG_OTYPER, VAL_GPIOG_OSPEEDR, VAL_GPIOG_PUPDR,
|
||||
VAL_GPIOG_ODR, VAL_GPIOG_AFRL, VAL_GPIOG_AFRH},
|
||||
#endif
|
||||
#if STM32_HAS_GPIOH
|
||||
{VAL_GPIOH_MODER, VAL_GPIOH_OTYPER, VAL_GPIOH_OSPEEDR, VAL_GPIOH_PUPDR,
|
||||
VAL_GPIOH_ODR, VAL_GPIOH_AFRL, VAL_GPIOH_AFRH},
|
||||
#endif
|
||||
#if STM32_HAS_GPIOI
|
||||
{VAL_GPIOI_MODER, VAL_GPIOI_OTYPER, VAL_GPIOI_OSPEEDR, VAL_GPIOI_PUPDR,
|
||||
VAL_GPIOI_ODR, VAL_GPIOI_AFRL, VAL_GPIOI_AFRH},
|
||||
#endif
|
||||
#if STM32_HAS_GPIOJ
|
||||
{VAL_GPIOJ_MODER, VAL_GPIOJ_OTYPER, VAL_GPIOJ_OSPEEDR, VAL_GPIOJ_PUPDR,
|
||||
VAL_GPIOJ_ODR, VAL_GPIOJ_AFRL, VAL_GPIOJ_AFRH},
|
||||
#endif
|
||||
#if STM32_HAS_GPIOK
|
||||
{VAL_GPIOK_MODER, VAL_GPIOK_OTYPER, VAL_GPIOK_OSPEEDR, VAL_GPIOK_PUPDR,
|
||||
VAL_GPIOK_ODR, VAL_GPIOK_AFRL, VAL_GPIOK_AFRH}
|
||||
#endif
|
||||
};
|
||||
|
||||
/*===========================================================================*/
|
||||
/* Driver local functions. */
|
||||
/*===========================================================================*/
|
||||
|
||||
static void gpio_init(stm32_gpio_t *gpiop, const gpio_setup_t *config) {
|
||||
|
||||
gpiop->OTYPER = config->otyper;
|
||||
gpiop->OSPEEDR = config->ospeedr;
|
||||
gpiop->PUPDR = config->pupdr;
|
||||
gpiop->ODR = config->odr;
|
||||
gpiop->AFRL = config->afrl;
|
||||
gpiop->AFRH = config->afrh;
|
||||
gpiop->MODER = config->moder;
|
||||
}
|
||||
|
||||
static void stm32_gpio_init(void) {
|
||||
|
||||
/* Enabling GPIO-related clocks, the mask comes from the
|
||||
registry header file.*/
|
||||
rccResetAHB(STM32_GPIO_EN_MASK);
|
||||
rccEnableAHB(STM32_GPIO_EN_MASK, true);
|
||||
|
||||
/* Initializing all the defined GPIO ports.*/
|
||||
#if STM32_HAS_GPIOA
|
||||
gpio_init(GPIOA, &gpio_default_config.PAData);
|
||||
#endif
|
||||
#if STM32_HAS_GPIOB
|
||||
gpio_init(GPIOB, &gpio_default_config.PBData);
|
||||
#endif
|
||||
#if STM32_HAS_GPIOC
|
||||
gpio_init(GPIOC, &gpio_default_config.PCData);
|
||||
#endif
|
||||
#if STM32_HAS_GPIOD
|
||||
gpio_init(GPIOD, &gpio_default_config.PDData);
|
||||
#endif
|
||||
#if STM32_HAS_GPIOE
|
||||
gpio_init(GPIOE, &gpio_default_config.PEData);
|
||||
#endif
|
||||
#if STM32_HAS_GPIOF
|
||||
gpio_init(GPIOF, &gpio_default_config.PFData);
|
||||
#endif
|
||||
#if STM32_HAS_GPIOG
|
||||
gpio_init(GPIOG, &gpio_default_config.PGData);
|
||||
#endif
|
||||
#if STM32_HAS_GPIOH
|
||||
gpio_init(GPIOH, &gpio_default_config.PHData);
|
||||
#endif
|
||||
#if STM32_HAS_GPIOI
|
||||
gpio_init(GPIOI, &gpio_default_config.PIData);
|
||||
#endif
|
||||
#if STM32_HAS_GPIOJ
|
||||
gpio_init(GPIOJ, &gpio_default_config.PJData);
|
||||
#endif
|
||||
#if STM32_HAS_GPIOK
|
||||
gpio_init(GPIOK, &gpio_default_config.PKData);
|
||||
#endif
|
||||
}
|
||||
|
||||
/*===========================================================================*/
|
||||
/* Driver interrupt handlers. */
|
||||
/*===========================================================================*/
|
||||
|
||||
/*===========================================================================*/
|
||||
/* Driver exported functions. */
|
||||
/*===========================================================================*/
|
||||
|
||||
/**
|
||||
* @brief Early initialization code.
|
||||
* @details GPIO ports and system clocks are initialized before everything
|
||||
* else.
|
||||
*/
|
||||
void __early_init(void) {
|
||||
|
||||
stm32_gpio_init();
|
||||
stm32_clock_init();
|
||||
}
|
||||
|
||||
#if HAL_USE_SDC || defined(__DOXYGEN__)
|
||||
/**
|
||||
* @brief SDC card detection.
|
||||
*/
|
||||
bool sdc_lld_is_card_inserted(SDCDriver *sdcp) {
|
||||
|
||||
(void)sdcp;
|
||||
/* CHTODO: Fill the implementation.*/
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief SDC card write protection detection.
|
||||
*/
|
||||
bool sdc_lld_is_write_protected(SDCDriver *sdcp) {
|
||||
|
||||
(void)sdcp;
|
||||
/* CHTODO: Fill the implementation.*/
|
||||
return false;
|
||||
}
|
||||
#endif /* HAL_USE_SDC */
|
||||
|
||||
#if HAL_USE_MMC_SPI || defined(__DOXYGEN__)
|
||||
/**
|
||||
* @brief MMC_SPI card detection.
|
||||
*/
|
||||
bool mmc_lld_is_card_inserted(MMCDriver *mmcp) {
|
||||
|
||||
(void)mmcp;
|
||||
/* CHTODO: Fill the implementation.*/
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief MMC_SPI card write protection detection.
|
||||
*/
|
||||
bool mmc_lld_is_write_protected(MMCDriver *mmcp) {
|
||||
|
||||
(void)mmcp;
|
||||
/* CHTODO: Fill the implementation.*/
|
||||
return false;
|
||||
}
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Board-specific initialization code.
|
||||
* @note You can add your board-specific code here.
|
||||
*/
|
||||
void boardInit(void) {
|
||||
|
||||
}
|
||||
@@ -0,0 +1,805 @@
|
||||
/*
|
||||
ChibiOS - Copyright (C) 2006..2020 Giovanni Di Sirio
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
*/
|
||||
|
||||
/*
|
||||
* This file has been automatically generated using ChibiStudio board
|
||||
* generator plugin. Do not edit manually.
|
||||
*/
|
||||
|
||||
#ifndef BOARD_H
|
||||
#define BOARD_H
|
||||
|
||||
/*===========================================================================*/
|
||||
/* Driver constants. */
|
||||
/*===========================================================================*/
|
||||
|
||||
/*
|
||||
* Setup for ST STM32F0-Discovery board.
|
||||
*/
|
||||
|
||||
/*
|
||||
* Board identifier.
|
||||
*/
|
||||
#define BOARD_GENERIC_STM32_F042X6
|
||||
#define BOARD_NAME "Chavdai40"
|
||||
|
||||
/*
|
||||
* Board oscillators-related settings.
|
||||
* NOTE: LSE not fitted.
|
||||
* NOTE: HSE not fitted.
|
||||
*/
|
||||
#if !defined(STM32_LSECLK)
|
||||
#define STM32_LSECLK 0U
|
||||
#endif
|
||||
|
||||
#define STM32_LSEDRV (3U << 3U)
|
||||
|
||||
#if !defined(STM32_HSECLK)
|
||||
#define STM32_HSECLK 0U
|
||||
#endif
|
||||
|
||||
#define STM32_HSE_BYPASS
|
||||
|
||||
/*
|
||||
* MCU type as defined in the ST header.
|
||||
*/
|
||||
#define STM32F042x6
|
||||
|
||||
/*
|
||||
* IO pins assignments.
|
||||
*/
|
||||
#define GPIOA_BUTTON 0U
|
||||
#define GPIOA_PIN1 1U
|
||||
#define GPIOA_PIN2 2U
|
||||
#define GPIOA_PIN3 3U
|
||||
#define GPIOA_PIN4 4U
|
||||
#define GPIOA_PIN5 5U
|
||||
#define GPIOA_PIN6 6U
|
||||
#define GPIOA_PIN7 7U
|
||||
#define GPIOA_PIN8 8U
|
||||
#define GPIOA_PIN9 9U
|
||||
#define GPIOA_PIN10 10U
|
||||
#define GPIOA_PIN11 11U
|
||||
#define GPIOA_PIN12 12U
|
||||
#define GPIOA_SWDAT 13U
|
||||
#define GPIOA_SWCLK 14U
|
||||
#define GPIOA_PIN15 15U
|
||||
|
||||
#define GPIOB_PIN0 0U
|
||||
#define GPIOB_PIN1 1U
|
||||
#define GPIOB_PIN2 2U
|
||||
#define GPIOB_PIN3 3U
|
||||
#define GPIOB_PIN4 4U
|
||||
#define GPIOB_PIN5 5U
|
||||
#define GPIOB_PIN6 6U
|
||||
#define GPIOB_PIN7 7U
|
||||
#define GPIOB_PIN8 8U
|
||||
#define GPIOB_PIN9 9U
|
||||
#define GPIOB_PIN10 10U
|
||||
#define GPIOB_PIN11 11U
|
||||
#define GPIOB_PIN12 12U
|
||||
#define GPIOB_PIN13 13U
|
||||
#define GPIOB_PIN14 14U
|
||||
#define GPIOB_PIN15 15U
|
||||
|
||||
#define GPIOC_PIN0 0U
|
||||
#define GPIOC_PIN1 1U
|
||||
#define GPIOC_PIN2 2U
|
||||
#define GPIOC_PIN3 3U
|
||||
#define GPIOC_PIN4 4U
|
||||
#define GPIOC_PIN5 5U
|
||||
#define GPIOC_PIN6 6U
|
||||
#define GPIOC_PIN7 7U
|
||||
#define GPIOC_LED4 8U
|
||||
#define GPIOC_LED3 9U
|
||||
#define GPIOC_PIN10 10U
|
||||
#define GPIOC_PIN11 11U
|
||||
#define GPIOC_PIN12 12U
|
||||
#define GPIOC_PIN13 13U
|
||||
#define GPIOC_OSC32_IN 14U
|
||||
#define GPIOC_OSC32_OUT 15U
|
||||
|
||||
#define GPIOD_PIN0 0U
|
||||
#define GPIOD_PIN1 1U
|
||||
#define GPIOD_PIN2 2U
|
||||
#define GPIOD_PIN3 3U
|
||||
#define GPIOD_PIN4 4U
|
||||
#define GPIOD_PIN5 5U
|
||||
#define GPIOD_PIN6 6U
|
||||
#define GPIOD_PIN7 7U
|
||||
#define GPIOD_PIN8 8U
|
||||
#define GPIOD_PIN9 9U
|
||||
#define GPIOD_PIN10 10U
|
||||
#define GPIOD_PIN11 11U
|
||||
#define GPIOD_PIN12 12U
|
||||
#define GPIOD_PIN13 13U
|
||||
#define GPIOD_PIN14 14U
|
||||
#define GPIOD_PIN15 15U
|
||||
|
||||
// #define GPIOF_OSC_IN 0U
|
||||
// #define GPIOF_OSC_OUT 1U
|
||||
#define GPIOF_I2C1_SDA 0U
|
||||
#define GPIOF_I2C1_SCL 1U
|
||||
#define GPIOF_PIN2 2U
|
||||
#define GPIOF_PIN3 3U
|
||||
#define GPIOF_PIN4 4U
|
||||
#define GPIOF_PIN5 5U
|
||||
#define GPIOF_PIN6 6U
|
||||
#define GPIOF_PIN7 7U
|
||||
#define GPIOF_PIN8 8U
|
||||
#define GPIOF_PIN9 9U
|
||||
#define GPIOF_PIN10 10U
|
||||
#define GPIOF_PIN11 11U
|
||||
#define GPIOF_PIN12 12U
|
||||
#define GPIOF_PIN13 13U
|
||||
#define GPIOF_PIN14 14U
|
||||
#define GPIOF_PIN15 15U
|
||||
|
||||
/*
|
||||
* IO lines assignments.
|
||||
*/
|
||||
#define LINE_BUTTON PAL_LINE(GPIOA, 0U)
|
||||
#define LINE_SWDAT PAL_LINE(GPIOA, 13U)
|
||||
#define LINE_SWCLK PAL_LINE(GPIOA, 14U)
|
||||
#define LINE_LED4 PAL_LINE(GPIOC, 8U)
|
||||
#define LINE_LED3 PAL_LINE(GPIOC, 9U)
|
||||
#define LINE_OSC32_IN PAL_LINE(GPIOC, 14U)
|
||||
#define LINE_OSC32_OUT PAL_LINE(GPIOC, 15U)
|
||||
//#define LINE_OSC_IN PAL_LINE(GPIOF, 0U)
|
||||
//#define LINE_OSC_OUT PAL_LINE(GPIOF, 1U)
|
||||
#define LINE_I2C1_SDA PAL_LINE(GPIOF, 0U)
|
||||
#define LINE_I2C1_SCL PAL_LINE(GPIOF, 1U)
|
||||
|
||||
/*===========================================================================*/
|
||||
/* Driver pre-compile time settings. */
|
||||
/*===========================================================================*/
|
||||
|
||||
/*===========================================================================*/
|
||||
/* Derived constants and error checks. */
|
||||
/*===========================================================================*/
|
||||
|
||||
/*===========================================================================*/
|
||||
/* Driver data structures and types. */
|
||||
/*===========================================================================*/
|
||||
|
||||
/*===========================================================================*/
|
||||
/* Driver macros. */
|
||||
/*===========================================================================*/
|
||||
|
||||
/*
|
||||
* I/O ports initial setup, this configuration is established soon after reset
|
||||
* in the initialization code.
|
||||
* Please refer to the STM32 Reference Manual for details.
|
||||
*/
|
||||
#define PIN_MODE_INPUT(n) (0U << ((n) * 2U))
|
||||
#define PIN_MODE_OUTPUT(n) (1U << ((n) * 2U))
|
||||
#define PIN_MODE_ALTERNATE(n) (2U << ((n) * 2U))
|
||||
#define PIN_MODE_ANALOG(n) (3U << ((n) * 2U))
|
||||
#define PIN_ODR_LOW(n) (0U << (n))
|
||||
#define PIN_ODR_HIGH(n) (1U << (n))
|
||||
#define PIN_OTYPE_PUSHPULL(n) (0U << (n))
|
||||
#define PIN_OTYPE_OPENDRAIN(n) (1U << (n))
|
||||
#define PIN_OSPEED_VERYLOW(n) (0U << ((n) * 2U))
|
||||
#define PIN_OSPEED_LOW(n) (1U << ((n) * 2U))
|
||||
#define PIN_OSPEED_MEDIUM(n) (2U << ((n) * 2U))
|
||||
#define PIN_OSPEED_HIGH(n) (3U << ((n) * 2U))
|
||||
#define PIN_PUPDR_FLOATING(n) (0U << ((n) * 2U))
|
||||
#define PIN_PUPDR_PULLUP(n) (1U << ((n) * 2U))
|
||||
#define PIN_PUPDR_PULLDOWN(n) (2U << ((n) * 2U))
|
||||
#define PIN_AFIO_AF(n, v) ((v) << (((n) % 8U) * 4U))
|
||||
|
||||
/*
|
||||
* GPIOA setup:
|
||||
*
|
||||
* PA0 - BUTTON (input floating).
|
||||
* PA1 - PIN1 (input pullup).
|
||||
* PA2 - PIN2 (input pullup).
|
||||
* PA3 - PIN3 (input pullup).
|
||||
* PA4 - PIN4 (input pullup).
|
||||
* PA5 - PIN5 (input pullup).
|
||||
* PA6 - PIN6 (input pullup).
|
||||
* PA7 - PIN7 (input pullup).
|
||||
* PA8 - PIN8 (input pullup).
|
||||
* PA9 - PIN9 (input pullup).
|
||||
* PA10 - PIN10 (input pullup).
|
||||
* PA11 - PIN11 (input pullup).
|
||||
* PA12 - PIN12 (input pullup).
|
||||
* PA13 - SWDAT (alternate 0).
|
||||
* PA14 - SWCLK (alternate 0).
|
||||
* PA15 - PIN15 (input pullup).
|
||||
*/
|
||||
#define VAL_GPIOA_MODER (PIN_MODE_INPUT(GPIOA_BUTTON) | \
|
||||
PIN_MODE_INPUT(GPIOA_PIN1) | \
|
||||
PIN_MODE_INPUT(GPIOA_PIN2) | \
|
||||
PIN_MODE_INPUT(GPIOA_PIN3) | \
|
||||
PIN_MODE_INPUT(GPIOA_PIN4) | \
|
||||
PIN_MODE_INPUT(GPIOA_PIN5) | \
|
||||
PIN_MODE_INPUT(GPIOA_PIN6) | \
|
||||
PIN_MODE_INPUT(GPIOA_PIN7) | \
|
||||
PIN_MODE_INPUT(GPIOA_PIN8) | \
|
||||
PIN_MODE_INPUT(GPIOA_PIN9) | \
|
||||
PIN_MODE_INPUT(GPIOA_PIN10) | \
|
||||
PIN_MODE_INPUT(GPIOA_PIN11) | \
|
||||
PIN_MODE_INPUT(GPIOA_PIN12) | \
|
||||
PIN_MODE_ALTERNATE(GPIOA_SWDAT) | \
|
||||
PIN_MODE_ALTERNATE(GPIOA_SWCLK) | \
|
||||
PIN_MODE_INPUT(GPIOA_PIN15))
|
||||
#define VAL_GPIOA_OTYPER (PIN_OTYPE_PUSHPULL(GPIOA_BUTTON) | \
|
||||
PIN_OTYPE_PUSHPULL(GPIOA_PIN1) | \
|
||||
PIN_OTYPE_PUSHPULL(GPIOA_PIN2) | \
|
||||
PIN_OTYPE_PUSHPULL(GPIOA_PIN3) | \
|
||||
PIN_OTYPE_PUSHPULL(GPIOA_PIN4) | \
|
||||
PIN_OTYPE_PUSHPULL(GPIOA_PIN5) | \
|
||||
PIN_OTYPE_PUSHPULL(GPIOA_PIN6) | \
|
||||
PIN_OTYPE_PUSHPULL(GPIOA_PIN7) | \
|
||||
PIN_OTYPE_PUSHPULL(GPIOA_PIN8) | \
|
||||
PIN_OTYPE_PUSHPULL(GPIOA_PIN9) | \
|
||||
PIN_OTYPE_PUSHPULL(GPIOA_PIN10) | \
|
||||
PIN_OTYPE_PUSHPULL(GPIOA_PIN11) | \
|
||||
PIN_OTYPE_PUSHPULL(GPIOA_PIN12) | \
|
||||
PIN_OTYPE_PUSHPULL(GPIOA_SWDAT) | \
|
||||
PIN_OTYPE_PUSHPULL(GPIOA_SWCLK) | \
|
||||
PIN_OTYPE_PUSHPULL(GPIOA_PIN15))
|
||||
#define VAL_GPIOA_OSPEEDR (PIN_OSPEED_VERYLOW(GPIOA_BUTTON) | \
|
||||
PIN_OSPEED_VERYLOW(GPIOA_PIN1) | \
|
||||
PIN_OSPEED_VERYLOW(GPIOA_PIN2) | \
|
||||
PIN_OSPEED_VERYLOW(GPIOA_PIN3) | \
|
||||
PIN_OSPEED_VERYLOW(GPIOA_PIN4) | \
|
||||
PIN_OSPEED_VERYLOW(GPIOA_PIN5) | \
|
||||
PIN_OSPEED_VERYLOW(GPIOA_PIN6) | \
|
||||
PIN_OSPEED_VERYLOW(GPIOA_PIN7) | \
|
||||
PIN_OSPEED_VERYLOW(GPIOA_PIN8) | \
|
||||
PIN_OSPEED_VERYLOW(GPIOA_PIN9) | \
|
||||
PIN_OSPEED_VERYLOW(GPIOA_PIN10) | \
|
||||
PIN_OSPEED_VERYLOW(GPIOA_PIN11) | \
|
||||
PIN_OSPEED_VERYLOW(GPIOA_PIN12) | \
|
||||
PIN_OSPEED_HIGH(GPIOA_SWDAT) | \
|
||||
PIN_OSPEED_HIGH(GPIOA_SWCLK) | \
|
||||
PIN_OSPEED_HIGH(GPIOA_PIN15))
|
||||
#define VAL_GPIOA_PUPDR (PIN_PUPDR_FLOATING(GPIOA_BUTTON) | \
|
||||
PIN_PUPDR_PULLUP(GPIOA_PIN1) | \
|
||||
PIN_PUPDR_PULLUP(GPIOA_PIN2) | \
|
||||
PIN_PUPDR_PULLUP(GPIOA_PIN3) | \
|
||||
PIN_PUPDR_PULLUP(GPIOA_PIN4) | \
|
||||
PIN_PUPDR_PULLUP(GPIOA_PIN5) | \
|
||||
PIN_PUPDR_PULLUP(GPIOA_PIN6) | \
|
||||
PIN_PUPDR_PULLUP(GPIOA_PIN7) | \
|
||||
PIN_PUPDR_PULLUP(GPIOA_PIN8) | \
|
||||
PIN_PUPDR_PULLUP(GPIOA_PIN9) | \
|
||||
PIN_PUPDR_PULLUP(GPIOA_PIN10) | \
|
||||
PIN_PUPDR_PULLUP(GPIOA_PIN11) | \
|
||||
PIN_PUPDR_PULLUP(GPIOA_PIN12) | \
|
||||
PIN_PUPDR_PULLUP(GPIOA_SWDAT) | \
|
||||
PIN_PUPDR_PULLDOWN(GPIOA_SWCLK) | \
|
||||
PIN_PUPDR_PULLUP(GPIOA_PIN15))
|
||||
#define VAL_GPIOA_ODR (PIN_ODR_HIGH(GPIOA_BUTTON) | \
|
||||
PIN_ODR_HIGH(GPIOA_PIN1) | \
|
||||
PIN_ODR_HIGH(GPIOA_PIN2) | \
|
||||
PIN_ODR_HIGH(GPIOA_PIN3) | \
|
||||
PIN_ODR_HIGH(GPIOA_PIN4) | \
|
||||
PIN_ODR_HIGH(GPIOA_PIN5) | \
|
||||
PIN_ODR_HIGH(GPIOA_PIN6) | \
|
||||
PIN_ODR_HIGH(GPIOA_PIN7) | \
|
||||
PIN_ODR_HIGH(GPIOA_PIN8) | \
|
||||
PIN_ODR_HIGH(GPIOA_PIN9) | \
|
||||
PIN_ODR_HIGH(GPIOA_PIN10) | \
|
||||
PIN_ODR_HIGH(GPIOA_PIN11) | \
|
||||
PIN_ODR_HIGH(GPIOA_PIN12) | \
|
||||
PIN_ODR_HIGH(GPIOA_SWDAT) | \
|
||||
PIN_ODR_HIGH(GPIOA_SWCLK) | \
|
||||
PIN_ODR_HIGH(GPIOA_PIN15))
|
||||
#define VAL_GPIOA_AFRL (PIN_AFIO_AF(GPIOA_BUTTON, 0U) | \
|
||||
PIN_AFIO_AF(GPIOA_PIN1, 0U) | \
|
||||
PIN_AFIO_AF(GPIOA_PIN2, 0U) | \
|
||||
PIN_AFIO_AF(GPIOA_PIN3, 0U) | \
|
||||
PIN_AFIO_AF(GPIOA_PIN4, 0U) | \
|
||||
PIN_AFIO_AF(GPIOA_PIN5, 0U) | \
|
||||
PIN_AFIO_AF(GPIOA_PIN6, 0U) | \
|
||||
PIN_AFIO_AF(GPIOA_PIN7, 0U))
|
||||
#define VAL_GPIOA_AFRH (PIN_AFIO_AF(GPIOA_PIN8, 0U) | \
|
||||
PIN_AFIO_AF(GPIOA_PIN9, 0U) | \
|
||||
PIN_AFIO_AF(GPIOA_PIN10, 0U) | \
|
||||
PIN_AFIO_AF(GPIOA_PIN11, 0U) | \
|
||||
PIN_AFIO_AF(GPIOA_PIN12, 0U) | \
|
||||
PIN_AFIO_AF(GPIOA_SWDAT, 0U) | \
|
||||
PIN_AFIO_AF(GPIOA_SWCLK, 0U) | \
|
||||
PIN_AFIO_AF(GPIOA_PIN15, 0U))
|
||||
|
||||
/*
|
||||
* GPIOB setup:
|
||||
*
|
||||
* PB0 - PIN0 (input pullup).
|
||||
* PB1 - PIN1 (input pullup).
|
||||
* PB2 - PIN2 (input pullup).
|
||||
* PB3 - PIN3 (input pullup).
|
||||
* PB4 - PIN4 (input pullup).
|
||||
* PB5 - PIN5 (input pullup).
|
||||
* PB6 - PIN6 (input pullup).
|
||||
* PB7 - PIN7 (input pullup).
|
||||
* PB8 - PIN8 (input pullup).
|
||||
* PB9 - PIN9 (input pullup).
|
||||
* PB10 - PIN10 (input pullup).
|
||||
* PB11 - PIN11 (input pullup).
|
||||
* PB12 - PIN12 (input pullup).
|
||||
* PB13 - PIN13 (input pullup).
|
||||
* PB14 - PIN14 (input pullup).
|
||||
* PB15 - PIN15 (input pullup).
|
||||
*/
|
||||
#define VAL_GPIOB_MODER (PIN_MODE_INPUT(GPIOB_PIN0) | \
|
||||
PIN_MODE_INPUT(GPIOB_PIN1) | \
|
||||
PIN_MODE_INPUT(GPIOB_PIN2) | \
|
||||
PIN_MODE_INPUT(GPIOB_PIN3) | \
|
||||
PIN_MODE_INPUT(GPIOB_PIN4) | \
|
||||
PIN_MODE_INPUT(GPIOB_PIN5) | \
|
||||
PIN_MODE_INPUT(GPIOB_PIN6) | \
|
||||
PIN_MODE_INPUT(GPIOB_PIN7) | \
|
||||
PIN_MODE_INPUT(GPIOB_PIN8) | \
|
||||
PIN_MODE_INPUT(GPIOB_PIN9) | \
|
||||
PIN_MODE_INPUT(GPIOB_PIN10) | \
|
||||
PIN_MODE_INPUT(GPIOB_PIN11) | \
|
||||
PIN_MODE_INPUT(GPIOB_PIN12) | \
|
||||
PIN_MODE_INPUT(GPIOB_PIN13) | \
|
||||
PIN_MODE_INPUT(GPIOB_PIN14) | \
|
||||
PIN_MODE_INPUT(GPIOB_PIN15))
|
||||
#define VAL_GPIOB_OTYPER (PIN_OTYPE_PUSHPULL(GPIOB_PIN0) | \
|
||||
PIN_OTYPE_PUSHPULL(GPIOB_PIN1) | \
|
||||
PIN_OTYPE_PUSHPULL(GPIOB_PIN2) | \
|
||||
PIN_OTYPE_PUSHPULL(GPIOB_PIN3) | \
|
||||
PIN_OTYPE_PUSHPULL(GPIOB_PIN4) | \
|
||||
PIN_OTYPE_PUSHPULL(GPIOB_PIN5) | \
|
||||
PIN_OTYPE_PUSHPULL(GPIOB_PIN6) | \
|
||||
PIN_OTYPE_PUSHPULL(GPIOB_PIN7) | \
|
||||
PIN_OTYPE_PUSHPULL(GPIOB_PIN8) | \
|
||||
PIN_OTYPE_PUSHPULL(GPIOB_PIN9) | \
|
||||
PIN_OTYPE_PUSHPULL(GPIOB_PIN10) | \
|
||||
PIN_OTYPE_PUSHPULL(GPIOB_PIN11) | \
|
||||
PIN_OTYPE_PUSHPULL(GPIOB_PIN12) | \
|
||||
PIN_OTYPE_PUSHPULL(GPIOB_PIN13) | \
|
||||
PIN_OTYPE_PUSHPULL(GPIOB_PIN14) | \
|
||||
PIN_OTYPE_PUSHPULL(GPIOB_PIN15))
|
||||
#define VAL_GPIOB_OSPEEDR (PIN_OSPEED_VERYLOW(GPIOB_PIN0) | \
|
||||
PIN_OSPEED_VERYLOW(GPIOB_PIN1) | \
|
||||
PIN_OSPEED_HIGH(GPIOB_PIN2) | \
|
||||
PIN_OSPEED_HIGH(GPIOB_PIN3) | \
|
||||
PIN_OSPEED_HIGH(GPIOB_PIN4) | \
|
||||
PIN_OSPEED_VERYLOW(GPIOB_PIN5) | \
|
||||
PIN_OSPEED_VERYLOW(GPIOB_PIN6) | \
|
||||
PIN_OSPEED_VERYLOW(GPIOB_PIN7) | \
|
||||
PIN_OSPEED_VERYLOW(GPIOB_PIN8) | \
|
||||
PIN_OSPEED_VERYLOW(GPIOB_PIN9) | \
|
||||
PIN_OSPEED_VERYLOW(GPIOB_PIN10) | \
|
||||
PIN_OSPEED_VERYLOW(GPIOB_PIN11) | \
|
||||
PIN_OSPEED_VERYLOW(GPIOB_PIN12) | \
|
||||
PIN_OSPEED_VERYLOW(GPIOB_PIN13) | \
|
||||
PIN_OSPEED_VERYLOW(GPIOB_PIN14) | \
|
||||
PIN_OSPEED_VERYLOW(GPIOB_PIN15))
|
||||
#define VAL_GPIOB_PUPDR (PIN_PUPDR_PULLUP(GPIOB_PIN0) | \
|
||||
PIN_PUPDR_PULLUP(GPIOB_PIN1) | \
|
||||
PIN_PUPDR_PULLUP(GPIOB_PIN2) | \
|
||||
PIN_PUPDR_PULLUP(GPIOB_PIN3) | \
|
||||
PIN_PUPDR_PULLUP(GPIOB_PIN4) | \
|
||||
PIN_PUPDR_PULLUP(GPIOB_PIN5) | \
|
||||
PIN_PUPDR_PULLUP(GPIOB_PIN6) | \
|
||||
PIN_PUPDR_PULLUP(GPIOB_PIN7) | \
|
||||
PIN_PUPDR_PULLUP(GPIOB_PIN8) | \
|
||||
PIN_PUPDR_PULLUP(GPIOB_PIN9) | \
|
||||
PIN_PUPDR_PULLUP(GPIOB_PIN10) | \
|
||||
PIN_PUPDR_PULLUP(GPIOB_PIN11) | \
|
||||
PIN_PUPDR_PULLUP(GPIOB_PIN12) | \
|
||||
PIN_PUPDR_PULLUP(GPIOB_PIN13) | \
|
||||
PIN_PUPDR_PULLUP(GPIOB_PIN14) | \
|
||||
PIN_PUPDR_PULLUP(GPIOB_PIN15))
|
||||
#define VAL_GPIOB_ODR (PIN_ODR_HIGH(GPIOB_PIN0) | \
|
||||
PIN_ODR_HIGH(GPIOB_PIN1) | \
|
||||
PIN_ODR_HIGH(GPIOB_PIN2) | \
|
||||
PIN_ODR_HIGH(GPIOB_PIN3) | \
|
||||
PIN_ODR_HIGH(GPIOB_PIN4) | \
|
||||
PIN_ODR_HIGH(GPIOB_PIN5) | \
|
||||
PIN_ODR_HIGH(GPIOB_PIN6) | \
|
||||
PIN_ODR_HIGH(GPIOB_PIN7) | \
|
||||
PIN_ODR_HIGH(GPIOB_PIN8) | \
|
||||
PIN_ODR_HIGH(GPIOB_PIN9) | \
|
||||
PIN_ODR_HIGH(GPIOB_PIN10) | \
|
||||
PIN_ODR_HIGH(GPIOB_PIN11) | \
|
||||
PIN_ODR_HIGH(GPIOB_PIN12) | \
|
||||
PIN_ODR_HIGH(GPIOB_PIN13) | \
|
||||
PIN_ODR_HIGH(GPIOB_PIN14) | \
|
||||
PIN_ODR_HIGH(GPIOB_PIN15))
|
||||
#define VAL_GPIOB_AFRL (PIN_AFIO_AF(GPIOB_PIN0, 0U) | \
|
||||
PIN_AFIO_AF(GPIOB_PIN1, 0U) | \
|
||||
PIN_AFIO_AF(GPIOB_PIN2, 0U) | \
|
||||
PIN_AFIO_AF(GPIOB_PIN3, 0U) | \
|
||||
PIN_AFIO_AF(GPIOB_PIN4, 0U) | \
|
||||
PIN_AFIO_AF(GPIOB_PIN5, 0U) | \
|
||||
PIN_AFIO_AF(GPIOB_PIN6, 0U) | \
|
||||
PIN_AFIO_AF(GPIOB_PIN7, 0U))
|
||||
#define VAL_GPIOB_AFRH (PIN_AFIO_AF(GPIOB_PIN8, 0U) | \
|
||||
PIN_AFIO_AF(GPIOB_PIN9, 0U) | \
|
||||
PIN_AFIO_AF(GPIOB_PIN10, 0U) | \
|
||||
PIN_AFIO_AF(GPIOB_PIN11, 0U) | \
|
||||
PIN_AFIO_AF(GPIOB_PIN12, 0U) | \
|
||||
PIN_AFIO_AF(GPIOB_PIN13, 0U) | \
|
||||
PIN_AFIO_AF(GPIOB_PIN14, 0U) | \
|
||||
PIN_AFIO_AF(GPIOB_PIN15, 0U))
|
||||
|
||||
/*
|
||||
* GPIOC setup:
|
||||
*
|
||||
* PC0 - PIN0 (input pullup).
|
||||
* PC1 - PIN1 (input pullup).
|
||||
* PC2 - PIN2 (input pullup).
|
||||
* PC3 - PIN3 (input pullup).
|
||||
* PC4 - PIN4 (input pullup).
|
||||
* PC5 - PIN5 (input pullup).
|
||||
* PC6 - PIN6 (input pullup).
|
||||
* PC7 - PIN7 (input pullup).
|
||||
* PC8 - LED4 (output pushpull maximum).
|
||||
* PC9 - LED3 (output pushpull maximum).
|
||||
* PC10 - PIN10 (input pullup).
|
||||
* PC11 - PIN11 (input pullup).
|
||||
* PC12 - PIN12 (input pullup).
|
||||
* PC13 - PIN13 (input pullup).
|
||||
* PC14 - OSC32_IN (input floating).
|
||||
* PC15 - OSC32_OUT (input floating).
|
||||
*/
|
||||
#define VAL_GPIOC_MODER (PIN_MODE_INPUT(GPIOC_PIN0) | \
|
||||
PIN_MODE_INPUT(GPIOC_PIN1) | \
|
||||
PIN_MODE_INPUT(GPIOC_PIN2) | \
|
||||
PIN_MODE_INPUT(GPIOC_PIN3) | \
|
||||
PIN_MODE_INPUT(GPIOC_PIN4) | \
|
||||
PIN_MODE_INPUT(GPIOC_PIN5) | \
|
||||
PIN_MODE_INPUT(GPIOC_PIN6) | \
|
||||
PIN_MODE_INPUT(GPIOC_PIN7) | \
|
||||
PIN_MODE_OUTPUT(GPIOC_LED4) | \
|
||||
PIN_MODE_OUTPUT(GPIOC_LED3) | \
|
||||
PIN_MODE_INPUT(GPIOC_PIN10) | \
|
||||
PIN_MODE_INPUT(GPIOC_PIN11) | \
|
||||
PIN_MODE_INPUT(GPIOC_PIN12) | \
|
||||
PIN_MODE_INPUT(GPIOC_PIN13) | \
|
||||
PIN_MODE_INPUT(GPIOC_OSC32_IN) | \
|
||||
PIN_MODE_INPUT(GPIOC_OSC32_OUT))
|
||||
#define VAL_GPIOC_OTYPER (PIN_OTYPE_PUSHPULL(GPIOC_PIN0) | \
|
||||
PIN_OTYPE_PUSHPULL(GPIOC_PIN1) | \
|
||||
PIN_OTYPE_PUSHPULL(GPIOC_PIN2) | \
|
||||
PIN_OTYPE_PUSHPULL(GPIOC_PIN3) | \
|
||||
PIN_OTYPE_PUSHPULL(GPIOC_PIN4) | \
|
||||
PIN_OTYPE_PUSHPULL(GPIOC_PIN5) | \
|
||||
PIN_OTYPE_PUSHPULL(GPIOC_PIN6) | \
|
||||
PIN_OTYPE_PUSHPULL(GPIOC_PIN7) | \
|
||||
PIN_OTYPE_PUSHPULL(GPIOC_LED4) | \
|
||||
PIN_OTYPE_PUSHPULL(GPIOC_LED3) | \
|
||||
PIN_OTYPE_PUSHPULL(GPIOC_PIN10) | \
|
||||
PIN_OTYPE_PUSHPULL(GPIOC_PIN11) | \
|
||||
PIN_OTYPE_PUSHPULL(GPIOC_PIN12) | \
|
||||
PIN_OTYPE_PUSHPULL(GPIOC_PIN13) | \
|
||||
PIN_OTYPE_PUSHPULL(GPIOC_OSC32_IN) | \
|
||||
PIN_OTYPE_PUSHPULL(GPIOC_OSC32_OUT))
|
||||
#define VAL_GPIOC_OSPEEDR (PIN_OSPEED_VERYLOW(GPIOC_PIN0) | \
|
||||
PIN_OSPEED_VERYLOW(GPIOC_PIN1) | \
|
||||
PIN_OSPEED_VERYLOW(GPIOC_PIN2) | \
|
||||
PIN_OSPEED_VERYLOW(GPIOC_PIN3) | \
|
||||
PIN_OSPEED_VERYLOW(GPIOC_PIN4) | \
|
||||
PIN_OSPEED_VERYLOW(GPIOC_PIN5) | \
|
||||
PIN_OSPEED_VERYLOW(GPIOC_PIN6) | \
|
||||
PIN_OSPEED_VERYLOW(GPIOC_PIN7) | \
|
||||
PIN_OSPEED_HIGH(GPIOC_LED4) | \
|
||||
PIN_OSPEED_HIGH(GPIOC_LED3) | \
|
||||
PIN_OSPEED_VERYLOW(GPIOC_PIN10) | \
|
||||
PIN_OSPEED_VERYLOW(GPIOC_PIN11) | \
|
||||
PIN_OSPEED_VERYLOW(GPIOC_PIN12) | \
|
||||
PIN_OSPEED_VERYLOW(GPIOC_PIN13) | \
|
||||
PIN_OSPEED_HIGH(GPIOC_OSC32_IN) | \
|
||||
PIN_OSPEED_HIGH(GPIOC_OSC32_OUT))
|
||||
#define VAL_GPIOC_PUPDR (PIN_PUPDR_PULLUP(GPIOC_PIN0) | \
|
||||
PIN_PUPDR_PULLUP(GPIOC_PIN1) | \
|
||||
PIN_PUPDR_PULLUP(GPIOC_PIN2) | \
|
||||
PIN_PUPDR_PULLUP(GPIOC_PIN3) | \
|
||||
PIN_PUPDR_PULLUP(GPIOC_PIN4) | \
|
||||
PIN_PUPDR_PULLUP(GPIOC_PIN5) | \
|
||||
PIN_PUPDR_PULLUP(GPIOC_PIN6) | \
|
||||
PIN_PUPDR_PULLUP(GPIOC_PIN7) | \
|
||||
PIN_PUPDR_FLOATING(GPIOC_LED4) | \
|
||||
PIN_PUPDR_FLOATING(GPIOC_LED3) | \
|
||||
PIN_PUPDR_PULLUP(GPIOC_PIN10) | \
|
||||
PIN_PUPDR_PULLUP(GPIOC_PIN11) | \
|
||||
PIN_PUPDR_PULLUP(GPIOC_PIN12) | \
|
||||
PIN_PUPDR_PULLUP(GPIOC_PIN13) | \
|
||||
PIN_PUPDR_FLOATING(GPIOC_OSC32_IN) | \
|
||||
PIN_PUPDR_FLOATING(GPIOC_OSC32_OUT))
|
||||
#define VAL_GPIOC_ODR (PIN_ODR_HIGH(GPIOC_PIN0) | \
|
||||
PIN_ODR_HIGH(GPIOC_PIN1) | \
|
||||
PIN_ODR_HIGH(GPIOC_PIN2) | \
|
||||
PIN_ODR_HIGH(GPIOC_PIN3) | \
|
||||
PIN_ODR_HIGH(GPIOC_PIN4) | \
|
||||
PIN_ODR_HIGH(GPIOC_PIN5) | \
|
||||
PIN_ODR_HIGH(GPIOC_PIN6) | \
|
||||
PIN_ODR_HIGH(GPIOC_PIN7) | \
|
||||
PIN_ODR_LOW(GPIOC_LED4) | \
|
||||
PIN_ODR_LOW(GPIOC_LED3) | \
|
||||
PIN_ODR_HIGH(GPIOC_PIN10) | \
|
||||
PIN_ODR_HIGH(GPIOC_PIN11) | \
|
||||
PIN_ODR_HIGH(GPIOC_PIN12) | \
|
||||
PIN_ODR_HIGH(GPIOC_PIN13) | \
|
||||
PIN_ODR_HIGH(GPIOC_OSC32_IN) | \
|
||||
PIN_ODR_HIGH(GPIOC_OSC32_OUT))
|
||||
#define VAL_GPIOC_AFRL (PIN_AFIO_AF(GPIOC_PIN0, 0U) | \
|
||||
PIN_AFIO_AF(GPIOC_PIN1, 0U) | \
|
||||
PIN_AFIO_AF(GPIOC_PIN2, 0U) | \
|
||||
PIN_AFIO_AF(GPIOC_PIN3, 0U) | \
|
||||
PIN_AFIO_AF(GPIOC_PIN4, 0U) | \
|
||||
PIN_AFIO_AF(GPIOC_PIN5, 0U) | \
|
||||
PIN_AFIO_AF(GPIOC_PIN6, 0U) | \
|
||||
PIN_AFIO_AF(GPIOC_PIN7, 0U))
|
||||
#define VAL_GPIOC_AFRH (PIN_AFIO_AF(GPIOC_LED4, 0U) | \
|
||||
PIN_AFIO_AF(GPIOC_LED3, 0U) | \
|
||||
PIN_AFIO_AF(GPIOC_PIN10, 0U) | \
|
||||
PIN_AFIO_AF(GPIOC_PIN11, 0U) | \
|
||||
PIN_AFIO_AF(GPIOC_PIN12, 0U) | \
|
||||
PIN_AFIO_AF(GPIOC_PIN13, 0U) | \
|
||||
PIN_AFIO_AF(GPIOC_OSC32_IN, 0U) | \
|
||||
PIN_AFIO_AF(GPIOC_OSC32_OUT, 0U))
|
||||
|
||||
/*
|
||||
* GPIOD setup:
|
||||
*
|
||||
* PD0 - PIN0 (input pullup).
|
||||
* PD1 - PIN1 (input pullup).
|
||||
* PD2 - PIN2 (input pullup).
|
||||
* PD3 - PIN3 (input pullup).
|
||||
* PD4 - PIN4 (input pullup).
|
||||
* PD5 - PIN5 (input pullup).
|
||||
* PD6 - PIN6 (input pullup).
|
||||
* PD7 - PIN7 (input pullup).
|
||||
* PD8 - PIN8 (input pullup).
|
||||
* PD9 - PIN9 (input pullup).
|
||||
* PD10 - PIN10 (input pullup).
|
||||
* PD11 - PIN11 (input pullup).
|
||||
* PD12 - PIN12 (input pullup).
|
||||
* PD13 - PIN13 (input pullup).
|
||||
* PD14 - PIN14 (input pullup).
|
||||
* PD15 - PIN15 (input pullup).
|
||||
*/
|
||||
#define VAL_GPIOD_MODER (PIN_MODE_INPUT(GPIOD_PIN0) | \
|
||||
PIN_MODE_INPUT(GPIOD_PIN1) | \
|
||||
PIN_MODE_INPUT(GPIOD_PIN2) | \
|
||||
PIN_MODE_INPUT(GPIOD_PIN3) | \
|
||||
PIN_MODE_INPUT(GPIOD_PIN4) | \
|
||||
PIN_MODE_INPUT(GPIOD_PIN5) | \
|
||||
PIN_MODE_INPUT(GPIOD_PIN6) | \
|
||||
PIN_MODE_INPUT(GPIOD_PIN7) | \
|
||||
PIN_MODE_INPUT(GPIOD_PIN8) | \
|
||||
PIN_MODE_INPUT(GPIOD_PIN9) | \
|
||||
PIN_MODE_INPUT(GPIOD_PIN10) | \
|
||||
PIN_MODE_INPUT(GPIOD_PIN11) | \
|
||||
PIN_MODE_INPUT(GPIOD_PIN12) | \
|
||||
PIN_MODE_INPUT(GPIOD_PIN13) | \
|
||||
PIN_MODE_INPUT(GPIOD_PIN14) | \
|
||||
PIN_MODE_INPUT(GPIOD_PIN15))
|
||||
#define VAL_GPIOD_OTYPER (PIN_OTYPE_PUSHPULL(GPIOD_PIN0) | \
|
||||
PIN_OTYPE_PUSHPULL(GPIOD_PIN1) | \
|
||||
PIN_OTYPE_PUSHPULL(GPIOD_PIN2) | \
|
||||
PIN_OTYPE_PUSHPULL(GPIOD_PIN3) | \
|
||||
PIN_OTYPE_PUSHPULL(GPIOD_PIN4) | \
|
||||
PIN_OTYPE_PUSHPULL(GPIOD_PIN5) | \
|
||||
PIN_OTYPE_PUSHPULL(GPIOD_PIN6) | \
|
||||
PIN_OTYPE_PUSHPULL(GPIOD_PIN7) | \
|
||||
PIN_OTYPE_PUSHPULL(GPIOD_PIN8) | \
|
||||
PIN_OTYPE_PUSHPULL(GPIOD_PIN9) | \
|
||||
PIN_OTYPE_PUSHPULL(GPIOD_PIN10) | \
|
||||
PIN_OTYPE_PUSHPULL(GPIOD_PIN11) | \
|
||||
PIN_OTYPE_PUSHPULL(GPIOD_PIN12) | \
|
||||
PIN_OTYPE_PUSHPULL(GPIOD_PIN13) | \
|
||||
PIN_OTYPE_PUSHPULL(GPIOD_PIN14) | \
|
||||
PIN_OTYPE_PUSHPULL(GPIOD_PIN15))
|
||||
#define VAL_GPIOD_OSPEEDR (PIN_OSPEED_VERYLOW(GPIOD_PIN0) | \
|
||||
PIN_OSPEED_VERYLOW(GPIOD_PIN1) | \
|
||||
PIN_OSPEED_VERYLOW(GPIOD_PIN2) | \
|
||||
PIN_OSPEED_VERYLOW(GPIOD_PIN3) | \
|
||||
PIN_OSPEED_VERYLOW(GPIOD_PIN4) | \
|
||||
PIN_OSPEED_VERYLOW(GPIOD_PIN5) | \
|
||||
PIN_OSPEED_VERYLOW(GPIOD_PIN6) | \
|
||||
PIN_OSPEED_VERYLOW(GPIOD_PIN7) | \
|
||||
PIN_OSPEED_VERYLOW(GPIOD_PIN8) | \
|
||||
PIN_OSPEED_VERYLOW(GPIOD_PIN9) | \
|
||||
PIN_OSPEED_VERYLOW(GPIOD_PIN10) | \
|
||||
PIN_OSPEED_VERYLOW(GPIOD_PIN11) | \
|
||||
PIN_OSPEED_VERYLOW(GPIOD_PIN12) | \
|
||||
PIN_OSPEED_VERYLOW(GPIOD_PIN13) | \
|
||||
PIN_OSPEED_VERYLOW(GPIOD_PIN14) | \
|
||||
PIN_OSPEED_VERYLOW(GPIOD_PIN15))
|
||||
#define VAL_GPIOD_PUPDR (PIN_PUPDR_PULLUP(GPIOD_PIN0) | \
|
||||
PIN_PUPDR_PULLUP(GPIOD_PIN1) | \
|
||||
PIN_PUPDR_PULLUP(GPIOD_PIN2) | \
|
||||
PIN_PUPDR_PULLUP(GPIOD_PIN3) | \
|
||||
PIN_PUPDR_PULLUP(GPIOD_PIN4) | \
|
||||
PIN_PUPDR_PULLUP(GPIOD_PIN5) | \
|
||||
PIN_PUPDR_PULLUP(GPIOD_PIN6) | \
|
||||
PIN_PUPDR_PULLUP(GPIOD_PIN7) | \
|
||||
PIN_PUPDR_PULLUP(GPIOD_PIN8) | \
|
||||
PIN_PUPDR_PULLUP(GPIOD_PIN9) | \
|
||||
PIN_PUPDR_PULLUP(GPIOD_PIN10) | \
|
||||
PIN_PUPDR_PULLUP(GPIOD_PIN11) | \
|
||||
PIN_PUPDR_PULLUP(GPIOD_PIN12) | \
|
||||
PIN_PUPDR_PULLUP(GPIOD_PIN13) | \
|
||||
PIN_PUPDR_PULLUP(GPIOD_PIN14) | \
|
||||
PIN_PUPDR_PULLUP(GPIOD_PIN15))
|
||||
#define VAL_GPIOD_ODR (PIN_ODR_HIGH(GPIOD_PIN0) | \
|
||||
PIN_ODR_HIGH(GPIOD_PIN1) | \
|
||||
PIN_ODR_HIGH(GPIOD_PIN2) | \
|
||||
PIN_ODR_HIGH(GPIOD_PIN3) | \
|
||||
PIN_ODR_HIGH(GPIOD_PIN4) | \
|
||||
PIN_ODR_HIGH(GPIOD_PIN5) | \
|
||||
PIN_ODR_HIGH(GPIOD_PIN6) | \
|
||||
PIN_ODR_HIGH(GPIOD_PIN7) | \
|
||||
PIN_ODR_HIGH(GPIOD_PIN8) | \
|
||||
PIN_ODR_HIGH(GPIOD_PIN9) | \
|
||||
PIN_ODR_HIGH(GPIOD_PIN10) | \
|
||||
PIN_ODR_HIGH(GPIOD_PIN11) | \
|
||||
PIN_ODR_HIGH(GPIOD_PIN12) | \
|
||||
PIN_ODR_HIGH(GPIOD_PIN13) | \
|
||||
PIN_ODR_HIGH(GPIOD_PIN14) | \
|
||||
PIN_ODR_HIGH(GPIOD_PIN15))
|
||||
#define VAL_GPIOD_AFRL (PIN_AFIO_AF(GPIOD_PIN0, 0U) | \
|
||||
PIN_AFIO_AF(GPIOD_PIN1, 0U) | \
|
||||
PIN_AFIO_AF(GPIOD_PIN2, 0U) | \
|
||||
PIN_AFIO_AF(GPIOD_PIN3, 0U) | \
|
||||
PIN_AFIO_AF(GPIOD_PIN4, 0U) | \
|
||||
PIN_AFIO_AF(GPIOD_PIN5, 0U) | \
|
||||
PIN_AFIO_AF(GPIOD_PIN6, 0U) | \
|
||||
PIN_AFIO_AF(GPIOD_PIN7, 0U))
|
||||
#define VAL_GPIOD_AFRH (PIN_AFIO_AF(GPIOD_PIN8, 0U) | \
|
||||
PIN_AFIO_AF(GPIOD_PIN9, 0U) | \
|
||||
PIN_AFIO_AF(GPIOD_PIN10, 0U) | \
|
||||
PIN_AFIO_AF(GPIOD_PIN11, 0U) | \
|
||||
PIN_AFIO_AF(GPIOD_PIN12, 0U) | \
|
||||
PIN_AFIO_AF(GPIOD_PIN13, 0U) | \
|
||||
PIN_AFIO_AF(GPIOD_PIN14, 0U) | \
|
||||
PIN_AFIO_AF(GPIOD_PIN15, 0U))
|
||||
|
||||
/*
|
||||
* GPIOF setup:
|
||||
*
|
||||
******** PF0 - OSC_IN (input floating).
|
||||
******** PF1 - OSC_OUT (input floating).
|
||||
* PF0 - I2C1_SDA (alternate 0).
|
||||
* PF1 - I2C1_SCL (alternate 0).
|
||||
* PF2 - PIN2 (input pullup).
|
||||
* PF3 - PIN3 (input pullup).
|
||||
* PF4 - PIN4 (input pullup).
|
||||
* PF5 - PIN5 (input pullup).
|
||||
* PF6 - PIN6 (input pullup).
|
||||
* PF7 - PIN7 (input pullup).
|
||||
* PF8 - PIN8 (input pullup).
|
||||
* PF9 - PIN9 (input pullup).
|
||||
* PF10 - PIN10 (input pullup).
|
||||
* PF11 - PIN11 (input pullup).
|
||||
* PF12 - PIN12 (input pullup).
|
||||
* PF13 - PIN13 (input pullup).
|
||||
* PF14 - PIN14 (input pullup).
|
||||
* PF15 - PIN15 (input pullup).
|
||||
*/
|
||||
#define VAL_GPIOF_MODER (PIN_MODE_ALTERNATE(GPIOF_I2C1_SDA) | \
|
||||
PIN_MODE_ALTERNATE(GPIOF_I2C1_SCL) | \
|
||||
PIN_MODE_INPUT(GPIOF_PIN2) | \
|
||||
PIN_MODE_INPUT(GPIOF_PIN3) | \
|
||||
PIN_MODE_INPUT(GPIOF_PIN4) | \
|
||||
PIN_MODE_INPUT(GPIOF_PIN5) | \
|
||||
PIN_MODE_INPUT(GPIOF_PIN6) | \
|
||||
PIN_MODE_INPUT(GPIOF_PIN7) | \
|
||||
PIN_MODE_INPUT(GPIOF_PIN8) | \
|
||||
PIN_MODE_INPUT(GPIOF_PIN9) | \
|
||||
PIN_MODE_INPUT(GPIOF_PIN10) | \
|
||||
PIN_MODE_INPUT(GPIOF_PIN11) | \
|
||||
PIN_MODE_INPUT(GPIOF_PIN12) | \
|
||||
PIN_MODE_INPUT(GPIOF_PIN13) | \
|
||||
PIN_MODE_INPUT(GPIOF_PIN14) | \
|
||||
PIN_MODE_INPUT(GPIOF_PIN15))
|
||||
#define VAL_GPIOF_OTYPER (PIN_OTYPE_PUSHPULL(GPIOF_I2C1_SDA) | \
|
||||
PIN_OTYPE_PUSHPULL(GPIOF_I2C1_SCL) | \
|
||||
PIN_OTYPE_PUSHPULL(GPIOF_PIN2) | \
|
||||
PIN_OTYPE_PUSHPULL(GPIOF_PIN3) | \
|
||||
PIN_OTYPE_PUSHPULL(GPIOF_PIN4) | \
|
||||
PIN_OTYPE_PUSHPULL(GPIOF_PIN5) | \
|
||||
PIN_OTYPE_PUSHPULL(GPIOF_PIN6) | \
|
||||
PIN_OTYPE_PUSHPULL(GPIOF_PIN7) | \
|
||||
PIN_OTYPE_PUSHPULL(GPIOF_PIN8) | \
|
||||
PIN_OTYPE_PUSHPULL(GPIOF_PIN9) | \
|
||||
PIN_OTYPE_PUSHPULL(GPIOF_PIN10) | \
|
||||
PIN_OTYPE_PUSHPULL(GPIOF_PIN11) | \
|
||||
PIN_OTYPE_PUSHPULL(GPIOF_PIN12) | \
|
||||
PIN_OTYPE_PUSHPULL(GPIOF_PIN13) | \
|
||||
PIN_OTYPE_PUSHPULL(GPIOF_PIN14) | \
|
||||
PIN_OTYPE_PUSHPULL(GPIOF_PIN15))
|
||||
#define VAL_GPIOF_OSPEEDR (PIN_OSPEED_HIGH(GPIOF_I2C1_SDA) | \
|
||||
PIN_OSPEED_HIGH(GPIOF_I2C1_SCL) | \
|
||||
PIN_OSPEED_VERYLOW(GPIOF_PIN2) | \
|
||||
PIN_OSPEED_VERYLOW(GPIOF_PIN3) | \
|
||||
PIN_OSPEED_VERYLOW(GPIOF_PIN4) | \
|
||||
PIN_OSPEED_VERYLOW(GPIOF_PIN5) | \
|
||||
PIN_OSPEED_VERYLOW(GPIOF_PIN6) | \
|
||||
PIN_OSPEED_VERYLOW(GPIOF_PIN7) | \
|
||||
PIN_OSPEED_VERYLOW(GPIOF_PIN8) | \
|
||||
PIN_OSPEED_VERYLOW(GPIOF_PIN9) | \
|
||||
PIN_OSPEED_VERYLOW(GPIOF_PIN10) | \
|
||||
PIN_OSPEED_VERYLOW(GPIOF_PIN11) | \
|
||||
PIN_OSPEED_VERYLOW(GPIOF_PIN12) | \
|
||||
PIN_OSPEED_VERYLOW(GPIOF_PIN13) | \
|
||||
PIN_OSPEED_VERYLOW(GPIOF_PIN14) | \
|
||||
PIN_OSPEED_VERYLOW(GPIOF_PIN15))
|
||||
#define VAL_GPIOF_PUPDR (PIN_PUPDR_PULLUP(GPIOF_I2C1_SDA) | \
|
||||
PIN_PUPDR_PULLUP(GPIOF_I2C1_SCL) | \
|
||||
PIN_PUPDR_PULLUP(GPIOF_PIN2) | \
|
||||
PIN_PUPDR_PULLUP(GPIOF_PIN3) | \
|
||||
PIN_PUPDR_PULLUP(GPIOF_PIN4) | \
|
||||
PIN_PUPDR_PULLUP(GPIOF_PIN5) | \
|
||||
PIN_PUPDR_PULLUP(GPIOF_PIN6) | \
|
||||
PIN_PUPDR_PULLUP(GPIOF_PIN7) | \
|
||||
PIN_PUPDR_PULLUP(GPIOF_PIN8) | \
|
||||
PIN_PUPDR_PULLUP(GPIOF_PIN9) | \
|
||||
PIN_PUPDR_PULLUP(GPIOF_PIN10) | \
|
||||
PIN_PUPDR_PULLUP(GPIOF_PIN11) | \
|
||||
PIN_PUPDR_PULLUP(GPIOF_PIN12) | \
|
||||
PIN_PUPDR_PULLUP(GPIOF_PIN13) | \
|
||||
PIN_PUPDR_PULLUP(GPIOF_PIN14) | \
|
||||
PIN_PUPDR_PULLUP(GPIOF_PIN15))
|
||||
#define VAL_GPIOF_ODR (PIN_ODR_HIGH(GPIOF_I2C1_SDA) | \
|
||||
PIN_ODR_HIGH(GPIOF_I2C1_SCL) | \
|
||||
PIN_ODR_HIGH(GPIOF_PIN2) | \
|
||||
PIN_ODR_HIGH(GPIOF_PIN3) | \
|
||||
PIN_ODR_HIGH(GPIOF_PIN4) | \
|
||||
PIN_ODR_HIGH(GPIOF_PIN5) | \
|
||||
PIN_ODR_HIGH(GPIOF_PIN6) | \
|
||||
PIN_ODR_HIGH(GPIOF_PIN7) | \
|
||||
PIN_ODR_HIGH(GPIOF_PIN8) | \
|
||||
PIN_ODR_HIGH(GPIOF_PIN9) | \
|
||||
PIN_ODR_HIGH(GPIOF_PIN10) | \
|
||||
PIN_ODR_HIGH(GPIOF_PIN11) | \
|
||||
PIN_ODR_HIGH(GPIOF_PIN12) | \
|
||||
PIN_ODR_HIGH(GPIOF_PIN13) | \
|
||||
PIN_ODR_HIGH(GPIOF_PIN14) | \
|
||||
PIN_ODR_HIGH(GPIOF_PIN15))
|
||||
#define VAL_GPIOF_AFRL (PIN_AFIO_AF(GPIOF_I2C1_SDA, 0U) | \
|
||||
PIN_AFIO_AF(GPIOF_I2C1_SCL, 0U) | \
|
||||
PIN_AFIO_AF(GPIOF_PIN2, 0U) | \
|
||||
PIN_AFIO_AF(GPIOF_PIN3, 0U) | \
|
||||
PIN_AFIO_AF(GPIOF_PIN4, 0U) | \
|
||||
PIN_AFIO_AF(GPIOF_PIN5, 0U) | \
|
||||
PIN_AFIO_AF(GPIOF_PIN6, 0U) | \
|
||||
PIN_AFIO_AF(GPIOF_PIN7, 0U))
|
||||
#define VAL_GPIOF_AFRH (PIN_AFIO_AF(GPIOF_PIN8, 0U) | \
|
||||
PIN_AFIO_AF(GPIOF_PIN9, 0U) | \
|
||||
PIN_AFIO_AF(GPIOF_PIN10, 0U) | \
|
||||
PIN_AFIO_AF(GPIOF_PIN11, 0U) | \
|
||||
PIN_AFIO_AF(GPIOF_PIN12, 0U) | \
|
||||
PIN_AFIO_AF(GPIOF_PIN13, 0U) | \
|
||||
PIN_AFIO_AF(GPIOF_PIN14, 0U) | \
|
||||
PIN_AFIO_AF(GPIOF_PIN15, 0U))
|
||||
|
||||
/*===========================================================================*/
|
||||
/* External declarations. */
|
||||
/*===========================================================================*/
|
||||
|
||||
#if !defined(_FROM_ASM_)
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
void boardInit(void);
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
#endif /* _FROM_ASM_ */
|
||||
|
||||
#endif /* BOARD_H */
|
||||
@@ -0,0 +1,9 @@
|
||||
# List of all the board related files.
|
||||
BOARDSRC = $(BOARD_PATH)/boards/GENERIC_STM32_F042X6/board.c
|
||||
|
||||
# Required include directories
|
||||
BOARDINC = $(BOARD_PATH)/boards/GENERIC_STM32_F042X6
|
||||
|
||||
# Shared variables
|
||||
ALLCSRC += $(BOARDSRC)
|
||||
ALLINC += $(BOARDINC)
|
||||
@@ -0,0 +1,7 @@
|
||||
/* Address for jumping to bootloader on STM32 chips. */
|
||||
/* It is chip dependent, the correct number can be looked up here:
|
||||
* http://www.st.com/web/en/resource/technical/document/application_note/CD00167594.pdf
|
||||
* This also requires a patch to chibios:
|
||||
* <tmk_dir>/tmk_core/tool/chibios/ch-bootloader-jump.patch
|
||||
*/
|
||||
#define STM32_BOOTLOADER_ADDRESS 0x1FFFC400
|
||||
@@ -0,0 +1,16 @@
|
||||
/* Copyright 2020 t-miyajima
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
#include "chavdai40.h"
|
||||
@@ -0,0 +1,49 @@
|
||||
/* Copyright 2020 t-miyajima
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
|
||||
#pragma once
|
||||
|
||||
#define XXX KC_NO
|
||||
|
||||
#include "quantum.h"
|
||||
|
||||
// This a shortcut to help you visually see your layout.
|
||||
|
||||
#define LAYOUT_44key( \
|
||||
k01, k02, k03, k04, k05, k06, k07, k08, k09, k10, k11, k12, k13, \
|
||||
k14 , k15, k16, k17, k18, k19, k20, k21, k22, k23, k24, k25 , \
|
||||
k26 , k27, k28, k29, k30, k31, k32, k33, k34, k35, k36, k37, \
|
||||
k38, k39, k40, k41, k42, k43, k44 \
|
||||
) { \
|
||||
{ k01, k02, k03, k04, k05, k06, k07, k08, k09, k10, k11, k12, k13 }, \
|
||||
{ k14, k15, k16, k17, k18, k19, k20, k21, k22, k23, k24, k25, XXX }, \
|
||||
{ k26, k27, k28, k29, k30, k31, k32, k33, k34, k35, k36, k37, XXX }, \
|
||||
{ k38, k39, XXX, k40, XXX, k41, XXX, XXX, k42, k43, k44, XXX, XXX } \
|
||||
}
|
||||
|
||||
#define LAYOUT_42key( \
|
||||
k01, k02, k03, k04, k05, k06, k07, k08, k09, k10, k11, k12, k13, \
|
||||
k14 , k15, k16, k17, k18, k19, k20, k21, k22, k23, k24, k25 , \
|
||||
k26 , k27, k28, k29, k30, k31, k32, k33, k34, k35, k36, k37, \
|
||||
k38, k39, k41, k43, k44 \
|
||||
) { \
|
||||
{ k01, k02, k03, k04, k05, k06, k07, k08, k09, k10, k11, k12, k13 }, \
|
||||
{ k14, k15, k16, k17, k18, k19, k20, k21, k22, k23, k24, k25, XXX }, \
|
||||
{ k26, k27, k28, k29, k30, k31, k32, k33, k34, k35, k36, k37, XXX }, \
|
||||
{ k38, k39, XXX, XXX, XXX, k41, XXX, XXX, XXX, k43, k44, XXX, XXX } \
|
||||
}
|
||||
|
||||
@@ -0,0 +1,714 @@
|
||||
/*
|
||||
ChibiOS - Copyright (C) 2006..2018 Giovanni Di Sirio
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
*/
|
||||
|
||||
/**
|
||||
* @file rt/templates/chconf.h
|
||||
* @brief Configuration file template.
|
||||
* @details A copy of this file must be placed in each project directory, it
|
||||
* contains the application specific kernel settings.
|
||||
*
|
||||
* @addtogroup config
|
||||
* @details Kernel related settings and hooks.
|
||||
* @{
|
||||
*/
|
||||
|
||||
#ifndef CHCONF_H
|
||||
#define CHCONF_H
|
||||
|
||||
#define _CHIBIOS_RT_CONF_
|
||||
#define _CHIBIOS_RT_CONF_VER_6_0_
|
||||
|
||||
/*===========================================================================*/
|
||||
/**
|
||||
* @name System timers settings
|
||||
* @{
|
||||
*/
|
||||
/*===========================================================================*/
|
||||
|
||||
/**
|
||||
* @brief System time counter resolution.
|
||||
* @note Allowed values are 16 or 32 bits.
|
||||
*/
|
||||
#if !defined(CH_CFG_ST_RESOLUTION)
|
||||
#define CH_CFG_ST_RESOLUTION 32
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief System tick frequency.
|
||||
* @details Frequency of the system timer that drives the system ticks. This
|
||||
* setting also defines the system tick time unit.
|
||||
*/
|
||||
#if !defined(CH_CFG_ST_FREQUENCY)
|
||||
#define CH_CFG_ST_FREQUENCY 10000
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Time intervals data size.
|
||||
* @note Allowed values are 16, 32 or 64 bits.
|
||||
*/
|
||||
#if !defined(CH_CFG_INTERVALS_SIZE)
|
||||
#define CH_CFG_INTERVALS_SIZE 32
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Time types data size.
|
||||
* @note Allowed values are 16 or 32 bits.
|
||||
*/
|
||||
#if !defined(CH_CFG_TIME_TYPES_SIZE)
|
||||
#define CH_CFG_TIME_TYPES_SIZE 32
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Time delta constant for the tick-less mode.
|
||||
* @note If this value is zero then the system uses the classic
|
||||
* periodic tick. This value represents the minimum number
|
||||
* of ticks that is safe to specify in a timeout directive.
|
||||
* The value one is not valid, timeouts are rounded up to
|
||||
* this value.
|
||||
*/
|
||||
#if !defined(CH_CFG_ST_TIMEDELTA)
|
||||
#define CH_CFG_ST_TIMEDELTA 2
|
||||
#endif
|
||||
|
||||
/** @} */
|
||||
|
||||
/*===========================================================================*/
|
||||
/**
|
||||
* @name Kernel parameters and options
|
||||
* @{
|
||||
*/
|
||||
/*===========================================================================*/
|
||||
|
||||
/**
|
||||
* @brief Round robin interval.
|
||||
* @details This constant is the number of system ticks allowed for the
|
||||
* threads before preemption occurs. Setting this value to zero
|
||||
* disables the preemption for threads with equal priority and the
|
||||
* round robin becomes cooperative. Note that higher priority
|
||||
* threads can still preempt, the kernel is always preemptive.
|
||||
* @note Disabling the round robin preemption makes the kernel more compact
|
||||
* and generally faster.
|
||||
* @note The round robin preemption is not supported in tickless mode and
|
||||
* must be set to zero in that case.
|
||||
*/
|
||||
#if !defined(CH_CFG_TIME_QUANTUM)
|
||||
#define CH_CFG_TIME_QUANTUM 0
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Managed RAM size.
|
||||
* @details Size of the RAM area to be managed by the OS. If set to zero
|
||||
* then the whole available RAM is used. The core memory is made
|
||||
* available to the heap allocator and/or can be used directly through
|
||||
* the simplified core memory allocator.
|
||||
*
|
||||
* @note In order to let the OS manage the whole RAM the linker script must
|
||||
* provide the @p __heap_base__ and @p __heap_end__ symbols.
|
||||
* @note Requires @p CH_CFG_USE_MEMCORE.
|
||||
*/
|
||||
#if !defined(CH_CFG_MEMCORE_SIZE)
|
||||
#define CH_CFG_MEMCORE_SIZE 0
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Idle thread automatic spawn suppression.
|
||||
* @details When this option is activated the function @p chSysInit()
|
||||
* does not spawn the idle thread. The application @p main()
|
||||
* function becomes the idle thread and must implement an
|
||||
* infinite loop.
|
||||
*/
|
||||
#if !defined(CH_CFG_NO_IDLE_THREAD)
|
||||
#define CH_CFG_NO_IDLE_THREAD FALSE
|
||||
#endif
|
||||
|
||||
/** @} */
|
||||
|
||||
/*===========================================================================*/
|
||||
/**
|
||||
* @name Performance options
|
||||
* @{
|
||||
*/
|
||||
/*===========================================================================*/
|
||||
|
||||
/**
|
||||
* @brief OS optimization.
|
||||
* @details If enabled then time efficient rather than space efficient code
|
||||
* is used when two possible implementations exist.
|
||||
*
|
||||
* @note This is not related to the compiler optimization options.
|
||||
* @note The default is @p TRUE.
|
||||
*/
|
||||
#if !defined(CH_CFG_OPTIMIZE_SPEED)
|
||||
#define CH_CFG_OPTIMIZE_SPEED TRUE
|
||||
#endif
|
||||
|
||||
/** @} */
|
||||
|
||||
/*===========================================================================*/
|
||||
/**
|
||||
* @name Subsystem options
|
||||
* @{
|
||||
*/
|
||||
/*===========================================================================*/
|
||||
|
||||
/**
|
||||
* @brief Time Measurement APIs.
|
||||
* @details If enabled then the time measurement APIs are included in
|
||||
* the kernel.
|
||||
*
|
||||
* @note The default is @p TRUE.
|
||||
*/
|
||||
#if !defined(CH_CFG_USE_TM)
|
||||
#define CH_CFG_USE_TM FALSE
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Threads registry APIs.
|
||||
* @details If enabled then the registry APIs are included in the kernel.
|
||||
*
|
||||
* @note The default is @p TRUE.
|
||||
*/
|
||||
#if !defined(CH_CFG_USE_REGISTRY)
|
||||
#define CH_CFG_USE_REGISTRY TRUE
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Threads synchronization APIs.
|
||||
* @details If enabled then the @p chThdWait() function is included in
|
||||
* the kernel.
|
||||
*
|
||||
* @note The default is @p TRUE.
|
||||
*/
|
||||
#if !defined(CH_CFG_USE_WAITEXIT)
|
||||
#define CH_CFG_USE_WAITEXIT TRUE
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Semaphores APIs.
|
||||
* @details If enabled then the Semaphores APIs are included in the kernel.
|
||||
*
|
||||
* @note The default is @p TRUE.
|
||||
*/
|
||||
#if !defined(CH_CFG_USE_SEMAPHORES)
|
||||
#define CH_CFG_USE_SEMAPHORES TRUE
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Semaphores queuing mode.
|
||||
* @details If enabled then the threads are enqueued on semaphores by
|
||||
* priority rather than in FIFO order.
|
||||
*
|
||||
* @note The default is @p FALSE. Enable this if you have special
|
||||
* requirements.
|
||||
* @note Requires @p CH_CFG_USE_SEMAPHORES.
|
||||
*/
|
||||
#if !defined(CH_CFG_USE_SEMAPHORES_PRIORITY)
|
||||
#define CH_CFG_USE_SEMAPHORES_PRIORITY FALSE
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Mutexes APIs.
|
||||
* @details If enabled then the mutexes APIs are included in the kernel.
|
||||
*
|
||||
* @note The default is @p TRUE.
|
||||
*/
|
||||
#if !defined(CH_CFG_USE_MUTEXES)
|
||||
#define CH_CFG_USE_MUTEXES TRUE
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Enables recursive behavior on mutexes.
|
||||
* @note Recursive mutexes are heavier and have an increased
|
||||
* memory footprint.
|
||||
*
|
||||
* @note The default is @p FALSE.
|
||||
* @note Requires @p CH_CFG_USE_MUTEXES.
|
||||
*/
|
||||
#if !defined(CH_CFG_USE_MUTEXES_RECURSIVE)
|
||||
#define CH_CFG_USE_MUTEXES_RECURSIVE FALSE
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Conditional Variables APIs.
|
||||
* @details If enabled then the conditional variables APIs are included
|
||||
* in the kernel.
|
||||
*
|
||||
* @note The default is @p TRUE.
|
||||
* @note Requires @p CH_CFG_USE_MUTEXES.
|
||||
*/
|
||||
#if !defined(CH_CFG_USE_CONDVARS)
|
||||
#define CH_CFG_USE_CONDVARS TRUE
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Conditional Variables APIs with timeout.
|
||||
* @details If enabled then the conditional variables APIs with timeout
|
||||
* specification are included in the kernel.
|
||||
*
|
||||
* @note The default is @p TRUE.
|
||||
* @note Requires @p CH_CFG_USE_CONDVARS.
|
||||
*/
|
||||
#if !defined(CH_CFG_USE_CONDVARS_TIMEOUT)
|
||||
#define CH_CFG_USE_CONDVARS_TIMEOUT TRUE
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Events Flags APIs.
|
||||
* @details If enabled then the event flags APIs are included in the kernel.
|
||||
*
|
||||
* @note The default is @p TRUE.
|
||||
*/
|
||||
#if !defined(CH_CFG_USE_EVENTS)
|
||||
#define CH_CFG_USE_EVENTS TRUE
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Events Flags APIs with timeout.
|
||||
* @details If enabled then the events APIs with timeout specification
|
||||
* are included in the kernel.
|
||||
*
|
||||
* @note The default is @p TRUE.
|
||||
* @note Requires @p CH_CFG_USE_EVENTS.
|
||||
*/
|
||||
#if !defined(CH_CFG_USE_EVENTS_TIMEOUT)
|
||||
#define CH_CFG_USE_EVENTS_TIMEOUT TRUE
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Synchronous Messages APIs.
|
||||
* @details If enabled then the synchronous messages APIs are included
|
||||
* in the kernel.
|
||||
*
|
||||
* @note The default is @p TRUE.
|
||||
*/
|
||||
#if !defined(CH_CFG_USE_MESSAGES)
|
||||
#define CH_CFG_USE_MESSAGES TRUE
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Synchronous Messages queuing mode.
|
||||
* @details If enabled then messages are served by priority rather than in
|
||||
* FIFO order.
|
||||
*
|
||||
* @note The default is @p FALSE. Enable this if you have special
|
||||
* requirements.
|
||||
* @note Requires @p CH_CFG_USE_MESSAGES.
|
||||
*/
|
||||
#if !defined(CH_CFG_USE_MESSAGES_PRIORITY)
|
||||
#define CH_CFG_USE_MESSAGES_PRIORITY FALSE
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Mailboxes APIs.
|
||||
* @details If enabled then the asynchronous messages (mailboxes) APIs are
|
||||
* included in the kernel.
|
||||
*
|
||||
* @note The default is @p TRUE.
|
||||
* @note Requires @p CH_CFG_USE_SEMAPHORES.
|
||||
*/
|
||||
#if !defined(CH_CFG_USE_MAILBOXES)
|
||||
#define CH_CFG_USE_MAILBOXES TRUE
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Core Memory Manager APIs.
|
||||
* @details If enabled then the core memory manager APIs are included
|
||||
* in the kernel.
|
||||
*
|
||||
* @note The default is @p TRUE.
|
||||
*/
|
||||
#if !defined(CH_CFG_USE_MEMCORE)
|
||||
#define CH_CFG_USE_MEMCORE TRUE
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Heap Allocator APIs.
|
||||
* @details If enabled then the memory heap allocator APIs are included
|
||||
* in the kernel.
|
||||
*
|
||||
* @note The default is @p TRUE.
|
||||
* @note Requires @p CH_CFG_USE_MEMCORE and either @p CH_CFG_USE_MUTEXES or
|
||||
* @p CH_CFG_USE_SEMAPHORES.
|
||||
* @note Mutexes are recommended.
|
||||
*/
|
||||
#if !defined(CH_CFG_USE_HEAP)
|
||||
#define CH_CFG_USE_HEAP TRUE
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Memory Pools Allocator APIs.
|
||||
* @details If enabled then the memory pools allocator APIs are included
|
||||
* in the kernel.
|
||||
*
|
||||
* @note The default is @p TRUE.
|
||||
*/
|
||||
#if !defined(CH_CFG_USE_MEMPOOLS)
|
||||
#define CH_CFG_USE_MEMPOOLS TRUE
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Objects FIFOs APIs.
|
||||
* @details If enabled then the objects FIFOs APIs are included
|
||||
* in the kernel.
|
||||
*
|
||||
* @note The default is @p TRUE.
|
||||
*/
|
||||
#if !defined(CH_CFG_USE_OBJ_FIFOS)
|
||||
#define CH_CFG_USE_OBJ_FIFOS TRUE
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Pipes APIs.
|
||||
* @details If enabled then the pipes APIs are included
|
||||
* in the kernel.
|
||||
*
|
||||
* @note The default is @p TRUE.
|
||||
*/
|
||||
#if !defined(CH_CFG_USE_PIPES)
|
||||
#define CH_CFG_USE_PIPES TRUE
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Dynamic Threads APIs.
|
||||
* @details If enabled then the dynamic threads creation APIs are included
|
||||
* in the kernel.
|
||||
*
|
||||
* @note The default is @p TRUE.
|
||||
* @note Requires @p CH_CFG_USE_WAITEXIT.
|
||||
* @note Requires @p CH_CFG_USE_HEAP and/or @p CH_CFG_USE_MEMPOOLS.
|
||||
*/
|
||||
#if !defined(CH_CFG_USE_DYNAMIC)
|
||||
#define CH_CFG_USE_DYNAMIC TRUE
|
||||
#endif
|
||||
|
||||
/** @} */
|
||||
|
||||
/*===========================================================================*/
|
||||
/**
|
||||
* @name Objects factory options
|
||||
* @{
|
||||
*/
|
||||
/*===========================================================================*/
|
||||
|
||||
/**
|
||||
* @brief Objects Factory APIs.
|
||||
* @details If enabled then the objects factory APIs are included in the
|
||||
* kernel.
|
||||
*
|
||||
* @note The default is @p FALSE.
|
||||
*/
|
||||
#if !defined(CH_CFG_USE_FACTORY)
|
||||
#define CH_CFG_USE_FACTORY TRUE
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Maximum length for object names.
|
||||
* @details If the specified length is zero then the name is stored by
|
||||
* pointer but this could have unintended side effects.
|
||||
*/
|
||||
#if !defined(CH_CFG_FACTORY_MAX_NAMES_LENGTH)
|
||||
#define CH_CFG_FACTORY_MAX_NAMES_LENGTH 8
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Enables the registry of generic objects.
|
||||
*/
|
||||
#if !defined(CH_CFG_FACTORY_OBJECTS_REGISTRY)
|
||||
#define CH_CFG_FACTORY_OBJECTS_REGISTRY TRUE
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Enables factory for generic buffers.
|
||||
*/
|
||||
#if !defined(CH_CFG_FACTORY_GENERIC_BUFFERS)
|
||||
#define CH_CFG_FACTORY_GENERIC_BUFFERS TRUE
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Enables factory for semaphores.
|
||||
*/
|
||||
#if !defined(CH_CFG_FACTORY_SEMAPHORES)
|
||||
#define CH_CFG_FACTORY_SEMAPHORES TRUE
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Enables factory for mailboxes.
|
||||
*/
|
||||
#if !defined(CH_CFG_FACTORY_MAILBOXES)
|
||||
#define CH_CFG_FACTORY_MAILBOXES TRUE
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Enables factory for objects FIFOs.
|
||||
*/
|
||||
#if !defined(CH_CFG_FACTORY_OBJ_FIFOS)
|
||||
#define CH_CFG_FACTORY_OBJ_FIFOS TRUE
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Enables factory for Pipes.
|
||||
*/
|
||||
#if !defined(CH_CFG_FACTORY_PIPES) || defined(__DOXYGEN__)
|
||||
#define CH_CFG_FACTORY_PIPES TRUE
|
||||
#endif
|
||||
|
||||
/** @} */
|
||||
|
||||
/*===========================================================================*/
|
||||
/**
|
||||
* @name Debug options
|
||||
* @{
|
||||
*/
|
||||
/*===========================================================================*/
|
||||
|
||||
/**
|
||||
* @brief Debug option, kernel statistics.
|
||||
*
|
||||
* @note The default is @p FALSE.
|
||||
*/
|
||||
#if !defined(CH_DBG_STATISTICS)
|
||||
#define CH_DBG_STATISTICS FALSE
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Debug option, system state check.
|
||||
* @details If enabled the correct call protocol for system APIs is checked
|
||||
* at runtime.
|
||||
*
|
||||
* @note The default is @p FALSE.
|
||||
*/
|
||||
#if !defined(CH_DBG_SYSTEM_STATE_CHECK)
|
||||
#define CH_DBG_SYSTEM_STATE_CHECK FALSE
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Debug option, parameters checks.
|
||||
* @details If enabled then the checks on the API functions input
|
||||
* parameters are activated.
|
||||
*
|
||||
* @note The default is @p FALSE.
|
||||
*/
|
||||
#if !defined(CH_DBG_ENABLE_CHECKS)
|
||||
#define CH_DBG_ENABLE_CHECKS FALSE
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Debug option, consistency checks.
|
||||
* @details If enabled then all the assertions in the kernel code are
|
||||
* activated. This includes consistency checks inside the kernel,
|
||||
* runtime anomalies and port-defined checks.
|
||||
*
|
||||
* @note The default is @p FALSE.
|
||||
*/
|
||||
#if !defined(CH_DBG_ENABLE_ASSERTS)
|
||||
#define CH_DBG_ENABLE_ASSERTS FALSE
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Debug option, trace buffer.
|
||||
* @details If enabled then the trace buffer is activated.
|
||||
*
|
||||
* @note The default is @p CH_DBG_TRACE_MASK_DISABLED.
|
||||
*/
|
||||
#if !defined(CH_DBG_TRACE_MASK)
|
||||
#define CH_DBG_TRACE_MASK CH_DBG_TRACE_MASK_DISABLED
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Trace buffer entries.
|
||||
* @note The trace buffer is only allocated if @p CH_DBG_TRACE_MASK is
|
||||
* different from @p CH_DBG_TRACE_MASK_DISABLED.
|
||||
*/
|
||||
#if !defined(CH_DBG_TRACE_BUFFER_SIZE)
|
||||
#define CH_DBG_TRACE_BUFFER_SIZE 128
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Debug option, stack checks.
|
||||
* @details If enabled then a runtime stack check is performed.
|
||||
*
|
||||
* @note The default is @p FALSE.
|
||||
* @note The stack check is performed in a architecture/port dependent way.
|
||||
* It may not be implemented or some ports.
|
||||
* @note The default failure mode is to halt the system with the global
|
||||
* @p panic_msg variable set to @p NULL.
|
||||
*/
|
||||
#if !defined(CH_DBG_ENABLE_STACK_CHECK)
|
||||
#define CH_DBG_ENABLE_STACK_CHECK FALSE
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Debug option, stacks initialization.
|
||||
* @details If enabled then the threads working area is filled with a byte
|
||||
* value when a thread is created. This can be useful for the
|
||||
* runtime measurement of the used stack.
|
||||
*
|
||||
* @note The default is @p FALSE.
|
||||
*/
|
||||
#if !defined(CH_DBG_FILL_THREADS)
|
||||
#define CH_DBG_FILL_THREADS FALSE
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Debug option, threads profiling.
|
||||
* @details If enabled then a field is added to the @p thread_t structure that
|
||||
* counts the system ticks occurred while executing the thread.
|
||||
*
|
||||
* @note The default is @p FALSE.
|
||||
* @note This debug option is not currently compatible with the
|
||||
* tickless mode.
|
||||
*/
|
||||
#if !defined(CH_DBG_THREADS_PROFILING)
|
||||
#define CH_DBG_THREADS_PROFILING FALSE
|
||||
#endif
|
||||
|
||||
/** @} */
|
||||
|
||||
/*===========================================================================*/
|
||||
/**
|
||||
* @name Kernel hooks
|
||||
* @{
|
||||
*/
|
||||
/*===========================================================================*/
|
||||
|
||||
/**
|
||||
* @brief System structure extension.
|
||||
* @details User fields added to the end of the @p ch_system_t structure.
|
||||
*/
|
||||
#define CH_CFG_SYSTEM_EXTRA_FIELDS \
|
||||
/* Add threads custom fields here.*/
|
||||
|
||||
/**
|
||||
* @brief System initialization hook.
|
||||
* @details User initialization code added to the @p chSysInit() function
|
||||
* just before interrupts are enabled globally.
|
||||
*/
|
||||
#define CH_CFG_SYSTEM_INIT_HOOK() { \
|
||||
/* Add threads initialization code here.*/ \
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Threads descriptor structure extension.
|
||||
* @details User fields added to the end of the @p thread_t structure.
|
||||
*/
|
||||
#define CH_CFG_THREAD_EXTRA_FIELDS \
|
||||
/* Add threads custom fields here.*/
|
||||
|
||||
/**
|
||||
* @brief Threads initialization hook.
|
||||
* @details User initialization code added to the @p _thread_init() function.
|
||||
*
|
||||
* @note It is invoked from within @p _thread_init() and implicitly from all
|
||||
* the threads creation APIs.
|
||||
*/
|
||||
#define CH_CFG_THREAD_INIT_HOOK(tp) { \
|
||||
/* Add threads initialization code here.*/ \
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Threads finalization hook.
|
||||
* @details User finalization code added to the @p chThdExit() API.
|
||||
*/
|
||||
#define CH_CFG_THREAD_EXIT_HOOK(tp) { \
|
||||
/* Add threads finalization code here.*/ \
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Context switch hook.
|
||||
* @details This hook is invoked just before switching between threads.
|
||||
*/
|
||||
#define CH_CFG_CONTEXT_SWITCH_HOOK(ntp, otp) { \
|
||||
/* Context switch code here.*/ \
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief ISR enter hook.
|
||||
*/
|
||||
#define CH_CFG_IRQ_PROLOGUE_HOOK() { \
|
||||
/* IRQ prologue code here.*/ \
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief ISR exit hook.
|
||||
*/
|
||||
#define CH_CFG_IRQ_EPILOGUE_HOOK() { \
|
||||
/* IRQ epilogue code here.*/ \
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Idle thread enter hook.
|
||||
* @note This hook is invoked within a critical zone, no OS functions
|
||||
* should be invoked from here.
|
||||
* @note This macro can be used to activate a power saving mode.
|
||||
*/
|
||||
#define CH_CFG_IDLE_ENTER_HOOK() { \
|
||||
/* Idle-enter code here.*/ \
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Idle thread leave hook.
|
||||
* @note This hook is invoked within a critical zone, no OS functions
|
||||
* should be invoked from here.
|
||||
* @note This macro can be used to deactivate a power saving mode.
|
||||
*/
|
||||
#define CH_CFG_IDLE_LEAVE_HOOK() { \
|
||||
/* Idle-leave code here.*/ \
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Idle Loop hook.
|
||||
* @details This hook is continuously invoked by the idle thread loop.
|
||||
*/
|
||||
#define CH_CFG_IDLE_LOOP_HOOK() { \
|
||||
/* Idle loop code here.*/ \
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief System tick event hook.
|
||||
* @details This hook is invoked in the system tick handler immediately
|
||||
* after processing the virtual timers queue.
|
||||
*/
|
||||
#define CH_CFG_SYSTEM_TICK_HOOK() { \
|
||||
/* System tick event code here.*/ \
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief System halt hook.
|
||||
* @details This hook is invoked in case to a system halting error before
|
||||
* the system is halted.
|
||||
*/
|
||||
#define CH_CFG_SYSTEM_HALT_HOOK(reason) { \
|
||||
/* System halt code here.*/ \
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Trace hook.
|
||||
* @details This hook is invoked each time a new record is written in the
|
||||
* trace buffer.
|
||||
*/
|
||||
#define CH_CFG_TRACE_HOOK(tep) { \
|
||||
/* Trace code here.*/ \
|
||||
}
|
||||
|
||||
/** @} */
|
||||
|
||||
/*===========================================================================*/
|
||||
/* Port-specific settings (override port settings defaulted in chcore.h). */
|
||||
/*===========================================================================*/
|
||||
|
||||
#endif /* CHCONF_H */
|
||||
|
||||
/** @} */
|
||||
@@ -0,0 +1,74 @@
|
||||
/* Copyright 2020 t-miyajima
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "config_common.h"
|
||||
|
||||
/* USB Device descriptor parameter */
|
||||
#define VENDOR_ID 0x16D0
|
||||
#define PRODUCT_ID 0x0F95
|
||||
#define DEVICE_VER 0x0001
|
||||
#define MANUFACTURER t-miyajima
|
||||
#define PRODUCT Chavdai40
|
||||
|
||||
/* usb power settings */
|
||||
#define USB_MAX_POWER_CONSUMPTION 100
|
||||
|
||||
/* key matrix size */
|
||||
#define MATRIX_ROWS 4
|
||||
#define MATRIX_COLS 13
|
||||
|
||||
|
||||
#define MATRIX_ROW_PINS { A0, A15, B5, B6 }
|
||||
#define MATRIX_COL_PINS { B8, B4, B3, B2, B1, B0, A7, A6, A5, A4, A3, A2, A1 }
|
||||
#define UNUSED_PINS
|
||||
|
||||
/* COL2ROW, ROW2COL*/
|
||||
#define DIODE_DIRECTION COL2ROW
|
||||
|
||||
/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
|
||||
#define DEBOUNCE 5
|
||||
|
||||
/* define if matrix has ghost (lacks anti-ghosting diodes) */
|
||||
//#define MATRIX_HAS_GHOST
|
||||
|
||||
/* If defined, GRAVE_ESC will always act as ESC when CTRL is held.
|
||||
* This is userful for the Windows task manager shortcut (ctrl+shift+esc).
|
||||
*/
|
||||
// #define GRAVE_ESC_CTRL_OVERRIDE
|
||||
|
||||
/*
|
||||
* Force NKRO
|
||||
*
|
||||
* Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved
|
||||
* state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the
|
||||
* makefile for this to work.)
|
||||
*
|
||||
* If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N)
|
||||
* until the next keyboard reset.
|
||||
*
|
||||
* NKRO may prevent your keystrokes from being detected in the BIOS, but it is
|
||||
* fully operational during normal computer usage.
|
||||
*
|
||||
* For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N)
|
||||
* or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by
|
||||
* bootmagic, NKRO mode will always be enabled until it is toggled again during a
|
||||
* power-up.
|
||||
*
|
||||
*/
|
||||
//#define FORCE_NKRO
|
||||
@@ -0,0 +1,525 @@
|
||||
/*
|
||||
ChibiOS - Copyright (C) 2006..2018 Giovanni Di Sirio
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
*/
|
||||
|
||||
/**
|
||||
* @file templates/halconf.h
|
||||
* @brief HAL configuration header.
|
||||
* @details HAL configuration file, this file allows to enable or disable the
|
||||
* various device drivers from your application. You may also use
|
||||
* this file in order to override the device drivers default settings.
|
||||
*
|
||||
* @addtogroup HAL_CONF
|
||||
* @{
|
||||
*/
|
||||
|
||||
#ifndef HALCONF_H
|
||||
#define HALCONF_H
|
||||
|
||||
#define _CHIBIOS_HAL_CONF_
|
||||
#define _CHIBIOS_HAL_CONF_VER_7_0_
|
||||
|
||||
#include "mcuconf.h"
|
||||
|
||||
/**
|
||||
* @brief Enables the PAL subsystem.
|
||||
*/
|
||||
#if !defined(HAL_USE_PAL) || defined(__DOXYGEN__)
|
||||
#define HAL_USE_PAL TRUE
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Enables the ADC subsystem.
|
||||
*/
|
||||
#if !defined(HAL_USE_ADC) || defined(__DOXYGEN__)
|
||||
#define HAL_USE_ADC FALSE
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Enables the CAN subsystem.
|
||||
*/
|
||||
#if !defined(HAL_USE_CAN) || defined(__DOXYGEN__)
|
||||
#define HAL_USE_CAN FALSE
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Enables the cryptographic subsystem.
|
||||
*/
|
||||
#if !defined(HAL_USE_CRY) || defined(__DOXYGEN__)
|
||||
#define HAL_USE_CRY FALSE
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Enables the DAC subsystem.
|
||||
*/
|
||||
#if !defined(HAL_USE_DAC) || defined(__DOXYGEN__)
|
||||
#define HAL_USE_DAC FALSE
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Enables the GPT subsystem.
|
||||
*/
|
||||
#if !defined(HAL_USE_GPT) || defined(__DOXYGEN__)
|
||||
#define HAL_USE_GPT FALSE
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Enables the I2C subsystem.
|
||||
*/
|
||||
#if !defined(HAL_USE_I2C) || defined(__DOXYGEN__)
|
||||
#define HAL_USE_I2C FALSE
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Enables the I2S subsystem.
|
||||
*/
|
||||
#if !defined(HAL_USE_I2S) || defined(__DOXYGEN__)
|
||||
#define HAL_USE_I2S FALSE
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Enables the ICU subsystem.
|
||||
*/
|
||||
#if !defined(HAL_USE_ICU) || defined(__DOXYGEN__)
|
||||
#define HAL_USE_ICU FALSE
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Enables the MAC subsystem.
|
||||
*/
|
||||
#if !defined(HAL_USE_MAC) || defined(__DOXYGEN__)
|
||||
#define HAL_USE_MAC FALSE
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Enables the MMC_SPI subsystem.
|
||||
*/
|
||||
#if !defined(HAL_USE_MMC_SPI) || defined(__DOXYGEN__)
|
||||
#define HAL_USE_MMC_SPI FALSE
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Enables the PWM subsystem.
|
||||
*/
|
||||
#if !defined(HAL_USE_PWM) || defined(__DOXYGEN__)
|
||||
#define HAL_USE_PWM FALSE
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Enables the RTC subsystem.
|
||||
*/
|
||||
#if !defined(HAL_USE_RTC) || defined(__DOXYGEN__)
|
||||
#define HAL_USE_RTC FALSE
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Enables the SDC subsystem.
|
||||
*/
|
||||
#if !defined(HAL_USE_SDC) || defined(__DOXYGEN__)
|
||||
#define HAL_USE_SDC FALSE
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Enables the SERIAL subsystem.
|
||||
*/
|
||||
#if !defined(HAL_USE_SERIAL) || defined(__DOXYGEN__)
|
||||
#define HAL_USE_SERIAL TRUE
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Enables the SERIAL over USB subsystem.
|
||||
*/
|
||||
#if !defined(HAL_USE_SERIAL_USB) || defined(__DOXYGEN__)
|
||||
#define HAL_USE_SERIAL_USB FALSE
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Enables the SIO subsystem.
|
||||
*/
|
||||
#if !defined(HAL_USE_SIO) || defined(__DOXYGEN__)
|
||||
#define HAL_USE_SIO FALSE
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Enables the SPI subsystem.
|
||||
*/
|
||||
#if !defined(HAL_USE_SPI) || defined(__DOXYGEN__)
|
||||
#define HAL_USE_SPI FALSE
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Enables the TRNG subsystem.
|
||||
*/
|
||||
#if !defined(HAL_USE_TRNG) || defined(__DOXYGEN__)
|
||||
#define HAL_USE_TRNG FALSE
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Enables the UART subsystem.
|
||||
*/
|
||||
#if !defined(HAL_USE_UART) || defined(__DOXYGEN__)
|
||||
#define HAL_USE_UART FALSE
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Enables the USB subsystem.
|
||||
*/
|
||||
#if !defined(HAL_USE_USB) || defined(__DOXYGEN__)
|
||||
#define HAL_USE_USB TRUE
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Enables the WDG subsystem.
|
||||
*/
|
||||
#if !defined(HAL_USE_WDG) || defined(__DOXYGEN__)
|
||||
#define HAL_USE_WDG FALSE
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Enables the WSPI subsystem.
|
||||
*/
|
||||
#if !defined(HAL_USE_WSPI) || defined(__DOXYGEN__)
|
||||
#define HAL_USE_WSPI FALSE
|
||||
#endif
|
||||
|
||||
/*===========================================================================*/
|
||||
/* PAL driver related settings. */
|
||||
/*===========================================================================*/
|
||||
|
||||
/**
|
||||
* @brief Enables synchronous APIs.
|
||||
* @note Disabling this option saves both code and data space.
|
||||
*/
|
||||
#if !defined(PAL_USE_CALLBACKS) || defined(__DOXYGEN__)
|
||||
#define PAL_USE_CALLBACKS FALSE
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Enables synchronous APIs.
|
||||
* @note Disabling this option saves both code and data space.
|
||||
*/
|
||||
#if !defined(PAL_USE_WAIT) || defined(__DOXYGEN__)
|
||||
#define PAL_USE_WAIT FALSE
|
||||
#endif
|
||||
|
||||
/*===========================================================================*/
|
||||
/* ADC driver related settings. */
|
||||
/*===========================================================================*/
|
||||
|
||||
/**
|
||||
* @brief Enables synchronous APIs.
|
||||
* @note Disabling this option saves both code and data space.
|
||||
*/
|
||||
#if !defined(ADC_USE_WAIT) || defined(__DOXYGEN__)
|
||||
#define ADC_USE_WAIT TRUE
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Enables the @p adcAcquireBus() and @p adcReleaseBus() APIs.
|
||||
* @note Disabling this option saves both code and data space.
|
||||
*/
|
||||
#if !defined(ADC_USE_MUTUAL_EXCLUSION) || defined(__DOXYGEN__)
|
||||
#define ADC_USE_MUTUAL_EXCLUSION TRUE
|
||||
#endif
|
||||
|
||||
/*===========================================================================*/
|
||||
/* CAN driver related settings. */
|
||||
/*===========================================================================*/
|
||||
|
||||
/**
|
||||
* @brief Sleep mode related APIs inclusion switch.
|
||||
*/
|
||||
#if !defined(CAN_USE_SLEEP_MODE) || defined(__DOXYGEN__)
|
||||
#define CAN_USE_SLEEP_MODE TRUE
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Enforces the driver to use direct callbacks rather than OSAL events.
|
||||
*/
|
||||
#if !defined(CAN_ENFORCE_USE_CALLBACKS) || defined(__DOXYGEN__)
|
||||
#define CAN_ENFORCE_USE_CALLBACKS FALSE
|
||||
#endif
|
||||
|
||||
/*===========================================================================*/
|
||||
/* CRY driver related settings. */
|
||||
/*===========================================================================*/
|
||||
|
||||
/**
|
||||
* @brief Enables the SW fall-back of the cryptographic driver.
|
||||
* @details When enabled, this option, activates a fall-back software
|
||||
* implementation for algorithms not supported by the underlying
|
||||
* hardware.
|
||||
* @note Fall-back implementations may not be present for all algorithms.
|
||||
*/
|
||||
#if !defined(HAL_CRY_USE_FALLBACK) || defined(__DOXYGEN__)
|
||||
#define HAL_CRY_USE_FALLBACK FALSE
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Makes the driver forcibly use the fall-back implementations.
|
||||
*/
|
||||
#if !defined(HAL_CRY_ENFORCE_FALLBACK) || defined(__DOXYGEN__)
|
||||
#define HAL_CRY_ENFORCE_FALLBACK FALSE
|
||||
#endif
|
||||
|
||||
/*===========================================================================*/
|
||||
/* DAC driver related settings. */
|
||||
/*===========================================================================*/
|
||||
|
||||
/**
|
||||
* @brief Enables synchronous APIs.
|
||||
* @note Disabling this option saves both code and data space.
|
||||
*/
|
||||
#if !defined(DAC_USE_WAIT) || defined(__DOXYGEN__)
|
||||
#define DAC_USE_WAIT TRUE
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Enables the @p dacAcquireBus() and @p dacReleaseBus() APIs.
|
||||
* @note Disabling this option saves both code and data space.
|
||||
*/
|
||||
#if !defined(DAC_USE_MUTUAL_EXCLUSION) || defined(__DOXYGEN__)
|
||||
#define DAC_USE_MUTUAL_EXCLUSION TRUE
|
||||
#endif
|
||||
|
||||
/*===========================================================================*/
|
||||
/* I2C driver related settings. */
|
||||
/*===========================================================================*/
|
||||
|
||||
/**
|
||||
* @brief Enables the mutual exclusion APIs on the I2C bus.
|
||||
*/
|
||||
#if !defined(I2C_USE_MUTUAL_EXCLUSION) || defined(__DOXYGEN__)
|
||||
#define I2C_USE_MUTUAL_EXCLUSION TRUE
|
||||
#endif
|
||||
|
||||
/*===========================================================================*/
|
||||
/* MAC driver related settings. */
|
||||
/*===========================================================================*/
|
||||
|
||||
/**
|
||||
* @brief Enables the zero-copy API.
|
||||
*/
|
||||
#if !defined(MAC_USE_ZERO_COPY) || defined(__DOXYGEN__)
|
||||
#define MAC_USE_ZERO_COPY FALSE
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Enables an event sources for incoming packets.
|
||||
*/
|
||||
#if !defined(MAC_USE_EVENTS) || defined(__DOXYGEN__)
|
||||
#define MAC_USE_EVENTS TRUE
|
||||
#endif
|
||||
|
||||
/*===========================================================================*/
|
||||
/* MMC_SPI driver related settings. */
|
||||
/*===========================================================================*/
|
||||
|
||||
/**
|
||||
* @brief Delays insertions.
|
||||
* @details If enabled this options inserts delays into the MMC waiting
|
||||
* routines releasing some extra CPU time for the threads with
|
||||
* lower priority, this may slow down the driver a bit however.
|
||||
* This option is recommended also if the SPI driver does not
|
||||
* use a DMA channel and heavily loads the CPU.
|
||||
*/
|
||||
#if !defined(MMC_NICE_WAITING) || defined(__DOXYGEN__)
|
||||
#define MMC_NICE_WAITING TRUE
|
||||
#endif
|
||||
|
||||
/*===========================================================================*/
|
||||
/* SDC driver related settings. */
|
||||
/*===========================================================================*/
|
||||
|
||||
/**
|
||||
* @brief Number of initialization attempts before rejecting the card.
|
||||
* @note Attempts are performed at 10mS intervals.
|
||||
*/
|
||||
#if !defined(SDC_INIT_RETRY) || defined(__DOXYGEN__)
|
||||
#define SDC_INIT_RETRY 100
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Include support for MMC cards.
|
||||
* @note MMC support is not yet implemented so this option must be kept
|
||||
* at @p FALSE.
|
||||
*/
|
||||
#if !defined(SDC_MMC_SUPPORT) || defined(__DOXYGEN__)
|
||||
#define SDC_MMC_SUPPORT FALSE
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Delays insertions.
|
||||
* @details If enabled this options inserts delays into the MMC waiting
|
||||
* routines releasing some extra CPU time for the threads with
|
||||
* lower priority, this may slow down the driver a bit however.
|
||||
*/
|
||||
#if !defined(SDC_NICE_WAITING) || defined(__DOXYGEN__)
|
||||
#define SDC_NICE_WAITING TRUE
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief OCR initialization constant for V20 cards.
|
||||
*/
|
||||
#if !defined(SDC_INIT_OCR_V20) || defined(__DOXYGEN__)
|
||||
#define SDC_INIT_OCR_V20 0x50FF8000U
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief OCR initialization constant for non-V20 cards.
|
||||
*/
|
||||
#if !defined(SDC_INIT_OCR) || defined(__DOXYGEN__)
|
||||
#define SDC_INIT_OCR 0x80100000U
|
||||
#endif
|
||||
|
||||
/*===========================================================================*/
|
||||
/* SERIAL driver related settings. */
|
||||
/*===========================================================================*/
|
||||
|
||||
/**
|
||||
* @brief Default bit rate.
|
||||
* @details Configuration parameter, this is the baud rate selected for the
|
||||
* default configuration.
|
||||
*/
|
||||
#if !defined(SERIAL_DEFAULT_BITRATE) || defined(__DOXYGEN__)
|
||||
#define SERIAL_DEFAULT_BITRATE 38400
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Serial buffers size.
|
||||
* @details Configuration parameter, you can change the depth of the queue
|
||||
* buffers depending on the requirements of your application.
|
||||
* @note The default is 16 bytes for both the transmission and receive
|
||||
* buffers.
|
||||
*/
|
||||
#if !defined(SERIAL_BUFFERS_SIZE) || defined(__DOXYGEN__)
|
||||
#define SERIAL_BUFFERS_SIZE 16
|
||||
#endif
|
||||
|
||||
/*===========================================================================*/
|
||||
/* SERIAL_USB driver related setting. */
|
||||
/*===========================================================================*/
|
||||
|
||||
/**
|
||||
* @brief Serial over USB buffers size.
|
||||
* @details Configuration parameter, the buffer size must be a multiple of
|
||||
* the USB data endpoint maximum packet size.
|
||||
* @note The default is 256 bytes for both the transmission and receive
|
||||
* buffers.
|
||||
*/
|
||||
#if !defined(SERIAL_USB_BUFFERS_SIZE) || defined(__DOXYGEN__)
|
||||
#define SERIAL_USB_BUFFERS_SIZE 256
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Serial over USB number of buffers.
|
||||
* @note The default is 2 buffers.
|
||||
*/
|
||||
#if !defined(SERIAL_USB_BUFFERS_NUMBER) || defined(__DOXYGEN__)
|
||||
#define SERIAL_USB_BUFFERS_NUMBER 2
|
||||
#endif
|
||||
|
||||
/*===========================================================================*/
|
||||
/* SPI driver related settings. */
|
||||
/*===========================================================================*/
|
||||
|
||||
/**
|
||||
* @brief Enables synchronous APIs.
|
||||
* @note Disabling this option saves both code and data space.
|
||||
*/
|
||||
#if !defined(SPI_USE_WAIT) || defined(__DOXYGEN__)
|
||||
#define SPI_USE_WAIT TRUE
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Enables circular transfers APIs.
|
||||
* @note Disabling this option saves both code and data space.
|
||||
*/
|
||||
#if !defined(SPI_USE_CIRCULAR) || defined(__DOXYGEN__)
|
||||
#define SPI_USE_CIRCULAR FALSE
|
||||
#endif
|
||||
|
||||
|
||||
/**
|
||||
* @brief Enables the @p spiAcquireBus() and @p spiReleaseBus() APIs.
|
||||
* @note Disabling this option saves both code and data space.
|
||||
*/
|
||||
#if !defined(SPI_USE_MUTUAL_EXCLUSION) || defined(__DOXYGEN__)
|
||||
#define SPI_USE_MUTUAL_EXCLUSION TRUE
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Handling method for SPI CS line.
|
||||
* @note Disabling this option saves both code and data space.
|
||||
*/
|
||||
#if !defined(SPI_SELECT_MODE) || defined(__DOXYGEN__)
|
||||
#define SPI_SELECT_MODE SPI_SELECT_MODE_PAD
|
||||
#endif
|
||||
|
||||
/*===========================================================================*/
|
||||
/* UART driver related settings. */
|
||||
/*===========================================================================*/
|
||||
|
||||
/**
|
||||
* @brief Enables synchronous APIs.
|
||||
* @note Disabling this option saves both code and data space.
|
||||
*/
|
||||
#if !defined(UART_USE_WAIT) || defined(__DOXYGEN__)
|
||||
#define UART_USE_WAIT FALSE
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Enables the @p uartAcquireBus() and @p uartReleaseBus() APIs.
|
||||
* @note Disabling this option saves both code and data space.
|
||||
*/
|
||||
#if !defined(UART_USE_MUTUAL_EXCLUSION) || defined(__DOXYGEN__)
|
||||
#define UART_USE_MUTUAL_EXCLUSION FALSE
|
||||
#endif
|
||||
|
||||
/*===========================================================================*/
|
||||
/* USB driver related settings. */
|
||||
/*===========================================================================*/
|
||||
|
||||
/**
|
||||
* @brief Enables synchronous APIs.
|
||||
* @note Disabling this option saves both code and data space.
|
||||
*/
|
||||
#if !defined(USB_USE_WAIT) || defined(__DOXYGEN__)
|
||||
#define USB_USE_WAIT TRUE
|
||||
#endif
|
||||
|
||||
/*===========================================================================*/
|
||||
/* WSPI driver related settings. */
|
||||
/*===========================================================================*/
|
||||
|
||||
/**
|
||||
* @brief Enables synchronous APIs.
|
||||
* @note Disabling this option saves both code and data space.
|
||||
*/
|
||||
#if !defined(WSPI_USE_WAIT) || defined(__DOXYGEN__)
|
||||
#define WSPI_USE_WAIT TRUE
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Enables the @p wspiAcquireBus() and @p wspiReleaseBus() APIs.
|
||||
* @note Disabling this option saves both code and data space.
|
||||
*/
|
||||
#if !defined(WSPI_USE_MUTUAL_EXCLUSION) || defined(__DOXYGEN__)
|
||||
#define WSPI_USE_MUTUAL_EXCLUSION TRUE
|
||||
#endif
|
||||
|
||||
#endif /* HALCONF_H */
|
||||
|
||||
/** @} */
|
||||
@@ -0,0 +1,101 @@
|
||||
{
|
||||
"keyboard_name": "chavdai40",
|
||||
"url": "https://github.com/dvorak55/chavdai40",
|
||||
"maintainer": "t-miyajima",
|
||||
"width": 14,
|
||||
"height": 4,
|
||||
"layouts": {
|
||||
"LAYOUT_44key": {
|
||||
"layout": [
|
||||
{"x":0, "y":0, "w":1.5},
|
||||
{"label":"Q", "x":1.5, "y":0},
|
||||
{"label":"W", "x":2.5, "y":0},
|
||||
{"label":"E", "x":3.5, "y":0},
|
||||
{"label":"R", "x":4.5, "y":0},
|
||||
{"label":"T", "x":5.5, "y":0},
|
||||
{"label":"Y", "x":6.5, "y":0},
|
||||
{"label":"U", "x":7.5, "y":0},
|
||||
{"label":"I", "x":8.5, "y":0},
|
||||
{"label":"O", "x":9.5, "y":0},
|
||||
{"label":"P", "x":10.5, "y":0},
|
||||
{"label":"_", "x":11.5, "y":0},
|
||||
{"label":"Backspace", "x":12.5, "y":0, "w":1.5},
|
||||
{"label":"Ctrl", "x":0, "y":1, "w":1.75},
|
||||
{"label":"A", "x":1.75, "y":1},
|
||||
{"label":"S", "x":2.75, "y":1},
|
||||
{"label":"D", "x":3.75, "y":1},
|
||||
{"label":"F", "x":4.75, "y":1},
|
||||
{"label":"G", "x":5.75, "y":1},
|
||||
{"label":"H", "x":6.75, "y":1},
|
||||
{"label":"J", "x":7.75, "y":1},
|
||||
{"label":"K", "x":8.75, "y":1},
|
||||
{"label":"L", "x":9.75, "y":1},
|
||||
{"label":":", "x":10.75, "y":1},
|
||||
{"label":"Enter", "x":11.75, "y":1, "w":2.25},
|
||||
{"label":"Shift", "x":0, "y":2, "w":2.25},
|
||||
{"label":"Z", "x":2.25, "y":2},
|
||||
{"label":"X", "x":3.25, "y":2},
|
||||
{"label":"C", "x":4.25, "y":2},
|
||||
{"label":"V", "x":5.25, "y":2},
|
||||
{"label":"B", "x":6.25, "y":2},
|
||||
{"label":"N", "x":7.25, "y":2},
|
||||
{"label":"M", "x":8.25, "y":2},
|
||||
{"label":"<", "x":9.25, "y":2},
|
||||
{"label":">", "x":10.25, "y":2},
|
||||
{"label":"?", "x":11.25, "y":2, "w":1.25},
|
||||
{"x":12.5, "y":2, "w":1.25},
|
||||
{"label":"Alt", "x":1.38, "y":3, "w":1.25},
|
||||
{"label":"Win", "x":2.63, "y":3, "w":1.25},
|
||||
{"x":3.88, "y":3, "w":2.25},
|
||||
{"x":6.13, "y":3, "w":2.75},
|
||||
{"label":"Win", "x":8.88, "y":3, "w":1.25},
|
||||
{"label":"Alt", "x":10.13, "y":3, "w":1.25},
|
||||
{"label":"Esc", "x":11.38, "y":3, "w":1.25}]
|
||||
},
|
||||
"LAYOUT_42key": {
|
||||
"layout": [
|
||||
{"x":0, "y":0, "w":1.5},
|
||||
{"label":"Q", "x":1.5, "y":0},
|
||||
{"label":"W", "x":2.5, "y":0},
|
||||
{"label":"E", "x":3.5, "y":0},
|
||||
{"label":"R", "x":4.5, "y":0},
|
||||
{"label":"T", "x":5.5, "y":0},
|
||||
{"label":"Y", "x":6.5, "y":0},
|
||||
{"label":"U", "x":7.5, "y":0},
|
||||
{"label":"I", "x":8.5, "y":0},
|
||||
{"label":"O", "x":9.5, "y":0},
|
||||
{"label":"P", "x":10.5, "y":0},
|
||||
{"label":"_", "x":11.5, "y":0},
|
||||
{"label":"Backspace", "x":12.5, "y":0, "w":1.5},
|
||||
{"label":"Ctrl", "x":0, "y":1, "w":1.75},
|
||||
{"label":"A", "x":1.75, "y":1},
|
||||
{"label":"S", "x":2.75, "y":1},
|
||||
{"label":"D", "x":3.75, "y":1},
|
||||
{"label":"F", "x":4.75, "y":1},
|
||||
{"label":"G", "x":5.75, "y":1},
|
||||
{"label":"H", "x":6.75, "y":1},
|
||||
{"label":"J", "x":7.75, "y":1},
|
||||
{"label":"K", "x":8.75, "y":1},
|
||||
{"label":"L", "x":9.75, "y":1},
|
||||
{"label":":", "x":10.75, "y":1},
|
||||
{"label":"Enter", "x":11.75, "y":1, "w":2.25},
|
||||
{"label":"Shift", "x":0, "y":2, "w":2.25},
|
||||
{"label":"Z", "x":2.25, "y":2},
|
||||
{"label":"X", "x":3.25, "y":2},
|
||||
{"label":"C", "x":4.25, "y":2},
|
||||
{"label":"V", "x":5.25, "y":2},
|
||||
{"label":"B", "x":6.25, "y":2},
|
||||
{"label":"N", "x":7.25, "y":2},
|
||||
{"label":"M", "x":8.25, "y":2},
|
||||
{"label":"<", "x":9.25, "y":2},
|
||||
{"label":">", "x":10.25, "y":2},
|
||||
{"label":"?", "x":11.25, "y":2, "w":1.25},
|
||||
{"x":12.5, "y":2, "w":1.25},
|
||||
{"label":"Alt", "x":1.38, "y":3, "w":1.25},
|
||||
{"label":"Win", "x":2.63, "y":3, "w":1.25},
|
||||
{"x":3.88, "y":3, "w":6.25},
|
||||
{"label":"Win", "x":10.13, "y":3, "w":1.25},
|
||||
{"label":"Alt", "x":11.38, "y":3, "w":1.25}]
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
/* Copyright 2020 t-miyajima
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
// place overrides here
|
||||
#define PERMISSIVE_HOLD
|
||||
#define RETRO_TAPPING
|
||||
#define TAPPING_TERM 5
|
||||
@@ -0,0 +1,41 @@
|
||||
/* Copyright 2020 t-miyajima
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
#include QMK_KEYBOARD_H
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
/* Keymap _BL: (Base Layer) Default Layer
|
||||
* ,-------------------------------------------------------.
|
||||
* | Tab | /| ,| .| P| Y| F| G| C| R| L| -| Bspc|
|
||||
* |-------------------------------------------------------|
|
||||
* | Ctrl | A| O| E| U| I| D| H| T| N| S| Return|
|
||||
* |-------------------------------------------------------|
|
||||
* | Shift | ;| Q| J| K| X| B| M| W| V| Z| Lyr|
|
||||
* `----.---------------------------------------------.---'
|
||||
* | Alt |Win | Space |Win |Alt |
|
||||
* `---------------------------------------------'
|
||||
*/
|
||||
LAYOUT_42key( /* Base */
|
||||
KC_TAB, KC_SLASH, KC_COMMA, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_MINUS, KC_BSPACE,
|
||||
KC_LCTRL, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_ENTER,
|
||||
KC_LSFT, KC_SCOLON, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, MO(1),
|
||||
KC_LALT, KC_LGUI, KC_SPACE, KC_RGUI, KC_RALT),
|
||||
LAYOUT_42key( /* layer 1 */
|
||||
KC_GRAVE, KC_EXCLAIM, KC_AT, KC_HASH, KC_QUOTE, KC_PERCENT, KC_CIRCUMFLEX, KC_AMPERSAND, KC_ASTERISK, KC_LEFT_PAREN, KC_RIGHT_PAREN, KC_LBRACKET, KC_RBRACKET,
|
||||
KC_TRNS, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_TRNS,
|
||||
KC_TRNS, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_EQUAL, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
|
||||
};
|
||||
|
||||
@@ -0,0 +1,22 @@
|
||||
/* Copyright 2020 t-miyajima
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
// place overrides here
|
||||
#define PERMISSIVE_HOLD
|
||||
#define RETRO_TAPPING
|
||||
#define TAPPING_TERM 5
|
||||
@@ -0,0 +1,40 @@
|
||||
/* Copyright 2020 t-miyajima
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
#include QMK_KEYBOARD_H
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
/* Keymap _BL: (Base Layer) Default Layer
|
||||
* ,-------------------------------------------------------.
|
||||
* | Tab | ;| ,| .| P| Q| Y| G| D| M| F| -| Bspc|
|
||||
* |-------------------------------------------------------|
|
||||
* | Ctrl | A| O| E| I| U| B| N| T| R| S| Return|
|
||||
* |-------------------------------------------------------|
|
||||
* | Shift | Z| X| C| V| W| H| J| K| L| /| Lyr|
|
||||
* `----.---------------------------------------------.---'
|
||||
* | Alt |Win | Space |Win |Alt |
|
||||
* `---------------------------------------------'
|
||||
*/
|
||||
LAYOUT_42key( /* Base */
|
||||
KC_TAB, KC_SCOLON, KC_COMMA, KC_DOT, KC_P, KC_Q, KC_Y, KC_G, KC_D, KC_M, KC_F, KC_MINUS, KC_BSPACE,
|
||||
KC_LCTRL, KC_A, KC_O, KC_E, KC_I, KC_U, KC_B, KC_N, KC_T, KC_R, KC_S, KC_ENTER,
|
||||
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_W, KC_H, KC_J, KC_K, KC_L, KC_SLASH, MO(1),
|
||||
KC_LALT, KC_LGUI, KC_SPACE, KC_RGUI, KC_RALT),
|
||||
LAYOUT_42key( /* layer 1 */
|
||||
KC_GRAVE, KC_EXCLAIM, KC_AT, KC_HASH, KC_QUOTE, KC_PERCENT, KC_CIRCUMFLEX, KC_AMPERSAND, KC_ASTERISK, KC_LEFT_PAREN, KC_RIGHT_PAREN, KC_LBRACKET, KC_RBRACKET,
|
||||
KC_TRNS, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_TRNS,
|
||||
KC_TRNS, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_EQUAL, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
|
||||
};
|
||||
@@ -0,0 +1,22 @@
|
||||
/* Copyright 2020 t-miyajima
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
// place overrides here
|
||||
#define PERMISSIVE_HOLD
|
||||
#define RETRO_TAPPING
|
||||
#define TAPPING_TERM 5
|
||||
@@ -0,0 +1,40 @@
|
||||
/* Copyright 2020 t-miyajima
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
#include QMK_KEYBOARD_H
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
/* Keymap _BL: (Base Layer) Default Layer
|
||||
* ,-------------------------------------------------------.
|
||||
* | Tab | Q| W| E| R| T| Y| U| I| O| P| -| Bspc|
|
||||
* |-------------------------------------------------------|
|
||||
* | Ctrl | A| S| D| F| G| H| J| K| L| ;| Return|
|
||||
* |-------------------------------------------------------|
|
||||
* | Shift | Z| X| C| V| B| N| M| ,| .| /| Lyr|
|
||||
* `----.---------------------------------------------.---'
|
||||
* | Alt |Win | Space |Win |Alt |
|
||||
* `---------------------------------------------'
|
||||
*/
|
||||
LAYOUT_42key( /* Base */
|
||||
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_MINUS, KC_BSPACE,
|
||||
KC_LCTRL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCOLON, KC_ENTER,
|
||||
KC_LSHIFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMMA, KC_DOT, KC_SLASH, MO(1),
|
||||
KC_LALT, KC_LGUI, KC_SPACE, KC_RGUI, KC_RALT),
|
||||
LAYOUT_42key( /* layer 1 */
|
||||
KC_GRAVE, KC_EXCLAIM, KC_AT, KC_HASH, KC_QUOTE, KC_PERCENT, KC_CIRCUMFLEX, KC_AMPERSAND, KC_ASTERISK, KC_LEFT_PAREN, KC_RIGHT_PAREN, KC_LBRACKET, KC_RBRACKET,
|
||||
KC_TRNS, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_TRNS,
|
||||
KC_TRNS, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_EQUAL, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
|
||||
};
|
||||
@@ -0,0 +1,22 @@
|
||||
/* Copyright 2020 t-miyajima
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
// place overrides here
|
||||
#define PERMISSIVE_HOLD
|
||||
#define RETRO_TAPPING
|
||||
#define TAPPING_TERM 5
|
||||
@@ -0,0 +1,40 @@
|
||||
/* Copyright 2020 t-miyajima
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
#include QMK_KEYBOARD_H
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
/* Keymap _BL: (Base Layer) Default Layer
|
||||
* ,-------------------------------------------------------.
|
||||
* | Tab | /| ,| .| P| Y| F| G| C| R| L| -| Bspc|
|
||||
* |-------------------------------------------------------|
|
||||
* | Ctrl | A| O| E| U| I| D| H| T| N| S| Return|
|
||||
* |-------------------------------------------------------|
|
||||
* | Shift | ;| Q| J| K| X| B| M| W| V| Z| Del|
|
||||
* `----.---------------------------------------------.---'
|
||||
* | Alt |Win | Layer | Space |Win |Alt |Esc |
|
||||
* `---------------------------------------------'
|
||||
*/
|
||||
LAYOUT_44key( /* Base */
|
||||
KC_TAB, KC_SLASH, KC_COMMA, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_MINUS, KC_BSPACE,
|
||||
KC_LCTRL, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_ENTER,
|
||||
KC_LSFT, KC_SCOLON, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_DELETE,
|
||||
KC_LALT, KC_LGUI, MO(1), KC_SPACE, KC_RGUI, KC_RALT, KC_ESCAPE),
|
||||
LAYOUT_44key( /* layer 1 */
|
||||
KC_GRAVE, KC_EXCLAIM, KC_AT, KC_HASH, KC_QUOTE, KC_PERCENT, KC_CIRCUMFLEX, KC_AMPERSAND, KC_ASTERISK, KC_LEFT_PAREN, KC_RIGHT_PAREN, KC_LBRACKET, KC_RBRACKET,
|
||||
KC_TRNS, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_TRNS,
|
||||
KC_TRNS, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_EQUAL, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
|
||||
};
|
||||
@@ -0,0 +1,22 @@
|
||||
/* Copyright 2020 t-miyajima
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
// place overrides here
|
||||
#define PERMISSIVE_HOLD
|
||||
#define RETRO_TAPPING
|
||||
#define TAPPING_TERM 5
|
||||
@@ -0,0 +1,40 @@
|
||||
/* Copyright 2020 t-miyajima
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
#include QMK_KEYBOARD_H
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
/* Keymap _BL: (Base Layer) Default Layer
|
||||
* ,-------------------------------------------------------.
|
||||
* | Tab | ;| ,| .| P| Q| Y| G| D| M| F| -| Bspc|
|
||||
* |-------------------------------------------------------|
|
||||
* | Ctrl | A| O| E| I| U| B| N| T| R| S| Return|
|
||||
* |-------------------------------------------------------|
|
||||
* | Shift | Z| X| C| V| W| H| J| K| L| /| Del|
|
||||
* `----.---------------------------------------------.---'
|
||||
* | Alt |Win | Layer | Space |Win |Alt |Esc |
|
||||
* `---------------------------------------------'
|
||||
*/
|
||||
LAYOUT_44key( /* Base */
|
||||
KC_TAB, KC_SCOLON, KC_COMMA, KC_DOT, KC_P, KC_Q, KC_Y, KC_G, KC_D, KC_M, KC_F, KC_MINUS, KC_BSPACE,
|
||||
KC_LCTRL, KC_A, KC_O, KC_E, KC_I, KC_U, KC_B, KC_N, KC_T, KC_R, KC_S, KC_ENTER,
|
||||
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_W, KC_H, KC_J, KC_K, KC_L, KC_SLASH, KC_DELETE,
|
||||
KC_LALT, KC_LGUI, MO(1), KC_SPACE, KC_RGUI, KC_RALT, KC_ESCAPE),
|
||||
LAYOUT_44key( /* layer 1 */
|
||||
KC_GRAVE, KC_EXCLAIM, KC_AT, KC_HASH, KC_QUOTE, KC_PERCENT, KC_CIRCUMFLEX, KC_AMPERSAND, KC_ASTERISK, KC_LEFT_PAREN, KC_RIGHT_PAREN, KC_LBRACKET, KC_RBRACKET,
|
||||
KC_TRNS, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_TRNS,
|
||||
KC_TRNS, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_EQUAL, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
|
||||
};
|
||||
@@ -0,0 +1,22 @@
|
||||
/* Copyright 2020 t-miyajima
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
// place overrides here
|
||||
#define PERMISSIVE_HOLD
|
||||
#define RETRO_TAPPING
|
||||
#define TAPPING_TERM 5
|
||||
@@ -0,0 +1,40 @@
|
||||
/* Copyright 2020 t-miyajima
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
#include QMK_KEYBOARD_H
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
/* Keymap _BL: (Base Layer) Default Layer
|
||||
* ,-------------------------------------------------------.
|
||||
* | Tab | Q| W| E| R| T| Y| U| I| O| P| -| Bspc|
|
||||
* |-------------------------------------------------------|
|
||||
* | Ctrl | A| S| D| F| G| H| J| K| L| ;| Return|
|
||||
* |-------------------------------------------------------|
|
||||
* | Shift | Z| X| C| V| B| N| M| ,| .| /| Del|
|
||||
* `----.---------------------------------------------.---'
|
||||
* | Alt |Win | Layer | Space |Win |Alt |Esc |
|
||||
* `---------------------------------------------'
|
||||
*/
|
||||
LAYOUT_44key( /* Base */
|
||||
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_MINUS, KC_BSPACE,
|
||||
KC_LCTRL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCOLON, KC_ENTER,
|
||||
KC_LSHIFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMMA, KC_DOT, KC_SLASH, KC_DELETE,
|
||||
KC_LALT, KC_LGUI, MO(1), KC_SPACE, KC_RGUI, KC_RALT, KC_ESCAPE),
|
||||
LAYOUT_44key( /* layer 1 */
|
||||
KC_GRAVE, KC_EXCLAIM, KC_AT, KC_HASH, KC_QUOTE, KC_PERCENT, KC_CIRCUMFLEX, KC_AMPERSAND, KC_ASTERISK, KC_LEFT_PAREN, KC_RIGHT_PAREN, KC_LBRACKET, KC_RBRACKET,
|
||||
KC_TRNS, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_TRNS,
|
||||
KC_TRNS, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_EQUAL, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
|
||||
};
|
||||
@@ -0,0 +1,22 @@
|
||||
/* Copyright 2020 t-miyajima
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
// place overrides here
|
||||
#define PERMISSIVE_HOLD
|
||||
#define RETRO_TAPPING
|
||||
#define TAPPING_TERM 5
|
||||
@@ -0,0 +1,40 @@
|
||||
/* Copyright 2020 t-miyajima
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
#include QMK_KEYBOARD_H
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
/* Keymap _BL: (Base Layer) Default Layer
|
||||
* ,-------------------------------------------------------.
|
||||
* | Tab | Q| W| E| R| T| Y| U| I| O| P| -| Bspc|
|
||||
* |-------------------------------------------------------|
|
||||
* | Ctrl | A| S| D| F| G| H| J| K| L| ;| Return|
|
||||
* |-------------------------------------------------------|
|
||||
* | Shift | Z| X| C| V| B| N| M| ,| .| /| Del|
|
||||
* `----.---------------------------------------------.---'
|
||||
* | Alt |Win | Layer | Space |Win |Alt |Esc |
|
||||
* `---------------------------------------------'
|
||||
*/
|
||||
LAYOUT_44key( /* Base */
|
||||
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_MINUS, KC_BSPACE,
|
||||
KC_LCTRL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCOLON, KC_ENTER,
|
||||
KC_LSHIFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMMA, KC_DOT, KC_SLASH, KC_DELETE,
|
||||
KC_LALT, KC_LGUI, MO(1), KC_SPACE, KC_RGUI, KC_RALT, KC_ESCAPE),
|
||||
LAYOUT_44key( /* layer 1 */
|
||||
KC_GRAVE, KC_EXCLAIM, KC_AT, KC_HASH, KC_QUOTE, KC_PERCENT, KC_CIRCUMFLEX, KC_AMPERSAND, KC_ASTERISK, KC_LEFT_PAREN, KC_RIGHT_PAREN, KC_LBRACKET, KC_RBRACKET,
|
||||
KC_TRNS, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_TRNS,
|
||||
KC_TRNS, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_EQUAL, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
|
||||
};
|
||||
@@ -0,0 +1,190 @@
|
||||
/*
|
||||
ChibiOS - Copyright (C) 2006..2018 Giovanni Di Sirio
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
*/
|
||||
|
||||
#ifndef MCUCONF_H
|
||||
#define MCUCONF_H
|
||||
|
||||
/*
|
||||
* STM32F0xx drivers configuration.
|
||||
* The following settings override the default settings present in
|
||||
* the various device driver implementation headers.
|
||||
* Note that the settings for each driver only have effect if the whole
|
||||
* driver is enabled in halconf.h.
|
||||
*
|
||||
* IRQ priorities:
|
||||
* 3...0 Lowest...Highest.
|
||||
*
|
||||
* DMA priorities:
|
||||
* 0...3 Lowest...Highest.
|
||||
*/
|
||||
|
||||
#define STM32F0xx_MCUCONF
|
||||
|
||||
/*
|
||||
* HAL driver system settings.
|
||||
*/
|
||||
#define STM32_NO_INIT FALSE
|
||||
#define STM32_PVD_ENABLE FALSE
|
||||
#define STM32_PLS STM32_PLS_LEV0
|
||||
#define STM32_HSI_ENABLED TRUE
|
||||
#define STM32_HSI14_ENABLED TRUE
|
||||
#define STM32_HSI48_ENABLED FALSE
|
||||
#define STM32_LSI_ENABLED TRUE
|
||||
#define STM32_HSE_ENABLED FALSE
|
||||
#define STM32_LSE_ENABLED FALSE
|
||||
#define STM32_SW STM32_SW_PLL
|
||||
#define STM32_PLLSRC STM32_PLLSRC_HSI_DIV2
|
||||
#define STM32_PREDIV_VALUE 1
|
||||
#define STM32_PLLMUL_VALUE 12
|
||||
#define STM32_HPRE STM32_HPRE_DIV1
|
||||
#define STM32_PPRE STM32_PPRE_DIV1
|
||||
#define STM32_MCOSEL STM32_MCOSEL_NOCLOCK
|
||||
#define STM32_MCOPRE STM32_MCOPRE_DIV1
|
||||
#define STM32_PLLNODIV STM32_PLLNODIV_DIV2
|
||||
#define STM32_USBSW STM32_USBSW_HSI48
|
||||
#define STM32_CECSW STM32_CECSW_HSI
|
||||
#define STM32_I2C1SW STM32_I2C1SW_HSI
|
||||
#define STM32_USART1SW STM32_USART1SW_PCLK
|
||||
#define STM32_RTCSEL STM32_RTCSEL_LSI
|
||||
|
||||
/*
|
||||
* IRQ system settings.
|
||||
*/
|
||||
#define STM32_IRQ_EXTI0_1_IRQ_PRIORITY 3
|
||||
#define STM32_IRQ_EXTI2_3_IRQ_PRIORITY 3
|
||||
#define STM32_IRQ_EXTI4_15_IRQ_PRIORITY 3
|
||||
#define STM32_IRQ_EXTI16_IRQ_PRIORITY 3
|
||||
#define STM32_IRQ_EXTI17_20_IRQ_PRIORITY 3
|
||||
#define STM32_IRQ_EXTI21_22_IRQ_PRIORITY 3
|
||||
|
||||
/*
|
||||
* ADC driver system settings.
|
||||
*/
|
||||
#define STM32_ADC_USE_ADC1 FALSE
|
||||
#define STM32_ADC_ADC1_CKMODE STM32_ADC_CKMODE_ADCCLK
|
||||
#define STM32_ADC_ADC1_DMA_PRIORITY 2
|
||||
#define STM32_ADC_ADC1_DMA_IRQ_PRIORITY 2
|
||||
#define STM32_ADC_ADC1_DMA_STREAM STM32_DMA_STREAM_ID(1, 1)
|
||||
|
||||
/*
|
||||
* GPT driver system settings.
|
||||
*/
|
||||
#define STM32_GPT_USE_TIM1 FALSE
|
||||
#define STM32_GPT_USE_TIM2 FALSE
|
||||
#define STM32_GPT_USE_TIM3 FALSE
|
||||
#define STM32_GPT_USE_TIM14 FALSE
|
||||
#define STM32_GPT_TIM1_IRQ_PRIORITY 2
|
||||
#define STM32_GPT_TIM2_IRQ_PRIORITY 2
|
||||
#define STM32_GPT_TIM3_IRQ_PRIORITY 2
|
||||
#define STM32_GPT_TIM14_IRQ_PRIORITY 2
|
||||
|
||||
/*
|
||||
* I2C driver system settings.
|
||||
*/
|
||||
#define STM32_I2C_USE_I2C1 FALSE
|
||||
#define STM32_I2C_BUSY_TIMEOUT 50
|
||||
#define STM32_I2C_I2C1_IRQ_PRIORITY 3
|
||||
#define STM32_I2C_USE_DMA TRUE
|
||||
#define STM32_I2C_I2C1_DMA_PRIORITY 1
|
||||
#define STM32_I2C_I2C1_RX_DMA_STREAM STM32_DMA_STREAM_ID(1, 3)
|
||||
#define STM32_I2C_I2C1_TX_DMA_STREAM STM32_DMA_STREAM_ID(1, 2)
|
||||
#define STM32_I2C_DMA_ERROR_HOOK(i2cp) osalSysHalt("DMA failure")
|
||||
|
||||
/*
|
||||
* I2S driver system settings.
|
||||
*/
|
||||
#define STM32_I2S_USE_SPI1 FALSE
|
||||
#define STM32_I2S_SPI1_MODE (STM32_I2S_MODE_MASTER | \
|
||||
STM32_I2S_MODE_RX)
|
||||
#define STM32_I2S_SPI1_IRQ_PRIORITY 2
|
||||
#define STM32_I2S_SPI1_DMA_PRIORITY 1
|
||||
#define STM32_I2S_SPI1_RX_DMA_STREAM STM32_DMA_STREAM_ID(1, 2)
|
||||
#define STM32_I2S_SPI1_TX_DMA_STREAM STM32_DMA_STREAM_ID(1, 3)
|
||||
#define STM32_I2S_DMA_ERROR_HOOK(i2sp) osalSysHalt("DMA failure")
|
||||
|
||||
/*
|
||||
* ICU driver system settings.
|
||||
*/
|
||||
#define STM32_ICU_USE_TIM1 FALSE
|
||||
#define STM32_ICU_USE_TIM2 FALSE
|
||||
#define STM32_ICU_USE_TIM3 FALSE
|
||||
#define STM32_ICU_TIM1_IRQ_PRIORITY 3
|
||||
#define STM32_ICU_TIM2_IRQ_PRIORITY 3
|
||||
#define STM32_ICU_TIM3_IRQ_PRIORITY 3
|
||||
|
||||
/*
|
||||
* PWM driver system settings.
|
||||
*/
|
||||
#define STM32_PWM_USE_ADVANCED FALSE
|
||||
#define STM32_PWM_USE_TIM1 FALSE
|
||||
#define STM32_PWM_USE_TIM2 FALSE
|
||||
#define STM32_PWM_USE_TIM3 FALSE
|
||||
#define STM32_PWM_TIM1_IRQ_PRIORITY 3
|
||||
#define STM32_PWM_TIM2_IRQ_PRIORITY 3
|
||||
#define STM32_PWM_TIM3_IRQ_PRIORITY 3
|
||||
|
||||
/*
|
||||
* SERIAL driver system settings.
|
||||
*/
|
||||
#define STM32_SERIAL_USE_USART1 FALSE
|
||||
#define STM32_SERIAL_USE_USART2 TRUE
|
||||
#define STM32_SERIAL_USART1_PRIORITY 3
|
||||
#define STM32_SERIAL_USART2_PRIORITY 3
|
||||
|
||||
/*
|
||||
* SPI driver system settings.
|
||||
*/
|
||||
#define STM32_SPI_USE_SPI1 FALSE
|
||||
#define STM32_SPI_SPI1_DMA_PRIORITY 1
|
||||
#define STM32_SPI_SPI1_IRQ_PRIORITY 2
|
||||
#define STM32_SPI_SPI1_RX_DMA_STREAM STM32_DMA_STREAM_ID(1, 2)
|
||||
#define STM32_SPI_SPI1_TX_DMA_STREAM STM32_DMA_STREAM_ID(1, 3)
|
||||
#define STM32_SPI_DMA_ERROR_HOOK(spip) osalSysHalt("DMA failure")
|
||||
|
||||
/*
|
||||
* ST driver system settings.
|
||||
*/
|
||||
#define STM32_ST_IRQ_PRIORITY 2
|
||||
#define STM32_ST_USE_TIMER 2
|
||||
|
||||
/*
|
||||
* UART driver system settings.
|
||||
*/
|
||||
#define STM32_UART_USE_USART1 FALSE
|
||||
#define STM32_UART_USE_USART2 FALSE
|
||||
#define STM32_UART_USART1_IRQ_PRIORITY 3
|
||||
#define STM32_UART_USART2_IRQ_PRIORITY 3
|
||||
#define STM32_UART_USART1_DMA_PRIORITY 0
|
||||
#define STM32_UART_USART2_DMA_PRIORITY 0
|
||||
#define STM32_UART_USART1_RX_DMA_STREAM STM32_DMA_STREAM_ID(1, 3)
|
||||
#define STM32_UART_USART1_TX_DMA_STREAM STM32_DMA_STREAM_ID(1, 2)
|
||||
#define STM32_UART_USART2_RX_DMA_STREAM STM32_DMA_STREAM_ID(1, 5)
|
||||
#define STM32_UART_USART2_TX_DMA_STREAM STM32_DMA_STREAM_ID(1, 4)
|
||||
#define STM32_UART_DMA_ERROR_HOOK(uartp) osalSysHalt("DMA failure")
|
||||
|
||||
/*
|
||||
* WDG driver system settings.
|
||||
*/
|
||||
#define STM32_WDG_USE_IWDG FALSE
|
||||
|
||||
/*
|
||||
* USB driver system settings.
|
||||
*/
|
||||
#define STM32_USB_USE_USB1 TRUE
|
||||
#define STM32_USB_LOW_POWER_ON_SUSPEND FALSE
|
||||
#define STM32_USB_USB1_LP_IRQ_PRIORITY 3
|
||||
|
||||
#endif /* MCUCONF_H */
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user