Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
aec4125989 | ||
|
|
c272b2422b | ||
|
|
c50009d5d4 | ||
|
|
823165b9b7 | ||
|
|
9947f1051d | ||
|
|
c5e255a417 | ||
|
|
bae3e03e5f | ||
|
|
facca23315 | ||
|
|
071e0c2029 | ||
|
|
2b55c419ea | ||
|
|
83e1b9ab6e | ||
|
|
ca598c3df6 | ||
|
|
4588c979bd | ||
|
|
60ee8bddfc | ||
|
|
5f9fb01020 | ||
|
|
c4960b7579 | ||
|
|
d4917318cc | ||
|
|
047a7f4e33 | ||
|
|
c8ab8e0bab | ||
|
|
038a86a9b8 | ||
|
|
9ae15e8c79 | ||
|
|
666cb44673 |
No files matched your search
@@ -18,7 +18,7 @@ That should be everything necessary.
|
|||||||
|
|
||||||
To start recording the macro, press either `DYN_REC_START1` or `DYN_REC_START2`.
|
To start recording the macro, press either `DYN_REC_START1` or `DYN_REC_START2`.
|
||||||
|
|
||||||
To finish the recording, press the `DYN_REC_STOP` layer button.
|
To finish the recording, press the `DYN_REC_STOP` layer button. You can also press `DYN_REC_START1` or `DYN_REC_START2` again to stop the recording.
|
||||||
|
|
||||||
To replay the macro, press either `DYN_MACRO_PLAY1` or `DYN_MACRO_PLAY2`.
|
To replay the macro, press either `DYN_MACRO_PLAY1` or `DYN_MACRO_PLAY2`.
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,63 @@
|
|||||||
|
# コーディング規約 (C)
|
||||||
|
|
||||||
|
<!---
|
||||||
|
original document: 0.9.19:docs/coding_conventions_c.md
|
||||||
|
git diff 0.9.19 HEAD -- docs/coding_conventions_c.md | cat
|
||||||
|
-->
|
||||||
|
|
||||||
|
私たちのスタイルのほとんどはかなり理解しやすいですが、現時点では完全に一貫しているわけではありません。変更箇所周辺のコードのスタイルと一致させる必要がありますが、そのコードに一貫性が無い場合や不明瞭な場合は以下のガイドラインに従ってください:
|
||||||
|
|
||||||
|
* 4つのスペース (ソフトタブ) を使ってインデントします。
|
||||||
|
* 修正版 One True Brace Style を使います。
|
||||||
|
* 開き括弧: ブロックを開始する文と同じ行の最後
|
||||||
|
* 閉じ括弧: ブロックを開始した文と同じ字下げ
|
||||||
|
* Else If: 行の先頭に閉じ括弧を置き、次の開き括弧を同じ行の最後に置きます。
|
||||||
|
* 省略可能な括弧: 常に括弧を付け加えます。
|
||||||
|
* 良い: if (condition) { return false; }
|
||||||
|
* 悪い: if (condition) return false;
|
||||||
|
* C 形式のコメントの使用を推奨します: `/* */`
|
||||||
|
* コメントを機能を説明するストーリーと考えて下さい。
|
||||||
|
* 特定の決定がなされた理由を充分なコメントで説明してください。
|
||||||
|
* 分かり切ったコメントは書かないでください。
|
||||||
|
* 分かり切ったコメントであるか確信できない場合は、コメントを含めてください。
|
||||||
|
* 一般的に、行を折り返さないで、必要なだけ長くすることができます。行を折り返すことを選択した場合は、76列を超えて折り返さないでください。
|
||||||
|
* 古い形式のインクルードガード (`#ifndef THIS_FILE_H`、`#define THIS_FILE_H`、...、`#endif`) ではなく、ヘッダファイルの先頭で `#pragma once` を使います。
|
||||||
|
* プリプロセッサ if の両方の形式を受け付けます: `#ifdef DEFINED` と `#if defined(DEFINED)`
|
||||||
|
* どちらがいいかわからない場合は、`#if defined(DEFINED)` 形式を使ってください。
|
||||||
|
* 複数の条件 `#if` に移行する場合を除き、既存のコードを別のスタイルに変更しないでください。
|
||||||
|
* プリプロセッサディレクティブをインデントする方法(あるいはするかどうか)を決定する時は、以下の事に留意してください:
|
||||||
|
* 一貫性よりも読みやすさが重要です。
|
||||||
|
* ファイルの既存のスタイルに従ってください。ファイルのスタイルが混在している場合は、修正しようとしているセクションに適したスタイルに従ってください。
|
||||||
|
* インデントする時は、ハッシュを行の先頭に置き、`#` と `if` の間に空白を追加します。`#` の後ろに4つスペースを入れて開始します。
|
||||||
|
* 周りの C コードのインデントレベルに従うか、プリプロセッサのディレクティブに独自のインデントレベルを設定することができます。コードの意図を最もよく伝えるスタイルを選択してください。
|
||||||
|
|
||||||
|
わかりやすいように例を示します:
|
||||||
|
|
||||||
|
```c
|
||||||
|
/* Enums for foo */
|
||||||
|
enum foo_state {
|
||||||
|
FOO_BAR,
|
||||||
|
FOO_BAZ,
|
||||||
|
};
|
||||||
|
|
||||||
|
/* Returns a value */
|
||||||
|
int foo(void) {
|
||||||
|
if (some_condition) {
|
||||||
|
return FOO_BAR;
|
||||||
|
} else {
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
# clang-format を使った自動整形
|
||||||
|
|
||||||
|
[Clang-format](https://clang.llvm.org/docs/ClangFormat.html) は LLVM の一部で、誰もが手動で整形するほど暇ではないため、コードを自動整形することができます。私たちは、上記のコーディング規約のほとんどを適用する設定ファイルを提供しています。空白と改行のみを変更するため、省略可能な括弧は自分で付け加えることを忘れないでください。
|
||||||
|
|
||||||
|
Windows で clang-format を入手するには [full LLVM インストーラ](http://llvm.org/builds/)を使い、Ubuntu では `sudo apt install clang-format` を使ってください。
|
||||||
|
|
||||||
|
コマンドラインから実行する場合、オプションとして `-style=file` を渡すと、QMK ルートディレクトリ内の .clang-format 設定ファイルを自動的に見つけます。
|
||||||
|
|
||||||
|
VSCode を使う場合は、標準の C/C++ プラグインが clang-format をサポートしますが、その他にも [独立した拡張機能](https://marketplace.visualstudio.com/items?itemName=LLVMExtensions.ClangFormat) があります。
|
||||||
|
|
||||||
|
幾つかのコード (LAYOUT マクロのような)が clang-format によって破壊されるため、これらのファイルで clang-format を実行しないか、整形したくないコードを `// clang-format off` と `// clang-format on` で囲みます。
|
||||||
@@ -22,6 +22,7 @@ To use these, simply `#include` the corresponding [header file](https://github.c
|
|||||||
|Estonian |`keymap_estonian.h` |
|
|Estonian |`keymap_estonian.h` |
|
||||||
|Finnish |`keymap_finnish.h` |
|
|Finnish |`keymap_finnish.h` |
|
||||||
|French |`keymap_french.h` |
|
|French |`keymap_french.h` |
|
||||||
|
|French (AFNOR) |`keymap_french_afnor.h` |
|
||||||
|French (BÉPO) |`keymap_bepo.h` |
|
|French (BÉPO) |`keymap_bepo.h` |
|
||||||
|French (Belgium) |`keymap_belgian.h` |
|
|French (Belgium) |`keymap_belgian.h` |
|
||||||
|French (Switzerland) |`keymap_fr_ch.h` |
|
|French (Switzerland) |`keymap_fr_ch.h` |
|
||||||
|
|||||||
@@ -32,6 +32,7 @@ uint16_t get_tapping_term(uint16_t keycode, keyrecord_t *record) {
|
|||||||
return 130;
|
return 130;
|
||||||
default:
|
default:
|
||||||
return TAPPING_TERM;
|
return TAPPING_TERM;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|||||||
@@ -12,7 +12,7 @@
|
|||||||
|
|
||||||
/* key matrix size */
|
/* key matrix size */
|
||||||
#define MATRIX_ROWS 5
|
#define MATRIX_ROWS 5
|
||||||
#define MATRIX_COLS 15
|
#define MATRIX_COLS 14
|
||||||
// ROWS: Top to bottom, COLS: Left to right
|
// ROWS: Top to bottom, COLS: Left to right
|
||||||
#define MATRIX_ROW_PINS {C2,D0,B0,C7,C5}
|
#define MATRIX_ROW_PINS {C2,D0,B0,C7,C5}
|
||||||
#define MATRIX_COL_PINS {C4,C6,B7,B6,B5,B4,B3,B2,B1,D6,D5,D4,D2,D1}
|
#define MATRIX_COL_PINS {C4,C6,B7,B6,B5,B4,B3,B2,B1,D6,D5,D4,D2,D1}
|
||||||
|
|||||||
@@ -0,0 +1,118 @@
|
|||||||
|
# AJP10304 Custom Shark Layout
|
||||||
|
# Also available for the Planck, JJ40 and Atreus50
|
||||||
|
|
||||||
|
**Note:** In the tables below where there are two characters on a key,
|
||||||
|
the second is the output when shift is applied.
|
||||||
|
|
||||||
|
**Note:** The below tables assume a UK layout.
|
||||||
|
|
||||||
|
#### Flashing
|
||||||
|
|
||||||
|
`make acheron/shark:ajp10304:flash`
|
||||||
|
|
||||||
|
##### Main Qwerty Layer
|
||||||
|
|
||||||
|
* Tab: when held, operates as shift.
|
||||||
|
* Enter: when held, operates as shift.
|
||||||
|
* MENU: perform right-click
|
||||||
|
|
||||||
|
| | | | | | | | | | | | |
|
||||||
|
| ---- |:----:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| ----:|
|
||||||
|
| Esc | Q | W | E | R | T | Y | U | I | O | P | Bksp |
|
||||||
|
| Tab | A | S | D | F | G | H | J | K | L | ;: | Enter|
|
||||||
|
| Shft | Z | X | C | V | B | N | M | ,< | .> | /? | Shft |
|
||||||
|
| Fn | Ctrl | Alt | GUI |Lower | Bksp |Space |Raise | Shift| MENU | Ctrl | Fn2 |
|
||||||
|
|
||||||
|
##### Function Layer
|
||||||
|
Activated when `fn` held in the above `qwerty` layer.
|
||||||
|
|
||||||
|
| | | | | | | | | | | | |
|
||||||
|
| :---: |:----:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:|
|
||||||
|
| F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 |
|
||||||
|
| 1! | 2" | 3£ | 4$ | 5% | 6^ | 7& | 8* | 9( | 0) | ~ |INSERT|
|
||||||
|
| Shift | \| | `¬ | #~ | * | -_ | =+ | \| | [{ | ]} | '@ |Shift |
|
||||||
|
| Fn | Ctrl | Alt | GUI |Lower | Bksp |Space |Mouse | MENU | Alt | Ctrl | Fn2 |
|
||||||
|
|
||||||
|
##### Lower Layer
|
||||||
|
Activated when `Lower` is held in the above `qwerty` layer.
|
||||||
|
|
||||||
|
* Numbers are along the top row, their shifted counterparts are on row 2.
|
||||||
|
* WrdBks: `backspace` with `ctrl` applied. I.e. delete a word.
|
||||||
|
* WrdDel: `delete` with `ctrl` applied. I.e. forward delete a word.
|
||||||
|
|
||||||
|
| | | | | | | | | | | | |
|
||||||
|
| :---: |:----:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:|
|
||||||
|
| 1! | 2" | 3£ | 4$ | 5% | 6^ | 7& | 8* | 9( | 0) | DEL | Bksp |
|
||||||
|
| ! | " | £ | $ | % | ^ | & | * | ( | ) |WrdDel|WrdBks|
|
||||||
|
| Shift | \| | `¬ | #~ | '@ | -_ | =+ | #~ | [{ | ]} | '@ |Shift |
|
||||||
|
| | | | |Lower | Del |Space | | Next | Vol- | Vol+ | Play |
|
||||||
|
|
||||||
|
##### Raise Layer
|
||||||
|
Activated when `Raise` is held in the above `qwerty` layer.
|
||||||
|
|
||||||
|
* Preferred layer for typing brackets.
|
||||||
|
* Allows for cursor navigation to be used solely with the right hand.
|
||||||
|
* WRDSEL: Select the word where the cursor is.
|
||||||
|
* |< and >|: Apply `ctrl` to `left` and `right` respectively for word jumping.
|
||||||
|
|
||||||
|
| | | | | | | | | | | | |
|
||||||
|
| :---: |:----:| :---:| :---:| :---:| :---:| :---: | :---:| :---:| :---:| :---: | :---:|
|
||||||
|
| ` | |WRDSEL| [ | ] | | | PGUP | HOME |PGDOWN| |PRNTSC|
|
||||||
|
| ` | | | ( | ) | | | HOME | UP | END | |ZOOM +|
|
||||||
|
| | | | { | } | ||<| LEFT | DOWN |RIGHT |>||ZOOM -|
|
||||||
|
| Mouse | | | | | Alt | Enter |Raise | | | | |
|
||||||
|
|
||||||
|
##### Lower + Raise
|
||||||
|
Activated when `Lower` and `Raise` are held together in the above `qwerty` layer.
|
||||||
|
|
||||||
|
* Audio controls in the same position as cursor keys from the `Raise` layer.
|
||||||
|
* ????: Runs a macro for outputting a text string. Do not use this store passwords.
|
||||||
|
* Reset: Enter bootloader for flashing firmware to the keyboard.
|
||||||
|
* CAPS: Toggle caps lock.
|
||||||
|
* Macro functions: Allows recording of macros. To start recording the macro, press either REC1 or REC2.
|
||||||
|
To finish the recording, press STOP. To replay the macro, press either PLAY1 or PLAY2.
|
||||||
|
* MAC: Toggle MAC OS extensions to layers. This allows MLWR to be enabled with LOWER,
|
||||||
|
MRSE with RAISE, MFNC with FUNC and MFNC2 with FUNC2 respectively.
|
||||||
|
|
||||||
|
| | | | | | | | | | | | |
|
||||||
|
| :---: |:----:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:|
|
||||||
|
| ???? | Reset|Qwerty| | | REC1 | REC2 | | | | | Del |
|
||||||
|
| CAPS | | | | | PLAY1|PLAY2 | Mute | Vol+ | Play | | |
|
||||||
|
| MAC | | | | | STOP1|STOP2 | Prev | Vol- | Next | | |
|
||||||
|
| | | | | | | | | DYN | | | |
|
||||||
|
|
||||||
|
##### Function 2 Layer
|
||||||
|
Activated when `fn` held in the above `qwerty` layer.
|
||||||
|
* WRDSEL: Select the word where the cursor is.
|
||||||
|
* LNDEL: Delete the line where the cursor is.
|
||||||
|
* LNSEL: Select the line where the cursor is.
|
||||||
|
* DUP: Duplicate the selected text.
|
||||||
|
* LNJOIN: Join the line where the cursor is with the following line.
|
||||||
|
* MODE: Print either `PC` or `OSX` depending on what layer mode is active.
|
||||||
|
|
||||||
|
| | | | | | | | | | | | |
|
||||||
|
| :---: | :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:|
|
||||||
|
| | |WRDSEL| | | | LNDEL| | | | | |
|
||||||
|
| | | LNSEL| DUP | | | | |LNJOIN| | | |
|
||||||
|
| | UNDO | CUT | COPY | PASTE| | | | | | | MODE |
|
||||||
|
| | | | | | | | | | | | |
|
||||||
|
|
||||||
|
##### Mouse Layer
|
||||||
|
Activated when `fn` and `raise` held together.
|
||||||
|
|
||||||
|
| | | | | | | | | | | | |
|
||||||
|
| :---: | :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:|
|
||||||
|
| ESC | | | | | | | | BTN3 | | | |
|
||||||
|
| ACC0 | ACC1 | ACC2 | | | | | BTN1 | UP | BTN2 | | |
|
||||||
|
| ACC0 | ACC1 | ACC2 | | | | | LEFT | DOWN | RIGHT| | |
|
||||||
|
| | | | | | | | | | | | |
|
||||||
|
|
||||||
|
##### Number Pad Layout
|
||||||
|
Activated when holding `Esc` key.
|
||||||
|
|
||||||
|
| | | | | | | | | | | | |
|
||||||
|
| :---: | :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:|
|
||||||
|
| | | | | | |NMLOCK| 7 | 8 | 9 | / | |
|
||||||
|
| | | | | | | | 4 | 5 | 6 | * | |
|
||||||
|
| | | | | | | | 1 | 2 | 3 | + | |
|
||||||
|
| | | | | | | | 0 | . | , | - | |
|
||||||
@@ -53,4 +53,5 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|||||||
#define RGBLIGHT_HUE_STEP 8
|
#define RGBLIGHT_HUE_STEP 8
|
||||||
#define RGBLIGHT_SAT_STEP 8
|
#define RGBLIGHT_SAT_STEP 8
|
||||||
#define RGBLIGHT_VAL_STEP 8
|
#define RGBLIGHT_VAL_STEP 8
|
||||||
|
#define RGBLIGHT_LIMIT_VAL 50
|
||||||
#endif
|
#endif
|
||||||
@@ -45,3 +45,5 @@
|
|||||||
{ KC_NO, KC_NO, k32, k33, k34, k35, k36, k37, KC_NO, KC_NO }, \
|
{ KC_NO, KC_NO, k32, k33, k34, k35, k36, k37, KC_NO, KC_NO }, \
|
||||||
{ KC_NO, KC_NO, k2a, k1a, k0a, k0b, k1b, k2b, KC_NO, KC_NO } \
|
{ KC_NO, KC_NO, k2a, k1a, k0a, k0b, k1b, k2b, KC_NO, KC_NO } \
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#define LAYOUT_split_3x6_3 LAYOUT
|
||||||
@@ -40,3 +40,5 @@ OPT_DEFS += -DCENTROMERE_PROMICRO
|
|||||||
|
|
||||||
# # project specific files
|
# # project specific files
|
||||||
SRC = matrix.c
|
SRC = matrix.c
|
||||||
|
|
||||||
|
LAYOUTS = split_3x6_3
|
||||||
@@ -0,0 +1,15 @@
|
|||||||
|
# YDKB Chili
|
||||||
|
|
||||||
|
[Chili PCB](https://i.imgur.com/fKi896a.jpg)
|
||||||
|
|
||||||
|
The YDKB Chili is a Cherry G80-3000 replacement PCB utilizing the ATmega32U4 microcontroller.
|
||||||
|
|
||||||
|
* Keyboard Maintainer: QMK community
|
||||||
|
* Hardware Supported: YDKB Chili
|
||||||
|
* Hardware Availability: [TaoBao](https://item.taobao.com/item.htm?id=565823984744)
|
||||||
|
|
||||||
|
Make example for this keyboard (after setting up your build environment):
|
||||||
|
|
||||||
|
make chili:default
|
||||||
|
|
||||||
|
See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
|
||||||
@@ -0,0 +1,42 @@
|
|||||||
|
/* Copyright 2017 Mathias Andersson <[email protected]>
|
||||||
|
*
|
||||||
|
* 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 "chili.h"
|
||||||
|
|
||||||
|
void matrix_init_kb(void) {
|
||||||
|
// put your keyboard start-up code here
|
||||||
|
// runs once when the firmware starts up
|
||||||
|
led_init_ports();
|
||||||
|
matrix_init_user();
|
||||||
|
}
|
||||||
|
|
||||||
|
void led_init_ports(void) {
|
||||||
|
setPinOutput(B1);
|
||||||
|
writePinHigh(B1);
|
||||||
|
setPinOutput(B2);
|
||||||
|
writePinHigh(B2);
|
||||||
|
setPinOutput(B3);
|
||||||
|
writePinHigh(B3);
|
||||||
|
}
|
||||||
|
|
||||||
|
bool led_update_kb(led_t led_state) {
|
||||||
|
bool res = led_update_user(led_state);
|
||||||
|
if(res) {
|
||||||
|
writePin(B1, !led_state.num_lock);
|
||||||
|
writePin(B2, !led_state.caps_lock);
|
||||||
|
writePin(B3, !led_state.scroll_lock);
|
||||||
|
}
|
||||||
|
return res;
|
||||||
|
}
|
||||||
@@ -0,0 +1,39 @@
|
|||||||
|
/* Copyright 2017 Mathias Andersson <[email protected]>
|
||||||
|
*
|
||||||
|
* This program is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 2 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "quantum.h"
|
||||||
|
|
||||||
|
#define LAYOUT_all( \
|
||||||
|
K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K69, K68, K67, K66, K65, K64, \
|
||||||
|
K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K79, K78, K77, K76, K75, K74, K73, K72, K63, K62, K61, K60, \
|
||||||
|
K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K89, K88, K87, K86, K85, K84, K83, K82, K81, K80, K90, \
|
||||||
|
K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K99, K98, K97, K95, K92, K71, K70, \
|
||||||
|
K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, KA9, KA8, KA6, KA7, K96, K94, K93, K91, KA0, \
|
||||||
|
K50, K51, K52, K53, K54, K55, K56, K57, K58, K59, KA5, KA4, KA3, KA2, KA1 \
|
||||||
|
) { \
|
||||||
|
{ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09 }, \
|
||||||
|
{ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19 }, \
|
||||||
|
{ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29 }, \
|
||||||
|
{ K30, K31, K32, K33, K34, K35, K36, K37, K38, K39 }, \
|
||||||
|
{ K40, K41, K42, K43, K44, K45, K46, K47, K48, K49 }, \
|
||||||
|
{ K50, K51, K52, K53, K54, K55, K56, K57, K58, K59 }, \
|
||||||
|
{ K60, K61, K62, K63, K64, K65, K66, K67, K68, K69 }, \
|
||||||
|
{ K70, K71, K72, K73, K74, K75, K76, K77, K78, K79 }, \
|
||||||
|
{ K80, K81, K82, K83, K84, K85, K86, K87, K88, K89 }, \
|
||||||
|
{ K90, K91, K92, K93, K94, K95, K96, K97, K98, K99 }, \
|
||||||
|
{ KA0, KA1, KA2, KA3, KA4, KA5, KA6, KA7, KA8, KA9 } \
|
||||||
|
}
|
||||||
@@ -0,0 +1,179 @@
|
|||||||
|
/*
|
||||||
|
Copyright 2012 Jun Wako <[email protected]>
|
||||||
|
|
||||||
|
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 0x5945 // "YE"
|
||||||
|
#define PRODUCT_ID 0x0001
|
||||||
|
#define DEVICE_VER 0x0001
|
||||||
|
#define MANUFACTURER YDKB
|
||||||
|
#define PRODUCT Chili
|
||||||
|
#define DESCRIPTION QMK keyboard firmware for Chili, a G80-3000 replacement PCB
|
||||||
|
|
||||||
|
/* key matrix size */
|
||||||
|
#define MATRIX_ROWS 11
|
||||||
|
#define MATRIX_COLS 10
|
||||||
|
|
||||||
|
// ROWS: Top to bottom, COLS: Left to right
|
||||||
|
/* Row pin configuration
|
||||||
|
*/
|
||||||
|
#define MATRIX_ROW_PINS { F5, F4, F1, F0, E6, B0, D5, D3, D2, D1, D0 }
|
||||||
|
/* Column pin configuration
|
||||||
|
*/
|
||||||
|
#define MATRIX_COL_PINS { D4, F6, F7, C7, C6, B6, B5, B4, D7, D6 }
|
||||||
|
#define UNUSED_PINS
|
||||||
|
|
||||||
|
/* COL2ROW or ROW2COL */
|
||||||
|
#define DIODE_DIRECTION COL2ROW
|
||||||
|
|
||||||
|
#define BACKLIGHT_PIN B7
|
||||||
|
#define BACKLIGHT_BREATHING
|
||||||
|
#define BACKLIGHT_LEVELS 3
|
||||||
|
|
||||||
|
/* Underlight configuration
|
||||||
|
*/
|
||||||
|
#define RGB_DI_PIN B3
|
||||||
|
#define RGBLIGHT_ANIMATIONS
|
||||||
|
#define RGBLED_NUM 30 // Number of LEDs
|
||||||
|
#define RGBLIGHT_HUE_STEP 5
|
||||||
|
#define RGBLIGHT_SAT_STEP 10
|
||||||
|
#define RGBLIGHT_VAL_STEP 10
|
||||||
|
|
||||||
|
/* define if matrix has ghost */
|
||||||
|
//#define MATRIX_HAS_GHOST
|
||||||
|
|
||||||
|
/* Set 0 if debouncing isn't needed */
|
||||||
|
#define DEBOUNCE 5
|
||||||
|
|
||||||
|
/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
|
||||||
|
#define LOCKING_SUPPORT_ENABLE
|
||||||
|
/* Locking resynchronize hack */
|
||||||
|
#define LOCKING_RESYNC_ENABLE
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Force NKRO
|
||||||
|
*
|
||||||
|
* Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved
|
||||||
|
* state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the
|
||||||
|
* makefile for this to work.)
|
||||||
|
*
|
||||||
|
* If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N)
|
||||||
|
* until the next keyboard reset.
|
||||||
|
*
|
||||||
|
* NKRO may prevent your keystrokes from being detected in the BIOS, but it is
|
||||||
|
* fully operational during normal computer usage.
|
||||||
|
*
|
||||||
|
* For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N)
|
||||||
|
* or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by
|
||||||
|
* bootmagic, NKRO mode will always be enabled until it is toggled again during a
|
||||||
|
* power-up.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
//#define FORCE_NKRO
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Magic Key Options
|
||||||
|
*
|
||||||
|
* Magic keys are hotkey commands that allow control over firmware functions of
|
||||||
|
* the keyboard. They are best used in combination with the HID Listen program,
|
||||||
|
* found here: https://www.pjrc.com/teensy/hid_listen.html
|
||||||
|
*
|
||||||
|
* The options below allow the magic key functionality to be changed. This is
|
||||||
|
* useful if your keyboard/keypad is missing keys and you want magic key support.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* control how magic key switches layers */
|
||||||
|
//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true
|
||||||
|
//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true
|
||||||
|
//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false
|
||||||
|
|
||||||
|
/* override magic key keymap */
|
||||||
|
//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS
|
||||||
|
//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS
|
||||||
|
//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM
|
||||||
|
//#define MAGIC_KEY_HELP1 H
|
||||||
|
//#define MAGIC_KEY_HELP2 SLASH
|
||||||
|
//#define MAGIC_KEY_DEBUG D
|
||||||
|
//#define MAGIC_KEY_DEBUG_MATRIX X
|
||||||
|
//#define MAGIC_KEY_DEBUG_KBD K
|
||||||
|
//#define MAGIC_KEY_DEBUG_MOUSE M
|
||||||
|
//#define MAGIC_KEY_VERSION V
|
||||||
|
//#define MAGIC_KEY_STATUS S
|
||||||
|
//#define MAGIC_KEY_CONSOLE C
|
||||||
|
//#define MAGIC_KEY_LAYER0_ALT1 ESC
|
||||||
|
//#define MAGIC_KEY_LAYER0_ALT2 GRAVE
|
||||||
|
//#define MAGIC_KEY_LAYER0 0
|
||||||
|
//#define MAGIC_KEY_LAYER1 1
|
||||||
|
//#define MAGIC_KEY_LAYER2 2
|
||||||
|
//#define MAGIC_KEY_LAYER3 3
|
||||||
|
//#define MAGIC_KEY_LAYER4 4
|
||||||
|
//#define MAGIC_KEY_LAYER5 5
|
||||||
|
//#define MAGIC_KEY_LAYER6 6
|
||||||
|
//#define MAGIC_KEY_LAYER7 7
|
||||||
|
//#define MAGIC_KEY_LAYER8 8
|
||||||
|
//#define MAGIC_KEY_LAYER9 9
|
||||||
|
//#define MAGIC_KEY_BOOTLOADER PAUSE
|
||||||
|
//#define MAGIC_KEY_LOCK CAPS
|
||||||
|
//#define MAGIC_KEY_EEPROM E
|
||||||
|
//#define MAGIC_KEY_NKRO N
|
||||||
|
//#define MAGIC_KEY_SLEEP_LED Z
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Feature disable options
|
||||||
|
* These options are also useful to firmware size reduction.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* disable debug print */
|
||||||
|
//#define NO_DEBUG
|
||||||
|
|
||||||
|
/* disable print */
|
||||||
|
//#define NO_PRINT
|
||||||
|
|
||||||
|
/* disable action features */
|
||||||
|
//#define NO_ACTION_LAYER
|
||||||
|
//#define NO_ACTION_TAPPING
|
||||||
|
//#define NO_ACTION_ONESHOT
|
||||||
|
//#define NO_ACTION_MACRO
|
||||||
|
//#define NO_ACTION_FUNCTION
|
||||||
|
|
||||||
|
/*
|
||||||
|
* MIDI options
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* Prevent use of disabled MIDI features in the keymap */
|
||||||
|
//#define MIDI_ENABLE_STRICT 1
|
||||||
|
|
||||||
|
/* enable basic MIDI features:
|
||||||
|
- MIDI notes can be sent when in Music mode is on
|
||||||
|
*/
|
||||||
|
//#define MIDI_BASIC
|
||||||
|
|
||||||
|
/* enable advanced MIDI features:
|
||||||
|
- MIDI notes can be added to the keymap
|
||||||
|
- Octave shift and transpose
|
||||||
|
- Virtual sustain, portamento, and modulation wheel
|
||||||
|
- etc.
|
||||||
|
*/
|
||||||
|
//#define MIDI_ADVANCED
|
||||||
|
|
||||||
|
/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */
|
||||||
|
//#define MIDI_TONE_KEYCODE_OCTAVES 1
|
||||||
@@ -0,0 +1,12 @@
|
|||||||
|
{
|
||||||
|
"keyboard_name": "YDKB Chili",
|
||||||
|
"url": "",
|
||||||
|
"maintainer": "qmk",
|
||||||
|
"width": 22.5,
|
||||||
|
"height": 6.5,
|
||||||
|
"layouts": {
|
||||||
|
"LAYOUT_all": {
|
||||||
|
"layout": [{"label":"Esc", "x":0, "y":0}, {"label":"F1", "x":2, "y":0}, {"label":"F2", "x":3, "y":0}, {"label":"F3", "x":4, "y":0}, {"label":"F4", "x":5, "y":0}, {"label":"F5", "x":6.5, "y":0}, {"label":"F6", "x":7.5, "y":0}, {"label":"F7", "x":8.5, "y":0}, {"label":"F8", "x":9.5, "y":0}, {"label":"F9", "x":11, "y":0}, {"label":"F10", "x":12, "y":0}, {"label":"F11", "x":13, "y":0}, {"label":"F12", "x":14, "y":0}, {"label":"PrtSc", "x":15.25, "y":0}, {"label":"Scroll Lock", "x":16.25, "y":0}, {"label":"Pause", "x":17.25, "y":0}, {"label":"~", "x":0, "y":1.5}, {"label":"!", "x":1, "y":1.5}, {"label":"@", "x":2, "y":1.5}, {"label":"#", "x":3, "y":1.5}, {"label":"$", "x":4, "y":1.5}, {"label":"%", "x":5, "y":1.5}, {"label":"^", "x":6, "y":1.5}, {"label":"&", "x":7, "y":1.5}, {"label":"*", "x":8, "y":1.5}, {"label":"(", "x":9, "y":1.5}, {"label":")", "x":10, "y":1.5}, {"label":"_", "x":11, "y":1.5}, {"label":"+", "x":12, "y":1.5}, {"label":"Backsp", "x":13, "y":1.5}, {"x":14, "y":1.5}, {"label":"Insert", "x":15.25, "y":1.5}, {"label":"Home", "x":16.25, "y":1.5}, {"label":"PgUp", "x":17.25, "y":1.5}, {"label":"Num Lock", "x":18.5, "y":1.5}, {"label":"/", "x":19.5, "y":1.5}, {"label":"*", "x":20.5, "y":1.5}, {"label":"-", "x":21.5, "y":1.5}, {"label":"Tab", "x":0, "y":2.5, "w":1.5}, {"label":"Q", "x":1.5, "y":2.5}, {"label":"W", "x":2.5, "y":2.5}, {"label":"E", "x":3.5, "y":2.5}, {"label":"R", "x":4.5, "y":2.5}, {"label":"T", "x":5.5, "y":2.5}, {"label":"Y", "x":6.5, "y":2.5}, {"label":"U", "x":7.5, "y":2.5}, {"label":"I", "x":8.5, "y":2.5}, {"label":"O", "x":9.5, "y":2.5}, {"label":"P", "x":10.5, "y":2.5}, {"label":"{", "x":11.5, "y":2.5}, {"label":"}", "x":12.5, "y":2.5}, {"label":"|", "x":13.5, "y":2.5, "w":1.5}, {"label":"Delete", "x":15.25, "y":2.5}, {"label":"End", "x":16.25, "y":2.5}, {"label":"PgDn", "x":17.25, "y":2.5}, {"label":"7", "x":18.5, "y":2.5}, {"label":"8", "x":19.5, "y":2.5}, {"label":"9", "x":20.5, "y":2.5}, {"label":"+", "x":21.5, "y":2.5}, {"label":"Caps Lock", "x":0, "y":3.5, "w":1.75}, {"label":"A", "x":1.75, "y":3.5}, {"label":"S", "x":2.75, "y":3.5}, {"label":"D", "x":3.75, "y":3.5}, {"label":"F", "x":4.75, "y":3.5}, {"label":"G", "x":5.75, "y":3.5}, {"label":"H", "x":6.75, "y":3.5}, {"label":"J", "x":7.75, "y":3.5}, {"label":"K", "x":8.75, "y":3.5}, {"label":"L", "x":9.75, "y":3.5}, {"label":":", "x":10.75, "y":3.5}, {"label":"\"", "x":11.75, "y":3.5}, {"label":"Enter", "x":12.75, "y":3.5, "w":2.25}, {"label":"4", "x":18.5, "y":3.5}, {"label":"5", "x":19.5, "y":3.5}, {"label":"6", "x":20.5, "y":3.5}, {"x":21.5, "y":3.5}, {"label":"Shift", "x":0, "y":4.5, "w":1.25}, {"x":1.25, "y":4.5}, {"label":"Z", "x":2.25, "y":4.5}, {"label":"X", "x":3.25, "y":4.5}, {"label":"C", "x":4.25, "y":4.5}, {"label":"V", "x":5.25, "y":4.5}, {"label":"B", "x":6.25, "y":4.5}, {"label":"N", "x":7.25, "y":4.5}, {"label":"M", "x":8.25, "y":4.5}, {"label":"<", "x":9.25, "y":4.5}, {"label":">", "x":10.25, "y":4.5}, {"label":"?", "x":11.25, "y":4.5}, {"label":"Shift", "x":12.25, "y":4.5, "w":1.75}, {"x":14, "y":4.5}, {"label":"\u2191", "x":16.25, "y":4.5}, {"label":"1", "x":18.5, "y":4.5}, {"label":"2", "x":19.5, "y":4.5}, {"label":"3", "x":20.5, "y":4.5}, {"label":"Enter", "x":21.5, "y":4.5, "h":2}, {"label":"Ctrl", "x":0, "y":5.5, "w":1.25}, {"label":"Win", "x":1.25, "y":5.5, "w":1.25}, {"label":"Alt", "x":2.5, "y":5.5, "w":1.25}, {"x":3.75, "y":5.5, "w":3}, {"x":6.75, "y":5.5, "w":3}, {"label":"Alt", "x":9.75, "y":5.5, "w":1.5}, {"label":"Win", "x":11.25, "y":5.5, "w":1.25}, {"label":"Menu", "x":12.5, "y":5.5, "w":1.25}, {"label":"Ctrl", "x":13.75, "y":5.5, "w":1.25}, {"label":"\u2190", "x":15.25, "y":5.5}, {"label":"\u2193", "x":16.25, "y":5.5}, {"label":"\u2192", "x":17.25, "y":5.5}, {"label":"0", "x":18.5, "y":5.5}, {"x":19.5, "y":5.5}, {"label":".", "x":20.5, "y":5.5}]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,35 @@
|
|||||||
|
/* Copyright 2017 Mathias Andersson <[email protected]>
|
||||||
|
*
|
||||||
|
* 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
|
||||||
|
|
||||||
|
//Layers
|
||||||
|
|
||||||
|
enum {
|
||||||
|
BASE,
|
||||||
|
};
|
||||||
|
|
||||||
|
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
|
[BASE] = LAYOUT_all(
|
||||||
|
KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS,
|
||||||
|
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_NO, KC_INS, KC_HOME, KC_PGUP, KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS,
|
||||||
|
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS,
|
||||||
|
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_P4, KC_P5, KC_P6, KC_NO,
|
||||||
|
KC_LSFT, KC_NO, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_NO, KC_RSFT, KC_UP, KC_P1, KC_P2, KC_P3, KC_PENT,
|
||||||
|
KC_LCTL, KC_LGUI, KC_LALT, KC_NO, KC_SPC, KC_RALT, KC_RGUI, KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_NO, KC_PDOT
|
||||||
|
),
|
||||||
|
|
||||||
|
};
|
||||||
@@ -0,0 +1,61 @@
|
|||||||
|
/* Copyright 2017 Mathias Andersson <[email protected]>
|
||||||
|
*
|
||||||
|
* 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
|
||||||
|
|
||||||
|
//Layers
|
||||||
|
|
||||||
|
enum {
|
||||||
|
BASE = 0,
|
||||||
|
FUNCTION,
|
||||||
|
ALTERNATE,
|
||||||
|
LAST,
|
||||||
|
};
|
||||||
|
|
||||||
|
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
|
[BASE] = LAYOUT_all(
|
||||||
|
KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS,
|
||||||
|
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_NO, KC_INS, KC_HOME, KC_PGUP, KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS,
|
||||||
|
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS,
|
||||||
|
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_P4, KC_P5, KC_P6, KC_NO,
|
||||||
|
KC_LSFT, KC_NO, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_NO, KC_RSFT, KC_UP, KC_P1, KC_P2, KC_P3, KC_PENT,
|
||||||
|
KC_LCTL, KC_LGUI, KC_LALT, KC_NO, KC_SPC, KC_RALT, KC_RGUI, KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_NO, KC_PDOT
|
||||||
|
),
|
||||||
|
[FUNCTION] = LAYOUT_all(
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
|
||||||
|
),
|
||||||
|
[ALTERNATE] = LAYOUT_all(
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
|
||||||
|
),
|
||||||
|
[LAST] = LAYOUT_all(
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
|
||||||
|
),
|
||||||
|
};
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
VIA_ENABLE = yes
|
||||||
@@ -0,0 +1,31 @@
|
|||||||
|
# MCU name
|
||||||
|
MCU = atmega32u4
|
||||||
|
|
||||||
|
# Bootloader selection
|
||||||
|
# Teensy halfkay
|
||||||
|
# Pro Micro caterina
|
||||||
|
# Atmel DFU atmel-dfu
|
||||||
|
# LUFA DFU lufa-dfu
|
||||||
|
# QMK DFU qmk-dfu
|
||||||
|
# ATmega32A bootloadHID
|
||||||
|
# ATmega328P USBasp
|
||||||
|
BOOTLOADER = atmel-dfu
|
||||||
|
|
||||||
|
# Build Options
|
||||||
|
# change yes to no to disable
|
||||||
|
#
|
||||||
|
BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration
|
||||||
|
MOUSEKEY_ENABLE = yes # Mouse keys
|
||||||
|
EXTRAKEY_ENABLE = yes # Audio control and System control
|
||||||
|
CONSOLE_ENABLE = no # Console for debug
|
||||||
|
COMMAND_ENABLE = no # Commands for debug and configuration
|
||||||
|
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
|
||||||
|
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
|
||||||
|
# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
|
||||||
|
NKRO_ENABLE = yes # USB Nkey Rollover
|
||||||
|
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
|
||||||
|
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight
|
||||||
|
MIDI_ENABLE = no # MIDI controls
|
||||||
|
UNICODE_ENABLE = no # Unicode
|
||||||
|
BLUETOOTH_ENABLE = no # Enable Bluetooth
|
||||||
|
AUDIO_ENABLE = no # Audio output
|
||||||
@@ -52,3 +52,5 @@
|
|||||||
KC_##L30, KC_##L31, KC_##L32, KC_##R30, KC_##R31, KC_##R32 \
|
KC_##L30, KC_##L31, KC_##L32, KC_##R30, KC_##R31, KC_##R32 \
|
||||||
)
|
)
|
||||||
// clang-format on
|
// clang-format on
|
||||||
|
|
||||||
|
#define LAYOUT_split_3x6_3 LAYOUT
|
||||||
@@ -1,3 +1,5 @@
|
|||||||
SRC += matrix.c \
|
SRC += matrix.c \
|
||||||
split_util.c \
|
split_util.c \
|
||||||
split_scomm.c
|
split_scomm.c
|
||||||
|
|
||||||
|
LAYOUTS = split_3x6_3
|
||||||
@@ -23,7 +23,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|||||||
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP,
|
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP,
|
||||||
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN,
|
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN,
|
||||||
KC_LSFT, KC_NO, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END,
|
KC_LSFT, KC_NO, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END,
|
||||||
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_NO, KC_LEFT, KC_DOWN, KC_RGHT
|
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_NO, MO(1), KC_LEFT, KC_DOWN, KC_RGHT
|
||||||
),
|
),
|
||||||
[1] = LAYOUT_all(
|
[1] = LAYOUT_all(
|
||||||
RGB_TOG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET,
|
RGB_TOG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET,
|
||||||
|
|||||||
+15
-15
@@ -32,7 +32,7 @@
|
|||||||
#define LAYOUT_ansi( \
|
#define LAYOUT_ansi( \
|
||||||
k00, k01, k11, k02, k12, k03, k13, k04, k14, k15, k06, k16, k07, k17, \
|
k00, k01, k11, k02, k12, k03, k13, k04, k14, k15, k06, k16, k07, k17, \
|
||||||
k20, k30, k21, k31, k22, k32, k23, k33, k24, k34, k25, k35, k26, k36, k37, \
|
k20, k30, k21, k31, k22, k32, k23, k33, k24, k34, k25, k35, k26, k36, k37, \
|
||||||
k40, k50, k41, k51, k42, k52, k43, k53, k44, k54, k45, k55, k56, k47, k57, \
|
k40, k50, k41, k51, k42, k52, k43, k53, k44, k54, k45, k55, k46, k47, k57, \
|
||||||
k60, k70, k61, k71, k62, k72, k63, k73, k64, k74, k65, k75, k76, k77, \
|
k60, k70, k61, k71, k62, k72, k63, k73, k64, k74, k65, k75, k76, k77, \
|
||||||
k80, k81, k91, k82, k92, k83, k93, k84, k94, k85, k95, k86, k87, k97, \
|
k80, k81, k91, k82, k92, k83, k93, k84, k94, k85, k95, k86, k87, k97, \
|
||||||
ka0, kb0, ka1, ka3, ka5, ka6, kb6, ka7, kb7 \
|
ka0, kb0, ka1, ka3, ka5, ka6, kb6, ka7, kb7 \
|
||||||
@@ -42,8 +42,8 @@
|
|||||||
{ XXX, k11, k12, k13, k14, k15, k16, k17 }, \
|
{ XXX, k11, k12, k13, k14, k15, k16, k17 }, \
|
||||||
{ k20, k21, k22, k23, k24, k25, k26, XXX }, \
|
{ k20, k21, k22, k23, k24, k25, k26, XXX }, \
|
||||||
{ k30, k31, k32, k33, k34, k35, k36, k37 }, \
|
{ k30, k31, k32, k33, k34, k35, k36, k37 }, \
|
||||||
{ k40, k41, k42, k43, k44, k45, XXX, k47 }, \
|
{ k40, k41, k42, k43, k44, k45, k46, k47 }, \
|
||||||
{ k50, k51, k52, k53, k54, k55, k56, k57 }, \
|
{ k50, k51, k52, k53, k54, k55, XXX, k57 }, \
|
||||||
{ k60, k61, k62, k63, k64, k65, XXX, XXX }, \
|
{ k60, k61, k62, k63, k64, k65, XXX, XXX }, \
|
||||||
{ k70, k71, k72, k73, k74, k75, k76, k77 }, \
|
{ k70, k71, k72, k73, k74, k75, k76, k77 }, \
|
||||||
{ k80, k81, k82, k83, k84, k85, k86, k87 }, \
|
{ k80, k81, k82, k83, k84, k85, k86, k87 }, \
|
||||||
@@ -55,7 +55,7 @@
|
|||||||
#define LAYOUT_ansi_wkl( \
|
#define LAYOUT_ansi_wkl( \
|
||||||
k00, k01, k11, k02, k12, k03, k13, k04, k14, k15, k06, k16, k07, k17, \
|
k00, k01, k11, k02, k12, k03, k13, k04, k14, k15, k06, k16, k07, k17, \
|
||||||
k20, k30, k21, k31, k22, k32, k23, k33, k24, k34, k25, k35, k26, k36, k37, \
|
k20, k30, k21, k31, k22, k32, k23, k33, k24, k34, k25, k35, k26, k36, k37, \
|
||||||
k40, k50, k41, k51, k42, k52, k43, k53, k44, k54, k45, k55, k56, k47, k57, \
|
k40, k50, k41, k51, k42, k52, k43, k53, k44, k54, k45, k55, k46, k47, k57, \
|
||||||
k60, k70, k61, k71, k62, k72, k63, k73, k64, k74, k65, k75, k76, k77, \
|
k60, k70, k61, k71, k62, k72, k63, k73, k64, k74, k65, k75, k76, k77, \
|
||||||
k80, k81, k91, k82, k92, k83, k93, k84, k94, k85, k95, k86, k87, k97, \
|
k80, k81, k91, k82, k92, k83, k93, k84, k94, k85, k95, k86, k87, k97, \
|
||||||
ka0, kb0, ka3, ka5, ka6, kb6, ka7, kb7 \
|
ka0, kb0, ka3, ka5, ka6, kb6, ka7, kb7 \
|
||||||
@@ -65,8 +65,8 @@
|
|||||||
{ XXX, k11, k12, k13, k14, k15, k16, k17 }, \
|
{ XXX, k11, k12, k13, k14, k15, k16, k17 }, \
|
||||||
{ k20, k21, k22, k23, k24, k25, k26, XXX }, \
|
{ k20, k21, k22, k23, k24, k25, k26, XXX }, \
|
||||||
{ k30, k31, k32, k33, k34, k35, k36, k37 }, \
|
{ k30, k31, k32, k33, k34, k35, k36, k37 }, \
|
||||||
{ k40, k41, k42, k43, k44, k45, XXX, k47 }, \
|
{ k40, k41, k42, k43, k44, k45, k46, k47 }, \
|
||||||
{ k50, k51, k52, k53, k54, k55, k56, k57 }, \
|
{ k50, k51, k52, k53, k54, k55, XXX, k57 }, \
|
||||||
{ k60, k61, k62, k63, k64, k65, XXX, XXX }, \
|
{ k60, k61, k62, k63, k64, k65, XXX, XXX }, \
|
||||||
{ k70, k71, k72, k73, k74, k75, k76, k77 }, \
|
{ k70, k71, k72, k73, k74, k75, k76, k77 }, \
|
||||||
{ k80, k81, k82, k83, k84, k85, k86, k87 }, \
|
{ k80, k81, k82, k83, k84, k85, k86, k87 }, \
|
||||||
@@ -78,7 +78,7 @@
|
|||||||
#define LAYOUT_iso( \
|
#define LAYOUT_iso( \
|
||||||
k00, k01, k11, k02, k12, k03, k13, k04, k14, k15, k06, k16, k07, k17, \
|
k00, k01, k11, k02, k12, k03, k13, k04, k14, k15, k06, k16, k07, k17, \
|
||||||
k20, k30, k21, k31, k22, k32, k23, k33, k24, k34, k25, k35, k26, k36, k37, \
|
k20, k30, k21, k31, k22, k32, k23, k33, k24, k34, k25, k35, k26, k36, k37, \
|
||||||
k40, k50, k41, k51, k42, k52, k43, k53, k44, k54, k45, k55, k56, k47, k57, \
|
k40, k50, k41, k51, k42, k52, k43, k53, k44, k54, k45, k55, k46, k47, k57, \
|
||||||
k60, k70, k61, k71, k62, k72, k63, k73, k64, k74, k65, k75, k76, k77, \
|
k60, k70, k61, k71, k62, k72, k63, k73, k64, k74, k65, k75, k76, k77, \
|
||||||
k80, k90, k81, k91, k82, k92, k83, k93, k84, k94, k85, k95, k86, k87, k97, \
|
k80, k90, k81, k91, k82, k92, k83, k93, k84, k94, k85, k95, k86, k87, k97, \
|
||||||
ka0, kb0, ka1, ka3, ka5, ka6, kb6, ka7, kb7 \
|
ka0, kb0, ka1, ka3, ka5, ka6, kb6, ka7, kb7 \
|
||||||
@@ -88,8 +88,8 @@
|
|||||||
{ XXX, k11, k12, k13, k14, k15, k16, k17 }, \
|
{ XXX, k11, k12, k13, k14, k15, k16, k17 }, \
|
||||||
{ k20, k21, k22, k23, k24, k25, k26, XXX }, \
|
{ k20, k21, k22, k23, k24, k25, k26, XXX }, \
|
||||||
{ k30, k31, k32, k33, k34, k35, k36, k37 }, \
|
{ k30, k31, k32, k33, k34, k35, k36, k37 }, \
|
||||||
{ k40, k41, k42, k43, k44, k45, XXX, k47 }, \
|
{ k40, k41, k42, k43, k44, k45, k46, k47 }, \
|
||||||
{ k50, k51, k52, k53, k54, k55, k56, k57 }, \
|
{ k50, k51, k52, k53, k54, k55, XXX, k57 }, \
|
||||||
{ k60, k61, k62, k63, k64, k65, XXX, XXX }, \
|
{ k60, k61, k62, k63, k64, k65, XXX, XXX }, \
|
||||||
{ k70, k71, k72, k73, k74, k75, k76, k77 }, \
|
{ k70, k71, k72, k73, k74, k75, k76, k77 }, \
|
||||||
{ k80, k81, k82, k83, k84, k85, k86, k87 }, \
|
{ k80, k81, k82, k83, k84, k85, k86, k87 }, \
|
||||||
@@ -101,7 +101,7 @@
|
|||||||
#define LAYOUT_iso_wkl( \
|
#define LAYOUT_iso_wkl( \
|
||||||
k00, k01, k11, k02, k12, k03, k13, k04, k14, k15, k06, k16, k07, k17, \
|
k00, k01, k11, k02, k12, k03, k13, k04, k14, k15, k06, k16, k07, k17, \
|
||||||
k20, k30, k21, k31, k22, k32, k23, k33, k24, k34, k25, k35, k26, k36, k37, \
|
k20, k30, k21, k31, k22, k32, k23, k33, k24, k34, k25, k35, k26, k36, k37, \
|
||||||
k40, k50, k41, k51, k42, k52, k43, k53, k44, k54, k45, k55, k56, k47, k57, \
|
k40, k50, k41, k51, k42, k52, k43, k53, k44, k54, k45, k55, k46, k47, k57, \
|
||||||
k60, k70, k61, k71, k62, k72, k63, k73, k64, k74, k65, k75, k76, k77, \
|
k60, k70, k61, k71, k62, k72, k63, k73, k64, k74, k65, k75, k76, k77, \
|
||||||
k80, k90, k81, k91, k82, k92, k83, k93, k84, k94, k85, k95, k86, k87, k97, \
|
k80, k90, k81, k91, k82, k92, k83, k93, k84, k94, k85, k95, k86, k87, k97, \
|
||||||
ka0, kb0, ka3, ka5, ka6, kb6, ka7, kb7 \
|
ka0, kb0, ka3, ka5, ka6, kb6, ka7, kb7 \
|
||||||
@@ -111,8 +111,8 @@
|
|||||||
{ XXX, k11, k12, k13, k14, k15, k16, k17 }, \
|
{ XXX, k11, k12, k13, k14, k15, k16, k17 }, \
|
||||||
{ k20, k21, k22, k23, k24, k25, k26, XXX }, \
|
{ k20, k21, k22, k23, k24, k25, k26, XXX }, \
|
||||||
{ k30, k31, k32, k33, k34, k35, k36, k37 }, \
|
{ k30, k31, k32, k33, k34, k35, k36, k37 }, \
|
||||||
{ k40, k41, k42, k43, k44, k45, XXX, k47 }, \
|
{ k40, k41, k42, k43, k44, k45, k46, k47 }, \
|
||||||
{ k50, k51, k52, k53, k54, k55, k56, k57 }, \
|
{ k50, k51, k52, k53, k54, k55, XXX, k57 }, \
|
||||||
{ k60, k61, k62, k63, k64, k65, XXX, XXX }, \
|
{ k60, k61, k62, k63, k64, k65, XXX, XXX }, \
|
||||||
{ k70, k71, k72, k73, k74, k75, k76, k77 }, \
|
{ k70, k71, k72, k73, k74, k75, k76, k77 }, \
|
||||||
{ k80, k81, k82, k83, k84, k85, k86, k87 }, \
|
{ k80, k81, k82, k83, k84, k85, k86, k87 }, \
|
||||||
@@ -124,7 +124,7 @@
|
|||||||
#define LAYOUT_all( \
|
#define LAYOUT_all( \
|
||||||
k00, k01, k11, k02, k12, k03, k13, k04, k14, k15, k06, k16, k07, k17, \
|
k00, k01, k11, k02, k12, k03, k13, k04, k14, k15, k06, k16, k07, k17, \
|
||||||
k20, k30, k21, k31, k22, k32, k23, k33, k24, k34, k25, k35, k26, k36, k27, k37, \
|
k20, k30, k21, k31, k22, k32, k23, k33, k24, k34, k25, k35, k26, k36, k27, k37, \
|
||||||
k40, k50, k41, k51, k42, k52, k43, k53, k44, k54, k45, k55, k56, k47, k57, \
|
k40, k50, k41, k51, k42, k52, k43, k53, k44, k54, k45, k55, k46, k47, k57, \
|
||||||
k60, k70, k61, k71, k62, k72, k63, k73, k64, k74, k65, k75, k76, k77, \
|
k60, k70, k61, k71, k62, k72, k63, k73, k64, k74, k65, k75, k76, k77, \
|
||||||
k80, k90, k81, k91, k82, k92, k83, k93, k84, k94, k85, k95, k86, k87, k97, \
|
k80, k90, k81, k91, k82, k92, k83, k93, k84, k94, k85, k95, k86, k87, k97, \
|
||||||
ka0, kb0, ka1, ka3, ka5, kb5, ka6, kb6, ka7, kb7 \
|
ka0, kb0, ka1, ka3, ka5, kb5, ka6, kb6, ka7, kb7 \
|
||||||
@@ -134,8 +134,8 @@
|
|||||||
{ XXX, k11, k12, k13, k14, k15, k16, k17 }, \
|
{ XXX, k11, k12, k13, k14, k15, k16, k17 }, \
|
||||||
{ k20, k21, k22, k23, k24, k25, k26, k27 }, \
|
{ k20, k21, k22, k23, k24, k25, k26, k27 }, \
|
||||||
{ k30, k31, k32, k33, k34, k35, k36, k37 }, \
|
{ k30, k31, k32, k33, k34, k35, k36, k37 }, \
|
||||||
{ k40, k41, k42, k43, k44, k45, XXX, k47 }, \
|
{ k40, k41, k42, k43, k44, k45, k46, k47 }, \
|
||||||
{ k50, k51, k52, k53, k54, k55, k56, k57 }, \
|
{ k50, k51, k52, k53, k54, k55, XXX, k57 }, \
|
||||||
{ k60, k61, k62, k63, k64, k65, XXX, XXX }, \
|
{ k60, k61, k62, k63, k64, k65, XXX, XXX }, \
|
||||||
{ k70, k71, k72, k73, k74, k75, k76, k77 }, \
|
{ k70, k71, k72, k73, k74, k75, k76, k77 }, \
|
||||||
{ k80, k81, k82, k83, k84, k85, k86, k87 }, \
|
{ k80, k81, k82, k83, k84, k85, k86, k87 }, \
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
|
|
||||||
#include "quantum.h"
|
#include "quantum.h"
|
||||||
|
|
||||||
// The first section contains all of the arguements
|
// The first section contains all of the arguments
|
||||||
// The second converts the arguments into a two-dimensional array
|
// The second converts the arguments into a two-dimensional array
|
||||||
#define LAYOUT( \
|
#define LAYOUT( \
|
||||||
k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, \
|
k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, \
|
||||||
|
|||||||
@@ -1,39 +1,6 @@
|
|||||||
#include QMK_KEYBOARD_H
|
#include QMK_KEYBOARD_H
|
||||||
#include "keymap_uk.h"
|
#include "keymap_uk.h"
|
||||||
|
#include "ajp10304.h"
|
||||||
extern keymap_config_t keymap_config;
|
|
||||||
|
|
||||||
enum planck_layers {
|
|
||||||
_QWERTY,
|
|
||||||
_MAC,
|
|
||||||
_LOWER,
|
|
||||||
_MLWR,
|
|
||||||
_RAISE,
|
|
||||||
_MRSE,
|
|
||||||
_FUNC,
|
|
||||||
_MFNC,
|
|
||||||
_FUNC2,
|
|
||||||
_MFNC2,
|
|
||||||
_ADJUST,
|
|
||||||
_MOUSE
|
|
||||||
};
|
|
||||||
|
|
||||||
enum planck_keycodes {
|
|
||||||
QWERTY = SAFE_RANGE,
|
|
||||||
MAC,
|
|
||||||
FUNC,
|
|
||||||
MFNC,
|
|
||||||
FUNC2,
|
|
||||||
MFNC2,
|
|
||||||
LOWER,
|
|
||||||
MLWR,
|
|
||||||
RAISE,
|
|
||||||
MRSE,
|
|
||||||
MOUSE,
|
|
||||||
DYNAMIC_MACRO_RANGE
|
|
||||||
};
|
|
||||||
|
|
||||||
#include "dynamic_macro.h"
|
|
||||||
|
|
||||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
|
|
||||||
@@ -49,7 +16,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|||||||
* `-------------------------------------------------------------------------------------------------'
|
* `-------------------------------------------------------------------------------------------------'
|
||||||
*/
|
*/
|
||||||
[_QWERTY] = LAYOUT(
|
[_QWERTY] = 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 ,
|
LT(_NUMPAD, KC_ESC), KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC ,
|
||||||
MT(MOD_LSFT, KC_TAB), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, MT(MOD_RSFT, KC_ENT) ,
|
MT(MOD_LSFT, KC_TAB), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, MT(MOD_RSFT, KC_ENT) ,
|
||||||
KC_LSHIFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSHIFT ,
|
KC_LSHIFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSHIFT ,
|
||||||
MO(_FUNC), KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_BSPC, KC_LCTL, KC_LALT, KC_SPC, RAISE, KC_LSHIFT, KC_BTN2, KC_RCTL, MO(_FUNC2)
|
MO(_FUNC), KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_BSPC, KC_LCTL, KC_LALT, KC_SPC, RAISE, KC_LSHIFT, KC_BTN2, KC_RCTL, MO(_FUNC2)
|
||||||
@@ -103,10 +70,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|||||||
* `-------------------------------------------------------------------------------------------------'
|
* `-------------------------------------------------------------------------------------------------'
|
||||||
*/
|
*/
|
||||||
[_RAISE] = LAYOUT(
|
[_RAISE] = LAYOUT(
|
||||||
KC_GRV, XXXXXXX, M(1), KC_LBRC, KC_RBRC, XXXXXXX, XXXXXXX, KC_PGUP, KC_HOME, KC_PGDOWN, XXXXXXX, KC_PSCREEN ,
|
KC_GRV, XXXXXXX, M_WORD_SEL, KC_LBRC, KC_RBRC, XXXXXXX, XXXXXXX, KC_PGUP, KC_HOME, KC_PGDOWN, XXXXXXX, KC_PSCREEN ,
|
||||||
KC_GRV, XXXXXXX, XXXXXXX, LSFT(KC_9), LSFT(KC_0), XXXXXXX, XXXXXXX, KC_HOME, KC_UP, KC_END, XXXXXXX, LCTL(LSFT(KC_EQL)) ,
|
KC_GRV, XXXXXXX, XXXXXXX, LSFT(KC_9), LSFT(KC_0), XXXXXXX, XXXXXXX, KC_HOME, KC_UP, KC_END, XXXXXXX, LCTL(LSFT(KC_EQL)) ,
|
||||||
_______, XXXXXXX, XXXXXXX, LSFT(KC_LBRC), LSFT(KC_RBRC), XXXXXXX, LCTL(KC_LEFT), KC_LEFT, KC_DOWN, KC_RIGHT, LCTL(KC_RIGHT), LCTL(KC_MINS) ,
|
_______, XXXXXXX, XXXXXXX, LSFT(KC_LBRC), LSFT(KC_RBRC), XXXXXXX, LCTL(KC_LEFT), KC_LEFT, KC_DOWN, KC_RIGHT, LCTL(KC_RIGHT), LCTL(KC_MINS) ,
|
||||||
MO(_MOUSE), _______, _______, _______, _______, KC_LALT, _______, _______, KC_ENT, _______, XXXXXXX, _______, _______, _______
|
MO(_MOUSE), _______, _______, _______, _______, KC_LALT, _______, _______, KC_ENT, _______, XXXXXXX, _______, _______, _______
|
||||||
),
|
),
|
||||||
|
|
||||||
/* Adjust (Lower + Raise)
|
/* Adjust (Lower + Raise)
|
||||||
@@ -121,7 +88,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|||||||
* `-------------------------------------------------------------------------------------------------'
|
* `-------------------------------------------------------------------------------------------------'
|
||||||
*/
|
*/
|
||||||
[_ADJUST] = LAYOUT(
|
[_ADJUST] = LAYOUT(
|
||||||
M(0), RESET, QWERTY, _______, _______, DYN_REC_START1, DYN_REC_START2, _______, _______, _______, _______, KC_DEL ,
|
M_CUSTOM, RESET, QWERTY, _______, _______, DYN_REC_START1, DYN_REC_START2, _______, _______, _______, _______, KC_DEL ,
|
||||||
KC_CAPS, _______, _______, _______, _______, DYN_MACRO_PLAY1, DYN_MACRO_PLAY2, KC_AUDIO_MUTE, KC_AUDIO_VOL_UP, KC_MEDIA_PLAY_PAUSE, _______, _______ ,
|
KC_CAPS, _______, _______, _______, _______, DYN_MACRO_PLAY1, DYN_MACRO_PLAY2, KC_AUDIO_MUTE, KC_AUDIO_VOL_UP, KC_MEDIA_PLAY_PAUSE, _______, _______ ,
|
||||||
TG(_MAC), _______, _______, _______, _______, DYN_REC_STOP, DYN_REC_STOP, KC_MEDIA_PREV_TRACK, KC_AUDIO_VOL_DOWN, KC_MEDIA_NEXT_TRACK, _______, _______ ,
|
TG(_MAC), _______, _______, _______, _______, DYN_REC_STOP, DYN_REC_STOP, KC_MEDIA_PREV_TRACK, KC_AUDIO_VOL_DOWN, KC_MEDIA_NEXT_TRACK, _______, _______ ,
|
||||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
|
||||||
@@ -129,7 +96,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|||||||
|
|
||||||
/* Mouse
|
/* Mouse
|
||||||
* ,------------------------------------------ |-----------------------------------------.
|
* ,------------------------------------------ |-----------------------------------------.
|
||||||
* | ESC | | | | | | | | | | | | |
|
* | ESC | | | | | | | | | BTN3 | | | |
|
||||||
* |------+------+------+------+------+------- |------+------+------+------+------+------|
|
* |------+------+------+------+------+------- |------+------+------+------+------+------|
|
||||||
* | ACC0 | ACC1 | ACC2 | | | | | | BTN1 | UP | BTN2 | | |
|
* | ACC0 | ACC1 | ACC2 | | | | | | BTN1 | UP | BTN2 | | |
|
||||||
* |------+------+------+------+------+------| |------+------+------+------+------+------|
|
* |------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||||
@@ -139,12 +106,32 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|||||||
* `-------------------------------------------------------------------------------------------------'
|
* `-------------------------------------------------------------------------------------------------'
|
||||||
*/
|
*/
|
||||||
[_MOUSE] = LAYOUT(
|
[_MOUSE] = LAYOUT(
|
||||||
KC_ESC , _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ ,
|
KC_ESC , _______, _______, _______, _______, _______, _______, _______, KC_MS_BTN3, _______, _______, _______ ,
|
||||||
KC_MS_ACCEL0, KC_MS_ACCEL1, KC_MS_ACCEL2, _______, _______, _______, _______, KC_MS_BTN1, KC_MS_UP, KC_MS_BTN2, _______, _______ ,
|
KC_MS_ACCEL0, KC_MS_ACCEL1, KC_MS_ACCEL2, _______, _______, _______, _______, KC_MS_BTN1, KC_MS_UP, KC_MS_BTN2, _______, _______ ,
|
||||||
KC_MS_ACCEL0, KC_MS_ACCEL1, KC_MS_ACCEL2, _______, _______, _______, _______, KC_MS_LEFT, KC_MS_DOWN, KC_MS_RIGHT, _______, _______ ,
|
KC_MS_ACCEL0, KC_MS_ACCEL1, KC_MS_ACCEL2, _______, _______, _______, _______, KC_MS_LEFT, KC_MS_DOWN, KC_MS_RIGHT, _______, _______ ,
|
||||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
|
||||||
),
|
),
|
||||||
|
|
||||||
|
|
||||||
|
/* Num Pad
|
||||||
|
* ,------------------------------------------ |-----------------------------------------.
|
||||||
|
* | ESC | | | | | | |NMLOCK| 7 | 8 | 9 | / | |
|
||||||
|
* |------+------+------+------+------+------- |------+------+------+------+------+------|
|
||||||
|
* | | | | | | | | | 4 | 5 | 6 | * | |
|
||||||
|
* |------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||||
|
* | | | | | | | | | 1 | 2 | 3 | + | |
|
||||||
|
* |------+------+------+------+------+------|------+------+------+------+------+------+------+------|
|
||||||
|
* | | | | | | | | | | 0 | . | , | - | |
|
||||||
|
* `-------------------------------------------------------------------------------------------------'
|
||||||
|
*/
|
||||||
|
[_NUMPAD] = LAYOUT(
|
||||||
|
_______, _______, _______, _______, _______, _______, KC_NLCK, KC_KP_7, KC_KP_8, KC_KP_9, KC_KP_SLASH, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, KC_KP_4, KC_KP_5, KC_KP_6, KC_KP_ASTERISK, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, KC_KP_1, KC_KP_2, KC_KP_3, KC_KP_PLUS, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, KC_KP_0, KC_KP_DOT, KC_COMM, KC_KP_MINUS, _______
|
||||||
|
),
|
||||||
|
|
||||||
|
|
||||||
/* Function 2 (Right hand side)
|
/* Function 2 (Right hand side)
|
||||||
* ,------------------------------------------ |-----------------------------------------.
|
* ,------------------------------------------ |-----------------------------------------.
|
||||||
* | | |WRDSEL| | | | | LNDEL| | | | | |
|
* | | |WRDSEL| | | | | LNDEL| | | | | |
|
||||||
@@ -157,10 +144,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|||||||
* `-------------------------------------------------------------------------------------------------'
|
* `-------------------------------------------------------------------------------------------------'
|
||||||
*/
|
*/
|
||||||
[_FUNC2] = LAYOUT(
|
[_FUNC2] = LAYOUT(
|
||||||
_______, _______, M(1), _______, _______, _______, M(5), _______, _______, _______, _______, _______,
|
_______, _______, M_WORD_SEL, _______, _______, _______, M_LINE_DEL, _______, _______, _______, _______, _______,
|
||||||
_______, _______, M(3), M(7), _______, _______, _______, M(10), _______, _______, _______, _______,
|
_______, _______, M_LINE_SEL, M_DUP, _______, _______, _______, M_JOIN, _______, _______, _______, _______,
|
||||||
_______, LCTL(KC_Z), LCTL(KC_X), LCTL(KC_C), LCTL(KC_V), _______, _______, _______, _______, _______, _______, M(98) ,
|
_______, LCTL(KC_Z), LCTL(KC_X), LCTL(KC_C), LCTL(KC_V), _______, _______, _______, _______, _______, _______, M_MODE,
|
||||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
|
||||||
),
|
),
|
||||||
|
|
||||||
[_MAC] = LAYOUT(
|
[_MAC] = LAYOUT(
|
||||||
@@ -178,10 +165,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|||||||
),
|
),
|
||||||
|
|
||||||
[_MRSE] = LAYOUT(
|
[_MRSE] = LAYOUT(
|
||||||
_______, _______, M(2), _______, _______, _______, _______, _______, _______, _______, _______, _______ ,
|
_______, _______, M_WORD_SEL_MAC, _______, _______, _______, _______, _______, _______, _______, _______, _______ ,
|
||||||
_______, _______, _______, _______, _______, _______, _______, LCTL(KC_A), _______, LCTL(KC_E), _______, LGUI(KC_EQL) ,
|
_______, _______, _______, _______, _______, _______, _______, LCTL(KC_A), _______, LCTL(KC_E), _______, LGUI(KC_EQL) ,
|
||||||
_______, _______, _______, _______, _______, _______, LALT(KC_LEFT), _______, _______, _______, LALT(KC_RIGHT), LGUI(KC_MINS) ,
|
_______, _______, _______, _______, _______, _______, LALT(KC_LEFT), _______, _______, _______, LALT(KC_RIGHT), LGUI(KC_MINS) ,
|
||||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
|
||||||
),
|
),
|
||||||
|
|
||||||
[_MFNC] = LAYOUT(
|
[_MFNC] = LAYOUT(
|
||||||
@@ -192,151 +179,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|||||||
),
|
),
|
||||||
|
|
||||||
[_MFNC2] = LAYOUT(
|
[_MFNC2] = LAYOUT(
|
||||||
_______, _______, M(2), _______, _______, _______, M(6), _______, _______, _______, _______, _______,
|
_______, _______, M_WORD_SEL_MAC, _______, _______, _______, M_LINE_DEL_MAC, _______, _______, _______, _______, _______,
|
||||||
_______, _______, M(4), M(8), _______, _______, _______, M(10), _______, _______, _______, _______,
|
_______, _______, M_LINE_SEL_MAC, M_DUP_MAC, _______, _______, _______, M_JOIN_MAC, _______, _______, _______, _______,
|
||||||
_______, LGUI(KC_Z), LGUI(KC_X), LGUI(KC_C), LGUI(KC_V), _______, _______, _______, _______, _______, _______, M(99) ,
|
_______, LGUI(KC_Z), LGUI(KC_X), LGUI(KC_C), LGUI(KC_V), _______, _______, _______, _______, _______, _______, M_MODE_MAC,
|
||||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
|
||||||
)
|
)
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
void persistant_default_layer_set(uint16_t default_layer) {
|
|
||||||
eeconfig_update_default_layer(default_layer);
|
|
||||||
default_layer_set(default_layer);
|
|
||||||
}
|
|
||||||
|
|
||||||
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
|
||||||
|
|
||||||
if (!process_record_dynamic_macro(keycode, record)) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
switch (keycode) {
|
|
||||||
case QWERTY:
|
|
||||||
if (record->event.pressed) {
|
|
||||||
persistant_default_layer_set(1UL<<_QWERTY);
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
case LOWER:
|
|
||||||
if (record->event.pressed) {
|
|
||||||
layer_on(_LOWER);
|
|
||||||
update_tri_layer(_LOWER, _RAISE, _ADJUST);
|
|
||||||
} else {
|
|
||||||
layer_off(_LOWER);
|
|
||||||
update_tri_layer(_LOWER, _RAISE, _ADJUST);
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
case RAISE:
|
|
||||||
if (record->event.pressed) {
|
|
||||||
layer_on(_RAISE);
|
|
||||||
update_tri_layer(_LOWER, _RAISE, _ADJUST);
|
|
||||||
} else {
|
|
||||||
layer_off(_RAISE);
|
|
||||||
update_tri_layer(_LOWER, _RAISE, _ADJUST);
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
case MLWR:
|
|
||||||
if (record->event.pressed) {
|
|
||||||
layer_on(_LOWER);
|
|
||||||
layer_on(_MLWR);
|
|
||||||
update_tri_layer(_LOWER, _RAISE, _ADJUST);
|
|
||||||
} else {
|
|
||||||
layer_off(_LOWER);
|
|
||||||
layer_off(_MLWR);
|
|
||||||
update_tri_layer(_LOWER, _RAISE, _ADJUST);
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
case MRSE:
|
|
||||||
if (record->event.pressed) {
|
|
||||||
layer_on(_RAISE);
|
|
||||||
layer_on(_MRSE);
|
|
||||||
update_tri_layer(_LOWER, _RAISE, _ADJUST);
|
|
||||||
} else {
|
|
||||||
layer_off(_RAISE);
|
|
||||||
layer_off(_MRSE);
|
|
||||||
update_tri_layer(_LOWER, _RAISE, _ADJUST);
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
case MFNC:
|
|
||||||
if (record->event.pressed) {
|
|
||||||
layer_on(_FUNC);
|
|
||||||
layer_on(_MFNC);
|
|
||||||
} else {
|
|
||||||
layer_off(_FUNC);
|
|
||||||
layer_off(_MFNC);
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
case MFNC2:
|
|
||||||
if (record->event.pressed) {
|
|
||||||
layer_on(_FUNC2);
|
|
||||||
layer_on(_MFNC2);
|
|
||||||
} else {
|
|
||||||
layer_off(_FUNC2);
|
|
||||||
layer_off(_MFNC2);
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
const macro_t *action_get_macro(keyrecord_t *record, uint8_t keycode, uint8_t opt) {
|
|
||||||
// These would trigger when you hit a key mapped as M(0)
|
|
||||||
if (record->event.pressed) {
|
|
||||||
switch(keycode) {
|
|
||||||
case 0: // Some custom string here
|
|
||||||
SEND_STRING("");
|
|
||||||
return false;
|
|
||||||
|
|
||||||
case 1: // Word Select
|
|
||||||
SEND_STRING(SS_DOWN(X_LCTRL) SS_TAP(X_RIGHT) SS_DOWN(X_LSHIFT) SS_TAP(X_LEFT) SS_UP(X_LSHIFT) SS_UP(X_LCTRL));
|
|
||||||
return false;
|
|
||||||
|
|
||||||
case 2: // Word Select Mac
|
|
||||||
SEND_STRING(SS_DOWN(X_LALT) SS_TAP(X_RIGHT) SS_DOWN(X_LSHIFT) SS_TAP(X_LEFT) SS_UP(X_LSHIFT) SS_UP(X_LALT));
|
|
||||||
return false;
|
|
||||||
|
|
||||||
case 3: // Line Select
|
|
||||||
SEND_STRING(SS_TAP(X_HOME) SS_DOWN(X_LSHIFT) SS_TAP(X_END) SS_UP(X_LSHIFT));
|
|
||||||
return false;
|
|
||||||
|
|
||||||
case 4: // Line Select Mac
|
|
||||||
SEND_STRING(SS_LCTRL("a") SS_DOWN(X_LSHIFT) SS_LCTRL("e") SS_UP(X_LSHIFT));
|
|
||||||
return false;
|
|
||||||
|
|
||||||
case 5: // Line Delete
|
|
||||||
SEND_STRING(SS_TAP(X_HOME) SS_DOWN(X_LSHIFT) SS_TAP(X_END) SS_UP(X_LSHIFT));
|
|
||||||
SEND_STRING(SS_TAP(X_BSPACE));
|
|
||||||
return false;
|
|
||||||
|
|
||||||
case 6: // Line Delete Mac
|
|
||||||
SEND_STRING(SS_LCTRL("a") SS_DOWN(X_LSHIFT) SS_LCTRL("e") SS_UP(X_LSHIFT));
|
|
||||||
SEND_STRING(SS_TAP(X_BSPACE));
|
|
||||||
return false;
|
|
||||||
|
|
||||||
case 7: // Duplicate Selection
|
|
||||||
SEND_STRING(SS_LCTRL("c") SS_TAP(X_RIGHT) SS_LCTRL("v"));
|
|
||||||
return false;
|
|
||||||
|
|
||||||
case 8: // Duplicate Selection Mac
|
|
||||||
SEND_STRING(SS_LGUI("c") SS_TAP(X_RIGHT) SS_LGUI("v"));
|
|
||||||
return false;
|
|
||||||
|
|
||||||
case 9: // Join line
|
|
||||||
SEND_STRING(SS_TAP(X_END) SS_TAP(X_DELETE));
|
|
||||||
return false;
|
|
||||||
|
|
||||||
case 10: // Join line Mac
|
|
||||||
SEND_STRING(SS_LCTRL("e") SS_TAP(X_DELETE));
|
|
||||||
return false;
|
|
||||||
|
|
||||||
case 98: // Print mode
|
|
||||||
SEND_STRING("PC");
|
|
||||||
return false;
|
|
||||||
|
|
||||||
case 99: // Print mode
|
|
||||||
SEND_STRING("OSX");
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return MACRO_NONE;
|
|
||||||
};
|
|
||||||
@@ -1,11 +1,15 @@
|
|||||||
# AJP10304 Custom Atreus50 Layout
|
# AJP10304 Custom Atreus50 Layout
|
||||||
# Also available for the Planck and JJ40
|
# Also available for the Planck, Shark and JJ40
|
||||||
|
|
||||||
**Note:** In the tables below where there are two characters on a key,
|
**Note:** In the tables below where there are two characters on a key,
|
||||||
the second is the output when shift is applied.
|
the second is the output when shift is applied.
|
||||||
|
|
||||||
**Note:** The below tables assume a UK layout.
|
**Note:** The below tables assume a UK layout.
|
||||||
|
|
||||||
|
#### Flashing
|
||||||
|
|
||||||
|
`make handwired/atreus50:ajp10304:flash`
|
||||||
|
|
||||||
##### Main Qwerty Layer
|
##### Main Qwerty Layer
|
||||||
|
|
||||||
* Tab: when held, operates as shift.
|
* Tab: when held, operates as shift.
|
||||||
@@ -43,13 +47,13 @@ Activated when `Lower` is held in the above `qwerty` layer.
|
|||||||
| Shift | \| | `¬ | #~ | '@ | -_ | | | =+ | #~ | [{ | ]} | '@ |Shift |
|
| Shift | \| | `¬ | #~ | '@ | -_ | | | =+ | #~ | [{ | ]} | '@ |Shift |
|
||||||
| | | | |Lower | Del | Ctrl | Alt |Space | | Next | Vol- | Vol+ | Play |
|
| | | | |Lower | Del | Ctrl | Alt |Space | | Next | Vol- | Vol+ | Play |
|
||||||
|
|
||||||
##### Raise Layer
|
##### Raise Layer
|
||||||
Activated when `Raise` is held in the above `qwerty` layer.
|
Activated when `Raise` is held in the above `qwerty` layer.
|
||||||
|
|
||||||
* Preferred layer for typing brackets.
|
* Preferred layer for typing brackets.
|
||||||
* Allows for cursor navigation to be used solely with the right hand.
|
* Allows for cursor navigation to be used solely with the right hand.
|
||||||
* WRDSEL: Select the word where the cursor is.
|
* WRDSEL: Select the word where the cursor is.
|
||||||
* |< and >|: Apply `ctrl` to `left` and `right` respectively for word jumping.
|
* |< and >|: Apply `ctrl` to `left` and `right` respectively for word jumping.
|
||||||
|
|
||||||
| | | | | | | | | | | | | | |
|
| | | | | | | | | | | | | | |
|
||||||
| :---: |:----:| :---:| :---:| :---:| :---:| :---:| :---:| :---: | :---:| :---:| :---:| :---: | :---:|
|
| :---: |:----:| :---:| :---:| :---:| :---:| :---:| :---:| :---: | :---:| :---:| :---:| :---: | :---:|
|
||||||
@@ -98,11 +102,20 @@ Activated when `fn` and `raise` held together.
|
|||||||
|
|
||||||
| | | | | | | | | | | | | | |
|
| | | | | | | | | | | | | | |
|
||||||
| :---: | :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:|
|
| :---: | :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:|
|
||||||
| ESC | | | | | | | | | | | | | |
|
| ESC | | | | | | | | | | BTN3 | | | |
|
||||||
| ACC0 | ACC1 | ACC2 | | | | | | | BTN1 | UP | BTN2 | | |
|
| ACC0 | ACC1 | ACC2 | | | | | | | BTN1 | UP | BTN2 | | |
|
||||||
| ACC0 | ACC1 | ACC2 | | | | | | | LEFT | DOWN | RIGHT| | |
|
| ACC0 | ACC1 | ACC2 | | | | | | | LEFT | DOWN | RIGHT| | |
|
||||||
| | | | | | | Ctrl | Alt | | | | | | |
|
| | | | | | | Ctrl | Alt | | | | | | |
|
||||||
|
|
||||||
|
##### Number Pad Layout
|
||||||
|
Activated when holding `Esc` key.
|
||||||
|
|
||||||
|
| | | | | | | | | | | | | | |
|
||||||
|
| :---: | :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:|
|
||||||
|
| | | | | | | | |NMLOCK| 7 | 8 | 9 | / | |
|
||||||
|
| | | | | | | | | | 4 | 5 | 6 | * | |
|
||||||
|
| | | | | | | | | | 1 | 2 | 3 | + | |
|
||||||
|
| | | | | | | Ctrl | Alt | | 0 | . | , | - | |
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
##Program Command
|
|
||||||
teensy_loader_cli -w -mmcu=atmega32u4 handwired_atreus50_ajp10304.hex
|
|
||||||
@@ -1,8 +1,3 @@
|
|||||||
AUDIO_ENABLE = no
|
AUDIO_ENABLE = no
|
||||||
MOUSEKEY_ENABLE = yes
|
MOUSEKEY_ENABLE = yes
|
||||||
|
|
||||||
TEMP := $(OPT_DEFS)
|
|
||||||
OPT_DEFS = $(filter-out -DBOOTLOADER_SIZE=4096,$(TEMP))
|
|
||||||
OPT_DEFS += -DBOOTLOADER_SIZE=512
|
|
||||||
|
|
||||||
BOOTLOADER = halfkay
|
BOOTLOADER = halfkay
|
||||||
@@ -0,0 +1,51 @@
|
|||||||
|
/*
|
||||||
|
Copyright 2020 boss566y
|
||||||
|
|
||||||
|
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 0x5048 //PH
|
||||||
|
#define PRODUCT_ID 0x0001
|
||||||
|
#define DEVICE_VER 0x0001
|
||||||
|
#define MANUFACTURER PH
|
||||||
|
#define PRODUCT Redragon Vara
|
||||||
|
#define DESCRIPTION HandWired Redragon Vara
|
||||||
|
|
||||||
|
/* key matrix size */
|
||||||
|
#define MATRIX_ROWS 12
|
||||||
|
#define MATRIX_COLS 11
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Keyboard Matrix Assignments
|
||||||
|
*
|
||||||
|
* Change this to how you wired your keyboard
|
||||||
|
* COLS: AVR pins used for columns, left to right
|
||||||
|
* ROWS: AVR pins used for rows, top to bottom
|
||||||
|
* DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode)
|
||||||
|
* ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode)
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
#define MATRIX_ROW_PINS { B0, B1, B2, B3, B7, D0, F0, F1, F4, F5, F6, F7 }
|
||||||
|
#define MATRIX_COL_PINS { D1, D2, D3, C6, D5, C7, D4, D7, B4, B5, B6 }
|
||||||
|
|
||||||
|
#define DIODE_DIRECTION COL2ROW
|
||||||
|
|
||||||
|
|
||||||
|
// generated by KBFirmware JSON to QMK Parser
|
||||||
|
// https://noroadsleft.github.io/kbf_qmk_converter/
|
||||||
@@ -0,0 +1,118 @@
|
|||||||
|
{
|
||||||
|
"keyboard_name": "Handwired Redragon Vara",
|
||||||
|
"url": "",
|
||||||
|
"maintainer": "qmk",
|
||||||
|
"width": 22.5,
|
||||||
|
"height": 6.5,
|
||||||
|
"layouts": {
|
||||||
|
"LAYOUT_fullsize_ansi": {
|
||||||
|
"layout": [
|
||||||
|
{"label":"K00 (B0,D1)", "x":0, "y":0},
|
||||||
|
{"label":"K02 (B0,D3)", "x":2, "y":0},
|
||||||
|
{"label":"K03 (B0,C6)", "x":3, "y":0},
|
||||||
|
{"label":"K04 (B0,D5)", "x":4, "y":0},
|
||||||
|
{"label":"K05 (B0,C7)", "x":5, "y":0},
|
||||||
|
{"label":"K07 (B0,D7)", "x":6.5, "y":0},
|
||||||
|
{"label":"K08 (B0,B4)", "x":7.5, "y":0},
|
||||||
|
{"label":"K09 (B0,B5)", "x":8.5, "y":0},
|
||||||
|
{"label":"K0A (B0,B6)", "x":9.5, "y":0},
|
||||||
|
{"label":"K6A (F0,B6)", "x":11, "y":0},
|
||||||
|
{"label":"K69 (F0,B5)", "x":12, "y":0},
|
||||||
|
{"label":"K68 (F0,B4)", "x":13, "y":0},
|
||||||
|
{"label":"K67 (F0,D7)", "x":14, "y":0},
|
||||||
|
{"label":"K66 (F0,D4)", "x":15.25, "y":0},
|
||||||
|
{"label":"K65 (F0,C7)", "x":16.25, "y":0},
|
||||||
|
{"label":"K64 (F0,D5)", "x":17.25, "y":0},
|
||||||
|
{"label":"K10 (B1,D1)", "x":0, "y":1.5},
|
||||||
|
{"label":"K11 (B1,D2)", "x":1, "y":1.5},
|
||||||
|
{"label":"K12 (B1,D3)", "x":2, "y":1.5},
|
||||||
|
{"label":"K13 (B1,C6)", "x":3, "y":1.5},
|
||||||
|
{"label":"K14 (B1,D5)", "x":4, "y":1.5},
|
||||||
|
{"label":"K15 (B1,C7)", "x":5, "y":1.5},
|
||||||
|
{"label":"K16 (B1,D4)", "x":6, "y":1.5},
|
||||||
|
{"label":"K17 (B1,D7)", "x":7, "y":1.5},
|
||||||
|
{"label":"K18 (B1,B4)", "x":8, "y":1.5},
|
||||||
|
{"label":"K19 (B1,B5)", "x":9, "y":1.5},
|
||||||
|
{"label":"K1A (B1,B6)", "x":10, "y":1.5},
|
||||||
|
{"label":"K7A (F1,B6)", "x":11, "y":1.5},
|
||||||
|
{"label":"K79 (F1,B5)", "x":12, "y":1.5},
|
||||||
|
{"label":"K78 (F1,B4)", "x":13, "y":1.5, "w":2},
|
||||||
|
{"label":"K76 (F1,D4)", "x":15.25, "y":1.5},
|
||||||
|
{"label":"K75 (F1,C7)", "x":16.25, "y":1.5},
|
||||||
|
{"label":"K74 (F1,D5)", "x":17.25, "y":1.5},
|
||||||
|
{"label":"K73 (F1,C6)", "x":18.5, "y":1.5},
|
||||||
|
{"label":"K72 (F1,D3)", "x":19.5, "y":1.5},
|
||||||
|
{"label":"K71 (F1,D2)", "x":20.5, "y":1.5},
|
||||||
|
{"label":"K70 (F1,D1)", "x":21.5, "y":1.5},
|
||||||
|
{"label":"K20 (B2,D1)", "x":0, "y":2.5, "w":1.5},
|
||||||
|
{"label":"K21 (B2,D2)", "x":1.5, "y":2.5},
|
||||||
|
{"label":"K22 (B2,D3)", "x":2.5, "y":2.5},
|
||||||
|
{"label":"K23 (B2,C6)", "x":3.5, "y":2.5},
|
||||||
|
{"label":"K24 (B2,D5)", "x":4.5, "y":2.5},
|
||||||
|
{"label":"K25 (B2,C7)", "x":5.5, "y":2.5},
|
||||||
|
{"label":"K26 (B2,D4)", "x":6.5, "y":2.5},
|
||||||
|
{"label":"K27 (B2,D7)", "x":7.5, "y":2.5},
|
||||||
|
{"label":"K28 (B2,B4)", "x":8.5, "y":2.5},
|
||||||
|
{"label":"K29 (B2,B5)", "x":9.5, "y":2.5},
|
||||||
|
{"label":"K2A (B2,B6)", "x":10.5, "y":2.5},
|
||||||
|
{"label":"K8A (F4,B6)", "x":11.5, "y":2.5},
|
||||||
|
{"label":"K89 (F4,B5)", "x":12.5, "y":2.5},
|
||||||
|
{"label":"K87 (F4,D7)", "x":13.5, "y":2.5, "w":1.5},
|
||||||
|
{"label":"K86 (F4,D4)", "x":15.25, "y":2.5},
|
||||||
|
{"label":"K85 (F4,C7)", "x":16.25, "y":2.5},
|
||||||
|
{"label":"K84 (F4,D5)", "x":17.25, "y":2.5},
|
||||||
|
{"label":"K83 (F4,C6)", "x":18.5, "y":2.5},
|
||||||
|
{"label":"K82 (F4,D3)", "x":19.5, "y":2.5},
|
||||||
|
{"label":"K81 (F4,D2)", "x":20.5, "y":2.5},
|
||||||
|
{"label":"K90 (F5,D1)", "x":21.5, "y":2.5, "h":2},
|
||||||
|
{"label":"K30 (B3,D1)", "x":0, "y":3.5, "w":1.75},
|
||||||
|
{"label":"K31 (B3,D2)", "x":1.75, "y":3.5},
|
||||||
|
{"label":"K32 (B3,D3)", "x":2.75, "y":3.5},
|
||||||
|
{"label":"K33 (B3,C6)", "x":3.75, "y":3.5},
|
||||||
|
{"label":"K34 (B3,D5)", "x":4.75, "y":3.5},
|
||||||
|
{"label":"K35 (B3,C7)", "x":5.75, "y":3.5},
|
||||||
|
{"label":"K36 (B3,D4)", "x":6.75, "y":3.5},
|
||||||
|
{"label":"K37 (B3,D7)", "x":7.75, "y":3.5},
|
||||||
|
{"label":"K38 (B3,B4)", "x":8.75, "y":3.5},
|
||||||
|
{"label":"K39 (B3,B5)", "x":9.75, "y":3.5},
|
||||||
|
{"label":"K3A (B3,B6)", "x":10.75, "y":3.5},
|
||||||
|
{"label":"K9A (F5,B6)", "x":11.75, "y":3.5},
|
||||||
|
{"label":"K98 (F5,B4)", "x":12.75, "y":3.5, "w":2.25},
|
||||||
|
{"label":"K93 (F5,C6)", "x":18.5, "y":3.5},
|
||||||
|
{"label":"K92 (F5,D3)", "x":19.5, "y":3.5},
|
||||||
|
{"label":"K91 (F5,D2)", "x":20.5, "y":3.5},
|
||||||
|
{"label":"K40 (B7,D1)", "x":0, "y":4.5, "w":2.25},
|
||||||
|
{"label":"K42 (B7,D3)", "x":2.25, "y":4.5},
|
||||||
|
{"label":"K43 (B7,C6)", "x":3.25, "y":4.5},
|
||||||
|
{"label":"K44 (B7,D5)", "x":4.25, "y":4.5},
|
||||||
|
{"label":"K45 (B7,C7)", "x":5.25, "y":4.5},
|
||||||
|
{"label":"K46 (B7,D4)", "x":6.25, "y":4.5},
|
||||||
|
{"label":"K47 (B7,D7)", "x":7.25, "y":4.5},
|
||||||
|
{"label":"K48 (B7,B4)", "x":8.25, "y":4.5},
|
||||||
|
{"label":"K49 (B7,B5)", "x":9.25, "y":4.5},
|
||||||
|
{"label":"K4A (B7,B6)", "x":10.25, "y":4.5},
|
||||||
|
{"label":"KAA (F6,B6)", "x":11.25, "y":4.5},
|
||||||
|
{"label":"KA8 (F6,B4)", "x":12.25, "y":4.5, "w":2.75},
|
||||||
|
{"label":"KA5 (F6,C7)", "x":16.25, "y":4.5},
|
||||||
|
{"label":"KA3 (F6,C6)", "x":18.5, "y":4.5},
|
||||||
|
{"label":"KA2 (F6,D3)", "x":19.5, "y":4.5},
|
||||||
|
{"label":"KA1 (F6,D2)", "x":20.5, "y":4.5},
|
||||||
|
{"label":"KB0 (F7,D1)", "x":21.5, "y":4.5, "h":2},
|
||||||
|
{"label":"K50 (D0,D1)", "x":0, "y":5.5, "w":1.25},
|
||||||
|
{"label":"K51 (D0,D2)", "x":1.25, "y":5.5, "w":1.25},
|
||||||
|
{"label":"K53 (D0,C6)", "x":2.5, "y":5.5, "w":1.25},
|
||||||
|
{"label":"K56 (D0,D4)", "x":3.75, "y":5.5, "w":6.25},
|
||||||
|
{"label":"K5A (D0,B6)", "x":10, "y":5.5, "w":1.25},
|
||||||
|
{"label":"KBA (F7,B6)", "x":11.25, "y":5.5, "w":1.25},
|
||||||
|
{"label":"KB9 (F7,B5)", "x":12.5, "y":5.5, "w":1.25},
|
||||||
|
{"label":"KB7 (F7,D7)", "x":13.75, "y":5.5, "w":1.25},
|
||||||
|
{"label":"KB6 (F7,D4)", "x":15.25, "y":5.5},
|
||||||
|
{"label":"KB5 (F7,C7)", "x":16.25, "y":5.5},
|
||||||
|
{"label":"KB4 (F7,D5)", "x":17.25, "y":5.5},
|
||||||
|
{"label":"KB3 (F7,C6)", "x":18.5, "y":5.5, "w":2},
|
||||||
|
{"label":"KB1 (F7,D2)", "x":20.5, "y":5.5}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
,"meta": "https://noroadsleft.github.io/kbf_qmk_converter/"
|
||||||
|
}
|
||||||
@@ -0,0 +1,45 @@
|
|||||||
|
/* Copyright 2020 boss566y
|
||||||
|
*
|
||||||
|
* 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_fullsize_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_PSCR, KC_SLCK, KC_PAUS,
|
||||||
|
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS,
|
||||||
|
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS,
|
||||||
|
XXXXXXX, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_P4, KC_P5, KC_P6,
|
||||||
|
KC_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_P1, KC_P2, KC_P3, KC_PENT,
|
||||||
|
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, MO(1), MO(2), RGUI_T(KC_APP), KC_LCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT
|
||||||
|
),
|
||||||
|
[1] = LAYOUT_fullsize_ansi(
|
||||||
|
RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL, _______, C(KC_HOME), _______, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
KC_CAPS, KC_MPRV, KC_MSTP, KC_MPLY, KC_MNXT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
_______, _______, KC_VOLD, KC_VOLU, KC_MUTE, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
|
||||||
|
),
|
||||||
|
[2] = LAYOUT_fullsize_ansi(
|
||||||
|
RESET, _______, _______, _______, _______, _______, KC_VOLD, KC_VOLU, KC_MUTE, KC_MPRV, KC_MSTP, KC_MPLY, KC_MNXT, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, _______, _______, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
|
||||||
|
),
|
||||||
|
|
||||||
|
|
||||||
|
};
|
||||||
@@ -0,0 +1,11 @@
|
|||||||
|
# Default Layout
|
||||||
|
|
||||||
|
Keymap is basic 104 qwerty layout with:
|
||||||
|
|
||||||
|
* Caps Lock moved to Layer 1 leaving blank key on Base Layer
|
||||||
|
* Menu Key changed to mod tap for Menu and Windows Keys
|
||||||
|
* RAlt changed to M(1). Media playback on A to F, volume keys on X to V, and Delete on Backspace
|
||||||
|
* FN is M(2). Arrow keys on HJKL, media keys on F6 to F12, and RCtrl+Home on Home.
|
||||||
|
* Both M(1) and M(2) have Reset on Escape
|
||||||
|
|
||||||
|
|
||||||
@@ -0,0 +1,21 @@
|
|||||||
|
/*
|
||||||
|
Copyright 2020 boss566y
|
||||||
|
|
||||||
|
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 DYNAMIC_KEYMAP_LAYER_COUNT 3
|
||||||
|
|
||||||
@@ -0,0 +1,45 @@
|
|||||||
|
/* Copyright 2020 boss566y
|
||||||
|
*
|
||||||
|
* 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_fullsize_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_PSCR, KC_SLCK, KC_PAUS,
|
||||||
|
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS,
|
||||||
|
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS,
|
||||||
|
XXXXXXX, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_P4, KC_P5, KC_P6,
|
||||||
|
KC_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_P1, KC_P2, KC_P3, KC_PENT,
|
||||||
|
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, MO(1), MO(2), KC_RGUI, KC_LCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT
|
||||||
|
),
|
||||||
|
[1] = LAYOUT_fullsize_ansi(
|
||||||
|
RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
KC_CAPS, KC_MPRV, KC_MSTP, KC_MPLY, KC_MNXT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
_______, _______, KC_VOLD, KC_VOLU, KC_MUTE, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
|
||||||
|
),
|
||||||
|
[2] = LAYOUT_fullsize_ansi(
|
||||||
|
RESET, _______, _______, _______, _______, _______, KC_VOLD, KC_VOLU, KC_MUTE, KC_MPRV, KC_MSTP, KC_MPLY, KC_MNXT, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, _______, _______, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
|
||||||
|
),
|
||||||
|
|
||||||
|
};
|
||||||
@@ -0,0 +1,12 @@
|
|||||||
|
# Default Layout
|
||||||
|
|
||||||
|
Keymap is basic 104 qwerty layout with:
|
||||||
|
|
||||||
|
* Caps Lock moved to Layer 1 leaving blank key on Base Layer
|
||||||
|
* Menu Key changed to mod tap for Menu and Windows Keys
|
||||||
|
* RAlt changed to M(1). Media playback on A to F, volume keys on X to V, and Delete on Backspace
|
||||||
|
* FN is M(2). Arrow keys on HJKL, media keys on F6 to F12, and RCtrl+Home on Home.
|
||||||
|
* Both M(1) and M(2) have Reset on Escape
|
||||||
|
* VIA Enabled [VIA JSON File](https://github.com/boss566y/keyboards/blob/boss566y/src/boss566y/handwired/redragon_vara.json)
|
||||||
|
|
||||||
|
|
||||||
@@ -0,0 +1,2 @@
|
|||||||
|
VIA_ENABLE = yes
|
||||||
|
LTO_ENABLE = yes
|
||||||
@@ -0,0 +1,14 @@
|
|||||||
|
# Handwired Redragon Vara
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
A handwired Redragon Vara. Built using a teensy 2.0 and has a 12x11 matrix
|
||||||
|
|
||||||
|
* Keyboard Maintainer: [boss566y](https://github.com/boss566y)
|
||||||
|
* Hardware: Redragon Vara and Teensy 2.0
|
||||||
|
|
||||||
|
Make example for this keyboard (after setting up your build environment):
|
||||||
|
|
||||||
|
make handwired/boss566y/redragon_vara:default
|
||||||
|
|
||||||
|
See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
|
||||||
@@ -0,0 +1,16 @@
|
|||||||
|
/* Copyright 2020 boss566y
|
||||||
|
*
|
||||||
|
* 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 "redragon_vara.h"
|
||||||
@@ -0,0 +1,43 @@
|
|||||||
|
/* Copyright 2020 boss566y
|
||||||
|
*
|
||||||
|
* This program is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 2 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "quantum.h"
|
||||||
|
|
||||||
|
#define LAYOUT_fullsize_ansi( \
|
||||||
|
K00, K02, K03, K04, K05, K07, K08, K09, K0A, K6A, K69, K68, K67, K66, K65, K64, \
|
||||||
|
K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K7A, K79, K78, K76, K75, K74, K73, K72, K71, K70, \
|
||||||
|
K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K8A, K89, K87, K86, K85, K84, K83, K82, K81, K90, \
|
||||||
|
K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K9A, K98, K93, K92, K91, \
|
||||||
|
K40, K42, K43, K44, K45, K46, K47, K48, K49, K4A, KAA, KA8, KA5, KA3, KA2, KA1, KB0, \
|
||||||
|
K50, K51, K53, K56, K5A, KBA, KB9, KB7, KB6, KB5, KB4, KB3, KB1 \
|
||||||
|
) { \
|
||||||
|
{ K00, KC_NO, K02, K03, K04, K05, KC_NO, K07, K08, K09, K0A }, \
|
||||||
|
{ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A }, \
|
||||||
|
{ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A }, \
|
||||||
|
{ K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A }, \
|
||||||
|
{ K40, KC_NO, K42, K43, K44, K45, K46, K47, K48, K49, K4A }, \
|
||||||
|
{ K50, K51, KC_NO, K53, KC_NO, KC_NO, K56, KC_NO, KC_NO, KC_NO, K5A }, \
|
||||||
|
{ KC_NO, KC_NO, KC_NO, KC_NO, K64, K65, K66, K67, K68, K69, K6A }, \
|
||||||
|
{ K70, K71, K72, K73, K74, K75, K76, KC_NO, K78, K79, K7A }, \
|
||||||
|
{ KC_NO, K81, K82, K83, K84, K85, K86, K87, KC_NO, K89, K8A }, \
|
||||||
|
{ K90, K91, K92, K93, KC_NO, KC_NO, KC_NO, KC_NO, K98, KC_NO, K9A }, \
|
||||||
|
{ KC_NO, KA1, KA2, KA3, KC_NO, KA5, KC_NO, KC_NO, KA8, KC_NO, KAA }, \
|
||||||
|
{ KB0, KB1, KC_NO, KB3, KB4, KB5, KB6, KB7, KC_NO, KB9, KBA }, \
|
||||||
|
}
|
||||||
|
|
||||||
|
// generated by KBFirmware JSON to QMK Parser
|
||||||
|
// https://noroadsleft.github.io/kbf_qmk_converter/
|
||||||
@@ -0,0 +1,34 @@
|
|||||||
|
# MCU name
|
||||||
|
MCU = atmega32u4
|
||||||
|
|
||||||
|
# Bootloader selection
|
||||||
|
# Teensy halfkay
|
||||||
|
# Pro Micro caterina
|
||||||
|
# Atmel DFU atmel-dfu
|
||||||
|
# LUFA DFU lufa-dfu
|
||||||
|
# QMK DFU qmk-dfu
|
||||||
|
# ATmega32A bootloadHID
|
||||||
|
# ATmega328P USBasp
|
||||||
|
BOOTLOADER = halfkay
|
||||||
|
|
||||||
|
# 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
|
||||||
|
MIDI_ENABLE = no # MIDI support
|
||||||
|
UNICODE_ENABLE = no # Unicode
|
||||||
|
BLUETOOTH_ENABLE = no # Enable Bluetooth
|
||||||
|
AUDIO_ENABLE = no # Audio output
|
||||||
|
FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
|
||||||
|
|
||||||
|
LAYOUTS = fullsize_ansi
|
||||||
@@ -1,342 +0,0 @@
|
|||||||
#include QMK_KEYBOARD_H
|
|
||||||
#include "keymap_uk.h"
|
|
||||||
|
|
||||||
extern keymap_config_t keymap_config;
|
|
||||||
|
|
||||||
enum jj40_layers {
|
|
||||||
_QWERTY,
|
|
||||||
_MAC,
|
|
||||||
_LOWER,
|
|
||||||
_MLWR,
|
|
||||||
_RAISE,
|
|
||||||
_MRSE,
|
|
||||||
_FUNC,
|
|
||||||
_MFNC,
|
|
||||||
_FUNC2,
|
|
||||||
_MFNC2,
|
|
||||||
_ADJUST,
|
|
||||||
_MOUSE
|
|
||||||
};
|
|
||||||
|
|
||||||
enum jj40_keycodes {
|
|
||||||
QWERTY = SAFE_RANGE,
|
|
||||||
MAC,
|
|
||||||
FUNC,
|
|
||||||
MFNC,
|
|
||||||
FUNC2,
|
|
||||||
MFNC2,
|
|
||||||
LOWER,
|
|
||||||
MLWR,
|
|
||||||
RAISE,
|
|
||||||
MRSE,
|
|
||||||
MOUSE,
|
|
||||||
DYNAMIC_MACRO_RANGE
|
|
||||||
};
|
|
||||||
|
|
||||||
#include "dynamic_macro.h"
|
|
||||||
|
|
||||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|
||||||
|
|
||||||
/* Qwerty
|
|
||||||
* ,-----------------------------------------------------------------------------------.
|
|
||||||
* | Esc | Q | W | E | R | T | Y | U | I | O | P | Bksp |
|
|
||||||
* |------+------+------+------+------+-------------+------+------+------+------+------|
|
|
||||||
* | Tab | A | S | D | F | G | H | J | K | L | ;: | Enter|
|
|
||||||
* |------+------+------+------+------+------|------+------+------+------+------+------|
|
|
||||||
* | Shft | Z | X | C | V | B | N | M | ,< | .> | /? | Shft |
|
|
||||||
* |------+------+------+------+------+------+------+------+------+------+------+------|
|
|
||||||
* | Fn | Ctrl | Alt | GUI |Lower | Bksp |Space |Raise | Shift| MENU | Ctrl | Fn2 |
|
|
||||||
* `-----------------------------------------------------------------------------------'
|
|
||||||
*/
|
|
||||||
[_QWERTY] = LAYOUT_ortho_4x12(\
|
|
||||||
KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC ,\
|
|
||||||
MT(MOD_LSFT, KC_TAB), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, MT(MOD_RSFT, KC_ENT) ,\
|
|
||||||
KC_LSHIFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSHIFT ,\
|
|
||||||
MO(_FUNC), KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_BSPC, KC_SPC, RAISE, KC_LSHIFT, KC_BTN2, KC_RCTL, MO(_FUNC2) \
|
|
||||||
),
|
|
||||||
|
|
||||||
/* Function
|
|
||||||
* ,-----------------------------------------------------------------------------------.
|
|
||||||
* | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 |
|
|
||||||
* |------+------+------+------+------+-------------+------+------+------+------+------|
|
|
||||||
* | 1! | 2" | 3£ | 4$ | 5% | 6^ | 7& | 8* | 9( | 0) | ~ |INSERT|
|
|
||||||
* |------+------+------+------+------+------|------+------+------+------+------+------|
|
|
||||||
* | Shift| \| | `¬ | #~ | * | -_ | =+ | \| | [{ | ]} | '@ |Shift |
|
|
||||||
* |------+------+------+------+------+------+------+------+------+------+------+------|
|
|
||||||
* | Fn | Ctrl | Alt | GUI |Lower | Bksp |Space |Mouse | MENU | Alt | Ctrl | Fn |
|
|
||||||
* `-----------------------------------------------------------------------------------'
|
|
||||||
*/
|
|
||||||
[_FUNC] = LAYOUT_ortho_4x12(\
|
|
||||||
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_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, UK_TILD, KC_INSERT ,\
|
|
||||||
KC_LSHIFT, KC_NONUS_BSLASH, KC_GRAVE, KC_NONUS_HASH, KC_PAST, KC_MINS, KC_EQL, KC_BSLASH, KC_LBRC, KC_RBRC, KC_QUOT, MT(MOD_RSFT, KC_ENT) ,\
|
|
||||||
_______, _______, _______, _______, _______, _______, _______, MO(_MOUSE), _______, _______, _______, _______ \
|
|
||||||
),
|
|
||||||
|
|
||||||
/* Lower
|
|
||||||
* ,-----------------------------------------------------------------------------------.
|
|
||||||
* | 1! | 2" | 3£ | 4$ | 5% | 6^ | 7& | 8* | 9( | 0) | DEL | Bksp |
|
|
||||||
* |------+------+------+------+------+-------------+------+------+------+------+------|
|
|
||||||
* | ! | " | £ | $ | % | ^ | & | * | ( | ) |WrdDel|WrdBks|
|
|
||||||
* |------+------+------+------+------+------|------+------+------+------+------+------|
|
|
||||||
* | Shift| \| | `¬ | #~ | '@ | -_ | =+ | #~ | [{ | ]} | '@ |Shift |
|
|
||||||
* |------+------+------+------+------+------+------+------+------+------+------+------|
|
|
||||||
* | | | | |Lower | Del |Space | | Next | Vol- | Vol+ | Play |
|
|
||||||
* `-----------------------------------------------------------------------------------'
|
|
||||||
*/
|
|
||||||
[_LOWER] = LAYOUT_ortho_4x12(\
|
|
||||||
KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL, KC_BSPC ,\
|
|
||||||
LSFT(KC_1), LSFT(KC_2), LSFT(KC_3), LSFT(KC_4), LSFT(KC_5), LSFT(KC_6), LSFT(KC_7), LSFT(KC_8), LSFT(KC_9), LSFT(KC_0), LCTL(KC_DEL), LCTL(KC_BSPC) ,\
|
|
||||||
KC_LSPO, KC_NONUS_BSLASH, KC_GRAVE, KC_NONUS_HASH, KC_QUOT, KC_MINS, KC_EQL, KC_NONUS_HASH, KC_LBRC, KC_RBRC, KC_QUOT, MT(MOD_RSFT, KC_ENT) ,\
|
|
||||||
_______, _______, _______, _______, _______, KC_DEL, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY \
|
|
||||||
),
|
|
||||||
|
|
||||||
/* Raise
|
|
||||||
* ,-----------------------------------------------------------------------------------.
|
|
||||||
* | ` | |WRDSEL| [ | ] | | | PGUP | HOME |PGDOWN| |PRNTSC|
|
|
||||||
* |------+------+------+------+------+-------------+------+------+------+------+------|
|
|
||||||
* | ` | | | ( | ) | | | HOME | UP | END | |ZOOM +|
|
|
||||||
* |------+------+------+------+------+------|------+------+------+------+------+------|
|
|
||||||
* | | | | { | } | | |< | LEFT | DOWN |RIGHT | >| |ZOOM -|
|
|
||||||
* |------+------+------+------+------+------|------+------+------+------+------+------|
|
|
||||||
* | Mouse| | | | | Alt | Enter|Raise | | | | |
|
|
||||||
* `-----------------------------------------------------------------------------------'
|
|
||||||
*/
|
|
||||||
[_RAISE] = LAYOUT_ortho_4x12(\
|
|
||||||
KC_GRV, XXXXXXX, M(1), KC_LBRC, KC_RBRC, XXXXXXX, XXXXXXX, KC_PGUP, KC_HOME, KC_PGDOWN, XXXXXXX, KC_PSCREEN ,\
|
|
||||||
KC_GRV, XXXXXXX, XXXXXXX, LSFT(KC_9), LSFT(KC_0), XXXXXXX, XXXXXXX, KC_HOME, KC_UP, KC_END, XXXXXXX, LCTL(LSFT(KC_EQL)) ,\
|
|
||||||
_______, XXXXXXX, XXXXXXX, LSFT(KC_LBRC), LSFT(KC_RBRC), XXXXXXX, LCTL(KC_LEFT), KC_LEFT, KC_DOWN, KC_RIGHT, LCTL(KC_RIGHT), LCTL(KC_MINS) ,\
|
|
||||||
MO(_MOUSE), _______, _______, _______, _______, KC_LALT, KC_ENT, _______, XXXXXXX, _______, _______, _______ \
|
|
||||||
),
|
|
||||||
|
|
||||||
/* Adjust (Lower + Raise)
|
|
||||||
* ,-----------------------------------------------------------------------------------.
|
|
||||||
* | ???? | Reset|Qwerty| | | REC1 | REC2 | | | | | Del |
|
|
||||||
* |------+------+------+------+------+-------------+------+------+------+------+------|
|
|
||||||
* | CAPS | | | | | PLAY1| PLAY2| Mute | Vol+ | Play | | |
|
|
||||||
* |------+------+------+------+------+------|------+------+------+------+------+------|
|
|
||||||
* | PC/MC| | | | | STOP | STOP | Prev | Vol- | Next | | |
|
|
||||||
* |------+------+------+------+------+------+------+------+------+------+------+------|
|
|
||||||
* | | | | | | | | | | | |
|
|
||||||
* `-----------------------------------------------------------------------------------'
|
|
||||||
*/
|
|
||||||
[_ADJUST] = LAYOUT_ortho_4x12(\
|
|
||||||
M(0), RESET, QWERTY, BL_ON, BL_OFF, DYN_REC_START1, DYN_REC_START2, _______, _______, _______, _______, KC_DEL ,\
|
|
||||||
KC_CAPS, RGB_TOG, RGB_MOD, RGB_VAD, RGB_VAI, DYN_MACRO_PLAY1, DYN_MACRO_PLAY2, KC_AUDIO_MUTE, KC_AUDIO_VOL_UP, KC_MEDIA_PLAY_PAUSE, _______, _______ ,\
|
|
||||||
TG(_MAC), RGB_HUD, RGB_HUI, RGB_SAD, RGB_SAI, DYN_REC_STOP, DYN_REC_STOP, KC_MEDIA_PREV_TRACK, KC_AUDIO_VOL_DOWN, KC_MEDIA_NEXT_TRACK, _______, _______ ,\
|
|
||||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \
|
|
||||||
),
|
|
||||||
|
|
||||||
/* Mouse
|
|
||||||
* ,-----------------------------------------------------------------------------------.
|
|
||||||
* | ESC | | | | | | | | | | | |
|
|
||||||
* |------+------+------+------+------+-------------+------+------+------+------+------|
|
|
||||||
* | ACC0 | ACC1 | ACC2 | | | | | BTN1 | UP | BTN2 | | |
|
|
||||||
* |------+------+------+------+------+------|------+------+------+------+------+------|
|
|
||||||
* | ACC0 | ACC1 | ACC2 | | | | | LEFT | DOWN |RIGHT | | |
|
|
||||||
* |------+------+------+------+------+------|------+------+------+------+------+------|
|
|
||||||
* | | | | | | | | | | | | |
|
|
||||||
* `-----------------------------------------------------------------------------------'
|
|
||||||
*/
|
|
||||||
[_MOUSE] = LAYOUT_ortho_4x12(\
|
|
||||||
KC_ESC , _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,\
|
|
||||||
KC_MS_ACCEL0, KC_MS_ACCEL1, KC_MS_ACCEL2, _______, _______, _______, _______, KC_MS_BTN1, KC_MS_UP, KC_MS_BTN2, _______, _______,\
|
|
||||||
KC_MS_ACCEL0, KC_MS_ACCEL1, KC_MS_ACCEL2, _______, _______, _______, _______, KC_MS_LEFT, KC_MS_DOWN, KC_MS_RIGHT, _______, _______,\
|
|
||||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______\
|
|
||||||
),
|
|
||||||
|
|
||||||
/* Function 2 (Right hand side)
|
|
||||||
* ,-----------------------------------------------------------------------------------.
|
|
||||||
* | | |WRDSEL| | | | LNDEL| | | | | |
|
|
||||||
* |------+------+------+------+------+-------------+------+------+------+------+------|
|
|
||||||
* | | | LNSEL| DUP | | | | |LNJOIN| | | |
|
|
||||||
* |------+------+------+------+------+------|------+------+------+------+------+------|
|
|
||||||
* | | UNDO | CUT | COPY | PASTE| | | | | | | MODE |
|
|
||||||
* |------+------+------+------+------+------|------+------+------+------+------+------|
|
|
||||||
* | | | | | | | | | | | | |
|
|
||||||
* `-----------------------------------------------------------------------------------'
|
|
||||||
*/
|
|
||||||
[_FUNC2] = LAYOUT_ortho_4x12(\
|
|
||||||
_______, _______, M(1), _______, _______, _______, M(5), _______, _______, _______, _______, _______,\
|
|
||||||
_______, _______, M(3), M(7), _______, _______, _______, M(10), _______, _______, _______, _______,\
|
|
||||||
_______, LCTL(KC_Z), LCTL(KC_X), LCTL(KC_C), LCTL(KC_V), _______, _______, _______, _______, _______, _______, M(98), \
|
|
||||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \
|
|
||||||
),
|
|
||||||
|
|
||||||
[_MAC]= LAYOUT_ortho_4x12(\
|
|
||||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,\
|
|
||||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,\
|
|
||||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,\
|
|
||||||
MFNC, _______, _______, _______, MLWR, _______, _______, MRSE, _______, _______, _______, MFNC2 \
|
|
||||||
),
|
|
||||||
|
|
||||||
[_MLWR] = LAYOUT_ortho_4x12(\
|
|
||||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,\
|
|
||||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,\
|
|
||||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,\
|
|
||||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \
|
|
||||||
),
|
|
||||||
|
|
||||||
[_MRSE] = LAYOUT_ortho_4x12(\
|
|
||||||
_______, _______, M(2), _______, _______, _______, _______, _______, _______, _______, _______, _______ ,\
|
|
||||||
_______, _______, _______, _______, _______, _______, _______, LCTL(KC_A), _______, LCTL(KC_E), _______, LGUI(KC_EQL) ,\
|
|
||||||
_______, _______, _______, _______, _______, _______, LALT(KC_LEFT), _______, _______, _______, LALT(KC_RIGHT), LGUI(KC_MINS) ,\
|
|
||||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \
|
|
||||||
),
|
|
||||||
|
|
||||||
[_MFNC]= LAYOUT_ortho_4x12(\
|
|
||||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ ,\
|
|
||||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, LGUI(KC_PENT) ,\
|
|
||||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ ,\
|
|
||||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \
|
|
||||||
),
|
|
||||||
|
|
||||||
[_MFNC2] = LAYOUT_ortho_4x12(\
|
|
||||||
_______, _______, M(2), _______, _______, _______, M(6), _______, _______, _______, _______, _______,\
|
|
||||||
_______, _______, M(4), M(8), _______, _______, _______, M(10), _______, _______, _______, _______,\
|
|
||||||
_______, LGUI(KC_Z), LGUI(KC_X), LGUI(KC_C), LGUI(KC_V), _______, _______, _______, _______, _______, _______, M(99), \
|
|
||||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \
|
|
||||||
)
|
|
||||||
|
|
||||||
};
|
|
||||||
|
|
||||||
void persistant_default_layer_set(uint16_t default_layer) {
|
|
||||||
eeconfig_update_default_layer(default_layer);
|
|
||||||
default_layer_set(default_layer);
|
|
||||||
}
|
|
||||||
|
|
||||||
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
|
||||||
|
|
||||||
if (!process_record_dynamic_macro(keycode, record)) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
switch (keycode) {
|
|
||||||
case QWERTY:
|
|
||||||
if (record->event.pressed) {
|
|
||||||
persistant_default_layer_set(1UL<<_QWERTY);
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
case LOWER:
|
|
||||||
if (record->event.pressed) {
|
|
||||||
layer_on(_LOWER);
|
|
||||||
update_tri_layer(_LOWER, _RAISE, _ADJUST);
|
|
||||||
} else {
|
|
||||||
layer_off(_LOWER);
|
|
||||||
update_tri_layer(_LOWER, _RAISE, _ADJUST);
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
case RAISE:
|
|
||||||
if (record->event.pressed) {
|
|
||||||
layer_on(_RAISE);
|
|
||||||
update_tri_layer(_LOWER, _RAISE, _ADJUST);
|
|
||||||
} else {
|
|
||||||
layer_off(_RAISE);
|
|
||||||
update_tri_layer(_LOWER, _RAISE, _ADJUST);
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
case MLWR:
|
|
||||||
if (record->event.pressed) {
|
|
||||||
layer_on(_LOWER);
|
|
||||||
layer_on(_MLWR);
|
|
||||||
update_tri_layer(_LOWER, _RAISE, _ADJUST);
|
|
||||||
} else {
|
|
||||||
layer_off(_LOWER);
|
|
||||||
layer_off(_MLWR);
|
|
||||||
update_tri_layer(_LOWER, _RAISE, _ADJUST);
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
case MRSE:
|
|
||||||
if (record->event.pressed) {
|
|
||||||
layer_on(_RAISE);
|
|
||||||
layer_on(_MRSE);
|
|
||||||
update_tri_layer(_LOWER, _RAISE, _ADJUST);
|
|
||||||
} else {
|
|
||||||
layer_off(_RAISE);
|
|
||||||
layer_off(_MRSE);
|
|
||||||
update_tri_layer(_LOWER, _RAISE, _ADJUST);
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
case MFNC:
|
|
||||||
if (record->event.pressed) {
|
|
||||||
layer_on(_FUNC);
|
|
||||||
layer_on(_MFNC);
|
|
||||||
} else {
|
|
||||||
layer_off(_FUNC);
|
|
||||||
layer_off(_MFNC);
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
case MFNC2:
|
|
||||||
if (record->event.pressed) {
|
|
||||||
layer_on(_FUNC2);
|
|
||||||
layer_on(_MFNC2);
|
|
||||||
} else {
|
|
||||||
layer_off(_FUNC2);
|
|
||||||
layer_off(_MFNC2);
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
const macro_t *action_get_macro(keyrecord_t *record, uint8_t keycode, uint8_t opt) {
|
|
||||||
// These would trigger when you hit a key mapped as M(0)
|
|
||||||
if (record->event.pressed) {
|
|
||||||
switch(keycode) {
|
|
||||||
case 0: // Some custom string here
|
|
||||||
SEND_STRING("");
|
|
||||||
return false;
|
|
||||||
|
|
||||||
case 1: // Word Select
|
|
||||||
SEND_STRING(SS_DOWN(X_LCTRL) SS_TAP(X_RIGHT) SS_DOWN(X_LSHIFT) SS_TAP(X_LEFT) SS_UP(X_LSHIFT) SS_UP(X_LCTRL));
|
|
||||||
return false;
|
|
||||||
|
|
||||||
case 2: // Word Select Mac
|
|
||||||
SEND_STRING(SS_DOWN(X_LALT) SS_TAP(X_RIGHT) SS_DOWN(X_LSHIFT) SS_TAP(X_LEFT) SS_UP(X_LSHIFT) SS_UP(X_LALT));
|
|
||||||
return false;
|
|
||||||
|
|
||||||
case 3: // Line Select
|
|
||||||
SEND_STRING(SS_TAP(X_HOME) SS_DOWN(X_LSHIFT) SS_TAP(X_END) SS_UP(X_LSHIFT));
|
|
||||||
return false;
|
|
||||||
|
|
||||||
case 4: // Line Select Mac
|
|
||||||
SEND_STRING(SS_LCTRL("a") SS_DOWN(X_LSHIFT) SS_LCTRL("e") SS_UP(X_LSHIFT));
|
|
||||||
return false;
|
|
||||||
|
|
||||||
case 5: // Line Delete
|
|
||||||
SEND_STRING(SS_TAP(X_HOME) SS_DOWN(X_LSHIFT) SS_TAP(X_END) SS_UP(X_LSHIFT));
|
|
||||||
SEND_STRING(SS_TAP(X_BSPACE));
|
|
||||||
return false;
|
|
||||||
|
|
||||||
case 6: // Line Delete Mac
|
|
||||||
SEND_STRING(SS_LCTRL("a") SS_DOWN(X_LSHIFT) SS_LCTRL("e") SS_UP(X_LSHIFT));
|
|
||||||
SEND_STRING(SS_TAP(X_BSPACE));
|
|
||||||
return false;
|
|
||||||
|
|
||||||
case 7: // Duplicate Selection
|
|
||||||
SEND_STRING(SS_LCTRL("c") SS_TAP(X_RIGHT) SS_LCTRL("v"));
|
|
||||||
return false;
|
|
||||||
|
|
||||||
case 8: // Duplicate Selection Mac
|
|
||||||
SEND_STRING(SS_LGUI("c") SS_TAP(X_RIGHT) SS_LGUI("v"));
|
|
||||||
return false;
|
|
||||||
|
|
||||||
case 9: // Join line
|
|
||||||
SEND_STRING(SS_TAP(X_END) SS_TAP(X_DELETE));
|
|
||||||
return false;
|
|
||||||
|
|
||||||
case 10: // Join line Mac
|
|
||||||
SEND_STRING(SS_LCTRL("e") SS_TAP(X_DELETE));
|
|
||||||
return false;
|
|
||||||
|
|
||||||
case 98: // Print mode
|
|
||||||
SEND_STRING("PC");
|
|
||||||
return false;
|
|
||||||
|
|
||||||
case 99: // Print mode
|
|
||||||
SEND_STRING("OSX");
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return MACRO_NONE;
|
|
||||||
};
|
|
||||||
@@ -1,11 +1,16 @@
|
|||||||
# AJP10304 Custom JJ40 Layout
|
# AJP10304 Custom JJ40 Layout
|
||||||
# Also available for the Atreus50 and Planck
|
# Also available for the Planck, Shark and Atreus50
|
||||||
|
|
||||||
**Note:** In the tables below where there are two characters on a key,
|
**Note:** In the tables below where there are two characters on a key,
|
||||||
the second is the output when shift is applied.
|
the second is the output when shift is applied.
|
||||||
|
|
||||||
**Note:** The below tables assume a UK layout.
|
**Note:** The below tables assume a UK layout.
|
||||||
|
|
||||||
|
#### Flashing
|
||||||
|
Use sleep to get a chance to get into boot mode.
|
||||||
|
|
||||||
|
`make jj40:ajp10304:flash`
|
||||||
|
|
||||||
##### Main Qwerty Layer
|
##### Main Qwerty Layer
|
||||||
|
|
||||||
* Tab: when held, operates as shift.
|
* Tab: when held, operates as shift.
|
||||||
@@ -43,13 +48,13 @@ Activated when `Lower` is held in the above `qwerty` layer.
|
|||||||
| Shift | \| | `¬ | #~ | '@ | -_ | =+ | #~ | [{ | ]} | '@ |Shift |
|
| Shift | \| | `¬ | #~ | '@ | -_ | =+ | #~ | [{ | ]} | '@ |Shift |
|
||||||
| | | | |Lower | Del |Space | | Next | Vol- | Vol+ | Play |
|
| | | | |Lower | Del |Space | | Next | Vol- | Vol+ | Play |
|
||||||
|
|
||||||
##### Raise Layer
|
##### Raise Layer
|
||||||
Activated when `Raise` is held in the above `qwerty` layer.
|
Activated when `Raise` is held in the above `qwerty` layer.
|
||||||
|
|
||||||
* Preferred layer for typing brackets.
|
* Preferred layer for typing brackets.
|
||||||
* Allows for cursor navigation to be used solely with the right hand.
|
* Allows for cursor navigation to be used solely with the right hand.
|
||||||
* WRDSEL: Select the word where the cursor is.
|
* WRDSEL: Select the word where the cursor is.
|
||||||
* |< and >|: Apply `ctrl` to `left` and `right` respectively for word jumping.
|
* |< and >|: Apply `ctrl` to `left` and `right` respectively for word jumping.
|
||||||
|
|
||||||
| | | | | | | | | | | | |
|
| | | | | | | | | | | | |
|
||||||
| :---: |:----:| :---:| :---:| :---:| :---:| :---: | :---:| :---:| :---:| :---: | :---:|
|
| :---: |:----:| :---:| :---:| :---:| :---:| :---: | :---:| :---:| :---:| :---: | :---:|
|
||||||
@@ -98,11 +103,17 @@ Activated when `fn` and `raise` held together.
|
|||||||
|
|
||||||
| | | | | | | | | | | | |
|
| | | | | | | | | | | | |
|
||||||
| :---: | :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:|
|
| :---: | :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:|
|
||||||
| ESC | | | | | | | | | | | |
|
| ESC | | | | | | | | BTN3 | | | |
|
||||||
| ACC0 | ACC1 | ACC2 | | | | | BTN1 | UP | BTN2 | | |
|
| ACC0 | ACC1 | ACC2 | | | | | BTN1 | UP | BTN2 | | |
|
||||||
| ACC0 | ACC1 | ACC2 | | | | | LEFT | DOWN | RIGHT| | |
|
| ACC0 | ACC1 | ACC2 | | | | | LEFT | DOWN | RIGHT| | |
|
||||||
| | | | | | | | | | | | |
|
| | | | | | | | | | | | |
|
||||||
|
|
||||||
####Manual Flashing of hex file
|
##### Number Pad Layout
|
||||||
Use sleep to get a chance to get into boot mode.
|
Activated when holding `Esc` key.
|
||||||
`sleep 5; bootloadHID -r .build/jj40_ajp10304.hex`
|
|
||||||
|
| | | | | | | | | | | | |
|
||||||
|
| :---: | :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:|
|
||||||
|
| | | | | | |NMLOCK| 7 | 8 | 9 | / | |
|
||||||
|
| | | | | | | | 4 | 5 | 6 | * | |
|
||||||
|
| | | | | | | | 1 | 2 | 3 | + | |
|
||||||
|
| | | | | | | | 0 | . | , | - | |
|
||||||
@@ -17,8 +17,8 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|||||||
#include "config_common.h"
|
#include "config_common.h"
|
||||||
|
|
||||||
/* USB Device descriptor parameter */
|
/* USB Device descriptor parameter */
|
||||||
#define VENDOR_ID 0xFEED
|
#define VENDOR_ID 0x4B48 //KH for Keyhive
|
||||||
#define PRODUCT_ID 0x6060
|
#define PRODUCT_ID 0x4D50 // MP
|
||||||
#define DEVICE_VER 0x0001
|
#define DEVICE_VER 0x0001
|
||||||
#define MANUFACTURER KeyHive
|
#define MANUFACTURER KeyHive
|
||||||
#define PRODUCT maypad
|
#define PRODUCT maypad
|
||||||
|
|||||||
@@ -0,0 +1,26 @@
|
|||||||
|
/* Copyright 2019 codybender
|
||||||
|
*
|
||||||
|
* 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] = {
|
||||||
|
LAYOUT_ortho_5x4(
|
||||||
|
KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS,
|
||||||
|
KC_P7, KC_P8, KC_P9, KC_PPLS,
|
||||||
|
KC_P4, KC_P5, KC_P6, KC_PPLS,
|
||||||
|
KC_P1, KC_P2, KC_P3, KC_PENT,
|
||||||
|
KC_P0, KC_P0, KC_PDOT, KC_PENT
|
||||||
|
)
|
||||||
|
};
|
||||||
@@ -0,0 +1,6 @@
|
|||||||
|
# VIA Support for Maypad
|
||||||
|
|
||||||
|
This adds [VIA](https://caniusevia.com/) support for the Keyhive Maypad.
|
||||||
|
|
||||||
|
Please note that this is a keymap for the Ortho_5x4 layout.
|
||||||
|
|
||||||
@@ -0,0 +1,2 @@
|
|||||||
|
VIA_ENABLE = yes
|
||||||
|
LTO_ENABLE = yes
|
||||||
@@ -20,8 +20,8 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|||||||
#include "config_common.h"
|
#include "config_common.h"
|
||||||
|
|
||||||
/* USB Device descriptor parameter */
|
/* USB Device descriptor parameter */
|
||||||
#define VENDOR_ID 0xB00B
|
#define VENDOR_ID 0x434B // "CK"
|
||||||
#define PRODUCT_ID 0x0000
|
#define PRODUCT_ID 0x4E49 // "NI"
|
||||||
#define DEVICE_VER 0x0001
|
#define DEVICE_VER 0x0001
|
||||||
#define MANUFACTURER cfbender
|
#define MANUFACTURER cfbender
|
||||||
#define PRODUCT nightmare
|
#define PRODUCT nightmare
|
||||||
|
|||||||
@@ -0,0 +1,43 @@
|
|||||||
|
/* Copyright 2019 cfbender
|
||||||
|
*
|
||||||
|
* 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_split(/* Base */
|
||||||
|
KC_HOME, KC_GESC, 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_END, LCTL_T(KC_TAB), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOTE, KC_ENTER,
|
||||||
|
KC_PGUP, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMMA, KC_DOT, KC_SLSH, KC_RSFT, MO(1),
|
||||||
|
KC_PGDN, KC_LGUI, KC_LALT, KC_LALT, KC_SPACE, KC_SPACE, KC_RGUI, KC_RCTL, MO(2)),
|
||||||
|
|
||||||
|
[1] = LAYOUT_split(
|
||||||
|
_______, _______, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINUS, KC_EQUAL, KC_DEL,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_LEFT, KC_RIGHT, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______),
|
||||||
|
|
||||||
|
[2] = LAYOUT_split(
|
||||||
|
_______, _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_UP, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_LEFT, KC_RIGHT, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DOWN, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______),
|
||||||
|
|
||||||
|
[3] = LAYOUT_split(
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______),
|
||||||
|
};
|
||||||
|
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
# The default keymap for nightmare
|
||||||
|
|
||||||
|

|
||||||
@@ -0,0 +1,2 @@
|
|||||||
|
VIA_ENABLE = yes
|
||||||
|
LTO_ENABLE = yes
|
||||||
@@ -20,30 +20,17 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|||||||
#include "config_common.h"
|
#include "config_common.h"
|
||||||
|
|
||||||
/* USB Device descriptor parameter */
|
/* USB Device descriptor parameter */
|
||||||
#define VENDOR_ID 0xC0C0
|
#define VENDOR_ID 0x524B // recompile keys
|
||||||
#define PRODUCT_ID 0x3000
|
#define PRODUCT_ID 0x4E31 // Nomu30
|
||||||
#define DEVICE_VER 0x0001
|
#define DEVICE_VER 0x0001
|
||||||
#define MANUFACTURER Naoto Takai
|
#define MANUFACTURER recompile keys
|
||||||
#define PRODUCT nomu30
|
#define PRODUCT Nomu30
|
||||||
#define DESCRIPTION A 30% keyboard with ISO enter.
|
#define DESCRIPTION recompile keys Nomu30
|
||||||
|
|
||||||
/* key matrix size */
|
/* key matrix size */
|
||||||
#define MATRIX_ROWS 3
|
#define MATRIX_ROWS 3
|
||||||
#define MATRIX_COLS 12
|
#define MATRIX_COLS 12
|
||||||
|
|
||||||
/*
|
/* Bootmagic Lite key configuration */
|
||||||
* Keyboard Matrix Assignments
|
#define BOOTMAGIC_LITE_ROW 0
|
||||||
*
|
#define BOOTMAGIC_LITE_COLUMN 11
|
||||||
* Change this to how you wired your keyboard
|
|
||||||
* COLS: AVR pins used for columns, left to right
|
|
||||||
* ROWS: AVR pins used for rows, top to bottom
|
|
||||||
* DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode)
|
|
||||||
* ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode)
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
#define MATRIX_ROW_PINS { D1, D0, D4 }
|
|
||||||
#define MATRIX_COL_PINS { C6, D7, E6, B4, F4, F5, F6, F7, B1, B3, B2, B6 }
|
|
||||||
#define UNUSED_PINS
|
|
||||||
|
|
||||||
/* COL2ROW, ROW2COL*/
|
|
||||||
#define DIODE_DIRECTION COL2ROW
|
|
||||||
@@ -0,0 +1,40 @@
|
|||||||
|
/* Copyright 2019 Naoto Takai
|
||||||
|
*
|
||||||
|
* This program is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 2 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
#include QMK_KEYBOARD_H
|
||||||
|
|
||||||
|
|
||||||
|
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
|
[0] = LAYOUT(
|
||||||
|
KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
|
||||||
|
KC_LCTL, 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_SPC
|
||||||
|
),
|
||||||
|
[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
|
||||||
|
),
|
||||||
|
[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
|
||||||
|
),
|
||||||
|
[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
|
||||||
|
)
|
||||||
|
};
|
||||||
@@ -0,0 +1,2 @@
|
|||||||
|
VIA_ENABLE = yes
|
||||||
|
LTO_ENABLE = yes
|
||||||
@@ -16,15 +16,12 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include "quantum.h"
|
#include "quantum.h"
|
||||||
|
#ifdef KEYBOARD_nomu30_rev1
|
||||||
|
#include "rev1.h"
|
||||||
|
#elif KEYBOARD_nomu30_rev2
|
||||||
|
#include "rev2.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
/* 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( \
|
#define LAYOUT( \
|
||||||
K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, \
|
K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, \
|
||||||
K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, \
|
K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, \
|
||||||
@@ -35,14 +32,3 @@
|
|||||||
{ K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, KC_NO }, \
|
{ K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, KC_NO }, \
|
||||||
{ K200, K201, K202, K203, K204, K205, K206, K207, K208, KC_NO, KC_NO, KC_NO }, \
|
{ K200, K201, K202, K203, K204, K205, K206, K207, K208, KC_NO, KC_NO, KC_NO }, \
|
||||||
}
|
}
|
||||||
|
|
||||||
#define LAYOUT_kc( \
|
|
||||||
K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, \
|
|
||||||
K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, \
|
|
||||||
K200, K201, K202, K203, K204, K205, K206, K207, K208 \
|
|
||||||
) \
|
|
||||||
LAYOUT( \
|
|
||||||
KC_##K001, KC_##K002, KC_##K003, KC_##K004, KC_##K005, KC_##K006, KC_##K007, KC_##K008, KC_##K009, KC_##K010, KC_##K011, \
|
|
||||||
KC_##K100, KC_##K101, KC_##K102, KC_##K103, KC_##K104, KC_##K105, KC_##K106, KC_##K107, KC_##K108, KC_##K109, KC_##K110, \
|
|
||||||
KC_##K200, KC_##K201, KC_##K202, KC_##K203, KC_##K204, KC_##K205, KC_##K206, KC_##K207, KC_##K208 \
|
|
||||||
)
|
|
||||||
@@ -0,0 +1,35 @@
|
|||||||
|
/*
|
||||||
|
Copyright 2019 Naoto Takai
|
||||||
|
|
||||||
|
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
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Keyboard Matrix Assignments
|
||||||
|
*
|
||||||
|
* Change this to how you wired your keyboard
|
||||||
|
* COLS: AVR pins used for columns, left to right
|
||||||
|
* ROWS: AVR pins used for rows, top to bottom
|
||||||
|
* DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode)
|
||||||
|
* ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode)
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
#define MATRIX_ROW_PINS { D1, D0, D4 }
|
||||||
|
#define MATRIX_COL_PINS { C6, D7, E6, B4, F4, F5, F6, F7, B1, B3, B2, B6 }
|
||||||
|
#define UNUSED_PINS
|
||||||
|
|
||||||
|
/* COL2ROW, ROW2COL*/
|
||||||
|
#define DIODE_DIRECTION COL2ROW
|
||||||
@@ -0,0 +1,17 @@
|
|||||||
|
/* Copyright 2020 Naoto Takai
|
||||||
|
*
|
||||||
|
* 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 "rev1.h"
|
||||||
@@ -0,0 +1,19 @@
|
|||||||
|
/* Copyright 2020 Naoto Takai
|
||||||
|
*
|
||||||
|
* 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"
|
||||||
@@ -0,0 +1,32 @@
|
|||||||
|
# MCU name
|
||||||
|
MCU = atmega32u4
|
||||||
|
|
||||||
|
# Bootloader selection
|
||||||
|
# Teensy halfkay
|
||||||
|
# Pro Micro caterina
|
||||||
|
# Atmel DFU atmel-dfu
|
||||||
|
# LUFA DFU lufa-dfu
|
||||||
|
# QMK DFU qmk-dfu
|
||||||
|
# ATmega32A bootloadHID
|
||||||
|
# ATmega328P USBasp
|
||||||
|
BOOTLOADER = caterina
|
||||||
|
|
||||||
|
# Build Options
|
||||||
|
# change yes to no to disable
|
||||||
|
#
|
||||||
|
BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration
|
||||||
|
MOUSEKEY_ENABLE = no # Mouse keys
|
||||||
|
EXTRAKEY_ENABLE = yes # Audio control and System control
|
||||||
|
CONSOLE_ENABLE = no # Console for debug
|
||||||
|
COMMAND_ENABLE = no # Commands for debug and configuration
|
||||||
|
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
|
||||||
|
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
|
||||||
|
# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
|
||||||
|
NKRO_ENABLE = no # USB Nkey Rollover
|
||||||
|
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
|
||||||
|
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
|
||||||
|
MIDI_ENABLE = no # MIDI support
|
||||||
|
UNICODE_ENABLE = no # Unicode
|
||||||
|
BLUETOOTH_ENABLE = no # Enable Bluetooth
|
||||||
|
AUDIO_ENABLE = no # Audio output
|
||||||
|
FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
|
||||||
@@ -0,0 +1,47 @@
|
|||||||
|
/*
|
||||||
|
Copyright 2020 Naoto Takai
|
||||||
|
|
||||||
|
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
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Keyboard Matrix Assignments
|
||||||
|
*
|
||||||
|
* Change this to how you wired your keyboard
|
||||||
|
* COLS: AVR pins used for columns, left to right
|
||||||
|
* ROWS: AVR pins used for rows, top to bottom
|
||||||
|
* DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode)
|
||||||
|
* ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode)
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
#define MATRIX_ROW_PINS { B2, B1, B0 }
|
||||||
|
#define MATRIX_COL_PINS { C4, C5, C6, C7, B7, B6, B5, B4, B3, D5, D4, D3 }
|
||||||
|
#define UNUSED_PINS { C2, D0, D1, D2, D6 }
|
||||||
|
|
||||||
|
/* COL2ROW, ROW2COL*/
|
||||||
|
#define DIODE_DIRECTION COL2ROW
|
||||||
|
|
||||||
|
/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
|
||||||
|
#define DEBOUNCE 5
|
||||||
|
|
||||||
|
/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
|
||||||
|
#define LOCKING_SUPPORT_ENABLE
|
||||||
|
/* Locking resynchronize hack */
|
||||||
|
#define LOCKING_RESYNC_ENABLE
|
||||||
|
|
||||||
|
/* disable these deprecated features by default */
|
||||||
|
#define NO_ACTION_MACRO
|
||||||
|
#define NO_ACTION_FUNCTION
|
||||||
@@ -0,0 +1,17 @@
|
|||||||
|
/* Copyright 2020 Naoto Takai
|
||||||
|
*
|
||||||
|
* 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 "rev2.h"
|
||||||
@@ -0,0 +1,19 @@
|
|||||||
|
/* Copyright 2020 Naoto Takai
|
||||||
|
*
|
||||||
|
* 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"
|
||||||
@@ -0,0 +1,31 @@
|
|||||||
|
# MCU name
|
||||||
|
MCU = atmega32u2
|
||||||
|
|
||||||
|
# Bootloader selection
|
||||||
|
# Teensy halfkay
|
||||||
|
# Pro Micro caterina
|
||||||
|
# Atmel DFU atmel-dfu
|
||||||
|
# LUFA DFU lufa-dfu
|
||||||
|
# QMK DFU qmk-dfu
|
||||||
|
# ATmega32A bootloadHID
|
||||||
|
# ATmega328P USBasp
|
||||||
|
BOOTLOADER = atmel-dfu
|
||||||
|
|
||||||
|
# Build Options
|
||||||
|
# change yes to no to disable
|
||||||
|
#
|
||||||
|
BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration
|
||||||
|
MOUSEKEY_ENABLE = no # Mouse keys
|
||||||
|
EXTRAKEY_ENABLE = no # 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
|
||||||
|
MIDI_ENABLE = no # MIDI support
|
||||||
|
BLUETOOTH_ENABLE = no # Enable Bluetooth
|
||||||
|
AUDIO_ENABLE = no # Audio output
|
||||||
|
FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
|
||||||
@@ -1,33 +1 @@
|
|||||||
# MCU name
|
DEFAULT_FOLDER = nomu30/rev1
|
||||||
MCU = atmega32u4
|
|
||||||
|
|
||||||
# Bootloader selection
|
|
||||||
# Teensy halfkay
|
|
||||||
# Pro Micro caterina
|
|
||||||
# Atmel DFU atmel-dfu
|
|
||||||
# LUFA DFU lufa-dfu
|
|
||||||
# QMK DFU qmk-dfu
|
|
||||||
# ATmega32A bootloadHID
|
|
||||||
# ATmega328P USBasp
|
|
||||||
BOOTLOADER = caterina
|
|
||||||
|
|
||||||
# Build Options
|
|
||||||
# change yes to no to disable
|
|
||||||
#
|
|
||||||
BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration
|
|
||||||
MOUSEKEY_ENABLE = no # Mouse keys
|
|
||||||
EXTRAKEY_ENABLE = yes # Audio control and System control
|
|
||||||
CONSOLE_ENABLE = no # Console for debug
|
|
||||||
COMMAND_ENABLE = no # Commands for debug and configuration
|
|
||||||
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
|
|
||||||
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
|
|
||||||
# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
|
|
||||||
NKRO_ENABLE = no # USB Nkey Rollover
|
|
||||||
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default
|
|
||||||
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
|
|
||||||
MIDI_ENABLE = no # MIDI support
|
|
||||||
UNICODE_ENABLE = no # Unicode
|
|
||||||
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
|
|
||||||
AUDIO_ENABLE = no # Audio output on port C6
|
|
||||||
FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
|
|
||||||
HD44780_ENABLE = no # Enable support for HD44780 based LCDs
|
|
||||||
@@ -0,0 +1,35 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#ifdef AUDIO_ENABLE
|
||||||
|
#define STARTUP_SONG SONG(PLANCK_SOUND)
|
||||||
|
// #define STARTUP_SONG SONG(NO_SOUND)
|
||||||
|
|
||||||
|
#define DEFAULT_LAYER_SONGS { SONG(QWERTY_SOUND), \
|
||||||
|
SONG(COLEMAK_SOUND), \
|
||||||
|
SONG(DVORAK_SOUND) \
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/*
|
||||||
|
* MIDI options
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* Prevent use of disabled MIDI features in the keymap */
|
||||||
|
//#define MIDI_ENABLE_STRICT 1
|
||||||
|
|
||||||
|
/* enable basic MIDI features:
|
||||||
|
- MIDI notes can be sent when in Music mode is on
|
||||||
|
*/
|
||||||
|
|
||||||
|
#define MIDI_BASIC
|
||||||
|
|
||||||
|
/* enable advanced MIDI features:
|
||||||
|
- MIDI notes can be added to the keymap
|
||||||
|
- Octave shift and transpose
|
||||||
|
- Virtual sustain, portamento, and modulation wheel
|
||||||
|
- etc.
|
||||||
|
*/
|
||||||
|
//#define MIDI_ADVANCED
|
||||||
|
|
||||||
|
/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */
|
||||||
|
//#define MIDI_TONE_KEYCODE_OCTAVES 2
|
||||||
@@ -0,0 +1,316 @@
|
|||||||
|
/* Copyright 2015-2017 Jack Humbert
|
||||||
|
*
|
||||||
|
* This program is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 2 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include QMK_KEYBOARD_H
|
||||||
|
#include "muse.h"
|
||||||
|
|
||||||
|
|
||||||
|
enum planck_layers {
|
||||||
|
_QWERTY,
|
||||||
|
_LOWER,
|
||||||
|
_RAISE,
|
||||||
|
_NAV,
|
||||||
|
_PLOVER,
|
||||||
|
_ADJUST
|
||||||
|
};
|
||||||
|
|
||||||
|
enum planck_keycodes {
|
||||||
|
QWERTY = SAFE_RANGE,
|
||||||
|
PLOVER,
|
||||||
|
BACKLIT,
|
||||||
|
EXT_PLV
|
||||||
|
};
|
||||||
|
|
||||||
|
#define LOWER MO(_LOWER)
|
||||||
|
#define RAISE MO(_RAISE)
|
||||||
|
|
||||||
|
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
|
|
||||||
|
/* Qwerty
|
||||||
|
* ,-----------------------------------------------------------------------------------.
|
||||||
|
* | Tab | Q | W | E | R | T | Y | U | I | O | P | Bksp |
|
||||||
|
* |------+------+------+------+------+------+------+------+------+------+------+------|
|
||||||
|
* | Esc | A | S | D | F | G | H | J | K | L | ; | " |
|
||||||
|
* |------+------+------+------+------+------+------+------+------+------+------+------|
|
||||||
|
* | Shift| Z | X | C | V | B | N | M | , | . | / |Enter |
|
||||||
|
* |------+------+------+------+------+------+------+------+------+------+------+------|
|
||||||
|
* | Ctrl| CAPS | Alt | GUI |Lower | Space |Raise | Left | Down | Up |Right |
|
||||||
|
* `-----------------------------------------------------------------------------------'
|
||||||
|
*/
|
||||||
|
[_QWERTY] = LAYOUT_planck_grid(
|
||||||
|
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
|
||||||
|
LT(_NAV, KC_ESC), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
|
||||||
|
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT ,
|
||||||
|
KC_LCTL, KC_CAPS, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT
|
||||||
|
),
|
||||||
|
|
||||||
|
|
||||||
|
/* Lower
|
||||||
|
* ,-----------------------------------------------------------------------------------.
|
||||||
|
* | ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | Bksp |
|
||||||
|
* |------+------+------+------+------+------+------+------+------+------+------+------|
|
||||||
|
* | Del | F1 | F2 | F3 | F4 | F5 | F6 | _ | + | { | } | | |
|
||||||
|
* |------+------+------+------+------+------+------+------+------+------+------+------|
|
||||||
|
* | | F7 | F8 | F9 | F10 | F11 | F12 |ISO ~ |ISO | | Home | End |Pl/Ps |
|
||||||
|
* |------+------+------+------+------+------+------+------+------+------+------+------|
|
||||||
|
* | | | | | | | | Prev | Vol- | Vol+ | Next |
|
||||||
|
* `-----------------------------------------------------------------------------------'
|
||||||
|
*/
|
||||||
|
[_LOWER] = LAYOUT_planck_grid(
|
||||||
|
KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC,
|
||||||
|
KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE,
|
||||||
|
_______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, S(KC_NUHS), S(KC_NUBS), KC_HOME, KC_END, KC_MPLY,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, KC_MPRV, KC_VOLD, KC_VOLU, KC_MNXT
|
||||||
|
),
|
||||||
|
|
||||||
|
/* Raise
|
||||||
|
* ,-----------------------------------------------------------------------------------.
|
||||||
|
* | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp |
|
||||||
|
* |------+------+------+------+------+------+------+------+------+------+------+------|
|
||||||
|
* | Del | F1 | F2 | F3 | F4 | F5 | F6 | - | = | [ | ] | \ |
|
||||||
|
* |------+------+------+------+------+------+------+------+------+------+------+------|
|
||||||
|
* | | F7 | F8 | F9 | F10 | F11 | F12 |ISO # |ISO / |Pg Up |Pg Dn |Pl/Ps |
|
||||||
|
* |------+------+------+------+------+------+------+------+------+------+------+------|
|
||||||
|
* | | | | | | | | Prev | Vol- | Vol+ | Next |
|
||||||
|
* `-----------------------------------------------------------------------------------'
|
||||||
|
*/
|
||||||
|
[_RAISE] = LAYOUT_planck_grid(
|
||||||
|
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC,
|
||||||
|
KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS,
|
||||||
|
_______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_NUHS, KC_NUBS, KC_PGUP, KC_PGDN, KC_MPLY,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, KC_MPRV, KC_VOLD, KC_VOLU, KC_MNXT
|
||||||
|
),
|
||||||
|
|
||||||
|
/* Nav
|
||||||
|
* ,----------------------------------l-------------------------------------------------.
|
||||||
|
* | | | | | | | | Pg Dn| Up | Pg Up| | |
|
||||||
|
* |------+------+------+------+------+------+------+------+------+------+------+------|
|
||||||
|
* | | Mute | Vol-| Vol+ | Pl/Ps| | | Left | Down | Right| | |
|
||||||
|
* |------+------+------+------+------+------+------+------+------+------+------+------|
|
||||||
|
* | | | | | | | | | | | | |
|
||||||
|
* |------+------+------+------+------+------+------+------+------+------+------+------|
|
||||||
|
* | | | | | | | | | | | |
|
||||||
|
* `-----------------------------------------------------------------------------------'
|
||||||
|
*/
|
||||||
|
[_NAV] = LAYOUT_planck_grid(
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, KC_PGDOWN, KC_UP, KC_PGUP, _______ , _______,
|
||||||
|
_______, KC_MUTE, KC_VOLD, KC_VOLU, KC_MPLY, _______, _______, KC_LEFT, KC_DOWN, KC_RIGHT, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MPLY,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, KC_MPRV, KC_VOLD, KC_VOLU, KC_MNXT
|
||||||
|
),
|
||||||
|
|
||||||
|
|
||||||
|
/* Plover layer (http://opensteno.org)
|
||||||
|
* ,-----------------------------------------------------------------------------------.
|
||||||
|
* | # | # | # | # | # | # | # | # | # | # | # | # |
|
||||||
|
* |------+------+------+------+------+------+------+------+------+------+------+------|
|
||||||
|
* | | S | T | P | H | * | * | F | P | L | T | D |
|
||||||
|
* |------+------+------+------+------+------+------+------+------+------+------+------|
|
||||||
|
* | | S | K | W | R | * | * | R | B | G | S | Z |
|
||||||
|
* |------+------+------+------+------+------+------+------+------+------+------+------|
|
||||||
|
* | Exit | | | A | O | | E | U | | | |
|
||||||
|
* `-----------------------------------------------------------------------------------'
|
||||||
|
*/
|
||||||
|
[_PLOVER] = LAYOUT_planck_grid(
|
||||||
|
KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1 ,
|
||||||
|
XXXXXXX, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC,
|
||||||
|
XXXXXXX, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
|
||||||
|
EXT_PLV, XXXXXXX, XXXXXXX, KC_C, KC_V, XXXXXXX, XXXXXXX, KC_N, KC_M, XXXXXXX, XXXXXXX, XXXXXXX
|
||||||
|
),
|
||||||
|
|
||||||
|
/* Adjust (Lower + Raise)
|
||||||
|
* v------------------------RGB CONTROL--------------------v
|
||||||
|
* ,-----------------------------------------------------------------------------------.
|
||||||
|
* | | Reset|Debug | RGB |RGBMOD| HUE+ | HUE- | SAT+ | SAT- |BRGTH+|BRGTH-| Del |
|
||||||
|
* |------+------+------+------+------+------+------+------+------+------+------+------|
|
||||||
|
* | | |MUSmod|Aud on|Audoff|AGnorm|AGswap|Qwerty| | |Plover| |
|
||||||
|
* |------+------+------+------+------+------+------+------+------+------+------+------|
|
||||||
|
* | |Voice-|Voice+|Mus on|Musoff|MIDIon|MIDIof|TermOn|TermOf| | | |
|
||||||
|
* |------+------+------+------+------+------+------+------+------+------+------+------|
|
||||||
|
* | | | | | | | | | | | |
|
||||||
|
* `-----------------------------------------------------------------------------------'
|
||||||
|
*/
|
||||||
|
[_ADJUST] = LAYOUT_planck_grid(
|
||||||
|
_______, RESET, DEBUG, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_DEL ,
|
||||||
|
_______, _______, MU_MOD, AU_ON, AU_OFF, AG_NORM, AG_SWAP, QWERTY, _______, _______, PLOVER, _______,
|
||||||
|
_______, MUV_DE, MUV_IN, MU_ON, MU_OFF, MI_ON, MI_OFF, TERM_ON, TERM_OFF, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
|
||||||
|
)
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
#ifdef AUDIO_ENABLE
|
||||||
|
float plover_song[][2] = SONG(PLOVER_SOUND);
|
||||||
|
float plover_gb_song[][2] = SONG(PLOVER_GOODBYE_SOUND);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
layer_state_t layer_state_set_user(layer_state_t state) {
|
||||||
|
return update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST);
|
||||||
|
}
|
||||||
|
|
||||||
|
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
||||||
|
switch (keycode) {
|
||||||
|
case QWERTY:
|
||||||
|
if (record->event.pressed) {
|
||||||
|
print("mode just switched to qwerty and this is a huge string\n");
|
||||||
|
set_single_persistent_default_layer(_QWERTY);
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
case BACKLIT:
|
||||||
|
if (record->event.pressed) {
|
||||||
|
register_code(KC_RSFT);
|
||||||
|
#ifdef BACKLIGHT_ENABLE
|
||||||
|
backlight_step();
|
||||||
|
#endif
|
||||||
|
#ifdef KEYBOARD_planck_rev5
|
||||||
|
writePinLow(E6);
|
||||||
|
#endif
|
||||||
|
} else {
|
||||||
|
unregister_code(KC_RSFT);
|
||||||
|
#ifdef KEYBOARD_planck_rev5
|
||||||
|
writePinHigh(E6);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
case PLOVER:
|
||||||
|
if (record->event.pressed) {
|
||||||
|
#ifdef AUDIO_ENABLE
|
||||||
|
stop_all_notes();
|
||||||
|
PLAY_SONG(plover_song);
|
||||||
|
#endif
|
||||||
|
layer_off(_RAISE);
|
||||||
|
layer_off(_LOWER);
|
||||||
|
layer_off(_ADJUST);
|
||||||
|
layer_on(_PLOVER);
|
||||||
|
if (!eeconfig_is_enabled()) {
|
||||||
|
eeconfig_init();
|
||||||
|
}
|
||||||
|
keymap_config.raw = eeconfig_read_keymap();
|
||||||
|
keymap_config.nkro = 1;
|
||||||
|
eeconfig_update_keymap(keymap_config.raw);
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
case EXT_PLV:
|
||||||
|
if (record->event.pressed) {
|
||||||
|
#ifdef AUDIO_ENABLE
|
||||||
|
PLAY_SONG(plover_gb_song);
|
||||||
|
#endif
|
||||||
|
layer_off(_PLOVER);
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool muse_mode = false;
|
||||||
|
uint8_t last_muse_note = 0;
|
||||||
|
uint16_t muse_counter = 0;
|
||||||
|
uint8_t muse_offset = 70;
|
||||||
|
uint16_t muse_tempo = 50;
|
||||||
|
|
||||||
|
void encoder_update(bool clockwise) {
|
||||||
|
if (muse_mode) {
|
||||||
|
if (IS_LAYER_ON(_RAISE)) {
|
||||||
|
if (clockwise) {
|
||||||
|
muse_offset++;
|
||||||
|
} else {
|
||||||
|
muse_offset--;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (clockwise) {
|
||||||
|
muse_tempo+=1;
|
||||||
|
} else {
|
||||||
|
muse_tempo-=1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (clockwise) {
|
||||||
|
#ifdef MOUSEKEY_ENABLE
|
||||||
|
tap_code(KC_MS_WH_DOWN);
|
||||||
|
#else
|
||||||
|
tap_code(KC_PGDN);
|
||||||
|
#endif
|
||||||
|
} else {
|
||||||
|
#ifdef MOUSEKEY_ENABLE
|
||||||
|
tap_code(KC_MS_WH_UP);
|
||||||
|
#else
|
||||||
|
tap_code(KC_PGUP);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void dip_switch_update_user(uint8_t index, bool active) {
|
||||||
|
switch (index) {
|
||||||
|
case 0: {
|
||||||
|
#ifdef AUDIO_ENABLE
|
||||||
|
static bool play_sound = false;
|
||||||
|
#endif
|
||||||
|
if (active) {
|
||||||
|
#ifdef AUDIO_ENABLE
|
||||||
|
if (play_sound) { PLAY_SONG(plover_song); }
|
||||||
|
#endif
|
||||||
|
layer_on(_ADJUST);
|
||||||
|
} else {
|
||||||
|
#ifdef AUDIO_ENABLE
|
||||||
|
if (play_sound) { PLAY_SONG(plover_gb_song); }
|
||||||
|
#endif
|
||||||
|
layer_off(_ADJUST);
|
||||||
|
}
|
||||||
|
#ifdef AUDIO_ENABLE
|
||||||
|
play_sound = true;
|
||||||
|
#endif
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case 1:
|
||||||
|
if (active) {
|
||||||
|
muse_mode = true;
|
||||||
|
} else {
|
||||||
|
muse_mode = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void matrix_scan_user(void) {
|
||||||
|
#ifdef AUDIO_ENABLE
|
||||||
|
if (muse_mode) {
|
||||||
|
if (muse_counter == 0) {
|
||||||
|
uint8_t muse_note = muse_offset + SCALE[muse_clock_pulse()];
|
||||||
|
if (muse_note != last_muse_note) {
|
||||||
|
stop_note(compute_freq_for_midi_note(last_muse_note));
|
||||||
|
play_note(compute_freq_for_midi_note(muse_note), 0xF);
|
||||||
|
last_muse_note = muse_note;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
muse_counter = (muse_counter + 1) % muse_tempo;
|
||||||
|
} else {
|
||||||
|
if (muse_counter) {
|
||||||
|
stop_all_notes();
|
||||||
|
muse_counter = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
bool music_mask_user(uint16_t keycode) {
|
||||||
|
switch (keycode) {
|
||||||
|
case RAISE:
|
||||||
|
case LOWER:
|
||||||
|
return false;
|
||||||
|
default:
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,7 @@
|
|||||||
|
# Abishalom Planck Layout
|
||||||
|
|
||||||
|
Mostly the same as default. Changes:
|
||||||
|
- Get rid of COLEMAK and DVORAK layers
|
||||||
|
- Add new layer (NAV) which is accessed by holding the ESC key. This brings up arrow keys in ijkl spots, along with handy media funcions in wasd.
|
||||||
|
- Move left control to the corner, put caps lock between LCTRL and LGUI
|
||||||
|
- Adjustments to media keys in bottom right corner
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
SRC += muse.c
|
||||||
@@ -1,14 +1,15 @@
|
|||||||
# AJP10304 Custom Planck Layout
|
# AJP10304 Custom Planck Layout
|
||||||
# Also available for the Atreus50 and JJ40
|
# Also available for the Shark, JJ40 and Atreus50
|
||||||
|
|
||||||
**Note:** In the tables below where there are two characters on a key,
|
**Note:** In the tables below where there are two characters on a key,
|
||||||
the second is the output when shift is applied.
|
the second is the output when shift is applied.
|
||||||
|
|
||||||
**Note:** The below tables assume a UK layout.
|
**Note:** The below tables assume a UK layout.
|
||||||
|
|
||||||
####Flashing
|
#### Flashing
|
||||||
Rev <=5: sudo make planck:ajp10304:dfu
|
Rev <=5: `make planck:ajp10304:flash`
|
||||||
Rev 6: sudo make planck/rev6:ajp10304:dfu-util
|
|
||||||
|
Rev 6: `make planck/rev6:ajp10304:flash`
|
||||||
|
|
||||||
##### Main Qwerty Layer
|
##### Main Qwerty Layer
|
||||||
|
|
||||||
@@ -47,13 +48,13 @@ Activated when `Lower` is held in the above `qwerty` layer.
|
|||||||
| Shift | \| | `¬ | #~ | '@ | -_ | =+ | #~ | [{ | ]} | '@ |Shift |
|
| Shift | \| | `¬ | #~ | '@ | -_ | =+ | #~ | [{ | ]} | '@ |Shift |
|
||||||
| | | | |Lower | Del |Space | | Next | Vol- | Vol+ | Play |
|
| | | | |Lower | Del |Space | | Next | Vol- | Vol+ | Play |
|
||||||
|
|
||||||
##### Raise Layer
|
##### Raise Layer
|
||||||
Activated when `Raise` is held in the above `qwerty` layer.
|
Activated when `Raise` is held in the above `qwerty` layer.
|
||||||
|
|
||||||
* Preferred layer for typing brackets.
|
* Preferred layer for typing brackets.
|
||||||
* Allows for cursor navigation to be used solely with the right hand.
|
* Allows for cursor navigation to be used solely with the right hand.
|
||||||
* WRDSEL: Select the word where the cursor is.
|
* WRDSEL: Select the word where the cursor is.
|
||||||
* |< and >|: Apply `ctrl` to `left` and `right` respectively for word jumping.
|
* |< and >|: Apply `ctrl` to `left` and `right` respectively for word jumping.
|
||||||
|
|
||||||
| | | | | | | | | | | | |
|
| | | | | | | | | | | | |
|
||||||
| :---: |:----:| :---:| :---:| :---:| :---:| :---: | :---:| :---:| :---:| :---: | :---:|
|
| :---: |:----:| :---:| :---:| :---:| :---:| :---: | :---:| :---:| :---:| :---: | :---:|
|
||||||
@@ -102,7 +103,17 @@ Activated when `fn` and `raise` held together.
|
|||||||
|
|
||||||
| | | | | | | | | | | | |
|
| | | | | | | | | | | | |
|
||||||
| :---: | :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:|
|
| :---: | :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:|
|
||||||
| ESC | | | | | | | | | | | |
|
| ESC | | | | | | | | BTN3 | | | |
|
||||||
| ACC0 | ACC1 | ACC2 | | | | | BTN1 | UP | BTN2 | | |
|
| ACC0 | ACC1 | ACC2 | | | | | BTN1 | UP | BTN2 | | |
|
||||||
| ACC0 | ACC1 | ACC2 | | | | | LEFT | DOWN | RIGHT| | |
|
| ACC0 | ACC1 | ACC2 | | | | | LEFT | DOWN | RIGHT| | |
|
||||||
| | | | | | | | | | | | |
|
| | | | | | | | | | | | |
|
||||||
|
|
||||||
|
##### Number Pad Layout
|
||||||
|
Activated when holding `Esc` key.
|
||||||
|
|
||||||
|
| | | | | | | | | | | | |
|
||||||
|
| :---: | :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:|
|
||||||
|
| | | | | | |NMLOCK| 7 | 8 | 9 | / | |
|
||||||
|
| | | | | | | | 4 | 5 | 6 | * | |
|
||||||
|
| | | | | | | | 1 | 2 | 3 | + | |
|
||||||
|
| | | | | | | | 0 | . | , | - | |
|
||||||
@@ -1,3 +0,0 @@
|
|||||||
AUDIO_ENABLE = no
|
|
||||||
MOUSEKEY_ENABLE = yes
|
|
||||||
|
|
||||||
Whitespace-only changes.
@@ -49,7 +49,7 @@
|
|||||||
#define bspc KC_BSPC
|
#define bspc KC_BSPC
|
||||||
#define caps KC_CAPS
|
#define caps KC_CAPS
|
||||||
#define comm KC_COMM
|
#define comm KC_COMM
|
||||||
#define dash A(KC_MINS)
|
#define dash A(KC_MINS) // en-dash (–); or with shift: em-dash (—)
|
||||||
#define scln KC_SCLN
|
#define scln KC_SCLN
|
||||||
#define slsh KC_SLSH
|
#define slsh KC_SLSH
|
||||||
#define spc KC_SPC
|
#define spc KC_SPC
|
||||||
@@ -60,7 +60,6 @@
|
|||||||
#define mins KC_MINS
|
#define mins KC_MINS
|
||||||
#define quot KC_QUOT
|
#define quot KC_QUOT
|
||||||
#define esc KC_ESC
|
#define esc KC_ESC
|
||||||
#define gbp A(KC_3)
|
|
||||||
|
|
||||||
#define down KC_DOWN
|
#define down KC_DOWN
|
||||||
#define home G(KC_LEFT)
|
#define home G(KC_LEFT)
|
||||||
@@ -75,8 +74,8 @@
|
|||||||
#define tabr G(S(KC_RBRC))
|
#define tabr G(S(KC_RBRC))
|
||||||
#define fwd G(KC_RBRC)
|
#define fwd G(KC_RBRC)
|
||||||
#define back G(KC_LBRC)
|
#define back G(KC_LBRC)
|
||||||
#define slup S(A(KC_UP))
|
#define slup S(A(KC_UP)) // Previous unread in Slack
|
||||||
#define sldn S(A(KC_DOWN))
|
#define sldn S(A(KC_DOWN)) // Next unread in Slack
|
||||||
|
|
||||||
#define ctl1 C(KC_1)
|
#define ctl1 C(KC_1)
|
||||||
#define ctl2 C(KC_2)
|
#define ctl2 C(KC_2)
|
||||||
@@ -137,6 +136,7 @@ enum planck_layers {
|
|||||||
};
|
};
|
||||||
|
|
||||||
enum planck_keycodes {
|
enum planck_keycodes {
|
||||||
|
// ASCII
|
||||||
ampr = SAFE_RANGE,
|
ampr = SAFE_RANGE,
|
||||||
astr,
|
astr,
|
||||||
at,
|
at,
|
||||||
@@ -158,6 +158,11 @@ enum planck_keycodes {
|
|||||||
rprn,
|
rprn,
|
||||||
tild,
|
tild,
|
||||||
|
|
||||||
|
// Curly quotes
|
||||||
|
lcqt,
|
||||||
|
rcqt,
|
||||||
|
|
||||||
|
// "Smart" mods
|
||||||
cmd,
|
cmd,
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -171,7 +176,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|||||||
|
|
||||||
[SYMB] = LAYOUT_planck_grid(
|
[SYMB] = LAYOUT_planck_grid(
|
||||||
esc, n7, n5, n3, n1, n9, n8, n0, n2, n4, n6, dash,
|
esc, n7, n5, n3, n1, n9, n8, n0, n2, n4, n6, dash,
|
||||||
del, at, dlr, eql, lprn, lbrc, rbrc, rprn, astr, hash, plus, gbp,
|
lcqt, at, dlr, eql, lprn, lbrc, rbrc, rprn, astr, hash, plus, rcqt,
|
||||||
____, grv, pipe, bsls, lcbr, tild, circ, rcbr, ampr, exlm, perc, ____,
|
____, grv, pipe, bsls, lcbr, tild, circ, rcbr, ampr, exlm, perc, ____,
|
||||||
____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____
|
____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____
|
||||||
),
|
),
|
||||||
@@ -191,78 +196,112 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|||||||
),
|
),
|
||||||
};
|
};
|
||||||
|
|
||||||
bool send_string_if_keydown(keyrecord_t *record, const char *s) {
|
bool send_string_if_keydown(
|
||||||
|
keyrecord_t *record,
|
||||||
|
const char *unshifted,
|
||||||
|
const char *shifted) {
|
||||||
if (record->event.pressed) {
|
if (record->event.pressed) {
|
||||||
send_string(s);
|
if (shifted) {
|
||||||
|
uint8_t shifts = get_mods() & MOD_MASK_SHIFT;
|
||||||
|
if (shifts) {
|
||||||
|
del_mods(shifts);
|
||||||
|
SEND_STRING(shifted);
|
||||||
|
add_mods(shifts);
|
||||||
|
} else {
|
||||||
|
SEND_STRING(unshifted);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
SEND_STRING(unshifted);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
int cmd_keys_down = 0;
|
// Holding both cmd keys will instead register as cmd + ctl
|
||||||
|
bool smart_cmd(keyrecord_t *record) {
|
||||||
|
static int cmd_keys_down = 0;
|
||||||
|
|
||||||
|
if (record->event.pressed) {
|
||||||
|
if (cmd_keys_down == 0) {
|
||||||
|
register_code(KC_LCMD);
|
||||||
|
} else {
|
||||||
|
register_code(KC_LCTL);
|
||||||
|
}
|
||||||
|
cmd_keys_down++;
|
||||||
|
} else {
|
||||||
|
if (cmd_keys_down == 1) {
|
||||||
|
unregister_code(KC_LCMD);
|
||||||
|
} else {
|
||||||
|
unregister_code(KC_LCTL);
|
||||||
|
}
|
||||||
|
cmd_keys_down--;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
||||||
switch (keycode) {
|
switch (keycode) {
|
||||||
// Override the defualt auto shifted symbols to use SEND_STRING See
|
// Override the defualt auto shifted symbols to use SEND_STRING See
|
||||||
// https://github.com/qmk/qmk_firmware/issues/4072
|
// https://github.com/qmk/qmk_firmware/issues/4072
|
||||||
case ampr:
|
case ampr:
|
||||||
return send_string_if_keydown(record, "&");
|
return send_string_if_keydown(record, "&", NULL);
|
||||||
case astr:
|
case astr:
|
||||||
return send_string_if_keydown(record, "*");
|
return send_string_if_keydown(record, "*", NULL);
|
||||||
case at:
|
case at:
|
||||||
return send_string_if_keydown(record, "@");
|
return send_string_if_keydown(record, "@", NULL);
|
||||||
case bsls:
|
case bsls:
|
||||||
return send_string_if_keydown(record, "\\");
|
return send_string_if_keydown(record, "\\", NULL);
|
||||||
case circ:
|
case circ:
|
||||||
return send_string_if_keydown(record, "^");
|
return send_string_if_keydown(record, "^", NULL);
|
||||||
case dlr:
|
case dlr:
|
||||||
return send_string_if_keydown(record, "$");
|
return send_string_if_keydown(record, "$", NULL);
|
||||||
case eql:
|
case eql:
|
||||||
return send_string_if_keydown(record, "=");
|
return send_string_if_keydown(record, "=", NULL);
|
||||||
case exlm:
|
case exlm:
|
||||||
return send_string_if_keydown(record, "!");
|
return send_string_if_keydown(record, "!", NULL);
|
||||||
case grv:
|
case grv:
|
||||||
return send_string_if_keydown(record, "`");
|
return send_string_if_keydown(record, "`", NULL);
|
||||||
case hash:
|
case hash:
|
||||||
return send_string_if_keydown(record, "#");
|
return send_string_if_keydown(record, "#", NULL);
|
||||||
case lbrc:
|
case lbrc:
|
||||||
return send_string_if_keydown(record, "[");
|
return send_string_if_keydown(record, "[", NULL);
|
||||||
case lcbr:
|
case lcbr:
|
||||||
return send_string_if_keydown(record, "{");
|
return send_string_if_keydown(record, "{", NULL);
|
||||||
case lprn:
|
case lprn:
|
||||||
return send_string_if_keydown(record, "(");
|
return send_string_if_keydown(record, "(", NULL);
|
||||||
case perc:
|
case perc:
|
||||||
return send_string_if_keydown(record, "%");
|
return send_string_if_keydown(record, "%", NULL);
|
||||||
case pipe:
|
case pipe:
|
||||||
return send_string_if_keydown(record, "|");
|
return send_string_if_keydown(record, "|", NULL);
|
||||||
case plus:
|
case plus:
|
||||||
return send_string_if_keydown(record, "+");
|
return send_string_if_keydown(record, "+", NULL);
|
||||||
case rbrc:
|
case rbrc:
|
||||||
return send_string_if_keydown(record, "]");
|
return send_string_if_keydown(record, "]", NULL);
|
||||||
case rcbr:
|
case rcbr:
|
||||||
return send_string_if_keydown(record, "}");
|
return send_string_if_keydown(record, "}", NULL);
|
||||||
case rprn:
|
case rprn:
|
||||||
return send_string_if_keydown(record, ")");
|
return send_string_if_keydown(record, ")", NULL);
|
||||||
case tild:
|
case tild:
|
||||||
return send_string_if_keydown(record, "~");
|
return send_string_if_keydown(record, "~", NULL);
|
||||||
|
|
||||||
|
// The macOS shortcuts for curly quotes are horrible, so this rebinds
|
||||||
|
// them so that shift toggles single–double instead of left–right, and
|
||||||
|
// then both varieties of left quote can share one key, and both
|
||||||
|
// varieties of right quote share another.
|
||||||
|
case lcqt:
|
||||||
|
return send_string_if_keydown(
|
||||||
|
record,
|
||||||
|
SS_LALT("]"), // left single quote (‘)
|
||||||
|
SS_LALT("[")); // left double quote (“)
|
||||||
|
case rcqt:
|
||||||
|
return send_string_if_keydown(
|
||||||
|
record,
|
||||||
|
SS_LALT(SS_LSFT("]")), // right single quote (’)
|
||||||
|
SS_LALT(SS_LSFT("["))); // right double quote (”)
|
||||||
|
|
||||||
// cmd + cmd -> cmd + ctl
|
// cmd + cmd -> cmd + ctl
|
||||||
case cmd:
|
case cmd:
|
||||||
if (record->event.pressed) {
|
return smart_cmd(record);
|
||||||
if (cmd_keys_down == 0) {
|
|
||||||
register_code(KC_LCMD);
|
|
||||||
} else {
|
|
||||||
register_code(KC_LCTL);
|
|
||||||
}
|
|
||||||
cmd_keys_down++;
|
|
||||||
} else {
|
|
||||||
if (cmd_keys_down == 1) {
|
|
||||||
unregister_code(KC_LCMD);
|
|
||||||
} else {
|
|
||||||
unregister_code(KC_LCTL);
|
|
||||||
}
|
|
||||||
cmd_keys_down--;
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
# callum's planck layout
|
# callum’s planck layout
|
||||||
|
|
||||||
This is a layout for the grid planck, built with a few ideals in mind:
|
This is a layout for the grid planck, built with a few ideals in mind:
|
||||||
|
|
||||||
@@ -23,8 +23,8 @@ This is a layout for the grid planck, built with a few ideals in mind:
|
|||||||
|
|
||||||
- Symbols should be arranged so that the most frequently used are easiest to
|
- Symbols should be arranged so that the most frequently used are easiest to
|
||||||
reach. This includes numbers, and lower numbers are more commonly used than
|
reach. This includes numbers, and lower numbers are more commonly used than
|
||||||
higher ones. (number arrangement borrowed from [dustypomeleau's minidox
|
higher ones. (number arrangement borrowed from [dustypomeleau’s minidox
|
||||||
layout][].
|
layout][]).
|
||||||
|
|
||||||
[dustypomeleau's minidox layout]: https://github.com/qmk/qmk_firmware/tree/master/keyboards/minidox/keymaps/dustypomerleau
|
[dustypomeleau’s minidox layout]: https://github.com/qmk/qmk_firmware/tree/master/keyboards/minidox/keymaps/dustypomerleau
|
||||||
[keymap.c]: keymap.c
|
[keymap.c]: keymap.c
|
||||||
@@ -1,19 +1,7 @@
|
|||||||
# Build Options
|
BOOTMAGIC_ENABLE = no
|
||||||
# change to "no" to disable the options, or define them in the Makefile in
|
MOUSEKEY_ENABLE = no
|
||||||
# the appropriate keymap folder that will get included automatically
|
CONSOLE_ENABLE = no
|
||||||
#
|
COMMAND_ENABLE = yes
|
||||||
BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
|
MIDI_ENABLE = no
|
||||||
MOUSEKEY_ENABLE = no # Mouse keys(+4700)
|
AUDIO_ENABLE = yes
|
||||||
EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
|
RGBLIGHT_ENABLE = no
|
||||||
CONSOLE_ENABLE = no # Console for debug(+400)
|
|
||||||
COMMAND_ENABLE = yes # Commands for debug and configuration
|
|
||||||
NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
|
|
||||||
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
|
|
||||||
MIDI_ENABLE = no # MIDI controls
|
|
||||||
AUDIO_ENABLE = yes # Audio output on port C6
|
|
||||||
UNICODE_ENABLE = no # Unicode
|
|
||||||
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
|
|
||||||
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
|
|
||||||
|
|
||||||
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
|
|
||||||
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
|
|
||||||
+630
-3
@@ -6,7 +6,6 @@
|
|||||||
"height": 5,
|
"height": 5,
|
||||||
"layouts": {
|
"layouts": {
|
||||||
"LAYOUT_all": {
|
"LAYOUT_all": {
|
||||||
"key_count": 69,
|
|
||||||
"layout": [
|
"layout": [
|
||||||
{"label":"Esc", "x":0, "y":0},
|
{"label":"Esc", "x":0, "y":0},
|
||||||
{"label":"1", "x":1, "y":0},
|
{"label":"1", "x":1, "y":0},
|
||||||
@@ -80,7 +79,6 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"LAYOUT_60_ansi": {
|
"LAYOUT_60_ansi": {
|
||||||
"key_count": 61,
|
|
||||||
"layout": [
|
"layout": [
|
||||||
{"x":0, "y":0},
|
{"x":0, "y":0},
|
||||||
{"x":1, "y":0},
|
{"x":1, "y":0},
|
||||||
@@ -145,8 +143,354 @@
|
|||||||
{"x":13.75, "y":4, "w":1.25}
|
{"x":13.75, "y":4, "w":1.25}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
"LAYOUT_60_ansi_split_bs": {
|
||||||
|
"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":6, "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":13, "y":0},
|
||||||
|
{"x":14, "y":0},
|
||||||
|
|
||||||
|
{"x":0, "y":1, "w":1.5},
|
||||||
|
{"x":1.5, "y":1},
|
||||||
|
{"x":2.5, "y":1},
|
||||||
|
{"x":3.5, "y":1},
|
||||||
|
{"x":4.5, "y":1},
|
||||||
|
{"x":5.5, "y":1},
|
||||||
|
{"x":6.5, "y":1},
|
||||||
|
{"x":7.5, "y":1},
|
||||||
|
{"x":8.5, "y":1},
|
||||||
|
{"x":9.5, "y":1},
|
||||||
|
{"x":10.5, "y":1},
|
||||||
|
{"x":11.5, "y":1},
|
||||||
|
{"x":12.5, "y":1},
|
||||||
|
{"x":13.5, "y":1, "w":1.5},
|
||||||
|
|
||||||
|
{"x":0, "y":2, "w":1.75},
|
||||||
|
{"x":1.75, "y":2},
|
||||||
|
{"x":2.75, "y":2},
|
||||||
|
{"x":3.75, "y":2},
|
||||||
|
{"x":4.75, "y":2},
|
||||||
|
{"x":5.75, "y":2},
|
||||||
|
{"x":6.75, "y":2},
|
||||||
|
{"x":7.75, "y":2},
|
||||||
|
{"x":8.75, "y":2},
|
||||||
|
{"x":9.75, "y":2},
|
||||||
|
{"x":10.75, "y":2},
|
||||||
|
{"x":11.75, "y":2},
|
||||||
|
{"x":12.75, "y":2, "w":2.25},
|
||||||
|
|
||||||
|
{"x":0, "y":3, "w":2.25},
|
||||||
|
{"x":2.25, "y":3},
|
||||||
|
{"x":3.25, "y":3},
|
||||||
|
{"x":4.25, "y":3},
|
||||||
|
{"x":5.25, "y":3},
|
||||||
|
{"x":6.25, "y":3},
|
||||||
|
{"x":7.25, "y":3},
|
||||||
|
{"x":8.25, "y":3},
|
||||||
|
{"x":9.25, "y":3},
|
||||||
|
{"x":10.25, "y":3},
|
||||||
|
{"x":11.25, "y":3},
|
||||||
|
{"x":12.25, "y":3, "w":2.75},
|
||||||
|
|
||||||
|
{"x":0, "y":4, "w":1.25},
|
||||||
|
{"x":1.25, "y":4, "w":1.25},
|
||||||
|
{"x":2.5, "y":4, "w":1.25},
|
||||||
|
{"x":3.75, "y":4, "w":6.25},
|
||||||
|
{"x":10, "y":4, "w":1.25},
|
||||||
|
{"x":11.25, "y":4, "w":1.25},
|
||||||
|
{"x":12.5, "y":4, "w":1.25},
|
||||||
|
{"x":13.75, "y":4, "w":1.25}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"LAYOUT_60_ansi_split_bs_rshift": {
|
||||||
|
"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":6, "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":13, "y":0},
|
||||||
|
{"x":14, "y":0},
|
||||||
|
|
||||||
|
{"x":0, "y":1, "w":1.5},
|
||||||
|
{"x":1.5, "y":1},
|
||||||
|
{"x":2.5, "y":1},
|
||||||
|
{"x":3.5, "y":1},
|
||||||
|
{"x":4.5, "y":1},
|
||||||
|
{"x":5.5, "y":1},
|
||||||
|
{"x":6.5, "y":1},
|
||||||
|
{"x":7.5, "y":1},
|
||||||
|
{"x":8.5, "y":1},
|
||||||
|
{"x":9.5, "y":1},
|
||||||
|
{"x":10.5, "y":1},
|
||||||
|
{"x":11.5, "y":1},
|
||||||
|
{"x":12.5, "y":1},
|
||||||
|
{"x":13.5, "y":1, "w":1.5},
|
||||||
|
|
||||||
|
{"x":0, "y":2, "w":1.75},
|
||||||
|
{"x":1.75, "y":2},
|
||||||
|
{"x":2.75, "y":2},
|
||||||
|
{"x":3.75, "y":2},
|
||||||
|
{"x":4.75, "y":2},
|
||||||
|
{"x":5.75, "y":2},
|
||||||
|
{"x":6.75, "y":2},
|
||||||
|
{"x":7.75, "y":2},
|
||||||
|
{"x":8.75, "y":2},
|
||||||
|
{"x":9.75, "y":2},
|
||||||
|
{"x":10.75, "y":2},
|
||||||
|
{"x":11.75, "y":2},
|
||||||
|
{"x":12.75, "y":2, "w":2.25},
|
||||||
|
|
||||||
|
{"x":0, "y":3, "w":2.25},
|
||||||
|
{"x":2.25, "y":3},
|
||||||
|
{"x":3.25, "y":3},
|
||||||
|
{"x":4.25, "y":3},
|
||||||
|
{"x":5.25, "y":3},
|
||||||
|
{"x":6.25, "y":3},
|
||||||
|
{"x":7.25, "y":3},
|
||||||
|
{"x":8.25, "y":3},
|
||||||
|
{"x":9.25, "y":3},
|
||||||
|
{"x":10.25, "y":3},
|
||||||
|
{"x":11.25, "y":3},
|
||||||
|
{"x":12.25, "y":3, "w":1.75},
|
||||||
|
{"x":14, "y":3},
|
||||||
|
|
||||||
|
{"x":0, "y":4, "w":1.25},
|
||||||
|
{"x":1.25, "y":4, "w":1.25},
|
||||||
|
{"x":2.5, "y":4, "w":1.25},
|
||||||
|
{"x":3.75, "y":4, "w":6.25},
|
||||||
|
{"x":10, "y":4, "w":1.25},
|
||||||
|
{"x":11.25, "y":4, "w":1.25},
|
||||||
|
{"x":12.5, "y":4, "w":1.25},
|
||||||
|
{"x":13.75, "y":4, "w":1.25}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"LAYOUT_60_ansi_split_rshift": {
|
||||||
|
"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":6, "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":13, "y":0, "w":2},
|
||||||
|
|
||||||
|
{"x":0, "y":1, "w":1.5},
|
||||||
|
{"x":1.5, "y":1},
|
||||||
|
{"x":2.5, "y":1},
|
||||||
|
{"x":3.5, "y":1},
|
||||||
|
{"x":4.5, "y":1},
|
||||||
|
{"x":5.5, "y":1},
|
||||||
|
{"x":6.5, "y":1},
|
||||||
|
{"x":7.5, "y":1},
|
||||||
|
{"x":8.5, "y":1},
|
||||||
|
{"x":9.5, "y":1},
|
||||||
|
{"x":10.5, "y":1},
|
||||||
|
{"x":11.5, "y":1},
|
||||||
|
{"x":12.5, "y":1},
|
||||||
|
{"x":13.5, "y":1, "w":1.5},
|
||||||
|
|
||||||
|
{"x":0, "y":2, "w":1.75},
|
||||||
|
{"x":1.75, "y":2},
|
||||||
|
{"x":2.75, "y":2},
|
||||||
|
{"x":3.75, "y":2},
|
||||||
|
{"x":4.75, "y":2},
|
||||||
|
{"x":5.75, "y":2},
|
||||||
|
{"x":6.75, "y":2},
|
||||||
|
{"x":7.75, "y":2},
|
||||||
|
{"x":8.75, "y":2},
|
||||||
|
{"x":9.75, "y":2},
|
||||||
|
{"x":10.75, "y":2},
|
||||||
|
{"x":11.75, "y":2},
|
||||||
|
{"x":12.75, "y":2, "w":2.25},
|
||||||
|
|
||||||
|
{"x":0, "y":3, "w":2.25},
|
||||||
|
{"x":2.25, "y":3},
|
||||||
|
{"x":3.25, "y":3},
|
||||||
|
{"x":4.25, "y":3},
|
||||||
|
{"x":5.25, "y":3},
|
||||||
|
{"x":6.25, "y":3},
|
||||||
|
{"x":7.25, "y":3},
|
||||||
|
{"x":8.25, "y":3},
|
||||||
|
{"x":9.25, "y":3},
|
||||||
|
{"x":10.25, "y":3},
|
||||||
|
{"x":11.25, "y":3},
|
||||||
|
{"x":12.25, "y":3, "w":1.75},
|
||||||
|
{"x":14, "y":3},
|
||||||
|
|
||||||
|
{"x":0, "y":4, "w":1.25},
|
||||||
|
{"x":1.25, "y":4, "w":1.25},
|
||||||
|
{"x":2.5, "y":4, "w":1.25},
|
||||||
|
{"x":3.75, "y":4, "w":6.25},
|
||||||
|
{"x":10, "y":4, "w":1.25},
|
||||||
|
{"x":11.25, "y":4, "w":1.25},
|
||||||
|
{"x":12.5, "y":4, "w":1.25},
|
||||||
|
{"x":13.75, "y":4, "w":1.25}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"LAYOUT_60_ansi_tsangan": {
|
||||||
|
"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":6, "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":13, "y":0, "w":2},
|
||||||
|
|
||||||
|
{"x":0, "y":1, "w":1.5},
|
||||||
|
{"x":1.5, "y":1},
|
||||||
|
{"x":2.5, "y":1},
|
||||||
|
{"x":3.5, "y":1},
|
||||||
|
{"x":4.5, "y":1},
|
||||||
|
{"x":5.5, "y":1},
|
||||||
|
{"x":6.5, "y":1},
|
||||||
|
{"x":7.5, "y":1},
|
||||||
|
{"x":8.5, "y":1},
|
||||||
|
{"x":9.5, "y":1},
|
||||||
|
{"x":10.5, "y":1},
|
||||||
|
{"x":11.5, "y":1},
|
||||||
|
{"x":12.5, "y":1},
|
||||||
|
{"x":13.5, "y":1, "w":1.5},
|
||||||
|
|
||||||
|
{"x":0, "y":2, "w":1.75},
|
||||||
|
{"x":1.75, "y":2},
|
||||||
|
{"x":2.75, "y":2},
|
||||||
|
{"x":3.75, "y":2},
|
||||||
|
{"x":4.75, "y":2},
|
||||||
|
{"x":5.75, "y":2},
|
||||||
|
{"x":6.75, "y":2},
|
||||||
|
{"x":7.75, "y":2},
|
||||||
|
{"x":8.75, "y":2},
|
||||||
|
{"x":9.75, "y":2},
|
||||||
|
{"x":10.75, "y":2},
|
||||||
|
{"x":11.75, "y":2},
|
||||||
|
{"x":12.75, "y":2, "w":2.25},
|
||||||
|
|
||||||
|
{"x":0, "y":3, "w":2.25},
|
||||||
|
{"x":2.25, "y":3},
|
||||||
|
{"x":3.25, "y":3},
|
||||||
|
{"x":4.25, "y":3},
|
||||||
|
{"x":5.25, "y":3},
|
||||||
|
{"x":6.25, "y":3},
|
||||||
|
{"x":7.25, "y":3},
|
||||||
|
{"x":8.25, "y":3},
|
||||||
|
{"x":9.25, "y":3},
|
||||||
|
{"x":10.25, "y":3},
|
||||||
|
{"x":11.25, "y":3},
|
||||||
|
{"x":12.25, "y":3, "w":2.75},
|
||||||
|
|
||||||
|
{"x":0, "y":4, "w":1.5},
|
||||||
|
{"x":1.5, "y":4},
|
||||||
|
{"x":2.5, "y":4, "w":1.5},
|
||||||
|
{"x":4, "y":4, "w":7},
|
||||||
|
{"x":11, "y":4, "w":1.5},
|
||||||
|
{"x":12.5, "y":4},
|
||||||
|
{"x":13.5, "y":4, "w":1.5}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"LAYOUT_60_hhkb": {
|
||||||
|
"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":6, "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":13, "y":0},
|
||||||
|
{"x":14, "y":0},
|
||||||
|
|
||||||
|
{"x":0, "y":1, "w":1.5},
|
||||||
|
{"x":1.5, "y":1},
|
||||||
|
{"x":2.5, "y":1},
|
||||||
|
{"x":3.5, "y":1},
|
||||||
|
{"x":4.5, "y":1},
|
||||||
|
{"x":5.5, "y":1},
|
||||||
|
{"x":6.5, "y":1},
|
||||||
|
{"x":7.5, "y":1},
|
||||||
|
{"x":8.5, "y":1},
|
||||||
|
{"x":9.5, "y":1},
|
||||||
|
{"x":10.5, "y":1},
|
||||||
|
{"x":11.5, "y":1},
|
||||||
|
{"x":12.5, "y":1},
|
||||||
|
{"x":13.5, "y":1, "w":1.5},
|
||||||
|
|
||||||
|
{"x":0, "y":2, "w":1.75},
|
||||||
|
{"x":1.75, "y":2},
|
||||||
|
{"x":2.75, "y":2},
|
||||||
|
{"x":3.75, "y":2},
|
||||||
|
{"x":4.75, "y":2},
|
||||||
|
{"x":5.75, "y":2},
|
||||||
|
{"x":6.75, "y":2},
|
||||||
|
{"x":7.75, "y":2},
|
||||||
|
{"x":8.75, "y":2},
|
||||||
|
{"x":9.75, "y":2},
|
||||||
|
{"x":10.75, "y":2},
|
||||||
|
{"x":11.75, "y":2},
|
||||||
|
{"x":12.75, "y":2, "w":2.25},
|
||||||
|
|
||||||
|
{"x":0, "y":3, "w":2.25},
|
||||||
|
{"x":2.25, "y":3},
|
||||||
|
{"x":3.25, "y":3},
|
||||||
|
{"x":4.25, "y":3},
|
||||||
|
{"x":5.25, "y":3},
|
||||||
|
{"x":6.25, "y":3},
|
||||||
|
{"x":7.25, "y":3},
|
||||||
|
{"x":8.25, "y":3},
|
||||||
|
{"x":9.25, "y":3},
|
||||||
|
{"x":10.25, "y":3},
|
||||||
|
{"x":11.25, "y":3},
|
||||||
|
{"x":12.25, "y":3, "w":1.75},
|
||||||
|
{"x":14, "y":3},
|
||||||
|
|
||||||
|
{"x":1.5, "y":4},
|
||||||
|
{"x":2.5, "y":4, "w":1.5},
|
||||||
|
{"x":4, "y":4, "w":7},
|
||||||
|
{"x":11, "y":4, "w":1.5},
|
||||||
|
{"x":12.5, "y":4}
|
||||||
|
]
|
||||||
|
},
|
||||||
"LAYOUT_60_iso": {
|
"LAYOUT_60_iso": {
|
||||||
"key_count": 62,
|
|
||||||
"layout": [
|
"layout": [
|
||||||
{"x":0, "y":0},
|
{"x":0, "y":0},
|
||||||
{"x":1, "y":0},
|
{"x":1, "y":0},
|
||||||
@@ -215,6 +559,289 @@
|
|||||||
{"x":12.5, "y":4, "w":1.25},
|
{"x":12.5, "y":4, "w":1.25},
|
||||||
{"x":13.75, "y":4, "w":1.25}
|
{"x":13.75, "y":4, "w":1.25}
|
||||||
]
|
]
|
||||||
|
},
|
||||||
|
"LAYOUT_60_iso_split_bs": {
|
||||||
|
"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":6, "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":13, "y":0},
|
||||||
|
{"x":14, "y":0},
|
||||||
|
|
||||||
|
{"x":0, "y":1, "w":1.5},
|
||||||
|
{"x":1.5, "y":1},
|
||||||
|
{"x":2.5, "y":1},
|
||||||
|
{"x":3.5, "y":1},
|
||||||
|
{"x":4.5, "y":1},
|
||||||
|
{"x":5.5, "y":1},
|
||||||
|
{"x":6.5, "y":1},
|
||||||
|
{"x":7.5, "y":1},
|
||||||
|
{"x":8.5, "y":1},
|
||||||
|
{"x":9.5, "y":1},
|
||||||
|
{"x":10.5, "y":1},
|
||||||
|
{"x":11.5, "y":1},
|
||||||
|
{"x":12.5, "y":1},
|
||||||
|
|
||||||
|
{"x":0, "y":2, "w":1.75},
|
||||||
|
{"x":1.75, "y":2},
|
||||||
|
{"x":2.75, "y":2},
|
||||||
|
{"x":3.75, "y":2},
|
||||||
|
{"x":4.75, "y":2},
|
||||||
|
{"x":5.75, "y":2},
|
||||||
|
{"x":6.75, "y":2},
|
||||||
|
{"x":7.75, "y":2},
|
||||||
|
{"x":8.75, "y":2},
|
||||||
|
{"x":9.75, "y":2},
|
||||||
|
{"x":10.75, "y":2},
|
||||||
|
{"x":11.75, "y":2},
|
||||||
|
{"x":12.75, "y":2},
|
||||||
|
{"x":13.75, "y":1, "w":1.25, "h":2},
|
||||||
|
|
||||||
|
{"x":0, "y":3, "w":1.25},
|
||||||
|
{"x":1.25, "y":3},
|
||||||
|
{"x":2.25, "y":3},
|
||||||
|
{"x":3.25, "y":3},
|
||||||
|
{"x":4.25, "y":3},
|
||||||
|
{"x":5.25, "y":3},
|
||||||
|
{"x":6.25, "y":3},
|
||||||
|
{"x":7.25, "y":3},
|
||||||
|
{"x":8.25, "y":3},
|
||||||
|
{"x":9.25, "y":3},
|
||||||
|
{"x":10.25, "y":3},
|
||||||
|
{"x":11.25, "y":3},
|
||||||
|
{"x":12.25, "y":3, "w":2.75},
|
||||||
|
|
||||||
|
{"x":0, "y":4, "w":1.25},
|
||||||
|
{"x":1.25, "y":4, "w":1.25},
|
||||||
|
{"x":2.5, "y":4, "w":1.25},
|
||||||
|
{"x":3.75, "y":4, "w":6.25},
|
||||||
|
{"x":10, "y":4, "w":1.25},
|
||||||
|
{"x":11.25, "y":4, "w":1.25},
|
||||||
|
{"x":12.5, "y":4, "w":1.25},
|
||||||
|
{"x":13.75, "y":4, "w":1.25}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"LAYOUT_60_iso_split_bs_rshift": {
|
||||||
|
"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":6, "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":13, "y":0},
|
||||||
|
{"x":14, "y":0},
|
||||||
|
|
||||||
|
{"x":0, "y":1, "w":1.5},
|
||||||
|
{"x":1.5, "y":1},
|
||||||
|
{"x":2.5, "y":1},
|
||||||
|
{"x":3.5, "y":1},
|
||||||
|
{"x":4.5, "y":1},
|
||||||
|
{"x":5.5, "y":1},
|
||||||
|
{"x":6.5, "y":1},
|
||||||
|
{"x":7.5, "y":1},
|
||||||
|
{"x":8.5, "y":1},
|
||||||
|
{"x":9.5, "y":1},
|
||||||
|
{"x":10.5, "y":1},
|
||||||
|
{"x":11.5, "y":1},
|
||||||
|
{"x":12.5, "y":1},
|
||||||
|
|
||||||
|
{"x":0, "y":2, "w":1.75},
|
||||||
|
{"x":1.75, "y":2},
|
||||||
|
{"x":2.75, "y":2},
|
||||||
|
{"x":3.75, "y":2},
|
||||||
|
{"x":4.75, "y":2},
|
||||||
|
{"x":5.75, "y":2},
|
||||||
|
{"x":6.75, "y":2},
|
||||||
|
{"x":7.75, "y":2},
|
||||||
|
{"x":8.75, "y":2},
|
||||||
|
{"x":9.75, "y":2},
|
||||||
|
{"x":10.75, "y":2},
|
||||||
|
{"x":11.75, "y":2},
|
||||||
|
{"x":12.75, "y":2},
|
||||||
|
{"x":13.75, "y":1, "w":1.25, "h":2},
|
||||||
|
|
||||||
|
{"x":0, "y":3, "w":1.25},
|
||||||
|
{"x":1.25, "y":3},
|
||||||
|
{"x":2.25, "y":3},
|
||||||
|
{"x":3.25, "y":3},
|
||||||
|
{"x":4.25, "y":3},
|
||||||
|
{"x":5.25, "y":3},
|
||||||
|
{"x":6.25, "y":3},
|
||||||
|
{"x":7.25, "y":3},
|
||||||
|
{"x":8.25, "y":3},
|
||||||
|
{"x":9.25, "y":3},
|
||||||
|
{"x":10.25, "y":3},
|
||||||
|
{"x":11.25, "y":3},
|
||||||
|
{"x":12.25, "y":3, "w":1.75},
|
||||||
|
{"x":14, "y":3},
|
||||||
|
|
||||||
|
{"x":0, "y":4, "w":1.25},
|
||||||
|
{"x":1.25, "y":4, "w":1.25},
|
||||||
|
{"x":2.5, "y":4, "w":1.25},
|
||||||
|
{"x":3.75, "y":4, "w":6.25},
|
||||||
|
{"x":10, "y":4, "w":1.25},
|
||||||
|
{"x":11.25, "y":4, "w":1.25},
|
||||||
|
{"x":12.5, "y":4, "w":1.25},
|
||||||
|
{"x":13.75, "y":4, "w":1.25}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"LAYOUT_60_iso_split_rshift": {
|
||||||
|
"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":6, "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":13, "y":0, "w":2},
|
||||||
|
|
||||||
|
{"x":0, "y":1, "w":1.5},
|
||||||
|
{"x":1.5, "y":1},
|
||||||
|
{"x":2.5, "y":1},
|
||||||
|
{"x":3.5, "y":1},
|
||||||
|
{"x":4.5, "y":1},
|
||||||
|
{"x":5.5, "y":1},
|
||||||
|
{"x":6.5, "y":1},
|
||||||
|
{"x":7.5, "y":1},
|
||||||
|
{"x":8.5, "y":1},
|
||||||
|
{"x":9.5, "y":1},
|
||||||
|
{"x":10.5, "y":1},
|
||||||
|
{"x":11.5, "y":1},
|
||||||
|
{"x":12.5, "y":1},
|
||||||
|
|
||||||
|
{"x":0, "y":2, "w":1.75},
|
||||||
|
{"x":1.75, "y":2},
|
||||||
|
{"x":2.75, "y":2},
|
||||||
|
{"x":3.75, "y":2},
|
||||||
|
{"x":4.75, "y":2},
|
||||||
|
{"x":5.75, "y":2},
|
||||||
|
{"x":6.75, "y":2},
|
||||||
|
{"x":7.75, "y":2},
|
||||||
|
{"x":8.75, "y":2},
|
||||||
|
{"x":9.75, "y":2},
|
||||||
|
{"x":10.75, "y":2},
|
||||||
|
{"x":11.75, "y":2},
|
||||||
|
{"x":12.75, "y":2},
|
||||||
|
{"x":13.75, "y":1, "w":1.25, "h":2},
|
||||||
|
|
||||||
|
{"x":0, "y":3, "w":1.25},
|
||||||
|
{"x":1.25, "y":3},
|
||||||
|
{"x":2.25, "y":3},
|
||||||
|
{"x":3.25, "y":3},
|
||||||
|
{"x":4.25, "y":3},
|
||||||
|
{"x":5.25, "y":3},
|
||||||
|
{"x":6.25, "y":3},
|
||||||
|
{"x":7.25, "y":3},
|
||||||
|
{"x":8.25, "y":3},
|
||||||
|
{"x":9.25, "y":3},
|
||||||
|
{"x":10.25, "y":3},
|
||||||
|
{"x":11.25, "y":3},
|
||||||
|
{"x":12.25, "y":3, "w":1.75},
|
||||||
|
{"x":14, "y":3},
|
||||||
|
|
||||||
|
{"x":0, "y":4, "w":1.25},
|
||||||
|
{"x":1.25, "y":4, "w":1.25},
|
||||||
|
{"x":2.5, "y":4, "w":1.25},
|
||||||
|
{"x":3.75, "y":4, "w":6.25},
|
||||||
|
{"x":10, "y":4, "w":1.25},
|
||||||
|
{"x":11.25, "y":4, "w":1.25},
|
||||||
|
{"x":12.5, "y":4, "w":1.25},
|
||||||
|
{"x":13.75, "y":4, "w":1.25}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"LAYOUT_60_iso_tsangan": {
|
||||||
|
"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":6, "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":13, "y":0, "w":2},
|
||||||
|
|
||||||
|
{"x":0, "y":1, "w":1.5},
|
||||||
|
{"x":1.5, "y":1},
|
||||||
|
{"x":2.5, "y":1},
|
||||||
|
{"x":3.5, "y":1},
|
||||||
|
{"x":4.5, "y":1},
|
||||||
|
{"x":5.5, "y":1},
|
||||||
|
{"x":6.5, "y":1},
|
||||||
|
{"x":7.5, "y":1},
|
||||||
|
{"x":8.5, "y":1},
|
||||||
|
{"x":9.5, "y":1},
|
||||||
|
{"x":10.5, "y":1},
|
||||||
|
{"x":11.5, "y":1},
|
||||||
|
{"x":12.5, "y":1},
|
||||||
|
|
||||||
|
{"x":0, "y":2, "w":1.75},
|
||||||
|
{"x":1.75, "y":2},
|
||||||
|
{"x":2.75, "y":2},
|
||||||
|
{"x":3.75, "y":2},
|
||||||
|
{"x":4.75, "y":2},
|
||||||
|
{"x":5.75, "y":2},
|
||||||
|
{"x":6.75, "y":2},
|
||||||
|
{"x":7.75, "y":2},
|
||||||
|
{"x":8.75, "y":2},
|
||||||
|
{"x":9.75, "y":2},
|
||||||
|
{"x":10.75, "y":2},
|
||||||
|
{"x":11.75, "y":2},
|
||||||
|
{"x":12.75, "y":2},
|
||||||
|
{"x":13.75, "y":1, "w":1.25, "h":2},
|
||||||
|
|
||||||
|
{"x":0, "y":3, "w":1.25},
|
||||||
|
{"x":1.25, "y":3},
|
||||||
|
{"x":2.25, "y":3},
|
||||||
|
{"x":3.25, "y":3},
|
||||||
|
{"x":4.25, "y":3},
|
||||||
|
{"x":5.25, "y":3},
|
||||||
|
{"x":6.25, "y":3},
|
||||||
|
{"x":7.25, "y":3},
|
||||||
|
{"x":8.25, "y":3},
|
||||||
|
{"x":9.25, "y":3},
|
||||||
|
{"x":10.25, "y":3},
|
||||||
|
{"x":11.25, "y":3},
|
||||||
|
{"x":12.25, "y":3, "w":2.75},
|
||||||
|
|
||||||
|
{"x":0, "y":4, "w":1.5},
|
||||||
|
{"x":1.5, "y":4},
|
||||||
|
{"x":2.5, "y":4, "w":1.5},
|
||||||
|
{"x":4, "y":4, "w":7},
|
||||||
|
{"x":11, "y":4, "w":1.5},
|
||||||
|
{"x":12.5, "y":4},
|
||||||
|
{"x":13.5, "y":4, "w":1.5}
|
||||||
|
]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -31,6 +31,6 @@ AUDIO_ENABLE = no # Audio output on port C6
|
|||||||
FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
|
FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
|
||||||
HD44780_ENABLE = no # Enable support for HD44780 based LCDs
|
HD44780_ENABLE = no # Enable support for HD44780 based LCDs
|
||||||
|
|
||||||
LAYOUTS = 60_ansi 60_iso
|
LAYOUTS = 60_ansi 60_ansi_split_bs_rshift 60_ansi_tsangan 60_hhkb 60_iso 60_iso_split_bs_rshift 60_iso_tsangan
|
||||||
|
|
||||||
DEFAULT_FOLDER = yd60mq/12led
|
DEFAULT_FOLDER = yd60mq/12led
|
||||||
+132
-7
@@ -30,19 +30,144 @@
|
|||||||
{ K40, K41, K42, KC_NO, KC_NO, KC_NO, KC_NO, K47, KC_NO, K49, K4A, KC_NO, K4C, K4D, KC_NO } \
|
{ K40, K41, K42, KC_NO, KC_NO, KC_NO, KC_NO, K47, KC_NO, K49, K4A, KC_NO, K4C, K4D, KC_NO } \
|
||||||
}
|
}
|
||||||
|
|
||||||
#define LAYOUT_60_iso( \
|
#define LAYOUT_60_ansi_split_bs( \
|
||||||
|
K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, \
|
||||||
|
K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, \
|
||||||
|
K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2D, \
|
||||||
|
K30, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3D, \
|
||||||
|
K40, K41, K42, K47, K49, K4A, K4C, K4D \
|
||||||
|
) { \
|
||||||
|
{ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E }, \
|
||||||
|
{ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, KC_NO }, \
|
||||||
|
{ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, KC_NO, K2D, KC_NO }, \
|
||||||
|
{ K30, KC_NO, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, KC_NO, K3D, KC_NO }, \
|
||||||
|
{ K40, K41, K42, KC_NO, KC_NO, KC_NO, KC_NO, K47, KC_NO, K49, K4A, KC_NO, K4C, K4D, KC_NO } \
|
||||||
|
}
|
||||||
|
|
||||||
|
#define LAYOUT_60_ansi_split_bs_rshift( \
|
||||||
|
K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, \
|
||||||
|
K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, \
|
||||||
|
K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2D, \
|
||||||
|
K30, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3D, K3E, \
|
||||||
|
K40, K41, K42, K47, K49, K4A, K4C, K4D \
|
||||||
|
) { \
|
||||||
|
{ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E }, \
|
||||||
|
{ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, KC_NO }, \
|
||||||
|
{ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, KC_NO, K2D, KC_NO }, \
|
||||||
|
{ K30, KC_NO, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, KC_NO, K3D, K3E }, \
|
||||||
|
{ K40, K41, K42, KC_NO, KC_NO, KC_NO, KC_NO, K47, KC_NO, K49, K4A, KC_NO, K4C, K4D, KC_NO } \
|
||||||
|
}
|
||||||
|
|
||||||
|
#define LAYOUT_60_ansi_split_rshift( \
|
||||||
K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0E, \
|
K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0E, \
|
||||||
K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1a, K1b, K1c, \
|
K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, \
|
||||||
K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2a, K2b, K2c, K1d, \
|
K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2D, \
|
||||||
K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3a, K3b, K3d, \
|
K30, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3D, K3E, \
|
||||||
K40, K41, K42, K47, K49, K4A, K4C, K4D \
|
K40, K41, K42, K47, K49, K4A, K4C, K4D \
|
||||||
) { \
|
) { \
|
||||||
{ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, KC_NO, K0E }, \
|
{ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, KC_NO, K0E }, \
|
||||||
{ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1a, K1b, K1c, KC_NO, }, \
|
{ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, KC_NO }, \
|
||||||
{ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2a, K2b, K2c, K1d }, \
|
{ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, KC_NO, K2D, KC_NO }, \
|
||||||
{ K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3a, K3b, KC_NO, K3d, KC_NO }, \
|
{ K30, KC_NO, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, KC_NO, K3D, K3E }, \
|
||||||
{ K40, K41, K42, KC_NO, KC_NO, KC_NO, KC_NO, K47, KC_NO, K49, K4A, KC_NO, K4C, K4D, KC_NO } \
|
{ K40, K41, K42, KC_NO, KC_NO, KC_NO, KC_NO, K47, KC_NO, K49, K4A, KC_NO, K4C, K4D, KC_NO } \
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#define LAYOUT_60_ansi_tsangan( \
|
||||||
|
K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0E, \
|
||||||
|
K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, \
|
||||||
|
K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2D, \
|
||||||
|
K30, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3D, \
|
||||||
|
K40, K41, K42, K47, K4A, K4C, K4D \
|
||||||
|
) { \
|
||||||
|
{ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, KC_NO, K0E }, \
|
||||||
|
{ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, KC_NO }, \
|
||||||
|
{ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, KC_NO, K2D, KC_NO }, \
|
||||||
|
{ K30, KC_NO, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, KC_NO, K3D, KC_NO }, \
|
||||||
|
{ K40, K41, K42, KC_NO, KC_NO, KC_NO, KC_NO, K47, KC_NO, KC_NO, K4A, KC_NO, K4C, K4D, KC_NO } \
|
||||||
|
}
|
||||||
|
|
||||||
|
#define LAYOUT_60_hhkb( \
|
||||||
|
K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, \
|
||||||
|
K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, \
|
||||||
|
K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2D, \
|
||||||
|
K30, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3D, K3E, \
|
||||||
|
K41, K42, K47, K4A, K4C \
|
||||||
|
) { \
|
||||||
|
{ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E }, \
|
||||||
|
{ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, KC_NO }, \
|
||||||
|
{ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, KC_NO, K2D, KC_NO }, \
|
||||||
|
{ K30, KC_NO, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, KC_NO, K3D, K3E }, \
|
||||||
|
{ KC_NO, K41, K42, KC_NO, KC_NO, KC_NO, KC_NO, K47, KC_NO, KC_NO, K4A, KC_NO, K4C, KC_NO, KC_NO } \
|
||||||
|
}
|
||||||
|
|
||||||
|
#define LAYOUT_60_iso( \
|
||||||
|
K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0E, \
|
||||||
|
K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, \
|
||||||
|
K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, \
|
||||||
|
K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3D, \
|
||||||
|
K40, K41, K42, K47, K49, K4A, K4C, K4D \
|
||||||
|
) { \
|
||||||
|
{ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, KC_NO, K0E }, \
|
||||||
|
{ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, KC_NO, KC_NO }, \
|
||||||
|
{ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, KC_NO }, \
|
||||||
|
{ K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, KC_NO, K3D, KC_NO }, \
|
||||||
|
{ K40, K41, K42, KC_NO, KC_NO, KC_NO, KC_NO, K47, KC_NO, K49, K4A, KC_NO, K4C, K4D, KC_NO } \
|
||||||
|
}
|
||||||
|
|
||||||
|
#define LAYOUT_60_iso_split_bs( \
|
||||||
|
K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, \
|
||||||
|
K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, \
|
||||||
|
K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, \
|
||||||
|
K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3D, \
|
||||||
|
K40, K41, K42, K47, K49, K4A, K4C, K4D \
|
||||||
|
) { \
|
||||||
|
{ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E }, \
|
||||||
|
{ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, KC_NO, KC_NO }, \
|
||||||
|
{ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, KC_NO }, \
|
||||||
|
{ K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, KC_NO, K3D, KC_NO }, \
|
||||||
|
{ K40, K41, K42, KC_NO, KC_NO, KC_NO, KC_NO, K47, KC_NO, K49, K4A, KC_NO, K4C, K4D, KC_NO } \
|
||||||
|
}
|
||||||
|
|
||||||
|
#define LAYOUT_60_iso_split_bs_rshift( \
|
||||||
|
K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, \
|
||||||
|
K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, \
|
||||||
|
K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, \
|
||||||
|
K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3D, K3E, \
|
||||||
|
K40, K41, K42, K47, K49, K4A, K4C, K4D \
|
||||||
|
) { \
|
||||||
|
{ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E }, \
|
||||||
|
{ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, KC_NO, KC_NO }, \
|
||||||
|
{ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, KC_NO }, \
|
||||||
|
{ K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, KC_NO, K3D, K3E }, \
|
||||||
|
{ K40, K41, K42, KC_NO, KC_NO, KC_NO, KC_NO, K47, KC_NO, K49, K4A, KC_NO, K4C, K4D, KC_NO } \
|
||||||
|
}
|
||||||
|
|
||||||
|
#define LAYOUT_60_iso_split_rshift( \
|
||||||
|
K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0E, \
|
||||||
|
K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, \
|
||||||
|
K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, \
|
||||||
|
K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3D, K3E, \
|
||||||
|
K40, K41, K42, K47, K49, K4A, K4C, K4D \
|
||||||
|
) { \
|
||||||
|
{ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, KC_NO, K0E }, \
|
||||||
|
{ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, KC_NO, KC_NO }, \
|
||||||
|
{ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, KC_NO }, \
|
||||||
|
{ K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, KC_NO, K3D, K3E }, \
|
||||||
|
{ K40, K41, K42, KC_NO, KC_NO, KC_NO, KC_NO, K47, KC_NO, K49, K4A, KC_NO, K4C, K4D, KC_NO } \
|
||||||
|
}
|
||||||
|
|
||||||
|
#define LAYOUT_60_iso_tsangan( \
|
||||||
|
K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0E, \
|
||||||
|
K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, \
|
||||||
|
K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, \
|
||||||
|
K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3D, \
|
||||||
|
K40, K41, K42, K47, K4A, K4C, K4D \
|
||||||
|
) { \
|
||||||
|
{ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, KC_NO, K0E }, \
|
||||||
|
{ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, KC_NO, KC_NO }, \
|
||||||
|
{ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, KC_NO }, \
|
||||||
|
{ K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, KC_NO, K3D, KC_NO }, \
|
||||||
|
{ K40, K41, K42, KC_NO, KC_NO, KC_NO, KC_NO, K47, KC_NO, KC_NO, K4A, KC_NO, K4C, K4D, KC_NO } \
|
||||||
|
}
|
||||||
|
|
||||||
#define LAYOUT LAYOUT_all
|
#define LAYOUT LAYOUT_all
|
||||||
+64
-223
@@ -1,42 +1,6 @@
|
|||||||
#include "planck.h"
|
#include "ajp10304.h"
|
||||||
#include "action_layer.h"
|
|
||||||
#include "eeconfig.h"
|
|
||||||
#include "keymap_uk.h"
|
#include "keymap_uk.h"
|
||||||
|
|
||||||
extern keymap_config_t keymap_config;
|
|
||||||
|
|
||||||
enum planck_layers {
|
|
||||||
_QWERTY,
|
|
||||||
_MAC,
|
|
||||||
_LOWER,
|
|
||||||
_MLWR,
|
|
||||||
_RAISE,
|
|
||||||
_MRSE,
|
|
||||||
_FUNC,
|
|
||||||
_MFNC,
|
|
||||||
_FUNC2,
|
|
||||||
_MFNC2,
|
|
||||||
_ADJUST,
|
|
||||||
_MOUSE
|
|
||||||
};
|
|
||||||
|
|
||||||
enum planck_keycodes {
|
|
||||||
QWERTY = SAFE_RANGE,
|
|
||||||
MAC,
|
|
||||||
FUNC,
|
|
||||||
MFNC,
|
|
||||||
FUNC2,
|
|
||||||
MFNC2,
|
|
||||||
LOWER,
|
|
||||||
MLWR,
|
|
||||||
RAISE,
|
|
||||||
MRSE,
|
|
||||||
MOUSE,
|
|
||||||
DYNAMIC_MACRO_RANGE
|
|
||||||
};
|
|
||||||
|
|
||||||
#include "dynamic_macro.h"
|
|
||||||
|
|
||||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
|
|
||||||
/* Qwerty
|
/* Qwerty
|
||||||
@@ -50,10 +14,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|||||||
* | Fn | Ctrl | Alt | GUI |Lower | Bksp |Space |Raise | Shift| MENU | Ctrl | Fn2 |
|
* | Fn | Ctrl | Alt | GUI |Lower | Bksp |Space |Raise | Shift| MENU | Ctrl | Fn2 |
|
||||||
* `-----------------------------------------------------------------------------------'
|
* `-----------------------------------------------------------------------------------'
|
||||||
*/
|
*/
|
||||||
[_QWERTY] = LAYOUT_planck_grid(
|
[_QWERTY] = LAYOUT_ortho_4x12(
|
||||||
KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
|
LT(_NUMPAD, KC_ESC), KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC ,
|
||||||
MT(MOD_LSFT, KC_TAB), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, MT(MOD_RSFT, KC_ENT),
|
MT(MOD_LSFT, KC_TAB), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, MT(MOD_RSFT, KC_ENT) ,
|
||||||
KC_LSHIFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSHIFT,
|
KC_LSHIFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSHIFT ,
|
||||||
MO(_FUNC), KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_BSPC, KC_SPC, RAISE, KC_LSHIFT, KC_BTN2, KC_RCTL, MO(_FUNC2)
|
MO(_FUNC), KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_BSPC, KC_SPC, RAISE, KC_LSHIFT, KC_BTN2, KC_RCTL, MO(_FUNC2)
|
||||||
),
|
),
|
||||||
|
|
||||||
@@ -68,10 +32,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|||||||
* | Fn | Ctrl | Alt | GUI |Lower | Bksp |Space |Mouse | MENU | Alt | Ctrl | Fn |
|
* | Fn | Ctrl | Alt | GUI |Lower | Bksp |Space |Mouse | MENU | Alt | Ctrl | Fn |
|
||||||
* `-----------------------------------------------------------------------------------'
|
* `-----------------------------------------------------------------------------------'
|
||||||
*/
|
*/
|
||||||
[_FUNC] = LAYOUT_planck_grid(
|
[_FUNC] = LAYOUT_ortho_4x12(
|
||||||
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_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12 ,
|
||||||
KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, UK_TILD, KC_INSERT,
|
KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, UK_TILD, KC_INSERT ,
|
||||||
KC_LSHIFT, KC_NONUS_BSLASH, KC_GRAVE, KC_NONUS_HASH, KC_PAST, KC_MINS, KC_EQL, KC_BSLASH, KC_LBRC, KC_RBRC, KC_QUOT, MT(MOD_RSFT, KC_ENT),
|
KC_LSHIFT, KC_NONUS_BSLASH, KC_GRAVE, KC_NONUS_HASH, KC_PAST, KC_MINS, KC_EQL, KC_BSLASH, KC_LBRC, KC_RBRC, KC_QUOT, MT(MOD_RSFT, KC_ENT) ,
|
||||||
_______, _______, _______, _______, _______, _______, _______, MO(_MOUSE), _______, _______, _______, _______
|
_______, _______, _______, _______, _______, _______, _______, MO(_MOUSE), _______, _______, _______, _______
|
||||||
),
|
),
|
||||||
|
|
||||||
@@ -86,10 +50,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|||||||
* | | | | |Lower | Del |Space | | Next | Vol- | Vol+ | Play |
|
* | | | | |Lower | Del |Space | | Next | Vol- | Vol+ | Play |
|
||||||
* `-----------------------------------------------------------------------------------'
|
* `-----------------------------------------------------------------------------------'
|
||||||
*/
|
*/
|
||||||
[_LOWER] = LAYOUT_planck_grid(
|
[_LOWER] = LAYOUT_ortho_4x12(
|
||||||
KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL, KC_BSPC,
|
KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL, KC_BSPC ,
|
||||||
LSFT(KC_1), LSFT(KC_2), LSFT(KC_3), LSFT(KC_4), LSFT(KC_5), LSFT(KC_6), LSFT(KC_7), LSFT(KC_8), LSFT(KC_9), LSFT(KC_0), LCTL(KC_DEL), LCTL(KC_BSPC),
|
LSFT(KC_1), LSFT(KC_2), LSFT(KC_3), LSFT(KC_4), LSFT(KC_5), LSFT(KC_6), LSFT(KC_7), LSFT(KC_8), LSFT(KC_9), LSFT(KC_0), LCTL(KC_DEL), LCTL(KC_BSPC) ,
|
||||||
KC_LSPO, KC_NONUS_BSLASH, KC_GRAVE, KC_NONUS_HASH, KC_QUOT, KC_MINS, KC_EQL, KC_NONUS_HASH, KC_LBRC, KC_RBRC, KC_QUOT, MT(MOD_RSFT, KC_ENT),
|
KC_LSPO, KC_NONUS_BSLASH, KC_GRAVE, KC_NONUS_HASH, KC_QUOT, KC_MINS, KC_EQL, KC_NONUS_HASH, KC_LBRC, KC_RBRC, KC_QUOT, MT(MOD_RSFT, KC_ENT) ,
|
||||||
_______, _______, _______, _______, _______, KC_DEL, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY
|
_______, _______, _______, _______, _______, KC_DEL, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY
|
||||||
),
|
),
|
||||||
|
|
||||||
@@ -104,11 +68,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|||||||
* | Mouse| | | | | Alt | Enter|Raise | | | | |
|
* | Mouse| | | | | Alt | Enter|Raise | | | | |
|
||||||
* `-----------------------------------------------------------------------------------'
|
* `-----------------------------------------------------------------------------------'
|
||||||
*/
|
*/
|
||||||
[_RAISE] = LAYOUT_planck_grid(
|
[_RAISE] = LAYOUT_ortho_4x12(
|
||||||
KC_GRV, XXXXXXX, M(1), KC_LBRC, KC_RBRC, XXXXXXX, XXXXXXX, KC_PGUP, KC_HOME, KC_PGDOWN, XXXXXXX, KC_PSCREEN,
|
KC_GRV, XXXXXXX, M_WORD_SEL, KC_LBRC, KC_RBRC, XXXXXXX, XXXXXXX, KC_PGUP, KC_HOME, KC_PGDOWN, XXXXXXX, KC_PSCREEN ,
|
||||||
KC_GRV, XXXXXXX, XXXXXXX, LSFT(KC_9), LSFT(KC_0), XXXXXXX, XXXXXXX, KC_HOME, KC_UP, KC_END, XXXXXXX, LCTL(LSFT(KC_EQL)),
|
KC_GRV, XXXXXXX, XXXXXXX, LSFT(KC_9), LSFT(KC_0), XXXXXXX, XXXXXXX, KC_HOME, KC_UP, KC_END, XXXXXXX, LCTL(LSFT(KC_EQL)) ,
|
||||||
_______, XXXXXXX, XXXXXXX, LSFT(KC_LBRC), LSFT(KC_RBRC), XXXXXXX, LCTL(KC_LEFT), KC_LEFT, KC_DOWN, KC_RIGHT, LCTL(KC_RIGHT), LCTL(KC_MINS),
|
_______, XXXXXXX, XXXXXXX, LSFT(KC_LBRC), LSFT(KC_RBRC), XXXXXXX, LCTL(KC_LEFT), KC_LEFT, KC_DOWN, KC_RIGHT, LCTL(KC_RIGHT), LCTL(KC_MINS) ,
|
||||||
MO(_MOUSE), _______, _______, _______, _______, KC_LALT, KC_ENT, _______, XXXXXXX, _______, _______, _______
|
MO(_MOUSE), _______, _______, _______, _______, KC_LALT, KC_ENT, _______, XXXXXXX, _______, _______, _______
|
||||||
),
|
),
|
||||||
|
|
||||||
/* Adjust (Lower + Raise)
|
/* Adjust (Lower + Raise)
|
||||||
@@ -122,16 +86,16 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|||||||
* | | | | | | | | | | | |
|
* | | | | | | | | | | | |
|
||||||
* `-----------------------------------------------------------------------------------'
|
* `-----------------------------------------------------------------------------------'
|
||||||
*/
|
*/
|
||||||
[_ADJUST] = LAYOUT_planck_grid(
|
[_ADJUST] = LAYOUT_ortho_4x12(
|
||||||
M(0), RESET, QWERTY, _______, _______, DYN_REC_START1, DYN_REC_START2, _______, _______, _______, _______, KC_DEL,
|
M_CUSTOM, RESET, QWERTY, BL_ON, BL_OFF, DYN_REC_START1, DYN_REC_START2, _______, _______, _______, _______, KC_DEL ,
|
||||||
KC_CAPS, _______, _______, _______, _______, DYN_MACRO_PLAY1, DYN_MACRO_PLAY2, KC_AUDIO_MUTE, KC_AUDIO_VOL_UP, KC_MEDIA_PLAY_PAUSE, _______, _______,
|
KC_CAPS, RGB_TOG, RGB_MOD, RGB_VAD, RGB_VAI, DYN_MACRO_PLAY1, DYN_MACRO_PLAY2, KC_AUDIO_MUTE, KC_AUDIO_VOL_UP, KC_MEDIA_PLAY_PAUSE, _______, _______ ,
|
||||||
TG(_MAC), _______, _______, _______, _______, DYN_REC_STOP, DYN_REC_STOP, KC_MEDIA_PREV_TRACK, KC_AUDIO_VOL_DOWN, KC_MEDIA_NEXT_TRACK, _______, _______,
|
TG(_MAC), RGB_HUD, RGB_HUI, RGB_SAD, RGB_SAI, DYN_REC_STOP, DYN_REC_STOP, KC_MEDIA_PREV_TRACK, KC_AUDIO_VOL_DOWN, KC_MEDIA_NEXT_TRACK, _______, _______ ,
|
||||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
|
||||||
),
|
),
|
||||||
|
|
||||||
/* Mouse
|
/* Mouse
|
||||||
* ,-----------------------------------------------------------------------------------.
|
* ,-----------------------------------------------------------------------------------.
|
||||||
* | ESC | | | | | | | | | | | |
|
* | ESC | | | | | | | | BTN3 | | | |
|
||||||
* |------+------+------+------+------+-------------+------+------+------+------+------|
|
* |------+------+------+------+------+-------------+------+------+------+------+------|
|
||||||
* | ACC0 | ACC1 | ACC2 | | | | | BTN1 | UP | BTN2 | | |
|
* | ACC0 | ACC1 | ACC2 | | | | | BTN1 | UP | BTN2 | | |
|
||||||
* |------+------+------+------+------+------|------+------+------+------+------+------|
|
* |------+------+------+------+------+------|------+------+------+------+------+------|
|
||||||
@@ -140,13 +104,31 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|||||||
* | | | | | | | | | | | | |
|
* | | | | | | | | | | | | |
|
||||||
* `-----------------------------------------------------------------------------------'
|
* `-----------------------------------------------------------------------------------'
|
||||||
*/
|
*/
|
||||||
[_MOUSE] = LAYOUT_planck_grid(
|
[_MOUSE] = LAYOUT_ortho_4x12(
|
||||||
KC_ESC , _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
KC_ESC , _______, _______, _______, _______, _______, _______, _______, KC_MS_BTN3, _______, _______, _______,
|
||||||
KC_MS_ACCEL0, KC_MS_ACCEL1, KC_MS_ACCEL2, _______, _______, _______, _______, KC_MS_BTN1, KC_MS_UP, KC_MS_BTN2, _______, _______,
|
KC_MS_ACCEL0, KC_MS_ACCEL1, KC_MS_ACCEL2, _______, _______, _______, _______, KC_MS_BTN1, KC_MS_UP, KC_MS_BTN2, _______, _______,
|
||||||
KC_MS_ACCEL0, KC_MS_ACCEL1, KC_MS_ACCEL2, _______, _______, _______, _______, KC_MS_LEFT, KC_MS_DOWN, KC_MS_RIGHT, _______, _______,
|
KC_MS_ACCEL0, KC_MS_ACCEL1, KC_MS_ACCEL2, _______, _______, _______, _______, KC_MS_LEFT, KC_MS_DOWN, KC_MS_RIGHT, _______, _______,
|
||||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
|
||||||
),
|
),
|
||||||
|
|
||||||
|
/* Num Pad
|
||||||
|
* ,-----------------------------------------------------------------------------------.
|
||||||
|
* | ESC | | | | | |NMLOCK| 7 | 8 | 9 | / | |
|
||||||
|
* |------+------+------+------+------+-------------+------+------+------+------+------|
|
||||||
|
* | | | | | | | | 4 | 5 | 6 | * | |
|
||||||
|
* |------+------+------+------+------+------|------+------+------+------+------+------|
|
||||||
|
* | | | | | | | | 1 | 2 | 3 | + | |
|
||||||
|
* |------+------+------+------+------+------|------+------+------+------+------+------|
|
||||||
|
* | | | | | | | | 0 | . | , | - | |
|
||||||
|
* `-----------------------------------------------------------------------------------'
|
||||||
|
*/
|
||||||
|
[_NUMPAD] = LAYOUT_ortho_4x12(
|
||||||
|
_______, _______, _______, _______, _______, _______, KC_NLCK, KC_KP_7, KC_KP_8, KC_KP_9, KC_KP_SLASH, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, KC_KP_4, KC_KP_5, KC_KP_6, KC_KP_ASTERISK, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, KC_KP_1, KC_KP_2, KC_KP_3, KC_KP_PLUS, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, KC_KP_0, KC_KP_DOT, KC_COMM, KC_KP_MINUS, _______
|
||||||
|
),
|
||||||
|
|
||||||
/* Function 2 (Right hand side)
|
/* Function 2 (Right hand side)
|
||||||
* ,-----------------------------------------------------------------------------------.
|
* ,-----------------------------------------------------------------------------------.
|
||||||
* | | |WRDSEL| | | | LNDEL| | | | | |
|
* | | |WRDSEL| | | | LNDEL| | | | | |
|
||||||
@@ -158,187 +140,46 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|||||||
* | | | | | | | | | | | | |
|
* | | | | | | | | | | | | |
|
||||||
* `-----------------------------------------------------------------------------------'
|
* `-----------------------------------------------------------------------------------'
|
||||||
*/
|
*/
|
||||||
[_FUNC2] = LAYOUT_planck_grid(
|
[_FUNC2] = LAYOUT_ortho_4x12(
|
||||||
_______, _______, M(1), _______, _______, _______, M(5), _______, _______, _______, _______, _______,
|
_______, _______, M_WORD_SEL, _______, _______, _______, M_LINE_DEL, _______, _______, _______, _______, _______,
|
||||||
_______, _______, M(3), M(7), _______, _______, _______, M(10), _______, _______, _______, _______,
|
_______, _______, M_LINE_SEL, M_DUP, _______, _______, _______, M_JOIN, _______, _______, _______, _______,
|
||||||
_______, LCTL(KC_Z), LCTL(KC_X), LCTL(KC_C), LCTL(KC_V), _______, _______, _______, _______, _______, _______, M(98) ,
|
_______, LCTL(KC_Z), LCTL(KC_X), LCTL(KC_C), LCTL(KC_V), _______, _______, _______, _______, _______, _______, M_MODE,
|
||||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
|
||||||
),
|
),
|
||||||
|
|
||||||
[_MAC] = LAYOUT_planck_grid(
|
[_MAC]= LAYOUT_ortho_4x12(
|
||||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
MFNC, _______, _______, _______, MLWR, _______, _______, MRSE, _______, _______, _______, MFNC2
|
MFNC, _______, _______, _______, MLWR, _______, _______, MRSE, _______, _______, _______, MFNC2
|
||||||
),
|
),
|
||||||
|
|
||||||
[_MLWR] = LAYOUT_planck_grid(
|
[_MLWR] = LAYOUT_ortho_4x12(
|
||||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
|
||||||
),
|
),
|
||||||
|
|
||||||
[_MRSE] = LAYOUT_planck_grid(
|
[_MRSE] = LAYOUT_ortho_4x12(
|
||||||
_______, _______, M(2), _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
_______, _______, M_WORD_SEL_MAC, _______, _______, _______, _______, _______, _______, _______, _______, _______ ,
|
||||||
_______, _______, _______, _______, _______, _______, _______, LCTL(KC_A), _______, LCTL(KC_E), _______, LGUI(KC_EQL),
|
_______, _______, _______, _______, _______, _______, _______, LCTL(KC_A), _______, LCTL(KC_E), _______, LGUI(KC_EQL) ,
|
||||||
_______, _______, _______, _______, _______, _______, LALT(KC_LEFT), _______, _______, _______, LALT(KC_RIGHT), LGUI(KC_MINS),
|
_______, _______, _______, _______, _______, _______, LALT(KC_LEFT), _______, _______, _______, LALT(KC_RIGHT), LGUI(KC_MINS) ,
|
||||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
|
||||||
),
|
),
|
||||||
|
|
||||||
[_MFNC]= LAYOUT_planck_grid(
|
[_MFNC]= LAYOUT_ortho_4x12(
|
||||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ ,
|
||||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, LGUI(KC_PENT),
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, LGUI(KC_PENT) ,
|
||||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ ,
|
||||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
|
||||||
),
|
),
|
||||||
|
|
||||||
[_MFNC2] = LAYOUT_planck_grid(
|
[_MFNC2] = LAYOUT_ortho_4x12(
|
||||||
_______, _______, M(2), _______, _______, _______, M(6), _______, _______, _______, _______, _______,
|
_______, _______, M_WORD_SEL_MAC, _______, _______, _______, M_LINE_DEL_MAC, _______, _______, _______, _______, _______,
|
||||||
_______, _______, M(4), M(8), _______, _______, _______, M(10), _______, _______, _______, _______,
|
_______, _______, M_LINE_SEL_MAC, M_DUP_MAC, _______, _______, _______, M_JOIN_MAC, _______, _______, _______, _______,
|
||||||
_______, LGUI(KC_Z), LGUI(KC_X), LGUI(KC_C), LGUI(KC_V), _______, _______, _______, _______, _______, _______, M(99) ,
|
_______, LGUI(KC_Z), LGUI(KC_X), LGUI(KC_C), LGUI(KC_V), _______, _______, _______, _______, _______, _______, M_MODE_MAC,
|
||||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
|
||||||
)
|
)
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
void persistant_default_layer_set(uint16_t default_layer) {
|
|
||||||
eeconfig_update_default_layer(default_layer);
|
|
||||||
default_layer_set(default_layer);
|
|
||||||
}
|
|
||||||
|
|
||||||
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
|
||||||
|
|
||||||
if (!process_record_dynamic_macro(keycode, record)) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
switch (keycode) {
|
|
||||||
case QWERTY:
|
|
||||||
if (record->event.pressed) {
|
|
||||||
persistant_default_layer_set(1UL<<_QWERTY);
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
case LOWER:
|
|
||||||
if (record->event.pressed) {
|
|
||||||
layer_on(_LOWER);
|
|
||||||
update_tri_layer(_LOWER, _RAISE, _ADJUST);
|
|
||||||
} else {
|
|
||||||
layer_off(_LOWER);
|
|
||||||
update_tri_layer(_LOWER, _RAISE, _ADJUST);
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
case RAISE:
|
|
||||||
if (record->event.pressed) {
|
|
||||||
layer_on(_RAISE);
|
|
||||||
update_tri_layer(_LOWER, _RAISE, _ADJUST);
|
|
||||||
} else {
|
|
||||||
layer_off(_RAISE);
|
|
||||||
update_tri_layer(_LOWER, _RAISE, _ADJUST);
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
case MLWR:
|
|
||||||
if (record->event.pressed) {
|
|
||||||
layer_on(_LOWER);
|
|
||||||
layer_on(_MLWR);
|
|
||||||
update_tri_layer(_LOWER, _RAISE, _ADJUST);
|
|
||||||
} else {
|
|
||||||
layer_off(_LOWER);
|
|
||||||
layer_off(_MLWR);
|
|
||||||
update_tri_layer(_LOWER, _RAISE, _ADJUST);
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
case MRSE:
|
|
||||||
if (record->event.pressed) {
|
|
||||||
layer_on(_RAISE);
|
|
||||||
layer_on(_MRSE);
|
|
||||||
update_tri_layer(_LOWER, _RAISE, _ADJUST);
|
|
||||||
} else {
|
|
||||||
layer_off(_RAISE);
|
|
||||||
layer_off(_MRSE);
|
|
||||||
update_tri_layer(_LOWER, _RAISE, _ADJUST);
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
case MFNC:
|
|
||||||
if (record->event.pressed) {
|
|
||||||
layer_on(_FUNC);
|
|
||||||
layer_on(_MFNC);
|
|
||||||
} else {
|
|
||||||
layer_off(_FUNC);
|
|
||||||
layer_off(_MFNC);
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
case MFNC2:
|
|
||||||
if (record->event.pressed) {
|
|
||||||
layer_on(_FUNC2);
|
|
||||||
layer_on(_MFNC2);
|
|
||||||
} else {
|
|
||||||
layer_off(_FUNC2);
|
|
||||||
layer_off(_MFNC2);
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
const macro_t *action_get_macro(keyrecord_t *record, uint8_t keycode, uint8_t opt) {
|
|
||||||
// These would trigger when you hit a key mapped as M(0)
|
|
||||||
if (record->event.pressed) {
|
|
||||||
switch(keycode) {
|
|
||||||
case 0: // Some custom string here
|
|
||||||
SEND_STRING("");
|
|
||||||
return false;
|
|
||||||
|
|
||||||
case 1: // Word Select
|
|
||||||
SEND_STRING(SS_DOWN(X_LCTRL) SS_TAP(X_RIGHT) SS_DOWN(X_LSHIFT) SS_TAP(X_LEFT) SS_UP(X_LSHIFT) SS_UP(X_LCTRL));
|
|
||||||
return false;
|
|
||||||
|
|
||||||
case 2: // Word Select Mac
|
|
||||||
SEND_STRING(SS_DOWN(X_LALT) SS_TAP(X_RIGHT) SS_DOWN(X_LSHIFT) SS_TAP(X_LEFT) SS_UP(X_LSHIFT) SS_UP(X_LALT));
|
|
||||||
return false;
|
|
||||||
|
|
||||||
case 3: // Line Select
|
|
||||||
SEND_STRING(SS_TAP(X_HOME) SS_DOWN(X_LSHIFT) SS_TAP(X_END) SS_UP(X_LSHIFT));
|
|
||||||
return false;
|
|
||||||
|
|
||||||
case 4: // Line Select Mac
|
|
||||||
SEND_STRING(SS_LCTRL("a") SS_DOWN(X_LSHIFT) SS_LCTRL("e") SS_UP(X_LSHIFT));
|
|
||||||
return false;
|
|
||||||
|
|
||||||
case 5: // Line Delete
|
|
||||||
SEND_STRING(SS_TAP(X_HOME) SS_DOWN(X_LSHIFT) SS_TAP(X_END) SS_UP(X_LSHIFT));
|
|
||||||
SEND_STRING(SS_TAP(X_BSPACE));
|
|
||||||
return false;
|
|
||||||
|
|
||||||
case 6: // Line Delete Mac
|
|
||||||
SEND_STRING(SS_LCTRL("a") SS_DOWN(X_LSHIFT) SS_LCTRL("e") SS_UP(X_LSHIFT));
|
|
||||||
SEND_STRING(SS_TAP(X_BSPACE));
|
|
||||||
return false;
|
|
||||||
|
|
||||||
case 7: // Duplicate Selection
|
|
||||||
SEND_STRING(SS_LCTRL("c") SS_TAP(X_RIGHT) SS_LCTRL("v"));
|
|
||||||
return false;
|
|
||||||
|
|
||||||
case 8: // Duplicate Selection Mac
|
|
||||||
SEND_STRING(SS_LGUI("c") SS_TAP(X_RIGHT) SS_LGUI("v"));
|
|
||||||
return false;
|
|
||||||
|
|
||||||
case 9: // Join line
|
|
||||||
SEND_STRING(SS_TAP(X_END) SS_TAP(X_DELETE));
|
|
||||||
return false;
|
|
||||||
|
|
||||||
case 10: // Join line Mac
|
|
||||||
SEND_STRING(SS_LCTRL("e") SS_TAP(X_DELETE));
|
|
||||||
return false;
|
|
||||||
|
|
||||||
case 98: // Print mode
|
|
||||||
SEND_STRING("PC");
|
|
||||||
return false;
|
|
||||||
|
|
||||||
case 99: // Print mode
|
|
||||||
SEND_STRING("OSX");
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return MACRO_NONE;
|
|
||||||
};
|
|
||||||
@@ -0,0 +1,117 @@
|
|||||||
|
# AJP10304 Ortho 4x12 Layout
|
||||||
|
# For Planck, Shark, JJ40 and Atreus50
|
||||||
|
|
||||||
|
**Note:** In the tables below where there are two characters on a key,
|
||||||
|
the second is the output when shift is applied.
|
||||||
|
|
||||||
|
**Note:** The below tables assume a UK layout.
|
||||||
|
|
||||||
|
#### Flashing
|
||||||
|
Refer to the README.md of the keyboard you want to flash.
|
||||||
|
|
||||||
|
##### Main Qwerty Layer
|
||||||
|
|
||||||
|
* Tab: when held, operates as shift.
|
||||||
|
* Enter: when held, operates as shift.
|
||||||
|
* MENU: perform right-click
|
||||||
|
|
||||||
|
| | | | | | | | | | | | |
|
||||||
|
| ---- |:----:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| ----:|
|
||||||
|
| Esc | Q | W | E | R | T | Y | U | I | O | P | Bksp |
|
||||||
|
| Tab | A | S | D | F | G | H | J | K | L | ;: | Enter|
|
||||||
|
| Shft | Z | X | C | V | B | N | M | ,< | .> | /? | Shft |
|
||||||
|
| Fn | Ctrl | Alt | GUI |Lower | Bksp |Space |Raise | Shift| MENU | Ctrl | Fn2 |
|
||||||
|
|
||||||
|
##### Function Layer
|
||||||
|
Activated when `fn` held in the above `qwerty` layer.
|
||||||
|
|
||||||
|
| | | | | | | | | | | | |
|
||||||
|
| :---: |:----:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:|
|
||||||
|
| F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 |
|
||||||
|
| 1! | 2" | 3£ | 4$ | 5% | 6^ | 7& | 8* | 9( | 0) | ~ |INSERT|
|
||||||
|
| Shift | \| | `¬ | #~ | * | -_ | =+ | \| | [{ | ]} | '@ |Shift |
|
||||||
|
| Fn | Ctrl | Alt | GUI |Lower | Bksp |Space |Mouse | MENU | Alt | Ctrl | Fn2 |
|
||||||
|
|
||||||
|
##### Lower Layer
|
||||||
|
Activated when `Lower` is held in the above `qwerty` layer.
|
||||||
|
|
||||||
|
* Numbers are along the top row, their shifted counterparts are on row 2.
|
||||||
|
* WrdBks: `backspace` with `ctrl` applied. I.e. delete a word.
|
||||||
|
* WrdDel: `delete` with `ctrl` applied. I.e. forward delete a word.
|
||||||
|
|
||||||
|
| | | | | | | | | | | | |
|
||||||
|
| :---: |:----:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:|
|
||||||
|
| 1! | 2" | 3£ | 4$ | 5% | 6^ | 7& | 8* | 9( | 0) | DEL | Bksp |
|
||||||
|
| ! | " | £ | $ | % | ^ | & | * | ( | ) |WrdDel|WrdBks|
|
||||||
|
| Shift | \| | `¬ | #~ | '@ | -_ | =+ | #~ | [{ | ]} | '@ |Shift |
|
||||||
|
| | | | |Lower | Del |Space | | Next | Vol- | Vol+ | Play |
|
||||||
|
|
||||||
|
##### Raise Layer
|
||||||
|
Activated when `Raise` is held in the above `qwerty` layer.
|
||||||
|
|
||||||
|
* Preferred layer for typing brackets.
|
||||||
|
* Allows for cursor navigation to be used solely with the right hand.
|
||||||
|
* WRDSEL: Select the word where the cursor is.
|
||||||
|
* |< and >|: Apply `ctrl` to `left` and `right` respectively for word jumping.
|
||||||
|
|
||||||
|
| | | | | | | | | | | | |
|
||||||
|
| :---: |:----:| :---:| :---:| :---:| :---:| :---: | :---:| :---:| :---:| :---: | :---:|
|
||||||
|
| ` | |WRDSEL| [ | ] | | | PGUP | HOME |PGDOWN| |PRNTSC|
|
||||||
|
| ` | | | ( | ) | | | HOME | UP | END | |ZOOM +|
|
||||||
|
| | | | { | } | ||<| LEFT | DOWN |RIGHT |>||ZOOM -|
|
||||||
|
| Mouse | | | | | Alt | Enter |Raise | | | | |
|
||||||
|
|
||||||
|
##### Lower + Raise
|
||||||
|
Activated when `Lower` and `Raise` are held together in the above `qwerty` layer.
|
||||||
|
|
||||||
|
* Audio controls in the same position as cursor keys from the `Raise` layer.
|
||||||
|
* ????: Runs a macro for outputting a text string. Do not use this store passwords.
|
||||||
|
* Reset: Enter bootloader for flashing firmware to the keyboard.
|
||||||
|
* CAPS: Toggle caps lock.
|
||||||
|
* Macro functions: Allows recording of macros. To start recording the macro, press either REC1 or REC2.
|
||||||
|
To finish the recording, press STOP. To replay the macro, press either PLAY1 or PLAY2.
|
||||||
|
* MAC: Toggle MAC OS extensions to layers. This allows MLWR to be enabled with LOWER,
|
||||||
|
MRSE with RAISE, MFNC with FUNC and MFNC2 with FUNC2 respectively.
|
||||||
|
|
||||||
|
| | | | | | | | | | | | |
|
||||||
|
| :---: |:----:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:|
|
||||||
|
| ???? | Reset|Qwerty| | | REC1 | REC2 | | | | | Del |
|
||||||
|
| CAPS | | | | | PLAY1|PLAY2 | Mute | Vol+ | Play | | |
|
||||||
|
| MAC | | | | | STOP1|STOP2 | Prev | Vol- | Next | | |
|
||||||
|
| | | | | | | | | DYN | | | |
|
||||||
|
|
||||||
|
##### Function 2 Layer
|
||||||
|
Activated when `fn` held in the above `qwerty` layer.
|
||||||
|
* WRDSEL: Select the word where the cursor is.
|
||||||
|
* LNDEL: Delete the line where the cursor is.
|
||||||
|
* LNSEL: Select the line where the cursor is.
|
||||||
|
* DUP: Duplicate the selected text.
|
||||||
|
* LNJOIN: Join the line where the cursor is with the following line.
|
||||||
|
* MODE: Print either `PC` or `OSX` depending on what layer mode is active.
|
||||||
|
|
||||||
|
| | | | | | | | | | | | |
|
||||||
|
| :---: | :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:|
|
||||||
|
| | |WRDSEL| | | | LNDEL| | | | | |
|
||||||
|
| | | LNSEL| DUP | | | | |LNJOIN| | | |
|
||||||
|
| | UNDO | CUT | COPY | PASTE| | | | | | | MODE |
|
||||||
|
| | | | | | | | | | | | |
|
||||||
|
|
||||||
|
##### Mouse Layer
|
||||||
|
Activated when `fn` and `raise` held together.
|
||||||
|
|
||||||
|
| | | | | | | | | | | | |
|
||||||
|
| :---: | :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:|
|
||||||
|
| ESC | | | | | | | | BTN3 | | | |
|
||||||
|
| ACC0 | ACC1 | ACC2 | | | | | BTN1 | UP | BTN2 | | |
|
||||||
|
| ACC0 | ACC1 | ACC2 | | | | | LEFT | DOWN | RIGHT| | |
|
||||||
|
| | | | | | | | | | | | |
|
||||||
|
|
||||||
|
##### Number Pad Layout
|
||||||
|
Activated when holding `Esc` key.
|
||||||
|
|
||||||
|
| | | | | | | | | | | | |
|
||||||
|
| :---: | :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:|
|
||||||
|
| | | | | | |NMLOCK| 7 | 8 | 9 | / | |
|
||||||
|
| | | | | | | | 4 | 5 | 6 | * | |
|
||||||
|
| | | | | | | | 1 | 2 | 3 | + | |
|
||||||
|
| | | | | | | | 0 | . | , | - | |
|
||||||
+1
-1
@@ -1,3 +1,3 @@
|
|||||||
AUDIO_ENABLE = no
|
AUDIO_ENABLE = no
|
||||||
MOUSEKEY_ENABLE = yes
|
MOUSEKEY_ENABLE = yes
|
||||||
|
DYNAMIC_MACRO_ENABLE = yes
|
||||||
@@ -3,27 +3,37 @@
|
|||||||
#include <hal.h>
|
#include <hal.h>
|
||||||
#include "debug.h"
|
#include "debug.h"
|
||||||
|
|
||||||
// TODO: remove short term bodge when refactoring BACKLIGHT_CUSTOM_DRIVER out
|
|
||||||
#ifdef BACKLIGHT_PIN
|
|
||||||
|
|
||||||
// GPIOV2 && GPIOV3
|
// GPIOV2 && GPIOV3
|
||||||
# ifndef BACKLIGHT_PAL_MODE
|
#ifndef BACKLIGHT_PAL_MODE
|
||||||
# define BACKLIGHT_PAL_MODE 2
|
# define BACKLIGHT_PAL_MODE 2
|
||||||
# endif
|
#endif
|
||||||
|
|
||||||
// GENERIC
|
// GENERIC
|
||||||
# ifndef BACKLIGHT_PWM_DRIVER
|
#ifndef BACKLIGHT_PWM_DRIVER
|
||||||
# define BACKLIGHT_PWM_DRIVER PWMD4
|
# define BACKLIGHT_PWM_DRIVER PWMD4
|
||||||
# endif
|
#endif
|
||||||
# ifndef BACKLIGHT_PWM_CHANNEL
|
#ifndef BACKLIGHT_PWM_CHANNEL
|
||||||
# define BACKLIGHT_PWM_CHANNEL 3
|
# define BACKLIGHT_PWM_CHANNEL 3
|
||||||
# endif
|
#endif
|
||||||
|
|
||||||
static void breathing_callback(PWMDriver *pwmp);
|
// Support for pins which are on TIM1_CH1N - requires STM32_PWM_USE_ADVANCED
|
||||||
|
#ifdef BACKLIGHT_PWM_COMPLEMENTARY_OUTPUT
|
||||||
|
# if BACKLIGHT_ON_STATE == 1
|
||||||
|
# define PWM_OUTPUT_MODE PWM_COMPLEMENTARY_OUTPUT_ACTIVE_LOW;
|
||||||
|
# else
|
||||||
|
# define PWM_OUTPUT_MODE PWM_COMPLEMENTARY_OUTPUT_ACTIVE_HIGH;
|
||||||
|
# endif
|
||||||
|
#else
|
||||||
|
# if BACKLIGHT_ON_STATE == 1
|
||||||
|
# define PWM_OUTPUT_MODE PWM_OUTPUT_ACTIVE_HIGH;
|
||||||
|
# else
|
||||||
|
# define PWM_OUTPUT_MODE PWM_OUTPUT_ACTIVE_LOW;
|
||||||
|
# endif
|
||||||
|
#endif
|
||||||
|
|
||||||
static PWMConfig pwmCFG = {0xFFFF, /* PWM clock frequency */
|
static PWMConfig pwmCFG = {0xFFFF, /* PWM clock frequency */
|
||||||
256, /* PWM period (in ticks) 1S (1/10kHz=0.1mS 0.1ms*10000 ticks=1S) */
|
256, /* PWM period (in ticks) 1S (1/10kHz=0.1mS 0.1ms*10000 ticks=1S) */
|
||||||
NULL, /* No Callback */
|
NULL, /* Breathing Callback */
|
||||||
{ /* Default all channels to disabled - Channels will be configured durring init */
|
{ /* Default all channels to disabled - Channels will be configured durring init */
|
||||||
{PWM_OUTPUT_DISABLED, NULL},
|
{PWM_OUTPUT_DISABLED, NULL},
|
||||||
{PWM_OUTPUT_DISABLED, NULL},
|
{PWM_OUTPUT_DISABLED, NULL},
|
||||||
@@ -32,17 +42,6 @@ static PWMConfig pwmCFG = {0xFFFF, /* PWM clock frequency */
|
|||||||
0, /* HW dependent part.*/
|
0, /* HW dependent part.*/
|
||||||
0};
|
0};
|
||||||
|
|
||||||
static PWMConfig pwmCFG_breathing = {0xFFFF, /** PWM clock frequency */
|
|
||||||
256, /* PWM period (in ticks) 1S (1/10kHz=0.1mS 0.1ms*10000 ticks=1S) */
|
|
||||||
breathing_callback, /* Breathing Callback */
|
|
||||||
{ /* Default all channels to disabled - Channels will be configured durring init */
|
|
||||||
{PWM_OUTPUT_DISABLED, NULL},
|
|
||||||
{PWM_OUTPUT_DISABLED, NULL},
|
|
||||||
{PWM_OUTPUT_DISABLED, NULL},
|
|
||||||
{PWM_OUTPUT_DISABLED, NULL}},
|
|
||||||
0, /* HW dependent part.*/
|
|
||||||
0};
|
|
||||||
|
|
||||||
// See http://jared.geek.nz/2013/feb/linear-led-pwm
|
// See http://jared.geek.nz/2013/feb/linear-led-pwm
|
||||||
static uint16_t cie_lightness(uint16_t v) {
|
static uint16_t cie_lightness(uint16_t v) {
|
||||||
if (v <= 5243) // if below 8% of max
|
if (v <= 5243) // if below 8% of max
|
||||||
@@ -60,125 +59,88 @@ static uint16_t cie_lightness(uint16_t v) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void backlight_init_ports(void) {
|
void backlight_init_ports(void) {
|
||||||
// printf("backlight_init_ports()\n");
|
#ifdef USE_GPIOV1
|
||||||
|
|
||||||
# ifdef USE_GPIOV1
|
|
||||||
palSetPadMode(PAL_PORT(BACKLIGHT_PIN), PAL_PAD(BACKLIGHT_PIN), PAL_MODE_STM32_ALTERNATE_PUSHPULL);
|
palSetPadMode(PAL_PORT(BACKLIGHT_PIN), PAL_PAD(BACKLIGHT_PIN), PAL_MODE_STM32_ALTERNATE_PUSHPULL);
|
||||||
# else
|
#else
|
||||||
palSetPadMode(PAL_PORT(BACKLIGHT_PIN), PAL_PAD(BACKLIGHT_PIN), PAL_MODE_ALTERNATE(BACKLIGHT_PAL_MODE));
|
palSetPadMode(PAL_PORT(BACKLIGHT_PIN), PAL_PAD(BACKLIGHT_PIN), PAL_MODE_ALTERNATE(BACKLIGHT_PAL_MODE));
|
||||||
# endif
|
#endif
|
||||||
|
|
||||||
pwmCFG.channels[BACKLIGHT_PWM_CHANNEL - 1].mode = PWM_OUTPUT_ACTIVE_HIGH;
|
pwmCFG.channels[BACKLIGHT_PWM_CHANNEL - 1].mode = PWM_OUTPUT_MODE;
|
||||||
pwmCFG_breathing.channels[BACKLIGHT_PWM_CHANNEL - 1].mode = PWM_OUTPUT_ACTIVE_HIGH;
|
|
||||||
pwmStart(&BACKLIGHT_PWM_DRIVER, &pwmCFG);
|
pwmStart(&BACKLIGHT_PWM_DRIVER, &pwmCFG);
|
||||||
|
|
||||||
backlight_set(get_backlight_level());
|
backlight_set(get_backlight_level());
|
||||||
|
|
||||||
|
#ifdef BACKLIGHT_BREATHING
|
||||||
if (is_backlight_breathing()) {
|
if (is_backlight_breathing()) {
|
||||||
breathing_enable();
|
breathing_enable();
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
void backlight_set(uint8_t level) {
|
void backlight_set(uint8_t level) {
|
||||||
// printf("backlight_set(%d)\n", level);
|
if (level > BACKLIGHT_LEVELS) level = BACKLIGHT_LEVELS;
|
||||||
|
|
||||||
if (level == 0) {
|
if (level == 0) {
|
||||||
// Turn backlight off
|
// Turn backlight off
|
||||||
pwmDisableChannel(&BACKLIGHT_PWM_DRIVER, BACKLIGHT_PWM_CHANNEL - 1);
|
pwmDisableChannel(&BACKLIGHT_PWM_DRIVER, BACKLIGHT_PWM_CHANNEL - 1);
|
||||||
} else {
|
} else {
|
||||||
// Turn backlight on
|
// Turn backlight on
|
||||||
if (!is_breathing()) {
|
uint32_t duty = (uint32_t)(cie_lightness(0xFFFF * (uint32_t)level / BACKLIGHT_LEVELS));
|
||||||
uint32_t duty = (uint32_t)(cie_lightness(0xFFFF * (uint32_t)level / BACKLIGHT_LEVELS));
|
pwmEnableChannel(&BACKLIGHT_PWM_DRIVER, BACKLIGHT_PWM_CHANNEL - 1, PWM_FRACTION_TO_WIDTH(&BACKLIGHT_PWM_DRIVER, 0xFFFF, duty));
|
||||||
// printf("duty: (%d)\n", duty);
|
|
||||||
pwmEnableChannel(&BACKLIGHT_PWM_DRIVER, BACKLIGHT_PWM_CHANNEL - 1, PWM_FRACTION_TO_WIDTH(&BACKLIGHT_PWM_DRIVER, 0xFFFF, duty));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
uint8_t backlight_tick = 0;
|
|
||||||
|
|
||||||
void backlight_task(void) {}
|
void backlight_task(void) {}
|
||||||
|
|
||||||
# define BREATHING_NO_HALT 0
|
#ifdef BACKLIGHT_BREATHING
|
||||||
# define BREATHING_HALT_OFF 1
|
|
||||||
# define BREATHING_HALT_ON 2
|
|
||||||
# define BREATHING_STEPS 128
|
# define BREATHING_STEPS 128
|
||||||
|
|
||||||
static uint8_t breathing_halt = BREATHING_NO_HALT;
|
|
||||||
static uint16_t breathing_counter = 0;
|
|
||||||
|
|
||||||
bool is_breathing(void) { return BACKLIGHT_PWM_DRIVER.config == &pwmCFG_breathing; }
|
|
||||||
|
|
||||||
static inline void breathing_min(void) { breathing_counter = 0; }
|
|
||||||
|
|
||||||
static inline void breathing_max(void) { breathing_counter = get_breathing_period() * 256 / 2; }
|
|
||||||
|
|
||||||
void breathing_interrupt_enable(void) {
|
|
||||||
pwmStop(&BACKLIGHT_PWM_DRIVER);
|
|
||||||
pwmStart(&BACKLIGHT_PWM_DRIVER, &pwmCFG_breathing);
|
|
||||||
chSysLockFromISR();
|
|
||||||
pwmEnablePeriodicNotification(&BACKLIGHT_PWM_DRIVER);
|
|
||||||
pwmEnableChannelI(&BACKLIGHT_PWM_DRIVER, BACKLIGHT_PWM_CHANNEL - 1, PWM_FRACTION_TO_WIDTH(&BACKLIGHT_PWM_DRIVER, 0xFFFF, 0xFFFF));
|
|
||||||
chSysUnlockFromISR();
|
|
||||||
}
|
|
||||||
|
|
||||||
void breathing_interrupt_disable(void) {
|
|
||||||
pwmStop(&BACKLIGHT_PWM_DRIVER);
|
|
||||||
pwmStart(&BACKLIGHT_PWM_DRIVER, &pwmCFG);
|
|
||||||
}
|
|
||||||
|
|
||||||
void breathing_enable(void) {
|
|
||||||
breathing_counter = 0;
|
|
||||||
breathing_halt = BREATHING_NO_HALT;
|
|
||||||
breathing_interrupt_enable();
|
|
||||||
}
|
|
||||||
|
|
||||||
void breathing_pulse(void) {
|
|
||||||
if (get_backlight_level() == 0)
|
|
||||||
breathing_min();
|
|
||||||
else
|
|
||||||
breathing_max();
|
|
||||||
breathing_halt = BREATHING_HALT_ON;
|
|
||||||
breathing_interrupt_enable();
|
|
||||||
}
|
|
||||||
|
|
||||||
void breathing_disable(void) {
|
|
||||||
// printf("breathing_disable()\n");
|
|
||||||
breathing_interrupt_disable();
|
|
||||||
// Restore backlight level
|
|
||||||
backlight_set(get_backlight_level());
|
|
||||||
}
|
|
||||||
|
|
||||||
void breathing_self_disable(void) {
|
|
||||||
if (get_backlight_level() == 0)
|
|
||||||
breathing_halt = BREATHING_HALT_OFF;
|
|
||||||
else
|
|
||||||
breathing_halt = BREATHING_HALT_ON;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* To generate breathing curve in python:
|
/* To generate breathing curve in python:
|
||||||
* from math import sin, pi; [int(sin(x/128.0*pi)**4*255) for x in range(128)]
|
* from math import sin, pi; [int(sin(x/128.0*pi)**4*255) for x in range(128)]
|
||||||
*/
|
*/
|
||||||
static const uint8_t breathing_table[BREATHING_STEPS] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 2, 3, 4, 5, 6, 8, 10, 12, 15, 17, 20, 24, 28, 32, 36, 41, 46, 51, 57, 63, 70, 76, 83, 91, 98, 106, 113, 121, 129, 138, 146, 154, 162, 170, 178, 185, 193, 200, 207, 213, 220, 225, 231, 235, 240, 244, 247, 250, 252, 253, 254, 255, 254, 253, 252, 250, 247, 244, 240, 235, 231, 225, 220, 213, 207, 200, 193, 185, 178, 170, 162, 154, 146, 138, 129, 121, 113, 106, 98, 91, 83, 76, 70, 63, 57, 51, 46, 41, 36, 32, 28, 24, 20, 17, 15, 12, 10, 8, 6, 5, 4, 3, 2, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
|
static const uint8_t breathing_table[BREATHING_STEPS] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 2, 3, 4, 5, 6, 8, 10, 12, 15, 17, 20, 24, 28, 32, 36, 41, 46, 51, 57, 63, 70, 76, 83, 91, 98, 106, 113, 121, 129, 138, 146, 154, 162, 170, 178, 185, 193, 200, 207, 213, 220, 225, 231, 235, 240, 244, 247, 250, 252, 253, 254, 255, 254, 253, 252, 250, 247, 244, 240, 235, 231, 225, 220, 213, 207, 200, 193, 185, 178, 170, 162, 154, 146, 138, 129, 121, 113, 106, 98, 91, 83, 76, 70, 63, 57, 51, 46, 41, 36, 32, 28, 24, 20, 17, 15, 12, 10, 8, 6, 5, 4, 3, 2, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
|
||||||
|
|
||||||
|
void breathing_callback(PWMDriver *pwmp);
|
||||||
|
|
||||||
|
bool is_breathing(void) { return pwmCFG.callback != NULL; }
|
||||||
|
|
||||||
|
void breathing_enable(void) {
|
||||||
|
pwmCFG.callback = breathing_callback;
|
||||||
|
pwmEnablePeriodicNotification(&BACKLIGHT_PWM_DRIVER);
|
||||||
|
}
|
||||||
|
|
||||||
|
void breathing_disable(void) {
|
||||||
|
pwmCFG.callback = NULL;
|
||||||
|
pwmDisablePeriodicNotification(&BACKLIGHT_PWM_DRIVER);
|
||||||
|
|
||||||
|
// Restore backlight level
|
||||||
|
backlight_set(get_backlight_level());
|
||||||
|
}
|
||||||
|
|
||||||
// Use this before the cie_lightness function.
|
// Use this before the cie_lightness function.
|
||||||
static inline uint16_t scale_backlight(uint16_t v) { return v / BACKLIGHT_LEVELS * get_backlight_level(); }
|
static inline uint16_t scale_backlight(uint16_t v) { return v / BACKLIGHT_LEVELS * get_backlight_level(); }
|
||||||
|
|
||||||
static void breathing_callback(PWMDriver *pwmp) {
|
void breathing_callback(PWMDriver *pwmp) {
|
||||||
(void)pwmp;
|
|
||||||
uint8_t breathing_period = get_breathing_period();
|
uint8_t breathing_period = get_breathing_period();
|
||||||
uint16_t interval = (uint16_t)breathing_period * 256 / BREATHING_STEPS;
|
uint16_t interval = (uint16_t)breathing_period * 256 / BREATHING_STEPS;
|
||||||
|
|
||||||
// resetting after one period to prevent ugly reset at overflow.
|
// resetting after one period to prevent ugly reset at overflow.
|
||||||
breathing_counter = (breathing_counter + 1) % (breathing_period * 256);
|
static uint16_t breathing_counter = 0;
|
||||||
uint8_t index = breathing_counter / interval % BREATHING_STEPS;
|
breathing_counter = (breathing_counter + 1) % (breathing_period * 256);
|
||||||
|
uint8_t index = breathing_counter / interval % BREATHING_STEPS;
|
||||||
if (((breathing_halt == BREATHING_HALT_ON) && (index == BREATHING_STEPS / 2)) || ((breathing_halt == BREATHING_HALT_OFF) && (index == BREATHING_STEPS - 1))) {
|
uint32_t duty = cie_lightness(scale_backlight(breathing_table[index] * 256));
|
||||||
breathing_interrupt_disable();
|
|
||||||
}
|
|
||||||
|
|
||||||
uint32_t duty = cie_lightness(scale_backlight(breathing_table[index] * 256));
|
|
||||||
|
|
||||||
chSysLockFromISR();
|
chSysLockFromISR();
|
||||||
pwmEnableChannelI(&BACKLIGHT_PWM_DRIVER, BACKLIGHT_PWM_CHANNEL - 1, PWM_FRACTION_TO_WIDTH(&BACKLIGHT_PWM_DRIVER, 0xFFFF, duty));
|
pwmEnableChannelI(pwmp, BACKLIGHT_PWM_CHANNEL - 1, PWM_FRACTION_TO_WIDTH(&BACKLIGHT_PWM_DRIVER, 0xFFFF, duty));
|
||||||
chSysUnlockFromISR();
|
chSysUnlockFromISR();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TODO: integrate generic pulse solution
|
||||||
|
void breathing_pulse(void) {
|
||||||
|
backlight_set(is_backlight_enabled() ? 0 : BACKLIGHT_LEVELS);
|
||||||
|
wait_ms(10);
|
||||||
|
backlight_set(is_backlight_enabled() ? get_backlight_level() : 0);
|
||||||
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
@@ -0,0 +1,253 @@
|
|||||||
|
/* Copyright 2020 Guillaume Gérard
|
||||||
|
*
|
||||||
|
* 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/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* French AZERTY - AFNOR NF Z71-300
|
||||||
|
*
|
||||||
|
* A standard for the French keyboard
|
||||||
|
*
|
||||||
|
* The project was launched at the end of 2015 on the proposal of the General
|
||||||
|
* Delegation for the French language and the languages of France (Ministry
|
||||||
|
* of Culture), starting from the observation that the current "azerty"
|
||||||
|
* keyboards constrain the writing of French, languages regional and European
|
||||||
|
* languages with Latin alphabet.
|
||||||
|
*
|
||||||
|
* For the first time, a standard (NF Z71-300) defines the placement of
|
||||||
|
* characters on the French keyboard. It offers two layouts, one of which
|
||||||
|
* closely follows the QWERTY keyboard used by most people who write in French.
|
||||||
|
*
|
||||||
|
* However, it is in many ways superior to the old keyboard:
|
||||||
|
*
|
||||||
|
* - it contains all the characters required to enter text in French (for example É, œ and ")
|
||||||
|
* - it is designed to be more ergonomic and allow faster typing
|
||||||
|
* - it includes almost 60 additional characters for entering foreign languages, technical content, etc
|
||||||
|
* - however, the characters remain easy to locate thanks to intuitive groupings
|
||||||
|
*
|
||||||
|
* Source: https://norme-azerty.fr
|
||||||
|
*/
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "keymap.h"
|
||||||
|
|
||||||
|
// clang-format off
|
||||||
|
|
||||||
|
/*
|
||||||
|
* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐
|
||||||
|
* │ @ │ à │ é │ è │ ê │ ( │ ) │ ‘ │ ’ │ « │ » │ ' │ ^ │ │
|
||||||
|
* ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤
|
||||||
|
* │ │ A │ Z │ E │ R │ T │ Y │ U │ I │ O │ P │ - │ + │ │
|
||||||
|
* ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │
|
||||||
|
* │ │ Q │ S │ D │ F │ G │ H │ J │ K │ L │ M │ / │ * │ │
|
||||||
|
* ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤
|
||||||
|
* │ │ < │ W │ X │ C │ V │ B │ N │ . │ , │ : │ ; │ │
|
||||||
|
* ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤
|
||||||
|
* │ │ │ │ │ │ │ │ │
|
||||||
|
* └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘
|
||||||
|
*/
|
||||||
|
// Row 1
|
||||||
|
#define FR_AT KC_GRV // @
|
||||||
|
#define FR_AGRV KC_1 // à
|
||||||
|
#define FR_EACU KC_2 // é
|
||||||
|
#define FR_EGRV KC_3 // è
|
||||||
|
#define FR_ECIR KC_4 // ê
|
||||||
|
#define FR_LPRN KC_5 // (
|
||||||
|
#define FR_RPRN KC_6 // )
|
||||||
|
#define FR_LSQU KC_7 // ‘
|
||||||
|
#define FR_RSQU KC_8 // ’
|
||||||
|
#define FR_LDAQ KC_9 // «
|
||||||
|
#define FR_RDAQ KC_0 // »
|
||||||
|
#define FR_QUOT KC_MINS // '
|
||||||
|
#define FR_DCIR KC_EQL // ^ (dead)
|
||||||
|
// Row 2
|
||||||
|
#define FR_A KC_Q // A
|
||||||
|
#define FR_Z KC_W // Z
|
||||||
|
#define FR_E KC_E // E
|
||||||
|
#define FR_R KC_R // R
|
||||||
|
#define FR_T KC_T // T
|
||||||
|
#define FR_Y KC_Y // Y
|
||||||
|
#define FR_U KC_U // U
|
||||||
|
#define FR_I KC_I // I
|
||||||
|
#define FR_O KC_O // O
|
||||||
|
#define FR_P KC_P // P
|
||||||
|
#define FR_MINS KC_LBRC // -
|
||||||
|
#define FR_PLUS KC_RBRC // +
|
||||||
|
// Row 3
|
||||||
|
#define FR_Q KC_A // Q
|
||||||
|
#define FR_S KC_S // S
|
||||||
|
#define FR_D KC_D // D
|
||||||
|
#define FR_F KC_F // F
|
||||||
|
#define FR_G KC_G // G
|
||||||
|
#define FR_H KC_H // H
|
||||||
|
#define FR_J KC_J // J
|
||||||
|
#define FR_K KC_K // K
|
||||||
|
#define FR_L KC_L // L
|
||||||
|
#define FR_M KC_SCLN // M
|
||||||
|
#define FR_SLSH KC_QUOT // /
|
||||||
|
#define FR_ASTR KC_NUHS // *
|
||||||
|
// Row 4
|
||||||
|
#define FR_LABK KC_NUBS // <
|
||||||
|
#define FR_W KC_Z // W
|
||||||
|
#define FR_X KC_X // X
|
||||||
|
#define FR_C KC_C // C
|
||||||
|
#define FR_V KC_V // V
|
||||||
|
#define FR_B KC_B // B
|
||||||
|
#define FR_N KC_N // N
|
||||||
|
#define FR_DOT KC_M // .
|
||||||
|
#define FR_COMM KC_COMM // ,
|
||||||
|
#define FR_COLN KC_DOT // :
|
||||||
|
#define FR_SCLN KC_SLSH // ;
|
||||||
|
|
||||||
|
/* Shifted symbols
|
||||||
|
* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐
|
||||||
|
* │ # │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ " │ ¨ │ │
|
||||||
|
* ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤
|
||||||
|
* │ │ │ │ │ │ │ │ │ │ │ │ – │ ± │ │
|
||||||
|
* ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │
|
||||||
|
* │ │ │ │ │ │ │ │ │ │ │ │ \ │ ½ │ │
|
||||||
|
* ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤
|
||||||
|
* │ │ > │ │ │ │ │ │ │ ? │ ! │ … │ = │ │
|
||||||
|
* ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤
|
||||||
|
* │ │ │ │ │ │ │ │ │
|
||||||
|
* └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘
|
||||||
|
*/
|
||||||
|
// Row 1
|
||||||
|
#define FR_HASH S(FR_AT) // #
|
||||||
|
#define FR_1 S(FR_AGRV) // 1
|
||||||
|
#define FR_2 S(FR_EACU) // 2
|
||||||
|
#define FR_3 S(FR_EGRV) // 3
|
||||||
|
#define FR_4 S(FR_ECIR) // 4
|
||||||
|
#define FR_5 S(FR_LPRN) // 5
|
||||||
|
#define FR_6 S(FR_RPRN) // 6
|
||||||
|
#define FR_7 S(FR_LSQU) // 7
|
||||||
|
#define FR_8 S(FR_RSQU) // 8
|
||||||
|
#define FR_9 S(FR_LDAQ) // 9
|
||||||
|
#define FR_0 S(FR_RDAQ) // 0
|
||||||
|
#define FR_DQUO S(FR_QUOT) // "
|
||||||
|
#define FR_DIAE S(FR_DCIR) // ¨ (dead)
|
||||||
|
// Row 2
|
||||||
|
#define FR_NDSH S(FR_MINS) // –
|
||||||
|
#define FR_PLMN S(FR_PLUS) // ±
|
||||||
|
// Row 3
|
||||||
|
#define FR_BSLS S(FR_SLSH) // (backslash)
|
||||||
|
#define FR_HALF S(FR_ASTR) // ½
|
||||||
|
// Row 4
|
||||||
|
#define FR_RABK S(FR_LABK) // >
|
||||||
|
#define FR_QUES S(FR_DOT) // ?
|
||||||
|
#define FR_EXLM S(FR_COMM) // !
|
||||||
|
#define FR_ELLP S(FR_COLN) // …
|
||||||
|
#define FR_EQL S(FR_SCLN) // =
|
||||||
|
|
||||||
|
/* AltGr symbols
|
||||||
|
* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐
|
||||||
|
* │ ˘ │ § │ ´ │ ` │ & │ [ │ ] │ ¯ │ _ │ “ │ ” │ ° │ ˇ │ │
|
||||||
|
* ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤
|
||||||
|
* │ │ æ │ £ │ € │ ® │ { │ } │ ù │ ˙ │ œ │ % │ − │ † │ │
|
||||||
|
* ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │
|
||||||
|
* │ │ θ │ ß │ $ │ ¤ │ µ │ Eu│ │ ∕ │ | │ ∞ │ ÷ │ × │ │
|
||||||
|
* ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤
|
||||||
|
* │ │ ≤ │ ʒ │ © │ ç │ ¸ │ − │ ~ │ ¿ │ ¡ │ · │ ≃ │ │
|
||||||
|
* ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤
|
||||||
|
* │ │ │ │ │ │ │ │ │
|
||||||
|
* └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘
|
||||||
|
*/
|
||||||
|
// Row 1
|
||||||
|
#define FR_BREV ALGR(FR_AT) // ˘ (dead)
|
||||||
|
#define FR_SECT ALGR(FR_AGRV) // §
|
||||||
|
#define FR_ACUT ALGR(FR_EACU) // ´ (dead)
|
||||||
|
#define FR_GRV ALGR(FR_EGRV) // ` (dead)
|
||||||
|
#define FR_AMPR ALGR(FR_ECIR) // &
|
||||||
|
#define FR_LBRC ALGR(FR_LPRN) // [
|
||||||
|
#define FR_RBRC ALGR(FR_RPRN) // ]
|
||||||
|
#define FR_MACR ALGR(FR_LSQU) // ¯ (dead)
|
||||||
|
#define FR_UNDS ALGR(FR_RSQU) // _
|
||||||
|
#define FR_LDQU ALGR(FR_LDAQ) // “
|
||||||
|
#define FR_RDQU ALGR(FR_RDAQ) // ”
|
||||||
|
#define FR_DEG ALGR(FR_QUOT) // °
|
||||||
|
#define FR_CARN ALGR(FR_DCIR) // ˇ (dead)
|
||||||
|
// Row 2
|
||||||
|
#define FR_AE ALGR(FR_A) // æ
|
||||||
|
#define FR_PND ALGR(FR_Z) // £
|
||||||
|
#define FR_EURO ALGR(FR_E) // €
|
||||||
|
#define FR_REGD ALGR(FR_R) // ®
|
||||||
|
#define FR_LCBR ALGR(FR_T) // {
|
||||||
|
#define FR_RCBR ALGR(FR_Y) // }
|
||||||
|
#define FR_UGRV ALGR(FR_U) // ù
|
||||||
|
#define FR_DOTA ALGR(FR_I) // ˙ (dead)
|
||||||
|
#define FR_OE ALGR(FR_O) // œ
|
||||||
|
#define FR_PERC ALGR(FR_P) // %
|
||||||
|
#define FR_MMNS ALGR(FR_MINS) // −
|
||||||
|
#define FR_DAGG ALGR(FR_PLUS) // †
|
||||||
|
// Row 3
|
||||||
|
#define FR_THET ALGR(FR_Q) // θ
|
||||||
|
#define FR_SS ALGR(FR_S) // ß
|
||||||
|
#define FR_DLR ALGR(FR_D) // $
|
||||||
|
#define FR_CURR ALGR(FR_F) // ¤ (dead monetary key)
|
||||||
|
#define FR_DGRK ALGR(FR_G) // µ (dead Greek key)
|
||||||
|
#define FR_EU ALGR(FR_H) // Eu (dead European symbol key)
|
||||||
|
#define FR_DSLS ALGR(FR_K) // ∕ (dead)
|
||||||
|
#define FR_PIPE ALGR(FR_L) // |
|
||||||
|
#define FR_INFN ALGR(FR_M) // ∞
|
||||||
|
#define FR_DIV ALGR(FR_SLSH) // ÷
|
||||||
|
#define FR_MUL ALGR(FR_ASTR) // ×
|
||||||
|
// Row 4
|
||||||
|
#define FR_LEQL ALGR(FR_LABK) // ≤
|
||||||
|
#define FR_EZH ALGR(FR_W) // ʒ
|
||||||
|
#define FR_COPY ALGR(FR_X) // ©
|
||||||
|
#define FR_CCED ALGR(FR_C) // ç
|
||||||
|
#define FR_CEDL ALGR(FR_V) // ¸ (dead)
|
||||||
|
#define FR_DMNS ALGR(FR_B) // − (dead)
|
||||||
|
#define FR_DTIL ALGR(FR_N) // ~ (dead)
|
||||||
|
#define FR_IQUE ALGR(FR_DOT) // ¿
|
||||||
|
#define FR_IEXL ALGR(FR_COMM) // ¡
|
||||||
|
#define FR_MDDT ALGR(FR_COLN) // ·
|
||||||
|
#define FR_AEQL ALGR(FR_SCLN) // ≃
|
||||||
|
|
||||||
|
/* Shift+AltGr symbols
|
||||||
|
* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐
|
||||||
|
* │ ̑ │ │ │ │ │ ˝ │ ̏ │ │ — │ ‹ │ › │ ˚ │ │ │
|
||||||
|
* ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤
|
||||||
|
* │ │ │ │ │ │ ™ │ │ │ ̣ │ │ ‰ │ ‑ │ ‡ │ │
|
||||||
|
* ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │
|
||||||
|
* │ │ │ │ │ │ │ ˍ │ │ │ │ │ √ │ ¼ │ │
|
||||||
|
* ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤
|
||||||
|
* │ │ ≥ │ │ │ │ ˛ │ │ │ │ ̦ │ │ ≠ │ │
|
||||||
|
* ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤
|
||||||
|
* │ │ │ │ │ │ │ │ │
|
||||||
|
* └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘
|
||||||
|
*/
|
||||||
|
// Row 1
|
||||||
|
#define FR_IBRV S(ALGR(FR_AT)) // ̑ (dead)
|
||||||
|
#define FR_DACU S(ALGR(FR_LPRN)) // ˝ (dead)
|
||||||
|
#define FR_DGRV S(ALGR(FR_RPRN)) // ̏ (dead)
|
||||||
|
#define FR_MDSH S(ALGR(FR_RSQU)) // —
|
||||||
|
#define FR_LSAQ S(ALGR(FR_LDAQ)) // ‹
|
||||||
|
#define FR_RSAQ S(ALGR(FR_RDAQ)) // ›
|
||||||
|
#define FR_RNGA S(ALGR(FR_QUOT)) // ˚ (dead)
|
||||||
|
// Row 2
|
||||||
|
#define FR_TM S(ALGR(FR_T)) // ™
|
||||||
|
#define FR_DOTB S(ALGR(FR_I)) // ̣ (dead)
|
||||||
|
#define FR_PERM S(ALGR(FR_P)) // ‰
|
||||||
|
#define FR_NBHY S(ALGR(FR_MINS)) // ‑ (non-breaking hyphen)
|
||||||
|
#define FR_DDAG S(ALGR(FR_PLUS)) // ‡
|
||||||
|
// Row 3
|
||||||
|
#define FR_MACB S(ALGR(FR_H)) // ˍ (dead)
|
||||||
|
#define FR_SQRT S(ALGR(FR_SLSH)) // √
|
||||||
|
#define FR_QRTR S(ALGR(FR_ASTR)) // ¼
|
||||||
|
// Row 4
|
||||||
|
#define FR_GEQL S(ALGR(FR_LABK)) // ≥
|
||||||
|
#define FR_OGON S(ALGR(FR_V)) // ˛ (dead)
|
||||||
|
#define FR_DCMM S(ALGR(FR_COMM)) // ̦ (dead)
|
||||||
|
#define FR_NEQL S(ALGR(FR_SCLN)) // ≠
|
||||||
@@ -59,7 +59,7 @@
|
|||||||
#define US_O KC_O // O
|
#define US_O KC_O // O
|
||||||
#define US_P KC_P // P
|
#define US_P KC_P // P
|
||||||
#define US_LBRC KC_LBRC // [
|
#define US_LBRC KC_LBRC // [
|
||||||
#define US_RBRC KC_LBRC // ]
|
#define US_RBRC KC_RBRC // ]
|
||||||
#define US_BSLS KC_BSLS // (backslash)
|
#define US_BSLS KC_BSLS // (backslash)
|
||||||
// Row 3
|
// Row 3
|
||||||
#define US_A KC_A // A
|
#define US_A KC_A // A
|
||||||
|
|||||||
@@ -0,0 +1,100 @@
|
|||||||
|
/* Copyright 2020 Guillaume Gérard
|
||||||
|
*
|
||||||
|
* 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/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
// Sendstring lookup tables for French (AZERTY - AFNOR NF Z71-300) layouts
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "keymap_french_afnor.h"
|
||||||
|
#include "quantum.h"
|
||||||
|
|
||||||
|
// clang-format off
|
||||||
|
|
||||||
|
const uint8_t ascii_to_shift_lut[16] PROGMEM = {
|
||||||
|
KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
|
||||||
|
KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
|
||||||
|
KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
|
||||||
|
KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
|
||||||
|
|
||||||
|
KCLUT_ENTRY(0, 1, 1, 1, 0, 0, 0, 0),
|
||||||
|
KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
|
||||||
|
KCLUT_ENTRY(1, 1, 1, 1, 1, 1, 1, 1),
|
||||||
|
KCLUT_ENTRY(1, 1, 0, 0, 0, 1, 1, 1),
|
||||||
|
KCLUT_ENTRY(0, 1, 1, 1, 1, 1, 1, 1),
|
||||||
|
KCLUT_ENTRY(1, 1, 1, 1, 1, 1, 1, 1),
|
||||||
|
KCLUT_ENTRY(1, 1, 1, 1, 1, 1, 1, 1),
|
||||||
|
KCLUT_ENTRY(1, 1, 1, 0, 1, 0, 0, 0),
|
||||||
|
KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
|
||||||
|
KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
|
||||||
|
KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
|
||||||
|
KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0)
|
||||||
|
};
|
||||||
|
|
||||||
|
const uint8_t ascii_to_altgr_lut[16] PROGMEM = {
|
||||||
|
KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
|
||||||
|
KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
|
||||||
|
KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
|
||||||
|
KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
|
||||||
|
|
||||||
|
KCLUT_ENTRY(0, 0, 0, 0, 1, 1, 1, 0),
|
||||||
|
KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
|
||||||
|
KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
|
||||||
|
KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
|
||||||
|
KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
|
||||||
|
KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
|
||||||
|
KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
|
||||||
|
KCLUT_ENTRY(0, 0, 0, 1, 0, 1, 0, 1),
|
||||||
|
KCLUT_ENTRY(1, 0, 0, 0, 0, 0, 0, 0),
|
||||||
|
KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
|
||||||
|
KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
|
||||||
|
KCLUT_ENTRY(0, 0, 0, 1, 1, 1, 1, 0)
|
||||||
|
};
|
||||||
|
|
||||||
|
const uint8_t ascii_to_keycode_lut[128] PROGMEM = {
|
||||||
|
// NUL SOH STX ETX EOT ENQ ACK BEL
|
||||||
|
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
|
||||||
|
// BS TAB LF VT FF CR SO SI
|
||||||
|
KC_BSPC, KC_TAB, KC_ENT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
|
||||||
|
// DLE DC1 DC2 DC3 DC4 NAK SYN ETB
|
||||||
|
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
|
||||||
|
// CAN EM SUB ESC FS GS RS US
|
||||||
|
XXXXXXX, XXXXXXX, XXXXXXX, KC_ESC, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
|
||||||
|
|
||||||
|
// ! " # $ % & '
|
||||||
|
KC_SPC, FR_COMM, FR_QUOT, FR_AT, FR_D, FR_P, FR_ECIR, FR_QUOT,
|
||||||
|
// ( ) * + , - . /
|
||||||
|
FR_LPRN, FR_RPRN, FR_ASTR, FR_PLUS, FR_COMM, FR_MINS, FR_DOT, FR_SLSH,
|
||||||
|
// 0 1 2 3 4 5 6 7
|
||||||
|
FR_RDAQ, FR_AGRV, FR_EACU, FR_EGRV, FR_ECIR, FR_LPRN, FR_RPRN, FR_LSQU,
|
||||||
|
// 8 9 : ; < = > ?
|
||||||
|
FR_RSQU, FR_LDAQ, FR_COLN, FR_SCLN, FR_LABK, FR_SCLN, FR_LABK, FR_DOT,
|
||||||
|
// @ A B C D E F G
|
||||||
|
FR_AT, FR_A, FR_B, FR_C, FR_D, FR_E, FR_F, FR_G,
|
||||||
|
// H I J K L M N O
|
||||||
|
FR_H, FR_I, FR_J, FR_K, FR_L, FR_M, FR_N, FR_O,
|
||||||
|
// P Q R S T U V W
|
||||||
|
FR_P, FR_Q, FR_R, FR_S, FR_T, FR_U, FR_V, FR_W,
|
||||||
|
// X Y Z [ \ ] ^ _
|
||||||
|
FR_X, FR_Y, FR_Z, FR_LPRN, FR_SLSH, FR_RPRN, FR_DCIR, FR_RSQU,
|
||||||
|
// ` a b c d e f g
|
||||||
|
FR_EGRV, FR_A, FR_B, FR_C, FR_D, FR_E, FR_F, FR_G,
|
||||||
|
// h i j k l m n o
|
||||||
|
FR_H, FR_I, FR_J, FR_K, FR_L, FR_M, FR_N, FR_O,
|
||||||
|
// p q r s t u v w
|
||||||
|
FR_P, FR_Q, FR_R, FR_S, FR_T, FR_U, FR_V, FR_W,
|
||||||
|
// x y z { | } ~ DEL
|
||||||
|
FR_X, FR_Y, FR_Z, FR_T, FR_L, FR_Y, FR_N, KC_DEL
|
||||||
|
};
|
||||||
@@ -216,11 +216,13 @@ bool process_dynamic_macro(uint16_t keycode, keyrecord_t *record) {
|
|||||||
} else {
|
} else {
|
||||||
/* A macro is being recorded right now. */
|
/* A macro is being recorded right now. */
|
||||||
switch (keycode) {
|
switch (keycode) {
|
||||||
|
case DYN_REC_START1:
|
||||||
|
case DYN_REC_START2:
|
||||||
case DYN_REC_STOP:
|
case DYN_REC_STOP:
|
||||||
/* Stop the macro recording. */
|
/* Stop the macro recording. */
|
||||||
if (record->event.pressed) { /* Ignore the initial release
|
if (record->event.pressed ^ (keycode != DYN_REC_STOP)) { /* Ignore the initial release
|
||||||
* just after the recoding
|
* just after the recording
|
||||||
* starts. */
|
* starts for DYN_REC_STOP. */
|
||||||
switch (macro_id) {
|
switch (macro_id) {
|
||||||
case 1:
|
case 1:
|
||||||
dynamic_macro_record_end(macro_buffer, macro_pointer, +1, ¯o_end);
|
dynamic_macro_record_end(macro_buffer, macro_pointer, +1, ¯o_end);
|
||||||
|
|||||||
@@ -1,21 +1,36 @@
|
|||||||
{ avr ? true, arm ? true, teensy ? true }:
|
{ avr ? true, arm ? true, teensy ? true }:
|
||||||
|
|
||||||
let
|
let
|
||||||
overlay = self: super:
|
|
||||||
let addDarwinSupport = pkg: pkg.overrideAttrs (oldAttrs: {
|
|
||||||
meta.platforms = (oldAttrs.meta.platforms or []) ++ self.lib.platforms.darwin;
|
|
||||||
});
|
|
||||||
in {
|
|
||||||
dfu-programmer = addDarwinSupport super.dfu-programmer;
|
|
||||||
teensy-loader-cli = addDarwinSupport super.teensy-loader-cli;
|
|
||||||
};
|
|
||||||
|
|
||||||
nixpkgs = builtins.fetchTarball {
|
nixpkgs = builtins.fetchTarball {
|
||||||
url = "https://github.com/NixOS/nixpkgs/archive/903266491b7b9b0379e88709feca0af900def0d9.tar.gz";
|
url = "https://github.com/NixOS/nixpkgs/archive/903266491b7b9b0379e88709feca0af900def0d9.tar.gz";
|
||||||
sha256 = "1b5wjrfgyha6s15k1yjyx41hvrpmd5szpkpkxk6l5hyrfqsr8wip";
|
sha256 = "1b5wjrfgyha6s15k1yjyx41hvrpmd5szpkpkxk6l5hyrfqsr8wip";
|
||||||
};
|
};
|
||||||
|
|
||||||
pkgs = import nixpkgs { overlays = [ overlay ]; };
|
pkgs = import nixpkgs { };
|
||||||
|
|
||||||
|
hjson = with pkgs.python3Packages; buildPythonPackage rec {
|
||||||
|
pname = "hjson";
|
||||||
|
version = "3.0.1";
|
||||||
|
|
||||||
|
src = fetchPypi {
|
||||||
|
inherit pname version;
|
||||||
|
sha256 = "1yaimcgz8w0ps1wk28wk9g9zdidp79d14xqqj9rjkvxalvx2f5qx";
|
||||||
|
};
|
||||||
|
doCheck = false;
|
||||||
|
};
|
||||||
|
|
||||||
|
pythonEnv = pkgs.python3.withPackages (p: with p; [
|
||||||
|
# requirements.txt
|
||||||
|
appdirs
|
||||||
|
argcomplete
|
||||||
|
colorama
|
||||||
|
hjson
|
||||||
|
# requirements-dev.txt
|
||||||
|
nose2
|
||||||
|
flake8
|
||||||
|
pep8-naming
|
||||||
|
yapf
|
||||||
|
]);
|
||||||
in
|
in
|
||||||
|
|
||||||
with pkgs;
|
with pkgs;
|
||||||
@@ -32,10 +47,10 @@ let
|
|||||||
"-L${avrlibc}/avr/lib/avr51"
|
"-L${avrlibc}/avr/lib/avr51"
|
||||||
];
|
];
|
||||||
in
|
in
|
||||||
stdenv.mkDerivation {
|
mkShell {
|
||||||
name = "qmk-firmware";
|
name = "qmk-firmware";
|
||||||
|
|
||||||
buildInputs = [ dfu-programmer dfu-util diffutils git python3 ]
|
buildInputs = [ dfu-programmer dfu-util diffutils git pythonEnv ]
|
||||||
++ lib.optional avr [
|
++ lib.optional avr [
|
||||||
pkgsCross.avr.buildPackages.binutils
|
pkgsCross.avr.buildPackages.binutils
|
||||||
pkgsCross.avr.buildPackages.gcc8
|
pkgsCross.avr.buildPackages.gcc8
|
||||||
@@ -47,4 +62,9 @@ stdenv.mkDerivation {
|
|||||||
|
|
||||||
AVR_CFLAGS = lib.optional avr avr_incflags;
|
AVR_CFLAGS = lib.optional avr avr_incflags;
|
||||||
AVR_ASFLAGS = lib.optional avr avr_incflags;
|
AVR_ASFLAGS = lib.optional avr avr_incflags;
|
||||||
|
shellHook = ''
|
||||||
|
# Prevent the avr-gcc wrapper from picking up host GCC flags
|
||||||
|
# like -iframework, which is problematic on Darwin
|
||||||
|
unset NIX_TARGET_CFLAGS_COMPILE
|
||||||
|
'';
|
||||||
}
|
}
|
||||||
@@ -0,0 +1,154 @@
|
|||||||
|
#include "ajp10304.h"
|
||||||
|
|
||||||
|
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
||||||
|
|
||||||
|
switch (keycode) {
|
||||||
|
case QWERTY:
|
||||||
|
if (record->event.pressed) {
|
||||||
|
set_single_persistent_default_layer(_QWERTY);
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
case LOWER:
|
||||||
|
if (record->event.pressed) {
|
||||||
|
layer_on(_LOWER);
|
||||||
|
update_tri_layer(_LOWER, _RAISE, _ADJUST);
|
||||||
|
} else {
|
||||||
|
layer_off(_LOWER);
|
||||||
|
update_tri_layer(_LOWER, _RAISE, _ADJUST);
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
case RAISE:
|
||||||
|
if (record->event.pressed) {
|
||||||
|
layer_on(_RAISE);
|
||||||
|
update_tri_layer(_LOWER, _RAISE, _ADJUST);
|
||||||
|
} else {
|
||||||
|
layer_off(_RAISE);
|
||||||
|
update_tri_layer(_LOWER, _RAISE, _ADJUST);
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
case MLWR:
|
||||||
|
if (record->event.pressed) {
|
||||||
|
layer_on(_LOWER);
|
||||||
|
layer_on(_MLWR);
|
||||||
|
update_tri_layer(_LOWER, _RAISE, _ADJUST);
|
||||||
|
} else {
|
||||||
|
layer_off(_LOWER);
|
||||||
|
layer_off(_MLWR);
|
||||||
|
update_tri_layer(_LOWER, _RAISE, _ADJUST);
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
case MRSE:
|
||||||
|
if (record->event.pressed) {
|
||||||
|
layer_on(_RAISE);
|
||||||
|
layer_on(_MRSE);
|
||||||
|
update_tri_layer(_LOWER, _RAISE, _ADJUST);
|
||||||
|
} else {
|
||||||
|
layer_off(_RAISE);
|
||||||
|
layer_off(_MRSE);
|
||||||
|
update_tri_layer(_LOWER, _RAISE, _ADJUST);
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
case MFNC:
|
||||||
|
if (record->event.pressed) {
|
||||||
|
layer_on(_FUNC);
|
||||||
|
layer_on(_MFNC);
|
||||||
|
} else {
|
||||||
|
layer_off(_FUNC);
|
||||||
|
layer_off(_MFNC);
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
case MFNC2:
|
||||||
|
if (record->event.pressed) {
|
||||||
|
layer_on(_FUNC2);
|
||||||
|
layer_on(_MFNC2);
|
||||||
|
} else {
|
||||||
|
layer_off(_FUNC2);
|
||||||
|
layer_off(_MFNC2);
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
case M_CUSTOM:
|
||||||
|
if (record->event.pressed) {
|
||||||
|
SEND_STRING("Custom text here");
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case M_WORD_SEL:
|
||||||
|
if (record->event.pressed) {
|
||||||
|
register_mods(MOD_LCTL);
|
||||||
|
tap_code(KC_RGHT);
|
||||||
|
tap_code16(S(KC_LEFT));
|
||||||
|
unregister_mods(MOD_LCTL);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case M_WORD_SEL_MAC:
|
||||||
|
if (record->event.pressed) {
|
||||||
|
register_mods(MOD_LALT);
|
||||||
|
tap_code(KC_RGHT);
|
||||||
|
tap_code16(S(KC_LEFT));
|
||||||
|
unregister_mods(MOD_LALT);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case M_LINE_SEL:
|
||||||
|
if (record->event.pressed) {
|
||||||
|
tap_code(KC_HOME);
|
||||||
|
tap_code16(S(KC_END));
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case M_LINE_SEL_MAC:
|
||||||
|
if (record->event.pressed) {
|
||||||
|
tap_code16(C(KC_A));
|
||||||
|
tap_code16(C(S(KC_E)));
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case M_LINE_DEL:
|
||||||
|
if (record->event.pressed) {
|
||||||
|
tap_code(KC_HOME);
|
||||||
|
tap_code16(S(KC_END));
|
||||||
|
tap_code(KC_BSPC);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case M_LINE_DEL_MAC:
|
||||||
|
if (record->event.pressed) {
|
||||||
|
tap_code16(C(KC_A));
|
||||||
|
tap_code16(C(S(KC_E)));
|
||||||
|
tap_code(KC_BSPC);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case M_DUP:
|
||||||
|
if (record->event.pressed) {
|
||||||
|
tap_code16(C(KC_C));
|
||||||
|
tap_code(KC_RGHT);
|
||||||
|
tap_code16(C(KC_V));
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case M_DUP_MAC:
|
||||||
|
if (record->event.pressed) {
|
||||||
|
tap_code16(G(KC_C));
|
||||||
|
tap_code(KC_RGHT);
|
||||||
|
tap_code16(G(KC_V));
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case M_JOIN:
|
||||||
|
if (record->event.pressed) {
|
||||||
|
tap_code(KC_END);
|
||||||
|
tap_code(KC_DEL);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case M_JOIN_MAC:
|
||||||
|
if (record->event.pressed) {
|
||||||
|
tap_code16(C(KC_E));
|
||||||
|
tap_code(KC_DEL);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case M_MODE:
|
||||||
|
if (record->event.pressed) {
|
||||||
|
SEND_STRING("PC");
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case M_MODE_MAC:
|
||||||
|
if (record->event.pressed) {
|
||||||
|
SEND_STRING("OSX");
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
@@ -0,0 +1,45 @@
|
|||||||
|
#include QMK_KEYBOARD_H
|
||||||
|
|
||||||
|
enum ajp10304_layers {
|
||||||
|
_QWERTY,
|
||||||
|
_MAC,
|
||||||
|
_LOWER,
|
||||||
|
_MLWR,
|
||||||
|
_RAISE,
|
||||||
|
_MRSE,
|
||||||
|
_FUNC,
|
||||||
|
_MFNC,
|
||||||
|
_FUNC2,
|
||||||
|
_MFNC2,
|
||||||
|
_ADJUST,
|
||||||
|
_MOUSE,
|
||||||
|
_NUMPAD
|
||||||
|
};
|
||||||
|
|
||||||
|
enum ajp10304_keycodes {
|
||||||
|
QWERTY = SAFE_RANGE,
|
||||||
|
MAC,
|
||||||
|
FUNC,
|
||||||
|
MFNC,
|
||||||
|
FUNC2,
|
||||||
|
MFNC2,
|
||||||
|
LOWER,
|
||||||
|
MLWR,
|
||||||
|
RAISE,
|
||||||
|
MRSE,
|
||||||
|
MOUSE,
|
||||||
|
NUMPAD,
|
||||||
|
M_CUSTOM,
|
||||||
|
M_WORD_SEL,
|
||||||
|
M_WORD_SEL_MAC,
|
||||||
|
M_LINE_SEL,
|
||||||
|
M_LINE_SEL_MAC,
|
||||||
|
M_LINE_DEL,
|
||||||
|
M_LINE_DEL_MAC,
|
||||||
|
M_DUP,
|
||||||
|
M_DUP_MAC,
|
||||||
|
M_JOIN,
|
||||||
|
M_JOIN_MAC,
|
||||||
|
M_MODE,
|
||||||
|
M_MODE_MAC
|
||||||
|
};
|
||||||
@@ -0,0 +1,132 @@
|
|||||||
|
Copyright 2020 Alan Pocklington <ajp10304@gmail.com> @ajp10304
|
||||||
|
|
||||||
|
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/>.
|
||||||
|
|
||||||
|
# AJP10304 Custom 40% Layout
|
||||||
|
# For the Planck, Shark, JJ40 and Atreus50
|
||||||
|
|
||||||
|
**Note:** In the tables below where there are two characters on a key,
|
||||||
|
the second is the output when shift is applied.
|
||||||
|
|
||||||
|
**Note:** The below tables assume a UK layout.
|
||||||
|
|
||||||
|
#### Flashing
|
||||||
|
Refer to the README.md of the keyboard you want to flash.
|
||||||
|
|
||||||
|
##### Main Qwerty Layer
|
||||||
|
|
||||||
|
* Tab: when held, operates as shift.
|
||||||
|
* Enter: when held, operates as shift.
|
||||||
|
* MENU: perform right-click
|
||||||
|
|
||||||
|
| | | | | | | | | | | | |
|
||||||
|
| ---- |:----:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| ----:|
|
||||||
|
| Esc | Q | W | E | R | T | Y | U | I | O | P | Bksp |
|
||||||
|
| Tab | A | S | D | F | G | H | J | K | L | ;: | Enter|
|
||||||
|
| Shft | Z | X | C | V | B | N | M | ,< | .> | /? | Shft |
|
||||||
|
| Fn | Ctrl | Alt | GUI |Lower | Bksp |Space |Raise | Shift| MENU | Ctrl | Fn2 |
|
||||||
|
|
||||||
|
##### Function Layer
|
||||||
|
Activated when `fn` held in the above `qwerty` layer.
|
||||||
|
|
||||||
|
| | | | | | | | | | | | |
|
||||||
|
| :---: |:----:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:|
|
||||||
|
| F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 |
|
||||||
|
| 1! | 2" | 3£ | 4$ | 5% | 6^ | 7& | 8* | 9( | 0) | ~ |INSERT|
|
||||||
|
| Shift | \| | `¬ | #~ | * | -_ | =+ | \| | [{ | ]} | '@ |Shift |
|
||||||
|
| Fn | Ctrl | Alt | GUI |Lower | Bksp |Space |Mouse | MENU | Alt | Ctrl | Fn2 |
|
||||||
|
|
||||||
|
##### Lower Layer
|
||||||
|
Activated when `Lower` is held in the above `qwerty` layer.
|
||||||
|
|
||||||
|
* Numbers are along the top row, their shifted counterparts are on row 2.
|
||||||
|
* WrdBks: `backspace` with `ctrl` applied. I.e. delete a word.
|
||||||
|
* WrdDel: `delete` with `ctrl` applied. I.e. forward delete a word.
|
||||||
|
|
||||||
|
| | | | | | | | | | | | |
|
||||||
|
| :---: |:----:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:|
|
||||||
|
| 1! | 2" | 3£ | 4$ | 5% | 6^ | 7& | 8* | 9( | 0) | DEL | Bksp |
|
||||||
|
| ! | " | £ | $ | % | ^ | & | * | ( | ) |WrdDel|WrdBks|
|
||||||
|
| Shift | \| | `¬ | #~ | '@ | -_ | =+ | #~ | [{ | ]} | '@ |Shift |
|
||||||
|
| | | | |Lower | Del |Space | | Next | Vol- | Vol+ | Play |
|
||||||
|
|
||||||
|
##### Raise Layer
|
||||||
|
Activated when `Raise` is held in the above `qwerty` layer.
|
||||||
|
|
||||||
|
* Preferred layer for typing brackets.
|
||||||
|
* Allows for cursor navigation to be used solely with the right hand.
|
||||||
|
* WRDSEL: Select the word where the cursor is.
|
||||||
|
* |< and >|: Apply `ctrl` to `left` and `right` respectively for word jumping.
|
||||||
|
|
||||||
|
| | | | | | | | | | | | |
|
||||||
|
| :---: |:----:| :---:| :---:| :---:| :---:| :---: | :---:| :---:| :---:| :---: | :---:|
|
||||||
|
| ` | |WRDSEL| [ | ] | | | PGUP | HOME |PGDOWN| |PRNTSC|
|
||||||
|
| ` | | | ( | ) | | | HOME | UP | END | |ZOOM +|
|
||||||
|
| | | | { | } | ||<| LEFT | DOWN |RIGHT |>||ZOOM -|
|
||||||
|
| Mouse | | | | | Alt | Enter |Raise | | | | |
|
||||||
|
|
||||||
|
##### Lower + Raise
|
||||||
|
Activated when `Lower` and `Raise` are held together in the above `qwerty` layer.
|
||||||
|
|
||||||
|
* Audio controls in the same position as cursor keys from the `Raise` layer.
|
||||||
|
* ????: Runs a macro for outputting a text string. Do not use this store passwords.
|
||||||
|
* Reset: Enter bootloader for flashing firmware to the keyboard.
|
||||||
|
* CAPS: Toggle caps lock.
|
||||||
|
* Macro functions: Allows recording of macros. To start recording the macro, press either REC1 or REC2.
|
||||||
|
To finish the recording, press STOP. To replay the macro, press either PLAY1 or PLAY2.
|
||||||
|
* MAC: Toggle MAC OS extensions to layers. This allows MLWR to be enabled with LOWER,
|
||||||
|
MRSE with RAISE, MFNC with FUNC and MFNC2 with FUNC2 respectively.
|
||||||
|
|
||||||
|
| | | | | | | | | | | | |
|
||||||
|
| :---: |:----:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:|
|
||||||
|
| ???? | Reset|Qwerty| | | REC1 | REC2 | | | | | Del |
|
||||||
|
| CAPS | | | | | PLAY1|PLAY2 | Mute | Vol+ | Play | | |
|
||||||
|
| MAC | | | | | STOP1|STOP2 | Prev | Vol- | Next | | |
|
||||||
|
| | | | | | | | | DYN | | | |
|
||||||
|
|
||||||
|
##### Function 2 Layer
|
||||||
|
Activated when `fn` held in the above `qwerty` layer.
|
||||||
|
* WRDSEL: Select the word where the cursor is.
|
||||||
|
* LNDEL: Delete the line where the cursor is.
|
||||||
|
* LNSEL: Select the line where the cursor is.
|
||||||
|
* DUP: Duplicate the selected text.
|
||||||
|
* LNJOIN: Join the line where the cursor is with the following line.
|
||||||
|
* MODE: Print either `PC` or `OSX` depending on what layer mode is active.
|
||||||
|
|
||||||
|
| | | | | | | | | | | | |
|
||||||
|
| :---: | :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:|
|
||||||
|
| | |WRDSEL| | | | LNDEL| | | | | |
|
||||||
|
| | | LNSEL| DUP | | | | |LNJOIN| | | |
|
||||||
|
| | UNDO | CUT | COPY | PASTE| | | | | | | MODE |
|
||||||
|
| | | | | | | | | | | | |
|
||||||
|
|
||||||
|
##### Mouse Layer
|
||||||
|
Activated when `fn` and `raise` held together.
|
||||||
|
|
||||||
|
| | | | | | | | | | | | |
|
||||||
|
| :---: | :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:|
|
||||||
|
| ESC | | | | | | | | BTN3 | | | |
|
||||||
|
| ACC0 | ACC1 | ACC2 | | | | | BTN1 | UP | BTN2 | | |
|
||||||
|
| ACC0 | ACC1 | ACC2 | | | | | LEFT | DOWN | RIGHT| | |
|
||||||
|
| | | | | | | | | | | | |
|
||||||
|
|
||||||
|
##### Number Pad Layout
|
||||||
|
Activated when holding `Esc` key.
|
||||||
|
|
||||||
|
| | | | | | | | | | | | |
|
||||||
|
| :---: | :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:|
|
||||||
|
| | | | | | |NMLOCK| 7 | 8 | 9 | / | |
|
||||||
|
| | | | | | | | 4 | 5 | 6 | * | |
|
||||||
|
| | | | | | | | 1 | 2 | 3 | + | |
|
||||||
|
| | | | | | | | 0 | . | , | - | |
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
SRC += ajp10304.c
|
||||||
@@ -0,0 +1,2 @@
|
|||||||
|
secret.h
|
||||||
|
secret.c
|
||||||
@@ -0,0 +1,44 @@
|
|||||||
|
#include "quantum.h"
|
||||||
|
|
||||||
|
enum {
|
||||||
|
MIN,
|
||||||
|
EQL,
|
||||||
|
|
||||||
|
ESC,
|
||||||
|
BSP,
|
||||||
|
DEL,
|
||||||
|
|
||||||
|
TAB,
|
||||||
|
BSL,
|
||||||
|
|
||||||
|
CUT,
|
||||||
|
GRA,
|
||||||
|
};
|
||||||
|
|
||||||
|
const uint16_t PROGMEM min[] = {KC_C, KC_V, COMBO_END};
|
||||||
|
const uint16_t PROGMEM eql[] = {KC_M, KC_COMM, COMBO_END};
|
||||||
|
|
||||||
|
const uint16_t PROGMEM esc[] = {KC_D, KC_F, COMBO_END};
|
||||||
|
const uint16_t PROGMEM bsp[] = {KC_J, KC_K, COMBO_END};
|
||||||
|
const uint16_t PROGMEM del[] = {KC_DOWN, KC_UP, COMBO_END};
|
||||||
|
|
||||||
|
const uint16_t PROGMEM tab[] = {KC_S, KC_F, COMBO_END};
|
||||||
|
const uint16_t PROGMEM bsl[] = {KC_J, KC_L, COMBO_END};
|
||||||
|
|
||||||
|
const uint16_t PROGMEM cut[] = {KC_K, KC_L, COMBO_END};
|
||||||
|
const uint16_t PROGMEM gra[] = {KC_S, KC_D, COMBO_END};
|
||||||
|
|
||||||
|
combo_t key_combos[COMBO_COUNT] = {
|
||||||
|
[MIN] = COMBO(min, KC_MINS),
|
||||||
|
[EQL] = COMBO(eql, KC_EQL),
|
||||||
|
|
||||||
|
[ESC] = COMBO(esc, KC_ESC),
|
||||||
|
[BSP] = COMBO(bsp, KC_BSPC),
|
||||||
|
[DEL] = COMBO(del, KC_DEL),
|
||||||
|
|
||||||
|
[TAB] = COMBO(tab, KC_TAB),
|
||||||
|
[BSL] = COMBO(bsl, KC_BSLS),
|
||||||
|
|
||||||
|
[CUT] = COMBO(cut, KC_QUOT),
|
||||||
|
[GRA] = COMBO(gra, KC_GRAVE),
|
||||||
|
};
|
||||||
@@ -0,0 +1,2 @@
|
|||||||
|
#define COMBO_TERM 200
|
||||||
|
#define COMBO_COUNT 9
|
||||||
@@ -0,0 +1,44 @@
|
|||||||
|
#include "pcoves.h"
|
||||||
|
|
||||||
|
#ifdef RAINBOW_UNICORN_ENABLE
|
||||||
|
#include "rainbowUnicorn.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef UNICODE_ENABLE
|
||||||
|
#include "unicode.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if SECRET_ENABLE
|
||||||
|
#include "secret.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
__attribute__((weak)) void eeconfig_init_keymap(void) {}
|
||||||
|
|
||||||
|
void eeconfig_init_user(void) {
|
||||||
|
#ifdef UNICODE_ENABLE
|
||||||
|
set_unicode_input_mode(UC_LNX);
|
||||||
|
#endif
|
||||||
|
eeconfig_init_keymap();
|
||||||
|
}
|
||||||
|
|
||||||
|
__attribute__((weak)) bool process_record_keymap(uint16_t keycode, keyrecord_t *record) { return true; }
|
||||||
|
|
||||||
|
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
||||||
|
switch (keycode) {
|
||||||
|
case AUTRUCHE:
|
||||||
|
if (record->event.pressed) SEND_STRING("Autruche");
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
return process_record_keymap(keycode, record)
|
||||||
|
#ifdef RAINBOW_UNICORN_ENABLE
|
||||||
|
&& process_record_rainbowUnicorn(keycode, record)
|
||||||
|
#endif
|
||||||
|
#ifdef UNICODE_ENABLE
|
||||||
|
&& process_record_unicode(keycode, record)
|
||||||
|
#endif
|
||||||
|
#if SECRET_ENABLE
|
||||||
|
&& process_record_secret(keycode, record)
|
||||||
|
#endif
|
||||||
|
;
|
||||||
|
}
|
||||||
@@ -0,0 +1,32 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "quantum.h"
|
||||||
|
|
||||||
|
#define SECRET_ENABLE (__has_include("secret.h") && !defined(NO_SECRET))
|
||||||
|
|
||||||
|
enum {
|
||||||
|
AUTRUCHE = SAFE_RANGE,
|
||||||
|
#ifdef RAINBOW_UNICORN_ENABLE
|
||||||
|
RAINBOW_UNICORN_TOGGLE,
|
||||||
|
#endif
|
||||||
|
#ifdef UNICODE_ENABLE
|
||||||
|
EMOTE0,
|
||||||
|
EMOTE1,
|
||||||
|
EMOTE2,
|
||||||
|
EMOTE3,
|
||||||
|
#endif
|
||||||
|
#if SECRET_ENABLE
|
||||||
|
SECRET0,
|
||||||
|
SECRET1,
|
||||||
|
SECRET2,
|
||||||
|
SECRET3,
|
||||||
|
SECRET4,
|
||||||
|
#endif
|
||||||
|
PCOVES_SAFE_RANGE,
|
||||||
|
};
|
||||||
|
|
||||||
|
__attribute__((weak)) void eeconfig_init_keymap(void);
|
||||||
|
void eeconfig_init_user(void);
|
||||||
|
|
||||||
|
__attribute__((weak)) bool process_record_keymap(uint16_t keycode, keyrecord_t *record);
|
||||||
|
bool process_record_user(uint16_t keycode, keyrecord_t *record);
|
||||||
@@ -0,0 +1,42 @@
|
|||||||
|
#include "rainbowUnicorn.h"
|
||||||
|
#include "pcoves.h"
|
||||||
|
|
||||||
|
static struct {
|
||||||
|
bool enabled;
|
||||||
|
uint8_t color;
|
||||||
|
char string[2];
|
||||||
|
uint8_t mods;
|
||||||
|
} state = {false, 0};
|
||||||
|
|
||||||
|
bool process_record_rainbowUnicorn(uint16_t keycode, keyrecord_t* record) {
|
||||||
|
if (keycode == RAINBOW_UNICORN_TOGGLE) {
|
||||||
|
state.enabled ^= true;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!state.enabled) return true;
|
||||||
|
|
||||||
|
switch (keycode) {
|
||||||
|
case KC_A ... KC_Z:
|
||||||
|
case KC_1 ... KC_0:
|
||||||
|
case ALT_T(KC_A)... ALT_T(KC_Z):
|
||||||
|
case CTL_T(KC_A)... CTL_T(KC_Z):
|
||||||
|
case GUI_T(KC_A)... GUI_T(KC_Z):
|
||||||
|
case SFT_T(KC_A)... SFT_T(KC_Z):
|
||||||
|
if (record->event.pressed) {
|
||||||
|
state.mods = get_mods();
|
||||||
|
clear_mods();
|
||||||
|
|
||||||
|
tap_code16(C(KC_C));
|
||||||
|
|
||||||
|
itoa(state.color + 3, state.string, 10);
|
||||||
|
send_string(state.string);
|
||||||
|
|
||||||
|
set_mods(state.mods);
|
||||||
|
} else {
|
||||||
|
state.color = (state.color + 1) % 11;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "quantum.h"
|
||||||
|
|
||||||
|
__attribute__((weak)) bool process_record_rainbowUnicorn(uint16_t keycode, keyrecord_t* keyrecord);
|
||||||
@@ -0,0 +1,14 @@
|
|||||||
|
Copyright 2020 @pcoves
|
||||||
|
|
||||||
|
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/>.
|
||||||
@@ -0,0 +1,30 @@
|
|||||||
|
SRC += pcoves.c
|
||||||
|
|
||||||
|
RAINBOW_UNICORN_ENABLE ?= no
|
||||||
|
ifneq ($(strip $(RAINBOW_UNICORN_ENABLE)), no)
|
||||||
|
SRC += rainbowUnicorn.c
|
||||||
|
OPT_DEFS += -DRAINBOW_UNICORN_ENABLE
|
||||||
|
endif
|
||||||
|
|
||||||
|
ifeq ($(strip $(TAP_DANCE_ENABLE)), yes)
|
||||||
|
SRC += tapDance.c
|
||||||
|
endif
|
||||||
|
|
||||||
|
ifeq ($(strip $(COMBO_ENABLE)), yes)
|
||||||
|
SRC += combo.c
|
||||||
|
endif
|
||||||
|
|
||||||
|
ifeq ($(strip $(UNICODE_ENABLE)), yes)
|
||||||
|
SRC += unicode.c
|
||||||
|
OPT_DEFS += -DUNICODE_ENABLE
|
||||||
|
endif
|
||||||
|
|
||||||
|
ifneq ($(strip $(NO_SECRET)), yes)
|
||||||
|
ifneq ("$(wildcard $(USER_PATH)/secret.c)","")
|
||||||
|
SRC += secret.c
|
||||||
|
else
|
||||||
|
OPT_DEFS += -DNO_SECRET
|
||||||
|
endif
|
||||||
|
else
|
||||||
|
OPT_DEFS += -DNO_SECRET
|
||||||
|
endif
|
||||||
@@ -0,0 +1,127 @@
|
|||||||
|
#include "tapDance.h"
|
||||||
|
|
||||||
|
#include "quantum.h"
|
||||||
|
|
||||||
|
void left(qk_tap_dance_state_t* state, void* user_data) {
|
||||||
|
switch (state->count) {
|
||||||
|
case 1:
|
||||||
|
if (state->pressed)
|
||||||
|
tap_code16(S(KC_LBRACKET));
|
||||||
|
else
|
||||||
|
tap_code16(S(KC_9));
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
if (state->pressed)
|
||||||
|
tap_code16(S(KC_COMM));
|
||||||
|
else
|
||||||
|
tap_code(KC_LBRACKET);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
reset_tap_dance(state);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void right(qk_tap_dance_state_t* state, void* user_data) {
|
||||||
|
switch (state->count) {
|
||||||
|
case 1:
|
||||||
|
if (state->pressed)
|
||||||
|
tap_code16(S(KC_RBRACKET));
|
||||||
|
else
|
||||||
|
tap_code16(S(KC_0));
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
if (state->pressed)
|
||||||
|
tap_code16(S(KC_DOT));
|
||||||
|
else
|
||||||
|
tap_code(KC_RBRACKET);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
reset_tap_dance(state);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
enum { REST, HOLD1, HOLD2, HOLD3 };
|
||||||
|
|
||||||
|
static int Alt = REST;
|
||||||
|
void altFinish(qk_tap_dance_state_t* state, void* user_data) {
|
||||||
|
switch (state->count) {
|
||||||
|
case 1:
|
||||||
|
if (state->pressed) {
|
||||||
|
register_code(KC_LALT);
|
||||||
|
Alt = HOLD1;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
if (state->pressed) {
|
||||||
|
register_code(KC_RALT);
|
||||||
|
Alt = HOLD2;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 3:
|
||||||
|
if (state->pressed) {
|
||||||
|
register_code(KC_RALT);
|
||||||
|
register_code(KC_RSHIFT);
|
||||||
|
Alt = HOLD3;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
reset_tap_dance(state);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void altReset(qk_tap_dance_state_t* state, void* user_data) {
|
||||||
|
switch (Alt) {
|
||||||
|
case HOLD1:
|
||||||
|
unregister_code(KC_LALT);
|
||||||
|
break;
|
||||||
|
case HOLD2:
|
||||||
|
unregister_code(KC_RALT);
|
||||||
|
break;
|
||||||
|
case HOLD3:
|
||||||
|
unregister_code(KC_RSHIFT);
|
||||||
|
unregister_code(KC_RALT);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
Alt = REST;
|
||||||
|
}
|
||||||
|
|
||||||
|
static int Ctrl = REST;
|
||||||
|
void ctrlFinish(qk_tap_dance_state_t* state, void* user_data) {
|
||||||
|
switch (state->count) {
|
||||||
|
case 1:
|
||||||
|
if (state->pressed) {
|
||||||
|
register_code(KC_LCTL);
|
||||||
|
Ctrl = HOLD1;
|
||||||
|
} else {
|
||||||
|
tap_code(KC_ESC);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
if (state->pressed) {
|
||||||
|
register_code(KC_LGUI);
|
||||||
|
Ctrl = HOLD2;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
reset_tap_dance(state);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void ctrlReset(qk_tap_dance_state_t* state, void* user_data) {
|
||||||
|
switch (Ctrl) {
|
||||||
|
case HOLD1:
|
||||||
|
unregister_code(KC_LCTL);
|
||||||
|
break;
|
||||||
|
case HOLD2:
|
||||||
|
unregister_code(KC_LGUI);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
Ctrl = REST;
|
||||||
|
}
|
||||||
|
|
||||||
|
qk_tap_dance_action_t tap_dance_actions[] = {
|
||||||
|
[ALT] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, altFinish, altReset),
|
||||||
|
[CTRL] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, ctrlFinish, ctrlReset),
|
||||||
|
[LEFT] = ACTION_TAP_DANCE_FN(left),
|
||||||
|
[RIGHT] = ACTION_TAP_DANCE_FN(right),
|
||||||
|
};
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
enum {
|
||||||
|
ALT,
|
||||||
|
CTRL,
|
||||||
|
LEFT,
|
||||||
|
RIGHT,
|
||||||
|
};
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
#include "unicode.h"
|
||||||
|
#include "pcoves.h"
|
||||||
|
|
||||||
|
bool process_record_unicode(uint16_t keycode, keyrecord_t *record) {
|
||||||
|
switch (keycode) {
|
||||||
|
case EMOTE0:
|
||||||
|
if (record->event.pressed) send_unicode_string("(╯°□°)╯︵┻━┻");
|
||||||
|
return false;
|
||||||
|
case EMOTE1:
|
||||||
|
if (record->event.pressed) send_unicode_string("(ヘ・_・)ヘ┳━┳");
|
||||||
|
return false;
|
||||||
|
case EMOTE2:
|
||||||
|
if (record->event.pressed) send_unicode_string("¯\\_(ツ)_/¯");
|
||||||
|
return false;
|
||||||
|
case EMOTE3:
|
||||||
|
if (record->event.pressed) send_unicode_string("ಠ_ಠ");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "quantum.h"
|
||||||
|
|
||||||
|
__attribute__((weak)) bool process_record_unicode(uint16_t keycode, keyrecord_t *record);
|
||||||
Reference in new issue
Block a user