Compare commits

...
19 Commits
Author SHA1 Message Date
37fb14f1b5 CLI-ify rgblight_breathing_table_calc.c (#11174)
Co-authored-by: Takeshi ISHII <[email protected]>
Co-authored-by: Zach White <[email protected]>
2020-12-16 14:24:42 +11:00
Ryan 3925ff5342 gh60/satan: fix indicator LED define (#11216) 2020-12-15 17:26:18 +00:00
MakotoKurauchiandmtei 0831a3181a [Keymap] Helix default keymap oled update (#11152)
* update keyboards/helix/rev2/local_features.mk - Improved parsing of the `HELIX =` option

* add 'is_mac_mode()' into keyboards/helix/rev2/rev2.c

* update helix/rev2/keymaps/default/keymap.c: use rgblight query functions

* Makes the OLED driver used by the helix:default keymap switchable.

* use TOP/drivers/oled/oled_driver.c
  `make  helix:default`
  or
  `make OLED_SELECT=core  helix:default`
* use helix/local_drivers/ssd1306.c
  `make OLED_SELECT=local  helix:default`

* Separated the OLED related code from keymap.c and moved it to oled_display.c.

* Change the 'led_test' keymap to follow the changes in the 'default' keymap.

* update helix/rev2/keymaps/default/oled_display.c

* add '#define OLED_UPDATE_INTERVAL 50' into keyboards/helix/rev2/config.h

* Support for OLED_UPDATE_INTERVAL, even for older types of OLED tasks

* add readme.md for helix/rev2

* Apply drashna's suggestions to rev2.c.

* Apply drashna's suggestions to rev3_4rows.c, rev3_5rows.c.

Co-authored-by: mtei <[email protected]>
2020-12-15 20:14:14 +09:00
labahuy ac8cddda22 [Keyboard] rart/rart45 (#11096)
* Create config.h

* Create info.json

* Create rart45.c

* Create rart45.h

* Create readme.md

* Create rules.mk

* Create keymap.c

* Create keymap.c

* Create rules.mk

* Update config.h

* Update rart45.c

* Update rart45.h

* Update rules.mk

* Update readme.md

* Update info.json
2020-12-14 14:26:30 -08:00
Yan-Fa Li e6217b6aa6 Selectively enable command and console for yanfali userspace (#11212)
* Remove command and console

 - these options prevent community layouts from being built on other
   keyboards. Selectively enable it on keyboards I own rather than on
   everything.

* Update users/yanfali/rules.mk
2020-12-14 11:13:00 -08:00
Joel Challis 795e82074d Another attempt to fix formatting workflow (#11187) 2020-12-13 21:47:20 +00:00
Xelus22andJoel Challis 70f40339c2 Add i2c 24LC64 eeprom (#11200)
* add 24LC64 eeprom

* docs update

* Update docs/eeprom_driver.md

Co-authored-by: Joel Challis <[email protected]>

Co-authored-by: Joel Challis <[email protected]>
2020-12-14 05:50:50 +11:00
Takeshi ISHII 10e4487ba3 Fix incorrect search order for rgblight_breathe_table.h that rgblight.c includes. (#11192)
When `rgblight.c` includes `rgblight_breathe_table.h`, the search order should be as follows.

* `keyboards/KEYBOARD/keymaps/USER/rgblight_breathe_table.h`
* `users/USER/rgblight_breathe_table.h`
* `quantum/rgblight_breathe_table.h`

However, the current implementation was wrong, so I fixed it.
2020-12-13 03:19:15 +09:00
Hedgestock 8ea7f4f45f Fixed french quotes on canadian multilingual (#11183) 2020-12-11 19:00:07 +00:00
Joel Challis 4b03b6f7f4 Nightingale Studios Hailey production fixes (#11180) 2020-12-11 13:49:31 +00:00
Joel Challis 1ebd243cdc CI automated format fixes (#11179)
* Format all C files for now, till diff logic works within CI

* Fix recursion of dos2unix
2020-12-11 13:49:03 +00:00
David Heck b185816717 Add XD75am as supported in XD75 readme (#11170) 2020-12-11 23:50:05 +11:00
Ryan 501f2fdef1 Normalise include statements in core code (#11153)
* Normalise include statements in core code

* Missed one
2020-12-11 13:45:24 +11:00
Joel Challis 5b5d74a267 Fix warning logic when running 'qmk format -a' (#11177) 2020-12-10 19:02:41 +00:00
Joel Challis 6c4b6531fe CI: Add workflow for codebase formatting (#7382)
* Add workflow for codebase formatting

* stash

* review comments

* Swap to a more complete push action
2020-12-10 17:01:51 +00:00
ojthetiny 82bb47a2f1 add Via keymap for beatervan (#11159)
* add via keymap for beatervan

* fixed error in rules.mk
2020-12-10 09:46:46 -05:00
ojthetiny 9517d90e84 add VIA keymap for edc40 (#11160)
* add via keymap for edc40

* fix error in keymap
2020-12-10 09:31:12 -05:00
Ryan 79d992d1e7 Use progmem.h for claw44 glcdfont (#11164) 2020-12-10 13:07:08 +11:00
Xelus22 cd67074f72 [Keyboard] Valor FRL TKL update - EEPROM change (#11163)
* valor fix

* change eeprom

* fix up eeprom
2020-12-09 09:28:58 -08:00
114 changed files with 1313 additions and 855 deletions

No files matched your search

+35
View File
@@ -0,0 +1,35 @@
name: Format Codebase
on:
push:
branches:
- master
jobs:
format:
runs-on: ubuntu-latest
container: qmkfm/base_container
# protect against those who develop with their fork on master
if: github.repository == 'qmk/qmk_firmware'
steps:
- uses: actions/checkout@v2
- name: Install dependencies
run: |
apt-get update && apt-get install -y dos2unix
- name: Format files
run: |
bin/qmk cformat -a
bin/qmk pyformat
bin/qmk fileformat
- name: Commit files
uses: stefanzweifel/git-auto-commit-action@v4
with:
commit_message: Format code according to conventions for $GITHUB_SHA
commit_user_name: QMK Bot
commit_user_email: [email protected]
commit_author: QMK Bot <[email protected]>
-1
View File
@@ -19,7 +19,6 @@ addons:
- llvm-toolchain-trusty-7 - llvm-toolchain-trusty-7
packages: packages:
- diffutils - diffutils
- dos2unix
- clang-format-7 - clang-format-7
- libstdc++-7-dev - libstdc++-7-dev
script: script:
+10
View File
@@ -296,6 +296,16 @@ This command allows you to generate QMK documentation locally. It can be uses fo
qmk generate-docs qmk generate-docs
``` ```
## `qmk generate-rgb-breathe-table`
This command generates a lookup table (LUT) header file for the [RGB Lighting](feature_rgblight.md) feature's breathing animation. Place this file in your keyboard or keymap directory as `rgblight_breathe_table.h` to override the default LUT in `quantum/`.
**Usage**:
```
qmk generate-rgb-breathe-table [-q] [-o OUTPUT] [-m MAX] [-c CENTER]
```
## `qmk kle2json` ## `qmk kle2json`
This command allows you to convert from raw KLE data to QMK Configurator JSON. It accepts either an absolute file path, or a file name in the current directory. By default it will not overwrite `info.json` if it is already present. Use the `-f` or `--force` flag to overwrite. This command allows you to convert from raw KLE data to QMK Configurator JSON. It accepts either an absolute file path, or a file name in the current directory. By default it will not overwrite `info.json` if it is already present. Use the `-f` or `--force` flag to overwrite.
+3 -1
View File
@@ -29,7 +29,9 @@ This level contains all of the options for that particular keymap. If you wish t
This is a C header file that is one of the first things included, and will persist over the whole project (if included). Lots of variables can be set here and accessed elsewhere. The `config.h` file shouldn't be including other `config.h` files, or anything besides this: This is a C header file that is one of the first things included, and will persist over the whole project (if included). Lots of variables can be set here and accessed elsewhere. The `config.h` file shouldn't be including other `config.h` files, or anything besides this:
#include "config_common.h" ```c
#include "config_common.h"
```
## Hardware Options ## Hardware Options
+3 -1
View File
@@ -41,7 +41,9 @@ Bevorzugst Du es lieber auf der Befehlszeile zu debuggen? Dafür eignet sich das
Manchmal ist es hilfreich Debug-Nachrichten innerhalb deines eigenen [Custom Codes](de/custom_quantum_functions.md) zu drucken. Das ist ziemlich einfach. Beginne damit `print.h` am Anfang deiner Datei zu inkludieren: Manchmal ist es hilfreich Debug-Nachrichten innerhalb deines eigenen [Custom Codes](de/custom_quantum_functions.md) zu drucken. Das ist ziemlich einfach. Beginne damit `print.h` am Anfang deiner Datei zu inkludieren:
#include <print.h> ```c
#include "print.h"
```
Danach stehen dir verschiedene Druck-Funktionen zur Verfügung: Danach stehen dir verschiedene Druck-Funktionen zur Verfügung:
+1
View File
@@ -40,6 +40,7 @@ Module | Equivalent `#define` | Source
-----------------|---------------------------------|------------------------------------------ -----------------|---------------------------------|------------------------------------------
CAT24C512 EEPROM | `#define EEPROM_I2C_CAT24C512` | <https://www.sparkfun.com/products/14764> CAT24C512 EEPROM | `#define EEPROM_I2C_CAT24C512` | <https://www.sparkfun.com/products/14764>
RM24C512C EEPROM | `#define EEPROM_I2C_RM24C512C` | <https://www.sparkfun.com/products/14764> RM24C512C EEPROM | `#define EEPROM_I2C_RM24C512C` | <https://www.sparkfun.com/products/14764>
24LC64 EEPROM | `#define EEPROM_I2C_24LC64` | <https://www.microchip.com/wwwproducts/en/24LC64>
24LC128 EEPROM | `#define EEPROM_I2C_24LC128` | <https://www.microchip.com/wwwproducts/en/24LC128> 24LC128 EEPROM | `#define EEPROM_I2C_24LC128` | <https://www.microchip.com/wwwproducts/en/24LC128>
24LC256 EEPROM | `#define EEPROM_I2C_24LC256` | <https://www.sparkfun.com/products/525> 24LC256 EEPROM | `#define EEPROM_I2C_24LC256` | <https://www.sparkfun.com/products/525>
MB85RC256V FRAM | `#define EEPROM_I2C_MB85RC256V` | <https://www.adafruit.com/product/1895> MB85RC256V FRAM | `#define EEPROM_I2C_MB85RC256V` | <https://www.adafruit.com/product/1895>
+3 -1
View File
@@ -41,7 +41,9 @@ Para plataformas compatibles, [QMK Toolbox](https://github.com/qmk/qmk_toolbox)
A veces, es útil imprimir mensajes de depuración desde tu [código personalizado](custom_quantum_functions.md). Hacerlo es bastante simple. Comienza incluyendo `print.h` al principio de tu fichero: A veces, es útil imprimir mensajes de depuración desde tu [código personalizado](custom_quantum_functions.md). Hacerlo es bastante simple. Comienza incluyendo `print.h` al principio de tu fichero:
#include <print.h> ```c
#include "print.h"
```
Después de eso puedes utilzar algunas funciones print diferentes: Después de eso puedes utilzar algunas funciones print diferentes:
+3 -1
View File
@@ -182,7 +182,9 @@ Which would send Left Control+`a` (Left Control down, `a`, Left Control up) - no
By default, it assumes a US keymap with a QWERTY layout; if you want to change that (e.g. if your OS uses software Colemak), include this somewhere in your keymap: By default, it assumes a US keymap with a QWERTY layout; if you want to change that (e.g. if your OS uses software Colemak), include this somewhere in your keymap:
#include <sendstring_colemak.h> ```c
#include "sendstring_colemak.h"
```
### Strings in Memory ### Strings in Memory
+1 -1
View File
@@ -184,7 +184,7 @@ If you wanted to consolidate macros and other functions into your userspace for
First, you'd want to go through all of your `keymap.c` files and replace `process_record_user` with `process_record_keymap` instead. This way, you can still use keyboard specific codes on those boards, and use your custom "global" keycodes as well. You'll also want to replace `SAFE_RANGE` with `NEW_SAFE_RANGE` so that you wont have any overlapping keycodes First, you'd want to go through all of your `keymap.c` files and replace `process_record_user` with `process_record_keymap` instead. This way, you can still use keyboard specific codes on those boards, and use your custom "global" keycodes as well. You'll also want to replace `SAFE_RANGE` with `NEW_SAFE_RANGE` so that you wont have any overlapping keycodes
Then add `#include <name.h>` to all of your keymap.c files. This allows you to use these new keycodes without having to redefine them in each keymap. Then add `#include "<name>.h"` to all of your keymap.c files. This allows you to use these new keycodes without having to redefine them in each keymap.
Once you've done that, you'll want to set the keycode definitions that you need to the `<name>.h` file. For instance: Once you've done that, you'll want to set the keycode definitions that you need to the `<name>.h` file. For instance:
```c ```c
+3 -1
View File
@@ -42,7 +42,9 @@ Vous préférez une solution basée sur le terminal? [hid_listen](https://www.pj
Parfois, il est utile d'afficher des messages de débugage depuis votre [code custom](custom_quantum_functions.md). Le faire est assez simple. Commencez par ajouter `print.h` au début de votre fichier: Parfois, il est utile d'afficher des messages de débugage depuis votre [code custom](custom_quantum_functions.md). Le faire est assez simple. Commencez par ajouter `print.h` au début de votre fichier:
#include <print.h> ```c
#include "print.h"
```
Une fois fait, vous pouvez utiliser les fonctions print suivantes: Une fois fait, vous pouvez utiliser les fonctions print suivantes:
+3 -1
View File
@@ -34,7 +34,9 @@ QMK での全ての利用可能な設定にはデフォルトがあります。
これは最初に include されるものの 1 つである C ヘッダファイルで、プロジェクト全体(もし含まれる場合)にわたって持続します。多くの変数をここで設定し、他の場所からアクセスすることができます。`config.h` ファイルでは、以下のもの以外の、他の `config.h` ファイルやその他のファイルの include をしないでください: これは最初に include されるものの 1 つである C ヘッダファイルで、プロジェクト全体(もし含まれる場合)にわたって持続します。多くの変数をここで設定し、他の場所からアクセスすることができます。`config.h` ファイルでは、以下のもの以外の、他の `config.h` ファイルやその他のファイルの include をしないでください:
#include "config_common.h" ```c
#include "config_common.h"
```
## ハードウェアオプション ## ハードウェアオプション
+3 -1
View File
@@ -187,7 +187,9 @@ void post_process_record_user(uint16_t keycode, keyrecord_t *record) {
デフォルトでは、QWERTY レイアウトの US キーマップを想定しています; それを変更したい場合(例えば OS がソフトウェア Colemak を使う場合)、キーマップのどこかに以下を含めます: デフォルトでは、QWERTY レイアウトの US キーマップを想定しています; それを変更したい場合(例えば OS がソフトウェア Colemak を使う場合)、キーマップのどこかに以下を含めます:
#include <sendstring_colemak.h> ```c
#include "sendstring_colemak.h"
```
### メモリ内の文字列 ### メモリ内の文字列
+1 -1
View File
@@ -189,7 +189,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
最初に、全ての `keymap.c` ファイルを調べ、代わりに `process_record_user` を `process_record_keymap` に置き換えます。この方法では、これらのキーボードでキーボード固有のコードを使用でき、カスタムの "global" キーコードも使うことができます。また、`SAFE_RANGE` を `NEW_SAFE_RANGE` に置き換えて、キーコードが重複しないようにすることもできます。 最初に、全ての `keymap.c` ファイルを調べ、代わりに `process_record_user` を `process_record_keymap` に置き換えます。この方法では、これらのキーボードでキーボード固有のコードを使用でき、カスタムの "global" キーコードも使うことができます。また、`SAFE_RANGE` を `NEW_SAFE_RANGE` に置き換えて、キーコードが重複しないようにすることもできます。
次に、全ての keymap.c ファイルに `#include <name.h>` を追加します。これにより、各キーマップでそれらを再定義することなく新しいキーコードを使うことができます。 次に、全ての keymap.c ファイルに `#include "<name>.h"` を追加します。これにより、各キーマップでそれらを再定義することなく新しいキーコードを使うことができます。
それが完了したら、必要なキーコードの定義を `<name>.h` ファイルに設定します。例えば: それが完了したら、必要なキーコードの定義を `<name>.h` ファイルに設定します。例えば:
```c ```c
+3 -1
View File
@@ -45,7 +45,9 @@ void keyboard_post_init_user(void) {
[custom code](ja/custom_quantum_functions.md)内からデバッグメッセージを出力すると便利な場合があります。それはとても簡単です。ファイルの先頭に`print.h`のインクルードを追加します: [custom code](ja/custom_quantum_functions.md)内からデバッグメッセージを出力すると便利な場合があります。それはとても簡単です。ファイルの先頭に`print.h`のインクルードを追加します:
#include <print.h> ```c
#include "print.h"
```
そのあとは、いくつかの異なった print 関数を使用することが出来ます。 そのあとは、いくつかの異なった print 関数を使用することが出来ます。
+3 -1
View File
@@ -36,7 +36,9 @@ Prefer a terminal based solution? [hid_listen](https://www.pjrc.com/teensy/hid_l
Sometimes it's useful to print debug messages from within your [custom code](custom_quantum_functions.md). Doing so is pretty simple. Start by including `print.h` at the top of your file: Sometimes it's useful to print debug messages from within your [custom code](custom_quantum_functions.md). Doing so is pretty simple. Start by including `print.h` at the top of your file:
#include <print.h> ```c
#include "print.h"
```
After that you can use a few different print functions: After that you can use a few different print functions:
+3 -1
View File
@@ -34,7 +34,9 @@ void keyboard_post_init_user(void) {
有时用[custom code](custom_quantum_functions.md)发送自定义调试信息很有用. 这么做很简单. 首先在你文件头部包含`print.h`: 有时用[custom code](custom_quantum_functions.md)发送自定义调试信息很有用. 这么做很简单. 首先在你文件头部包含`print.h`:
#include <print.h> ```c
#include "print.h"
```
之后,您可以使用一些不同的打印功能: 之后,您可以使用一些不同的打印功能:
+1 -1
View File
@@ -16,7 +16,7 @@
#include "quantum.h" #include "quantum.h"
#include "analog.h" #include "analog.h"
#include "ch.h" #include <ch.h>
#include <hal.h> #include <hal.h>
#if !HAL_USE_ADC #if !HAL_USE_ADC
+1 -1
View File
@@ -24,7 +24,7 @@
*/ */
#pragma once #pragma once
#include "ch.h" #include <ch.h>
#include <hal.h> #include <hal.h>
#ifdef I2C1_BANK #ifdef I2C1_BANK
+1 -1
View File
@@ -6,7 +6,7 @@
#include "serial.h" #include "serial.h"
#include "wait.h" #include "wait.h"
#include "hal.h" #include <hal.h>
// TODO: resolve/remove build warnings // TODO: resolve/remove build warnings
#if defined(RGBLIGHT_ENABLE) && defined(RGBLED_SPLIT) && defined(PROTOCOL_CHIBIOS) && defined(WS2812_DRIVER_BITBANG) #if defined(RGBLIGHT_ENABLE) && defined(RGBLED_SPLIT) && defined(PROTOCOL_CHIBIOS) && defined(WS2812_DRIVER_BITBANG)
+2 -2
View File
@@ -2,8 +2,8 @@
#include "serial.h" #include "serial.h"
#include "printf.h" #include "printf.h"
#include "ch.h" #include <ch.h>
#include "hal.h" #include <hal.h>
#ifndef USART_CR1_M0 #ifndef USART_CR1_M0
# define USART_CR1_M0 USART_CR1_M // some platforms (f1xx) dont have this so # define USART_CR1_M0 USART_CR1_M // some platforms (f1xx) dont have this so
+1 -1
View File
@@ -18,7 +18,7 @@
#include <ch.h> #include <ch.h>
#include <hal.h> #include <hal.h>
#include <quantum.h> #include "quantum.h"
#ifndef SPI_DRIVER #ifndef SPI_DRIVER
# define SPI_DRIVER SPID2 # define SPI_DRIVER SPID2
+2 -2
View File
@@ -1,7 +1,7 @@
#include "quantum.h" #include "quantum.h"
#include "ws2812.h" #include "ws2812.h"
#include "ch.h" #include <ch.h>
#include "hal.h" #include <hal.h>
/* Adapted from https://github.com/bigjosh/SimpleNeoPixelDemo/ */ /* Adapted from https://github.com/bigjosh/SimpleNeoPixelDemo/ */
+1 -1
View File
@@ -1,6 +1,6 @@
#include "ws2812.h" #include "ws2812.h"
#include "quantum.h" #include "quantum.h"
#include "hal.h" #include <hal.h>
/* Adapted from https://github.com/joewa/WS2812-LED-Driver_ChibiOS/ */ /* Adapted from https://github.com/joewa/WS2812-LED-Driver_ChibiOS/ */
+5
View File
@@ -49,6 +49,11 @@
# define EXTERNAL_EEPROM_PAGE_SIZE 64 # define EXTERNAL_EEPROM_PAGE_SIZE 64
# define EXTERNAL_EEPROM_ADDRESS_SIZE 2 # define EXTERNAL_EEPROM_ADDRESS_SIZE 2
# define EXTERNAL_EEPROM_WRITE_TIME 5 # define EXTERNAL_EEPROM_WRITE_TIME 5
#elif defined(EEPROM_I2C_24LC64)
# define EXTERNAL_EEPROM_BYTE_COUNT 8192
# define EXTERNAL_EEPROM_PAGE_SIZE 32
# define EXTERNAL_EEPROM_ADDRESS_SIZE 2
# define EXTERNAL_EEPROM_WRITE_TIME 5
#elif defined(EEPROM_I2C_MB85RC256V) #elif defined(EEPROM_I2C_MB85RC256V)
# define EXTERNAL_EEPROM_BYTE_COUNT 32768 # define EXTERNAL_EEPROM_BYTE_COUNT 32768
# define EXTERNAL_EEPROM_PAGE_SIZE 128 # define EXTERNAL_EEPROM_PAGE_SIZE 128
+1 -1
View File
@@ -17,7 +17,7 @@
#include <stdint.h> #include <stdint.h>
#include <string.h> #include <string.h>
#include "hal.h" #include <hal.h>
#include "eeprom_driver.h" #include "eeprom_driver.h"
#include "eeprom_stm32_L0_L1.h" #include "eeprom_stm32_L0_L1.h"
+1 -1
View File
@@ -15,7 +15,7 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>. * along with this program. If not, see <http://www.gnu.org/licenses/>.
*/ */
#include <timer.h> #include "timer.h"
#include "solenoid.h" #include "solenoid.h"
#include "haptic.h" #include "haptic.h"
+1 -1
View File
@@ -28,7 +28,7 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>. * along with this program. If not, see <http://www.gnu.org/licenses/>.
*/ */
#include "micro_oled.h" #include "micro_oled.h"
#include <print.h> #include "print.h"
#include <stdlib.h> #include <stdlib.h>
#include "util/font5x7.h" #include "util/font5x7.h"
#include "util/font8x16.h" #include "util/font8x16.h"
+48
View File
@@ -0,0 +1,48 @@
/* Copyright 2020 OJtheTiny
*
* 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] = {
/* Default Layer*/
[0] = LAYOUT(
KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_QUOT, KC_ENTER,
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_LCTRL, KC_LGUI, KC_LALT, KC_SPC, KC_TAB, KC_RALT, KC_RGUI, KC_RCTL
),
/* Num Layer */
[1] = LAYOUT(
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
),
/* F-Layer */
[2] = LAYOUT(
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
),
/* Lock Layer */
[3] = LAYOUT(
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
)
};
@@ -0,0 +1 @@
# Via keymap for beatervan
+1
View File
@@ -0,0 +1 @@
VIA_ENABLE = yes
+1 -12
View File
@@ -1,17 +1,7 @@
// This is the 'classic' fixed-space bitmap font for Adafruit_GFX since 1.0. // This is the 'classic' fixed-space bitmap font for Adafruit_GFX since 1.0.
// See gfxfont.h for newer custom bitmap font info. // See gfxfont.h for newer custom bitmap font info.
#ifndef FONT5X7_H #include "progmem.h"
#define FONT5X7_H
#ifdef __AVR__
#include <avr/io.h>
#include <avr/pgmspace.h>
#elif defined(ESP8266)
#include <pgmspace.h>
#else
#define PROGMEM
#endif
// Standard ASCII 5x7 font // Standard ASCII 5x7 font
const unsigned char font[] PROGMEM = { const unsigned char font[] PROGMEM = {
@@ -240,4 +230,3 @@ const unsigned char font[] PROGMEM = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
}; };
#endif // FONT5X7_H
+55
View File
@@ -0,0 +1,55 @@
/* Copyright 2020 OJtheTiny
*
* 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] = {
/* Default Layer*/
[0] = LAYOUT(
KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_ENT,
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_RSFT,
KC_LCTL, KC_LGUI, KC_SPC, KC_RALT, KC_RCTL
),
/* Num Layer */
[1] = LAYOUT(
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
),
/* F Layer */
[2] = LAYOUT(
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
),
/* Lock Layer */
[3] = LAYOUT(
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
),
/* Random Layer */
[4] = LAYOUT(
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
)
};
+1
View File
@@ -0,0 +1 @@
# VIA keymap for edc40
+1
View File
@@ -0,0 +1 @@
VIA_ENABLE = yes
+1 -1
View File
@@ -37,7 +37,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define MATRIX_COL_PINS { F0, F1, E6, C7, C6, B7, D4, B1, B0, B5, B4, D7, D6, B3 } #define MATRIX_COL_PINS { F0, F1, E6, C7, C6, B7, D4, B1, B0, B5, B4, D7, D6, B3 }
#define UNUSED_PINS #define UNUSED_PINS
#define LED_NUM_LOCK_PIN B2 #define LED_CAPS_LOCK_PIN B2
#define LED_PIN_ON_STATE 0 #define LED_PIN_ON_STATE 0
#define BACKLIGHT_PIN B6 #define BACKLIGHT_PIN B6
+2
View File
@@ -48,6 +48,8 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define SSD1306OLED #define SSD1306OLED
#endif #endif
#define OLED_UPDATE_INTERVAL 50
/* Select rows configuration */ /* Select rows configuration */
// Rows are 4 or 5 // Rows are 4 or 5
// #define HELIX_ROWS 5 see ./rules.mk // #define HELIX_ROWS 5 see ./rules.mk
+27 -147
View File
@@ -1,3 +1,19 @@
/* Copyright 2020 yushakobo
*
* 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 #include QMK_KEYBOARD_H
#include "bootloader.h" #include "bootloader.h"
#ifdef PROTOCOL_LUFA #ifdef PROTOCOL_LUFA
@@ -7,17 +23,6 @@
#ifdef AUDIO_ENABLE #ifdef AUDIO_ENABLE
#include "audio.h" #include "audio.h"
#endif #endif
#ifdef SSD1306OLED
#include "ssd1306.h"
#endif
#ifdef RGBLIGHT_ENABLE
//Following line allows macro to read current RGB settings
extern rgblight_config_t rgblight_config;
#endif
extern uint8_t is_master;
// Each layer gets a name for readability, which is then used in the keymap matrix below. // 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. // The underscores don't mean anything - you can have a layer called STUFF or any other name.
@@ -420,16 +425,16 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
if (record->event.pressed) { if (record->event.pressed) {
rgblight_mode(RGB_current_mode); rgblight_mode(RGB_current_mode);
rgblight_step(); rgblight_step();
RGB_current_mode = rgblight_config.mode; RGB_current_mode = rgblight_get_mode();
} }
#endif #endif
return false; return false;
break; break;
case EISU: case EISU:
if (record->event.pressed) { if (record->event.pressed) {
if(keymap_config.swap_lalt_lgui==false){ if (is_mac_mode()) {
register_code(KC_LANG2); register_code(KC_LANG2);
}else{ } else {
SEND_STRING(SS_LALT("`")); SEND_STRING(SS_LALT("`"));
} }
} else { } else {
@@ -439,9 +444,9 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
break; break;
case KANA: case KANA:
if (record->event.pressed) { if (record->event.pressed) {
if(keymap_config.swap_lalt_lgui==false){ if (is_mac_mode()) {
register_code(KC_LANG1); register_code(KC_LANG1);
}else{ } else {
SEND_STRING(SS_LALT("`")); SEND_STRING(SS_LALT("`"));
} }
} else { } else {
@@ -454,7 +459,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
if (record->event.pressed) { if (record->event.pressed) {
eeconfig_update_rgblight_default(); eeconfig_update_rgblight_default();
rgblight_enable(); rgblight_enable();
RGB_current_mode = rgblight_config.mode; RGB_current_mode = rgblight_get_mode();
} }
#endif #endif
break; break;
@@ -462,12 +467,16 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
return true; return true;
} }
#ifdef SSD1306OLED
#include "ssd1306.h"
#endif
void matrix_init_user(void) { void matrix_init_user(void) {
#ifdef AUDIO_ENABLE #ifdef AUDIO_ENABLE
startup_user(); startup_user();
#endif #endif
#ifdef RGBLIGHT_ENABLE #ifdef RGBLIGHT_ENABLE
RGB_current_mode = rgblight_config.mode; RGB_current_mode = rgblight_get_mode();
#endif #endif
//SSD1306 OLED init, make sure to add #define SSD1306OLED in config.h //SSD1306 OLED init, make sure to add #define SSD1306OLED in config.h
#ifdef SSD1306OLED #ifdef SSD1306OLED
@@ -500,132 +509,3 @@ void music_scale_user(void)
} }
#endif #endif
//SSD1306 OLED update loop, make sure to add #define SSD1306OLED in config.h
#ifdef SSD1306OLED
void matrix_scan_user(void) {
iota_gfx_task(); // this is what updates the display continuously
}
void matrix_update(struct CharacterMatrix *dest,
const struct CharacterMatrix *source) {
if (memcmp(dest->display, source->display, sizeof(dest->display))) {
memcpy(dest->display, source->display, sizeof(dest->display));
dest->dirty = true;
}
}
//assign the right code to your layers for OLED display
#define L_BASE 0
#define L_LOWER (1<<_LOWER)
#define L_RAISE (1<<_RAISE)
#define L_ADJUST (1<<_ADJUST)
#define L_ADJUST_TRI (L_ADJUST|L_RAISE|L_LOWER)
static void render_logo(struct CharacterMatrix *matrix) {
static const char helix_logo[] PROGMEM ={
0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8a,0x8b,0x8c,0x8d,0x8e,0x8f,0x90,0x91,0x92,0x93,0x94,
0xa0,0xa1,0xa2,0xa3,0xa4,0xa5,0xa6,0xa7,0xa8,0xa9,0xaa,0xab,0xac,0xad,0xae,0xaf,0xb0,0xb1,0xb2,0xb3,0xb4,
0xc0,0xc1,0xc2,0xc3,0xc4,0xc5,0xc6,0xc7,0xc8,0xc9,0xca,0xcb,0xcc,0xcd,0xce,0xcf,0xd0,0xd1,0xd2,0xd3,0xd4,
0};
matrix_write_P(matrix, helix_logo);
//matrix_write_P(&matrix, PSTR(" Split keyboard kit"));
}
static void render_rgbled_status(bool full, struct CharacterMatrix *matrix) {
#ifdef RGBLIGHT_ENABLE
char buf[30];
if (RGBLIGHT_MODES > 1 && rgblight_config.enable) {
if (full) {
snprintf(buf, sizeof(buf), " LED %2d: %d,%d,%d ",
rgblight_config.mode,
rgblight_config.hue/RGBLIGHT_HUE_STEP,
rgblight_config.sat/RGBLIGHT_SAT_STEP,
rgblight_config.val/RGBLIGHT_VAL_STEP);
} else {
snprintf(buf, sizeof(buf), "[%2d] ",rgblight_config.mode);
}
matrix_write(matrix, buf);
}
#endif
}
static void render_layer_status(struct CharacterMatrix *matrix) {
// Define layers here, Have not worked out how to have text displayed for each layer. Copy down the number you see and add a case for it below
char buf[10];
matrix_write_P(matrix, PSTR("Layer: "));
switch (layer_state) {
case L_BASE:
matrix_write_P(matrix, PSTR("Default"));
break;
case L_RAISE:
matrix_write_P(matrix, PSTR("Raise"));
break;
case L_LOWER:
matrix_write_P(matrix, PSTR("Lower"));
break;
case L_ADJUST:
case L_ADJUST_TRI:
matrix_write_P(matrix, PSTR("Adjust"));
break;
default:
matrix_write_P(matrix, PSTR("Undef-"));
snprintf(buf,sizeof(buf), "%ld", layer_state);
matrix_write(matrix, buf);
}
}
void render_status(struct CharacterMatrix *matrix) {
// Render to mode icon
static const char os_logo[][2][3] PROGMEM ={{{0x95,0x96,0},{0xb5,0xb6,0}},{{0x97,0x98,0},{0xb7,0xb8,0}}};
if(keymap_config.swap_lalt_lgui==false){
matrix_write_P(matrix, os_logo[0][0]);
matrix_write_P(matrix, PSTR("\n"));
matrix_write_P(matrix, os_logo[0][1]);
}else{
matrix_write_P(matrix, os_logo[1][0]);
matrix_write_P(matrix, PSTR("\n"));
matrix_write_P(matrix, os_logo[1][1]);
}
matrix_write_P(matrix, PSTR(" "));
render_layer_status(matrix);
matrix_write_P(matrix, PSTR("\n"));
// Host Keyboard LED Status
matrix_write_P(matrix, (host_keyboard_leds() & (1<<USB_LED_NUM_LOCK)) ?
PSTR("NUMLOCK") : PSTR(" "));
matrix_write_P(matrix, (host_keyboard_leds() & (1<<USB_LED_CAPS_LOCK)) ?
PSTR("CAPS") : PSTR(" "));
matrix_write_P(matrix, (host_keyboard_leds() & (1<<USB_LED_SCROLL_LOCK)) ?
PSTR("SCLK") : PSTR(" "));
matrix_write_P(matrix, PSTR("\n"));
render_rgbled_status(true, matrix);
}
void iota_gfx_task_user(void) {
struct CharacterMatrix matrix;
#if DEBUG_TO_SCREEN
if (debug_enable) {
return;
}
#endif
matrix_clear(&matrix);
if(is_master){
render_status(&matrix);
}else{
render_logo(&matrix);
render_rgbled_status(false, &matrix);
render_layer_status(&matrix);
}
matrix_update(&display, &matrix);
}
#endif
@@ -0,0 +1,228 @@
/* Copyright 2020 yushakobo
*
* 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 <stdio.h>
#include <string.h>
#include QMK_KEYBOARD_H
#ifdef SSD1306OLED
#include "ssd1306.h"
#endif
// 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_number {
_QWERTY = 0,
_COLEMAK,
_DVORAK,
_LOWER,
_RAISE,
_ADJUST
};
//SSD1306 OLED update loop, make sure to add #define SSD1306OLED in config.h
#if defined(SSD1306OLED) || defined(OLED_DRIVER_ENABLE)
# if defined(OLED_DRIVER_ENABLE)
oled_rotation_t oled_init_user(oled_rotation_t rotation) {
if (is_keyboard_master()) {
return OLED_ROTATION_0;
} else {
return OLED_ROTATION_180;
}
}
# else
# define oled_write(data,flag) matrix_write(matrix, data)
# define oled_write_P(data,flag) matrix_write_P(matrix, data)
# endif
# ifdef SSD1306OLED
void matrix_scan_user(void) {
iota_gfx_task(); // this is what updates the display continuously
}
void matrix_update(struct CharacterMatrix *dest,
const struct CharacterMatrix *source) {
if (memcmp(dest->display, source->display, sizeof(dest->display))) {
memcpy(dest->display, source->display, sizeof(dest->display));
dest->dirty = true;
}
}
# endif
//assign the right code to your layers for OLED display
#define L_BASE 0
#define L_LOWER (1<<_LOWER)
#define L_RAISE (1<<_RAISE)
#define L_ADJUST (1<<_ADJUST)
#define L_ADJUST_TRI (L_ADJUST|L_RAISE|L_LOWER)
# ifdef SSD1306OLED
static void render_logo(struct CharacterMatrix *matrix) {
# else
static void render_logo(void) {
# endif
static const char helix_logo[] PROGMEM ={
0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8a,0x8b,0x8c,0x8d,0x8e,0x8f,0x90,0x91,0x92,0x93,0x94,
0xa0,0xa1,0xa2,0xa3,0xa4,0xa5,0xa6,0xa7,0xa8,0xa9,0xaa,0xab,0xac,0xad,0xae,0xaf,0xb0,0xb1,0xb2,0xb3,0xb4,
0xc0,0xc1,0xc2,0xc3,0xc4,0xc5,0xc6,0xc7,0xc8,0xc9,0xca,0xcb,0xcc,0xcd,0xce,0xcf,0xd0,0xd1,0xd2,0xd3,0xd4,
0};
oled_write_P(helix_logo, false);
}
# ifdef SSD1306OLED
static void render_rgbled_status(bool full, struct CharacterMatrix *matrix) {
# else
static void render_rgbled_status(bool full) {
# endif
# ifdef RGBLIGHT_ENABLE
char buf[30];
if (RGBLIGHT_MODES > 1 && rgblight_is_enabled()) {
if (full) {
snprintf(buf, sizeof(buf), " LED %2d: %d,%d,%d ",
rgblight_get_mode(),
rgblight_get_hue()/RGBLIGHT_HUE_STEP,
rgblight_get_sat()/RGBLIGHT_SAT_STEP,
rgblight_get_val()/RGBLIGHT_VAL_STEP);
} else {
snprintf(buf, sizeof(buf), "[%2d] ", rgblight_get_mode());
}
oled_write(buf, false);
}
# endif
}
# ifdef SSD1306OLED
static void render_layer_status(struct CharacterMatrix *matrix) {
# else
static void render_layer_status(void) {
# endif
// Define layers here, Have not worked out how to have text displayed for each layer. Copy down the number you see and add a case for it below
char buf[10];
oled_write_P(PSTR("Layer: "), false);
switch (layer_state) {
case L_BASE:
oled_write_P(PSTR("Default"), false);
break;
case L_RAISE:
oled_write_P(PSTR("Raise"), false);
break;
case L_LOWER:
oled_write_P(PSTR("Lower"), false);
break;
case L_ADJUST:
case L_ADJUST_TRI:
oled_write_P(PSTR("Adjust"), false);
break;
default:
oled_write_P(PSTR("Undef-"), false);
snprintf(buf,sizeof(buf), "%ld", layer_state);
oled_write(buf, false);
}
}
# ifdef SSD1306OLED
void render_status(struct CharacterMatrix *matrix) {
# else
void render_status(void) {
# endif
// Render to mode icon
static const char os_logo[][2][3] PROGMEM = {{{0x95,0x96,0},{0xb5,0xb6,0}},{{0x97,0x98,0},{0xb7,0xb8,0}}};
if (is_mac_mode()) {
oled_write_P(os_logo[0][0], false);
oled_write_P(PSTR("\n"), false);
oled_write_P(os_logo[0][1], false);
} else {
oled_write_P(os_logo[1][0], false);
oled_write_P(PSTR("\n"), false);
oled_write_P(os_logo[1][1], false);
}
oled_write_P(PSTR(" "), false);
# ifdef SSD1306OLED
render_layer_status(matrix);
# else
render_layer_status();
# endif
oled_write_P(PSTR("\n"), false);
// Host Keyboard LED Status
led_t led_state = host_keyboard_led_state();
oled_write_P(led_state.num_lock ? PSTR("NUMLOCK") : PSTR(" "), false);
oled_write_P(led_state.caps_lock ? PSTR("CAPS") : PSTR(" "), false);
oled_write_P(led_state.scroll_lock ? PSTR("SCLK") : PSTR(" "), false);
oled_write_P(PSTR("\n"), false);
# ifdef SSD1306OLED
render_rgbled_status(true, matrix);
# else
render_rgbled_status(true);
oled_write_P(PSTR("\n"), false);
# endif
}
# ifdef SSD1306OLED
# if OLED_UPDATE_INTERVAL > 0
uint16_t oled_update_timeout;
# endif
void iota_gfx_task_user(void) {
struct CharacterMatrix matrix;
# if DEBUG_TO_SCREEN
if (debug_enable) {
return;
}
# endif
#if OLED_UPDATE_INTERVAL > 0
if (timer_elapsed(oled_update_timeout) < OLED_UPDATE_INTERVAL) {
return;
}
oled_update_timeout = timer_read();
#endif
matrix_clear(&matrix);
if (is_keyboard_master()) {
render_status(&matrix);
} else {
render_logo(&matrix);
render_rgbled_status(false, &matrix);
render_layer_status(&matrix);
}
matrix_update(&display, &matrix);
}
# else
void oled_task_user(void) {
# if DEBUG_TO_SCREEN
if (debug_enable) {
return;
}
# endif
if (is_keyboard_master()) {
render_status();
} else {
render_logo();
render_rgbled_status(false);
render_layer_status();
}
}
# endif
#endif
@@ -18,6 +18,18 @@ LTO_ENABLE = no # if firmware size over limit, try this option
# LED_ANIMATIONS = yes # LED animations # LED_ANIMATIONS = yes # LED animations
# IOS_DEVICE_ENABLE = no # connect to IOS device (iPad,iPhone) # IOS_DEVICE_ENABLE = no # connect to IOS device (iPad,iPhone)
# OLED_ENABLE が yes のとき
# OLED_SELECT が core ならば QMK 標準の oled_dirver.c を使用します。
# OLED_SELECT が core 以外ならば従来どおり helix/local_drivers/ssd1306.c を使用します。
# If OLED_ENABLE is 'yes'
# If OLED_SELECT is 'core', use QMK standard oled_dirver.c.
# If OLED_SELECT is other than 'core', use helix/local_drivers/ssd1306.c.
OLED_SELECT = core
ifeq ($(strip $(OLED_ENABLE)), yes)
SRC += oled_display.c
endif
# convert Helix-specific options (that represent combinations of standard options) # convert Helix-specific options (that represent combinations of standard options)
# into QMK standard options. # into QMK standard options.
include $(strip $(KEYBOARD_LOCAL_FEATURES_MK)) include $(strip $(KEYBOARD_LOCAL_FEATURES_MK))
@@ -0,0 +1 @@
#include "../default/oled_display.c"
@@ -18,6 +18,10 @@ LED_UNDERGLOW_ENABLE = no # LED underglow (Enable WS2812 RGB underlight.)
LED_ANIMATIONS = yes # LED animations LED_ANIMATIONS = yes # LED animations
# IOS_DEVICE_ENABLE = no # connect to IOS device (iPad,iPhone) # IOS_DEVICE_ENABLE = no # connect to IOS device (iPad,iPhone)
OLED_SELECT = core
ifeq ($(strip $(OLED_ENABLE)), yes)
SRC += oled_display.c
endif
SRC += led_test_init.c SRC += led_test_init.c
# convert Helix-specific options (that represent combinations of standard options) # convert Helix-specific options (that represent combinations of standard options)
+89 -67
View File
@@ -10,6 +10,7 @@ KEYBOARD_LOCAL_FEATURES_MK :=
define HELIX_CUSTOMISE_MSG define HELIX_CUSTOMISE_MSG
$(info Helix Spacific Build Options) $(info Helix Spacific Build Options)
$(info - OLED_ENABLE = $(OLED_ENABLE)) $(info - OLED_ENABLE = $(OLED_ENABLE))
$(info - OLED_SELECT = $(OLED_SELECT))
$(info - LED_BACK_ENABLE = $(LED_BACK_ENABLE)) $(info - LED_BACK_ENABLE = $(LED_BACK_ENABLE))
$(info - LED_UNDERGLOW_ENABLE = $(LED_UNDERGLOW_ENABLE)) $(info - LED_UNDERGLOW_ENABLE = $(LED_UNDERGLOW_ENABLE))
$(info - LED_ANIMATIONS = $(LED_ANIMATIONS)) $(info - LED_ANIMATIONS = $(LED_ANIMATIONS))
@@ -20,9 +21,10 @@ endef
define HELIX_HELP_MSG define HELIX_HELP_MSG
$(info Helix keyboard convenient command line option) $(info Helix keyboard convenient command line option)
$(info - make HELIX=<options> helix:<keymap>) $(info - make HELIX=<options> helix:<keymap>)
$(info - option= oled | no-oled | back | no-back | under | na | no-ani) $(info - option= oled | core-oled | local-oled | no-oled )
$(info - ios | sc | split-common | scan | verbose) $(info - back | no-back | under | na | no-ani )
$(info - ex.) $(info - ios | sc | split-common | scan | verbose)
$(info - eg.)
$(info - make HELIX=no-oled helix:<keymap>) $(info - make HELIX=no-oled helix:<keymap>)
$(info - make HELIX=oled,no-back helix:<keymap>) $(info - make HELIX=oled,no-back helix:<keymap>)
$(info - make HELIX=oled,under helix:<keymap>) $(info - make HELIX=oled,under helix:<keymap>)
@@ -32,65 +34,76 @@ define HELIX_HELP_MSG
endef endef
ifneq ($(strip $(HELIX)),) ifneq ($(strip $(HELIX)),)
define HELIX_OPTION_PARSE
# parce 'oled' 'back' 'under' 'ios' etc.
$(if $(SHOW_PARCE),$(info parse .$1.)) #debug
ifeq ($(strip $1),help)
HELP=on
endif
ifneq ($(filter nooled no-oled,$(strip $1)),)
OLED_ENABLE = no
endif
ifeq ($(strip $1),oled)
OLED_ENABLE = yes
endif
ifneq ($(filter core-oled core_oled newoled new-oled olednew oled-new,$(strip $1)),)
OLED_ENABLE = yes
OLED_SELECT = core
endif
ifneq ($(filter local-oled local_oled oldoled old-oled oledold oled-old,$(strip $1)),)
OLED_ENABLE = yes
OLED_SELECT = local
endif
ifneq ($(filter noback no-back nounder no-under,$(strip $1)),)
LED_BACK_ENABLE = no
LED_UNDERGLOW_ENABLE = no
endif
ifeq ($(strip $1),back)
LED_BACK_ENABLE = yes
LED_UNDERGLOW_ENABLE = no
endif
ifeq ($(strip $1),under)
LED_BACK_ENABLE = no
LED_UNDERGLOW_ENABLE = yes
endif
ifneq ($(filter na no_ani no-ani,$(strip $1)),)
LED_ANIMATIONS = no
endif
ifeq ($(strip $1),ios)
IOS_DEVICE_ENABLE = yes
endif
ifneq ($(filter sc split-common split_common,$(strip $1)),)
SPLIT_KEYBOARD = yes
endif
ifneq ($(filter nosc no-sc no-split-common no-split_common,$(strip $1)),)
SPLIT_KEYBOARD = no
endif
ifeq ($(strip $1),scan)
# use DEBUG_MATRIX_SCAN_RATE
# see docs/newbs_testing_debugging.md
OPT_DEFS += -DDEBUG_MATRIX_SCAN_RATE
CONSOLE_ENABLE = yes
SHOW_VERBOSE_INFO = yes
endif
ifeq ($(strip $1),verbose)
SHOW_VERBOSE_INFO = yes
endif
ifeq ($(strip $1),lto)
LTO_ENABLE = yes
endif
ifneq ($(filter nolto no-lto no_lto,$(strip $1)),)
LTO_ENABLE = no
endif
endef # end of HELIX_OPTION_PARSE
COMMA=, COMMA=,
helix_option := $(subst $(COMMA), , $(HELIX)) $(eval $(foreach A_OPTION_NAME,$(subst $(COMMA), ,$(HELIX)), \
ifneq ($(filter help,$(helix_option)),) $(call HELIX_OPTION_PARSE,$(A_OPTION_NAME))))
$(eval $(call HELIX_HELP_MSG))
$(error ) ifeq ($(strip $(HELP)),on)
endif $(eval $(call HELIX_HELP_MSG))
ifneq ($(filter nooled,$(helix_option)),) $(error )
OLED_ENABLE = no
else ifneq ($(filter no-oled,$(helix_option)),)
OLED_ENABLE = no
else ifneq ($(filter oled,$(helix_option)),)
OLED_ENABLE = yes
endif
ifneq ($(filter noback,$(helix_option)),)
LED_BACK_ENABLE = no
LED_UNDERGLOW_ENABLE = no
else ifneq ($(filter no-back,$(helix_option)),)
LED_BACK_ENABLE = no
LED_UNDERGLOW_ENABLE = no
else ifneq ($(filter nounder,$(helix_option)),)
LED_BACK_ENABLE = no
LED_UNDERGLOW_ENABLE = no
else ifneq ($(filter no-under,$(helix_option)),)
LED_BACK_ENABLE = no
LED_UNDERGLOW_ENABLE = no
else ifneq ($(filter back,$(helix_option)),)
LED_BACK_ENABLE = yes
LED_UNDERGLOW_ENABLE = no
else ifneq ($(filter under,$(helix_option)),)
LED_BACK_ENABLE = no
LED_UNDERGLOW_ENABLE = yes
endif
ifneq ($(filter na,$(helix_option)),)
LED_ANIMATIONS = no
endif
ifneq ($(filter no_ani,$(helix_option)),)
LED_ANIMATIONS = no
endif
ifneq ($(filter no-ani,$(helix_option)),)
LED_ANIMATIONS = no
endif
ifneq ($(filter ios,$(helix_option)),)
IOS_DEVICE_ENABLE = yes
endif
ifneq ($(filter sc,$(helix_option)),)
SPLIT_KEYBOARD = yes
endif
ifneq ($(filter split-common,$(helix_option)),)
SPLIT_KEYBOARD = yes
endif
ifneq ($(filter scan,$(helix_option)),)
# use DEBUG_MATRIX_SCAN_RATE
# see docs/newbs_testing_debugging.md
OPT_DEFS += -DDEBUG_MATRIX_SCAN_RATE
CONSOLE_ENABLE = yes
SHOW_VERBOSE_INFO = yes
endif
ifeq ($(filter verbose,$(helix_option)), verbose)
SHOW_VERBOSE_INFO = yes
endif endif
SHOW_HELIX_OPTIONS = yes SHOW_HELIX_OPTIONS = yes
endif endif
@@ -142,12 +155,21 @@ ifeq ($(strip $(LED_ANIMATIONS)), yes)
endif endif
ifeq ($(strip $(OLED_ENABLE)), yes) ifeq ($(strip $(OLED_ENABLE)), yes)
SRC += local_drivers/i2c.c ifeq ($(strip $(OLED_SELECT)),core)
SRC += local_drivers/ssd1306.c OLED_DRIVER_ENABLE = yes
KEYBOARD_PATHS += $(HELIX_TOP_DIR)/local_drivers ifeq ($(strip $(LOCAL_GLCDFONT)), yes)
OPT_DEFS += -DOLED_ENABLE OPT_DEFS += -DOLED_FONT_H=\<helixfont.h\>
ifeq ($(strip $(LOCAL_GLCDFONT)), yes) else
OPT_DEFS += -DLOCAL_GLCDFONT OPT_DEFS += -DOLED_FONT_H=\"common/glcdfont.c\"
endif
else
SRC += local_drivers/i2c.c
SRC += local_drivers/ssd1306.c
KEYBOARD_PATHS += $(HELIX_TOP_DIR)/local_drivers
OPT_DEFS += -DOLED_ENABLE
ifeq ($(strip $(LOCAL_GLCDFONT)), yes)
OPT_DEFS += -DLOCAL_GLCDFONT
endif
endif endif
endif endif
+13
View File
@@ -0,0 +1,13 @@
# Helix rev2
A compact split ortholinear keyboard.
* Keyboard Maintainer: [yushakobo](https://github.com/yushakobo)
* Hardware Supported: Helix rev2 PCBs, Pro Micro
* Hardware Availability: [PCB & Case Data](https://github.com/MakotoKurauchi/helix)
Make example for this keyboard (after setting up your build environment):
make helix/rev2: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).
+16 -1
View File
@@ -18,13 +18,28 @@ void led_set_kb(uint8_t usb_led) {
} }
#endif #endif
bool is_mac_mode(void) {
// This is the opposite of the QMK standard, but we'll leave it for backwards compatibility.
return keymap_config.swap_lalt_lgui == false;
}
void set_mac_mode_kb(bool macmode) {
/* The result is the same as pressing the AG_NORM(=MAGIC_UNSWAP_ALT_GUI)/AG_SWAP(=MAGIC_SWAP_ALT_GUI) keys.
* see
* https://github.com/qmk/qmk_firmware/blob/fb4a6ad30ea7a648acd59793ed4a30c3a8d8dc32/quantum/process_keycode/process_magic.c#L123-L124
* https://github.com/qmk/qmk_firmware/blob/fb4a6ad30ea7a648acd59793ed4a30c3a8d8dc32/quantum/process_keycode/process_magic.c#L80-L81
*/
keymap_config.swap_lalt_lgui = keymap_config.swap_ralt_rgui = !macmode;
eeconfig_update_keymap(keymap_config.raw);
}
void matrix_init_kb(void) { void matrix_init_kb(void) {
// Each keymap.c should use is_keyboard_master() instead of is_master. // Each keymap.c should use is_keyboard_master() instead of is_master.
// But keep is_master for a while for backwards compatibility // But keep is_master for a while for backwards compatibility
// for the old keymap.c. // for the old keymap.c.
is_master = is_keyboard_master(); is_master = is_keyboard_master();
matrix_init_user(); matrix_init_user();
}; };
void keyboard_post_init_kb(void) { void keyboard_post_init_kb(void) {
+3
View File
@@ -2,6 +2,9 @@
#include "helix.h" #include "helix.h"
bool is_mac_mode(void);
void set_mac_mode_kb(bool macmode);
#ifndef SPLIT_KEYBOARD #ifndef SPLIT_KEYBOARD
extern bool is_helix_master(void); extern bool is_helix_master(void);
#define is_keyboard_master() is_helix_master() #define is_keyboard_master() is_helix_master()
+5
View File
@@ -8,3 +8,8 @@ LED_BACK_ENABLE = no # LED backlight (Enable WS2812 RGB underlight.)
LED_UNDERGLOW_ENABLE = no # LED underglow (Enable WS2812 RGB underlight.) LED_UNDERGLOW_ENABLE = no # LED underglow (Enable WS2812 RGB underlight.)
LED_ANIMATIONS = yes # LED animations LED_ANIMATIONS = yes # LED animations
IOS_DEVICE_ENABLE = no # connect to IOS device (iPad,iPhone) IOS_DEVICE_ENABLE = no # connect to IOS device (iPad,iPhone)
# If OLED_ENABLE is 'yes'
# If OLED_SELECT is 'core', use QMK standard oled_dirver.c.
# If OLED_SELECT is other than 'core', use helix/local_drivers/ssd1306.c.
OLED_SELECT = local
+7 -9
View File
@@ -21,15 +21,13 @@ bool is_mac_mode(void) {
} }
void set_mac_mode(bool macmode) { void set_mac_mode(bool macmode) {
if (macmode) { /* The result is the same as pressing the AG_NORM(=MAGIC_UNSWAP_ALT_GUI)/AG_SWAP(=MAGIC_SWAP_ALT_GUI) keys.
/* The result is the same as pressing the AG_NORM(=MAGIC_UNSWAP_ALT_GUI) key. */ * see
/* https://github.com/qmk/qmk_firmware/blob/fb4a6ad30ea7a648acd59793ed4a30c3a8d8dc32/quantum/process_keycode/process_magic.c#L123-L124 */ * https://github.com/qmk/qmk_firmware/blob/fb4a6ad30ea7a648acd59793ed4a30c3a8d8dc32/quantum/process_keycode/process_magic.c#L123-L124
keymap_config.swap_lalt_lgui = keymap_config.swap_ralt_rgui = false; * https://github.com/qmk/qmk_firmware/blob/fb4a6ad30ea7a648acd59793ed4a30c3a8d8dc32/quantum/process_keycode/process_magic.c#L80-L81
} else { */
/* The result is the same as pressing the AG_SWAP(=MAGIC_SWAP_ALT_GUI) key. */ keymap_config.swap_lalt_lgui = keymap_config.swap_ralt_rgui = !macmode;
/* https://github.com/qmk/qmk_firmware/blob/fb4a6ad30ea7a648acd59793ed4a30c3a8d8dc32/quantum/process_keycode/process_magic.c#L80-L81 */ eeconfig_update_keymap(keymap_config.raw);
keymap_config.swap_lalt_lgui = keymap_config.swap_ralt_rgui = true;
}
} }
void dip_switch_update_kb(uint8_t index, bool active) { void dip_switch_update_kb(uint8_t index, bool active) {
+7 -9
View File
@@ -21,15 +21,13 @@ bool is_mac_mode(void) {
} }
void set_mac_mode(bool macmode) { void set_mac_mode(bool macmode) {
if (macmode) { /* The result is the same as pressing the AG_NORM(=MAGIC_UNSWAP_ALT_GUI)/AG_SWAP(=MAGIC_SWAP_ALT_GUI) keys.
/* The result is the same as pressing the AG_NORM(=MAGIC_UNSWAP_ALT_GUI) key. */ * see
/* https://github.com/qmk/qmk_firmware/blob/fb4a6ad30ea7a648acd59793ed4a30c3a8d8dc32/quantum/process_keycode/process_magic.c#L123-L124 */ * https://github.com/qmk/qmk_firmware/blob/fb4a6ad30ea7a648acd59793ed4a30c3a8d8dc32/quantum/process_keycode/process_magic.c#L123-L124
keymap_config.swap_lalt_lgui = keymap_config.swap_ralt_rgui = false; * https://github.com/qmk/qmk_firmware/blob/fb4a6ad30ea7a648acd59793ed4a30c3a8d8dc32/quantum/process_keycode/process_magic.c#L80-L81
} else { */
/* The result is the same as pressing the AG_SWAP(=MAGIC_SWAP_ALT_GUI) key. */ keymap_config.swap_lalt_lgui = keymap_config.swap_ralt_rgui = !macmode;
/* https://github.com/qmk/qmk_firmware/blob/fb4a6ad30ea7a648acd59793ed4a30c3a8d8dc32/quantum/process_keycode/process_magic.c#L80-L81 */ eeconfig_update_keymap(keymap_config.raw);
keymap_config.swap_lalt_lgui = keymap_config.swap_ralt_rgui = true;
}
} }
void dip_switch_update_kb(uint8_t index, bool active) { void dip_switch_update_kb(uint8_t index, bool active) {
@@ -47,8 +47,8 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
/* COL2ROW, ROW2COL */ /* COL2ROW, ROW2COL */
#define DIODE_DIRECTION COL2ROW #define DIODE_DIRECTION COL2ROW
#define ENCODERS_PAD_A { B4 } #define ENCODERS_PAD_A { B3 }
#define ENCODERS_PAD_B { B3 } #define ENCODERS_PAD_B { B4 }
/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ /* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
#define DEBOUNCE 5 #define DEBOUNCE 5
@@ -26,6 +26,25 @@
* The second converts the arguments into a two-dimensional array which * The second converts the arguments into a two-dimensional array which
* represents the switch matrix. * represents the switch matrix.
*/ */
#define LAYOUT_ansi( \
K000, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014, E001, \
K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K115, \
K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, K215, \
K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K315, \
K400, K402, K403, K404, K405, K406, K407, K408, K409, K410, K411, K412, K414, \
K500, K501, K503, K505, K509, K511, K512, K514, K515 \
) \
{ \
{ K000, ____, 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, ____, K115, ____}, \
{ K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, ____, K215, ____}, \
{ K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, ____, ____, K315, ____}, \
{ K400, ____, K402, K403, K404, K405, K406, K407, K408, K409, K410, K411, K412, ____, K414, ____, ____}, \
{ K500, K501, K503, ____, ____, K505, ____, ____, ____, K509, ____, K511, K512, ____, K514, K515, ____}, \
{ ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, E001}, \
}
#define LAYOUT_all( \ #define LAYOUT_all( \
K000, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014, E001, \ K000, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014, E001, \
K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114, K115, \ K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114, K115, \
@@ -4,6 +4,9 @@
"width": 16.25, "width": 16.25,
"height": 6.5, "height": 6.5,
"layouts": { "layouts": {
"LAYOUT_ansi": {
"layout": [{"label":"0,0", "x":0, "y":0}, {"label":"0,2", "x":1.25, "y":0}, {"label":"0,3", "x":2.25, "y":0}, {"label":"0,4", "x":3.25, "y":0}, {"label":"0,5", "x":4.25, "y":0}, {"label":"0,6", "x":5.5, "y":0}, {"label":"0,7", "x":6.5, "y":0}, {"label":"0,8", "x":7.5, "y":0}, {"label":"0,9", "x":8.5, "y":0}, {"label":"0,10", "x":9.75, "y":0}, {"label":"0,11", "x":10.75, "y":0}, {"label":"0,12", "x":11.75, "y":0}, {"label":"0,13", "x":12.75, "y":0}, {"label":"0,14", "x":14, "y":0}, {"label":"6,16", "x":15.25, "y":0}, {"label":"1,0", "x":0, "y":1.25}, {"label":"1,1", "x":1, "y":1.25}, {"label":"1,2", "x":2, "y":1.25}, {"label":"1,3", "x":3, "y":1.25}, {"label":"1,4", "x":4, "y":1.25}, {"label":"1,5", "x":5, "y":1.25}, {"label":"1,6", "x":6, "y":1.25}, {"label":"1,7", "x":7, "y":1.25}, {"label":"1,8", "x":8, "y":1.25}, {"label":"1,9", "x":9, "y":1.25}, {"label":"1,10", "x":10, "y":1.25}, {"label":"1,11", "x":11, "y":1.25}, {"label":"1,12", "x":12, "y":1.25}, {"label":"1,13", "x":13, "y":1.25, "w":2}, {"label":"1,15", "x":15.25, "y":1.25}, {"label":"2,0", "x":0, "y":2.25, "w":1.5}, {"label":"2,1", "x":1.5, "y":2.25}, {"label":"2,2", "x":2.5, "y":2.25}, {"label":"2,3", "x":3.5, "y":2.25}, {"label":"2,4", "x":4.5, "y":2.25}, {"label":"2,5", "x":5.5, "y":2.25}, {"label":"2,6", "x":6.5, "y":2.25}, {"label":"2,7", "x":7.5, "y":2.25}, {"label":"2,8", "x":8.5, "y":2.25}, {"label":"2,9", "x":9.5, "y":2.25}, {"label":"2,10", "x":10.5, "y":2.25}, {"label":"2,11", "x":11.5, "y":2.25}, {"label":"2,12", "x":12.5, "y":2.25}, {"label":"2,13", "x":13.5, "y":2.25, "w":1.5}, {"label":"2,15", "x":15.25, "y":2.25}, {"label":"3,0", "x":0, "y":3.25, "w":1.75}, {"label":"3,1", "x":1.75, "y":3.25}, {"label":"3,2", "x":2.75, "y":3.25}, {"label":"3,3", "x":3.75, "y":3.25}, {"label":"3,4", "x":4.75, "y":3.25}, {"label":"3,5", "x":5.75, "y":3.25}, {"label":"3,6", "x":6.75, "y":3.25}, {"label":"3,7", "x":7.75, "y":3.25}, {"label":"3,8", "x":8.75, "y":3.25}, {"label":"3,9", "x":9.75, "y":3.25}, {"label":"3,10", "x":10.75, "y":3.25}, {"label":"3,11", "x":11.75, "y":3.25}, {"label":"3,12", "x":12.75, "y":3.25, "w":2.25}, {"label":"3,15", "x":15.25, "y":3.25}, {"label":"4,0", "x":0, "y":4.25, "w":2.25}, {"label":"4,2", "x":2.25, "y":4.25}, {"label":"4,3", "x":3.25, "y":4.25}, {"label":"4,4", "x":4.25, "y":4.25}, {"label":"4,5", "x":5.25, "y":4.25}, {"label":"4,6", "x":6.25, "y":4.25}, {"label":"4,7", "x":7.25, "y":4.25}, {"label":"4,8", "x":8.25, "y":4.25}, {"label":"4,9", "x":9.25, "y":4.25}, {"label":"4,10", "x":10.25, "y":4.25}, {"label":"4,11", "x":11.25, "y":4.25}, {"label":"4,12", "x":12.25, "y":4.25, "w":1.75}, {"label":"4,14", "x":14.25, "y":4.5}, {"label":"5,0", "x":0, "y":5.25, "w":1.25}, {"label":"5,1", "x":1.25, "y":5.25, "w":1.25}, {"label":"5,2", "x":2.5, "y":5.25, "w":1.25}, {"label":"5,5", "x":3.75, "y":5.25, "w":6.25}, {"label":"5,9", "x":10, "y":5.25, "w":1.5}, {"label":"5,11", "x":11.5, "y":5.25, "w":1.5}, {"label":"5,12", "x":13.25, "y":5.5}, {"label":"5,14", "x":14.25, "y":5.5}, {"label":"5,15", "x":15.25, "y":5.5}]
},
"LAYOUT_all": { "LAYOUT_all": {
"layout": [{"label":"0,0", "x":0, "y":0}, {"label":"0,2", "x":1.25, "y":0}, {"label":"0,3", "x":2.25, "y":0}, {"label":"0,4", "x":3.25, "y":0}, {"label":"0,5", "x":4.25, "y":0}, {"label":"0,6", "x":5.5, "y":0}, {"label":"0,7", "x":6.5, "y":0}, {"label":"0,8", "x":7.5, "y":0}, {"label":"0,9", "x":8.5, "y":0}, {"label":"0,10", "x":9.75, "y":0}, {"label":"0,11", "x":10.75, "y":0}, {"label":"0,12", "x":11.75, "y":0}, {"label":"0,13", "x":12.75, "y":0}, {"label":"0,14", "x":14, "y":0}, {"label":"6,16", "x":15.25, "y":0}, {"label":"1,0", "x":0, "y":1.25}, {"label":"1,1", "x":1, "y":1.25}, {"label":"1,2", "x":2, "y":1.25}, {"label":"1,3", "x":3, "y":1.25}, {"label":"1,4", "x":4, "y":1.25}, {"label":"1,5", "x":5, "y":1.25}, {"label":"1,6", "x":6, "y":1.25}, {"label":"1,7", "x":7, "y":1.25}, {"label":"1,8", "x":8, "y":1.25}, {"label":"1,9", "x":9, "y":1.25}, {"label":"1,10", "x":10, "y":1.25}, {"label":"1,11", "x":11, "y":1.25}, {"label":"1,12", "x":12, "y":1.25}, {"label":"1,13", "x":13, "y":1.25}, {"label":"1,14", "x":14, "y":1.25}, {"label":"1,15", "x":15.25, "y":1.25}, {"label":"2,0", "x":0, "y":2.25, "w":1.5}, {"label":"2,1", "x":1.5, "y":2.25}, {"label":"2,2", "x":2.5, "y":2.25}, {"label":"2,3", "x":3.5, "y":2.25}, {"label":"2,4", "x":4.5, "y":2.25}, {"label":"2,5", "x":5.5, "y":2.25}, {"label":"2,6", "x":6.5, "y":2.25}, {"label":"2,7", "x":7.5, "y":2.25}, {"label":"2,8", "x":8.5, "y":2.25}, {"label":"2,9", "x":9.5, "y":2.25}, {"label":"2,10", "x":10.5, "y":2.25}, {"label":"2,11", "x":11.5, "y":2.25}, {"label":"2,12", "x":12.5, "y":2.25}, {"label":"2,13", "x":13.5, "y":2.25, "w":1.5}, {"label":"2,15", "x":15.25, "y":2.25}, {"label":"3,0", "x":0, "y":3.25, "w":1.75}, {"label":"3,1", "x":1.75, "y":3.25}, {"label":"3,2", "x":2.75, "y":3.25}, {"label":"3,3", "x":3.75, "y":3.25}, {"label":"3,4", "x":4.75, "y":3.25}, {"label":"3,5", "x":5.75, "y":3.25}, {"label":"3,6", "x":6.75, "y":3.25}, {"label":"3,7", "x":7.75, "y":3.25}, {"label":"3,8", "x":8.75, "y":3.25}, {"label":"3,9", "x":9.75, "y":3.25}, {"label":"3,10", "x":10.75, "y":3.25}, {"label":"3,11", "x":11.75, "y":3.25}, {"label":"3,12", "x":12.75, "y":3.25, "w":2.25}, {"label":"3,15", "x":15.25, "y":3.25}, {"label":"4,0", "x":0, "y":4.25, "w":1.25}, {"label":"4,1", "x":1.25, "y":4.25}, {"label":"4,2", "x":2.25, "y":4.25}, {"label":"4,3", "x":3.25, "y":4.25}, {"label":"4,4", "x":4.25, "y":4.25}, {"label":"4,5", "x":5.25, "y":4.25}, {"label":"4,6", "x":6.25, "y":4.25}, {"label":"4,7", "x":7.25, "y":4.25}, {"label":"4,8", "x":8.25, "y":4.25}, {"label":"4,9", "x":9.25, "y":4.25}, {"label":"4,10", "x":10.25, "y":4.25}, {"label":"4,11", "x":11.25, "y":4.25}, {"label":"4,12", "x":12.25, "y":4.25, "w":1.75}, {"label":"4,14", "x":14.25, "y":4.5}, {"label":"5,0", "x":0, "y":5.25, "w":1.25}, {"label":"5,1", "x":1.25, "y":5.25, "w":1.25}, {"label":"5,2", "x":2.5, "y":5.25, "w":1.25}, {"label":"5,5", "x":3.75, "y":5.25, "w":6.25}, {"label":"5,9", "x":10, "y":5.25, "w":1.5}, {"label":"5,11", "x":11.5, "y":5.25, "w":1.5}, {"label":"5,12", "x":13.25, "y":5.5}, {"label":"5,14", "x":14.25, "y":5.5}, {"label":"5,15", "x":15.25, "y":5.5}] "layout": [{"label":"0,0", "x":0, "y":0}, {"label":"0,2", "x":1.25, "y":0}, {"label":"0,3", "x":2.25, "y":0}, {"label":"0,4", "x":3.25, "y":0}, {"label":"0,5", "x":4.25, "y":0}, {"label":"0,6", "x":5.5, "y":0}, {"label":"0,7", "x":6.5, "y":0}, {"label":"0,8", "x":7.5, "y":0}, {"label":"0,9", "x":8.5, "y":0}, {"label":"0,10", "x":9.75, "y":0}, {"label":"0,11", "x":10.75, "y":0}, {"label":"0,12", "x":11.75, "y":0}, {"label":"0,13", "x":12.75, "y":0}, {"label":"0,14", "x":14, "y":0}, {"label":"6,16", "x":15.25, "y":0}, {"label":"1,0", "x":0, "y":1.25}, {"label":"1,1", "x":1, "y":1.25}, {"label":"1,2", "x":2, "y":1.25}, {"label":"1,3", "x":3, "y":1.25}, {"label":"1,4", "x":4, "y":1.25}, {"label":"1,5", "x":5, "y":1.25}, {"label":"1,6", "x":6, "y":1.25}, {"label":"1,7", "x":7, "y":1.25}, {"label":"1,8", "x":8, "y":1.25}, {"label":"1,9", "x":9, "y":1.25}, {"label":"1,10", "x":10, "y":1.25}, {"label":"1,11", "x":11, "y":1.25}, {"label":"1,12", "x":12, "y":1.25}, {"label":"1,13", "x":13, "y":1.25}, {"label":"1,14", "x":14, "y":1.25}, {"label":"1,15", "x":15.25, "y":1.25}, {"label":"2,0", "x":0, "y":2.25, "w":1.5}, {"label":"2,1", "x":1.5, "y":2.25}, {"label":"2,2", "x":2.5, "y":2.25}, {"label":"2,3", "x":3.5, "y":2.25}, {"label":"2,4", "x":4.5, "y":2.25}, {"label":"2,5", "x":5.5, "y":2.25}, {"label":"2,6", "x":6.5, "y":2.25}, {"label":"2,7", "x":7.5, "y":2.25}, {"label":"2,8", "x":8.5, "y":2.25}, {"label":"2,9", "x":9.5, "y":2.25}, {"label":"2,10", "x":10.5, "y":2.25}, {"label":"2,11", "x":11.5, "y":2.25}, {"label":"2,12", "x":12.5, "y":2.25}, {"label":"2,13", "x":13.5, "y":2.25, "w":1.5}, {"label":"2,15", "x":15.25, "y":2.25}, {"label":"3,0", "x":0, "y":3.25, "w":1.75}, {"label":"3,1", "x":1.75, "y":3.25}, {"label":"3,2", "x":2.75, "y":3.25}, {"label":"3,3", "x":3.75, "y":3.25}, {"label":"3,4", "x":4.75, "y":3.25}, {"label":"3,5", "x":5.75, "y":3.25}, {"label":"3,6", "x":6.75, "y":3.25}, {"label":"3,7", "x":7.75, "y":3.25}, {"label":"3,8", "x":8.75, "y":3.25}, {"label":"3,9", "x":9.75, "y":3.25}, {"label":"3,10", "x":10.75, "y":3.25}, {"label":"3,11", "x":11.75, "y":3.25}, {"label":"3,12", "x":12.75, "y":3.25, "w":2.25}, {"label":"3,15", "x":15.25, "y":3.25}, {"label":"4,0", "x":0, "y":4.25, "w":1.25}, {"label":"4,1", "x":1.25, "y":4.25}, {"label":"4,2", "x":2.25, "y":4.25}, {"label":"4,3", "x":3.25, "y":4.25}, {"label":"4,4", "x":4.25, "y":4.25}, {"label":"4,5", "x":5.25, "y":4.25}, {"label":"4,6", "x":6.25, "y":4.25}, {"label":"4,7", "x":7.25, "y":4.25}, {"label":"4,8", "x":8.25, "y":4.25}, {"label":"4,9", "x":9.25, "y":4.25}, {"label":"4,10", "x":10.25, "y":4.25}, {"label":"4,11", "x":11.25, "y":4.25}, {"label":"4,12", "x":12.25, "y":4.25, "w":1.75}, {"label":"4,14", "x":14.25, "y":4.5}, {"label":"5,0", "x":0, "y":5.25, "w":1.25}, {"label":"5,1", "x":1.25, "y":5.25, "w":1.25}, {"label":"5,2", "x":2.5, "y":5.25, "w":1.25}, {"label":"5,5", "x":3.75, "y":5.25, "w":6.25}, {"label":"5,9", "x":10, "y":5.25, "w":1.5}, {"label":"5,11", "x":11.5, "y":5.25, "w":1.5}, {"label":"5,12", "x":13.25, "y":5.5}, {"label":"5,14", "x":14.25, "y":5.5}, {"label":"5,15", "x":15.25, "y":5.5}]
} }
@@ -18,21 +18,21 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = LAYOUT_all( [0] = LAYOUT_ansi(
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_F13, KC_MPLY, 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_F13, 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_BSLS, KC_BSLS, KC_PGUP, 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_BSLS, KC_PGUP,
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSPC, KC_PGDN, 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_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, MO(1), 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, MO(1),
KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RCTRL, KC_LEFT, KC_DOWN, KC_RGHT KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RCTRL, KC_LEFT, KC_DOWN, KC_RGHT
), ),
[1] = LAYOUT_all( [1] = LAYOUT_ansi(
RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______ _______, _______, _______, _______, _______, _______, _______, _______, _______
), ),
}; };
@@ -0,0 +1,20 @@
/*
Copyright 2020 zvecr<git@zvecr.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
#define TAP_CODE_DELAY 10
#define ENCODER_RESOLUTION 2
@@ -0,0 +1,46 @@
/*
Copyright 2020 zvecr<git@zvecr.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
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = 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_F13, 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_BSLS, KC_BSLS, KC_PGUP,
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSPC, 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, MO(1),
KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RCTRL, KC_LEFT, KC_DOWN, KC_RGHT
),
[1] = LAYOUT_all(
RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______
),
};
void encoder_update_user(uint8_t index, bool clockwise) {
if (clockwise) {
tap_code(KC_VOLU);
} else {
tap_code(KC_VOLD);
}
}
+47
View File
@@ -0,0 +1,47 @@
/* Copyright 2020 Alabahuy
* 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 0x414C
#define PRODUCT_ID 0x0045
#define DEVICE_VER 0x0001
#define MANUFACTURER Alabahuy
#define PRODUCT Rart45
/* key matrix size */
#define MATRIX_ROWS 9
#define MATRIX_COLS 6
#define MATRIX_ROW_PINS { D1, C3, C1, B1, D0, C2, C0, D7, B0 }
#define MATRIX_COL_PINS { D6, D4, B2, B5, B4, B3 }
#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
#define LED_CAPS_LOCK_PIN D5
#define LED_PIN_ON_STATE 0
/* 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
/* Locking resynchronize hack */
#define LOCKING_RESYNC_ENABLE
+70
View File
@@ -0,0 +1,70 @@
{
"keyboard_name": "Rartlice",
"url": "",
"maintainer": "Alabahuy",
"width": 13,
"height": 5,
"layouts": {
"LAYOUT_all": {
"layout": [
{ "x": 0, "y": 0 },
{ "x": 1, "y": 0 },
{ "x": 2, "y": 0 },
{ "x": 3, "y": 0 },
{ "x": 4, "y": 0 },
{ "x": 5, "y": 0 },
{ "x": 7, "y": 0 },
{ "x": 8, "y": 0 },
{ "x": 9, "y": 0 },
{ "x": 10, "y": 0 },
{ "x": 11, "y": 0 },
{ "x": 12, "y": 0 },
{"x": 0, "y": 1 },
{"x": 1, "y": 1 },
{"x": 2, "y": 1 },
{"x": 3, "y": 1 },
{"x": 4, "y": 1 },
{"x": 5, "y": 1 },
{"x": 7, "y": 1 },
{"x": 8, "y": 1 },
{"x": 9, "y": 1 },
{"x": 10, "y": 1 },
{"x": 11, "y": 1 },
{"x": 12, "y": 1 },
{"x": 0, "y": 2 },
{"x": 1, "y": 2 },
{"x": 2, "y": 2 },
{"x": 3, "y": 2 },
{"x": 4, "y": 2 },
{"x": 5, "y": 2 },
{"x": 7, "y": 2 },
{"x": 8, "y": 2 },
{"x": 9, "y": 2 },
{"x": 10, "y": 2 },
{"x": 11, "y": 2 },
{"x": 12, "y": 2 },
{"x": 0, "y": 3 },
{"x": 1, "y": 3 },
{"x": 2, "y": 3 },
{"x": 3, "y": 3 },
{"x": 4, "y": 3 },
{"x": 5, "y": 3 },
{"x": 7, "y": 3 },
{"x": 8, "y": 3 },
{"x": 9, "y": 3 },
{"x": 10, "y": 3 },
{"x": 11, "y": 3 },
{"x": 12, "y": 3 },
{"x": 2.875, "y": 4, "w":1.25},
{"x": 4.125, "y": 4, "w":1.25 },
{"x": 5.375, "y": 4, "w":2.25 },
{"x": 7.625, "y": 4, "w":1.25 },
{"x": 8.875, "y": 4, "w":1.25 }
]
}
}
}
@@ -0,0 +1,43 @@
/* Copyright 2020 Alabahuy
* 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(
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL,
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_BSLS,
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT,
KC_LCTL, MO(1), KC_SPC, MO(2), KC_LALT
),
[1] = LAYOUT_all(
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_LCTL, _______, KC_SPC, _______, KC_LALT
),
[2] = LAYOUT_all(
RESET, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
KC_LCTL, _______, KC_SPC, _______, KC_LALT
)
};
@@ -0,0 +1,50 @@
/* Copyright 2020 Alabahuy
* 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(
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL,
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_BSLS,
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT,
KC_LCTL, MO(1), KC_SPC, MO(2), KC_LALT
),
[1] = LAYOUT_all(
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_LCTL, _______, KC_SPC, _______, KC_LALT
),
[2] = LAYOUT_all(
RESET, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
KC_LCTL, _______, KC_SPC, _______, KC_LALT
),
[3] = LAYOUT_all(
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______
)
};
@@ -0,0 +1 @@
VIA_ENABLE = yes
+15
View File
@@ -0,0 +1,15 @@
/* Copyright 2020 Alabahuy
* 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 "rart45.h"
+44
View File
@@ -0,0 +1,44 @@
/* Copyright 2020 Alabahuy
* 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, K40, K01, K41, K02, K42, K03, K43, K04, K44, K05, K45, \
K10, K50, K11, K51, K12, K52, K13, K53, K14, K54, K15, K55, \
K20, K60, K21, K61, K22, K62, K23, K63, K24, K64, K25, K65, \
K30, K70, K31, K71, K32, K72, K33, K73, K34, K74, K35, K75, \
K80, K81, K82, K83, K84 \
) \
{ \
{ K00, K01, K02, K03, K04, K05 }, \
{ K10, K11, K12, K13, K14, K15 }, \
{ K20, K21, K22, K23, K24, K25 }, \
{ K30, K31, K32, K33, K34, K35 }, \
{ K40, K41, K42, K43, K44, K45 }, \
{ K50, K51, K52, K53, K54, K55 }, \
{ K60, K61, K62, K63, K64, K65 }, \
{ K70, K71, K72, K73, K74, K75 }, \
{ K80, K81, K82, K83, K84, KC_NO }, \
}
+23
View File
@@ -0,0 +1,23 @@
# Rart45
![TOP](https://user-images.githubusercontent.com/30220306/100749285-0fdd8500-3417-11eb-9b06-11a04f9de264.png)
A 40% Ergo Layout Mechanical Keyboard with Atmega328p inspired by the Reviung41 by gtips and the Plaid by hsgw, based on [IMKG](https://www.facebook.com/groups/indomechanicalkeyboard/) (Indonesia Mechanical Keyboard Group).
* Keyboard Maintainer: [Alabahuy](https://github.com/alabahuy)
* Hardware Supported: RART45 PCB, Mini USB, ATMEGA328p with vusb
* Hardware Availability: Private GB
Make example for this keyboard (after setting up your build environment):
make rart/rart45:default
Flashing example for this keyboard:
make rart/rart45:default:flash
## Bootloader
use usbasploader in hgsw repository.
https://github.com/hsgw/USBaspLoader/tree/plaid
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).
+22
View File
@@ -0,0 +1,22 @@
# MCU name
MCU = atmega328p
# Bootloader selection
BOOTLOADER = USBasp
# 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 = no # 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
+4 -2
View File
@@ -2,10 +2,12 @@
![XD75](https://cdn.shopify.com/s/files/1/2711/4238/products/HTB1MzOISXXXXXXgXpXXq6xXFXXXO_1024x1024.jpg) ![XD75](https://cdn.shopify.com/s/files/1/2711/4238/products/HTB1MzOISXXXXXXgXpXXq6xXFXXXO_1024x1024.jpg)
The XD75Re is a 15x5 full-grid ortholinear keyboard manufactured by XIUDI. This port of the QMK firmware is my first shot at using QMK, so if you see any features done wrong (or just plain missing), feel free to fix them and put in a pull request! The XD75 is a 15x5 full-grid ortholinear keyboard manufactured by XIUDI. Available in two different versions: XD75Re with hot swap switch sockets and XD75Am with Alps+MX Stem support that needs soldering.
This port of the QMK firmware is my first shot at using QMK, so if you see any features done wrong (or just plain missing), feel free to fix them and put in a pull request!
* Keyboard Maintainer: [The QMK Community](https://github.com/qmk) * Keyboard Maintainer: [The QMK Community](https://github.com/qmk)
* Hardware Supported: XD75Re * Hardware Supported: XD75Re, XD75Am
* Hardware Availability: [KPrepublic](https://kprepublic.com/products/xd75re-xd75am-xd75-xiudi-60-custom-keyboard-pcb), [AliExpress](https://www.aliexpress.com/item/xd75re-Custom-Mechanical-Keyboard-75-keys-TKG-TOOLS-Underglow-RGB-PCB-GH60-60-programmed-gh60-kle/32818745981.html) * Hardware Availability: [KPrepublic](https://kprepublic.com/products/xd75re-xd75am-xd75-xiudi-60-custom-keyboard-pcb), [AliExpress](https://www.aliexpress.com/item/xd75re-Custom-Mechanical-Keyboard-75-keys-TKG-TOOLS-Underglow-RGB-PCB-GH60-60-programmed-gh60-kle/32818745981.html)
Make example for this keyboard (after setting up your build environment): Make example for this keyboard (after setting up your build environment):
+5 -2
View File
@@ -60,7 +60,10 @@
#define I2C1_TIMINGR_SCLL 9U #define I2C1_TIMINGR_SCLL 9U
// I2C EEPROM // I2C EEPROM
#define EEPROM_I2C_CAT24C512 // 24LC64
#define EEPROM_I2C_24LC64
// Dynamic EEPROM // Dynamic EEPROM
#define DYNAMIC_KEYMAP_EEPROM_MAX_ADDR 65535 // Something sensible or else VIA may crash
// Users may enable more if they wish
#define DYNAMIC_KEYMAP_EEPROM_MAX_ADDR 4095
+1
View File
@@ -14,6 +14,7 @@ from . import compile
from . import config from . import config
from . import docs from . import docs
from . import doctor from . import doctor
from . import fileformat
from . import flash from . import flash
from . import generate from . import generate
from . import hello from . import hello
+2 -2
View File
@@ -23,8 +23,6 @@ def cformat_run(files, all_files):
if not files: if not files:
cli.log.warn('No changes detected. Use "qmk cformat -a" to format all files') cli.log.warn('No changes detected. Use "qmk cformat -a" to format all files')
return False return False
if files and all_files:
cli.log.warning('Filenames passed with -a, only formatting: %s', ','.join(files))
subprocess.run(clang_format + [file for file in files], check=True) subprocess.run(clang_format + [file for file in files], check=True)
cli.log.info('Successfully formatted the C code.') cli.log.info('Successfully formatted the C code.')
@@ -48,6 +46,8 @@ def cformat(cli):
# Find the list of files to format # Find the list of files to format
if cli.args.files: if cli.args.files:
files.extend(normpath(file) for file in cli.args.files) files.extend(normpath(file) for file in cli.args.files)
if cli.args.all_files:
cli.log.warning('Filenames passed with -a, only formatting: %s', ','.join(map(str, files)))
# If -a is specified # If -a is specified
elif cli.args.all_files: elif cli.args.all_files:
all_files = c_source_files(core_dirs) all_files = c_source_files(core_dirs)
+13
View File
@@ -0,0 +1,13 @@
"""Format files according to QMK's style.
"""
from milc import cli
import subprocess
@cli.subcommand("Format files according to QMK's style.", hidden=True)
def fileformat(cli):
"""Run several general formatting commands.
"""
dos2unix = subprocess.run(['bash', '-c', 'git ls-files -z | xargs -0 dos2unix'])
return dos2unix.returncode
+1
View File
@@ -1,2 +1,3 @@
from . import api from . import api
from . import docs from . import docs
from . import rgb_breathe_table
@@ -0,0 +1,79 @@
"""Generate rgblight_breathe_table.h
"""
import math
from argparse import ArgumentTypeError
from milc import cli
import qmk.path
def breathing_center(value):
value = float(value)
if value >= 1 and value <= 2.7:
return value
else:
raise ArgumentTypeError('Breathing center must be between 1 and 2.7')
def breathing_max(value):
value = int(value)
if value in range(0, 256):
return value
else:
raise ArgumentTypeError('Breathing max must be between 0 and 255')
@cli.argument('-c', '--center', arg_only=True, type=breathing_center, default=1.85, help='The breathing center value, from 1 to 2.7. Default: 1.85')
@cli.argument('-m', '--max', arg_only=True, type=breathing_max, default=255, help='The breathing maximum value, from 0 to 255. Default: 255')
@cli.argument('-o', '--output', arg_only=True, type=qmk.path.normpath, help='File to write to')
@cli.argument('-q', '--quiet', arg_only=True, action='store_true', help='Quiet mode, only output error messages')
@cli.subcommand('Generates an RGB Light breathing table header.')
def generate_rgb_breathe_table(cli):
"""Generate a rgblight_breathe_table.h file containing a breathing LUT for RGB Lighting (Underglow) feature.
"""
breathe_values = [0] * 256
for pos in range(0, 256):
breathe_values[pos] = (int)((math.exp(math.sin((pos/255) * math.pi)) - cli.args.center / math.e) * (cli.args.max / (math.e - 1 / math.e))) # noqa: yapf insists there be no whitespace around /
values_template = ''
for s in range(0, 3):
step = 1 << s
values_template += '#if RGBLIGHT_BREATHE_TABLE_SIZE == {}\n'.format(256 >> s)
for pos in range(0, 256, step):
values_template += ' ' if pos % 8 == 0 else ''
values_template += '0x{:02X}'.format(breathe_values[pos])
values_template += ',' if (pos + step) < 256 else ''
values_template += '\n' if (pos+step) % 8 == 0 else ' ' # noqa: yapf insists there be no whitespace around +
values_template += '#endif'
values_template += '\n\n' if s < 2 else ''
table_template = '''#pragma once
#define RGBLIGHT_EFFECT_BREATHE_TABLE
// clang-format off
// Breathing center: {0:.2f}
// Breathing max: {1:d}
const uint8_t PROGMEM rgblight_effect_breathe_table[] = {{
{2}
}};
static const int table_scale = 256 / sizeof(rgblight_effect_breathe_table);
'''.format(cli.args.center, cli.args.max, values_template)
if cli.args.output:
cli.args.output.parent.mkdir(parents=True, exist_ok=True)
if cli.args.output.exists():
cli.args.output.replace(cli.args.output.name + '.bak')
cli.args.output.write_text(table_template)
if not cli.args.quiet:
cli.log.info('Wrote header to %s.', cli.args.output)
else:
print(table_template)
@@ -190,3 +190,10 @@ def test_clean():
result = check_subcommand('clean', '-a') result = check_subcommand('clean', '-a')
check_returncode(result) check_returncode(result)
assert result.stdout.count('done') == 2 assert result.stdout.count('done') == 2
def test_generate_rgb_breathe_table():
result = check_subcommand("generate-rgb-breathe-table", "-c", "1.2", "-m", "127")
check_returncode(result)
assert 'Breathing center: 1.2' in result.stdout
assert 'Breathing max: 127' in result.stdout
@@ -19,8 +19,8 @@
* generator plugin. Do not edit manually. * generator plugin. Do not edit manually.
*/ */
#include "hal.h" #include <hal.h>
#include "stm32_gpio.h" #include <stm32_gpio.h>
/*===========================================================================*/ /*===========================================================================*/
/* Driver local definitions. */ /* Driver local definitions. */
@@ -13,7 +13,7 @@
See the License for the specific language governing permissions and See the License for the specific language governing permissions and
limitations under the License. limitations under the License.
*/ */
#include "hal.h" #include <hal.h>
#if HAL_USE_PAL || defined(__DOXYGEN__) #if HAL_USE_PAL || defined(__DOXYGEN__)
/** /**
@@ -14,7 +14,7 @@
limitations under the License. limitations under the License.
*/ */
#include "hal.h" #include <hal.h>
// Value to place in RTC backup register 10 for persistent bootloader mode // Value to place in RTC backup register 10 for persistent bootloader mode
#define RTC_BOOTLOADER_FLAG 0x424C #define RTC_BOOTLOADER_FLAG 0x424C
+2 -2
View File
@@ -15,8 +15,8 @@
*/ */
#include "audio.h" #include "audio.h"
#include "ch.h" #include <ch.h>
#include "hal.h" #include <hal.h>
#include <string.h> #include <string.h>
#include "print.h" #include "print.h"
+2 -2
View File
@@ -19,8 +19,8 @@
# include <avr/interrupt.h> # include <avr/interrupt.h>
# include <avr/pgmspace.h> # include <avr/pgmspace.h>
#else #else
# include "ch.h" # include <ch.h>
# include "hal.h" # include <hal.h>
#endif #endif
#ifndef LUTS_H #ifndef LUTS_H
+3 -3
View File
@@ -15,10 +15,10 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include <avr/interrupt.h> #include <avr/interrupt.h>
#include <avr/io.h> #include <avr/io.h>
#include <timer.h> #include "timer.h"
#include <fauxclicky.h> #include "fauxclicky.h"
#include <stdbool.h> #include <stdbool.h>
#include <musical_notes.h> #include "musical_notes.h"
bool fauxclicky_enabled = true; bool fauxclicky_enabled = true;
uint16_t note_start = 0; uint16_t note_start = 0;
+1 -1
View File
@@ -18,7 +18,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#endif #endif
#include "musical_notes.h" #include "musical_notes.h"
#include "stdbool.h" #include <stdbool.h>
__attribute__((weak)) float fauxclicky_pressed_note[2] = MUSICAL_NOTE(_D4, 0.25); __attribute__((weak)) float fauxclicky_pressed_note[2] = MUSICAL_NOTE(_D4, 0.25);
__attribute__((weak)) float fauxclicky_released_note[2] = MUSICAL_NOTE(_C4, 0.125); __attribute__((weak)) float fauxclicky_released_note[2] = MUSICAL_NOTE(_C4, 0.125);
+1 -1
View File
@@ -25,7 +25,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
# include <avr/pgmspace.h> # include <avr/pgmspace.h>
#elif defined PROTOCOL_CHIBIOS #elif defined PROTOCOL_CHIBIOS
// We need to ensure that chibios is include before redefining reset // We need to ensure that chibios is include before redefining reset
# include "ch.h" # include <ch.h>
#endif #endif
#include "keycode.h" #include "keycode.h"
#include "action_macro.h" #include "action_macro.h"
@@ -149,8 +149,8 @@
// Row 3 // Row 3
#define CA_DEG ALGR(CA_SCLN) // ° #define CA_DEG ALGR(CA_SCLN) // °
// Row 4 // Row 4
#define CA_LDAQ ALGR(CA_X) // « #define CA_LDAQ ALGR(CA_Z) // «
#define CA_RDAQ ALGR(CA_C) // » #define CA_RDAQ ALGR(CA_X) // »
#define CA_LABK ALGR(CA_COMM) // < #define CA_LABK ALGR(CA_COMM) // <
#define CA_RABK ALGR(CA_DOT) // > #define CA_RABK ALGR(CA_DOT) // >
+2 -2
View File
@@ -14,8 +14,8 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>. * along with this program. If not, see <http://www.gnu.org/licenses/>.
*/ */
#include "inttypes.h" #include <inttypes.h>
#include "stdint.h" #include <stdint.h>
#include "process_key_lock.h" #include "process_key_lock.h"
#define BV_64(shift) (((uint64_t)1) << (shift)) #define BV_64(shift) (((uint64_t)1) << (shift))
+1 -1
View File
@@ -21,7 +21,7 @@
# include <avr/interrupt.h> # include <avr/interrupt.h>
#endif #endif
#if defined(PROTOCOL_CHIBIOS) #if defined(PROTOCOL_CHIBIOS)
# include "hal.h" # include <hal.h>
# include "chibios_config.h" # include "chibios_config.h"
#endif #endif
+1 -1
View File
@@ -23,7 +23,7 @@
#include <string.h> #include <string.h>
#include <math.h> #include <math.h>
#include "lib/lib8tion/lib8tion.h" #include <lib/lib8tion/lib8tion.h>
#ifndef RGB_MATRIX_CENTER #ifndef RGB_MATRIX_CENTER
const point_t k_rgb_matrix_center = {112, 32}; const point_t k_rgb_matrix_center = {112, 32};
+2 -2
View File
@@ -24,7 +24,7 @@
# include "eeprom.h" # include "eeprom.h"
#endif #endif
#ifdef STM32_EEPROM_ENABLE #ifdef STM32_EEPROM_ENABLE
# include "hal.h" # include <hal.h>
# include "eeprom_stm32.h" # include "eeprom_stm32.h"
#endif #endif
#include "wait.h" #include "wait.h"
@@ -34,7 +34,7 @@
#include "color.h" #include "color.h"
#include "debug.h" #include "debug.h"
#include "led_tables.h" #include "led_tables.h"
#include "lib/lib8tion/lib8tion.h" #include <lib/lib8tion/lib8tion.h>
#ifdef VELOCIKEY_ENABLE #ifdef VELOCIKEY_ENABLE
# include "velocikey.h" # include "velocikey.h"
#endif #endif
+106 -457
View File
@@ -1,468 +1,117 @@
#ifndef RGBLIGHT_EFFECT_BREATHE_TABLE #pragma once
#define RGBLIGHT_EFFECT_BREATHE_TABLE #define RGBLIGHT_EFFECT_BREATHE_TABLE
const uint8_t rgblight_effect_breathe_table[] PROGMEM = { // clang-format off
/* #define RGBLIGHT_EFFECT_BREATHE_CENTER 1.85 */
/* #define RGBLIGHT_EFFECT_BREATHE_MAX 255 */
// Breathing center: 1.85
// Breathing max: 255
const uint8_t PROGMEM rgblight_effect_breathe_table[] = {
#if RGBLIGHT_BREATHE_TABLE_SIZE == 256 #if RGBLIGHT_BREATHE_TABLE_SIZE == 256
0x22, 0x22, 0x23, 0x25, 0x26, 0x28, 0x29, 0x2A, 0x2C,
0x23, 0x2D, 0x2F, 0x30, 0x32, 0x33, 0x35, 0x36, 0x38,
0x25, 0x3A, 0x3B, 0x3D, 0x3E, 0x40, 0x42, 0x43, 0x45,
0x26, 0x47, 0x49, 0x4A, 0x4C, 0x4E, 0x50, 0x51, 0x53,
0x28, 0x55, 0x57, 0x59, 0x5A, 0x5C, 0x5E, 0x60, 0x62,
0x29, 0x64, 0x66, 0x68, 0x69, 0x6B, 0x6D, 0x6F, 0x71,
0x2a, 0x73, 0x75, 0x77, 0x79, 0x7B, 0x7D, 0x7F, 0x81,
0x2c, 0x83, 0x85, 0x87, 0x89, 0x8A, 0x8C, 0x8E, 0x90,
0x2d, 0x92, 0x94, 0x96, 0x98, 0x9A, 0x9C, 0x9E, 0x9F,
0x2f, 0xA1, 0xA3, 0xA5, 0xA7, 0xA8, 0xAA, 0xAC, 0xAE,
0x30, 0xAF, 0xB1, 0xB3, 0xB4, 0xB6, 0xB8, 0xB9, 0xBB,
0x32, 0xBC, 0xBE, 0xBF, 0xC1, 0xC2, 0xC3, 0xC5, 0xC6,
0x33, 0xC7, 0xC9, 0xCA, 0xCB, 0xCC, 0xCD, 0xCE, 0xD0,
0x35, 0xD1, 0xD2, 0xD2, 0xD3, 0xD4, 0xD5, 0xD6, 0xD7,
0x36, 0xD7, 0xD8, 0xD9, 0xD9, 0xDA, 0xDA, 0xDB, 0xDB,
0x38, 0xDB, 0xDC, 0xDC, 0xDC, 0xDC, 0xDC, 0xDD, 0xDD,
0x3a, 0xDD, 0xDD, 0xDC, 0xDC, 0xDC, 0xDC, 0xDC, 0xDB,
0x3b, 0xDB, 0xDB, 0xDA, 0xDA, 0xD9, 0xD9, 0xD8, 0xD7,
0x3d, 0xD7, 0xD6, 0xD5, 0xD4, 0xD3, 0xD2, 0xD2, 0xD1,
0x3e, 0xD0, 0xCE, 0xCD, 0xCC, 0xCB, 0xCA, 0xC9, 0xC7,
0x40, 0xC6, 0xC5, 0xC3, 0xC2, 0xC1, 0xBF, 0xBE, 0xBC,
0x42, 0xBB, 0xB9, 0xB8, 0xB6, 0xB4, 0xB3, 0xB1, 0xAF,
0x43, 0xAE, 0xAC, 0xAA, 0xA8, 0xA7, 0xA5, 0xA3, 0xA1,
0x45, 0x9F, 0x9E, 0x9C, 0x9A, 0x98, 0x96, 0x94, 0x92,
0x47, 0x90, 0x8E, 0x8C, 0x8A, 0x89, 0x87, 0x85, 0x83,
0x49, 0x81, 0x7F, 0x7D, 0x7B, 0x79, 0x77, 0x75, 0x73,
0x4a, 0x71, 0x6F, 0x6D, 0x6B, 0x69, 0x68, 0x66, 0x64,
0x4c, 0x62, 0x60, 0x5E, 0x5C, 0x5A, 0x59, 0x57, 0x55,
0x4e, 0x53, 0x51, 0x50, 0x4E, 0x4C, 0x4A, 0x49, 0x47,
0x50, 0x45, 0x43, 0x42, 0x40, 0x3E, 0x3D, 0x3B, 0x3A,
0x51, 0x38, 0x36, 0x35, 0x33, 0x32, 0x30, 0x2F, 0x2D,
0x53, 0x2C, 0x2A, 0x29, 0x28, 0x26, 0x25, 0x23, 0x22
0x55, #endif
0x57,
0x59,
0x5a,
0x5c,
0x5e,
0x60,
0x62,
0x64,
0x66,
0x68,
0x69,
0x6b,
0x6d,
0x6f,
0x71,
0x73,
0x75,
0x77,
0x79,
0x7b,
0x7d,
0x7f,
0x81,
0x83,
0x85,
0x87,
0x89,
0x8a,
0x8c,
0x8e,
0x90,
0x92,
0x94,
0x96,
0x98,
0x9a,
0x9c,
0x9e,
0x9f,
0xa1,
0xa3,
0xa5,
0xa7,
0xa8,
0xaa,
0xac,
0xae,
0xaf,
0xb1,
0xb3,
0xb4,
0xb6,
0xb8,
0xb9,
0xbb,
0xbc,
0xbe,
0xbf,
0xc1,
0xc2,
0xc3,
0xc5,
0xc6,
0xc7,
0xc9,
0xca,
0xcb,
0xcc,
0xcd,
0xce,
0xd0,
0xd1,
0xd2,
0xd2,
0xd3,
0xd4,
0xd5,
0xd6,
0xd7,
0xd7,
0xd8,
0xd9,
0xd9,
0xda,
0xda,
0xdb,
0xdb,
0xdb,
0xdc,
0xdc,
0xdc,
0xdc,
0xdc,
0xdd,
0xdd,
0xdd,
0xdd,
0xdc,
0xdc,
0xdc,
0xdc,
0xdc,
0xdb,
0xdb,
0xdb,
0xda,
0xda,
0xd9,
0xd9,
0xd8,
0xd7,
0xd7,
0xd6,
0xd5,
0xd4,
0xd3,
0xd2,
0xd2,
0xd1,
0xd0,
0xce,
0xcd,
0xcc,
0xcb,
0xca,
0xc9,
0xc7,
0xc6,
0xc5,
0xc3,
0xc2,
0xc1,
0xbf,
0xbe,
0xbc,
0xbb,
0xb9,
0xb8,
0xb6,
0xb4,
0xb3,
0xb1,
0xaf,
0xae,
0xac,
0xaa,
0xa8,
0xa7,
0xa5,
0xa3,
0xa1,
0x9f,
0x9e,
0x9c,
0x9a,
0x98,
0x96,
0x94,
0x92,
0x90,
0x8e,
0x8c,
0x8a,
0x89,
0x87,
0x85,
0x83,
0x81,
0x7f,
0x7d,
0x7b,
0x79,
0x77,
0x75,
0x73,
0x71,
0x6f,
0x6d,
0x6b,
0x69,
0x68,
0x66,
0x64,
0x62,
0x60,
0x5e,
0x5c,
0x5a,
0x59,
0x57,
0x55,
0x53,
0x51,
0x50,
0x4e,
0x4c,
0x4a,
0x49,
0x47,
0x45,
0x43,
0x42,
0x40,
0x3e,
0x3d,
0x3b,
0x3a,
0x38,
0x36,
0x35,
0x33,
0x32,
0x30,
0x2f,
0x2d,
0x2c,
0x2a,
0x29,
0x28,
0x26,
0x25,
0x23,
0x22
#endif /* 256 bytes table */
#if RGBLIGHT_BREATHE_TABLE_SIZE == 128 #if RGBLIGHT_BREATHE_TABLE_SIZE == 128
0x22, 0x22, 0x25, 0x28, 0x2A,
0x25, 0x2D, 0x30, 0x33, 0x36,
0x28, 0x3A, 0x3D, 0x40, 0x43,
0x2a, 0x47, 0x4A, 0x4E, 0x51,
0x2d, 0x55, 0x59, 0x5C, 0x60,
0x30, 0x64, 0x68, 0x6B, 0x6F,
0x33, 0x73, 0x77, 0x7B, 0x7F,
0x36, 0x83, 0x87, 0x8A, 0x8E,
0x3a, 0x92, 0x96, 0x9A, 0x9E,
0x3d, 0xA1, 0xA5, 0xA8, 0xAC,
0x40, 0xAF, 0xB3, 0xB6, 0xB9,
0x43, 0xBC, 0xBF, 0xC2, 0xC5,
0x47, 0xC7, 0xCA, 0xCC, 0xCE,
0x4a, 0xD1, 0xD2, 0xD4, 0xD6,
0x4e, 0xD7, 0xD9, 0xDA, 0xDB,
0x51, 0xDB, 0xDC, 0xDC, 0xDD,
0x55, 0xDD, 0xDC, 0xDC, 0xDC,
0x59, 0xDB, 0xDA, 0xD9, 0xD8,
0x5c, 0xD7, 0xD5, 0xD3, 0xD2,
0x60, 0xD0, 0xCD, 0xCB, 0xC9,
0x64, 0xC6, 0xC3, 0xC1, 0xBE,
0x68, 0xBB, 0xB8, 0xB4, 0xB1,
0x6b, 0xAE, 0xAA, 0xA7, 0xA3,
0x6f, 0x9F, 0x9C, 0x98, 0x94,
0x73, 0x90, 0x8C, 0x89, 0x85,
0x77, 0x81, 0x7D, 0x79, 0x75,
0x7b, 0x71, 0x6D, 0x69, 0x66,
0x7f, 0x62, 0x5E, 0x5A, 0x57,
0x83, 0x53, 0x50, 0x4C, 0x49,
0x87, 0x45, 0x42, 0x3E, 0x3B,
0x8a, 0x38, 0x35, 0x32, 0x2F,
0x8e, 0x2C, 0x29, 0x26, 0x23
0x92, #endif
0x96,
0x9a,
0x9e,
0xa1,
0xa5,
0xa8,
0xac,
0xaf,
0xb3,
0xb6,
0xb9,
0xbc,
0xbf,
0xc2,
0xc5,
0xc7,
0xca,
0xcc,
0xce,
0xd1,
0xd2,
0xd4,
0xd6,
0xd7,
0xd9,
0xda,
0xdb,
0xdb,
0xdc,
0xdc,
0xdd,
0xdd,
0xdc,
0xdc,
0xdc,
0xdb,
0xda,
0xd9,
0xd8,
0xd7,
0xd5,
0xd3,
0xd2,
0xd0,
0xcd,
0xcb,
0xc9,
0xc6,
0xc3,
0xc1,
0xbe,
0xbb,
0xb8,
0xb4,
0xb1,
0xae,
0xaa,
0xa7,
0xa3,
0x9f,
0x9c,
0x98,
0x94,
0x90,
0x8c,
0x89,
0x85,
0x81,
0x7d,
0x79,
0x75,
0x71,
0x6d,
0x69,
0x66,
0x62,
0x5e,
0x5a,
0x57,
0x53,
0x50,
0x4c,
0x49,
0x45,
0x42,
0x3e,
0x3b,
0x38,
0x35,
0x32,
0x2f,
0x2c,
0x29,
0x26,
0x23
#endif /* 128 bytes table */
#if RGBLIGHT_BREATHE_TABLE_SIZE == 64 #if RGBLIGHT_BREATHE_TABLE_SIZE == 64
0x22, 0x22, 0x28,
0x28, 0x2D, 0x33,
0x2d, 0x3A, 0x40,
0x33, 0x47, 0x4E,
0x3a, 0x55, 0x5C,
0x40, 0x64, 0x6B,
0x47, 0x73, 0x7B,
0x4e, 0x83, 0x8A,
0x55, 0x92, 0x9A,
0x5c, 0xA1, 0xA8,
0x64, 0xAF, 0xB6,
0x6b, 0xBC, 0xC2,
0x73, 0xC7, 0xCC,
0x7b, 0xD1, 0xD4,
0x83, 0xD7, 0xDA,
0x8a, 0xDB, 0xDC,
0x92, 0xDD, 0xDC,
0x9a, 0xDB, 0xD9,
0xa1, 0xD7, 0xD3,
0xa8, 0xD0, 0xCB,
0xaf, 0xC6, 0xC1,
0xb6, 0xBB, 0xB4,
0xbc, 0xAE, 0xA7,
0xc2, 0x9F, 0x98,
0xc7, 0x90, 0x89,
0xcc, 0x81, 0x79,
0xd1, 0x71, 0x69,
0xd4, 0x62, 0x5A,
0xd7, 0x53, 0x4C,
0xda, 0x45, 0x3E,
0xdb, 0x38, 0x32,
0xdc, 0x2C, 0x26
0xdd, #endif
0xdc,
0xdb,
0xd9,
0xd7,
0xd3,
0xd0,
0xcb,
0xc6,
0xc1,
0xbb,
0xb4,
0xae,
0xa7,
0x9f,
0x98,
0x90,
0x89,
0x81,
0x79,
0x71,
0x69,
0x62,
0x5a,
0x53,
0x4c,
0x45,
0x3e,
0x38,
0x32,
0x2c,
0x26
#endif /* 64 bytes table */
}; };
static const int table_scale = 256 / sizeof(rgblight_effect_breathe_table); static const int table_scale = 256 / sizeof(rgblight_effect_breathe_table);
#endif /* RGBLIGHT_EFFECT_BREATHE_TABLE */
+1 -1
View File
@@ -24,7 +24,7 @@ SOFTWARE.
#include "report.h" #include "report.h"
#include "host_driver.h" #include "host_driver.h"
#include "serial_link/system/serial_link.h" #include "serial_link/system/serial_link.h"
#include "hal.h" #include <hal.h>
#include "serial_link/protocol/byte_stuffer.h" #include "serial_link/protocol/byte_stuffer.h"
#include "serial_link/protocol/transport.h" #include "serial_link/protocol/transport.h"
#include "serial_link/protocol/frame_router.h" #include "serial_link/protocol/frame_router.h"
+1 -1
View File
@@ -36,7 +36,7 @@ host_driver_t* get_serial_link_driver(void);
void serial_link_update(void); void serial_link_update(void);
#if defined(PROTOCOL_CHIBIOS) #if defined(PROTOCOL_CHIBIOS)
# include "ch.h" # include <ch.h>
static inline void serial_link_lock(void) { chSysLock(); } static inline void serial_link_lock(void) { chSysLock(); }
+1 -1
View File
@@ -12,7 +12,7 @@
#endif #endif
#ifdef PROTOCOL_VUSB #ifdef PROTOCOL_VUSB
# include "usbdrv.h" # include <usbdrv/usbdrv.h>
#endif #endif
#ifdef EE_HANDS #ifdef EE_HANDS
+1 -1
View File
@@ -1,6 +1,6 @@
#pragma once #pragma once
#include <common/matrix.h> #include "common/matrix.h"
void transport_master_init(void); void transport_master_init(void);
void transport_slave_init(void); void transport_slave_init(void);
+1 -1
View File
@@ -16,7 +16,7 @@
#pragma once #pragma once
#include <tmk_core/common/eeconfig.h> // for EECONFIG_SIZE #include "tmk_core/common/eeconfig.h" // for EECONFIG_SIZE
// Keyboard level code can change where VIA stores the magic. // Keyboard level code can change where VIA stores the magic.
// The magic is the build date YYMMDD encoded as BCD in 3 bytes, // The magic is the build date YYMMDD encoded as BCD in 3 bytes,
+1 -1
View File
@@ -24,7 +24,7 @@ SOFTWARE.
#ifndef LCD_BACKLIGHT_H_ #ifndef LCD_BACKLIGHT_H_
#define LCD_BACKLIGHT_H_ #define LCD_BACKLIGHT_H_
#include "stdint.h" #include <stdint.h>
// Helper macros for storing hue, staturation and intensity as unsigned integers // Helper macros for storing hue, staturation and intensity as unsigned integers
#define LCD_COLOR(hue, saturation, intensity) (hue << 16 | saturation << 8 | intensity) #define LCD_COLOR(hue, saturation, intensity) (hue << 16 | saturation << 8 | intensity)
+1 -1
View File
@@ -22,7 +22,7 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE. SOFTWARE.
*/ */
#include "gfx.h" #include "gfx.h"
#include "math.h" #include <math.h>
#include "led_backlight_keyframes.h" #include "led_backlight_keyframes.h"
static uint8_t fade_led_color(keyframe_animation_t* animation, int from, int to) { static uint8_t fade_led_color(keyframe_animation_t* animation, int from, int to) {
+1 -1
View File
@@ -26,7 +26,7 @@ SOFTWARE.
#include "visualizer.h" #include "visualizer.h"
#include <string.h> #include <string.h>
#ifdef PROTOCOL_CHIBIOS #ifdef PROTOCOL_CHIBIOS
# include "ch.h" # include <ch.h>
#endif #endif
#include "gfx.h" #include "gfx.h"
+1 -1
View File
@@ -48,7 +48,7 @@ int retro_tapping_counter = 0;
#endif #endif
#ifdef FAUXCLICKY_ENABLE #ifdef FAUXCLICKY_ENABLE
# include <fauxclicky.h> # include "fauxclicky.h"
#endif #endif
#ifdef IGNORE_MOD_TAP_INTERRUPT_PER_KEY #ifdef IGNORE_MOD_TAP_INTERRUPT_PER_KEY
+2 -2
View File
@@ -1,7 +1,7 @@
#include "bootloader.h" #include "bootloader.h"
#include "ch.h" #include <ch.h>
#include "hal.h" #include <hal.h>
#include "wait.h" #include "wait.h"
/* This code should be checked whether it runs correctly on platforms */ /* This code should be checked whether it runs correctly on platforms */
+2 -2
View File
@@ -24,8 +24,8 @@
#ifndef __EEPROM_H #ifndef __EEPROM_H
#define __EEPROM_H #define __EEPROM_H
#include "ch.h" #include <ch.h>
#include "hal.h" #include <hal.h>
#include "flash_stm32.h" #include "flash_stm32.h"
// HACK ALERT. This definition may not match your processor // HACK ALERT. This definition may not match your processor
+2 -2
View File
@@ -1,5 +1,5 @@
#include "ch.h" #include <ch.h>
#include "hal.h" #include <hal.h>
#include "eeconfig.h" #include "eeconfig.h"
+2 -2
View File
@@ -23,8 +23,8 @@
extern "C" { extern "C" {
#endif #endif
#include "ch.h" #include <ch.h>
#include "hal.h" #include <hal.h>
typedef enum { FLASH_BUSY = 1, FLASH_ERROR_PG, FLASH_ERROR_WRP, FLASH_ERROR_OPT, FLASH_COMPLETE, FLASH_TIMEOUT, FLASH_BAD_ADDRESS } FLASH_Status; typedef enum { FLASH_BUSY = 1, FLASH_ERROR_PG, FLASH_ERROR_WRP, FLASH_ERROR_OPT, FLASH_COMPLETE, FLASH_TIMEOUT, FLASH_BAD_ADDRESS } FLASH_Status;
+2 -2
View File
@@ -1,5 +1,5 @@
#include "ch.h" #include <ch.h>
#include "hal.h" #include <hal.h>
#include "led.h" #include "led.h"
#include "sleep_led.h" #include "sleep_led.h"
+2 -2
View File
@@ -1,7 +1,7 @@
/* TODO */ /* TODO */
#include "ch.h" #include <ch.h>
#include "hal.h" #include <hal.h>
#include "matrix.h" #include "matrix.h"
#include "action.h" #include "action.h"
Loaded 100 of 114 files, more files were not shown because too many files have changed in this diff. Show more