mirror of
https://github.com/qmk/qmk_firmware.git
synced 2025-09-10 17:15:43 +00:00
Compare commits
18 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
2eb6cb0dfd | ||
|
|
95c5c11d0b | ||
|
|
b6a09502c6 | ||
|
|
1962135418 | ||
|
|
d79be051dd | ||
|
|
194bc7a7e1 | ||
|
|
fec4283022 | ||
|
|
17af712b7c | ||
|
|
712ded1f2f | ||
|
|
c67e304593 | ||
|
|
8c80475fcc | ||
|
|
3e18bb914c | ||
|
|
4434649c2f | ||
|
|
c6c94eeabc | ||
|
|
2c201ab9ad | ||
|
|
e5b10079cf | ||
|
|
854d46f833 | ||
|
|
bdfdc506da |
@@ -90,13 +90,15 @@ Unicode input in QMK works by inputting a sequence of characters to the OS, sort
|
||||
|
||||
The following input modes are available:
|
||||
|
||||
* **`UC_OSX`**: macOS built-in Unicode hex input. Supports code points up to `0xFFFF` (`0x10FFFF` with Unicode Map).
|
||||
* **`UC_MAC`**: macOS built-in Unicode hex input. Supports code points up to `0xFFFF` (`0x10FFFF` with Unicode Map).
|
||||
|
||||
To enable, go to _System Preferences > Keyboard > Input Sources_, add _Unicode Hex Input_ to the list (it's under _Other_), then activate it from the input dropdown in the Menu Bar.
|
||||
By default, this mode uses the left Option key (`KC_LALT`) for Unicode input, but this can be changed by defining [`UNICODE_KEY_OSX`](#input-key-configuration) with another keycode.
|
||||
By default, this mode uses the left Option key (`KC_LALT`) for Unicode input, but this can be changed by defining [`UNICODE_KEY_MAC`](#input-key-configuration) with another keycode.
|
||||
|
||||
!> Using the _Unicode Hex Input_ input source may disable some Option based shortcuts, such as Option + Left Arrow and Option + Right Arrow.
|
||||
|
||||
!> `UC_OSX` is a deprecated alias of `UC_MAC` that will be removed in a future version of QMK.
|
||||
|
||||
* **`UC_LNX`**: Linux built-in IBus Unicode input. Supports code points up to `0x10FFFF` (all possible code points).
|
||||
|
||||
Enabled by default and works almost anywhere on IBus-enabled distros. Without IBus, this mode works under GTK apps, but rarely anywhere else.
|
||||
@@ -124,7 +126,7 @@ You can switch the input mode at any time by using one of the following keycodes
|
||||
|----------------------|---------|------------|--------------------------------------------------------------|
|
||||
|`UNICODE_MODE_FORWARD`|`UC_MOD` |Next in list|[Cycle](#input-mode-cycling) through selected modes |
|
||||
|`UNICODE_MODE_REVERSE`|`UC_RMOD`|Prev in list|[Cycle](#input-mode-cycling) through selected modes in reverse|
|
||||
|`UNICODE_MODE_OSX` |`UC_M_OS`|`UC_OSX` |Switch to macOS input |
|
||||
|`UNICODE_MODE_MAC` |`UC_M_MA`|`UC_MAC` |Switch to macOS input |
|
||||
|`UNICODE_MODE_LNX` |`UC_M_LN`|`UC_LNX` |Switch to Linux input |
|
||||
|`UNICODE_MODE_WIN` |`UC_M_WI`|`UC_WIN` |Switch to Windows input |
|
||||
|`UNICODE_MODE_BSD` |`UC_M_BS`|`UC_BSD` |Switch to BSD input (not implemented) |
|
||||
@@ -145,9 +147,9 @@ If you have the [Audio feature](feature_audio.md) enabled on the board, you can
|
||||
For instance, you can add these definitions to your `config.h` file:
|
||||
|
||||
```c
|
||||
#define UNICODE_SONG_OSX COIN_SOUND
|
||||
#define UNICODE_SONG_MAC AUDIO_ON_SOUND
|
||||
#define UNICODE_SONG_LNX UNICODE_LINUX
|
||||
#define UNICODE_SONG_BSD MARIO_GAMEOVER
|
||||
#define UNICODE_SONG_BSD TERMINAL_SOUND
|
||||
#define UNICODE_SONG_WIN UNICODE_WINDOWS
|
||||
#define UNICODE_SONG_WINC UNICODE_WINDOWS
|
||||
```
|
||||
@@ -171,7 +173,7 @@ You can customize the keys used to trigger Unicode input for macOS, Linux and Wi
|
||||
|
||||
|Define |Type |Default |Example |
|
||||
|------------------|----------|------------------|-------------------------------------------|
|
||||
|`UNICODE_KEY_OSX` |`uint8_t` |`KC_LALT` |`#define UNICODE_KEY_OSX KC_RALT` |
|
||||
|`UNICODE_KEY_MAC` |`uint8_t` |`KC_LALT` |`#define UNICODE_KEY_MAC KC_RALT` |
|
||||
|`UNICODE_KEY_LNX` |`uint16_t`|`LCTL(LSFT(KC_U))`|`#define UNICODE_KEY_LNX LCTL(LSFT(KC_E))`|
|
||||
|`UNICODE_KEY_WINC`|`uint8_t` |`KC_RALT` |`#define UNICODE_KEY_WINC KC_RGUI` |
|
||||
|
||||
@@ -180,7 +182,7 @@ You can customize the keys used to trigger Unicode input for macOS, Linux and Wi
|
||||
You can choose which input modes are available for cycling through. By default, this is disabled. If you want to enable it, limiting it to just the modes you use makes sense. Note that the values in the list are comma-delimited.
|
||||
|
||||
```c
|
||||
#define UNICODE_SELECTED_MODES UC_OSX, UC_LNX, UC_WIN, UC_WINC
|
||||
#define UNICODE_SELECTED_MODES UC_MAC, UC_LNX, UC_WIN, UC_WINC
|
||||
```
|
||||
|
||||
You can cycle through the selected modes by using the `UC_MOD`/`UC_RMOD` keycodes, or by calling `cycle_unicode_input_mode(offset)` in your code (`offset` is how many modes to move forward by, so +1 corresponds to `UC_MOD`).
|
||||
|
||||
189
docs/ja/hardware_avr.md
Normal file
189
docs/ja/hardware_avr.md
Normal file
@@ -0,0 +1,189 @@
|
||||
# AVR マイコンを使ったキーボード
|
||||
|
||||
<!---
|
||||
grep --no-filename "^[ ]*git diff" docs/ja/*.md | sh
|
||||
original document: c9e3fa6f7:docs/hardware_avr.md
|
||||
git diff c9e3fa6f7 HEAD -- docs/hardware_avr.md | cat
|
||||
-->
|
||||
|
||||
このページでは QMK における AVR マイコンのサポートについて説明します。AVR マイコンには、Atmel 社製の atmega32u4、atmega32u2、at90usb1286 やその他のマイコンを含みます。AVR マイコンは、簡単に動かせるよう設計された8ビットの MCU です。キーボードでよく使用される AVR マイコンには USB 機能や大きなキーボードマトリックスのためのたくさんの GPIO を搭載しています。これらは、現在、キーボードで使われる最も一般的な MCU です。
|
||||
|
||||
まだ読んでない場合は、[キーボードガイドライン](ja/hardware_keyboard_guidelines.md) を読んで、キーボードを QMK にどのように適合させるかを把握する必要があります。
|
||||
|
||||
## AVR を使用したキーボードを QMK に追加する
|
||||
|
||||
QMK には AVR を使ったキーボードでの作業を簡略化するための機能が多数あります。大体のキーボードでは1行もコードを書く必要がありません。まずはじめに、`util/new_keyboard.sh` スクリプトを実行します。
|
||||
|
||||
```
|
||||
$ ./util/new_keyboard.sh
|
||||
Generating a new QMK keyboard directory
|
||||
|
||||
Keyboard Name: mycoolkb
|
||||
Keyboard Type [avr]:
|
||||
Your Name [John Smith]:
|
||||
|
||||
Copying base template files... done
|
||||
Copying avr template files... done
|
||||
Renaming keyboard files... done
|
||||
Replacing %KEYBOARD% with mycoolkb... done
|
||||
Replacing %YOUR_NAME% with John Smith... done
|
||||
|
||||
Created a new keyboard called mycoolkb.
|
||||
|
||||
To start working on things, cd into keyboards/mycoolkb,
|
||||
or open the directory in your favourite text editor.
|
||||
```
|
||||
|
||||
これにより、新しいキーボードをサポートするために必要なすべてのファイルが作成され、デフォルト値で設定が入力されます。あとはあなたのキーボード用にカスタマイズするだけです。
|
||||
|
||||
## `readme.md`
|
||||
|
||||
このファイルではキーボードに関する説明を記述します。[キーボード Readme テンプレート](ja/documentation_templates.md#keyboard-readmemd-template)に従って `readme.md` を記入して下さい。`readme.md` の上部に画像を配置することをお勧めします。画像は [Imgur](http://imgur.com) のような外部サービスを利用してください。
|
||||
|
||||
## `<keyboard>.c`
|
||||
|
||||
このファイルではキーボード上で実行される全てのカスタマイズされたロジックを記述します。多くのキーボードの場合、何も書く必要はありません。
|
||||
[機能のカスタマイズ](ja/custom_quantum_functions.md)で、カスタマイズされたロジックの記述方法を詳しく学ぶことが出来ます。
|
||||
|
||||
## `<keyboard>.h`
|
||||
|
||||
このファイルでは、[レイアウト](ja/feature_layouts.md)を定義します。最低限、以下のような `#define LAYOUT` を記述する必要があります。
|
||||
|
||||
```c
|
||||
#define LAYOUT( \
|
||||
k00, k01, k02, \
|
||||
k10, k11 \
|
||||
) { \
|
||||
{ k00, k01, k02 }, \
|
||||
{ k10, KC_NO, k11 }, \
|
||||
}
|
||||
```
|
||||
|
||||
`LAYOUT` マクロの前半部ではキーの物理的な配置を定義します。後半部ではスイッチが接続されるマトリックスを定義します。これによってマトリックス配線の順とは異なるキーを物理的に配置できます。
|
||||
|
||||
それぞれの `k__` 変数はユニークでなければいけません。通常は `k<row><col>` というフォーマットに従って記述されます。
|
||||
|
||||
物理マトリックス(後半部)では、`MATRIX_ROWS` に等しい行数が必要であり、各行には正確に `MATRIX_COLS` と等しい数の要素が含まれていなければいけません。物理キーが存在しない場合は、`KC_NO` を使用して空白を埋める事ができます。
|
||||
|
||||
## `config.h`
|
||||
|
||||
`config.h` ファイルには、ハードウェアや機能の設定を記述します。このファイルで設定できるオプションは列挙しきれないほどたくさんあります。利用できるオプションの概要は[設定オプション](ja/config_options.md)を参照して下さい。
|
||||
|
||||
### ハードウェアの設定
|
||||
|
||||
`config.h` の先頭には USB に関する設定があります。これらはキーボードが OS からどのように見えるかを制御しています。変更する理由がない場合は、`VENDOR_ID` を `0xFEED` のままにしておく必要があります。`PRODUCT_ID` にはまだ使用されていない番号を選ばなければいけません。
|
||||
|
||||
`MANUFACTURER`、 `PRODUCT`、 `DESCRIPTION` をキーボードにあった設定に変更します。
|
||||
|
||||
```c
|
||||
#define VENDOR_ID 0xFEED
|
||||
#define PRODUCT_ID 0x6060
|
||||
#define DEVICE_VER 0x0001
|
||||
#define MANUFACTURER You
|
||||
#define PRODUCT my_awesome_keyboard
|
||||
#define DESCRIPTION A custom keyboard
|
||||
```
|
||||
|
||||
?> Windows や macOS では、`MANUFACTURER` と `PRODUCT` が USBデバイスのリストに表示されます。Linux 上の `lsusb` では、代わりにデフォルトで [USB ID Repository](http://www.linux-usb.org/usb-ids.html) によって維持されているリストからこれらを取得します。`lsusb -v` を使用するとデバイスから示された値を表示します。また、接続したときのカーネルログにも表示されます。
|
||||
|
||||
### キーボードマトリックスの設定
|
||||
|
||||
`config.h` ファイルの次のセクションではキーボードのマトリックスを扱います。最初に設定するのはマトリックスのサイズです。これは通常、常にではありませんが、物理キー配置と同じ数の行・列になります。
|
||||
|
||||
```c
|
||||
#define MATRIX_ROWS 2
|
||||
#define MATRIX_COLS 3
|
||||
```
|
||||
|
||||
マトリックスのサイズを定義したら、MCU のどのピンを行と列に接続するかを定義します。そのためにはピンの名前を指定するだけです。
|
||||
|
||||
```c
|
||||
#define MATRIX_ROW_PINS { D0, D5 }
|
||||
#define MATRIX_COL_PINS { F1, F0, B0 }
|
||||
#define UNUSED_PINS
|
||||
```
|
||||
|
||||
|
||||
`MATRIX_ROW_PINS` の要素の数は `MATRIX_ROWS` に定義した数と同じでなければいけません。同様に `MATRIX_COL_PINS` の要素の数も `MATRIX_COLS` と等しい必要があります。`UNUSED_PINS` は定義しなくても問題ありませんがどのピンが空いているのか記録しておきたい場合は定義できます。
|
||||
|
||||
最後にダイオードの方向を定義します。これには `COL2ROW` か `ROW2COL` を設定します。
|
||||
|
||||
```c
|
||||
#define DIODE_DIRECTION COL2ROW
|
||||
```
|
||||
|
||||
#### ダイレクトピンマトリックス
|
||||
|
||||
各スイッチが、列と行のピンを共有する代わりに、それぞれ個別のピンとグランドに接続されているキーボードを定義するには、`DIRECT_PINS` を使用します。マッピング定義では、列と行の各スイッチのピンを左から右の順に定義します。`MATRIX_ROWS` と `MATRIX_COLS` 内のサイズに準拠する必要があり、空白を埋めるには `NO_PIN` を使用します。これによって `DIODE_DIRECTION`、`MATRIX_ROW_PINS`、`MATRIX_COL_PINS` の動作を上書きします。
|
||||
|
||||
```c
|
||||
// #define MATRIX_ROW_PINS { D0, D5 }
|
||||
// #define MATRIX_COL_PINS { F1, F0, B0 }
|
||||
#define DIRECT_PINS { \
|
||||
{ F1, E6, B0, B2, B3 }, \
|
||||
{ F5, F0, B1, B7, D2 }, \
|
||||
{ F6, F7, C7, D5, D3 }, \
|
||||
{ B5, C6, B6, NO_PIN, NO_PIN } \
|
||||
}
|
||||
#define UNUSED_PINS
|
||||
|
||||
/* COL2ROW, ROW2COL */
|
||||
//#define DIODE_DIRECTION
|
||||
```
|
||||
|
||||
### バックライトの設定
|
||||
|
||||
QMK では GPIO ピンでのバックライト制御をサポートしています。これらの設定を選択して MCU から制御できます。詳しくは[バックライト](ja/feature_backlight.md)を参照して下さい。
|
||||
|
||||
```c
|
||||
#define BACKLIGHT_PIN B7
|
||||
#define BACKLIGHT_LEVELS 3
|
||||
#define BACKLIGHT_BREATHING
|
||||
#define BREATHING_PERIOD 6
|
||||
```
|
||||
|
||||
### その他の設定オプション
|
||||
|
||||
`config.h` で設定・調整できる機能はたくさんあります。詳しくは[設定オプション](ja/config_options.md)を参照して下さい。
|
||||
|
||||
## `rules.mk`
|
||||
|
||||
`rules.mk` ファイルを使用して、ビルドするファイルや有効にする機能をQMKへ指示します。atmega32u4 を使っている場合、これらのオプションはデフォルトのままにしておくことが出来ます。他の MCU を使用している場合はいくつかのパラメータを調整する必要があります。
|
||||
|
||||
### MCU オプション
|
||||
|
||||
このオプションではビルドする CPU をビルドシステムに指示します。これらの設定を変更する場合は非常に注意して下さい。キーボードを操作不能にしてしまう可能性があります。
|
||||
|
||||
```make
|
||||
MCU = atmega32u4
|
||||
F_CPU = 16000000
|
||||
ARCH = AVR8
|
||||
F_USB = $(F_CPU)
|
||||
OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT
|
||||
```
|
||||
|
||||
### ブートローダー
|
||||
|
||||
ブートローダーは MCU に保存されているプログラムをアップグレードするための特別なセクションです。キーボードのレスキューパーティションのようなものだと考えて下さい。
|
||||
|
||||
#### Teensy Bootloader の例
|
||||
|
||||
```make
|
||||
BOOTLOADER = halfkay
|
||||
```
|
||||
|
||||
#### Atmel DFU Loader の例
|
||||
|
||||
```make
|
||||
BOOTLOADER = atmel-dfu
|
||||
```
|
||||
|
||||
#### Pro Micro Bootloader の例
|
||||
|
||||
```make
|
||||
BOOTLOADER = caterina
|
||||
```
|
||||
|
||||
### ビルドオプション
|
||||
|
||||
`rules.mk` にはオン・オフできるたくさんの機能があります。詳細なリストと説明は[設定オプション](ja/config_options.md#feature-options)を参照して下さい。
|
||||
45
docs/ja/hardware_drivers.md
Normal file
45
docs/ja/hardware_drivers.md
Normal file
@@ -0,0 +1,45 @@
|
||||
# QMK ハードウェアドライバー
|
||||
|
||||
<!---
|
||||
grep --no-filename "^[ ]*git diff" docs/ja/*.md | sh
|
||||
original document: c9e3fa6f7:docs/hardware_drivers.md
|
||||
git diff c9e3fa6f7 HEAD -- docs/hardware_drivers.md | cat
|
||||
-->
|
||||
|
||||
QMK はたくさんの異なるハードウェアで使われています。最も一般的な MCU とマトリックス構成をサポートしていますが、キーボードへ他のハードウェアを追加し制御するためのドライバーもいくつか用意されています。例えば、マウスやポインティングデバイス、分割キーボード用の IO エキスパンダ、Bluetooth モジュール、LCD、OLED、TFT 液晶などがあります。
|
||||
|
||||
<!-- FIXME: This should talk about how drivers are integrated into QMK and how you can add your own driver.
|
||||
|
||||
# Driver System Overview
|
||||
|
||||
-->
|
||||
|
||||
# 使用できるドライバー
|
||||
|
||||
## ProMicro (AVR のみ)
|
||||
|
||||
ProMicro のピンを AVR の名前ではなく、Arduino の名前で指定できます。この部分はより詳しく文書化される必要があります。もしこれを使用したい場合にコードを読んでも分からない場合、[issue を開く](https://github.com/qmk/qmk_firmware/issues/new)を通して助けることができるかもしれません。
|
||||
|
||||
## SSD1306 OLED ドライバー
|
||||
|
||||
SSD1306 ベースの OLED ディスプレイのサポート。詳しくは[OLED ドライバ](ja/feature_oled_driver.md)を参照して下さい。
|
||||
|
||||
## uGFX
|
||||
|
||||
QMK 内で uGFX を使用して、キャラクタ LCD やグラフィック LCD、LED アレイ、OLED ディスプレイ、TFT 液晶や他のディスプレイを制御できます。この部分はより詳しく文書化される必要があります。もしこれを使用したい場合にコードを読んでも分からない場合、[issue を開く](https://github.com/qmk/qmk_firmware/issues/new)を通して助けることができるかもしれません。
|
||||
|
||||
## WS2812
|
||||
|
||||
WS2811/WS2812{a,b,c} LED のサポート。 詳しくは [RGB ライト](ja/feature_rgblight.md)を参照して下さい。
|
||||
|
||||
## IS31FL3731
|
||||
|
||||
最大2つの LED ドライバーのサポート。各ドライバーは、I2C を使って個別に LED を制御する2つのチャーリープレクスマトリックスを実装しています。最大144個の単色 LED か32個の RGB LED を使用できます。ドライバーの設定方法の詳細は[RGB マトリックス](ja/feature_rgb_matrix.md)を参照して下さい。
|
||||
|
||||
## IS31FL3733
|
||||
|
||||
拡張の余地がある最大1つの LED ドライバーのサポート。各ドライバーは192個の単色 LED か64個の RGB LED を制御できます。ドライバーの設定方法の詳細は [RGB マトリックス](ja/feature_rgb_matrix.md)を参照して下さい。
|
||||
|
||||
## 24xx シリーズ 外部 I2C EEPROM
|
||||
|
||||
オンチップ EEPROM の代わりに使用する I2C ベースの外部 EEPROM のサポート。ドライバーの設定方法の詳細は [EEPROM ドライバー](ja/eeprom_driver.md)を参照して下さい。
|
||||
155
docs/ja/hardware_keyboard_guidelines.md
Normal file
155
docs/ja/hardware_keyboard_guidelines.md
Normal file
@@ -0,0 +1,155 @@
|
||||
# QMK キーボードガイドライン
|
||||
|
||||
<!---
|
||||
grep --no-filename "^[ ]*git diff" docs/ja/*.md | sh
|
||||
original document: c9e3fa6f7:docs/hardware_keyboard_guidelines.md
|
||||
git diff c9e3fa6f7 HEAD -- docs/hardware_keyboard_guidelines.md | cat
|
||||
-->
|
||||
|
||||
QMK は開始以来、コミュニティにおけるキーボードの作成や保守に貢献しているあなたのような人たちのおかげで飛躍的に成長しました。私たちが成長するにつれて、うまくやるためのいくつかのパターンを発見しました。他の人たちがあなたの苦労の恩恵を受けやすくするため、それにあわせてもらえるようお願いします。
|
||||
|
||||
## あなたのキーボード/プロジェクトの名前を決める
|
||||
|
||||
キーボードの名前は全て小文字で、アルファベット、数字、アンダースコア(`_`)のみで構成されています。アンダースコア(`_`)で始めてはいけません。スラッシュ(`/`)はサブフォルダの区切り文字として使用されます。
|
||||
|
||||
`test`、`keyboard`、`all` はmakeコマンド用に予約されており、キーボードまたはサブフォルダ名として使用することは出来ません。
|
||||
|
||||
正しい例:
|
||||
|
||||
* `412_64`
|
||||
* `chimera_ortho`
|
||||
* `clueboard/66/rev3`
|
||||
* `planck`
|
||||
* `v60_type_r`
|
||||
|
||||
## サブフォルダ
|
||||
|
||||
QMK では、まとめるためや同じキーボードのリビジョン間でコードを共有するためにサブフォルダを使用します。フォルダは最大4階層までネストできます。
|
||||
|
||||
qmk_firmware/keyboards/top_folder/sub_1/sub_2/sub_3/sub_4
|
||||
|
||||
サブフォルダ内に `rules.mk` ファイルが存在するとコンパイル可能なキーボードとして見なされます。QMK Configurator から使用できるようになり、`make all` でテストされます。同じメーカーのキーボードをまとめるためにフォルダを使用している場合は `rules.mk` ファイルを置いてはいけません。
|
||||
|
||||
例:
|
||||
|
||||
Clueboard は、サブフォルダをまとめるためとキーボードのリビジョン管理の両方のために使用しています。
|
||||
|
||||
* [`qmk_firmware`](https://github.com/qmk/qmk_firmware/tree/master)
|
||||
* [`keyboards`](https://github.com/qmk/qmk_firmware/tree/master/keyboards)
|
||||
* [`clueboard`](https://github.com/qmk/qmk_firmware/tree/master/keyboards/clueboard) ← これはまとめるためのフォルダです。 `rules.mk` ファイルはありません。
|
||||
* [`60`](https://github.com/qmk/qmk_firmware/tree/master/keyboards/clueboard/60) ← これはコンパイルできるキーボードです。`rules.mk` が存在します。
|
||||
* [`66`](https://github.com/qmk/qmk_firmware/tree/master/keyboards/clueboard/66) ← これもコンパイルできるキーボードです。 デフォルトのリビジョンとして `DEFAULT_FOLDER` に `rev3` を指定しています。
|
||||
* [`rev1`](https://github.com/qmk/qmk_firmware/tree/master/keyboards/clueboard/66/rev1) ← コンパイル可能: `make clueboard/66/rev1`
|
||||
* [`rev2`](https://github.com/qmk/qmk_firmware/tree/master/keyboards/clueboard/66/rev2) ← コンパイル可能: `make clueboard/66/rev2`
|
||||
* [`rev3`](https://github.com/qmk/qmk_firmware/tree/master/keyboards/clueboard/66/rev3) ← コンパイル可能: `make clueboard/66/rev3` もしくは `make clueboard/66`
|
||||
|
||||
## キーボードのフォルダ構成
|
||||
|
||||
キーボードは `qmk_firmware/keyboards/` 内にあり、前のセクションで説明したようにフォルダ名はキーボードの名前にする必要があります。このフォルダ内にはいくつかのファイルがあります。
|
||||
|
||||
* `readme.md`
|
||||
* `info.json`
|
||||
* `config.h`
|
||||
* `rules.mk`
|
||||
* `<keyboard_name>.c`
|
||||
* `<keyboard_name>.h`
|
||||
|
||||
### `readme.md`
|
||||
|
||||
全てのプロジェクトにはどのようなキーボードなのか、誰が設計したか、どこで入手できるかを説明する `readme.md` ファイルが必要です。もしあれば、メーカーの Web サイトなどの詳しい情報へのリンクも含める必要があります。[キーボード readme テンプレート](ja/documentation_templates.md#keyboard-readmemd-template)を参考にして下さい。
|
||||
|
||||
### `info.json`
|
||||
|
||||
このファイルは [QMK API](https://github.com/qmk/qmk_api) から使用されます。[QMK Configurator](https://config.qmk.fm/) が必要とするキーボードの情報が含まれています。ここでメタデータを設定することもできます。詳しくは [info.json 形式](ja/reference_info_json.md) を参照して下さい。
|
||||
|
||||
### `config.h`
|
||||
|
||||
全てのプロジェクトには、マトリックスサイズ、製品名、USB VID/PID、説明、その他の設定などが含まれた `config.h` ファイルが必要です。一般に、このファイルを使用して常に機能するキーボードの重要な情報やデフォルトを設定します。
|
||||
|
||||
### `rules.mk`
|
||||
|
||||
このファイルが存在するということは、フォルダがキーボードであり、`make` コマンドで使用できることを意味します。ここでキーボードのビルド環境を構築し、デフォルトの機能を設定します。
|
||||
|
||||
### `<keyboard_name.c>`
|
||||
|
||||
ここではキーボードのカスタマイズされたコードを記述します。通常、初期化してキーボードのハードウェアを制御するコードを記述します。キーボードが LED やスピーカー、その他付属ハードウェアのないキーマトリックスのみで構成されている場合は空にできます。
|
||||
|
||||
通常、以下の関数がこのファイルで定義されます。
|
||||
|
||||
* `void matrix_init_kb(void)`
|
||||
* `void matrix_scan_kb(void)`
|
||||
* `bool process_record_kb(uint16_t keycode, keyrecord_t *record)`
|
||||
* `void led_set_kb(uint8_t usb_led)`
|
||||
|
||||
### `<keyboard_name.h>`
|
||||
|
||||
このファイルはキーボードのマトリックスを定義するために使用されます。配列をキーボードの物理的なスイッチマトリックスに変換する C マクロを最低限1つ定義する必要があります。複数のレイアウトでキーボードを構築出来る場合は、追加のマクロを定義しなければいけません。
|
||||
|
||||
レイアウトが1つしかない場合は、このマクロは `LAYOUT` とします。
|
||||
|
||||
複数のレイアウトを定義する場合、物理的に構成することが出来なくとも、マトリックス上で全てのスイッチ位置をサポートする `LAYOUT_all` という名前の基本となるレイアウトが必要です。これは `default` キーマップで使用すべきマクロです。次に、他のレイアウトマクロを使用する `default_<layout>` といった追加のキーマップを用意します。これによって、他の人が定義されたレイアウトを使いやすくなります。
|
||||
|
||||
レイアウトマクロの名前は全て小文字で、先頭の `LAYOUT` だけ大文字です。
|
||||
|
||||
例として、ANSI と ISO をサポートする 60% PCB がある場合、以下のようにレイアウトとキーマップを定義出来ます。
|
||||
|
||||
| レイアウト名 | キーマップ名 | 説明 |
|
||||
|-------------|-------------|-------------|
|
||||
| LAYOUT_all | default | ISO と ANSI のどちらもサポートしたレイアウト |
|
||||
| LAYOUT_ansi | default_ansi | ANSI レイアウト |
|
||||
| LAYOUT_iso | default_iso | ISO レイアウト |
|
||||
|
||||
## 画像/ハードウェアのファイル
|
||||
|
||||
リポジトリのサイズを小さく保つために、いくつかの例外を除いて、どの形式のバイナリファイルも受け入れないようになりました。外部の場所(<https://imgur.com>など)でホストして、`readme.md` でリンクすることをおすすめします。
|
||||
|
||||
ハードウェアのファイル(プレートやケース、PCB など)は [qmk.fm リポジトリ](https://github.com/qmk/qmk.fm)に提供でき、[qmk.fm](http://qmk.fm) で利用可能になります。ダウンロード出来るファイルは `/<keyboard>/`(名前は上記と同じ形式)に保存され、`http://qmk.fm/<keyboard>/` で提供されます。ページは `/_pages/<keyboard>/` から生成されて、同じ場所で提供されます( .mdファイルはJekyllを通して .htmlファイル変換されます)。`lets_split` ファイルを参照して下さい。
|
||||
|
||||
## キーボードのデフォルト設定
|
||||
|
||||
QMK が提供する機能の量を考えれば、新しいユーザーが混乱するのは当たり前です。キーボードのデフォルトファームウェアをまとめるなら、有効にする機能とオプションをハードウェアのサポートに必要な最低限のセットにすることをおすすめします。特定の機能に関するおすすめは以下の通りです。
|
||||
|
||||
### ブートマジックとコマンド
|
||||
|
||||
[ブートマジック](ja/feature_bootmagic.md) と[コマンド](ja/feature_command.md)は、ユーザーがキーボードを明白でない方法で制御出来るようにする2つの関連機能です。いずれかの機能を有効にする場合、この機能をどのように提供するかについて、よく考えることをおすすめします。この機能が必要なユーザーは、あなたのキーボードを最初のプログラムできるキーボードとして使用している初心者に影響を与えることなく、個人的なキーマップ内で有効に出来ることを覚えておきましょう。
|
||||
|
||||
新規ユーザーが遭遇する最も多い問題は、キーボードを接続している間に間違えてブートマジックをトリガーしてしまうことです。キーボードの下を持っているとき、知らない間に Alt とスペースバーを押して、これらのキーが交換されてしまったことに気づきます。デフォルトではこの機能を無効にすることをおすすめしますが、有効にする場合は、キーボードを接続している間に押し間違えないキーへ `BOOTMAGIC_KEY_SALT` を設定することを検討して下さい。
|
||||
|
||||
キーボードに2つの Shift キーがない場合は、`COMMAND_ENABLE = no` を指定していても `IS_COMMAND` が動作するデフォルトを設定しておくべきです。ユーザーがコマンドを有効化したときに使用するデフォルトが与えられます。
|
||||
|
||||
## カスタムキーボードプログラミング
|
||||
|
||||
[機能のカスタマイズ](ja/custom_quantum_functions.md)にあるようにキーボードのカスタム関数を定義できます。ユーザーも同様にその動作をカスタマイズしたいかもしれないということと、ユーザーにそれを可能にすることを忘れないで下さい。 `process_record_kb()`のようなカスタム関数を提供している場合、関数がその関数の `_user()` 版を呼び出すことを確認して下さい。また、その関数の`_user()` 版の戻り値を確認して、user が `true` を返した場合のみカスタムコードを実行しなければいけません。
|
||||
|
||||
## 生産しない/手配線 プロジェクト
|
||||
|
||||
プロトタイプや手配線によるものなど QMK を使用するどんなプロジェクトも受け入れますが、`/keyboards/` フォルダが乱雑になるのを防ぐために、`/keyboards/handwired/` を用意しています。いつかプロトタイプのプロジェクトが製品のプロジェクトになった時点でメインの `/keyboards/` フォルダへ移動します!
|
||||
|
||||
## エラーとしての警告
|
||||
|
||||
キーボードを開発するときは、全ての警告がエラーとして扱われることに注意して下さい。小さな警告が蓄積されて、将来大きなエラーを引き起こす可能性があります。(そして、警告を放っておくのは良くない習慣です)
|
||||
|
||||
## 著作権表示
|
||||
|
||||
別のプロジェクトを元にしてキーボードの設定をするものの同じコードを使用しない場合は、ファイル上部にある著作権表示を次の形式に従って自分の名前を表示するよう、更新して下さい。
|
||||
|
||||
Copyright 2017 Your Name <your@email.com>
|
||||
|
||||
|
||||
他の人のコードを修正し、その変更が些細な部分のみであれば、著作権表示の名前をそのままにしておかないといけません。ファイルに対して重要な作業を行った場合、以下のようにあなたの名前を追加します。
|
||||
|
||||
Copyright 2017 Their Name <original_author@example.com> Your Name <you@example.com>
|
||||
|
||||
年はファイルが作成された最初の年にします。後年にそのファイルに対して作業が行われた場合、次のように2つ目の年を追加して反映することが出来ます。
|
||||
|
||||
Copyright 2015-2017 Your Name <you@example.com>
|
||||
|
||||
## ライセンス
|
||||
|
||||
QMK のコア部分は [GNU General Public License](https://www.gnu.org/licenses/licenses.en.html) でライセンスされます。AVR マイコン用のバイナリを提供する場合は、[GPLv2](https://www.gnu.org/licenses/old-licenses/gpl-2.0.html) か、[GPLv3](https://www.gnu.org/licenses/gpl.html) のどちらかから選択出来ます。ARM マイコン用のバイナリを提供する場合は、 [ChibiOS](http://www.chibios.org) の GPLv3 ライセンスに準拠するため、[GPL Version 3](https://www.gnu.org/licenses/gpl.html) を選択しなければいけません。
|
||||
|
||||
[uGFX](https://ugfx.io) を使用している場合は、[uGFX License](https://ugfx.io/license.html) に準拠する必要があります。uGFX を利用したデバイスを販売するには個別に商用ライセンスを取得しなければいけません。
|
||||
|
||||
## 技術的な詳細
|
||||
|
||||
キーボードを QMK で動作させるための詳細は[ハードウェア](ja/hardware.md)を参照して下さい!
|
||||
@@ -1,38 +1,48 @@
|
||||
# I2C マスタドライバ
|
||||
# I2C マスタドライバ :id=i2c-master-driver
|
||||
|
||||
<!---
|
||||
grep --no-filename "^[ ]*git diff" docs/ja/*.md | sh
|
||||
original document: 85041ff05:docs/i2c_driver.md
|
||||
git diff 85041ff05 HEAD -- docs/i2c_driver.md | cat
|
||||
original document: 0.8.62:docs/i2c_driver.md
|
||||
git diff 0.8.62 HEAD -- docs/i2c_driver.md | cat
|
||||
-->
|
||||
|
||||
QMK で使われる I2C マスタドライバには、MCU 間のポータビリティを提供するための一連の関数が用意されています。
|
||||
|
||||
## 使用できる関数
|
||||
## I2C アドレスについての重要なメモ :id=note-on-i2c-addresses
|
||||
|
||||
このドライバが期待する全てのアドレスは、アドレスバイトの上位7ビットにプッシュする必要があります。最下位ビットの設定(読み込み/書き込みを示す)は、それぞれの関数によって行われます。データシートやインターネットで列挙されているほとんど全ての I2C アドレスは、下位7ビットを占める7ビットとして表され、1ビット左(より上位)にシフトする必要があります。これは、ビット単位のシフト演算子 `<< 1` を使用して簡単に実行できます。
|
||||
|
||||
これは、呼び出しごとに以下の関数を実行するか、アドレスの定義で1度だけ実行するかどちらかで行うことができます。例えば、デバイスのアドレスが `0x18` の場合:
|
||||
|
||||
`#define MY_I2C_ADDRESS (0x18 << 1)`
|
||||
|
||||
I2C アドレスと他の技術詳細について、さらなる情報を得るためには https://www.robot-electronics.co.uk/i2c-tutorial を見てください。
|
||||
|
||||
## 使用できる関数 :id=available-functions
|
||||
|
||||
| 関数 | 説明 |
|
||||
|-------------------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|
||||
| `void i2c_init(void);` | I2C ドライバを初期化します。他のあらゆるトランザクションを開始する前に、この関数を一度だけ呼ぶ必要があります。 |
|
||||
| `uint8_t i2c_start(uint8_t address, uint16_t timeout);` | I2C トランザクションを開始します。アドレスは方向ビットのない7ビットスレーブアドレスです。 |
|
||||
| `uint8_t i2c_transmit(uint8_t address, uint8_t* data, uint16_t length, uint16_t timeout);` | I2C 経由でデータを送信します。アドレスは方向ビットのない7ビットスレーブアドレスです。トランザクションのステータスを返します。 |
|
||||
| `uint8_t i2c_receive(uint8_t address, uint8_t* data, uint16_t length, uint16_t timeout);` | I2C 経由でデータを受信します。アドレスは方向ビットのない7ビットスレーブアドレスです。 `length` で指定した長さのバイト列を `data` に保存し、トランザクションのステータスを返します。 |
|
||||
| `uint8_t i2c_writeReg(uint8_t devaddr, uint8_t regaddr, uint8_t* data, uint16_t length, uint16_t timeout);` | `i2c_transmit` と同様ですが、 `regaddr` でスレーブのデータ書き込み先のレジスタを指定します。 |
|
||||
| `uint8_t i2c_readReg(uint8_t devaddr, uint8_t regaddr, uint8_t* data, uint16_t length, uint16_t timeout);` | `i2c_receive` と同様ですが、 `regaddr` でスレーブのデータ読み込み先のレジスタを指定します。 |
|
||||
| `uint8_t i2c_stop(void);` | I2C トランザクションを終了します。 |
|
||||
| `i2c_status_t i2c_start(uint8_t address, uint16_t timeout);` | I2C トランザクションを開始します。アドレスは方向ビットのない7ビットスレーブアドレスです。 |
|
||||
| `i2c_status_t i2c_transmit(uint8_t address, uint8_t* data, uint16_t length, uint16_t timeout);` | I2C 経由でデータを送信します。アドレスは方向ビットのない7ビットスレーブアドレスです。トランザクションのステータスを返します。 |
|
||||
| `i2c_status_t i2c_receive(uint8_t address, uint8_t* data, uint16_t length, uint16_t timeout);` | I2C 経由でデータを受信します。アドレスは方向ビットのない7ビットスレーブアドレスです。 `length` で指定した長さのバイト列を `data` に保存し、トランザクションのステータスを返します。 |
|
||||
| `i2c_status_t i2c_writeReg(uint8_t devaddr, uint8_t regaddr, uint8_t* data, uint16_t length, uint16_t timeout);` | `i2c_transmit` と同様ですが、 `regaddr` でスレーブのデータ書き込み先のレジスタを指定します。 |
|
||||
| `i2c_status_t i2c_readReg(uint8_t devaddr, uint8_t regaddr, uint8_t* data, uint16_t length, uint16_t timeout);` | `i2c_receive` と同様ですが、 `regaddr` でスレーブのデータ読み込み先のレジスタを指定します。 |
|
||||
| `i2c_status_t i2c_stop(void);` | I2C トランザクションを終了します。 |
|
||||
|
||||
### 関数の戻り値
|
||||
### 関数の戻り値 :id=function-return
|
||||
|
||||
`void i2c_init(void)` を除く上にあるすべての関数は、次の真理値表にある値を返します。
|
||||
|
||||
| 戻り値 | 説明 |
|
||||
|--------|------------------------------|
|
||||
| 0 | 処理が正常に実行されました。 |
|
||||
| -1 | 処理に失敗しました。 |
|
||||
| -2 | 処理がタイムアウトしました。 |
|
||||
|戻り値の定数 |値 |説明 |
|
||||
|--------------------|---|----------------------------|
|
||||
|`I2C_STATUS_SUCCESS`|0 |処理が正常に実行されました。|
|
||||
|`I2C_STATUS_ERROR` |-1 |処理に失敗しました。 |
|
||||
|`I2C_STATUS_TIMEOUT`|-2 |処理がタイムアウトしました。|
|
||||
|
||||
## AVR
|
||||
## AVR :id=avr
|
||||
|
||||
### 設定
|
||||
### 設定 :id=avr-configuration
|
||||
|
||||
I2Cマスタドライバを設定するために、次の定義が使えます。
|
||||
|
||||
@@ -43,11 +53,11 @@ I2Cマスタドライバを設定するために、次の定義が使えます
|
||||
|
||||
AVR は通常 I2C ピンとして使う GPIO が設定されているので、これ以上の設定は必要ありません。
|
||||
|
||||
## ARM
|
||||
## ARM :id=arm
|
||||
|
||||
ARM の場合は、内部に ChibiOS I2C HAL ドライバがあります。この節では STM32 MCU を使用していると仮定します。
|
||||
|
||||
### 設定
|
||||
### 設定 :id=arm-configuration
|
||||
|
||||
ARM MCU 用の設定はしばしば非常に複雑です。これは、多くの場合複数の I2C ドライバをさまざまなポートに対して割り当てられるためです。
|
||||
|
||||
@@ -82,7 +92,7 @@ ChibiOS I2C ドライバの設定項目は STM32 MCU の種類に依存します
|
||||
STM32F1xx, STM32F2xx, STM32F4xx, STM32L0xx, STM32L1xx では I2Cv1 が使われます。
|
||||
STM32F0xx, STM32F3xx, STM32F7xx, STM32L4xx では I2Cv2 が使われます。
|
||||
|
||||
#### I2Cv1
|
||||
#### I2Cv1 :id=i2cv1
|
||||
|
||||
STM32 MCU の I2Cv1 では、クロック周波数とデューティ比を次の変数で変更できます。詳しくは <https://www.playembedded.org/blog/stm32-i2c-chibios/#I2Cv1_configuration_structure> を参照してください。
|
||||
|
||||
@@ -92,7 +102,7 @@ STM32 MCU の I2Cv1 では、クロック周波数とデューティ比を次の
|
||||
| `I2C1_CLOCK_SPEED` | `100000` |
|
||||
| `I2C1_DUTY_CYCLE` | `STD_DUTY_CYCLE` |
|
||||
|
||||
#### I2Cv2
|
||||
#### I2Cv2 :id=i2cv2
|
||||
|
||||
STM32 MCU の I2Cv2 では、信号のタイミングパラメータを次の変数で変更できます。詳しくは <https://www.st.com/en/embedded-software/stsw-stm32126.html> を参照してください。
|
||||
|
||||
@@ -111,11 +121,11 @@ STM32 MCU では GPIO ピンを設定するとき、別の「代替機能」モ
|
||||
| `I2C1_SCL_PAL_MODE` | `4` |
|
||||
| `I2C1_SDA_PAL_MODE` | `4` |
|
||||
|
||||
#### その他
|
||||
#### その他 :id=other
|
||||
|
||||
`void i2c_init(void)` 関数は `weak` 属性が付いており、オーバーロードすることができます。この場合、上記で設定した変数は使用されません。可能な GPIO の設定については、 MCU のデータシートを参照してください。次に示すのは初期化関数の例です:
|
||||
|
||||
```C
|
||||
```c
|
||||
void i2c_init(void)
|
||||
{
|
||||
setPinInput(B6); // Try releasing special pins for a short time
|
||||
|
||||
@@ -543,7 +543,7 @@ See also: [Unicode Support](feature_unicode.md)
|
||||
|`XP(i, j)` | |Send Unicode code point at index `i`, or `j` if Shift/Caps is on|
|
||||
|`UNICODE_MODE_FORWARD`|`UC_MOD` |Cycle through selected input modes |
|
||||
|`UNICODE_MODE_REVERSE`|`UC_RMOD`|Cycle through selected input modes in reverse |
|
||||
|`UNICODE_MODE_OSX` |`UC_M_OS`|Switch to macOS input |
|
||||
|`UNICODE_MODE_MAC` |`UC_M_MA`|Switch to macOS input |
|
||||
|`UNICODE_MODE_LNX` |`UC_M_LN`|Switch to Linux input |
|
||||
|`UNICODE_MODE_WIN` |`UC_M_WI`|Switch to Windows input |
|
||||
|`UNICODE_MODE_BSD` |`UC_M_BS`|Switch to BSD input (not implemented) |
|
||||
|
||||
@@ -68,7 +68,7 @@ You will need to install Git and Python. It's very likely that you already have
|
||||
|
||||
* Debian / Ubuntu / Devuan: `apt-get install git python3 && python3 -m pip install qmk`
|
||||
* Fedora / Red Hat / CentOS: `yum install git python3 && python3 -m pip install qmk`
|
||||
* Arch: `pacman -S qmk`
|
||||
* Arch: `yay -S qmk` (or use any other AUR Helper)
|
||||
|
||||
## 3. Run QMK Setup :id=set-up-qmk
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
#include "drashna.h"
|
||||
#include "analog.c"
|
||||
#include "analog.h"
|
||||
#include "pointing_device.h"
|
||||
#include "pincontrol.h"
|
||||
|
||||
@@ -17,8 +17,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
|
||||
// Joystick
|
||||
// Set Pins
|
||||
uint8_t xPin = 8; // VRx / /B4
|
||||
uint8_t yPin = 7; // VRy // B5
|
||||
// uint8_t xPin = 8; // VRx / /B4
|
||||
// uint8_t yPin = 7; // VRy // B5
|
||||
uint8_t swPin = E6; // SW
|
||||
|
||||
// Set Parameters
|
||||
@@ -43,7 +43,7 @@ int16_t axisCoordinate(uint8_t pin, uint16_t origin) {
|
||||
int16_t distanceFromOrigin;
|
||||
int16_t range;
|
||||
|
||||
int16_t position = analogRead(pin);
|
||||
int16_t position = analogReadPin(pin);
|
||||
|
||||
if (origin == position) {
|
||||
return 0;
|
||||
@@ -88,11 +88,11 @@ void pointing_device_task(void) {
|
||||
// todo read as one vector
|
||||
if (timer_elapsed(lastCursor) > cursorTimeout) {
|
||||
lastCursor = timer_read();
|
||||
report.x = axisToMouseComponent(xPin, xOrigin, maxCursorSpeed, xPolarity);
|
||||
report.y = axisToMouseComponent(yPin, yOrigin, maxCursorSpeed, yPolarity);
|
||||
report.x = axisToMouseComponent(B4, xOrigin, maxCursorSpeed, xPolarity);
|
||||
report.y = axisToMouseComponent(B5, yOrigin, maxCursorSpeed, yPolarity);
|
||||
}
|
||||
//
|
||||
if (!readPin(swPin)) {
|
||||
if (!readPin(E6)) {
|
||||
report.buttons |= MOUSE_BTN1;
|
||||
} else {
|
||||
report.buttons &= ~MOUSE_BTN1;
|
||||
@@ -104,8 +104,8 @@ void pointing_device_task(void) {
|
||||
|
||||
void matrix_init_keymap(void) {
|
||||
// init pin? Is needed?
|
||||
setPinInputHigh(swPin);
|
||||
setPinInputHigh(E6);
|
||||
// Account for drift
|
||||
xOrigin = analogRead(xPin);
|
||||
yOrigin = analogRead(yPin);
|
||||
xOrigin = analogReadPin(B4);
|
||||
yOrigin = analogReadPin(B5);
|
||||
}
|
||||
|
||||
@@ -3,3 +3,5 @@ RGBLIGHT_ENABLE = no
|
||||
CONSOLE_ENABLE = no
|
||||
|
||||
BOOTLOADER = qmk-dfu
|
||||
|
||||
SRC += analog.c
|
||||
|
||||
@@ -15,7 +15,7 @@ BOOTLOADER = bootloadHID
|
||||
BOOTMAGIC_ENABLE = lite
|
||||
MOUSEKEY_ENABLE = no
|
||||
EXTRAKEY_ENABLE = yes
|
||||
CONSOLE_ENABLE = yes
|
||||
CONSOLE_ENABLE = no
|
||||
COMMAND_ENABLE = yes
|
||||
BACKLIGHT_ENABLE = yes
|
||||
RGBLIGHT_ENABLE = no
|
||||
|
||||
34
keyboards/bear_face/bear_face.c
Normal file
34
keyboards/bear_face/bear_face.c
Normal file
@@ -0,0 +1,34 @@
|
||||
/*
|
||||
Copyright 2020 chemicalwill <https://github.com/chemicalwill>
|
||||
|
||||
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 "bear_face.h"
|
||||
|
||||
void keyboard_pre_init_kb(void) {
|
||||
//Sets LED pin as output
|
||||
setPinOutput(F7);
|
||||
|
||||
keyboard_pre_init_user();
|
||||
}
|
||||
|
||||
bool led_update_kb(led_t led_state) {
|
||||
// Caps Lock LED indicator toggling code here
|
||||
bool res = led_update_user(led_state);
|
||||
if(res) {
|
||||
writePin(F7, led_state.caps_lock);
|
||||
}
|
||||
return res;
|
||||
}
|
||||
36
keyboards/bear_face/bear_face.h
Normal file
36
keyboards/bear_face/bear_face.h
Normal file
@@ -0,0 +1,36 @@
|
||||
/*
|
||||
Copyright 2020 chemicalwill <https://github.com/chemicalwill>
|
||||
|
||||
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_83_ansi( \
|
||||
K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014, \
|
||||
K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114, \
|
||||
K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, K214, \
|
||||
K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K313, K314, \
|
||||
K400, K401, K402, K403, K404, K405, K406, K407, K408, K409, K410, K412, K413, K414, \
|
||||
K500, K501, K502, K505, K509, K510, K511, K512, K513, K514 \
|
||||
) { \
|
||||
{ K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014 }, \
|
||||
{ K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114 }, \
|
||||
{ K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, K214 }, \
|
||||
{ K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, KC_NO, K313, K314 }, \
|
||||
{ K400, K401, K402, K403, K404, K405, K406, K407, K408, K409, K410, KC_NO, K412, K413, K414 }, \
|
||||
{ K500, K501, K502, KC_NO, KC_NO, K505, KC_NO, KC_NO, KC_NO, K509, K510, K511, K512, K513, K514 } \
|
||||
}
|
||||
175
keyboards/bear_face/config.h
Normal file
175
keyboards/bear_face/config.h
Normal file
@@ -0,0 +1,175 @@
|
||||
/*
|
||||
Copyright 2020 chemicalwill <https://github.com/chemicalwill>
|
||||
|
||||
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 0xCEEB
|
||||
#define PRODUCT_ID 0x09f5
|
||||
#define DEVICE_VER 0x0001
|
||||
#define MANUFACTURER chemicalwill
|
||||
#define PRODUCT bear_face
|
||||
#define DESCRIPTION Vortex Race 3 programmable PCB replacement
|
||||
|
||||
/* key matrix size */
|
||||
#define MATRIX_ROWS 6
|
||||
#define MATRIX_COLS 15
|
||||
|
||||
/*
|
||||
* 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 { F5, F6, F4, F1, B0, B6 }
|
||||
#define MATRIX_COL_PINS { B5, C7, C6, F0, E6, B7, D0, D1, D2, D3, D5, D4, D6, D7, B4 }
|
||||
#define UNUSED_PINS
|
||||
|
||||
/* COL2ROW or ROW2COL */
|
||||
#define DIODE_DIRECTION COL2ROW
|
||||
|
||||
#define BACKLIGHT_PIN F7
|
||||
//#define BACKLIGHT_BREATHING
|
||||
//#define BACKLIGHT_LEVELS 3
|
||||
|
||||
// #define RGB_DI_PIN E2
|
||||
// #ifdef RGB_DI_PIN
|
||||
// #define RGBLED_NUM 16
|
||||
// #define RGBLIGHT_HUE_STEP 8
|
||||
// #define RGBLIGHT_SAT_STEP 8
|
||||
// #define RGBLIGHT_VAL_STEP 8
|
||||
// #define RGBLIGHT_LIMIT_VAL 255 /* The maximum brightness level */
|
||||
// #define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */
|
||||
// /*== all animations enable ==*/
|
||||
// #define RGBLIGHT_ANIMATIONS
|
||||
// /*== or choose animations ==*/
|
||||
// #define RGBLIGHT_EFFECT_BREATHING
|
||||
// #define RGBLIGHT_EFFECT_RAINBOW_MOOD
|
||||
// #define RGBLIGHT_EFFECT_RAINBOW_SWIRL
|
||||
// #define RGBLIGHT_EFFECT_SNAKE
|
||||
// #define RGBLIGHT_EFFECT_KNIGHT
|
||||
// #define RGBLIGHT_EFFECT_CHRISTMAS
|
||||
// #define RGBLIGHT_EFFECT_STATIC_GRADIENT
|
||||
// #define RGBLIGHT_EFFECT_RGB_TEST
|
||||
// #define RGBLIGHT_EFFECT_ALTERNATING
|
||||
// #endif
|
||||
|
||||
/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
|
||||
#define DEBOUNCE 6
|
||||
|
||||
/* define if matrix has ghost (lacks anti-ghosting diodes) */
|
||||
//#define MATRIX_HAS_GHOST
|
||||
|
||||
/* number of backlight levels */
|
||||
|
||||
/* 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
|
||||
12
keyboards/bear_face/info.json
Normal file
12
keyboards/bear_face/info.json
Normal file
File diff suppressed because one or more lines are too long
117
keyboards/bear_face/keymaps/default/keymap.c
Normal file
117
keyboards/bear_face/keymaps/default/keymap.c
Normal file
@@ -0,0 +1,117 @@
|
||||
/*
|
||||
Copyright 2020 chemicalwill <https://github.com/chemicalwill>
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include QMK_KEYBOARD_H
|
||||
|
||||
enum layers {
|
||||
_QWER,
|
||||
_COLE,
|
||||
_DVOR,
|
||||
_FN1,
|
||||
};
|
||||
|
||||
#define FN1_CAPS LT(_FN1, KC_CAPS)
|
||||
|
||||
//custom keycode enums
|
||||
enum custom_keycodes {
|
||||
BASE_QWER = SAFE_RANGE,
|
||||
BASE_COLE,
|
||||
BASE_DVOR
|
||||
};
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
[_QWER] = LAYOUT_83_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_NO, KC_DEL,
|
||||
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_HOME,
|
||||
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP,
|
||||
FN1_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_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(_FN1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
|
||||
),
|
||||
|
||||
[_COLE] = LAYOUT_83_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_NO, KC_DEL,
|
||||
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_HOME,
|
||||
KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP,
|
||||
KC_BSPC, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT, KC_ENT, KC_PGDN,
|
||||
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, 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(_FN1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
|
||||
),
|
||||
|
||||
[_DVOR] = LAYOUT_83_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_NO, KC_DEL,
|
||||
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_LBRC, KC_RBRC, KC_BSPC, KC_HOME,
|
||||
KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_SLSH, KC_EQL, KC_BSLS, KC_PGUP,
|
||||
FN1_CAPS, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_MINS, KC_ENT, KC_PGDN,
|
||||
KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_RSFT, KC_UP, KC_END,
|
||||
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(_FN1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
|
||||
),
|
||||
|
||||
[_FN1] = LAYOUT_83_ansi(
|
||||
_______, KC_MUTE, KC_VOLD, KC_VOLU, KC_MPRV, KC_MPLY, KC_MNXT, _______, _______, KC_PSCR, KC_SLCK, KC_PAUS, _______, _______, KC_INS,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_CALC, BASE_QWER,
|
||||
_______, _______, _______, _______, RESET, _______, _______, _______, _______, RESET, _______, _______, _______, _______, BASE_COLE,
|
||||
_______, _______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, BASE_DVOR,
|
||||
_______, KC_APP, _______, _______, _______, _______, _______, _______, _______, _______, KC_APP, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______
|
||||
),
|
||||
|
||||
/*
|
||||
[_BLANK] = LAYOUT_83_ansi(
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______
|
||||
),
|
||||
*/
|
||||
};
|
||||
|
||||
//macros to allow the user to set whatever default layer they want, even after reboot
|
||||
|
||||
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
||||
switch (keycode) {
|
||||
case BASE_QWER:
|
||||
if (record->event.pressed) {
|
||||
// when keycode BASE_QWER is pressed
|
||||
set_single_persistent_default_layer(_QWER);
|
||||
} else {
|
||||
// when keycode BASE_QWER is released
|
||||
}
|
||||
break;
|
||||
|
||||
case BASE_COLE:
|
||||
if (record->event.pressed) {
|
||||
// when keycode BASE_COLE is pressed
|
||||
set_single_persistent_default_layer(_COLE);
|
||||
} else {
|
||||
// when keycode BASE_COLE is released
|
||||
}
|
||||
break;
|
||||
|
||||
case BASE_DVOR:
|
||||
if (record->event.pressed) {
|
||||
// when keycode BASE_DVOR is pressed
|
||||
set_single_persistent_default_layer(_DVOR);
|
||||
} else {
|
||||
// when keycode BASE_DVOR is released
|
||||
}
|
||||
break;
|
||||
}
|
||||
return true;
|
||||
};
|
||||
14
keyboards/bear_face/keymaps/default/readme.md
Normal file
14
keyboards/bear_face/keymaps/default/readme.md
Normal file
@@ -0,0 +1,14 @@
|
||||
# default bear_face layout
|
||||
|
||||
This layout replaces the stock layout on the Vortex Race 3.
|
||||
|
||||
- Caps Lock indicator LED is enabled by default
|
||||
- Layer Tap on Caps Lock (tap for Caps Lock, hold for _FN1)
|
||||
- FORCE_NKRO enabled by default
|
||||
- Pn key is set to 'KC_NO' by default
|
||||
* might be a good place for a macro, or to put your PC to sleep, etc.
|
||||
- a combined function layer that mimics the sublegends on the stock caps (regardless of layout)
|
||||
* 'Reset' will put the keyboard into DFU mode
|
||||
* 'APP' sends 'KC_APP'
|
||||
* set base layer toggles for QWERTY, COLEMAK, and DVORAK layouts (will persist after reboot)
|
||||
|
||||
15
keyboards/bear_face/readme.md
Normal file
15
keyboards/bear_face/readme.md
Normal file
@@ -0,0 +1,15 @@
|
||||
# bear_face
|
||||
|
||||

|
||||
|
||||
Vortex Race 3 with replacement QMK-compatible PCB designed by [chemicalwill](https://github.com/chemicalwill)
|
||||
|
||||
* Keyboard Maintainer: [Will Hedges](https://github.com/chemicalwill)
|
||||
* Hardware Supported: bear_face v1.0, atmega32u4
|
||||
* Hardware Availability: [PCB files](https://github.com/chemicalwill/bear_face)
|
||||
|
||||
Make example for this keyboard (after setting up your build environment):
|
||||
|
||||
make bear_face: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).
|
||||
31
keyboards/bear_face/rules.mk
Normal file
31
keyboards/bear_face/rules.mk
Normal file
@@ -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 = no # 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 keyboard RGB underglow
|
||||
MIDI_ENABLE = no # MIDI controls
|
||||
UNICODE_ENABLE = no # Unicode
|
||||
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
|
||||
AUDIO_ENABLE = no # Audio output on port C6
|
||||
@@ -15,7 +15,7 @@ BOOTLOADER = bootloadHID
|
||||
BOOTMAGIC_ENABLE = yes
|
||||
MOUSEKEY_ENABLE = yes
|
||||
EXTRAKEY_ENABLE = yes
|
||||
CONSOLE_ENABLE = yes
|
||||
CONSOLE_ENABLE = no
|
||||
COMMAND_ENABLE = yes
|
||||
BACKLIGHT_ENABLE = yes
|
||||
RGBLIGHT_ENABLE = no
|
||||
|
||||
118
keyboards/centromere/keymaps/mini/keymap.c
Normal file
118
keyboards/centromere/keymaps/mini/keymap.c
Normal file
@@ -0,0 +1,118 @@
|
||||
#include QMK_KEYBOARD_H
|
||||
|
||||
|
||||
// Each layer gets a name for readability, which is then used in the keymap matrix below.
|
||||
// The underscores don't mean anything - you can have a layer called STUFF or any other name.
|
||||
// Layer names don't all need to be of the same length, obviously, and you can also skip them
|
||||
// entirely and just use numbers.
|
||||
enum centromere_layers
|
||||
{
|
||||
_QWERTY,
|
||||
_LOWER,
|
||||
_RAISE,
|
||||
_ADJUST
|
||||
};
|
||||
|
||||
// Defines for layer movement
|
||||
#define LOWER MO(_LOWER)
|
||||
#define RAISE MO(_RAISE)
|
||||
|
||||
// Defines for task manager
|
||||
#define CALTDEL LCTL(LALT(KC_DEL))
|
||||
#define TSKMGR LCTL(LSFT(KC_ESC))
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
|
||||
/* Qwerty
|
||||
*
|
||||
* ,----------------------------------. ,----------------------------------.
|
||||
* | Q | W | E | R | T | | Y | U | I | O | P |
|
||||
* |------+------+------+------+------| |------+------+------+------+------|
|
||||
* | A | S | D | F | G | | H | J | K | L | ; |
|
||||
* |------+------+------+------+------| |------+------+------+------+------|
|
||||
* | Z | X | C | V | B | | N | M | , | . | / |
|
||||
* `----------------------------------' `----------------------------------'
|
||||
* ,--------------------. ,------,-------------.
|
||||
* | Ctrl | LOWER| | | | RAISE| Shift|
|
||||
* `-------------| Space| |BckSpc|------+------.
|
||||
* | | | |
|
||||
* `------' `------'
|
||||
*/
|
||||
[_QWERTY] = LAYOUT(
|
||||
KC_NO, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_NO,
|
||||
KC_NO, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_NO,
|
||||
KC_NO, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_NO,
|
||||
KC_LCTL, LOWER, KC_SPC, KC_BSPC, RAISE, OSM(MOD_LSFT)
|
||||
),
|
||||
|
||||
/* Raise
|
||||
*
|
||||
* ,----------------------------------. ,----------------------------------.
|
||||
* | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 |
|
||||
* |------+------+------+------+------| |------+------+------+------+------|
|
||||
* | Tab | Left | Down | Up | Right| | | - | = | [ | ] |
|
||||
* |------+------+------+------+------| |------+------+------+------+------|
|
||||
* | Ctrl| ` | GUI | Alt | | | | | | \ | ' |
|
||||
* `----------------------------------' `----------------------------------'
|
||||
* ,--------------------. ,------,-------------.
|
||||
* | | LOWER| | | | RAISE| |
|
||||
* `-------------| | | |------+------.
|
||||
* | | | |
|
||||
* `------' `------'
|
||||
*/
|
||||
[_RAISE] = LAYOUT(
|
||||
KC_NO, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_NO,
|
||||
KC_NO, KC_TAB, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, _______, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_NO,
|
||||
KC_NO, KC_LCTL, KC_GRV, KC_LGUI, KC_LALT, _______, _______, _______, _______, KC_BSLS, KC_QUOT, KC_NO,
|
||||
_______, _______, _______, _______, _______, _______
|
||||
),
|
||||
|
||||
/* Lower
|
||||
*
|
||||
* ,----------------------------------. ,----------------------------------.
|
||||
* | ! | @ | # | $ | % | | ^ | & | * | ( | ) |
|
||||
* |------+------+------+------+------| |------+------+------+------+------|
|
||||
* | Esc | | | | | | | _ | + | { | } |
|
||||
* |------+------+------+------+------| |------+------+------+------+------|
|
||||
* | Caps| ~ | | | | | | | | | | " |
|
||||
* `----------------------------------' `----------------------------------'
|
||||
* ,--------------------. ,------,-------------.
|
||||
* | | LOWER| | | | RAISE| Del |
|
||||
* `-------------| | | Enter|------+------.
|
||||
* | | | |
|
||||
* `------' `------'
|
||||
*/
|
||||
[_LOWER] = LAYOUT(
|
||||
KC_NO, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_NO,
|
||||
KC_NO, KC_ESC, _______, _______, _______, _______, _______, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_NO,
|
||||
KC_NO, KC_CAPS, KC_TILD, _______, _______, _______, _______, _______, _______, KC_PIPE, KC_DQT, KC_NO,
|
||||
_______, _______, _______, KC_ENT, _______, KC_DEL
|
||||
),
|
||||
|
||||
/* Adjust (Lower + Raise)
|
||||
*
|
||||
* ,----------------------------------. ,----------------------------------.
|
||||
* | F1 | F2 | F3 | F4 | F5 | | F6 | F7 | F8 | F9 | F10 |
|
||||
* |------+------+------+------+------| |------+------+------+------+------|
|
||||
* | F11 | F12 | | | | | | | |Taskmg|caltde|
|
||||
* |------+------+------+------+------| |------+------+------+------+------|
|
||||
* | Reset| | | | | | | | | | |
|
||||
* `----------------------------------' `----------------------------------'
|
||||
* ,--------------------. ,------,-------------.
|
||||
* | | LOWER| | | | RAISE| |
|
||||
* `-------------| | | |------+------.
|
||||
* | | | |
|
||||
* `------' `------'
|
||||
*/
|
||||
[_ADJUST] = LAYOUT(
|
||||
KC_NO, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_NO,
|
||||
KC_NO, KC_F11, KC_F12, _______, _______, _______, _______, _______, _______, TSKMGR, CALTDEL, KC_NO,
|
||||
KC_NO, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_NO,
|
||||
_______, _______, _______, _______, _______, _______
|
||||
)
|
||||
};
|
||||
|
||||
|
||||
layer_state_t layer_state_set_user(layer_state_t state) {
|
||||
return update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST);
|
||||
}
|
||||
@@ -50,8 +50,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
/* COL2ROW, ROW2COL*/
|
||||
#define DIODE_DIRECTION COL2ROW
|
||||
|
||||
#define NO_UART 1
|
||||
|
||||
/*
|
||||
* Split Keyboard specific options, make sure you have 'SPLIT_KEYBOARD = yes' in your rules.mk, and define SOFT_SERIAL_PIN.
|
||||
*/
|
||||
|
||||
@@ -6,34 +6,6 @@ extern uint8_t is_master;
|
||||
// Following line allows macro to read current RGB settings
|
||||
extern rgblight_config_t rgblight_config;
|
||||
#endif
|
||||
#ifdef OLED_DRIVER_ENABLE
|
||||
# define KEYLOGGER_LENGTH 5
|
||||
static uint32_t oled_timer = 0;
|
||||
static char keylog_str[KEYLOGGER_LENGTH + 1] = {"\n"};
|
||||
static uint16_t log_timer = 0;
|
||||
// clang-format off
|
||||
static const char PROGMEM code_to_name[0xFF] = {
|
||||
// 0 1 2 3 4 5 6 7 8 9 A B c D E F
|
||||
' ', ' ', ' ', ' ', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', // 0x
|
||||
'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', '1', '2', // 1x
|
||||
'3', '4', '5', '6', '7', '8', '9', '0', 20, 19, 27, 26, 22, '-', '=', '[', // 2x
|
||||
']','\\', '#', ';','\'', '`', ',', '.', '/', 128, ' ', ' ', ' ', ' ', ' ', ' ', // 3x
|
||||
' ', ' ', ' ', ' ', ' ', ' ', 'P', 'S', ' ', ' ', ' ', ' ', 16, ' ', ' ', ' ', // 4x
|
||||
' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', // 5x
|
||||
' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', // 6x
|
||||
' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', // 7x
|
||||
' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', // 8x
|
||||
' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', // 9x
|
||||
' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', // Ax
|
||||
' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', // Bx
|
||||
' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', // Cx
|
||||
' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', // Dx
|
||||
'C', 'S', 'A', 'C', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', // Ex
|
||||
' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ' // Fx
|
||||
};
|
||||
|
||||
void add_keylog(uint16_t keycode);
|
||||
#endif
|
||||
|
||||
enum crkbd_keycodes { RGBRST = NEW_SAFE_RANGE };
|
||||
|
||||
@@ -139,10 +111,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
|
||||
bool process_record_keymap(uint16_t keycode, keyrecord_t *record) {
|
||||
if (record->event.pressed) {
|
||||
#ifdef OLED_DRIVER_ENABLE
|
||||
oled_timer = timer_read32();
|
||||
add_keylog(keycode);
|
||||
#endif
|
||||
#ifndef SPLIT_KEYBOARD
|
||||
if (keycode == RESET && !is_master) {
|
||||
return false;
|
||||
@@ -154,151 +122,6 @@ bool process_record_keymap(uint16_t keycode, keyrecord_t *record) {
|
||||
|
||||
#ifdef OLED_DRIVER_ENABLE
|
||||
oled_rotation_t oled_init_user(oled_rotation_t rotation) { return OLED_ROTATION_270; }
|
||||
|
||||
void add_keylog(uint16_t keycode) {
|
||||
if ((keycode >= QK_MOD_TAP && keycode <= QK_MOD_TAP_MAX) || (keycode >= QK_LAYER_TAP && keycode <= QK_LAYER_TAP_MAX) || (keycode >= QK_MODS && keycode <= QK_MODS_MAX)) {
|
||||
keycode = keycode & 0xFF;
|
||||
} else if (keycode > 0xFF) {
|
||||
keycode = 0;
|
||||
}
|
||||
|
||||
for (uint8_t i = (KEYLOGGER_LENGTH - 1); i > 0; --i) {
|
||||
keylog_str[i] = keylog_str[i - 1];
|
||||
}
|
||||
|
||||
if (keycode < (sizeof(code_to_name) / sizeof(char))) {
|
||||
keylog_str[0] = pgm_read_byte(&code_to_name[keycode]);
|
||||
}
|
||||
|
||||
log_timer = timer_read();
|
||||
}
|
||||
|
||||
void update_log(void) {
|
||||
if (timer_elapsed(log_timer) > 750) {
|
||||
// add_keylog(0);
|
||||
}
|
||||
}
|
||||
|
||||
void render_keylogger_status(void) {
|
||||
oled_write_P(PSTR("KLogr"), false);
|
||||
oled_write(keylog_str, false);
|
||||
}
|
||||
|
||||
void render_default_layer_state(void) {
|
||||
oled_write_P(PSTR("Lyout"), false);
|
||||
switch (get_highest_layer(default_layer_state)) {
|
||||
case _QWERTY:
|
||||
oled_write_P(PSTR(" QRTY"), false);
|
||||
break;
|
||||
case _COLEMAK:
|
||||
oled_write_P(PSTR(" COLE"), false);
|
||||
break;
|
||||
case _DVORAK:
|
||||
oled_write_P(PSTR(" DVRK"), false);
|
||||
break;
|
||||
case _WORKMAN:
|
||||
oled_write_P(PSTR(" WKMN"), false);
|
||||
break;
|
||||
case _NORMAN:
|
||||
oled_write_P(PSTR(" NORM"), false);
|
||||
break;
|
||||
case _MALTRON:
|
||||
oled_write_P(PSTR(" MLTN"), false);
|
||||
break;
|
||||
case _EUCALYN:
|
||||
oled_write_P(PSTR(" ECLN"), false);
|
||||
break;
|
||||
case _CARPLAX:
|
||||
oled_write_P(PSTR(" CRPX"), false);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void render_layer_state(void) {
|
||||
oled_write_P(PSTR("LAYER"), false);
|
||||
oled_write_P(PSTR("Lower"), layer_state_is(_LOWER));
|
||||
oled_write_P(PSTR("Raise"), layer_state_is(_RAISE));
|
||||
oled_write_P(PSTR(" Mods"), layer_state_is(_MODS));
|
||||
}
|
||||
|
||||
void render_keylock_status(uint8_t led_usb_state) {
|
||||
oled_write_P(PSTR("Lock:"), false);
|
||||
oled_write_P(PSTR(" "), false);
|
||||
oled_write_P(PSTR("N"), led_usb_state & (1 << USB_LED_NUM_LOCK));
|
||||
oled_write_P(PSTR("C"), led_usb_state & (1 << USB_LED_CAPS_LOCK));
|
||||
oled_write_ln_P(PSTR("S"), led_usb_state & (1 << USB_LED_SCROLL_LOCK));
|
||||
}
|
||||
|
||||
void render_mod_status(uint8_t modifiers) {
|
||||
oled_write_P(PSTR("Mods:"), false);
|
||||
oled_write_P(PSTR(" "), false);
|
||||
oled_write_P(PSTR("S"), (modifiers & MOD_MASK_SHIFT));
|
||||
oled_write_P(PSTR("C"), (modifiers & MOD_MASK_CTRL));
|
||||
oled_write_P(PSTR("A"), (modifiers & MOD_MASK_ALT));
|
||||
oled_write_P(PSTR("G"), (modifiers & MOD_MASK_GUI));
|
||||
}
|
||||
|
||||
void render_bootmagic_status(void) {
|
||||
/* Show Ctrl-Gui Swap options */
|
||||
static const char PROGMEM logo[][2][3] = {
|
||||
{{0x97, 0x98, 0}, {0xb7, 0xb8, 0}},
|
||||
{{0x95, 0x96, 0}, {0xb5, 0xb6, 0}},
|
||||
};
|
||||
oled_write_P(PSTR("BTMGK"), false);
|
||||
oled_write_P(PSTR(" "), false);
|
||||
oled_write_P(logo[0][0], !keymap_config.swap_lctl_lgui);
|
||||
oled_write_P(logo[1][0], keymap_config.swap_lctl_lgui);
|
||||
oled_write_P(PSTR(" "), false);
|
||||
oled_write_P(logo[0][1], !keymap_config.swap_lctl_lgui);
|
||||
oled_write_P(logo[1][1], keymap_config.swap_lctl_lgui);
|
||||
oled_write_P(PSTR(" NKRO"), keymap_config.nkro);
|
||||
}
|
||||
|
||||
void render_user_status(void) {
|
||||
oled_write_P(PSTR("USER:"), false);
|
||||
oled_write_P(PSTR(" Anim"), userspace_config.rgb_matrix_idle_anim);
|
||||
oled_write_P(PSTR(" Layr"), userspace_config.rgb_layer_change);
|
||||
oled_write_P(PSTR(" Nuke"), userspace_config.nuke_switch);
|
||||
}
|
||||
|
||||
void render_status_main(void) {
|
||||
/* Show Keyboard Layout */
|
||||
render_default_layer_state();
|
||||
render_keylock_status(host_keyboard_leds());
|
||||
render_bootmagic_status();
|
||||
render_user_status();
|
||||
|
||||
render_keylogger_status();
|
||||
}
|
||||
|
||||
void render_status_secondary(void) {
|
||||
/* Show Keyboard Layout */
|
||||
render_default_layer_state();
|
||||
render_layer_state();
|
||||
render_mod_status(get_mods() | get_oneshot_mods());
|
||||
|
||||
render_keylogger_status();
|
||||
}
|
||||
|
||||
void oled_task_user(void) {
|
||||
if (timer_elapsed32(oled_timer) > 30000) {
|
||||
oled_off();
|
||||
return;
|
||||
}
|
||||
# ifndef SPLIT_KEYBOARD
|
||||
else {
|
||||
oled_on();
|
||||
}
|
||||
# endif
|
||||
|
||||
update_log();
|
||||
if (is_master) {
|
||||
render_status_main(); // Renders the current keyboard state (layer, lock, caps, scroll, etc)
|
||||
} else {
|
||||
render_status_secondary();
|
||||
}
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
uint16_t get_tapping_term(uint16_t keycode) {
|
||||
|
||||
@@ -15,7 +15,7 @@ BOOTLOADER = bootloadHID
|
||||
BOOTMAGIC_ENABLE = no
|
||||
MOUSEKEY_ENABLE = yes
|
||||
EXTRAKEY_ENABLE = yes
|
||||
CONSOLE_ENABLE = yes
|
||||
CONSOLE_ENABLE = no
|
||||
COMMAND_ENABLE = yes
|
||||
BACKLIGHT_ENABLE = yes
|
||||
RGBLIGHT_ENABLE = no
|
||||
|
||||
@@ -15,7 +15,7 @@ BOOTLOADER = bootloadHID
|
||||
BOOTMAGIC_ENABLE = no
|
||||
MOUSEKEY_ENABLE = no
|
||||
EXTRAKEY_ENABLE = yes
|
||||
CONSOLE_ENABLE = yes
|
||||
CONSOLE_ENABLE = no
|
||||
COMMAND_ENABLE = yes
|
||||
BACKLIGHT_ENABLE = yes
|
||||
RGBLIGHT_ENABLE = yes
|
||||
|
||||
@@ -15,7 +15,7 @@ BOOTLOADER = bootloadHID
|
||||
BOOTMAGIC_ENABLE = no
|
||||
MOUSEKEY_ENABLE = no
|
||||
EXTRAKEY_ENABLE = yes
|
||||
CONSOLE_ENABLE = yes
|
||||
CONSOLE_ENABLE = no
|
||||
COMMAND_ENABLE = yes
|
||||
BACKLIGHT_ENABLE = yes
|
||||
RGBLIGHT_ENABLE = yes
|
||||
|
||||
@@ -15,7 +15,7 @@ BOOTLOADER = bootloadHID
|
||||
BOOTMAGIC_ENABLE = no
|
||||
MOUSEKEY_ENABLE = no
|
||||
EXTRAKEY_ENABLE = yes
|
||||
CONSOLE_ENABLE = yes
|
||||
CONSOLE_ENABLE = no
|
||||
COMMAND_ENABLE = yes
|
||||
BACKLIGHT_ENABLE = yes
|
||||
RGBLIGHT_ENABLE = yes
|
||||
|
||||
@@ -17,7 +17,7 @@ BOOTLOADER = bootloadHID
|
||||
BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration
|
||||
MOUSEKEY_ENABLE = no # Mouse keys
|
||||
EXTRAKEY_ENABLE = yes # Audio control and System control
|
||||
CONSOLE_ENABLE = yes # Console for debug
|
||||
CONSOLE_ENABLE = no # Console for debug
|
||||
COMMAND_ENABLE = yes # Commands for debug and configuration
|
||||
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
|
||||
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
|
||||
|
||||
@@ -15,7 +15,7 @@ BOOTLOADER = bootloadHID
|
||||
BOOTMAGIC_ENABLE = full
|
||||
MOUSEKEY_ENABLE = no
|
||||
EXTRAKEY_ENABLE = yes
|
||||
CONSOLE_ENABLE = yes
|
||||
CONSOLE_ENABLE = no
|
||||
COMMAND_ENABLE = yes
|
||||
BACKLIGHT_ENABLE = yes
|
||||
RGBLIGHT_ENABLE = yes
|
||||
|
||||
@@ -15,7 +15,7 @@ BOOTLOADER = bootloadHID
|
||||
BOOTMAGIC_ENABLE = no
|
||||
MOUSEKEY_ENABLE = yes
|
||||
EXTRAKEY_ENABLE = yes
|
||||
CONSOLE_ENABLE = yes
|
||||
CONSOLE_ENABLE = no
|
||||
COMMAND_ENABLE = no
|
||||
BACKLIGHT_ENABLE = yes
|
||||
RGBLIGHT_ENABLE = no # PCB has underglow LEDs, but case doesn't let them show.
|
||||
|
||||
51
keyboards/keebio/quefrency/keymaps/via/keymap.c
Normal file
51
keyboards/keebio/quefrency/keymaps/via/keymap.c
Normal file
@@ -0,0 +1,51 @@
|
||||
#include QMK_KEYBOARD_H
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
[0] = LAYOUT_all(
|
||||
KC_F1, KC_F2, KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_DEL, KC_BSPC, KC_HOME,
|
||||
KC_F3, KC_F4, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_END,
|
||||
KC_F5, KC_F6, 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_NUHS, KC_ENT, KC_PGUP,
|
||||
KC_F7, KC_F8, KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN,
|
||||
KC_F9, KC_F10, KC_LCTL, KC_LALT, KC_LGUI, MO(1), KC_SPC, KC_SPC, MO(1), KC_SPC, KC_RALT, KC_RCTL, KC_RGUI, KC_LEFT, KC_DOWN, KC_RGHT
|
||||
),
|
||||
|
||||
[1] = LAYOUT_all(
|
||||
_______, _______, KC_GESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_BSPC, _______,
|
||||
_______, _______, RGB_TOG, RGB_MOD, _______, KC_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, KC_TILD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
|
||||
),
|
||||
|
||||
[2] = LAYOUT_all(
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
|
||||
),
|
||||
|
||||
[3] = LAYOUT_all(
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
|
||||
)
|
||||
};
|
||||
|
||||
void encoder_update_user(uint8_t index, bool clockwise) {
|
||||
if (index == 0) {
|
||||
if (clockwise) {
|
||||
tap_code(KC_PGDN);
|
||||
} else {
|
||||
tap_code(KC_PGUP);
|
||||
}
|
||||
} else if (index == 1) {
|
||||
if (clockwise) {
|
||||
tap_code(KC_VOLU);
|
||||
} else {
|
||||
tap_code(KC_VOLD);
|
||||
}
|
||||
}
|
||||
}
|
||||
3
keyboards/keebio/quefrency/keymaps/via/rules.mk
Normal file
3
keyboards/keebio/quefrency/keymaps/via/rules.mk
Normal file
@@ -0,0 +1,3 @@
|
||||
VIA_ENABLE = yes
|
||||
CONSOLE_ENABLE = yes
|
||||
LINK_TIME_OPTIMIZATION_ENABLE = yes
|
||||
@@ -23,7 +23,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#define PRODUCT_ID 0x1257
|
||||
#define DEVICE_VER 0x0100
|
||||
#define MANUFACTURER Keebio
|
||||
#define PRODUCT Quefrency
|
||||
#define PRODUCT Quefrency Rev. 1
|
||||
#define DESCRIPTION Split 60/65 percent staggered keyboard
|
||||
|
||||
/* key matrix size */
|
||||
|
||||
@@ -79,7 +79,6 @@
|
||||
{ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO } \
|
||||
}
|
||||
|
||||
|
||||
#define LAYOUT_65_with_macro( \
|
||||
LA9, LA8, LA1, LA2, LA3, LA4, LA5, LA6, LA7, RA1, RA2, RA3, RA4, RA5, RA6, RA7, RA8, RA9, \
|
||||
LB9, LB8, LB1, LB2, LB3, LB4, LB5, LB6, RB1, RB2, RB3, RB4, RB5, RB6, RB7, RB8, RB9, \
|
||||
@@ -101,3 +100,25 @@
|
||||
{ RE1, RE2, RE9, RE4, RE5, RE6, RE7, RE8 }, \
|
||||
{ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, RA9, RB9 } \
|
||||
}
|
||||
|
||||
#define LAYOUT_all( \
|
||||
LA9, LA8, LA1, LA2, LA3, LA4, LA5, LA6, LA7, RA1, RA2, RA3, RA4, RA5, RA6, RA7, RA8, RA9, \
|
||||
LB9, LB8, LB1, LB2, LB3, LB4, LB5, LB6, RB1, RB2, RB3, RB4, RB5, RB6, RB7, RB8, RB9, \
|
||||
LC9, LC8, LC1, LC2, LC3, LC4, LC5, LC6, RC1, RC2, RC3, RC4, RC5, RC6, RC7x,RC8, RC9, \
|
||||
LD9, LD8, LD1, LD2x,LD3, LD4, LD5, LD6, LD7, RD1, RD2, RD3, RD4, RD6, RD7, RD8, RD9, \
|
||||
LE9, LE8, LE1, LE2, LE3, LE5, LE6x,LE7, RE1, RE2, RE4, RE5, RE6, RE7, RE8, RE9 \
|
||||
) \
|
||||
{ \
|
||||
{ LA1, LA2, LA3, LA4, LA5, LA6, LA7, LA8 }, \
|
||||
{ LB1, LB2, LB3, LB4, LB5, LB6, LB9, LB8 }, \
|
||||
{ LC1, LC2, LC3, LC4, LC5, LC6, LC9, LC8 }, \
|
||||
{ LD1, LD9, LD3, LD4, LD5, LD6, LD7, LD8 }, \
|
||||
{ LE1, LE2, LE3, LA9, LE5, LE9, LE7, LE8 }, \
|
||||
{ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, \
|
||||
{ RA1, RA2, RA3, RA4, RA5, RA6, RA7, RA8 }, \
|
||||
{ RB1, RB2, RB3, RB4, RB5, RB6, RB7, RB8 }, \
|
||||
{ RC1, RC2, RC3, RC4, RC5, RC6, RC9, RC8 }, \
|
||||
{ RD1, RD2, RD3, RD4, RD9, RD6, RD7, RD8 }, \
|
||||
{ RE1, RE2, RE9, RE4, RE5, RE6, RE7, RE8 }, \
|
||||
{ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, RA9, RB9 } \
|
||||
}
|
||||
|
||||
@@ -20,10 +20,10 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
/* USB Device descriptor parameter */
|
||||
#define VENDOR_ID 0xCB10
|
||||
#define PRODUCT_ID 0x1257
|
||||
#define PRODUCT_ID 0x2257
|
||||
#define DEVICE_VER 0x0200
|
||||
#define MANUFACTURER Keebio
|
||||
#define PRODUCT Quefrency
|
||||
#define PRODUCT Quefrency Rev. 2
|
||||
#define DESCRIPTION Split 60/65 percent staggered keyboard
|
||||
|
||||
/* key matrix size */
|
||||
@@ -38,10 +38,10 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#define MATRIX_ROW_PINS_RIGHT { B3, B2, B6, B4, D7 }
|
||||
#define MATRIX_COL_PINS_RIGHT { F1, F0, F4, F5, F6, D5, C7, D3, B7 }
|
||||
#define SPLIT_HAND_PIN F7
|
||||
#define ENCODERS_PAD_A { F6 }
|
||||
#define ENCODERS_PAD_B { F5 }
|
||||
#define ENCODERS_PAD_A_RIGHT { D4 }
|
||||
#define ENCODERS_PAD_B_RIGHT { D6 }
|
||||
#define ENCODERS_PAD_A { F5 }
|
||||
#define ENCODERS_PAD_B { F6 }
|
||||
#define ENCODERS_PAD_A_RIGHT { D6 }
|
||||
#define ENCODERS_PAD_B_RIGHT { D4 }
|
||||
|
||||
/* Set 0 if debouncing isn't needed */
|
||||
#define DEBOUNCE 5
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
LB3, LB4, LB5, LB6, LB7, LB8, RB1, RB2, RB3, RB4, RB5, RB6, RB7, RB8, \
|
||||
LC3, LC4, LC5, LC6, LC7, LC8, RC1, RC2, RC3, RC4, RC5, RC6, RC8, \
|
||||
LD3, LD5, LD6, LD7, LD8, LD9, RD1, RD2, RD3, RD4, RD5, RD7, RD8, \
|
||||
LE3, LE4, LE5, LE6, LE8, RE1, RE2, RE4, RE5, RE6, RE7, RE8 \
|
||||
LE3, LE4, LE5, LE6, LE8, RE1, RE2, RE3, RE4, RE5, RE7, RE8 \
|
||||
) \
|
||||
{ \
|
||||
{ KC_NO, KC_NO, LA3, LA4, LA5, LA6, LA7, LA8, LA9 }, \
|
||||
@@ -28,7 +28,7 @@
|
||||
{ RB1, RB2, RB3, RB4, RB5, RB6, RB7, RB8, KC_NO }, \
|
||||
{ RC1, RC2, RC3, RC4, RC5, RC6, KC_NO, RC8, KC_NO }, \
|
||||
{ RD1, RD2, RD3, RD4, RD5, KC_NO, RD7, RD8, KC_NO }, \
|
||||
{ RE1, RE2, KC_NO, RE4, RE5, RE6, RE7, RE8, KC_NO } \
|
||||
{ RE1, RE2, RE3, RE4, RE5, KC_NO, RE7, RE8, KC_NO } \
|
||||
}
|
||||
|
||||
#define LAYOUT LAYOUT_60 // For backwards compatibility with Rev. 1
|
||||
@@ -38,7 +38,7 @@
|
||||
LB3, LB4, LB5, LB6, LB7, LB8, RB1, RB2, RB3, RB4, RB5, RB6, RB7, RB8, RB9, \
|
||||
LC3, LC4, LC5, LC6, LC7, LC8, RC1, RC2, RC3, RC4, RC5, RC6, RC8, RC9, \
|
||||
LD3, LD5, LD6, LD7, LD8, LD9, RD1, RD2, RD3, RD4, RD5, RD7, RD8, RD9, \
|
||||
LE3, LE4, LE5, LE6, LE8, RE1, RE2, RE4, RE5, RE6, RE7, RE8, RE9 \
|
||||
LE3, LE4, LE5, LE6, LE8, RE1, RE2, RE3, RE4, RE5, RE7, RE8, RE9 \
|
||||
) \
|
||||
{ \
|
||||
{ KC_NO, KC_NO, LA3, LA4, LA5, LA6, LA7, LA8, LA9 }, \
|
||||
@@ -50,7 +50,7 @@
|
||||
{ RB1, RB2, RB3, RB4, RB5, RB6, RB7, RB8, RB9 }, \
|
||||
{ RC1, RC2, RC3, RC4, RC5, RC6, KC_NO, RC8, RC9 }, \
|
||||
{ RD1, RD2, RD3, RD4, RD5, KC_NO, RD7, RD8, RD9 }, \
|
||||
{ RE1, RE2, KC_NO, RE4, RE5, RE6, RE7, RE8, RE9 } \
|
||||
{ RE1, RE2, RE3, RE4, RE5, KC_NO, RE7, RE8, RE9 } \
|
||||
}
|
||||
|
||||
#define LAYOUT_60_with_macro( \
|
||||
@@ -58,7 +58,7 @@
|
||||
LB1, LB2, LB3, LB4, LB5, LB6, LB7, LB8, RB1, RB2, RB3, RB4, RB5, RB6, RB7, RB8, \
|
||||
LC1, LC2, LC3, LC4, LC5, LC6, LC7, LC8, RC1, RC2, RC3, RC4, RC5, RC6, RC8, \
|
||||
LD1, LD2, LD3, LD5, LD6, LD7, LD8, LD9, RD1, RD2, RD3, RD4, RD5, RD7, RD8, \
|
||||
LE1, LE2, LE3, LE4, LE5, LE6, LE8, RE1, RE2, RE4, RE5, RE6, RE7, RE8 \
|
||||
LE1, LE2, LE3, LE4, LE5, LE6, LE8, RE1, RE2, RE3, RE4, RE5, RE7, RE8 \
|
||||
) \
|
||||
{ \
|
||||
{ LA1, LA2, LA3, LA4, LA5, LA6, LA7, LA8, LA9 }, \
|
||||
@@ -70,7 +70,7 @@
|
||||
{ RB1, RB2, RB3, RB4, RB5, RB6, RB7, RB8, KC_NO }, \
|
||||
{ RC1, RC2, RC3, RC4, RC5, RC6, KC_NO, RC8, KC_NO }, \
|
||||
{ RD1, RD2, RD3, RD4, RD5, KC_NO, RD7, RD8, KC_NO }, \
|
||||
{ RE1, RE2, KC_NO, RE4, RE5, RE6, RE7, RE8, KC_NO } \
|
||||
{ RE1, RE2, RE3, RE4, RE5, KC_NO, RE7, RE8, KC_NO } \
|
||||
}
|
||||
|
||||
#define LAYOUT_65_with_macro( \
|
||||
@@ -78,7 +78,7 @@
|
||||
LB1, LB2, LB3, LB4, LB5, LB6, LB7, LB8, RB1, RB2, RB3, RB4, RB5, RB6, RB7, RB8, RB9, \
|
||||
LC1, LC2, LC3, LC4, LC5, LC6, LC7, LC8, RC1, RC2, RC3, RC4, RC5, RC6, RC8, RC9, \
|
||||
LD1, LD2, LD3, LD5, LD6, LD7, LD8, LD9, RD1, RD2, RD3, RD4, RD5, RD7, RD8, RD9, \
|
||||
LE1, LE2, LE3, LE4, LE5, LE6, LE8, RE1, RE2, RE4, RE5, RE6, RE7, RE8, RE9 \
|
||||
LE1, LE2, LE3, LE4, LE5, LE6, LE8, RE1, RE2, RE3, RE4, RE5, RE7, RE8, RE9 \
|
||||
) \
|
||||
{ \
|
||||
{ LA1, LA2, LA3, LA4, LA5, LA6, LA7, LA8, LA9 }, \
|
||||
@@ -90,7 +90,7 @@
|
||||
{ RB1, RB2, RB3, RB4, RB5, RB6, RB7, RB8, RB9 }, \
|
||||
{ RC1, RC2, RC3, RC4, RC5, RC6, KC_NO, RC8, RC9 }, \
|
||||
{ RD1, RD2, RD3, RD4, RD5, KC_NO, RD7, RD8, RD9 }, \
|
||||
{ RE1, RE2, KC_NO, RE4, RE5, RE6, RE7, RE8, RE9 } \
|
||||
{ RE1, RE2, RE3, RE4, RE5, KC_NO, RE7, RE8, RE9 } \
|
||||
}
|
||||
|
||||
#define LAYOUT_60_iso( \
|
||||
@@ -98,7 +98,7 @@
|
||||
LB3, LB4, LB5, LB6, LB7, LB8, RB1, RB2, RB3, RB4, RB5, RB6, RB7, \
|
||||
LC3, LC4, LC5, LC6, LC7, LC8, RC1, RC2, RC3, RC4, RC5, RC6, RC7, RC8, \
|
||||
LD3, LD4, LD5, LD6, LD7, LD8, LD9, RD1, RD2, RD3, RD4, RD5, RD7, RD8, \
|
||||
LE3, LE4, LE5, LE6, LE8, RE1, RE2, RE4, RE5, RE6, RE7, RE8 \
|
||||
LE3, LE4, LE5, LE6, LE8, RE1, RE2, RE3, RE4, RE5, RE7, RE8 \
|
||||
) \
|
||||
{ \
|
||||
{ KC_NO, KC_NO, LA3, LA4, LA5, LA6, LA7, LA8, LA9 }, \
|
||||
@@ -110,7 +110,7 @@
|
||||
{ RB1, RB2, RB3, RB4, RB5, RB6, RB7, KC_NO, KC_NO }, \
|
||||
{ RC1, RC2, RC3, RC4, RC5, RC6, RC7, RC8, KC_NO }, \
|
||||
{ RD1, RD2, RD3, RD4, RD5, KC_NO, RD7, RD8, KC_NO }, \
|
||||
{ RE1, RE2, KC_NO, RE4, RE5, RE6, RE7, RE8, KC_NO } \
|
||||
{ RE1, RE2, RE3, RE4, RE5, KC_NO, RE7, RE8, KC_NO } \
|
||||
}
|
||||
|
||||
#define LAYOUT_65_iso( \
|
||||
@@ -118,7 +118,7 @@
|
||||
LB3, LB4, LB5, LB6, LB7, LB8, RB1, RB2, RB3, RB4, RB5, RB6, RB7, RB9, \
|
||||
LC3, LC4, LC5, LC6, LC7, LC8, RC1, RC2, RC3, RC4, RC5, RC6, RC7, RC8, RC9, \
|
||||
LD3, LD4, LD5, LD6, LD7, LD8, LD9, RD1, RD2, RD3, RD4, RD5, RD7, RD8, RD9, \
|
||||
LE3, LE4, LE5, LE6, LE8, RE1, RE2, RE4, RE5, RE6, RE7, RE8, RE9 \
|
||||
LE3, LE4, LE5, LE6, LE8, RE1, RE2, RE3, RE4, RE5, RE7, RE8, RE9 \
|
||||
) \
|
||||
{ \
|
||||
{ KC_NO, KC_NO, LA3, LA4, LA5, LA6, LA7, LA8, LA9 }, \
|
||||
@@ -130,7 +130,7 @@
|
||||
{ RB1, RB2, RB3, RB4, RB5, RB6, RB7, KC_NO, RB9 }, \
|
||||
{ RC1, RC2, RC3, RC4, RC5, RC6, RC7, RC8, RC9 }, \
|
||||
{ RD1, RD2, RD3, RD4, RD5, KC_NO, RD7, RD8, RD9 }, \
|
||||
{ RE1, RE2, KC_NO, RE4, RE5, RE6, RE7, RE8, RE9 } \
|
||||
{ RE1, RE2, RE3, RE4, RE5, KC_NO, RE7, RE8, RE9 } \
|
||||
}
|
||||
|
||||
#define LAYOUT_60_iso_with_macro( \
|
||||
@@ -138,7 +138,7 @@
|
||||
LB1, LB2, LB3, LB4, LB5, LB6, LB7, LB8, RB1, RB2, RB3, RB4, RB5, RB6, RB7, \
|
||||
LC1, LC2, LC3, LC4, LC5, LC6, LC7, LC8, RC1, RC2, RC3, RC4, RC5, RC6, RC7, RC8, \
|
||||
LD1, LD2, LD3, LD4, LD5, LD6, LD7, LD8, LD9, RD1, RD2, RD3, RD4, RD5, RD7, RD8, \
|
||||
LE1, LE2, LE3, LE4, LE5, LE6, LE8, RE1, RE2, RE4, RE5, RE6, RE7, RE8 \
|
||||
LE1, LE2, LE3, LE4, LE5, LE6, LE8, RE1, RE2, RE3, RE4, RE5, RE7, RE8 \
|
||||
) \
|
||||
{ \
|
||||
{ LA1, LA2, LA3, LA4, LA5, LA6, LA7, LA8, LA9 }, \
|
||||
@@ -150,7 +150,7 @@
|
||||
{ RB1, RB2, RB3, RB4, RB5, RB6, RB7, KC_NO, KC_NO }, \
|
||||
{ RC1, RC2, RC3, RC4, RC5, RC6, RC7, RC8, KC_NO }, \
|
||||
{ RD1, RD2, RD3, RD4, RD5, KC_NO, RD7, RD8, KC_NO }, \
|
||||
{ RE1, RE2, KC_NO, RE4, RE5, RE6, RE7, RE8, KC_NO } \
|
||||
{ RE1, RE2, RE3, RE4, RE5, KC_NO, RE7, RE8, KC_NO } \
|
||||
}
|
||||
|
||||
#define LAYOUT_65_iso_with_macro( \
|
||||
@@ -158,7 +158,7 @@
|
||||
LB1, LB2, LB3, LB4, LB5, LB6, LB7, LB8, RB1, RB2, RB3, RB4, RB5, RB6, RB7, RB9, \
|
||||
LC1, LC2, LC3, LC4, LC5, LC6, LC7, LC8, RC1, RC2, RC3, RC4, RC5, RC6, RC7, RC8, RC9, \
|
||||
LD1, LD2, LD3, LD4, LD5, LD6, LD7, LD8, LD9, RD1, RD2, RD3, RD4, RD5, RD7, RD8, RD9, \
|
||||
LE1, LE2, LE3, LE4, LE5, LE6, LE8, RE1, RE2, RE4, RE5, RE6, RE7, RE8, RE9 \
|
||||
LE1, LE2, LE3, LE4, LE5, LE6, LE8, RE1, RE2, RE3, RE4, RE5, RE7, RE8, RE9 \
|
||||
) \
|
||||
{ \
|
||||
{ LA1, LA2, LA3, LA4, LA5, LA6, LA7, LA8, LA9 }, \
|
||||
@@ -170,7 +170,7 @@
|
||||
{ RB1, RB2, RB3, RB4, RB5, RB6, RB7, KC_NO, RB9 }, \
|
||||
{ RC1, RC2, RC3, RC4, RC5, RC6, RC7, RC8, RC9 }, \
|
||||
{ RD1, RD2, RD3, RD4, RD5, KC_NO, RD7, RD8, RD9 }, \
|
||||
{ RE1, RE2, KC_NO, RE4, RE5, RE6, RE7, RE8, RE9 } \
|
||||
{ RE1, RE2, RE3, RE4, RE5, KC_NO, RE7, RE8, RE9 } \
|
||||
}
|
||||
|
||||
#define LAYOUT_all( \
|
||||
@@ -178,7 +178,7 @@
|
||||
LB1, LB2, LB3, LB4, LB5, LB6, LB7, LB8, RB1, RB2, RB3, RB4, RB5, RB6, RB7, RB8, RB9, \
|
||||
LC1, LC2, LC3, LC4, LC5, LC6, LC7, LC8, RC1, RC2, RC3, RC4, RC5, RC6, RC7, RC8, RC9, \
|
||||
LD1, LD2, LD3, LD4, LD5, LD6, LD7, LD8, LD9, RD1, RD2, RD3, RD4, RD5, RD7, RD8, RD9, \
|
||||
LE1, LE2, LE3, LE4, LE5, LE6, LE7, LE8, RE1, RE2, RE4, RE5, RE6, RE7, RE8, RE9 \
|
||||
LE1, LE2, LE3, LE4, LE5, LE6, LE7, LE8, RE1, RE2, RE3, RE4, RE5, RE7, RE8, RE9 \
|
||||
) \
|
||||
{ \
|
||||
{ LA1, LA2, LA3, LA4, LA5, LA6, LA7, LA8, LA9 }, \
|
||||
@@ -190,5 +190,5 @@
|
||||
{ RB1, RB2, RB3, RB4, RB5, RB6, RB7, RB8, RB9 }, \
|
||||
{ RC1, RC2, RC3, RC4, RC5, RC6, RC7, RC8, RC9 }, \
|
||||
{ RD1, RD2, RD3, RD4, RD5, KC_NO, RD7, RD8, RD9 }, \
|
||||
{ RE1, RE2, KC_NO, RE4, RE5, RE6, RE7, RE8, RE9 } \
|
||||
{ RE1, RE2, RE3, RE4, RE5, KC_NO, RE7, RE8, RE9 } \
|
||||
}
|
||||
|
||||
@@ -17,7 +17,7 @@ BOOTLOADER = bootloadHID
|
||||
BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration
|
||||
MOUSEKEY_ENABLE = no # Mouse keys
|
||||
EXTRAKEY_ENABLE = yes # Audio control and System control
|
||||
CONSOLE_ENABLE = yes # Console for debug
|
||||
CONSOLE_ENABLE = no # Console for debug
|
||||
COMMAND_ENABLE = yes # Commands for debug and configuration
|
||||
# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
|
||||
NKRO_ENABLE = no # USB Nkey Rollover
|
||||
|
||||
@@ -37,3 +37,5 @@
|
||||
// If you are using an Elite C rev3 on the slave side, uncomment the lines below:
|
||||
#define SPLIT_USB_DETECT
|
||||
#define SPLIT_USB_TIMEOUT 1000
|
||||
|
||||
#define KEYLOGGER_LENGTH 10
|
||||
|
||||
@@ -2,35 +2,6 @@
|
||||
|
||||
uint8_t is_master;
|
||||
|
||||
#ifdef OLED_DRIVER_ENABLE
|
||||
# define KEYLOGGER_LENGTH 10
|
||||
static uint32_t oled_timer = 0;
|
||||
static char keylog_str[KEYLOGGER_LENGTH + 1] = {"\n"};
|
||||
static uint16_t log_timer = 0;
|
||||
// clang-format off
|
||||
static const char PROGMEM code_to_name[0xFF] = {
|
||||
// 0 1 2 3 4 5 6 7 8 9 A B c D E F
|
||||
' ', ' ', ' ', ' ', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', // 0x
|
||||
'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', '1', '2', // 1x
|
||||
'3', '4', '5', '6', '7', '8', '9', '0', 20, 19, 27, 26, 22, '-', '=', '[', // 2x
|
||||
']','\\', '#', ';','\'', '`', ',', '.', '/', 128, ' ', ' ', ' ', ' ', ' ', ' ', // 3x
|
||||
' ', ' ', ' ', ' ', ' ', ' ', 'P', 'S', ' ', ' ', ' ', ' ', 16, ' ', ' ', ' ', // 4x
|
||||
' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', // 5x
|
||||
' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', // 6x
|
||||
' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', // 7x
|
||||
' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', // 8x
|
||||
' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', // 9x
|
||||
' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', // Ax
|
||||
' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', // Bx
|
||||
' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', // Cx
|
||||
' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', // Dx
|
||||
'C', 'S', 'A', 'C', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', // Ex
|
||||
' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ' // Fx
|
||||
};
|
||||
|
||||
void add_keylog(uint16_t keycode);
|
||||
#endif
|
||||
|
||||
#ifndef UNICODE_ENABLE
|
||||
# define UC(x) KC_NO
|
||||
#endif
|
||||
@@ -52,7 +23,7 @@ void add_keylog(uint16_t keycode);
|
||||
LAYOUT_wrapper( \
|
||||
KC_ESC, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, KC_MINS, \
|
||||
LALT_T(KC_TAB), K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, RALT_T(KC_QUOT), \
|
||||
OS_LSFT, CTL_T(K21), K22, K23, K24, K25, KC_NO, KC_NO, MEH(KC_MINS), KC_NO, K26, K27, K28, K29, RCTL_T(K2A), OS_RSFT, \
|
||||
OS_LSFT, CTL_T(K21), K22, K23, K24, K25, KC_NO, MEH(KC_MINS), TG(_DIABLO), KC_NO, K26, K27, K28, K29, RCTL_T(K2A), OS_RSFT, \
|
||||
KC_MUTE, OS_LALT, KC_GRV, KC_SPC, BK_LWER, DL_RAIS, KC_ENT, OS_RGUI, UC(0x03A8), UC(0x2E2E) \
|
||||
)
|
||||
/* Re-pass though to allow templates to be used */
|
||||
@@ -107,12 +78,19 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
_____________CARPLAX_QFMLWY_L2_____________, _____________CARPLAX_QFMLWY_R2_____________,
|
||||
_____________CARPLAX_QFMLWY_L3_____________, _____________CARPLAX_QFMLWY_R3_____________
|
||||
),
|
||||
|
||||
[_MODS] = LAYOUT_wrapper(
|
||||
_______, ___________________BLANK___________________, ___________________BLANK___________________, _______,
|
||||
_______, ___________________BLANK___________________, ___________________BLANK___________________, _______,
|
||||
KC_LSFT, ___________________BLANK___________________, _______, _______, _______, _______, ___________________BLANK___________________, KC_RSFT,
|
||||
_______, _______, KC_LALT, _______, _______, _______, _______, KC_RGUI, _______, _______
|
||||
),
|
||||
[_DIABLO] = LAYOUT_wrapper(
|
||||
KC_ESC, KC_S, KC_I, KC_F, KC_M, KC_T, KC_F9, KC_F10, KC_F11, KC_F12, KC_NO, KC_NO,
|
||||
KC_TAB, KC_1, KC_2, KC_3, KC_4, KC_G, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
|
||||
KC_LCTL, KC_D3_1, KC_D3_2, KC_D3_3, KC_D3_4, KC_Z, KC_J, KC_L, TG(_DIABLO), KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
|
||||
KC_DIABLO_CLEAR, KC_J, KC_NO, SFT_T(KC_SPACE), ALT_T(KC_Q), KC_NO, KC_NO, KC_NO, KC_NO, KC_NO
|
||||
),
|
||||
[_LOWER] = LAYOUT_wrapper(
|
||||
KC_F12, _________________LOWER_L1__________________, _________________LOWER_R1__________________, KC_F11,
|
||||
_______, _________________LOWER_L2__________________, _________________LOWER_R2__________________, KC_PIPE,
|
||||
@@ -142,10 +120,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
|
||||
bool process_record_keymap(uint16_t keycode, keyrecord_t *record) {
|
||||
if (record->event.pressed) {
|
||||
#ifdef OLED_DRIVER_ENABLE
|
||||
oled_timer = timer_read32();
|
||||
add_keylog(keycode);
|
||||
#endif
|
||||
#ifndef SPLIT_KEYBOARD
|
||||
if (keycode == RESET && !is_master) {
|
||||
return false;
|
||||
@@ -154,133 +128,16 @@ bool process_record_keymap(uint16_t keycode, keyrecord_t *record) {
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
void matrix_init_keymap(void) { is_master = (uint8_t)is_keyboard_master(); }
|
||||
|
||||
#ifdef OLED_DRIVER_ENABLE
|
||||
oled_rotation_t oled_init_user(oled_rotation_t rotation) { return OLED_ROTATION_180; }
|
||||
|
||||
void add_keylog(uint16_t keycode) {
|
||||
if ((keycode >= QK_MOD_TAP && keycode <= QK_MOD_TAP_MAX) || (keycode >= QK_LAYER_TAP && keycode <= QK_LAYER_TAP_MAX) || (keycode >= QK_MODS && keycode <= QK_MODS_MAX)) {
|
||||
keycode = keycode & 0xFF;
|
||||
} else if (keycode > 0xFF) {
|
||||
keycode = 0;
|
||||
}
|
||||
|
||||
for (uint8_t i = (KEYLOGGER_LENGTH - 1); i > 0; --i) {
|
||||
keylog_str[i] = keylog_str[i - 1];
|
||||
}
|
||||
|
||||
if (keycode < (sizeof(code_to_name) / sizeof(char))) {
|
||||
keylog_str[0] = pgm_read_byte(&code_to_name[keycode]);
|
||||
}
|
||||
|
||||
log_timer = timer_read();
|
||||
}
|
||||
|
||||
void update_log(void) {
|
||||
if (timer_elapsed(log_timer) > 750) {
|
||||
// add_keylog(0);
|
||||
}
|
||||
}
|
||||
|
||||
void render_keylogger_status(void) {
|
||||
oled_write_P(PSTR("Keylogger: "), false);
|
||||
oled_write(keylog_str, false);
|
||||
}
|
||||
|
||||
void render_default_layer_state(void) {
|
||||
oled_write_P(PSTR("Layout: "), false);
|
||||
switch (get_highest_layer(default_layer_state)) {
|
||||
case _QWERTY: oled_write_ln_P(PSTR("Qwerty"), false); break;
|
||||
case _COLEMAK: oled_write_ln_P(PSTR("Colemak"), false); break;
|
||||
case _DVORAK: oled_write_ln_P(PSTR("Dvorak"), false); break;
|
||||
case _WORKMAN: oled_write_ln_P(PSTR("Workman"), false); break;
|
||||
case _NORMAN: oled_write_ln_P(PSTR("Norman"), false); break;
|
||||
case _MALTRON: oled_write_ln_P(PSTR("Maltron"), false); break;
|
||||
case _EUCALYN: oled_write_ln_P(PSTR("Eucalyn"), false); break;
|
||||
case _CARPLAX: oled_write_ln_P(PSTR("Carplax"), false); break;
|
||||
}
|
||||
}
|
||||
|
||||
void render_layer_state(void) {
|
||||
oled_write_ln_P(PSTR("Layer:"), false);
|
||||
oled_write_P(PSTR(" "), false);
|
||||
oled_write_P(PSTR("Lower"), layer_state_is(_LOWER));
|
||||
oled_write_P(PSTR(" "), false);
|
||||
oled_write_P(PSTR("Raise"), layer_state_is(_RAISE));
|
||||
oled_write_P(PSTR(" "), false);
|
||||
oled_write_ln_P(PSTR("Mods"), layer_state_is(_MODS));
|
||||
}
|
||||
|
||||
void render_keylock_status(uint8_t led_usb_state) {
|
||||
oled_write_P(PSTR("Lock: "), false);
|
||||
oled_write_P(PSTR("NUML"), led_usb_state & (1 << USB_LED_NUM_LOCK));
|
||||
oled_write_P(PSTR(" "), false);
|
||||
oled_write_P(PSTR("CAPS"), led_usb_state & (1 << USB_LED_CAPS_LOCK));
|
||||
oled_write_P(PSTR(" "), false);
|
||||
oled_write_ln_P(PSTR("SCLK"), led_usb_state & (1 << USB_LED_SCROLL_LOCK));
|
||||
}
|
||||
|
||||
void render_mod_status(uint8_t modifiers) {
|
||||
oled_write_P(PSTR("Mods: "), false);
|
||||
oled_write_P(PSTR("Sft"), (modifiers & MOD_MASK_SHIFT));
|
||||
oled_write_P(PSTR(" "), false);
|
||||
oled_write_P(PSTR("Ctl"), (modifiers & MOD_MASK_CTRL));
|
||||
oled_write_P(PSTR(" "), false);
|
||||
oled_write_P(PSTR("Alt"), (modifiers & MOD_MASK_ALT));
|
||||
oled_write_P(PSTR(" "), false);
|
||||
oled_write_P(PSTR("GUI"), (modifiers & MOD_MASK_GUI));
|
||||
}
|
||||
|
||||
void render_bootmagic_status(void) {
|
||||
/* Show Ctrl-Gui Swap options */
|
||||
static const char PROGMEM logo[][2][3] = {
|
||||
{{0x97, 0x98, 0}, {0xb7, 0xb8, 0}},
|
||||
{{0x95, 0x96, 0}, {0xb5, 0xb6, 0}},
|
||||
};
|
||||
oled_write_P(PSTR("Boot "), false);
|
||||
if (keymap_config.swap_lctl_lgui) {
|
||||
oled_write_P(logo[1][0], false);
|
||||
} else {
|
||||
oled_write_P(logo[0][0], false);
|
||||
}
|
||||
oled_write_P(PSTR(" "), false);
|
||||
oled_write_P(PSTR("NKRO"), keymap_config.nkro);
|
||||
oled_write_P(PSTR(" "), false);
|
||||
oled_write_ln_P(PSTR("GUI"), !keymap_config.no_gui);
|
||||
oled_write_P(PSTR("Magic "), false);
|
||||
if (keymap_config.swap_lctl_lgui) {
|
||||
oled_write_P(logo[1][1], false);
|
||||
} else {
|
||||
oled_write_P(logo[0][1], false);
|
||||
}
|
||||
oled_write_P(PSTR(" "), false);
|
||||
oled_write_P(PSTR("GRV"), keymap_config.swap_grave_esc);
|
||||
oled_write_P(PSTR(" "), false);
|
||||
oled_write_ln_P(PSTR("CAPS"), keymap_config.swap_control_capslock);
|
||||
}
|
||||
|
||||
void render_user_status(void) {
|
||||
oled_write_P(PSTR("USER: "), false);
|
||||
oled_write_P(PSTR("Anim"), userspace_config.rgb_matrix_idle_anim);
|
||||
oled_write_P(PSTR(" "), false);
|
||||
oled_write_P(PSTR("Layr"), userspace_config.rgb_layer_change);
|
||||
oled_write_P(PSTR(" "), false);
|
||||
oled_write_ln_P(PSTR("Nuke"), userspace_config.nuke_switch);
|
||||
}
|
||||
|
||||
// clang-format off
|
||||
void render_logo(void) {
|
||||
static const char PROGMEM qmk_logo[] = {
|
||||
0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8a,0x8b,0x8c,0x8d,0x8e,0x8f,0x90,0x91,0x92,0x93,0x94,
|
||||
0xa0,0xa1,0xa2,0xa3,0xa4,0xa5,0xa6,0xa7,0xa8,0xa9,0xaa,0xab,0xac,0xad,0xae,0xaf,0xb0,0xb1,0xb2,0xb3,0xb4,
|
||||
0xc0,0xc1,0xc2,0xc3,0xc4,0xc5,0xc6,0xc7,0xc8,0xc9,0xca,0xcb,0xcc,0xcd,0xce,0xcf,0xd0,0xd1,0xd2,0xd3,0xd4,0};
|
||||
|
||||
oled_write_P(qmk_logo, false);
|
||||
}
|
||||
|
||||
# ifndef SPLIT_TRANSPORT_MIRROR
|
||||
void render_kyria_logo(void) {
|
||||
void oled_driver_render_logo(void) {
|
||||
static const char PROGMEM kyria_logo[] = {
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,128,192,224,240,112,120, 56, 60, 28, 30, 14, 14, 14, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 14, 14, 14, 30, 28, 60, 56,120,112,240,224,192,128,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0,192,224,240,124, 62, 31, 15, 7, 3, 1,128,192,224,240,120, 56, 60, 28, 30, 14, 14, 7, 7,135,231,127, 31,255,255, 31,127,231,135, 7, 7, 14, 14, 30, 28, 60, 56,120,240,224,192,128, 1, 3, 7, 15, 31, 62,124,240,224,192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
@@ -294,51 +151,6 @@ void render_kyria_logo(void) {
|
||||
oled_write_raw_P(kyria_logo, sizeof(kyria_logo));
|
||||
}
|
||||
# endif
|
||||
// clang-format on
|
||||
|
||||
void render_status_main(void) {
|
||||
/* Show Keyboard Layout */
|
||||
render_default_layer_state();
|
||||
render_keylock_status(host_keyboard_leds());
|
||||
render_bootmagic_status();
|
||||
render_user_status();
|
||||
|
||||
render_keylogger_status();
|
||||
}
|
||||
|
||||
void render_status_secondary(void) {
|
||||
/* Show Keyboard Layout */
|
||||
render_logo();
|
||||
render_default_layer_state();
|
||||
render_layer_state();
|
||||
render_mod_status(get_mods() | get_oneshot_mods());
|
||||
|
||||
render_keylogger_status();
|
||||
}
|
||||
|
||||
void oled_task_user(void) {
|
||||
if (timer_elapsed32(oled_timer) > 30000) {
|
||||
oled_off();
|
||||
return;
|
||||
}
|
||||
# ifndef SPLIT_KEYBOARD
|
||||
else {
|
||||
oled_on();
|
||||
}
|
||||
# endif
|
||||
|
||||
update_log();
|
||||
if (is_master) {
|
||||
render_status_main(); // Renders the current keyboard state (layer, lock, caps, scroll, etc)
|
||||
} else {
|
||||
# ifdef SPLIT_TRANSPORT_MIRROR
|
||||
render_status_secondary();
|
||||
# else
|
||||
render_kyria_logo();
|
||||
# endif
|
||||
}
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
#ifdef ENCODER_ENABLE
|
||||
|
||||
@@ -20,3 +20,5 @@ HD44780_ENABLE = no # Enable support for HD44780 based LCDs
|
||||
BOOTLOADER = atmel-dfu
|
||||
|
||||
SPLIT_TRANSPORT = mirror
|
||||
|
||||
TAP_DANCE_ENABLE = yes
|
||||
|
||||
94
keyboards/launchpad/keymaps/via/keymap.c
Normal file
94
keyboards/launchpad/keymaps/via/keymap.c
Normal file
@@ -0,0 +1,94 @@
|
||||
// Below layout is based upon /u/That-Canadian's planck layout
|
||||
#include QMK_KEYBOARD_H
|
||||
|
||||
|
||||
// Each layer gets a name for readability, which is then used in the keymap matrix below.
|
||||
// The underscores don't mean anything - you can have a layer called STUFF or any other name.
|
||||
// Layer names don't all need to be of the same length, obviously, and you can also skip them
|
||||
// entirely and just use numbers.
|
||||
enum layer_names {
|
||||
_QWERTY,
|
||||
_FUNC,
|
||||
_LAYER2,
|
||||
_LAYER3
|
||||
};
|
||||
|
||||
// Defines for task manager and such
|
||||
#define CALTDEL LCTL(LALT(KC_DEL))
|
||||
#define TSKMGR LCTL(LSFT(KC_ESC))
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
|
||||
/* Qwerty
|
||||
* ,-------------.
|
||||
* | 1 | 2 |
|
||||
* |------+------|
|
||||
* | 3 | 4 |
|
||||
* |------+------|
|
||||
* | 5 | 6 |
|
||||
* |------+------|
|
||||
* | FUNC | 8 |
|
||||
* `-------------'
|
||||
*/
|
||||
[_QWERTY] = LAYOUT(
|
||||
KC_1, KC_2,
|
||||
KC_3, KC_4,
|
||||
KC_5, KC_6,
|
||||
MO(_FUNC), KC_8
|
||||
),
|
||||
|
||||
/* Function
|
||||
* ,-------------.
|
||||
* | Q |CALDEL|
|
||||
* |------+------|
|
||||
* | A |TSKMGR|
|
||||
* |------+------|
|
||||
* | Z | X |
|
||||
* |------+------|
|
||||
* | | C |
|
||||
* `-------------'
|
||||
*/
|
||||
[_FUNC] = LAYOUT(
|
||||
KC_Q, CALTDEL,
|
||||
KC_A, TSKMGR,
|
||||
KC_Z, KC_X,
|
||||
KC_TRNS, KC_C
|
||||
),
|
||||
|
||||
/* Layer 2
|
||||
* ,-------------.
|
||||
* | | |
|
||||
* |------+------|
|
||||
* | | |
|
||||
* |------+------|
|
||||
* | | |
|
||||
* |------+------|
|
||||
* | | |
|
||||
* `-------------'
|
||||
*/
|
||||
[_LAYER2] = LAYOUT(
|
||||
KC_TRNS, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS
|
||||
),
|
||||
|
||||
/* Layer 3
|
||||
* ,-------------.
|
||||
* | | |
|
||||
* |------+------|
|
||||
* | | |
|
||||
* |------+------|
|
||||
* | | |
|
||||
* |------+------|
|
||||
* | | |
|
||||
* `-------------'
|
||||
*/
|
||||
[_LAYER3] = LAYOUT(
|
||||
KC_TRNS, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS
|
||||
)
|
||||
|
||||
};
|
||||
1
keyboards/launchpad/keymaps/via/rules.mk
Normal file
1
keyboards/launchpad/keymaps/via/rules.mk
Normal file
@@ -0,0 +1 @@
|
||||
VIA_ENABLE = yes
|
||||
@@ -15,7 +15,7 @@ BOOTLOADER = atmel-dfu
|
||||
BOOTMAGIC_ENABLE = yes
|
||||
MOUSEKEY_ENABLE = yes
|
||||
EXTRAKEY_ENABLE = yes
|
||||
CONSOLE_ENABLE = yes
|
||||
CONSOLE_ENABLE = no
|
||||
COMMAND_ENABLE = yes
|
||||
BACKLIGHT_ENABLE = yes
|
||||
RGBLIGHT_ENABLE = yes
|
||||
|
||||
@@ -15,7 +15,7 @@ BOOTLOADER = bootloadHID
|
||||
BOOTMAGIC_ENABLE = no
|
||||
MOUSEKEY_ENABLE = yes
|
||||
EXTRAKEY_ENABLE = yes
|
||||
CONSOLE_ENABLE = yes
|
||||
CONSOLE_ENABLE = no
|
||||
COMMAND_ENABLE = no
|
||||
BACKLIGHT_ENABLE = yes
|
||||
RGBLIGHT_ENABLE = yes
|
||||
|
||||
@@ -15,7 +15,7 @@ BOOTLOADER = bootloadHID
|
||||
BOOTMAGIC_ENABLE = no
|
||||
MOUSEKEY_ENABLE = no
|
||||
EXTRAKEY_ENABLE = yes
|
||||
CONSOLE_ENABLE = yes
|
||||
CONSOLE_ENABLE = no
|
||||
COMMAND_ENABLE = yes
|
||||
BACKLIGHT_ENABLE = yes
|
||||
RGBLIGHT_ENABLE = yes
|
||||
|
||||
@@ -15,7 +15,7 @@ BOOTLOADER = bootloadHID
|
||||
BOOTMAGIC_ENABLE = full
|
||||
MOUSEKEY_ENABLE = no
|
||||
EXTRAKEY_ENABLE = yes
|
||||
CONSOLE_ENABLE = yes
|
||||
CONSOLE_ENABLE = no
|
||||
COMMAND_ENABLE = yes
|
||||
BACKLIGHT_ENABLE = yes
|
||||
RGBLIGHT_ENABLE = yes
|
||||
|
||||
@@ -15,7 +15,7 @@ BOOTLOADER = bootloadHID
|
||||
BOOTMAGIC_ENABLE = full
|
||||
MOUSEKEY_ENABLE = no
|
||||
EXTRAKEY_ENABLE = yes
|
||||
CONSOLE_ENABLE = yes
|
||||
CONSOLE_ENABLE = no
|
||||
COMMAND_ENABLE = yes
|
||||
BACKLIGHT_ENABLE = yes
|
||||
RGBLIGHT_ENABLE = yes
|
||||
|
||||
39
keyboards/planck/keymaps/sigul/config.h
Normal file
39
keyboards/planck/keymaps/sigul/config.h
Normal file
@@ -0,0 +1,39 @@
|
||||
#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
|
||||
|
||||
// Most tactile encoders have detents every 4 stages
|
||||
#define ENCODER_RESOLUTION 4
|
||||
|
||||
222
keyboards/planck/keymaps/sigul/keymap.c
Normal file
222
keyboards/planck/keymaps/sigul/keymap.c
Normal file
@@ -0,0 +1,222 @@
|
||||
/*
|
||||
*
|
||||
* An Italian ANSI layout
|
||||
* Version 0.3
|
||||
*
|
||||
* Created by Silvio Gulizia on the basis of the default Planck keymap.
|
||||
* thanks to SomeBuddyOnReddit, gepeirl, fauxpark, BXO511, drashna, ridingqwerty ...
|
||||
*
|
||||
* based on the original Planck layout
|
||||
* Italian accented vowels "<22>" and "à" have been moved from the QWERTY layer to the LOWER layers, while "è" and "ù" remain respectively on RAISE and LOWER.
|
||||
*
|
||||
*/
|
||||
|
||||
#include QMK_KEYBOARD_H
|
||||
#include "muse.h"
|
||||
#include "keymap_italian_osx_ansi.h"
|
||||
#include "sigul.h"
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
|
||||
/* Qwerty
|
||||
* ,-----------------------------------------------------------------------------------.
|
||||
* |Tab/FN| Q | W | E | R | T | Y | U | I | O | P | Bksp |
|
||||
* |------+------+------+------+------+-------------+------+------+------+------+------|
|
||||
* |Esc/FN| A | S | D | F | G | H | J | K | L | ;: | '" |
|
||||
* |------+------+------+------+------+------|------+------+------+------+------+------|
|
||||
* | Shift| Z | X | C | V | FN/B | N | M | ,< | .> | /! |S/Ent |
|
||||
* |------+------+------+------+------+------+------+------+------+------+------+------|
|
||||
* | FN | Ctrl | Alt | GUI |Lower | Space |Raise | Left | Down | Up |Right |
|
||||
* `-----------------------------------------------------------------------------------'
|
||||
*/
|
||||
[_QWERTY] = LAYOUT_ortho_4x12(
|
||||
TABFN, IT_Q, IT_W, IT_E, IT_R, IT_T, IT_Y, IT_U, IT_I, IT_O, IT_P, KC_BSPC,
|
||||
ESCFN, IT_A, IT_S, IT_D, IT_F, IT_G, IT_H, IT_J, IT_K, IT_L, IT_SCCL, IT_APDQ,
|
||||
KC_LSFT, IT_Z, IT_X, IT_C, IT_V, MS_B, IT_N, IT_M, IT_CMLS, IT_DTMR, IT_SLQS, MT(MOD_RSFT, KC_ENT),
|
||||
FN, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT
|
||||
),
|
||||
|
||||
/* Lower
|
||||
* added ò and à that were on the default Planck Querty layer when used with a device with lang set to Italian
|
||||
* ,-----------------------------------------------------------------------------------.
|
||||
* | ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | Del |
|
||||
* |------+------+------+------+------+-------------+------+------+------+------+------|
|
||||
* | | F1 | F2 | F3 | F4 | F5 | | _ | = | é | ò | à |
|
||||
* |------+------+------+------+------+------|------+------+------+------+------+------|
|
||||
* | | F6 | F7 | F8 | F9 | MOUSE|NUMPAD| § | ± | { | } | | |
|
||||
* |------+------+------+------+------+------+------+------+------+------+------+------|
|
||||
* | | | | | | | | | Next | Vol- | Vol+ | Play |
|
||||
* `-----------------------------------------------------------------------------------'
|
||||
*/
|
||||
|
||||
[_LOWER] = LAYOUT_ortho_4x12(
|
||||
IT_TILDE, IT_EXLM, IT_AT, IT_SHRP, IT_DLR, IT_PERC, IT_CRC, IT_AMPR, IT_ASTR, IT_LPRN, IT_RPRN, KC_DEL,
|
||||
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, _______, S(IT_MINS), IT_EQL, S(IT_EACC), IT_OACC, IT_AACC,
|
||||
_______, KC_F6, KC_F7, KC_F8, KC_F9, MOUSE, NUMPAD, S(IT_UACC), IT_PLMN, IT_LCBR, IT_RCBR, IT_PIPE,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY
|
||||
),
|
||||
|
||||
/* Raise
|
||||
* ,-----------------------------------------------------------------------------------.
|
||||
* | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | |
|
||||
* |------+------+------+------+------+-------------+------+------+------+------+------|
|
||||
* | | | SGCOM| DESK | | | | - | + | è | ì | ù |
|
||||
* |------+------+------+------+------+------|------+------+------+------+------+------|
|
||||
* | Caps | | PHONE| SVIV |VIVERE|MOUSE |NUMPAD| | | [ | ] | \ |
|
||||
* |------+------+------+------+------+------+------+------+------+------+------+------|
|
||||
* | | | | | | | | | Home | PgDn | PgUp | End |
|
||||
* `-----------------------------------------------------------------------------------'
|
||||
*/
|
||||
[_RAISE] = LAYOUT_ortho_4x12(
|
||||
IT_GRAVE, IT_1, IT_2, IT_3, IT_4, IT_5, IT_6, IT_7, IT_8, IT_9, IT_0, _______,
|
||||
_______, _______, SECRET2, SECRET1, _______, _______, _______, IT_MINS, IT_PLUS, IT_EACC, IT_IACC, IT_UACC,
|
||||
KC_CAPS, _______, SECRET0, SECRET3, SECRET4, MOUSE, NUMPAD, _______, _______, IT_LBRC, IT_RBRC, IT_BSLS,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, KC_HOME, KC_PGDN, KC_PGUP, KC_END
|
||||
),
|
||||
|
||||
/* Numpad
|
||||
* ,-----------------------------------------------------------------------------------.
|
||||
* | | | | | | | | 7 | 8 | 9 | - | Bksp |
|
||||
* |------+------+------+------+------+-------------+------+------+------+------+------|
|
||||
* | | | | | | | | 4 | 5 | 6 | + | |
|
||||
* |------+------+------+------+------+------|------+------+------+------+------+------|
|
||||
* | | | | | | |NUMPAD| 1 | 2 | 3 | = | Ent |
|
||||
* |------+------+------+------+------+------+------+------+------+------+------+------|
|
||||
* | | | | | | | | | 0 | / | * | |
|
||||
* `-----------------------------------------------------------------------------------'
|
||||
*/
|
||||
[_NUMPAD] = LAYOUT_ortho_4x12(
|
||||
_______, _______, _______, _______, _______, _______, _______, IT_7, IT_8, IT_9, IT_MINS, KC_BSPC,
|
||||
_______, _______, _______, _______, _______, _______, _______, IT_4, IT_5, IT_6, IT_PLUS, _______,
|
||||
_______, _______, _______, _______, _______, _______, NUMPAD, IT_1, IT_2, IT_3, IT_EQL, KC_ENT,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, IT_0, IT_SLSH, IT_ASTR, _______
|
||||
),
|
||||
|
||||
/* Adjust (Lower + Raise)
|
||||
* ,-----------------------------------------------------------------------------------.
|
||||
* | |Querty| |ResetE|Reset | | | | | | | |
|
||||
* |------+------+------+------+------+-------------+------+------+------+------+------|
|
||||
* | | | |Debug | | | | | | | | |
|
||||
* |------+------+------+------+------+------|------+------+------+------+------+------|
|
||||
* | | | | | | | |Music |MusON |MusOff| | |
|
||||
* |------+------+------+------+------+------+------+------+------+------+------+------|
|
||||
* | | | | | | | |Voice-|Aud On|Audoff|Voice+|
|
||||
* `-----------------------------------------------------------------------------------'
|
||||
*/
|
||||
[_ADJUST] = LAYOUT_ortho_4x12(
|
||||
_______, DF(QWERTY), _______, EEP_RST, RESET, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, DEBUG, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, MU_MOD, MU_ON, MU_OFF, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, MUV_DE, AU_ON, AU_OFF, MUV_IN
|
||||
),
|
||||
|
||||
|
||||
/* Function
|
||||
* ,-----------------------------------------------------------------------------------.
|
||||
* | | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | Del |
|
||||
* |------+------+------+------+------+-------------+------+------+------+------+------|
|
||||
* | | F1 | F2 | F3 | F4 | F5 | Left | Down | Up | Right| | |
|
||||
* |------+------+------+------+------+------|------+------+------+------+------+------|
|
||||
* | | F6 | F7 | F8 | F9 | F10 | F1 | F2 | F3 | F4 | F5 | |
|
||||
* |------+------+------+------+------+------+------+------+------+------+------+------|
|
||||
* | | | | | | | | RAISE| | | | |
|
||||
* `-----------------------------------------------------------------------------------'
|
||||
*/
|
||||
|
||||
[_FN] = LAYOUT_ortho_4x12(
|
||||
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_DEL,
|
||||
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT, _______, _______,
|
||||
_______, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, TG(_RAISE), _______, _______, _______, _______
|
||||
),
|
||||
|
||||
/* MOUSE
|
||||
* ,-----------------------------------------------------------------------------------.
|
||||
* | | | | | | | | | | | | |
|
||||
* |------+------+------+------+------+-------------+------+------+------+------+------|
|
||||
* | | | | | | | | | | | | |
|
||||
* |------+------+------+------+------+------|------+------+------+------+------+------|
|
||||
* | | | | | | MOUSE| | | |Scr Up|Scr Do| |
|
||||
* |------+------+------+------+------+------+------+------+------+------+------+------|
|
||||
* | | | | |But1 | | |But2 | Left | Down | Up |Right |
|
||||
* `-----------------------------------------------------------------------------------'
|
||||
*/
|
||||
|
||||
[_MOUSE] = LAYOUT_ortho_4x12(
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, MOUSE, _______, _______, _______, KC_MS_WH_DOWN, KC_MS_WH_UP, _______,
|
||||
_______, _______, _______, _______, KC_MS_BTN1, _______, _______, KC_MS_BTN2, KC_MS_LEFT, KC_MS_DOWN, KC_MS_UP, KC_MS_RIGHT
|
||||
)
|
||||
|
||||
};
|
||||
|
||||
#ifdef AUDIO_ENABLE
|
||||
float plover_song[][2] = SONG(PLOVER_SOUND);
|
||||
float plover_gb_song[][2] = SONG(PLOVER_GOODBYE_SOUND);
|
||||
#endif
|
||||
|
||||
|
||||
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 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;
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
bool music_mask_user(uint16_t keycode) {
|
||||
switch (keycode) {
|
||||
case RAISE:
|
||||
case LOWER:
|
||||
return false;
|
||||
default:
|
||||
return true;
|
||||
}
|
||||
}
|
||||
38
keyboards/planck/keymaps/sigul/readme.md
Normal file
38
keyboards/planck/keymaps/sigul/readme.md
Normal file
@@ -0,0 +1,38 @@
|
||||
# An ANSI Italian Planck Layout
|
||||
by Silvio Gulizia
|
||||
|
||||
- [x] add layer _FN with F keys and VI navigation
|
||||
- [x] add layer _MOUSE with mouse keys
|
||||
- [x] add "MOUSEKEY_ENABLE = yes" in rules.mk to enable mouse keys
|
||||
- [x] add definition to control the mouse movementes in config.h
|
||||
- [x] add layer _NUMPAD to have a numpad
|
||||
- [x] add keycode NUMPAD to toggle _NUMPAD
|
||||
- [x] modify layer ADJUST to simplify remembering commands
|
||||
- [x] add custom keycodes ESCFN and TABFN on QUERTY to add the ability to use arrows with hjkl by activating layer FN when held with the definition LT(_FN,KC_ESC) and LT(_FN, KC_TAB)
|
||||
- [x] added "#define USB_MAX_POWER_CONSUMPTION 100" in config.h to use the keyboard with the iPad
|
||||
- [x] add "#define TAPPING_TOGGLE 3" in config.h to enable tapping toggle with 3 taps on LOWER, RAISE and MOUSE keys
|
||||
- [x] add tapping toggle to LOWER, RAISE and MOUSE keys
|
||||
- [x] add "KEY_LOCK_ENABLE = yes" in rules.mk to enable caps lock
|
||||
- [x] add caps lock (KC_CAPS) to RAISE layer on the shift key
|
||||
- [x] Add del to a thumb layer
|
||||
- [x] remove key lock because it can only be used on standard keys
|
||||
- [x] Add MT(MOD_LSFT, KC_ENT) shift when pressed, enter when tapped
|
||||
- [x] add home, end, pgup and pgwon on _RAISE instead of arrows
|
||||
- [x] add shift enter
|
||||
- [x] change LSFT to S for more legibility
|
||||
- [x] MT(kc) per usare shift come tasto es: MOD_LSFT(LCAG(KC_UP)). ??? MT(MOD_LSFT,KC_CAPS)
|
||||
- [x] add macros on _FN to ouput website, email, tel, address, VAT ID credentials
|
||||
- [x] remap F keys upon numbers on _FN
|
||||
- [x] check audio functionality
|
||||
- [x] Add LT(_FN, IT_D) on D on the Querty layer
|
||||
|
||||
- [ ] Add Hyper on ESC or TAB to be able to use it for custom keyboard shortcuts
|
||||
- [ ] consider using layer configuration to have just one keymap (see as a reference qmk_firmware/layouts/community/ortho_4x12/bredfield/)
|
||||
- [ ] add brightness up (KC_BRMU or KC_BRIU) and down (KC_BRMD or KC_BRID)
|
||||
|
||||
- [ ] add secrets file in user space to add passwords on a password layer
|
||||
- [ ] consider adding midi on the planck
|
||||
- [ ] consider adding AUTO_SHIFT_ENABLE = yes in rules.mk to be able to send shifted key depressing a key for twice the time
|
||||
- [ ] revert IT_ to KC_ where not required
|
||||
- [ ] add swap from Mac to Win key code on Adjust layer
|
||||
- [ ] evaluate to add auto shift
|
||||
1
keyboards/planck/keymaps/sigul/rules.mk
Normal file
1
keyboards/planck/keymaps/sigul/rules.mk
Normal file
@@ -0,0 +1 @@
|
||||
SRC += muse.c
|
||||
@@ -397,7 +397,7 @@ qmk_dict = {
|
||||
"_sp_swp": "SHT(KC_SPC)",
|
||||
# Unicode support (via X()) included implicitly
|
||||
# Switching Unicode Input Modes
|
||||
"UC_win": "UC_M_WC", "UC_lnx": "UC_M_LN", "UC_osx": "UC_M_OS",
|
||||
"UC_win": "UC_M_WC", "UC_lnx": "UC_M_LN", "UC_mac": "UC_M_MA",
|
||||
|
||||
# custom keys
|
||||
"altF4": "LALT(KC_F4)",
|
||||
|
||||
@@ -15,7 +15,7 @@ BOOTLOADER = bootloadHID
|
||||
BOOTMAGIC_ENABLE = full
|
||||
MOUSEKEY_ENABLE = no
|
||||
EXTRAKEY_ENABLE = yes
|
||||
CONSOLE_ENABLE = yes
|
||||
CONSOLE_ENABLE = no
|
||||
COMMAND_ENABLE = yes
|
||||
BACKLIGHT_ENABLE = yes
|
||||
RGBLIGHT_ENABLE = yes
|
||||
|
||||
@@ -15,7 +15,7 @@ BOOTLOADER = bootloadHID
|
||||
BOOTMAGIC_ENABLE = no
|
||||
MOUSEKEY_ENABLE = yes
|
||||
EXTRAKEY_ENABLE = yes
|
||||
CONSOLE_ENABLE = yes
|
||||
CONSOLE_ENABLE = no
|
||||
COMMAND_ENABLE = yes
|
||||
BACKLIGHT_ENABLE = yes
|
||||
RGBLIGHT_ENABLE = no
|
||||
|
||||
@@ -14,16 +14,8 @@
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
#include QMK_KEYBOARD_H
|
||||
#include "keymap_jp.h"
|
||||
#include "../common/oled_helper.h"
|
||||
|
||||
#ifdef RGBLIGHT_ENABLE
|
||||
//Following line allows macro to read current RGB settings
|
||||
extern rgblight_config_t rgblight_config;
|
||||
#endif
|
||||
|
||||
extern uint8_t is_master;
|
||||
|
||||
// Each layer gets a name for readability, which is then used in the keymap matrix below.
|
||||
// The underscores don't mean anything - you can have a layer called STUFF or any other name.
|
||||
// Layer names don't all need to be of the same length, obviously, and you can also skip them
|
||||
@@ -43,83 +35,65 @@ enum custom_keycodes {
|
||||
RGBRST
|
||||
};
|
||||
|
||||
enum tapdances{
|
||||
TD_SCCL = 0,
|
||||
TD_SLRO,
|
||||
};
|
||||
|
||||
// Layer Mode aliases
|
||||
#define _____ KC_TRNS
|
||||
#define XXXXX KC_NO
|
||||
|
||||
#define KC_TBSF LSFT_T(KC_TAB)
|
||||
// #define KC_SPSF LSFT_T(KC_SPC)
|
||||
#define KC_ALAP LALT_T(KC_APP)
|
||||
#define KC_JEQL LSFT(KC_MINS)
|
||||
|
||||
#define KC_SCCL TD(TD_SCCL)
|
||||
#define KC_SLRO TD(TD_SLRO)
|
||||
|
||||
qk_tap_dance_action_t tap_dance_actions[] = {
|
||||
[TD_SCCL] = ACTION_TAP_DANCE_DOUBLE(KC_SCLN, KC_QUOT),
|
||||
[TD_SLRO] = ACTION_TAP_DANCE_DOUBLE(KC_SLSH, KC_RO),
|
||||
};
|
||||
#define KC_GRSF RSFT_T(KC_GRV)
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
[_BASE] = LAYOUT_base( \
|
||||
//,--------------------------------------------------------------------------------------------------------------------.
|
||||
KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_MINS,\
|
||||
KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,\
|
||||
//|--------+--------+--------+--------+--------+--------|--------+--------+--------+--------+--------+-----------------|
|
||||
KC_TBSF, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCCL, KC_ENT,\
|
||||
KC_TBSF, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_ENT,\
|
||||
//|--------+--------+--------+--------+--------+--------|--------+--------+--------+--------+--------+--------+--------|
|
||||
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLRO, KC_UP, \
|
||||
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_UP, \
|
||||
//|--------+--------+--------+--------+--------+--------|--------+--------+--------+--------+--------+--------+--------|
|
||||
KC_LCTRL, KC_LALT, KC_LGUI, LOWER, KC_BSPC, KC_SPC, RAISE, KC_ALAP, KC_LEFT, KC_DOWN, KC_RGHT,\
|
||||
KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_BSPC, KC_SPC, RAISE, KC_ALAP, KC_LEFT, KC_DOWN, KC_RGHT,\
|
||||
//`-------------------------------------------------------------------------------------------------------------------'
|
||||
KC_DEL \
|
||||
// ExtraKey: Split backspace key or it is below the enter key.
|
||||
KC_GRSF \
|
||||
// ExtraKey: This key is an extra key. REV1 is a split back space. REV2 is to the right of the arrow-up key.
|
||||
),
|
||||
|
||||
[_LOWER] = LAYOUT_base( \
|
||||
//,--------------------------------------------------------------------------------------------------------------------.
|
||||
_____, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL,\
|
||||
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL,\
|
||||
//|--------+--------+--------+--------+--------+--------|--------+--------+--------+--------+--------+-----------------|
|
||||
_____, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, XXXXX, XXXXX, XXXXX, KC_SCLN, KC_QUOT, _____,\
|
||||
_______, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, XXXXXXX, XXXXXXX, XXXXXXX, KC_SCLN, KC_QUOT, _______,\
|
||||
//|--------+--------+--------+--------+--------+--------|--------+--------+--------+--------+--------+--------+--------|
|
||||
_____, KC_F11, KC_F12, XXXXX, KANJI, KC_ENT, XXXXX, XXXXX, KC_COMM, KC_DOT, KC_GRV, KC_PGUP, \
|
||||
_______, KC_F11, KC_F12, XXXXXXX, XXXXXXX, KANJI, XXXXXXX, XXXXXXX, KC_COMM, KC_DOT, KC_GRV, KC_PGUP, \
|
||||
//|--------+--------+--------+--------+--------+--------|--------+--------+--------+--------+--------+--------+--------|
|
||||
_____, _____, _____, _____, KC_DEL, _____, _____, XXXXX, KC_HOME, KC_PGDN, KC_END,\
|
||||
_______, _______, _______, _______, KC_DEL, _______, _______, XXXXXXX, KC_HOME, KC_PGDN, KC_END,\
|
||||
//`-------------------------------------------------------------------------------------------------------------------'
|
||||
XXXXX \
|
||||
// ExtraKey: Split backspace key or it is below the enter key.
|
||||
_______ \
|
||||
// ExtraKey: This key is an extra key. REV1 is a split back space. REV2 is to the right of the arrow-up key.
|
||||
),
|
||||
|
||||
[_RAISE] = LAYOUT_base( \
|
||||
//,--------------------------------------------------------------------------------------------------------------------.
|
||||
_____, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, XXXXX,\
|
||||
_______, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, XXXXXXX,\
|
||||
//|--------+--------+--------+--------+--------+--------|--------+--------+--------+--------+--------+-----------------|
|
||||
_____, XXXXX, XXXXX, XXXXX, XXXXX, XXXXX, XXXXX, KC_4, KC_5, KC_6, KC_QUOT, _____,\
|
||||
_______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_4, KC_5, KC_6, KC_QUOT, _______,\
|
||||
//|--------+--------+--------+--------+--------+--------|--------+--------+--------+--------+--------+--------+--------|
|
||||
_____, XXXXX, XXXXX, XXXXX, XXXXX, XXXXX, XXXXX, KC_1, KC_2, KC_3, KC_RO, XXXXX, \
|
||||
_______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_1, KC_2, KC_3, KC_RO, XXXXXXX, \
|
||||
//|--------+--------+--------+--------+--------+--------|--------+--------+--------+--------+--------+--------+--------|
|
||||
_____, _____, _____, _____, _____, _____, _____, KC_0, KC_DOT, KC_COMM, KC_SLSH,\
|
||||
_______, _______, _______, _______, _______, _______, _______, KC_0, KC_DOT, KC_COMM, KC_SLSH,\
|
||||
//`-------------------------------------------------------------------------------------------------------------------'
|
||||
XXXXX \
|
||||
// ExtraKey: Split backspace key or it is below the enter key.
|
||||
_______ \
|
||||
// ExtraKey: This key is an extra key. REV1 is a split back space. REV2 is to the right of the arrow-up key.
|
||||
),
|
||||
|
||||
[_ADJUST] = LAYOUT_base( \
|
||||
//,--------------------------------------------------------------------------------------------------------------------.
|
||||
XXXXX, RESET, RGBRST, AG_NORM, AG_SWAP, XXXXX, XXXXX, KC_WH_L, KC_WH_U, KC_HOME, KC_PGUP, XXXXX,\
|
||||
XXXXXXX, RESET, RGBRST, AG_NORM, AG_SWAP, XXXXXXX, XXXXXXX, KC_WH_L, KC_WH_U, KC_HOME, KC_PGUP, XXXXXXX,\
|
||||
//|--------+--------+--------+--------+--------+--------|--------+--------+--------+--------+--------+-----------------|
|
||||
XXXXX, RGB_TOG, RGB_HUI, RGB_SAI, RGB_VAI, XXXXX, XXXXX, KC_WH_R, KC_WH_D, KC_END, KC_PGDN, XXXXX,\
|
||||
XXXXXXX, RGB_TOG, RGB_HUI, RGB_SAI, RGB_VAI, XXXXXXX, XXXXXXX, KC_WH_R, KC_WH_D, KC_END, KC_PGDN, XXXXXXX,\
|
||||
//|--------+--------+--------+--------+--------+--------|--------+--------+--------+--------+--------+--------+--------|
|
||||
_____, RGB_MOD, RGB_HUD, RGB_SAD, RGB_VAD, XXXXX, XXXXX, XXXXX, KC_BTN1, KC_BTN2, XXXXX, KC_MS_U, \
|
||||
_______, RGB_MOD, RGB_HUD, RGB_SAD, RGB_VAD, XXXXXXX, XXXXXXX, XXXXXXX, KC_BTN1, KC_BTN2, XXXXXXX, KC_MS_U, \
|
||||
//|--------+--------+--------+--------+--------+--------|--------+--------+--------+--------+--------+--------+--------|
|
||||
_____, _____, _____, _____, XXXXX, XXXXX, _____, XXXXX, KC_MS_L, KC_MS_D, KC_MS_R,\
|
||||
_______, _______, _______, _______, XXXXXXX, XXXXXXX, _______, XXXXXXX, KC_MS_L, KC_MS_D, KC_MS_R,\
|
||||
//`-------------------------------------------------------------------------------------------------------------------'
|
||||
XXXXX \
|
||||
// ExtraKey: Split backspace key or it is below the enter key.
|
||||
_______ \
|
||||
// ExtraKey: This key is an extra key. REV1 is a split back space. REV2 is to the right of the arrow-up key.
|
||||
)
|
||||
};
|
||||
|
||||
|
||||
@@ -19,17 +19,12 @@ Layer Tapはタップで指定したキー、長押しで指定したレイヤ
|
||||
Mod Tapはタップで視程したキー、長押しで視程したレイヤーに移動します。
|
||||
例:LSFT_T(KC_Z) → タップでZ、長押しで左シフト
|
||||
|
||||
Tap Danceは指定した二つのキーをシングルタップ、ダブルタップで切り替えられます。
|
||||
例:[TD_CODO] = ACTION_TAP_DANCE_DOUBLE(KC_COMM, KC_DOT) → シングルタップでCOMM、ダブルタップでDOT
|
||||
|
||||
もう少し詳しい内容についてはQMK Documentをお読みいただくかネットを検索すれば情報が載っていますので別途検索してみてください。
|
||||
|
||||
## 機能
|
||||
|
||||
QWERTYキーマップをベースにしていて、LowerレイヤーとRaiseレイヤーに他のキーを配置しています。
|
||||
LowerとRaiseを同時押しでAdjustレイヤーを使うことが出来ます。
|
||||
DOTの横、SLROと書いてあるのはシングルタップで/記号、ダブルタップで\記号が入力出来るようになっています。
|
||||
Lの横、SCCLと書いてあるのはシングルタップで;記号、ダブルタップで:記号が入力出来るようになっています。
|
||||
マウスキーの割り当てがありますので、もし使用したい場合はrules.mkでMOUSEKEY_ENABLE = yesにしてmakeすると使用することができます。
|
||||
|
||||
## 48キー目について
|
||||
@@ -39,11 +34,11 @@ Tap Danceは指定した二つのキーをシングルタップ、ダブルタ
|
||||
各レイヤーの最下段の
|
||||
|
||||
```c
|
||||
XXXXX \
|
||||
// ExtraKey: Split backspace key or it is below the enter key.
|
||||
XXXXXXX \
|
||||
// ExtraKey: This key is an extra key. REV1 is a split back space. REV2 is to the right of the arrow-up key.
|
||||
```
|
||||
|
||||
のXXXXXに任意のキーを入れることでPの右隣のキーとして動作するようになっています。その右隣りに従来のキーが配置されています。
|
||||
のXXXXXXXに任意のキーを入れることでPの右隣のキーとして動作するようになっています。その右隣りに従来のキーが配置されています。
|
||||
|
||||
## OS切り替え方法
|
||||
|
||||
|
||||
@@ -1,8 +1,7 @@
|
||||
MOUSEKEY_ENABLE = yes # Mouse keys
|
||||
TAP_DANCE_ENABLE = yes
|
||||
|
||||
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
|
||||
OLED_DRIVER_ENABLE = no
|
||||
OLED_DRIVER_ENABLE = yes
|
||||
LTO_ENABLE = yes
|
||||
|
||||
# If you want to change the display of OLED, you need to change here
|
||||
|
||||
@@ -14,16 +14,8 @@
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
#include QMK_KEYBOARD_H
|
||||
#include "keymap_jp.h"
|
||||
#include "../common/oled_helper.h"
|
||||
|
||||
#ifdef RGBLIGHT_ENABLE
|
||||
//Following line allows macro to read current RGB settings
|
||||
extern rgblight_config_t rgblight_config;
|
||||
#endif
|
||||
|
||||
extern uint8_t is_master;
|
||||
|
||||
// Each layer gets a name for readability, which is then used in the keymap matrix below.
|
||||
// The underscores don't mean anything - you can have a layer called STUFF or any other name.
|
||||
// Layer names don't all need to be of the same length, obviously, and you can also skip them
|
||||
@@ -43,83 +35,65 @@ enum custom_keycodes {
|
||||
RGBRST
|
||||
};
|
||||
|
||||
enum tapdances{
|
||||
TD_SCCL = 0,
|
||||
TD_SLRO,
|
||||
};
|
||||
|
||||
// Layer Mode aliases
|
||||
#define _____ KC_TRNS
|
||||
#define XXXXX KC_NO
|
||||
|
||||
#define KC_TBSF LSFT_T(KC_TAB)
|
||||
// #define KC_SPSF LSFT_T(KC_SPC)
|
||||
#define KC_ALAP LALT_T(KC_APP)
|
||||
#define KC_JEQL LSFT(KC_MINS)
|
||||
|
||||
#define KC_SCCL TD(TD_SCCL)
|
||||
#define KC_SLRO TD(TD_SLRO)
|
||||
|
||||
qk_tap_dance_action_t tap_dance_actions[] = {
|
||||
[TD_SCCL] = ACTION_TAP_DANCE_DOUBLE(KC_SCLN, KC_QUOT),
|
||||
[TD_SLRO] = ACTION_TAP_DANCE_DOUBLE(KC_SLSH, KC_RO),
|
||||
};
|
||||
#define KC_ROSF RSFT_T(KC_RO)
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
[_BASE] = LAYOUT_base( \
|
||||
//,--------------------------------------------------------------------------------------------------------------------.
|
||||
KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_MINS,\
|
||||
KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,\
|
||||
//|--------+--------+--------+--------+--------+--------|--------+--------+--------+--------+--------+-----------------|
|
||||
KC_TBSF, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCCL, KC_ENT,\
|
||||
KC_TBSF, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_ENT,\
|
||||
//|--------+--------+--------+--------+--------+--------|--------+--------+--------+--------+--------+--------+--------|
|
||||
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLRO, KC_UP, \
|
||||
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_UP, \
|
||||
//|--------+--------+--------+--------+--------+--------|--------+--------+--------+--------+--------+--------+--------|
|
||||
KC_LCTRL, KC_LALT, KC_LGUI, LOWER, KC_BSPC, KC_SPC, RAISE, KC_ALAP, KC_LEFT, KC_DOWN, KC_RGHT,\
|
||||
KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_BSPC, KC_SPC, RAISE, KC_ALAP, KC_LEFT, KC_DOWN, KC_RGHT,\
|
||||
//`-------------------------------------------------------------------------------------------------------------------'
|
||||
KC_DEL \
|
||||
// ExtraKey: Split backspace key or it is below the enter key.
|
||||
KC_ROSF \
|
||||
// ExtraKey: This key is an extra key. REV1 is a split back space. REV2 is to the right of the arrow-up key.
|
||||
),
|
||||
|
||||
[_LOWER] = LAYOUT_base( \
|
||||
//,--------------------------------------------------------------------------------------------------------------------.
|
||||
_____, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_MINS, KC_EQL, KC_JYEN, KC_LBRC, KC_RBRC, KC_DEL,\
|
||||
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_MINS, KC_EQL, KC_JYEN, KC_LBRC, KC_RBRC, KC_DEL,\
|
||||
//|--------+--------+--------+--------+--------+--------|--------+--------+--------+--------+--------+-----------------|
|
||||
_____, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, XXXXX, XXXXX, KC_SCLN, KC_QUOT, KC_BSLS, _____,\
|
||||
_______, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, XXXXXXX, XXXXXXX, KC_SCLN, KC_QUOT, KC_BSLS, _______,\
|
||||
//|--------+--------+--------+--------+--------+--------|--------+--------+--------+--------+--------+--------+--------|
|
||||
_____, KC_F11, KC_F12, XXXXX, KANJI, KC_ENT, XXXXX, KC_COMM, KC_DOT, KC_SLSH, KC_RO, KC_PGUP, \
|
||||
_______, KC_F11, KC_F12, XXXXXXX, XXXXXXX, KANJI, XXXXXXX, KC_COMM, KC_DOT, KC_SLSH, KC_RO, KC_PGUP, \
|
||||
//|--------+--------+--------+--------+--------+--------|--------+--------+--------+--------+--------+--------+--------|
|
||||
_____, _____, _____, _____, KC_DEL, _____, _____, XXXXX, KC_HOME, KC_PGDN, KC_END,\
|
||||
_______, _______, _______, _______, KC_DEL, _______, _______, XXXXXXX, KC_HOME, KC_PGDN, KC_END,\
|
||||
//`-------------------------------------------------------------------------------------------------------------------'
|
||||
XXXXX \
|
||||
// ExtraKey: Split backspace key or it is below the enter key.
|
||||
_______ \
|
||||
// ExtraKey: This key is an extra key. REV1 is a split back space. REV2 is to the right of the arrow-up key.
|
||||
),
|
||||
|
||||
[_RAISE] = LAYOUT_base( \
|
||||
//,--------------------------------------------------------------------------------------------------------------------.
|
||||
_____, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, XXXXX,\
|
||||
_______, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, XXXXXXX,\
|
||||
//|--------+--------+--------+--------+--------+--------|--------+--------+--------+--------+--------+-----------------|
|
||||
_____, XXXXX, XXXXX, XXXXX, XXXXX, XXXXX, XXXXX, KC_4, KC_5, KC_6, KC_QUOT, _____,\
|
||||
_______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_4, KC_5, KC_6, KC_QUOT, _______,\
|
||||
//|--------+--------+--------+--------+--------+--------|--------+--------+--------+--------+--------+--------+--------|
|
||||
_____, XXXXX, XXXXX, XXXXX, XXXXX, XXXXX, XXXXX, KC_1, KC_2, KC_3, KC_RO, XXXXX, \
|
||||
_______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_1, KC_2, KC_3, KC_RO, XXXXXXX, \
|
||||
//|--------+--------+--------+--------+--------+--------|--------+--------+--------+--------+--------+--------+--------|
|
||||
_____, _____, _____, _____, _____, _____, _____, KC_0, KC_DOT, KC_COMM, KC_SLSH,\
|
||||
_______, _______, _______, _______, _______, _______, _______, KC_0, KC_DOT, KC_COMM, KC_SLSH,\
|
||||
//`-------------------------------------------------------------------------------------------------------------------'
|
||||
XXXXX \
|
||||
// ExtraKey: Split backspace key or it is below the enter key.
|
||||
_______ \
|
||||
// ExtraKey: This key is an extra key. REV1 is a split back space. REV2 is to the right of the arrow-up key.
|
||||
),
|
||||
|
||||
[_ADJUST] = LAYOUT_base( \
|
||||
//,--------------------------------------------------------------------------------------------------------------------.
|
||||
XXXXX, RESET, RGBRST, AG_NORM, AG_SWAP, XXXXX, XXXXX, KC_WH_L, KC_WH_U, KC_HOME, KC_PGUP, XXXXX,\
|
||||
XXXXXXX, RESET, RGBRST, AG_NORM, AG_SWAP, XXXXXXX, XXXXXXX, KC_WH_L, KC_WH_U, KC_HOME, KC_PGUP, XXXXXXX,\
|
||||
//|--------+--------+--------+--------+--------+--------|--------+--------+--------+--------+--------+-----------------|
|
||||
XXXXX, RGB_TOG, RGB_HUI, RGB_SAI, RGB_VAI, XXXXX, XXXXX, KC_WH_R, KC_WH_D, KC_END, KC_PGDN, XXXXX,\
|
||||
XXXXXXX, RGB_TOG, RGB_HUI, RGB_SAI, RGB_VAI, XXXXXXX, XXXXXXX, KC_WH_R, KC_WH_D, KC_END, KC_PGDN, XXXXXXX,\
|
||||
//|--------+--------+--------+--------+--------+--------|--------+--------+--------+--------+--------+--------+--------|
|
||||
_____, RGB_MOD, RGB_HUD, RGB_SAD, RGB_VAD, XXXXX, XXXXX, XXXXX, KC_BTN1, KC_BTN2, XXXXX, KC_MS_U, \
|
||||
_______, RGB_MOD, RGB_HUD, RGB_SAD, RGB_VAD, XXXXXXX, XXXXXXX, XXXXXXX, KC_BTN1, KC_BTN2, XXXXXXX, KC_MS_U, \
|
||||
//|--------+--------+--------+--------+--------+--------|--------+--------+--------+--------+--------+--------+--------|
|
||||
_____, _____, _____, _____, XXXXX, XXXXX, _____, XXXXX, KC_MS_L, KC_MS_D, KC_MS_R,\
|
||||
_______, _______, _______, _______, XXXXXXX, XXXXXXX, _______, XXXXXXX, KC_MS_L, KC_MS_D, KC_MS_R,\
|
||||
//`-------------------------------------------------------------------------------------------------------------------'
|
||||
XXXXX \
|
||||
// ExtraKey: Split backspace key or it is below the enter key.
|
||||
_______ \
|
||||
// ExtraKey: This key is an extra key. REV1 is a split back space. REV2 is to the right of the arrow-up key.
|
||||
)
|
||||
};
|
||||
|
||||
|
||||
@@ -19,17 +19,12 @@ Layer Tapはタップで指定したキー、長押しで指定したレイヤ
|
||||
Mod Tapはタップで視程したキー、長押しで視程したレイヤーに移動します。
|
||||
例:LSFT_T(KC_Z) → タップでZ、長押しで左シフト
|
||||
|
||||
Tap Danceは指定した二つのキーをシングルタップ、ダブルタップで切り替えられます。
|
||||
例:[TD_CODO] = ACTION_TAP_DANCE_DOUBLE(KC_COMM, KC_DOT) → シングルタップでCOMM、ダブルタップでDOT
|
||||
|
||||
もう少し詳しい内容についてはQMK Documentをお読みいただくかネットを検索すれば情報が載っていますので別途検索してみてください。
|
||||
|
||||
## 機能
|
||||
|
||||
QWERTYキーマップをベースにしていて、LowerレイヤーとRaiseレイヤーに他のキーを配置しています。
|
||||
LowerとRaiseを同時押しでAdjustレイヤーを使うことが出来ます。
|
||||
DOTの横、SLROと書いてあるのはシングルタップで/記号、ダブルタップで\記号が入力出来るようになっています。
|
||||
Lの横、SCCLと書いてあるのはシングルタップで;記号、ダブルタップで:記号が入力出来るようになっています。
|
||||
マウスキーの割り当てがありますので、もし使用したい場合はrules.mkでMOUSEKEY_ENABLE = yesにしてmakeすると使用することができます。
|
||||
|
||||
## 48キー目について
|
||||
@@ -39,8 +34,8 @@ Tap Danceは指定した二つのキーをシングルタップ、ダブルタ
|
||||
各レイヤーの最下段の
|
||||
|
||||
```c
|
||||
XXXXX \
|
||||
// ExtraKey: Split backspace key or it is below the enter key.
|
||||
XXXXXXX \
|
||||
// ExtraKey: This key is an extra key. REV1 is a split back space. REV2 is to the right of the arrow-up key.
|
||||
```
|
||||
|
||||
のXXXXXに任意のキーを入れることでPの右隣のキーとして動作するようになっています。その右隣りに従来のキーが配置されています。
|
||||
|
||||
@@ -1,8 +1,7 @@
|
||||
MOUSEKEY_ENABLE = yes # Mouse keys
|
||||
TAP_DANCE_ENABLE = yes
|
||||
|
||||
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
|
||||
OLED_DRIVER_ENABLE = no
|
||||
OLED_DRIVER_ENABLE = yes
|
||||
LTO_ENABLE = yes
|
||||
|
||||
# If you want to change the display of OLED, you need to change here
|
||||
|
||||
@@ -14,16 +14,8 @@
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
#include QMK_KEYBOARD_H
|
||||
#include "keymap_jp.h"
|
||||
#include "../common/oled_helper.h"
|
||||
|
||||
#ifdef RGBLIGHT_ENABLE
|
||||
//Following line allows macro to read current RGB settings
|
||||
extern rgblight_config_t rgblight_config;
|
||||
#endif
|
||||
|
||||
extern uint8_t is_master;
|
||||
|
||||
// Each layer gets a name for readability, which is then used in the keymap matrix below.
|
||||
// The underscores don't mean anything - you can have a layer called STUFF or any other name.
|
||||
// Layer names don't all need to be of the same length, obviously, and you can also skip them
|
||||
@@ -48,18 +40,9 @@ enum custom_keycodes {
|
||||
RGBRST
|
||||
};
|
||||
|
||||
enum tapdances{
|
||||
TD_SCCL = 0,
|
||||
TD_SLRO,
|
||||
};
|
||||
|
||||
// Layer Mode aliases
|
||||
#define _____ KC_TRNS
|
||||
#define XXXXX KC_NO
|
||||
|
||||
#define KC_TBSF LSFT_T(KC_TAB)
|
||||
// #define KC_SPSF LSFT_T(KC_SPC)
|
||||
#define KC_ALAP LALT_T(KC_APP)
|
||||
|
||||
#define KC_JEQL LSFT(KC_MINS)
|
||||
#define KC_SFUC LSFT(KC_RO)
|
||||
#define KC_RSBR LSFT(KC_8)
|
||||
@@ -70,43 +53,35 @@ enum tapdances{
|
||||
#define KC_TBAL LALT_T(KC_TAB)
|
||||
#define KC_11SF LSFT_T(KC_F11)
|
||||
|
||||
#define KC_SCCL TD(TD_SCCL)
|
||||
#define KC_SLRO TD(TD_SLRO)
|
||||
|
||||
qk_tap_dance_action_t tap_dance_actions[] = {
|
||||
[TD_SCCL] = ACTION_TAP_DANCE_DOUBLE(KC_SCLN, KC_QUOT),
|
||||
[TD_SLRO] = ACTION_TAP_DANCE_DOUBLE(KC_SLSH, KC_RO),
|
||||
};
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
[_BASE] = LAYOUT_rs( \
|
||||
// Treadstone48 Rhymestone
|
||||
//,--------------------------------------------------------------------------------------------------------------------. --------------------------------------------.
|
||||
KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_MINS, KC_P7, KC_P8, KC_P9, KC_PSLS, KC_NLCK,\
|
||||
KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, KC_P7, KC_P8, KC_P9, KC_PSLS, KC_NLCK,\
|
||||
//|--------+--------+--------+--------+--------+--------|--------+--------+--------+--------+--------+-----------------| --------+--------+--------+--------+--------|
|
||||
KC_TBSF, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCCL, KC_ENT, KC_P4, KC_P5, KC_P6, KC_PAST, KC_TAB,\
|
||||
KC_TBSF, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_ENT, KC_P4, KC_P5, KC_P6, KC_PAST, KC_TAB,\
|
||||
//|--------+--------+--------+--------+--------+--------|--------+--------+--------+--------+--------+--------+--------| --------+--------+--------+--------+--------|
|
||||
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLRO, KC_UP, KC_P1, KC_P2, KC_P3, KC_PMNS, KC_PENT,\
|
||||
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_UP, KC_P1, KC_P2, KC_P3, KC_PMNS, KC_PENT,\
|
||||
//|--------+--------+--------+--------+--------+--------|--------+--------+--------+--------+--------+--------+--------| --------+--------+--------+--------+--------|
|
||||
KC_LCTRL, KC_LALT, KC_LGUI, LOWER, KC_BSPC, KC_SPC, RAISE, KC_ALAP, KC_LEFT, KC_DOWN, KC_RGHT, LOWER, KC_P0, KC_PDOT, KC_PPLS, KC_BSPC,\
|
||||
KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_BSPC, KC_SPC, RAISE, KC_ALAP, KC_LEFT, KC_DOWN, KC_RGHT, LOWER, KC_P0, KC_PDOT, KC_PPLS, KC_BSPC,\
|
||||
//`--------------------------------------------------------------------------------------------------------------------' --------------------------------------------'
|
||||
KC_DEL \
|
||||
// ExtraKey: Split backspace key or it is below the enter key.
|
||||
// ExtraKey: This key is an extra key. REV1 is a split back space. REV2 is to the right of the arrow-up key.
|
||||
),
|
||||
|
||||
[_LOWER] = LAYOUT_rs( \
|
||||
// Treadstone48 Rhymestone
|
||||
//,--------------------------------------------------------------------------------------------------------------------. --------------------------------------------.
|
||||
_____, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_MINS, KC_EQL, KC_JYEN, KC_LBRC, KC_RBRC, KC_DEL, KC_A, KC_B, KC_C, KC_JYEN, KC_HASH,\
|
||||
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_MINS, KC_EQL, KC_JYEN, KC_LBRC, KC_RBRC, KC_DEL, KC_A, KC_B, KC_C, KC_JYEN, KC_HASH,\
|
||||
//|--------+--------+--------+--------+--------+--------|--------+--------+--------+--------+--------+-----------------| --------+--------+--------+--------+--------|
|
||||
_____, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, XXXXX, XXXXX, KC_SCLN, KC_QUOT, KC_BSLS, _____, KC_D, KC_E, KC_F, KC_PERC, KC_SFUC,\
|
||||
_______, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, XXXXXXX, XXXXXXX, KC_SCLN, KC_QUOT, KC_BSLS, _______, KC_D, KC_E, KC_F, KC_PERC, KC_SFUC,\
|
||||
//|--------+--------+--------+--------+--------+--------|--------+--------+--------+--------+--------+--------+--------| --------+--------+--------+--------+--------|
|
||||
_____, KC_F11, KC_F12, BASES, KANJI, KC_ENT, XXXXX, KC_COMM, KC_DOT, KC_SLSH, KC_RO, KC_PGUP, KC_RSBR, KC_REBR, KC_RBRC, KC_QUOT, _____,\
|
||||
_______, KC_F11, KC_F12, BASES, KANJI, KC_ENT, XXXXXXX, KC_COMM, KC_DOT, KC_SLSH, KC_RO, KC_PGUP, KC_RSBR, KC_REBR, KC_RBRC, KC_QUOT, _______,\
|
||||
//|--------+--------+--------+--------+--------+--------|--------+--------+--------+--------+--------+--------+--------| --------+--------+--------+--------+--------|
|
||||
_____, _____, _____, _____, KC_DEL, _____, _____, XXXXX, KC_HOME, KC_PGDN, KC_END, _____, XXXXX, KC_COMM, KC_JEQL, KC_DEL,\
|
||||
_______, _______, _______, _______, KC_DEL, _______, _______, XXXXXXX, KC_HOME, KC_PGDN, KC_END, _______, XXXXXXX, KC_COMM, KC_JEQL, KC_DEL,\
|
||||
//`--------------------------------------------------------------------------------------------------------------------' --------------------------------------------'
|
||||
XXXXX \
|
||||
// ExtraKey: Split backspace key or it is below the enter key.
|
||||
_______ \
|
||||
// ExtraKey: This key is an extra key. REV1 is a split back space. REV2 is to the right of the arrow-up key.
|
||||
),
|
||||
|
||||
[_BASES] = LAYOUT_rs( \
|
||||
@@ -114,59 +89,59 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
//,--------------------------------------------------------------------------------------------------------------------. --------------------------------------------.
|
||||
KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_MINS, KC_Q, KC_W, KC_E, KC_R, KC_T,\
|
||||
//|--------+--------+--------+--------+--------+--------|--------+--------+--------+--------+--------+-----------------| --------+--------+--------+--------+--------|
|
||||
KC_TBSF, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCCL, KC_ENT, KC_A, KC_S, KC_D, KC_F, KC_G,\
|
||||
KC_TBSF, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_ENT, KC_A, KC_S, KC_D, KC_F, KC_G,\
|
||||
//|--------+--------+--------+--------+--------+--------|--------+--------+--------+--------+--------+--------+--------| --------+--------+--------+--------+--------|
|
||||
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLRO, KC_UP, KC_ZSFT, KC_X, KC_C, KC_V, KC_B,\
|
||||
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_UP, KC_ZSFT, KC_X, KC_C, KC_V, KC_B,\
|
||||
//|--------+--------+--------+--------+--------+--------|--------+--------+--------+--------+--------+--------+--------| --------+--------+--------+--------+--------|
|
||||
KC_LCTRL, KC_LALT, KC_LGUI, LOWER, KC_BSPC, KC_SPC, RAISE, KC_ALAP, KC_LEFT, KC_DOWN, KC_RGHT, KC_ESCT, KC_TBAL, KC_LGUI, LOWRS, KC_BSPC,\
|
||||
KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_BSPC, KC_SPC, RAISE, KC_ALAP, KC_LEFT, KC_DOWN, KC_RGHT, KC_ESCT, KC_TBAL, KC_LGUI, LOWRS, KC_BSPC,\
|
||||
//`--------------------------------------------------------------------------------------------------------------------' --------------------------------------------'
|
||||
KC_DEL \
|
||||
// ExtraKey: Split backspace key or it is below the enter key.
|
||||
// ExtraKey: This key is an extra key. REV1 is a split back space. REV2 is to the right of the arrow-up key.
|
||||
),
|
||||
|
||||
[_LOWRS] = LAYOUT_rs( \
|
||||
// Treadstone48 Rhymestone
|
||||
//,--------------------------------------------------------------------------------------------------------------------. --------------------------------------------.
|
||||
_____, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_MINS, KC_EQL, KC_JYEN, KC_LBRC, KC_RBRC, KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5,\
|
||||
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_MINS, KC_EQL, KC_JYEN, KC_LBRC, KC_RBRC, KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5,\
|
||||
//|--------+--------+--------+--------+--------+--------|--------+--------+--------+--------+--------+-----------------| --------+--------+--------+--------+--------|
|
||||
_____, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, XXXXX, XXXXX, KC_SCLN, KC_QUOT, KC_BSLS, _____, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10,\
|
||||
_______, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, XXXXXXX, XXXXXXX, KC_SCLN, KC_QUOT, KC_BSLS, _______, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10,\
|
||||
//|--------+--------+--------+--------+--------+--------|--------+--------+--------+--------+--------+--------+--------| --------+--------+--------+--------+--------|
|
||||
_____, KC_F11, KC_F12, BASE, KANJI, KC_ENT, XXXXX, KC_COMM, KC_DOT, KC_SLSH, KC_RO, KC_PGUP, KC_11SF, KC_F12, BASE, KANJI, KC_ENT,\
|
||||
_______, KC_F11, KC_F12, BASE, KANJI, KC_ENT, XXXXXXX, KC_COMM, KC_DOT, KC_SLSH, KC_RO, KC_PGUP, KC_11SF, KC_F12, BASE, KANJI, KC_ENT,\
|
||||
//|--------+--------+--------+--------+--------+--------|--------+--------+--------+--------+--------+--------+--------| --------+--------+--------+--------+--------|
|
||||
_____, _____, _____, _____, KC_DEL, _____, _____, XXXXX, KC_HOME, KC_PGDN, KC_END, _____, _____, _____, _____, KC_DEL,\
|
||||
_______, _______, _______, _______, KC_DEL, _______, _______, XXXXXXX, KC_HOME, KC_PGDN, KC_END, _______, _______, _______, _______, KC_DEL,\
|
||||
//`--------------------------------------------------------------------------------------------------------------------' --------------------------------------------'
|
||||
XXXXX \
|
||||
// ExtraKey: Split backspace key or it is below the enter key.
|
||||
_______ \
|
||||
// ExtraKey: This key is an extra key. REV1 is a split back space. REV2 is to the right of the arrow-up key.
|
||||
),
|
||||
|
||||
[_RAISE] = LAYOUT_rs( \
|
||||
// Treadstone48 Rhymestone
|
||||
//,--------------------------------------------------------------------------------------------------------------------. --------------------------------------------.
|
||||
_____, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, XXXXX, XXXXX, XXXXX, XXXXX, XXXXX, XXXXX,\
|
||||
_______, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,\
|
||||
//|--------+--------+--------+--------+--------+--------|--------+--------+--------+--------+--------+-----------------| --------+--------+--------+--------+--------|
|
||||
_____, XXXXX, XXXXX, XXXXX, XXXXX, XXXXX, XXXXX, KC_4, KC_5, KC_6, KC_QUOT, _____, XXXXX, XXXXX, XXXXX, XXXXX, XXXXX,\
|
||||
_______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_4, KC_5, KC_6, KC_QUOT, _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,\
|
||||
//|--------+--------+--------+--------+--------+--------|--------+--------+--------+--------+--------+--------+--------| --------+--------+--------+--------+--------|
|
||||
_____, XXXXX, XXXXX, XXXXX, XXXXX, XXXXX, XXXXX, KC_1, KC_2, KC_3, KC_RO, XXXXX, XXXXX, XXXXX, XXXXX, XXXXX, XXXXX,\
|
||||
_______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_1, KC_2, KC_3, KC_RO, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,\
|
||||
//|--------+--------+--------+--------+--------+--------|--------+--------+--------+--------+--------+--------+--------| --------+--------+--------+--------+--------|
|
||||
_____, _____, _____, _____, _____, _____, _____, KC_0, KC_DOT, KC_COMM, KC_SLSH, XXXXX, XXXXX, XXXXX, XXXXX, XXXXX,\
|
||||
_______, _______, _______, _______, _______, _______, _______, KC_0, KC_DOT, KC_COMM, KC_SLSH, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,\
|
||||
//`--------------------------------------------------------------------------------------------------------------------' --------------------------------------------'
|
||||
XXXXX \
|
||||
// ExtraKey: Split backspace key or it is below the enter key.
|
||||
_______ \
|
||||
// ExtraKey: This key is an extra key. REV1 is a split back space. REV2 is to the right of the arrow-up key.
|
||||
),
|
||||
|
||||
[_ADJUST] = LAYOUT_rs( \
|
||||
// Treadstone48 Rhymestone
|
||||
//,--------------------------------------------------------------------------------------------------------------------. --------------------------------------------.
|
||||
XXXXX, RESET, RGBRST, AG_NORM, AG_SWAP, XXXXX, XXXXX, KC_WH_L, KC_WH_U, KC_HOME, KC_PGUP, XXXXX, XXXXX, XXXXX, XXXXX, XXXXX, XXXXX,\
|
||||
XXXXXXX, RESET, RGBRST, AG_NORM, AG_SWAP, XXXXXXX, XXXXXXX, KC_WH_L, KC_WH_U, KC_HOME, KC_PGUP, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,\
|
||||
//|--------+--------+--------+--------+--------+--------|--------+--------+--------+--------+--------+-----------------| --------+--------+--------+--------+--------|
|
||||
XXXXX, RGB_TOG, RGB_HUI, RGB_SAI, RGB_VAI, XXXXX, XXXXX, KC_WH_R, KC_WH_D, KC_END, KC_PGDN, XXXXX, XXXXX, XXXXX, XXXXX, XXXXX, XXXXX,\
|
||||
XXXXXXX, RGB_TOG, RGB_HUI, RGB_SAI, RGB_VAI, XXXXXXX, XXXXXXX, KC_WH_R, KC_WH_D, KC_END, KC_PGDN, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,\
|
||||
//|--------+--------+--------+--------+--------+--------|--------+--------+--------+--------+--------+--------+--------| --------+--------+--------+--------+--------|
|
||||
_____, RGB_MOD, RGB_HUD, RGB_SAD, RGB_VAD, XXXXX, XXXXX, XXXXX, KC_BTN1, KC_BTN2, XXXXX, KC_MS_U, XXXXX, XXXXX, XXXXX, XXXXX, XXXXX,\
|
||||
_______, RGB_MOD, RGB_HUD, RGB_SAD, RGB_VAD, XXXXXXX, XXXXXXX, XXXXXXX, KC_BTN1, KC_BTN2, XXXXXXX, KC_MS_U, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,\
|
||||
//|--------+--------+--------+--------+--------+--------|--------+--------+--------+--------+--------+--------+--------| --------+--------+--------+--------+--------|
|
||||
_____, _____, _____, _____, XXXXX, XXXXX, _____, XXXXX, KC_MS_L, KC_MS_D, KC_MS_R, XXXXX, XXXXX, XXXXX, XXXXX, XXXXX,\
|
||||
_______, _______, _______, _______, XXXXXXX, XXXXXXX, _______, XXXXXXX, KC_MS_L, KC_MS_D, KC_MS_R, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,\
|
||||
//`--------------------------------------------------------------------------------------------------------------------' --------------------------------------------'
|
||||
XXXXX \
|
||||
// ExtraKey: Split backspace key or it is below the enter key.
|
||||
_______ \
|
||||
// ExtraKey: This key is an extra key. REV1 is a split back space. REV2 is to the right of the arrow-up key.
|
||||
)
|
||||
};
|
||||
|
||||
|
||||
@@ -23,17 +23,12 @@ Layer Tapはタップで指定したキー、長押しで指定したレイヤ
|
||||
Mod Tapはタップで視程したキー、長押しで視程したレイヤーに移動します。
|
||||
例:LSFT_T(KC_Z) → タップでZ、長押しで左シフト
|
||||
|
||||
Tap Danceは指定した二つのキーをシングルタップ、ダブルタップで切り替えられます。
|
||||
例:[TD_CODO] = ACTION_TAP_DANCE_DOUBLE(KC_COMM, KC_DOT) → シングルタップでCOMM、ダブルタップでDOT
|
||||
|
||||
もう少し詳しい内容についてはQMK Documentをお読みいただくかネットを検索すれば情報が載っていますので別途検索してみてください。
|
||||
|
||||
## 機能
|
||||
|
||||
QWERTYキーマップをベースにしていて、LowerレイヤーとRaiseレイヤーに他のキーを配置しています。
|
||||
LowerとRaiseを同時押しでAdjustレイヤーを使うことが出来ます。
|
||||
DOTの横、SLROと書いてあるのはシングルタップで/記号、ダブルタップで\記号が入力出来るようになっています。
|
||||
Lの横、SCCLと書いてあるのはシングルタップで;記号、ダブルタップで:記号が入力出来るようになっています。
|
||||
マウスキーの割り当てがありますので、もし使用したい場合はrules.mkでMOUSEKEY_ENABLE = yesにしてmakeすると使用することができます。
|
||||
|
||||
## 48キー目について
|
||||
@@ -43,8 +38,8 @@ Tap Danceは指定した二つのキーをシングルタップ、ダブルタ
|
||||
各レイヤーの最下段の
|
||||
|
||||
```c
|
||||
XXXXX \
|
||||
// ExtraKey: Split backspace key or it is below the enter key.
|
||||
XXXXXXX \
|
||||
// ExtraKey: This key is an extra key. REV1 is a split back space. REV2 is to the right of the arrow-up key.
|
||||
```
|
||||
|
||||
のXXXXXに任意のキーを入れることでPの右隣のキーとして動作するようになっています。その右隣りに従来のキーが配置されています。
|
||||
|
||||
@@ -1,8 +1,7 @@
|
||||
MOUSEKEY_ENABLE = yes # Mouse keys
|
||||
TAP_DANCE_ENABLE = yes
|
||||
|
||||
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
|
||||
OLED_DRIVER_ENABLE = no
|
||||
OLED_DRIVER_ENABLE = yes
|
||||
LTO_ENABLE = yes
|
||||
|
||||
# If you use connection the Rhymestone, please enable RS_EXTRA_LED
|
||||
|
||||
@@ -15,7 +15,7 @@ BOOTLOADER = bootloadHID
|
||||
BOOTMAGIC_ENABLE = no
|
||||
MOUSEKEY_ENABLE = yes
|
||||
EXTRAKEY_ENABLE = yes
|
||||
CONSOLE_ENABLE = yes
|
||||
CONSOLE_ENABLE = no
|
||||
COMMAND_ENABLE = yes
|
||||
BACKLIGHT_ENABLE = yes
|
||||
RGBLIGHT_ENABLE = no
|
||||
|
||||
@@ -15,7 +15,7 @@ BOOTLOADER = bootloadHID
|
||||
BOOTMAGIC_ENABLE = full
|
||||
MOUSEKEY_ENABLE = no
|
||||
EXTRAKEY_ENABLE = yes
|
||||
CONSOLE_ENABLE = yes
|
||||
CONSOLE_ENABLE = no
|
||||
COMMAND_ENABLE = yes
|
||||
BACKLIGHT_ENABLE = yes
|
||||
RGBLIGHT_ENABLE = yes
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
#define PRODUCT DrashnaDox - Hacked ErgoDox EZ Hybrid Monstrosity
|
||||
|
||||
#undef DEBOUNCE
|
||||
#define DEBOUNCE 30
|
||||
#define DEBOUNCE 60
|
||||
|
||||
#define TAPPING_TERM_PER_KEY
|
||||
|
||||
|
||||
@@ -1,8 +1,7 @@
|
||||
BOOTMAGIC_ENABLE = lite
|
||||
TAP_DANCE_ENABLE = no
|
||||
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
|
||||
TAP_DANCE_ENABLE = yes
|
||||
COMMAND_ENABLE = no # Commands for debug and configuration
|
||||
CONSOLE_ENABLE = no
|
||||
CONSOLE_ENABLE =
|
||||
SPACE_CADET_ENABLE = no
|
||||
|
||||
ifeq ($(strip $(KEYBOARD)), ergodox_ez)
|
||||
@@ -10,7 +9,7 @@ ifeq ($(strip $(KEYBOARD)), ergodox_ez)
|
||||
RGB_MATRIX_ENABLE = yes
|
||||
RGBLIGHT_TWINKLE = no
|
||||
INDICATOR_LIGHTS = no
|
||||
RGBLIGHT_STARTUP_ANIMATION = no
|
||||
RGBLIGHT_STARTUP_ANIMATION = yes
|
||||
endif
|
||||
|
||||
UNICODE_ENABLE = yes
|
||||
|
||||
@@ -62,6 +62,8 @@
|
||||
# endif
|
||||
#endif
|
||||
|
||||
#define EEPROM_I2C_RM24C512C
|
||||
|
||||
#define ENCODER_DIRECTION_FLIP
|
||||
/*
|
||||
* MIDI options
|
||||
|
||||
@@ -18,8 +18,10 @@ else
|
||||
CONSOLE_ENABLE = yes
|
||||
COMMAND_ENABLE = yes
|
||||
RGBLIGHT_ENABLE = yes
|
||||
RGBLIGHT_STARTUP_ANIMATION = yes
|
||||
RGB_MATRIX_ENABLE = no
|
||||
AUDIO_ENABLE = yes
|
||||
EEPROM_DRIVER = i2c
|
||||
endif
|
||||
ifeq ($(strip $(KEYBOARD)), planck/light)
|
||||
RGB_MATRIX_ENABLE = yes
|
||||
|
||||
@@ -21,7 +21,7 @@
|
||||
#define ROW2COL 1
|
||||
|
||||
// useful for direct pin mapping
|
||||
#define NO_PIN (~0)
|
||||
#define NO_PIN (pin_t)(~0)
|
||||
|
||||
#ifdef __AVR__
|
||||
# ifndef __ASSEMBLER__
|
||||
|
||||
187
quantum/keymap_extras/keymap_latvian.h
Normal file
187
quantum/keymap_extras/keymap_latvian.h
Normal file
@@ -0,0 +1,187 @@
|
||||
/* Copyright 2020
|
||||
*
|
||||
* 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 "keymap.h"
|
||||
|
||||
// clang-format off
|
||||
|
||||
/*
|
||||
* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐
|
||||
* │ ` │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │ │
|
||||
* ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤
|
||||
* │ │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ [ │ ] │ │
|
||||
* ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │
|
||||
* │ │ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ ' │ \ │ │
|
||||
* ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤
|
||||
* │ │ \ │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │ │
|
||||
* ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤
|
||||
* │ │ │ │ │ │ │ │ │
|
||||
* └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘
|
||||
*/
|
||||
// Row 1
|
||||
#define LV_GRV KC_GRV // `
|
||||
#define LV_1 KC_1 // 1
|
||||
#define LV_2 KC_2 // 2
|
||||
#define LV_3 KC_3 // 3
|
||||
#define LV_4 KC_4 // 4
|
||||
#define LV_5 KC_5 // 5
|
||||
#define LV_6 KC_6 // 6
|
||||
#define LV_7 KC_7 // 7
|
||||
#define LV_8 KC_8 // 8
|
||||
#define LV_9 KC_9 // 9
|
||||
#define LV_0 KC_0 // 0
|
||||
#define LV_MINS KC_MINS // -
|
||||
#define LV_EQL KC_EQL // =
|
||||
// Row 2
|
||||
#define LV_Q KC_Q // Q
|
||||
#define LV_W KC_W // W
|
||||
#define LV_E KC_E // E
|
||||
#define LV_R KC_R // R
|
||||
#define LV_T KC_T // T
|
||||
#define LV_Y KC_Y // Y
|
||||
#define LV_U KC_U // U
|
||||
#define LV_I KC_I // I
|
||||
#define LV_O KC_O // O
|
||||
#define LV_P KC_P // P
|
||||
#define LV_LBRC KC_LBRC // [
|
||||
#define LV_RBRC KC_RBRC // ]
|
||||
// Row 3
|
||||
#define LV_A KC_A // A
|
||||
#define LV_S KC_S // S
|
||||
#define LV_D KC_D // D
|
||||
#define LV_F KC_F // F
|
||||
#define LV_G KC_G // G
|
||||
#define LV_H KC_H // H
|
||||
#define LV_J KC_J // J
|
||||
#define LV_K KC_K // K
|
||||
#define LV_L KC_L // L
|
||||
#define LV_SCLN KC_SCLN // ;
|
||||
#define LV_QUOT KC_QUOT // ' (dead)
|
||||
#define LV_BSLS KC_NUHS // (backslash)
|
||||
// Row 4
|
||||
#define LV_NUBS KC_NUBS // (backslash)
|
||||
#define LV_Z KC_Z // Z
|
||||
#define LV_X KC_X // X
|
||||
#define LV_C KC_C // C
|
||||
#define LV_V KC_V // V
|
||||
#define LV_B KC_B // B
|
||||
#define LV_N KC_N // N
|
||||
#define LV_M KC_M // M
|
||||
#define LV_COMM KC_COMM // ,
|
||||
#define LV_DOT KC_DOT // .
|
||||
#define LV_SLSH KC_SLSH // /
|
||||
|
||||
/* Shifted symbols
|
||||
* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐
|
||||
* │ ~ │ ! │ @ │ # │ $ │ % │ ^ │ & │ * │ ( │ ) │ _ │ + │ │
|
||||
* ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤
|
||||
* │ │ │ │ │ │ │ │ │ │ │ │ { │ } │ │
|
||||
* ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │
|
||||
* │ │ │ │ │ │ │ │ │ │ │ : │ " │ | │ │
|
||||
* ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤
|
||||
* │ │ │ │ │ │ │ │ │ │ < │ > │ ? │ │
|
||||
* ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤
|
||||
* │ │ │ │ │ │ │ │ │
|
||||
* └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘
|
||||
*/
|
||||
// Row 1
|
||||
#define LV_TILD S(LV_GRV) // ~
|
||||
#define LV_EXLM S(LV_1) // !
|
||||
#define LV_AT S(LV_2) // @
|
||||
#define LV_HASH S(LV_3) // #
|
||||
#define LV_DLR S(LV_4) // $
|
||||
#define LV_PERC S(LV_5) // %
|
||||
#define LV_CIRC S(LV_6) // ^
|
||||
#define LV_AMPR S(LV_7) // &
|
||||
#define LV_ASTR S(LV_8) // *
|
||||
#define LV_LPRN S(LV_9) // (
|
||||
#define LV_RPRN S(LV_0) // )
|
||||
#define LV_UNDS S(LV_MINS) // _
|
||||
#define LV_PLUS S(LV_EQL) // +
|
||||
// Row 2
|
||||
#define LV_LCBR S(LV_LBRC) // {
|
||||
#define LV_RCBR S(LV_RBRC) // }
|
||||
// Row 3
|
||||
#define LV_COLN S(LV_SCLN) // :
|
||||
#define LV_DQUO S(LV_QUOT) // " (dead)
|
||||
#define LV_PIPE S(LV_BSLS) // |
|
||||
// Row 4
|
||||
#define LV_LABK S(LV_COMM) // <
|
||||
#define LV_RABK S(LV_DOT) // >
|
||||
#define LV_QUES S(LV_SLSH) // ?
|
||||
|
||||
/* AltGr symbols
|
||||
* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐
|
||||
* │ - │ │ « │ » │ € │ │ ’ │ │ │ │ │ – │ │ │
|
||||
* ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤
|
||||
* │ │ │ │ Ē │ Ŗ │ │ │ Ū │ Ī │ Ō │ │ │ │ │
|
||||
* ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │
|
||||
* │ │ Ā │ Š │ │ │ Ģ │ │ │ Ķ │ Ļ │ │ ´ │ │ │
|
||||
* ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤
|
||||
* │ │ │ Ž │ │ Č │ │ │ Ņ │ │ │ │ │ │
|
||||
* ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤
|
||||
* │ │ │ │ │ │ │ │ │
|
||||
* └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘
|
||||
*/
|
||||
// Row 1
|
||||
#define LV_SHYP ALGR(LV_GRV) // - (soft hyphen)
|
||||
#define LV_NBSP ALGR(LV_1) // (non-breaking space)
|
||||
#define LV_LDAQ ALGR(LV_2) // «
|
||||
#define LV_RDAQ ALGR(LV_3) // »
|
||||
#define LV_EURO ALGR(LV_4) // €
|
||||
#define LV_RSQU ALGR(LV_6) // ’
|
||||
#define LV_NDSH ALGR(LV_MINS) // –
|
||||
// Row 2
|
||||
#define LV_EMAC ALGR(LV_E) // Ē
|
||||
#define LV_RCED ALGR(LV_R) // Ŗ
|
||||
#define LV_UMAC ALGR(LV_U) // Ū
|
||||
#define LV_IMAC ALGR(LV_I) // Ī
|
||||
#define LV_OMAC ALGR(LV_O) // Ō
|
||||
// Row 3
|
||||
#define LV_AMAC ALGR(LV_A) // Ā
|
||||
#define LV_SCAR ALGR(LV_S) // Š
|
||||
#define LV_GCED ALGR(LV_G) // Ģ
|
||||
#define LV_KCED ALGR(LV_K) // Ķ
|
||||
#define LV_LCED ALGR(LV_L) // Ļ
|
||||
#define LV_ACUT ALGR(LV_QUOT) // ´ (dead)
|
||||
// Row 4
|
||||
#define LV_ZCAR ALGR(LV_Z) // Ž
|
||||
#define LV_CCAR ALGR(LV_Z) // Č
|
||||
#define LV_NCED ALGR(LV_Z) // Ņ
|
||||
|
||||
/* Shift+AltGr symbols
|
||||
* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐
|
||||
* │ │ │ │ │ § │ ° │ │ ± │ × │ │ │ — │ │ │
|
||||
* ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤
|
||||
* │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
|
||||
* ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │
|
||||
* │ │ │ │ │ │ │ │ │ │ │ │ ¨ │ │ │
|
||||
* ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤
|
||||
* │ │ │ │ │ │ │ │ │ │ │ │ │ │
|
||||
* ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤
|
||||
* │ │ │ │ │ │ │ │ │
|
||||
* └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘
|
||||
*/
|
||||
// Row 1
|
||||
#define LV_SECT S(ALGR(LV_4)) // §
|
||||
#define LV_DEG S(ALGR(LV_5)) // °
|
||||
#define LV_PLMN S(ALGR(LV_7)) // ±
|
||||
#define LV_MUL S(ALGR(LV_8)) // ×
|
||||
#define LV_MDSH S(ALGR(LV_MINS)) // —
|
||||
// Row 3
|
||||
#define LV_DIAE S(ALGR(LV_QUOT)) // ¨ (dead)
|
||||
156
quantum/keymap_extras/keymap_lithuanian_azerty.h
Normal file
156
quantum/keymap_extras/keymap_lithuanian_azerty.h
Normal file
@@ -0,0 +1,156 @@
|
||||
/* Copyright 2020
|
||||
*
|
||||
* 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 "keymap.h"
|
||||
|
||||
// clang-format off
|
||||
|
||||
/*
|
||||
* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐
|
||||
* │ ` │ ! │ - │ / │ ; │ : │ , │ . │ = │ ( │ ) │ ? │ X │ │
|
||||
* ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤
|
||||
* │ │ Ą │ Ž │ E │ R │ T │ Y │ U │ I │ O │ P │ Į │ W │ │
|
||||
* ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │
|
||||
* │ │ A │ S │ D │ Š │ G │ H │ J │ K │ L │ Ų │ Ė │ Q │ │
|
||||
* ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤
|
||||
* │ │ < │ Z │ Ū │ C │ V │ B │ N │ M │ Č │ F │ Ę │ │
|
||||
* ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤
|
||||
* │ │ │ │ │ │ │ │ │
|
||||
* └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘
|
||||
*/
|
||||
// Row 1
|
||||
#define LT_GRV KC_GRV // `
|
||||
#define LT_EXLM KC_1 // !
|
||||
#define LT_MINS KC_2 // -
|
||||
#define LT_SLSH KC_3 // /
|
||||
#define LT_SCLN KC_4 // ;
|
||||
#define LT_COLN KC_5 // :
|
||||
#define LT_COMM KC_6 // ,
|
||||
#define LT_DOT KC_7 // .
|
||||
#define LT_EQL KC_8 // =
|
||||
#define LT_LPRN KC_9 // (
|
||||
#define LT_RPRN KC_0 // )
|
||||
#define LT_QUES KC_MINS // ?
|
||||
#define LT_X KC_EQL // X
|
||||
// Row 2
|
||||
#define LT_AOGO KC_Q // Ą
|
||||
#define LT_ZCAR KC_W // Ž
|
||||
#define LT_E KC_E // E
|
||||
#define LT_R KC_R // R
|
||||
#define LT_T KC_T // T
|
||||
#define LT_Y KC_Y // Y
|
||||
#define LT_U KC_U // U
|
||||
#define LT_I KC_I // I
|
||||
#define LT_O KC_O // O
|
||||
#define LT_P KC_P // P
|
||||
#define LT_IOGO KC_LBRC // Į
|
||||
#define LT_W KC_RBRC // W
|
||||
// Row 3
|
||||
#define LT_A KC_A // A
|
||||
#define LT_S KC_S // S
|
||||
#define LT_D KC_D // D
|
||||
#define LT_SCAR KC_F // Š
|
||||
#define LT_G KC_G // G
|
||||
#define LT_H KC_H // H
|
||||
#define LT_J KC_J // J
|
||||
#define LT_K KC_K // K
|
||||
#define LT_L KC_L // L
|
||||
#define LT_UOGO KC_SCLN // Ų
|
||||
#define LT_EDOT KC_QUOT // Ė
|
||||
#define LT_Q KC_NUHS // Q
|
||||
// Row 4
|
||||
#define LT_LABK KC_NUBS // <
|
||||
#define LT_Z KC_Z // Z
|
||||
#define LT_UMAC KC_X // Ū
|
||||
#define LT_C KC_C // C
|
||||
#define LT_V KC_V // V
|
||||
#define LT_B KC_B // B
|
||||
#define LT_N KC_N // N
|
||||
#define LT_M KC_M // M
|
||||
#define LT_CCAR KC_COMM // Č
|
||||
#define LT_F KC_DOT // F
|
||||
#define LT_EOGO KC_SLSH // Ę
|
||||
|
||||
/* Shifted symbols
|
||||
* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐
|
||||
* │ ~ │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ + │ │ │
|
||||
* ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤
|
||||
* │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
|
||||
* ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │
|
||||
* │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
|
||||
* ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤
|
||||
* │ │ > │ │ │ │ │ │ │ │ │ │ │ │
|
||||
* ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤
|
||||
* │ │ │ │ │ │ │ │ │
|
||||
* └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘
|
||||
*/
|
||||
// Row 1
|
||||
#define LT_TILD S(LT_GRV) // ~
|
||||
#define LT_1 S(LT_EXLM) // 1
|
||||
#define LT_2 S(LT_MINS) // 2
|
||||
#define LT_3 S(LT_SLSH) // 3
|
||||
#define LT_4 S(LT_SCLN) // 4
|
||||
#define LT_5 S(LT_COLN) // 5
|
||||
#define LT_6 S(LT_COMM) // 6
|
||||
#define LT_7 S(LT_DOT) // 7
|
||||
#define LT_8 S(LT_EQL) // 8
|
||||
#define LT_9 S(LT_LPRN) // 9
|
||||
#define LT_0 S(LT_RPRN) // 0
|
||||
#define LT_PLUS S(LT_QUES) // +
|
||||
// Row 4
|
||||
#define LT_RABK S(LT_LABK) // >
|
||||
|
||||
/* AltGr symbols
|
||||
* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐
|
||||
* │ ´ │ @ │ _ │ # │ $ │ § │ ^ │ & │ * │ [ │ ] │ ' │ % │ │
|
||||
* ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤
|
||||
* │ │ │ │ € │ │ │ │ │ │ │ │ { │ } │ │
|
||||
* ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │
|
||||
* │ │ │ │ │ │ │ │ │ │ │ │ " │ | │ │
|
||||
* ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤
|
||||
* │ │ – │ │ │ │ │ │ │ │ „ │ “ │ \ │ │
|
||||
* ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤
|
||||
* │ │ │ │ │ │ │ │ │
|
||||
* └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘
|
||||
*/
|
||||
// Row 1
|
||||
#define LT_ACUT ALGR(LT_GRV) // ´
|
||||
#define LT_AT ALGR(LT_EXLM) // @
|
||||
#define LT_UNDS ALGR(LT_MINS) // _
|
||||
#define LT_HASH ALGR(LT_SLSH) // #
|
||||
#define LT_DLR ALGR(LT_SCLN) // $
|
||||
#define LT_SECT ALGR(LT_COLN) // §
|
||||
#define LT_CIRC ALGR(LT_COMM) // ^
|
||||
#define LT_AMPR ALGR(LT_DOT) // &
|
||||
#define LT_ASTR ALGR(LT_EQL) // *
|
||||
#define LT_LBRC ALGR(LT_LRPN) // [
|
||||
#define LT_RBRC ALGR(LT_RPRN) // ]
|
||||
#define LT_QUOT ALGR(LT_QUES) // '
|
||||
#define LT_PERC ALGR(LT_X) // %
|
||||
// Row 2
|
||||
#define LT_EURO ALGR(LT_E) // €
|
||||
#define LT_LCBR ALGR(LT_IOGO) // {
|
||||
#define LT_RCBR ALGR(LT_W) // }
|
||||
// Row 3
|
||||
#define LT_DQUO ALGR(LT_EDOT) // "
|
||||
#define LT_PIPE ALGR(LT_Q) // |
|
||||
// Row 4
|
||||
#define LT_NDSH ALGR(LT_LABK) // –
|
||||
#define LT_DLQU ALGR(LT_CCAR) // „
|
||||
#define LT_LDQU ALGR(LT_F) // “
|
||||
#define LT_BSLS ALGR(LT_EOGO) // (backslash)
|
||||
166
quantum/keymap_extras/keymap_lithuanian_qwerty.h
Normal file
166
quantum/keymap_extras/keymap_lithuanian_qwerty.h
Normal file
@@ -0,0 +1,166 @@
|
||||
/* Copyright 2020
|
||||
*
|
||||
* 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 "keymap.h"
|
||||
|
||||
// clang-format off
|
||||
|
||||
/*
|
||||
* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐
|
||||
* │ ` │ Ą │ Č │ Ę │ Ė │ Į │ Š │ Ų │ Ū │ 9 │ 0 │ - │ Ž │ │
|
||||
* ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤
|
||||
* │ │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ [ │ ] │ │
|
||||
* ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │
|
||||
* │ │ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ ' │ \ │ │
|
||||
* ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤
|
||||
* │ │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │ │
|
||||
* ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤
|
||||
* │ │ │ │ │ │ │ │ │
|
||||
* └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘
|
||||
*/
|
||||
// Row 1
|
||||
#define LT_GRV KC_GRV // `
|
||||
#define LT_AOGO KC_1 // Ą
|
||||
#define LT_CCAR KC_2 // Č
|
||||
#define LT_EOGO KC_3 // Ę
|
||||
#define LT_EDOT KC_4 // Ė
|
||||
#define LT_IOGO KC_5 // Į
|
||||
#define LT_SCAR KC_6 // Š
|
||||
#define LT_UOGO KC_7 // Ų
|
||||
#define LT_UMAC KC_8 // Ū
|
||||
#define LT_9 KC_9 // 9
|
||||
#define LT_0 KC_0 // 0
|
||||
#define LT_MINS KC_MINS // -
|
||||
#define LT_ZCAR KC_EQL // Ž
|
||||
// Row 2
|
||||
#define LT_Q KC_Q // Q
|
||||
#define LT_W KC_W // W
|
||||
#define LT_E KC_E // E
|
||||
#define LT_R KC_R // R
|
||||
#define LT_T KC_T // T
|
||||
#define LT_Y KC_Y // Y
|
||||
#define LT_U KC_U // U
|
||||
#define LT_I KC_I // I
|
||||
#define LT_O KC_O // O
|
||||
#define LT_P KC_P // P
|
||||
#define LT_LBRC KC_LBRC // [
|
||||
#define LT_RBRC KC_RBRC // ]
|
||||
// Row 3
|
||||
#define LT_A KC_A // A
|
||||
#define LT_S KC_S // S
|
||||
#define LT_D KC_D // D
|
||||
#define LT_F KC_F // F
|
||||
#define LT_G KC_G // G
|
||||
#define LT_H KC_H // H
|
||||
#define LT_J KC_J // J
|
||||
#define LT_K KC_K // K
|
||||
#define LT_L KC_L // L
|
||||
#define LT_SCLN KC_SCLN // ;
|
||||
#define LT_QUOT KC_QUOT // '
|
||||
#define LT_BSLS KC_NUHS // (backslash)
|
||||
// Row 4
|
||||
#define LT_Z KC_Z // Z
|
||||
#define LT_X KC_X // X
|
||||
#define LT_C KC_C // C
|
||||
#define LT_V KC_V // V
|
||||
#define LT_B KC_B // B
|
||||
#define LT_N KC_N // N
|
||||
#define LT_M KC_M // M
|
||||
#define LT_COMM KC_COMM // ,
|
||||
#define LT_DOT KC_DOT // .
|
||||
#define LT_SLSH KC_SLSH // /
|
||||
|
||||
/* Shifted symbols
|
||||
* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐
|
||||
* │ ~ │ │ │ │ │ │ │ │ │ ( │ ) │ _ │ │ │
|
||||
* ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤
|
||||
* │ │ │ │ │ │ │ │ │ │ │ │ { │ } │ │
|
||||
* ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │
|
||||
* │ │ │ │ │ │ │ │ │ │ │ : │ " │ | │ │
|
||||
* ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤
|
||||
* │ │ │ │ │ │ │ │ │ < │ > │ ? │ │
|
||||
* ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤
|
||||
* │ │ │ │ │ │ │ │ │
|
||||
* └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘
|
||||
*/
|
||||
// Row 1
|
||||
#define LT_TILD S(LT_GRV) // ~
|
||||
#define LT_LPRN S(LT_9) // (
|
||||
#define LT_RPRN S(LT_0) // )
|
||||
#define LT_UNDS S(LT_MINS) // *
|
||||
// Row 2
|
||||
#define LT_LCBR S(LT_LBRC) // {
|
||||
#define LT_RCBR S(LT_RBRC) // }
|
||||
// Row 3
|
||||
#define LT_COLN S(LT_SCLN) // ;
|
||||
#define LT_DQUO S(LT_QUOT) // "
|
||||
#define LT_PIPE S(LT_BSLS) // |
|
||||
// Row 4
|
||||
#define LT_LABK S(LT_COMM) // <
|
||||
#define LT_RABK S(LT_DOT) // >
|
||||
#define LT_QUES S(LT_SLSH) // ?
|
||||
|
||||
/* AltGr symbols
|
||||
* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐
|
||||
* │ │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ │ │ │ = │ │
|
||||
* ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤
|
||||
* │ │ │ │ € │ │ │ │ │ │ │ │ │ │ │
|
||||
* ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │
|
||||
* │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
|
||||
* ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤
|
||||
* │ │ │ │ │ │ │ │ │ │ │ │ │
|
||||
* ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤
|
||||
* │ │ │ │ │ │ │ │ │
|
||||
* └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘
|
||||
*/
|
||||
// Row 1
|
||||
#define LT_1 ALGR(LT_AOGO) // 1
|
||||
#define LT_2 ALGR(LT_CCAR) // 2
|
||||
#define LT_3 ALGR(LT_EOGO) // 3
|
||||
#define LT_4 ALGR(LT_EDOT) // 4
|
||||
#define LT_5 ALGR(LT_IOGO) // 5
|
||||
#define LT_6 ALGR(LT_SCAR) // 6
|
||||
#define LT_7 ALGR(LT_UOGO) // 7
|
||||
#define LT_8 ALGR(LT_UMAC) // 8
|
||||
#define LT_EQL ALGR(LT_PLUS) // =
|
||||
// Row 2
|
||||
#define LT_EURO ALGR(LT_E) // €
|
||||
|
||||
/* Shift+AltGr symbols
|
||||
* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐
|
||||
* │ │ ! │ @ │ # │ $ │ % │ ^ │ & │ * │ │ │ │ + │ │
|
||||
* ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤
|
||||
* │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
|
||||
* ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │
|
||||
* │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
|
||||
* ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤
|
||||
* │ │ │ │ │ │ │ │ │ │ │ │ │
|
||||
* ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤
|
||||
* │ │ │ │ │ │ │ │ │
|
||||
* └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘
|
||||
*/
|
||||
// Row 1
|
||||
#define LT_EXLM S(ALGR(LT_AOGO)) // !
|
||||
#define LT_AT S(ALGR(LT_CCAR)) // @
|
||||
#define LT_HASH S(ALGR(LT_EOGO)) // #
|
||||
#define LT_DLR S(ALGR(LT_EDOT)) // $
|
||||
#define LT_PERC S(ALGR(LT_IOGO)) // %
|
||||
#define LT_CIRC S(ALGR(LT_SCAR)) // ^
|
||||
#define LT_AMPR S(ALGR(LT_UOGO)) // &
|
||||
#define LT_ASTR S(ALGR(LT_UMAC)) // *
|
||||
#define LT_PLUS S(ALGR(LT_PLUS)) // +
|
||||
136
quantum/keymap_extras/keymap_serbian.h
Normal file
136
quantum/keymap_extras/keymap_serbian.h
Normal file
@@ -0,0 +1,136 @@
|
||||
/* Copyright 2020
|
||||
*
|
||||
* 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 "keymap.h"
|
||||
|
||||
// clang-format off
|
||||
|
||||
/*
|
||||
* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐
|
||||
* │ ` │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ ' │ + │ │
|
||||
* ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤
|
||||
* │ │ Љ │ Њ │ Е │ Р │ Т │ З │ У │ И │ О │ П │ Ш │ Ђ │ │
|
||||
* ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │
|
||||
* │ │ А │ С │ Д │ Ф │ Г │ Х │ Ј │ К │ Л │ Ч │ Ћ │ Ж │ │
|
||||
* ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤
|
||||
* │ │ < │ Ѕ │ Џ │ Ц │ В │ Б │ Н │ М │ , │ . │ - │ │
|
||||
* ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤
|
||||
* │ │ │ │ │ │ │ │ │
|
||||
* └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘
|
||||
*/
|
||||
// Row 1
|
||||
#define RS_GRV KC_GRV // `
|
||||
#define RS_1 KC_1 // 1
|
||||
#define RS_2 KC_2 // 2
|
||||
#define RS_3 KC_3 // 3
|
||||
#define RS_4 KC_4 // 4
|
||||
#define RS_5 KC_5 // 5
|
||||
#define RS_6 KC_6 // 6
|
||||
#define RS_7 KC_7 // 7
|
||||
#define RS_8 KC_8 // 8
|
||||
#define RS_9 KC_9 // 9
|
||||
#define RS_0 KC_0 // 0
|
||||
#define RS_QUOT KC_MINS // ' (dead)
|
||||
#define RS_PLUS KC_EQL // +
|
||||
// Row 2
|
||||
#define RS_LJE KC_Q // Љ
|
||||
#define RS_NJE KC_W // Њ
|
||||
#define RS_IE KC_E // Е
|
||||
#define RS_ER KC_R // Р
|
||||
#define RS_TE KC_T // Т
|
||||
#define RS_ZE KC_Y // З
|
||||
#define RS_U KC_U // У
|
||||
#define RS_I KC_I // И
|
||||
#define RS_O KC_O // О
|
||||
#define RS_PE KC_P // П
|
||||
#define RS_SHA KC_LBRC // Ш
|
||||
#define RS_DJE KC_RBRC // Ђ
|
||||
// Row 3
|
||||
#define RS_A KC_A // А
|
||||
#define RS_ES KC_S // С
|
||||
#define RS_DE KC_D // Д
|
||||
#define RS_EF KC_F // Ф
|
||||
#define RS_GHE KC_G // Г
|
||||
#define RS_HA KC_H // Х
|
||||
#define RS_JE KC_J // Ј
|
||||
#define RS_KA KC_K // К
|
||||
#define RS_EL KC_L // Л
|
||||
#define RS_CHE KC_SCLN // Ч
|
||||
#define RS_TSHE KC_QUOT // Ћ
|
||||
#define RS_ZHE KC_NUHS // Ж
|
||||
// Row 4
|
||||
#define RS_LABK KC_NUBS // <
|
||||
#define RS_DZE KC_Z // Ѕ
|
||||
#define RS_DZHE KC_X // Џ
|
||||
#define RS_TSE KC_C // Ц
|
||||
#define RS_VE KC_V // В
|
||||
#define RS_BE KC_B // Б
|
||||
#define RS_EN KC_N // Н
|
||||
#define RS_EM KC_M // М
|
||||
#define RS_COMM KC_COMM // ,
|
||||
#define RS_DOT KC_DOT // .
|
||||
#define RS_MINS KC_SLSH // -
|
||||
|
||||
/* Shifted symbols
|
||||
* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐
|
||||
* │ ~ │ ! │ " │ # │ $ │ % │ & │ / │ ( │ ) │ = │ ? │ * │ │
|
||||
* ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤
|
||||
* │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
|
||||
* ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │
|
||||
* │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
|
||||
* ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤
|
||||
* │ │ > │ │ │ │ │ │ │ │ ; │ : │ _ │ │
|
||||
* ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤
|
||||
* │ │ │ │ │ │ │ │ │
|
||||
* └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘
|
||||
*/
|
||||
// Row 1
|
||||
#define RS_TILD S(RS_GRV) // ~
|
||||
#define RS_EXLM S(RS_1) // !
|
||||
#define RS_DQUO S(RS_2) // "
|
||||
#define RS_HASH S(RS_3) // #
|
||||
#define RS_DLR S(RS_4) // $
|
||||
#define RS_PERC S(RS_5) // %
|
||||
#define RS_AMPR S(RS_6) // &
|
||||
#define RS_SLSH S(RS_7) // /
|
||||
#define RS_LPRN S(RS_8) // (
|
||||
#define RS_RPRN S(RS_9) // )
|
||||
#define RS_EQL S(RS_0) // =
|
||||
#define RS_DEG S(RS_QUOT) // ?
|
||||
#define RS_UNDS S(RS_PLUS) // *
|
||||
// Row 4
|
||||
#define RS_RABK S(RS_LABK) // >
|
||||
#define RS_SCLN S(RS_COMM) // ;
|
||||
#define RS_COLN S(RS_DOT) // :
|
||||
#define RS_UNDS S(RS_MINS) // _
|
||||
|
||||
/* AltGr symbols
|
||||
* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐
|
||||
* │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
|
||||
* ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤
|
||||
* │ │ │ │ € │ │ │ │ │ │ │ │ │ │ │
|
||||
* ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │
|
||||
* │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
|
||||
* ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤
|
||||
* │ │ │ │ │ │ │ │ │ │ │ │ │ │
|
||||
* ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤
|
||||
* │ │ │ │ │ │ │ │ │
|
||||
* └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘
|
||||
*/
|
||||
// Row 2
|
||||
#define RS_EURO ALGR(RS_IE) // €
|
||||
164
quantum/keymap_extras/keymap_serbian_latin.h
Normal file
164
quantum/keymap_extras/keymap_serbian_latin.h
Normal file
@@ -0,0 +1,164 @@
|
||||
/* Copyright 2020
|
||||
*
|
||||
* 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 "keymap.h"
|
||||
|
||||
// clang-format off
|
||||
|
||||
/*
|
||||
* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐
|
||||
* │ ‚ │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ ' │ + │ │
|
||||
* ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤
|
||||
* │ │ Q │ W │ E │ R │ T │ Z │ U │ I │ O │ P │ Š │ Đ │ │
|
||||
* ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │
|
||||
* │ │ A │ S │ D │ F │ G │ H │ J │ K │ L │ Č │ Ć │ Ž │ │
|
||||
* ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤
|
||||
* │ │ < │ Y │ X │ C │ V │ B │ N │ M │ , │ . │ - │ │
|
||||
* ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤
|
||||
* │ │ │ │ │ │ │ │ │
|
||||
* └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘
|
||||
*/
|
||||
// Row 1
|
||||
#define RS_SLQU KC_GRV // ‚ (dead)
|
||||
#define RS_1 KC_1 // 1
|
||||
#define RS_2 KC_2 // 2
|
||||
#define RS_3 KC_3 // 3
|
||||
#define RS_4 KC_4 // 4
|
||||
#define RS_5 KC_5 // 5
|
||||
#define RS_6 KC_6 // 6
|
||||
#define RS_7 KC_7 // 7
|
||||
#define RS_8 KC_8 // 8
|
||||
#define RS_9 KC_9 // 9
|
||||
#define RS_0 KC_0 // 0
|
||||
#define RS_QUOT KC_MINS // '
|
||||
#define RS_PLUS KC_EQL // +
|
||||
// Row 2
|
||||
#define RS_Q KC_Q // Q
|
||||
#define RS_W KC_W // W
|
||||
#define RS_E KC_E // E
|
||||
#define RS_R KC_R // R
|
||||
#define RS_T KC_T // T
|
||||
#define RS_Z KC_Y // Z
|
||||
#define RS_U KC_U // U
|
||||
#define RS_I KC_I // I
|
||||
#define RS_O KC_O // O
|
||||
#define RS_P KC_P // P
|
||||
#define RS_SCAR KC_LBRC // Š
|
||||
#define RS_DSTR KC_RBRC // Đ
|
||||
// Row 3
|
||||
#define RS_A KC_A // A
|
||||
#define RS_S KC_S // S
|
||||
#define RS_D KC_D // D
|
||||
#define RS_F KC_F // F
|
||||
#define RS_G KC_G // G
|
||||
#define RS_H KC_H // H
|
||||
#define RS_J KC_J // J
|
||||
#define RS_K KC_K // K
|
||||
#define RS_L KC_L // L
|
||||
#define RS_CCAR KC_SCLN // Č
|
||||
#define RS_CACU KC_QUOT // Ć
|
||||
#define RS_ZCAR KC_NUHS // Ž
|
||||
// Row 4
|
||||
#define RS_LABK KC_NUBS // <
|
||||
#define RS_Y KC_Z // Y
|
||||
#define RS_X KC_X // X
|
||||
#define RS_C KC_C // C
|
||||
#define RS_V KC_V // V
|
||||
#define RS_B KC_B // B
|
||||
#define RS_N KC_N // N
|
||||
#define RS_M KC_M // M
|
||||
#define RS_COMM KC_COMM // ,
|
||||
#define RS_DOT KC_DOT // .
|
||||
#define RS_MINS KC_SLSH // -
|
||||
|
||||
/* Shifted symbols
|
||||
* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐
|
||||
* │ ~ │ ! │ " │ # │ $ │ % │ & │ / │ ( │ ) │ = │ ? │ * │ │
|
||||
* ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤
|
||||
* │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
|
||||
* ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │
|
||||
* │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
|
||||
* ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤
|
||||
* │ │ > │ │ │ │ │ │ │ │ ; │ : │ _ │ │
|
||||
* ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤
|
||||
* │ │ │ │ │ │ │ │ │
|
||||
* └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘
|
||||
*/
|
||||
// Row 1
|
||||
#define RS_TILD S(RS_SLQU) // ~
|
||||
#define RS_EXLM S(RS_1) // !
|
||||
#define RS_DQUO S(RS_2) // "
|
||||
#define RS_HASH S(RS_3) // #
|
||||
#define RS_DLR S(RS_4) // $
|
||||
#define RS_PERC S(RS_5) // %
|
||||
#define RS_AMPR S(RS_6) // &
|
||||
#define RS_SLSH S(RS_7) // /
|
||||
#define RS_LPRN S(RS_8) // (
|
||||
#define RS_RPRN S(RS_9) // )
|
||||
#define RS_EQL S(RS_0) // =
|
||||
#define RS_DEG S(RS_QUOT) // ?
|
||||
#define RS_UNDS S(RS_PLUS) // *
|
||||
// Row 4
|
||||
#define RS_RABK S(RS_LABK) // >
|
||||
#define RS_SCLN S(RS_COMM) // ;
|
||||
#define RS_COLN S(RS_DOT) // :
|
||||
#define RS_UNDS S(RS_MINS) // _
|
||||
|
||||
/* AltGr symbols
|
||||
* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐
|
||||
* │ │ │ ˇ │ ^ │ ˘ │ ° │ ˛ │ ` │ ˙ │ ´ │ ˝ │ ¨ │ ¸ │ │
|
||||
* ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤
|
||||
* │ │ \ │ | │ € │ │ │ │ │ │ │ │ ÷ │ × │ │
|
||||
* ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │
|
||||
* │ │ │ │ │ [ │ ] │ │ │ ł │ Ł │ │ ß │ ¤ │ │
|
||||
* ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤
|
||||
* │ │ │ │ │ │ @ │ { │ } │ § │ │ │ │ │
|
||||
* ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤
|
||||
* │ │ │ │ │ │ │ │ │
|
||||
* └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘
|
||||
*/
|
||||
// Row 1
|
||||
#define RS_CARN ALGR(RS_2) // ˇ (dead)
|
||||
#define RS_CIRC ALGR(RS_3) // ^ (dead)
|
||||
#define RS_BREV ALGR(RS_4) // ˘ (dead)
|
||||
#define RS_RNGA ALGR(RS_5) // ° (dead)
|
||||
#define RS_OGON ALGR(RS_6) // ˛ (dead)
|
||||
#define RS_GRV ALGR(RS_7) // `
|
||||
#define RS_DOTA ALGR(RS_8) // ˙ (dead)
|
||||
#define RS_ACUT ALGR(RS_9) // ´ (dead)
|
||||
#define RS_DACU ALGR(RS_0) // ˝ (dead)
|
||||
#define RS_DIAE ALGR(RS_QUOT) // ¨ (dead)
|
||||
#define RS_CEDL ALGR(RS_PLUS) // ¸ (dead)
|
||||
// Row 2
|
||||
#define RS_BSLS ALGR(RS_Q) // (backslash)
|
||||
#define RS_PIPE ALGR(RS_W) // |
|
||||
#define RS_EURO ALGR(RS_E) // €
|
||||
#define RS_DIV ALGR(RS_SCAR) // ÷
|
||||
#define RS_MUL ALGR(RS_DSTR) // ×
|
||||
// Row 3
|
||||
#define RS_LBRC ALGR(RS_F) // [
|
||||
#define RS_RBRC ALGR(RS_G) // ]
|
||||
#define RS_LLST ALGR(RS_K) // ł
|
||||
#define RS_CLST ALGR(RS_L) // Ł
|
||||
#define RS_SS ALGR(RS_CACU) // ß
|
||||
#define RS_CURR ALGR(RS_ZCAR) // ¤
|
||||
// Row 4
|
||||
#define RS_AT ALGR(RS_V) // @
|
||||
#define RS_LCBR ALGR(RS_B) // {
|
||||
#define RS_RCBR ALGR(RS_N) // }
|
||||
#define RS_SECT ALGR(RS_M) // §
|
||||
176
quantum/keymap_extras/keymap_slovak.h
Normal file
176
quantum/keymap_extras/keymap_slovak.h
Normal file
@@ -0,0 +1,176 @@
|
||||
/* Copyright 2020
|
||||
*
|
||||
* 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 "keymap.h"
|
||||
|
||||
// clang-format off
|
||||
|
||||
/*
|
||||
* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐
|
||||
* │ ; │ + │ ľ │ š │ č │ ť │ ž │ ý │ á │ í │ é │ = │ ´ │ │
|
||||
* ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤
|
||||
* │ │ Q │ W │ E │ R │ T │ Z │ U │ I │ O │ P │ ú │ ä │ │
|
||||
* ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │
|
||||
* │ │ A │ S │ D │ F │ G │ H │ J │ K │ L │ ô │ § │ ň │ │
|
||||
* ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤
|
||||
* │ │ & │ Y │ X │ C │ V │ B │ N │ M │ , │ . │ - │ │
|
||||
* ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤
|
||||
* │ │ │ │ │ │ │ │ │
|
||||
* └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘
|
||||
*/
|
||||
// Row 1
|
||||
#define SK_SCLN KC_GRV // ;
|
||||
#define SK_PLUS KC_1 // +
|
||||
#define SK_LACU KC_2 // ľ
|
||||
#define SK_SCAR KC_3 // š
|
||||
#define SK_CCAR KC_4 // č
|
||||
#define SK_TACU KC_5 // ť
|
||||
#define SK_ZCAR KC_6 // ž
|
||||
#define SK_YACU KC_7 // ý
|
||||
#define SK_AACU KC_8 // á
|
||||
#define SK_IACU KC_9 // í
|
||||
#define SK_EACU KC_0 // é
|
||||
#define SK_EQL KC_MINS // =
|
||||
#define SK_ACUT KC_EQL // ´ (dead)
|
||||
// Row 2
|
||||
#define SK_Q KC_Q // Q
|
||||
#define SK_W KC_W // W
|
||||
#define SK_E KC_E // E
|
||||
#define SK_R KC_R // R
|
||||
#define SK_T KC_T // T
|
||||
#define SK_Z KC_Y // Z
|
||||
#define SK_U KC_U // U
|
||||
#define SK_I KC_I // I
|
||||
#define SK_O KC_O // O
|
||||
#define SK_P KC_P // P
|
||||
#define SK_UACU KC_LBRC // ú
|
||||
#define SK_ADIA KC_RBRC // ä
|
||||
// Row 3
|
||||
#define SK_A KC_A // A
|
||||
#define SK_S KC_S // S
|
||||
#define SK_D KC_D // D
|
||||
#define SK_F KC_F // F
|
||||
#define SK_G KC_G // G
|
||||
#define SK_H KC_H // H
|
||||
#define SK_J KC_J // J
|
||||
#define SK_K KC_K // K
|
||||
#define SK_L KC_L // L
|
||||
#define SK_OCIR KC_SCLN // ô
|
||||
#define SK_SECT KC_QUOT // §
|
||||
#define SK_NCAR KC_NUHS // ň
|
||||
// Row 4
|
||||
#define SK_AMPR KC_NUBS // &
|
||||
#define SK_Y KC_Z // Y
|
||||
#define SK_X KC_X // X
|
||||
#define SK_C KC_C // C
|
||||
#define SK_V KC_V // V
|
||||
#define SK_B KC_B // B
|
||||
#define SK_N KC_N // N
|
||||
#define SK_M KC_M // M
|
||||
#define SK_COMM KC_COMM // ,
|
||||
#define SK_DOT KC_DOT // .
|
||||
#define SK_MINS KC_SLSH // -
|
||||
|
||||
/* Shifted symbols
|
||||
* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐
|
||||
* │ ° │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ % │ ˇ │ │
|
||||
* ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤
|
||||
* │ │ │ │ │ │ │ │ │ │ │ │ / │ ( │ │
|
||||
* ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │
|
||||
* │ │ │ │ │ │ │ │ │ │ │ " │ ! │ ) │ │
|
||||
* ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤
|
||||
* │ │ * │ │ │ │ │ │ │ │ ? │ : │ _ │ │
|
||||
* ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤
|
||||
* │ │ │ │ │ │ │ │ │
|
||||
* └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘
|
||||
*/
|
||||
// Row 1
|
||||
#define SK_RNGA S(SK_SCLN) // ° (dead)
|
||||
#define SK_1 S(SK_PLUS) // 1
|
||||
#define SK_2 S(SK_LACU) // 2
|
||||
#define SK_3 S(SK_SCAR) // 3
|
||||
#define SK_4 S(SK_CCAR) // 4
|
||||
#define SK_5 S(SK_TACU) // 5
|
||||
#define SK_6 S(SK_ZCAR) // 6
|
||||
#define SK_7 S(SK_YACU) // 7
|
||||
#define SK_8 S(SK_AACU) // 8
|
||||
#define SK_9 S(SK_IACU) // 9
|
||||
#define SK_0 S(SK_EACU) // 0
|
||||
#define SK_PERC S(SK_EQL) // %
|
||||
#define SK_CARN S(SK_ACUT) // ˇ (dead)
|
||||
// Row 2
|
||||
#define SK_SLSH S(SK_UACU) // /
|
||||
#define SK_LPRN S(SK_ADIA) // (
|
||||
// Row 3
|
||||
#define SK_DQUO S(SK_OCIR) // "
|
||||
#define SK_EXLM S(SK_SECT) // !
|
||||
#define SK_RPRN S(SK_NCAR) // )
|
||||
// Row 4
|
||||
#define SK_ASTR S(SK_AMPR) // *
|
||||
#define SK_QUES S(SK_COMM) // ?
|
||||
#define SK_COLN S(SK_DOT) // :
|
||||
#define SK_UNDS S(SK_MINS) // _
|
||||
|
||||
/* AltGr symbols
|
||||
* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐
|
||||
* │ │ ~ │ │ ^ │ ˘ │ ° │ ˛ │ ` │ ˙ │ │ ˝ │ ¨ │ ¸ │ │
|
||||
* ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤
|
||||
* │ │ \ │ | │ € │ │ │ │ │ │ │ ' │ ÷ │ × │ │
|
||||
* ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │
|
||||
* │ │ │ đ │ Đ │ [ │ ] │ │ │ ł │ Ł │ $ │ ß │ ¤ │ │
|
||||
* ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤
|
||||
* │ │ < │ > │ # │ │ @ │ { │ } │ │ │ │ │ │
|
||||
* ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤
|
||||
* │ │ │ │ │ │ │ │ │
|
||||
* └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘
|
||||
*/
|
||||
// Row 1
|
||||
#define SK_TILD ALGR(SK_PLUS) // ~
|
||||
#define SK_CIRC ALGR(SK_LACU) // ^ (dead)
|
||||
#define SK_BREV ALGR(SK_SCAR) // ˘ (dead)
|
||||
#define SK_RNGA ALGR(SK_CCAR) // ° (dead)
|
||||
#define SK_OGON ALGR(SK_TACU) // ˛ (dead)
|
||||
#define SK_GRV ALGR(SK_ZCAR) // `
|
||||
#define SK_DOTA ALGR(SK_YACU) // ˙ (dead)
|
||||
#define SK_DACU ALGR(SK_EACU) // ˝ (dead)
|
||||
#define SK_DIAE ALGR(SK_EQL) // ¨ (dead)
|
||||
#define SK_CEDL ALGR(SK_ACUT) // ¸ (dead)
|
||||
// Row 2
|
||||
#define SK_BSLS ALGR(SK_Q) // (backslash)
|
||||
#define SK_PIPE ALGR(SK_W) // |
|
||||
#define SK_EURO ALGR(SK_E) // €
|
||||
#define SK_QUOT ALGR(SK_P) // '
|
||||
#define SK_DIV ALGR(SK_UACU) // ÷
|
||||
#define SK_MUL ALGR(SK_ADIA) // ×
|
||||
// Row 3
|
||||
#define SK_LDST ALGR(SK_S) // đ
|
||||
#define SK_CDST ALGR(SK_D) // Đ
|
||||
#define SK_LBRC ALGR(SK_F) // [
|
||||
#define SK_RBRC ALGR(SK_G) // ]
|
||||
#define SK_LLST ALGR(SK_K) // ł
|
||||
#define SK_CLST ALGR(SK_L) // Ł
|
||||
#define SK_DLR ALGR(SK_OCIR) // $
|
||||
#define SK_SS ALGR(SK_SECT) // ß
|
||||
#define SK_CURR ALGR(SK_NCAR) // ¤
|
||||
// Row 4
|
||||
#define SK_LABK ALGR(SK_AMPR) // <
|
||||
#define SK_RABK ALGR(SK_Y) // >
|
||||
#define SK_HASH ALGR(SK_X) // #
|
||||
#define SK_AT ALGR(SK_V) // @
|
||||
#define SK_LCBR ALGR(SK_B) // {
|
||||
#define SK_RCBR ALGR(SK_N) // }
|
||||
59
quantum/keymap_extras/sendstring_latvian.h
Normal file
59
quantum/keymap_extras/sendstring_latvian.h
Normal file
@@ -0,0 +1,59 @@
|
||||
/* Copyright 2020
|
||||
*
|
||||
* 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 Latvian layouts
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "keymap_latvian.h"
|
||||
|
||||
// clang-format off
|
||||
|
||||
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, LV_1, LV_QUOT, LV_3, LV_4, LV_5, LV_7, LV_QUOT,
|
||||
// ( ) * + , - . /
|
||||
LV_9, LV_0, LV_8, LV_EQL, LV_COMM, LV_MINS, LV_DOT, LV_SLSH,
|
||||
// 0 1 2 3 4 5 6 7
|
||||
LV_0, LV_1, LV_2, LV_3, LV_4, LV_5, LV_6, LV_7,
|
||||
// 8 9 : ; < = > ?
|
||||
LV_8, LV_9, LV_SCLN, LV_SCLN, LV_COMM, LV_EQL, LV_DOT, LV_SLSH,
|
||||
// @ A B C D E F G
|
||||
LV_2, LV_A, LV_B, LV_C, LV_D, LV_E, LV_F, LV_G,
|
||||
// H I J K L M N O
|
||||
LV_H, LV_I, LV_J, LV_K, LV_L, LV_M, LV_N, LV_O,
|
||||
// P Q R S T U V W
|
||||
LV_P, LV_Q, LV_R, LV_S, LV_T, LV_U, LV_V, LV_W,
|
||||
// X Y Z [ \ ] ^ _
|
||||
LV_X, LV_Y, LV_Z, LV_LBRC, LV_BSLS, LV_RBRC, LV_6, LV_MINS,
|
||||
// ` a b c d e f g
|
||||
LV_GRV, LV_A, LV_B, LV_C, LV_D, LV_E, LV_F, LV_G,
|
||||
// h i j k l m n o
|
||||
LV_H, LV_I, LV_J, LV_K, LV_L, LV_M, LV_N, LV_O,
|
||||
// p q r s t u v w
|
||||
LV_P, LV_Q, LV_R, LV_S, LV_T, LV_U, LV_V, LV_W,
|
||||
// x y z { | } ~ DEL
|
||||
LV_X, LV_Y, LV_Z, LV_LBRC, LV_BSLS, LV_RBRC, LV_GRV, KC_DEL
|
||||
};
|
||||
100
quantum/keymap_extras/sendstring_lithuanian_azerty.h
Normal file
100
quantum/keymap_extras/sendstring_lithuanian_azerty.h
Normal file
@@ -0,0 +1,100 @@
|
||||
/* Copyright 2020
|
||||
*
|
||||
* 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 Lithuanian ĄŽERTY layouts
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "keymap_lithuanian_azerty.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, 0, 0, 0, 0, 0, 0, 0),
|
||||
KCLUT_ENTRY(0, 0, 0, 1, 0, 0, 0, 0),
|
||||
KCLUT_ENTRY(1, 1, 1, 1, 1, 1, 1, 1),
|
||||
KCLUT_ENTRY(1, 1, 0, 0, 0, 0, 1, 0),
|
||||
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, 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, 1, 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, 1, 1, 1, 1, 1, 1),
|
||||
KCLUT_ENTRY(0, 0, 1, 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(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, 1),
|
||||
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, 1, 1, 0, 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, LT_EXLM, LT_EDOT, LT_SLSH, LT_SCLN, LT_X, LT_DOT, LT_QUES,
|
||||
// ( ) * + , - . /
|
||||
LT_LRPN, LT_RPRN, LT_EQL, LT_QUES, LT_COMM, LT_MINS, LT_DOT, LT_SLSH,
|
||||
// 0 1 2 3 4 5 6 7
|
||||
LT_RPRN, LT_EXLM, LT_MINS, LT_SLSH, LT_SLCN, LT_COLN, LT_COMM, LT_DOT,
|
||||
// 8 9 : ; < = > ?
|
||||
LT_EQL, LT_LPRN, LT_COLN, LT_SCLN, LT_LABK, LT_EQL, LT_LABK, LT_QUES,
|
||||
// @ A B C D E F G
|
||||
LT_EXLM, LT_A, LT_B, LT_C, LT_D, LT_E, LT_F, LT_G,
|
||||
// H I J K L M N O
|
||||
LT_H, LT_I, LT_J, LT_K, LT_L, LT_M, LT_N, LT_O,
|
||||
// P Q R S T U V W
|
||||
LT_P, LT_Q, LT_R, LT_S, LT_T, LT_U, LT_V, LT_W,
|
||||
// X Y Z [ \ ] ^ _
|
||||
LT_X, LT_Y, LT_Z, LT_LPRN, LT_EOGO, LT_RPRN, LT_COMM, LT_MINS,
|
||||
// ` a b c d e f g
|
||||
LT_GRV, LT_A, LT_B, LT_C, LT_D, LT_E, LT_F, LT_G,
|
||||
// h i j k l m n o
|
||||
LT_H, LT_I, LT_J, LT_K, LT_L, LT_M, LT_N, LT_O,
|
||||
// p q r s t u v w
|
||||
LT_P, LT_Q, LT_R, LT_S, LT_T, LT_U, LT_V, LT_W,
|
||||
// x y z { | } ~ DEL
|
||||
LT_X, LT_Y, LT_Z, LT_IOGO, LT_Q, LT_W, LT_GRV, KC_DEL
|
||||
};
|
||||
80
quantum/keymap_extras/sendstring_lithuanian_qwerty.h
Normal file
80
quantum/keymap_extras/sendstring_lithuanian_qwerty.h
Normal file
@@ -0,0 +1,80 @@
|
||||
/* Copyright 2020
|
||||
*
|
||||
* 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 Lithuanian QWERTY layouts
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "keymap_lithuanian_qwerty.h"
|
||||
#include "quantum.h"
|
||||
|
||||
// clang-format off
|
||||
|
||||
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, 1, 0, 1, 1, 1, 1, 0),
|
||||
KCLUT_ENTRY(0, 0, 1, 1, 0, 0, 0, 0),
|
||||
KCLUT_ENTRY(0, 1, 1, 1, 1, 1, 1, 1),
|
||||
KCLUT_ENTRY(1, 0, 0, 0, 0, 1, 0, 0),
|
||||
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, 0, 0, 0, 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)
|
||||
};
|
||||
|
||||
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, LT_1, LT_QUOT, LT_3, LT_4, LT_5, LT_7, LT_QUOT,
|
||||
// ( ) * + , - . /
|
||||
LT_9, LT_0, LT_8, LT_ZCAR, LT_COMM, LT_MINS, LT_DOT, LT_SLSH,
|
||||
// 0 1 2 3 4 5 6 7
|
||||
LT_0, LT_AOGO, LT_CCAR, LT_EOGO, LT_EDOT, LT_IOGO, LT_SCAR, LT_UOGO,
|
||||
// 8 9 : ; < = > ?
|
||||
LT_UMAC, LT_9, LT_SCLN, LT_SCLN, LT_COMM, LT_PLUS, LT_DOT, LT_SLSH,
|
||||
// @ A B C D E F G
|
||||
LT_CCAR, LT_A, LT_B, LT_C, LT_D, LT_E, LT_F, LT_G,
|
||||
// H I J K L M N O
|
||||
LT_H, LT_I, LT_J, LT_K, LT_L, LT_M, LT_N, LT_O,
|
||||
// P Q R S T U V W
|
||||
LT_P, LT_Q, LT_R, LT_S, LT_T, LT_U, LT_V, LT_W,
|
||||
// X Y Z [ \ ] ^ _
|
||||
LT_X, LT_Y, LT_Z, LT_LBRC, LT_BSLS, LT_RBRC, LT_SCAR, LT_MINS,
|
||||
// ` a b c d e f g
|
||||
LT_GRV, LT_A, LT_B, LT_C, LT_D, LT_E, LT_F, LT_G,
|
||||
// h i j k l m n o
|
||||
LT_H, LT_I, LT_J, LT_K, LT_L, LT_M, LT_N, LT_O,
|
||||
// p q r s t u v w
|
||||
LT_P, LT_Q, LT_R, LT_S, LT_T, LT_U, LT_V, LT_W,
|
||||
// x y z { | } ~ DEL
|
||||
LT_X, LT_Y, LT_Z, LT_LBRC, LT_BSLS, LT_RBRC, LT_GRV, KC_DEL
|
||||
};
|
||||
100
quantum/keymap_extras/sendstring_serbian_latin.h
Normal file
100
quantum/keymap_extras/sendstring_serbian_latin.h
Normal file
@@ -0,0 +1,100 @@
|
||||
/* Copyright 2020
|
||||
*
|
||||
* 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 Serbian (Latin) layouts
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "keymap_serbian_latin.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, 1, 1, 1, 0),
|
||||
KCLUT_ENTRY(1, 1, 1, 0, 0, 0, 0, 1),
|
||||
KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
|
||||
KCLUT_ENTRY(0, 0, 1, 1, 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, 0, 0, 0, 1),
|
||||
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, 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(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),
|
||||
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, RS_1, RS_2, RS_3, RS_4, RS_5, RS_6, RS_QUOT,
|
||||
// ( ) * + , - . /
|
||||
RS_8, RS_9, RS_PLUS, RS_PLUS, RS_COMM, RS_MINS, RS_DOT, RS_7,
|
||||
// 0 1 2 3 4 5 6 7
|
||||
RS_0, RS_1, RS_2, RS_3, RS_4, RS_5, RS_6, RS_7,
|
||||
// 8 9 : ; < = > ?
|
||||
RS_8, RS_9, RS_DOT, RS_COMM, RS_LABK, RS_0, RS_LABK, RS_QUOT,
|
||||
// @ A B C D E F G
|
||||
RS_V, RS_A, RS_B, RS_C, RS_D, RS_E, RS_F, RS_G,
|
||||
// H I J K L M N O
|
||||
RS_H, RS_I, RS_J, RS_K, RS_L, RS_M, RS_N, RS_O,
|
||||
// P Q R S T U V W
|
||||
RS_P, RS_Q, RS_R, RS_S, RS_T, RS_U, RS_V, RS_W,
|
||||
// X Y Z [ \ ] ^ _
|
||||
RS_X, RS_Y, RS_Z, RS_F, RS_Q, RS_G, RS_3, RS_MINS,
|
||||
// ` a b c d e f g
|
||||
RS_7, RS_A, RS_B, RS_C, RS_D, RS_E, RS_F, RS_G,
|
||||
// h i j k l m n o
|
||||
RS_H, RS_I, RS_J, RS_K, RS_L, RS_M, RS_N, RS_O,
|
||||
// p q r s t u v w
|
||||
RS_P, RS_Q, RS_R, RS_S, RS_T, RS_U, RS_V, RS_W,
|
||||
// x y z { | } ~ DEL
|
||||
RS_X, RS_Y, RS_Z, RS_B, RS_W, RS_N, RS_1, KC_DEL
|
||||
};
|
||||
100
quantum/keymap_extras/sendstring_slovak.h
Normal file
100
quantum/keymap_extras/sendstring_slovak.h
Normal file
@@ -0,0 +1,100 @@
|
||||
/* Copyright 2020
|
||||
*
|
||||
* 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 Slovak layouts
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "keymap_slovak.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, 0, 0, 0, 0, 0),
|
||||
KCLUT_ENTRY(1, 1, 1, 0, 0, 0, 0, 1),
|
||||
KCLUT_ENTRY(1, 1, 1, 1, 1, 1, 1, 1),
|
||||
KCLUT_ENTRY(1, 1, 1, 0, 0, 0, 0, 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, 0, 0, 0, 1),
|
||||
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, 0, 0, 1),
|
||||
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(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),
|
||||
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, SK_SECT, SK_OCIR, SK_X, SK_OCIR, SK_EQL, SK_AMPR, SK_P,
|
||||
// ( ) * + , - . /
|
||||
SK_ADIA, SK_NCAR, SK_AMPR, SK_PLUS, SK_COMM, SK_MINS, SK_DOT, SK_UACU,
|
||||
// 0 1 2 3 4 5 6 7
|
||||
SK_EACU, SK_PLUS, SK_LACU, SK_SCAR, SK_CCAR, SK_TACU, SK_ZCAR, SK_YACU,
|
||||
// 8 9 : ; < = > ?
|
||||
SK_AACU, SK_IACU, SK_DOT, SK_SCLN, SK_AMPR, SK_EQL, SK_Y, SK_COMM,
|
||||
// @ A B C D E F G
|
||||
SK_V, SK_A, SK_B, SK_C, SK_D, SK_E, SK_F, SK_G,
|
||||
// H I J K L M N O
|
||||
SK_H, SK_I, SK_J, SK_K, SK_L, SK_M, SK_N, SK_O,
|
||||
// P Q R S T U V W
|
||||
SK_P, SK_Q, SK_R, SK_S, SK_T, SK_U, SK_V, SK_W,
|
||||
// X Y Z [ \ ] ^ _
|
||||
SK_X, SK_Y, SK_Z, SK_F, SK_Q, SK_G, SK_3, SK_MINS,
|
||||
// ` a b c d e f g
|
||||
SK_7, SK_A, SK_B, SK_C, SK_D, SK_E, SK_F, SK_G,
|
||||
// h i j k l m n o
|
||||
SK_H, SK_I, SK_J, SK_K, SK_L, SK_M, SK_N, SK_O,
|
||||
// p q r s t u v w
|
||||
SK_P, SK_Q, SK_R, SK_S, SK_T, SK_U, SK_V, SK_W,
|
||||
// x y z { | } ~ DEL
|
||||
SK_X, SK_Y, SK_Z, SK_B, SK_W, SK_N, SK_1, KC_DEL
|
||||
};
|
||||
@@ -78,8 +78,8 @@ __attribute__((weak)) void unicode_input_start(void) {
|
||||
clear_mods(); // Unregister mods to start from a clean state
|
||||
|
||||
switch (unicode_config.input_mode) {
|
||||
case UC_OSX:
|
||||
register_code(UNICODE_KEY_OSX);
|
||||
case UC_MAC:
|
||||
register_code(UNICODE_KEY_MAC);
|
||||
break;
|
||||
case UC_LNX:
|
||||
tap_code16(UNICODE_KEY_LNX);
|
||||
@@ -99,8 +99,8 @@ __attribute__((weak)) void unicode_input_start(void) {
|
||||
|
||||
__attribute__((weak)) void unicode_input_finish(void) {
|
||||
switch (unicode_config.input_mode) {
|
||||
case UC_OSX:
|
||||
unregister_code(UNICODE_KEY_OSX);
|
||||
case UC_MAC:
|
||||
unregister_code(UNICODE_KEY_MAC);
|
||||
break;
|
||||
case UC_LNX:
|
||||
tap_code(KC_SPC);
|
||||
@@ -118,8 +118,8 @@ __attribute__((weak)) void unicode_input_finish(void) {
|
||||
|
||||
__attribute__((weak)) void unicode_input_cancel(void) {
|
||||
switch (unicode_config.input_mode) {
|
||||
case UC_OSX:
|
||||
unregister_code(UNICODE_KEY_OSX);
|
||||
case UC_MAC:
|
||||
unregister_code(UNICODE_KEY_MAC);
|
||||
break;
|
||||
case UC_LNX:
|
||||
case UC_WINC:
|
||||
@@ -253,11 +253,11 @@ bool process_unicode_common(uint16_t keycode, keyrecord_t *record) {
|
||||
cycle_unicode_input_mode(-1);
|
||||
break;
|
||||
|
||||
case UNICODE_MODE_OSX:
|
||||
set_unicode_input_mode(UC_OSX);
|
||||
#if defined(AUDIO_ENABLE) && defined(UNICODE_SONG_OSX)
|
||||
static float song_osx[][2] = UNICODE_SONG_OSX;
|
||||
PLAY_SONG(song_osx);
|
||||
case UNICODE_MODE_MAC:
|
||||
set_unicode_input_mode(UC_MAC);
|
||||
#if defined(AUDIO_ENABLE) && defined(UNICODE_SONG_MAC)
|
||||
static float song_mac[][2] = UNICODE_SONG_MAC;
|
||||
PLAY_SONG(song_mac);
|
||||
#endif
|
||||
break;
|
||||
case UNICODE_MODE_LNX:
|
||||
|
||||
@@ -23,8 +23,8 @@
|
||||
#endif
|
||||
|
||||
// Keycodes used for starting Unicode input on different platforms
|
||||
#ifndef UNICODE_KEY_OSX
|
||||
# define UNICODE_KEY_OSX KC_LALT
|
||||
#ifndef UNICODE_KEY_MAC
|
||||
# define UNICODE_KEY_MAC KC_LALT
|
||||
#endif
|
||||
#ifndef UNICODE_KEY_LNX
|
||||
# define UNICODE_KEY_LNX LCTL(LSFT(KC_U))
|
||||
@@ -49,8 +49,17 @@
|
||||
# define UNICODE_TYPE_DELAY 10
|
||||
#endif
|
||||
|
||||
// Deprecated aliases
|
||||
#if !defined(UNICODE_KEY_MAC) && defined(UNICODE_KEY_OSX)
|
||||
# define UNICODE_KEY_MAC UNICODE_KEY_OSX
|
||||
#endif
|
||||
#if !defined(UNICODE_SONG_MAC) && defined(UNICODE_SONG_OSX)
|
||||
# define UNICODE_SONG_MAC UNICODE_SONG_OSX
|
||||
#endif
|
||||
#define UC_OSX UC_MAC
|
||||
|
||||
enum unicode_input_modes {
|
||||
UC_OSX, // Mac OS X using Unicode Hex Input
|
||||
UC_MAC, // macOS using Unicode Hex Input
|
||||
UC_LNX, // Linux using IBus
|
||||
UC_WIN, // Windows using EnableHexNumpad
|
||||
UC_BSD, // BSD (not implemented)
|
||||
|
||||
@@ -43,7 +43,7 @@ bool process_unicodemap(uint16_t keycode, keyrecord_t *record) {
|
||||
if (code > 0x10FFFF || (code > 0xFFFF && input_mode == UC_WIN)) {
|
||||
// Character is out of range supported by the platform
|
||||
unicode_input_cancel();
|
||||
} else if (code > 0xFFFF && input_mode == UC_OSX) {
|
||||
} else if (code > 0xFFFF && input_mode == UC_MAC) {
|
||||
// Convert to UTF-16 surrogate pair on Mac
|
||||
code -= 0x10000;
|
||||
uint32_t lo = code & 0x3FF, hi = (code & 0xFFC00) >> 10;
|
||||
|
||||
@@ -144,10 +144,6 @@ void reset_keyboard(void) {
|
||||
#endif
|
||||
#ifdef HAPTIC_ENABLE
|
||||
haptic_shutdown();
|
||||
#endif
|
||||
// this is also done later in bootloader.c - not sure if it's neccesary here
|
||||
#ifdef BOOTLOADER_CATERINA
|
||||
*(uint16_t *)0x0800 = 0x7777; // these two are a-star-specific
|
||||
#endif
|
||||
bootloader_jump();
|
||||
}
|
||||
|
||||
@@ -459,7 +459,7 @@ enum quantum_keycodes {
|
||||
|
||||
UNICODE_MODE_FORWARD,
|
||||
UNICODE_MODE_REVERSE,
|
||||
UNICODE_MODE_OSX,
|
||||
UNICODE_MODE_MAC,
|
||||
UNICODE_MODE_LNX,
|
||||
UNICODE_MODE_WIN,
|
||||
UNICODE_MODE_BSD,
|
||||
@@ -777,7 +777,9 @@ enum quantum_keycodes {
|
||||
#define UC_MOD UNICODE_MODE_FORWARD
|
||||
#define UC_RMOD UNICODE_MODE_REVERSE
|
||||
|
||||
#define UC_M_OS UNICODE_MODE_OSX
|
||||
#define UC_M_MA UNICODE_MODE_MAC
|
||||
#define UNICODE_MODE_OSX UNICODE_MODE_MAC // Deprecated alias
|
||||
#define UC_M_OS UNICODE_MODE_MAC // Deprecated alias
|
||||
#define UC_M_LN UNICODE_MODE_LNX
|
||||
#define UC_M_WI UNICODE_MODE_WIN
|
||||
#define UC_M_BS UNICODE_MODE_BSD
|
||||
|
||||
@@ -98,10 +98,6 @@ ifndef TEENSY_LOADER_CLI
|
||||
endif
|
||||
endif
|
||||
|
||||
# Program the device.
|
||||
program: $(BUILD_DIR)/$(TARGET).hex $(BUILD_DIR)/$(TARGET).eep check-size
|
||||
$(PROGRAM_CMD)
|
||||
|
||||
define EXEC_TEENSY
|
||||
$(TEENSY_LOADER_CLI) -mmcu=$(MCU) -w -v $(BUILD_DIR)/$(TARGET).hex
|
||||
endef
|
||||
@@ -314,7 +310,9 @@ production: $(BUILD_DIR)/$(TARGET).hex bootloader cpfirmware
|
||||
$(SIZE) $(TARGET).hex $(TARGET)_bootloader.hex $(TARGET)_production.hex
|
||||
|
||||
flash: $(BUILD_DIR)/$(TARGET).hex check-size cpfirmware
|
||||
ifeq ($(strip $(BOOTLOADER)), caterina)
|
||||
ifneq ($(strip $(PROGRAM_CMD)),)
|
||||
$(PROGRAM_CMD)
|
||||
else ifeq ($(strip $(BOOTLOADER)), caterina)
|
||||
$(call EXEC_AVRDUDE)
|
||||
else ifeq ($(strip $(BOOTLOADER)), halfkay)
|
||||
$(call EXEC_TEENSY)
|
||||
|
||||
@@ -327,7 +327,9 @@ bin: $(BUILD_DIR)/$(TARGET).bin sizeafter
|
||||
|
||||
|
||||
flash: $(BUILD_DIR)/$(TARGET).bin cpfirmware sizeafter
|
||||
ifeq ($(strip $(BOOTLOADER)),dfu)
|
||||
ifneq ($(strip $(PROGRAM_CMD)),)
|
||||
$(PROGRAM_CMD)
|
||||
else ifeq ($(strip $(BOOTLOADER)),dfu)
|
||||
$(call EXEC_DFU_UTIL)
|
||||
else ifeq ($(strip $(MCU_FAMILY)),KINETIS)
|
||||
$(call EXEC_TEENSY)
|
||||
|
||||
@@ -69,14 +69,8 @@ extern host_driver_t lufa_driver;
|
||||
# define MIDI_SYSEX_BUFFER (API_SYSEX_MAX_SIZE + API_SYSEX_MAX_SIZE / 7 + (API_SYSEX_MAX_SIZE % 7 ? 1 : 0))
|
||||
#endif
|
||||
|
||||
// #if LUFA_VERSION_INTEGER < 0x120730
|
||||
// /* old API 120219 */
|
||||
// #define ENDPOINT_CONFIG(epnum, eptype, epdir, epsize, epbank) Endpoint_ConfigureEndpoint(epnum, eptype, epdir, epsize, epbank)
|
||||
// #else
|
||||
/* new API >= 120730 */
|
||||
#define ENDPOINT_BANK_SINGLE 1
|
||||
#define ENDPOINT_BANK_DOUBLE 2
|
||||
#define ENDPOINT_CONFIG(epnum, eptype, epdir, epsize, epbank) Endpoint_ConfigureEndpoint((epdir) | (epnum), eptype, epsize, epbank)
|
||||
// #endif
|
||||
|
||||
#endif
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
#pragma once
|
||||
|
||||
// Use custom magic number so that when switching branches, EEPROM always gets reset
|
||||
#define EECONFIG_MAGIC_NUMBER (uint16_t)0x1337
|
||||
#define EECONFIG_MAGIC_NUMBER (uint16_t)0x1338
|
||||
|
||||
/* Set Polling rate to 1000Hz */
|
||||
#define USB_POLLING_INTERVAL_MS 1
|
||||
@@ -21,7 +21,7 @@
|
||||
|
||||
# define AUDIO_CLICKY_FREQ_RANDOMNESS 1.5f
|
||||
|
||||
# define UNICODE_SONG_OSX SONG(RICK_ROLL)
|
||||
# define UNICODE_SONG_MAC SONG(RICK_ROLL)
|
||||
# define UNICODE_SONG_LNX SONG(RICK_ROLL)
|
||||
# define UNICODE_SONG_WIN SONG(RICK_ROLL)
|
||||
# define UNICODE_SONG_BSD SONG(RICK_ROLL)
|
||||
@@ -52,6 +52,7 @@
|
||||
# if defined(__AVR__) && !defined(__AVR_AT90USB1286__)
|
||||
# define DISABLE_RGB_MATRIX_ALPHAS_MODS
|
||||
# define DISABLE_RGB_MATRIX_GRADIENT_UP_DOWN
|
||||
# define DISABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
|
||||
# define DISABLE_RGB_MATRIX_BREATHING
|
||||
# define DISABLE_RGB_MATRIX_BAND_SAT
|
||||
# define DISABLE_RGB_MATRIX_BAND_VAL
|
||||
|
||||
@@ -18,12 +18,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#include "drashna.h"
|
||||
|
||||
userspace_config_t userspace_config;
|
||||
#if (defined(UNICODE_ENABLE) || defined(UNICODEMAP_ENABLE) || defined(UCIS_ENABLE))
|
||||
# define DRASHNA_UNICODE_MODE UC_WIN
|
||||
#else
|
||||
// set to 2 for UC_WIN, set to 4 for UC_WINC
|
||||
# define DRASHNA_UNICODE_MODE 2
|
||||
#endif
|
||||
|
||||
bool mod_key_press_timer(uint16_t code, uint16_t mod_code, bool pressed) {
|
||||
static uint16_t this_timer;
|
||||
@@ -93,19 +87,17 @@ void matrix_init_user(void) {
|
||||
DDRB &= ~(1 << 0);
|
||||
PORTB &= ~(1 << 0);
|
||||
#endif
|
||||
|
||||
#if (defined(UNICODE_ENABLE) || defined(UNICODEMAP_ENABLE) || defined(UCIS_ENABLE))
|
||||
set_unicode_input_mode(DRASHNA_UNICODE_MODE);
|
||||
get_unicode_input_mode();
|
||||
#endif // UNICODE_ENABLE
|
||||
matrix_init_keymap();
|
||||
}
|
||||
|
||||
__attribute__((weak)) void keyboard_post_init_keymap(void) {}
|
||||
|
||||
void keyboard_post_init_user(void) {
|
||||
#if defined(RGBLIGHT_ENABLE) || defined(RGB_MATRIX_ENABLE)
|
||||
keyboard_post_init_rgb();
|
||||
#if defined(RGBLIGHT_ENABLE)
|
||||
keyboard_post_init_rgb_light();
|
||||
#endif
|
||||
#if defined(RGB_MATRIX_ENABLE)
|
||||
keyboard_post_init_rgb_matrix();
|
||||
#endif
|
||||
keyboard_post_init_keymap();
|
||||
}
|
||||
@@ -155,9 +147,12 @@ void matrix_scan_user(void) {
|
||||
run_diablo_macro_check();
|
||||
#endif // TAP_DANCE_ENABLE
|
||||
|
||||
#if defined(RGBLIGHT_ENABLE) || defined(RGB_MATRIX_ENABLE)
|
||||
matrix_scan_rgb();
|
||||
#if defined(RGBLIGHT_ENABLE)
|
||||
matrix_scan_rgb_light();
|
||||
#endif // RGBLIGHT_ENABLE
|
||||
#if defined(RGB_MATRIX_ENABLE)
|
||||
matrix_scan_rgb_matrix();
|
||||
#endif
|
||||
|
||||
matrix_scan_keymap();
|
||||
}
|
||||
@@ -168,8 +163,8 @@ __attribute__((weak)) layer_state_t layer_state_set_keymap(layer_state_t state)
|
||||
// Then runs keymap's layer change check
|
||||
layer_state_t layer_state_set_user(layer_state_t state) {
|
||||
state = update_tri_layer_state(state, _RAISE, _LOWER, _ADJUST);
|
||||
#if defined(RGBLIGHT_ENABLE) || defined(RGB_MATRIX_ENABLE)
|
||||
state = layer_state_set_rgb(state);
|
||||
#if defined(RGBLIGHT_ENABLE)
|
||||
state = layer_state_set_rgb_light(state);
|
||||
#endif // RGBLIGHT_ENABLE
|
||||
return layer_state_set_keymap(state);
|
||||
}
|
||||
@@ -200,12 +195,6 @@ void eeconfig_init_user(void) {
|
||||
userspace_config.raw = 0;
|
||||
userspace_config.rgb_layer_change = true;
|
||||
eeconfig_update_user(userspace_config.raw);
|
||||
#if (defined(UNICODE_ENABLE) || defined(UNICODEMAP_ENABLE) || defined(UCIS_ENABLE))
|
||||
set_unicode_input_mode(DRASHNA_UNICODE_MODE);
|
||||
get_unicode_input_mode();
|
||||
#else
|
||||
eeprom_update_byte(EECONFIG_UNICODEMODE, DRASHNA_UNICODE_MODE);
|
||||
#endif
|
||||
eeconfig_init_keymap();
|
||||
keyboard_init();
|
||||
}
|
||||
|
||||
@@ -25,9 +25,15 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#ifdef TAP_DANCE_ENABLE
|
||||
# include "tap_dances.h"
|
||||
#endif // TAP_DANCE_ENABLE
|
||||
#if defined(RGBLIGHT_ENABLE) || defined(RGB_MATRIX_ENABLE)
|
||||
#if defined(RGBLIGHT_ENABLE)
|
||||
# include "rgb_stuff.h"
|
||||
#endif
|
||||
#if defined(RGB_MATRIX_ENABLE)
|
||||
# include "rgb_matrix_stuff.h"
|
||||
#endif
|
||||
#if defined(OLED_DRIVER_ENABLE)
|
||||
# include "oled_stuff.h"
|
||||
#endif
|
||||
|
||||
/* Define layer names */
|
||||
enum userspace_layers {
|
||||
@@ -70,7 +76,6 @@ typedef union {
|
||||
bool rgb_layer_change :1;
|
||||
bool is_overwatch :1;
|
||||
bool nuke_switch :1;
|
||||
uint8_t unicode_mod :4;
|
||||
bool swapped_numbers :1;
|
||||
bool rgb_matrix_idle_anim :1;
|
||||
};
|
||||
|
||||
278
users/drashna/oled_stuff.c
Normal file
278
users/drashna/oled_stuff.c
Normal file
@@ -0,0 +1,278 @@
|
||||
#include "drashna.h"
|
||||
|
||||
extern uint8_t is_master;
|
||||
|
||||
#ifndef KEYLOGGER_LENGTH
|
||||
// # ifdef OLED_DISPLAY_128X64
|
||||
# define KEYLOGGER_LENGTH ((int)(OLED_DISPLAY_HEIGHT / OLED_FONT_WIDTH))
|
||||
// # else
|
||||
// # define KEYLOGGER_LENGTH (uint8_t *(OLED_DISPLAY_WIDTH / OLED_FONT_HEIGHT))
|
||||
// # endif
|
||||
#endif
|
||||
|
||||
static uint32_t oled_timer = 0;
|
||||
static char keylog_str[KEYLOGGER_LENGTH + 1] = {"\n"};
|
||||
static uint16_t log_timer = 0;
|
||||
|
||||
// clang-format off
|
||||
static const char PROGMEM code_to_name[0xFF] = {
|
||||
// 0 1 2 3 4 5 6 7 8 9 A B c D E F
|
||||
' ', ' ', ' ', ' ', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', // 0x
|
||||
'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', '1', '2', // 1x
|
||||
'3', '4', '5', '6', '7', '8', '9', '0', 20, 19, 27, 26, 22, '-', '=', '[', // 2x
|
||||
']','\\', '#', ';','\'', '`', ',', '.', '/', 128, ' ', ' ', ' ', ' ', ' ', ' ', // 3x
|
||||
' ', ' ', ' ', ' ', ' ', ' ', 'P', 'S', ' ', ' ', ' ', ' ', 16, ' ', ' ', ' ', // 4x
|
||||
' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', // 5x
|
||||
' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', // 6x
|
||||
' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', // 7x
|
||||
' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', // 8x
|
||||
' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', // 9x
|
||||
' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', // Ax
|
||||
' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', // Bx
|
||||
' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', // Cx
|
||||
' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', // Dx
|
||||
'C', 'S', 'A', 'C', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', // Ex
|
||||
' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ' // Fx
|
||||
};
|
||||
// clang-format on
|
||||
|
||||
void add_keylog(uint16_t keycode) {
|
||||
if ((keycode >= QK_MOD_TAP && keycode <= QK_MOD_TAP_MAX) || (keycode >= QK_LAYER_TAP && keycode <= QK_LAYER_TAP_MAX) || (keycode >= QK_MODS && keycode <= QK_MODS_MAX)) {
|
||||
keycode = keycode & 0xFF;
|
||||
} else if (keycode > 0xFF) {
|
||||
keycode = 0;
|
||||
}
|
||||
|
||||
for (uint8_t i = (KEYLOGGER_LENGTH - 1); i > 0; --i) {
|
||||
keylog_str[i] = keylog_str[i - 1];
|
||||
}
|
||||
|
||||
if (keycode < (sizeof(code_to_name) / sizeof(char))) {
|
||||
keylog_str[0] = pgm_read_byte(&code_to_name[keycode]);
|
||||
}
|
||||
|
||||
log_timer = timer_read();
|
||||
}
|
||||
|
||||
bool process_record_user_oled(uint16_t keycode, keyrecord_t *record) {
|
||||
if (record->event.pressed) {
|
||||
#ifdef OLED_DRIVER_ENABLE
|
||||
oled_timer = timer_read32();
|
||||
add_keylog(keycode);
|
||||
#endif
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
void update_log(void) {
|
||||
if (timer_elapsed(log_timer) > 750) {
|
||||
// add_keylog(0);
|
||||
}
|
||||
}
|
||||
|
||||
void render_keylogger_status(void) {
|
||||
oled_write_P(PSTR(OLED_RENDER_KEYLOGGER), false);
|
||||
oled_write(keylog_str, false);
|
||||
}
|
||||
|
||||
void render_default_layer_state(void) {
|
||||
oled_write_P(PSTR(OLED_RENDER_LAYOUT_NAME), false);
|
||||
switch (get_highest_layer(default_layer_state)) {
|
||||
case _QWERTY:
|
||||
oled_write_P(PSTR(OLED_RENDER_LAYOUT_QWERTY), false);
|
||||
break;
|
||||
case _COLEMAK:
|
||||
oled_write_P(PSTR(OLED_RENDER_LAYOUT_COLEMAK), false);
|
||||
break;
|
||||
case _DVORAK:
|
||||
oled_write_P(PSTR(OLED_RENDER_LAYOUT_DVORAK), false);
|
||||
break;
|
||||
case _WORKMAN:
|
||||
oled_write_P(PSTR(OLED_RENDER_LAYOUT_WORKMAN), false);
|
||||
break;
|
||||
case _NORMAN:
|
||||
oled_write_P(PSTR(OLED_RENDER_LAYOUT_NORMAN), false);
|
||||
break;
|
||||
case _MALTRON:
|
||||
oled_write_P(PSTR(OLED_RENDER_LAYOUT_MALTRON), false);
|
||||
break;
|
||||
case _EUCALYN:
|
||||
oled_write_P(PSTR(OLED_RENDER_LAYOUT_EUCALYN), false);
|
||||
break;
|
||||
case _CARPLAX:
|
||||
oled_write_P(PSTR(OLED_RENDER_LAYOUT_CARPLAX), false);
|
||||
break;
|
||||
}
|
||||
#ifdef OLED_DISPLAY_128X64
|
||||
oled_advance_page(true);
|
||||
#endif
|
||||
}
|
||||
|
||||
void render_layer_state(void) {
|
||||
oled_write_P(PSTR(OLED_RENDER_LAYER_NAME), false);
|
||||
#ifdef OLED_DISPLAY_128X64
|
||||
oled_write_P(PSTR(" "), false);
|
||||
#endif
|
||||
oled_write_P(PSTR(OLED_RENDER_LAYER_LOWER), layer_state_is(_LOWER));
|
||||
#ifdef OLED_DISPLAY_128X64
|
||||
oled_write_P(PSTR(" "), false);
|
||||
#endif
|
||||
oled_write_P(PSTR(OLED_RENDER_LAYER_RAISE), layer_state_is(_RAISE));
|
||||
#if _MODS
|
||||
# ifdef OLED_DISPLAY_128X64
|
||||
oled_write_P(PSTR(" "), false);
|
||||
# endif
|
||||
oled_write_P(PSTR(OLED_RENDER_LAYER_MODS), layer_state_is(_MODS));
|
||||
#endif
|
||||
#ifdef OLED_DISPLAY_128X64
|
||||
oled_advance_page(true);
|
||||
#endif
|
||||
}
|
||||
|
||||
void render_keylock_status(uint8_t led_usb_state) {
|
||||
oled_write_P(PSTR(OLED_RENDER_LOCK_NAME), false);
|
||||
oled_write_P(PSTR(" "), false);
|
||||
oled_write_P(PSTR(OLED_RENDER_LOCK_NUML), led_usb_state & (1 << USB_LED_NUM_LOCK));
|
||||
#ifdef OLED_DISPLAY_128X64
|
||||
oled_write_P(PSTR(" "), false);
|
||||
#endif
|
||||
oled_write_P(PSTR(OLED_RENDER_LOCK_CAPS), led_usb_state & (1 << USB_LED_CAPS_LOCK));
|
||||
#ifdef OLED_DISPLAY_128X64
|
||||
oled_write_P(PSTR(" "), false);
|
||||
#endif
|
||||
oled_write_P(PSTR(OLED_RENDER_LOCK_SCLK), led_usb_state & (1 << USB_LED_SCROLL_LOCK));
|
||||
#ifndef OLED_DISPLAY_128X64
|
||||
oled_advance_page(true);
|
||||
#endif
|
||||
}
|
||||
|
||||
void render_mod_status(uint8_t modifiers) {
|
||||
oled_write_P(PSTR(OLED_RENDER_MODS_NAME), false);
|
||||
oled_write_P(PSTR(OLED_RENDER_MODS_SFT), (modifiers & MOD_MASK_SHIFT));
|
||||
#ifdef OLED_DISPLAY_128X64
|
||||
oled_write_P(PSTR(" "), false);
|
||||
#endif
|
||||
oled_write_P(PSTR(OLED_RENDER_MODS_CTL), (modifiers & MOD_MASK_CTRL));
|
||||
#ifdef OLED_DISPLAY_128X64
|
||||
oled_write_P(PSTR(" "), false);
|
||||
#endif
|
||||
oled_write_P(PSTR(OLED_RENDER_MODS_ALT), (modifiers & MOD_MASK_ALT));
|
||||
#ifdef OLED_DISPLAY_128X64
|
||||
oled_write_P(PSTR(" "), false);
|
||||
#endif
|
||||
oled_write_P(PSTR(OLED_RENDER_MODS_GUI), (modifiers & MOD_MASK_GUI));
|
||||
}
|
||||
|
||||
void render_bootmagic_status(void) {
|
||||
/* Show Ctrl-Gui Swap options */
|
||||
static const char PROGMEM logo[][2][3] = {
|
||||
{{0x97, 0x98, 0}, {0xb7, 0xb8, 0}},
|
||||
{{0x95, 0x96, 0}, {0xb5, 0xb6, 0}},
|
||||
};
|
||||
|
||||
oled_write_P(PSTR(OLED_RENDER_BOOTMAGIC_NAME), false);
|
||||
#ifdef OLED_DISPLAY_128X64
|
||||
if (keymap_config.swap_lctl_lgui)
|
||||
#else
|
||||
oled_write_P(PSTR(" "), false);
|
||||
#endif
|
||||
{
|
||||
oled_write_P(logo[1][0], false);
|
||||
#ifdef OLED_DISPLAY_128X64
|
||||
} else {
|
||||
#endif
|
||||
oled_write_P(logo[0][0], false);
|
||||
}
|
||||
oled_write_P(PSTR(" "), false);
|
||||
#ifdef OLED_DISPLAY_128X64
|
||||
oled_write_P(PSTR(OLED_RENDER_BOOTMAGIC_NKRO), keymap_config.nkro);
|
||||
oled_write_P(PSTR(" "), false);
|
||||
oled_write_ln_P(PSTR(OLED_RENDER_BOOTMAGIC_NOGUI), !keymap_config.no_gui);
|
||||
oled_write_P(PSTR("Magic "), false);
|
||||
if (keymap_config.swap_lctl_lgui)
|
||||
#endif
|
||||
{
|
||||
oled_write_P(logo[1][1], false);
|
||||
#ifdef OLED_DISPLAY_128X64
|
||||
} else {
|
||||
#endif
|
||||
oled_write_P(logo[0][1], false);
|
||||
}
|
||||
oled_write_P(PSTR(" "), false);
|
||||
#ifdef OLED_DISPLAY_128X64
|
||||
oled_write_P(PSTR(OLED_RENDER_BOOTMAGIC_GRV), keymap_config.swap_grave_esc);
|
||||
oled_write_P(PSTR(" "), false);
|
||||
oled_write_P(PSTR(OLED_RENDER_BOOTMAGIC_CAPS), keymap_config.swap_control_capslock);
|
||||
oled_advance_page(true);
|
||||
#else
|
||||
oled_write_P(PSTR(OLED_RENDER_BOOTMAGIC_NKRO), keymap_config.nkro);
|
||||
#endif
|
||||
}
|
||||
|
||||
void render_user_status(void) {
|
||||
oled_write_P(PSTR(OLED_RENDER_USER_NAME), false);
|
||||
oled_write_P(PSTR(" "), false);
|
||||
oled_write_P(PSTR(OLED_RENDER_USER_ANIM), userspace_config.rgb_matrix_idle_anim);
|
||||
oled_write_P(PSTR(" "), false);
|
||||
oled_write_P(PSTR(OLED_RENDER_USER_LAYR), userspace_config.rgb_layer_change);
|
||||
oled_write_P(PSTR(" "), false);
|
||||
oled_write_P(PSTR(OLED_RENDER_USER_NUKE), userspace_config.nuke_switch);
|
||||
#ifdef OLED_DISPLAY_128X64
|
||||
oled_advance_page(true);
|
||||
#endif
|
||||
}
|
||||
|
||||
__attribute__((weak)) void oled_driver_render_logo(void) {
|
||||
// clang-format off
|
||||
static const char PROGMEM qmk_logo[] = {
|
||||
0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8a,0x8b,0x8c,0x8d,0x8e,0x8f,0x90,0x91,0x92,0x93,0x94,
|
||||
0xa0,0xa1,0xa2,0xa3,0xa4,0xa5,0xa6,0xa7,0xa8,0xa9,0xaa,0xab,0xac,0xad,0xae,0xaf,0xb0,0xb1,0xb2,0xb3,0xb4,
|
||||
0xc0,0xc1,0xc2,0xc3,0xc4,0xc5,0xc6,0xc7,0xc8,0xc9,0xca,0xcb,0xcc,0xcd,0xce,0xcf,0xd0,0xd1,0xd2,0xd3,0xd4,0};
|
||||
// clang-format on
|
||||
oled_write_P(qmk_logo, false);
|
||||
}
|
||||
|
||||
void render_status_secondary(void) {
|
||||
#if !defined(SPLIT_TRANSPORT_MIRROR) || defined(OLED_DRIVER_128x64)
|
||||
oled_driver_render_logo();
|
||||
#endif
|
||||
#ifdef SPLIT_TRANSPORT_MIRROR
|
||||
/* Show Keyboard Layout */
|
||||
render_default_layer_state();
|
||||
render_layer_state();
|
||||
render_mod_status(get_mods() | get_oneshot_mods());
|
||||
render_keylogger_status();
|
||||
|
||||
#endif
|
||||
}
|
||||
// clang-format on
|
||||
|
||||
void render_status_main(void) {
|
||||
/* Show Keyboard Layout */
|
||||
render_default_layer_state();
|
||||
render_keylock_status(host_keyboard_leds());
|
||||
render_bootmagic_status();
|
||||
render_user_status();
|
||||
|
||||
render_keylogger_status();
|
||||
}
|
||||
|
||||
void oled_task_user(void) {
|
||||
if (timer_elapsed32(oled_timer) > 30000) {
|
||||
oled_off();
|
||||
return;
|
||||
}
|
||||
#ifndef SPLIT_KEYBOARD
|
||||
else {
|
||||
oled_on();
|
||||
}
|
||||
#endif
|
||||
|
||||
update_log();
|
||||
|
||||
if (is_master) {
|
||||
render_status_main(); // Renders the current keyboard state (layer, lock, caps, scroll, etc)
|
||||
} else {
|
||||
render_status_secondary();
|
||||
}
|
||||
}
|
||||
91
users/drashna/oled_stuff.h
Normal file
91
users/drashna/oled_stuff.h
Normal file
@@ -0,0 +1,91 @@
|
||||
#pragma once
|
||||
|
||||
#include "quantum.h"
|
||||
#include "oled_driver.h"
|
||||
|
||||
void oled_driver_render_logo(void);
|
||||
bool process_record_user_oled(uint16_t keycode, keyrecord_t *record);
|
||||
|
||||
#ifdef OLED_DISPLAY_128X64
|
||||
# define OLED_RENDER_KEYLOGGER "Keylogger: "
|
||||
|
||||
# define OLED_RENDER_LAYOUT_NAME "Layout: "
|
||||
# define OLED_RENDER_LAYOUT_QWERTY "Qwerty"
|
||||
# define OLED_RENDER_LAYOUT_COLEMAK "Colemak"
|
||||
# define OLED_RENDER_LAYOUT_DVORAK "Dvorak"
|
||||
# define OLED_RENDER_LAYOUT_WORKMAN "Workman"
|
||||
# define OLED_RENDER_LAYOUT_NORMAN "Norman"
|
||||
# define OLED_RENDER_LAYOUT_MALTRON "Matron"
|
||||
# define OLED_RENDER_LAYOUT_EUCALYN "Eucalyn"
|
||||
# define OLED_RENDER_LAYOUT_CARPLAX "Carplax"
|
||||
|
||||
# define OLED_RENDER_LAYER_NAME "Layer:\n"
|
||||
# define OLED_RENDER_LAYER_LOWER "Lower"
|
||||
# define OLED_RENDER_LAYER_RAISE "Raise"
|
||||
# define OLED_RENDER_LAYER_ADJUST "Adjust"
|
||||
# define OLED_RENDER_LAYER_MODS "Mods"
|
||||
|
||||
# define OLED_RENDER_LOCK_NAME "Lock: "
|
||||
# define OLED_RENDER_LOCK_NUML "NUML"
|
||||
# define OLED_RENDER_LOCK_CAPS "CAPS"
|
||||
# define OLED_RENDER_LOCK_SCLK "SCLK"
|
||||
|
||||
# define OLED_RENDER_MODS_NAME "Mods: "
|
||||
# define OLED_RENDER_MODS_SFT "Sft"
|
||||
# define OLED_RENDER_MODS_CTL "Ctl"
|
||||
# define OLED_RENDER_MODS_ALT "Alt"
|
||||
# define OLED_RENDER_MODS_GUI "GUI"
|
||||
|
||||
# define OLED_RENDER_BOOTMAGIC_NAME "Boot "
|
||||
# define OLED_RENDER_BOOTMAGIC_NKRO "NKRO"
|
||||
# define OLED_RENDER_BOOTMAGIC_NOGUI "nGUI"
|
||||
# define OLED_RENDER_BOOTMAGIC_GRV "GRV"
|
||||
# define OLED_RENDER_BOOTMAGIC_CAPS "CAPS"
|
||||
|
||||
# define OLED_RENDER_USER_NAME "USER:"
|
||||
# define OLED_RENDER_USER_ANIM "Anim"
|
||||
# define OLED_RENDER_USER_LAYR "Layr"
|
||||
# define OLED_RENDER_USER_NUKE "Nuke"
|
||||
|
||||
#else
|
||||
# define OLED_RENDER_KEYLOGGER "KLogr"
|
||||
|
||||
# define OLED_RENDER_LAYOUT_NAME "Lyout"
|
||||
# define OLED_RENDER_LAYOUT_QWERTY " QRTY"
|
||||
# define OLED_RENDER_LAYOUT_COLEMAK " COLE"
|
||||
# define OLED_RENDER_LAYOUT_DVORAK " DVRK"
|
||||
# define OLED_RENDER_LAYOUT_WORKMAN " WKMN"
|
||||
# define OLED_RENDER_LAYOUT_NORMAN " NORM"
|
||||
# define OLED_RENDER_LAYOUT_MALTRON " MLTN"
|
||||
# define OLED_RENDER_LAYOUT_EUCALYN " ECLN"
|
||||
# define OLED_RENDER_LAYOUT_CARPLAX " CRPX"
|
||||
|
||||
# define OLED_RENDER_LAYER_NAME "LAYER"
|
||||
# define OLED_RENDER_LAYER_LOWER "Lower"
|
||||
# define OLED_RENDER_LAYER_RAISE "Raise"
|
||||
# define OLED_RENDER_LAYER_ADJUST "Adjst"
|
||||
# define OLED_RENDER_LAYER_MODS " Mods"
|
||||
|
||||
# define OLED_RENDER_LOCK_NAME "Lock:"
|
||||
# define OLED_RENDER_LOCK_NUML "N"
|
||||
# define OLED_RENDER_LOCK_CAPS "C"
|
||||
# define OLED_RENDER_LOCK_SCLK "S"
|
||||
|
||||
# define OLED_RENDER_MODS_NAME "Mods: "
|
||||
# define OLED_RENDER_MODS_SFT "S"
|
||||
# define OLED_RENDER_MODS_CTL "C"
|
||||
# define OLED_RENDER_MODS_ALT "A"
|
||||
# define OLED_RENDER_MODS_GUI "G"
|
||||
|
||||
# define OLED_RENDER_BOOTMAGIC_NAME "BTMGK"
|
||||
# define OLED_RENDER_BOOTMAGIC_NKRO "NKRO"
|
||||
# define OLED_RENDER_BOOTMAGIC_NOGUI "nGUI"
|
||||
# define OLED_RENDER_BOOTMAGIC_GRV "GRV"
|
||||
# define OLED_RENDER_BOOTMAGIC_CAPS "CAPS"
|
||||
|
||||
# define OLED_RENDER_USER_NAME "USER:"
|
||||
# define OLED_RENDER_USER_ANIM "Anim"
|
||||
# define OLED_RENDER_USER_LAYR "Layr"
|
||||
# define OLED_RENDER_USER_NUKE "Nuke"
|
||||
|
||||
#endif
|
||||
@@ -17,101 +17,308 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
||||
xprintf("KL: kc: %u, col: %u, row: %u, pressed: %u\n", keycode, record->event.key.col, record->event.key.row, record->event.pressed);
|
||||
# endif
|
||||
#endif // KEYLOGGER_ENABLE
|
||||
#ifdef OLED_DRIVER_ENABLE
|
||||
process_record_user_oled(keycode, record);
|
||||
#endif // OLED
|
||||
|
||||
switch (keycode) {
|
||||
case KC_QWERTY ... KC_WORKMAN:
|
||||
if (record->event.pressed) {
|
||||
uint8_t mods = mod_config(get_mods() | get_oneshot_mods());
|
||||
if (!mods) {
|
||||
set_single_persistent_default_layer(keycode - KC_QWERTY);
|
||||
} else if (mods & MOD_MASK_SHIFT) {
|
||||
set_single_persistent_default_layer(keycode - KC_QWERTY + 4);
|
||||
} else if (mods & MOD_MASK_CTRL) {
|
||||
set_single_persistent_default_layer(keycode - KC_QWERTY + 8);
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
case KC_MAKE: // Compiles the firmware, and adds the flash command based on keyboard bootloader
|
||||
if (!record->event.pressed) {
|
||||
uint8_t temp_mod = mod_config(get_mods());
|
||||
uint8_t temp_osm = mod_config(get_oneshot_mods());
|
||||
clear_mods();
|
||||
clear_oneshot_mods();
|
||||
send_string_with_delay_P(PSTR("make " QMK_KEYBOARD ":" QMK_KEYMAP), TAP_CODE_DELAY);
|
||||
#ifndef MAKE_BOOTLOADER
|
||||
if ((temp_mod | temp_osm) & MOD_MASK_SHIFT)
|
||||
if (process_record_keymap(keycode, record) && process_record_secrets(keycode, record)
|
||||
#ifdef RGB_MATRIX_ENABLE
|
||||
&& process_record_user_rgb_matrix(keycode, record)
|
||||
#endif
|
||||
{
|
||||
send_string_with_delay_P(PSTR(":flash"), TAP_CODE_DELAY);
|
||||
}
|
||||
if ((temp_mod | temp_osm) & MOD_MASK_CTRL) {
|
||||
send_string_with_delay_P(PSTR(" -j8 --output-sync"), TAP_CODE_DELAY);
|
||||
#ifdef RGBLIGHT_ENABLE
|
||||
&& process_record_user_rgb_light(keycode, record)
|
||||
#endif
|
||||
) {
|
||||
switch (keycode) {
|
||||
case KC_QWERTY ... KC_WORKMAN:
|
||||
if (record->event.pressed) {
|
||||
uint8_t mods = mod_config(get_mods() | get_oneshot_mods());
|
||||
if (!mods) {
|
||||
set_single_persistent_default_layer(keycode - KC_QWERTY);
|
||||
} else if (mods & MOD_MASK_SHIFT) {
|
||||
set_single_persistent_default_layer(keycode - KC_QWERTY + 4);
|
||||
} else if (mods & MOD_MASK_CTRL) {
|
||||
set_single_persistent_default_layer(keycode - KC_QWERTY + 8);
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
case KC_MAKE: // Compiles the firmware, and adds the flash command based on keyboard bootloader
|
||||
if (!record->event.pressed) {
|
||||
#ifndef MAKE_BOOTLOADER
|
||||
uint8_t temp_mod = mod_config(get_mods());
|
||||
uint8_t temp_osm = mod_config(get_oneshot_mods());
|
||||
clear_mods();
|
||||
clear_oneshot_mods();
|
||||
#endif
|
||||
send_string_with_delay_P(PSTR("bin/qmk"), TAP_CODE_DELAY);
|
||||
#ifndef MAKE_BOOTLOADER
|
||||
if ((temp_mod | temp_osm) & MOD_MASK_SHIFT)
|
||||
#endif
|
||||
{
|
||||
send_string_with_delay_P(PSTR(" flash "), TAP_CODE_DELAY);
|
||||
#ifndef MAKE_BOOTLOADER
|
||||
} else {
|
||||
send_string_with_delay_P(PSTR(" compile "), TAP_CODE_DELAY);
|
||||
#endif
|
||||
}
|
||||
send_string_with_delay_P(PSTR("-kb " QMK_KEYBOARD " -km " QMK_KEYMAP), TAP_CODE_DELAY);
|
||||
#ifdef RGB_MATRIX_SPLIT_RIGHT
|
||||
send_string_with_delay_P(PSTR(" RGB_MATRIX_SPLIT_RIGHT=yes"), TAP_CODE_DELAY);
|
||||
send_string_with_delay_P(PSTR(" RGB_MATRIX_SPLIT_RIGHT=yes"), TAP_CODE_DELAY);
|
||||
# ifndef OLED_DRIVER_ENABLE
|
||||
send_string_with_delay_P(PSTR(" OLED_DRIVER_ENABLE=no"), TAP_CODE_DELAY);
|
||||
send_string_with_delay_P(PSTR(" OLED_DRIVER_ENABLE=no"), TAP_CODE_DELAY);
|
||||
# endif
|
||||
#endif
|
||||
send_string_with_delay_P(PSTR(SS_TAP(X_ENTER)), TAP_CODE_DELAY);
|
||||
}
|
||||
send_string_with_delay_P(PSTR(SS_TAP(X_ENTER)), TAP_CODE_DELAY);
|
||||
}
|
||||
|
||||
break;
|
||||
break;
|
||||
|
||||
case VRSN: // Prints firmware version
|
||||
if (record->event.pressed) {
|
||||
send_string_with_delay_P(PSTR(QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION ", Built on: " QMK_BUILDDATE), TAP_CODE_DELAY);
|
||||
}
|
||||
break;
|
||||
case VRSN: // Prints firmware version
|
||||
if (record->event.pressed) {
|
||||
send_string_with_delay_P(PSTR(QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION ", Built on: " QMK_BUILDDATE), TAP_CODE_DELAY);
|
||||
}
|
||||
break;
|
||||
|
||||
case KC_DIABLO_CLEAR: // reset all Diablo timers, disabling them
|
||||
case KC_DIABLO_CLEAR: // reset all Diablo timers, disabling them
|
||||
#ifdef TAP_DANCE_ENABLE
|
||||
if (record->event.pressed) {
|
||||
for (uint8_t index = 0; index < 4; index++) {
|
||||
diablo_timer[index].key_interval = 0;
|
||||
if (record->event.pressed) {
|
||||
for (uint8_t index = 0; index < 4; index++) {
|
||||
diablo_timer[index].key_interval = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
#endif // TAP_DANCE_ENABLE
|
||||
break;
|
||||
break;
|
||||
|
||||
case KC_CCCV: // One key copy/paste
|
||||
if (record->event.pressed) {
|
||||
copy_paste_timer = timer_read();
|
||||
} else {
|
||||
if (timer_elapsed(copy_paste_timer) > TAPPING_TERM) { // Hold, copy
|
||||
tap_code16(LCTL(KC_C));
|
||||
} else { // Tap, paste
|
||||
tap_code16(LCTL(KC_V));
|
||||
case KC_CCCV: // One key copy/paste
|
||||
if (record->event.pressed) {
|
||||
copy_paste_timer = timer_read();
|
||||
} else {
|
||||
if (timer_elapsed(copy_paste_timer) > TAPPING_TERM) { // Hold, copy
|
||||
tap_code16(LCTL(KC_C));
|
||||
} else { // Tap, paste
|
||||
tap_code16(LCTL(KC_V));
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
break;
|
||||
#ifdef UNICODE_ENABLE
|
||||
case UC_FLIP: // (ノಠ痊ಠ)ノ彡┻━┻
|
||||
if (record->event.pressed) {
|
||||
send_unicode_hex_string("0028 30CE 0CA0 75CA 0CA0 0029 30CE 5F61 253B 2501 253B");
|
||||
}
|
||||
break;
|
||||
case UC_TABL: // ┬─┬ノ( º _ ºノ)
|
||||
if (record->event.pressed) {
|
||||
send_unicode_hex_string("252C 2500 252C 30CE 0028 0020 00BA 0020 005F 0020 00BA 30CE 0029");
|
||||
}
|
||||
break;
|
||||
case UC_SHRG: // ¯\_(ツ)_/¯
|
||||
if (record->event.pressed) {
|
||||
send_unicode_hex_string("00AF 005C 005F 0028 30C4 0029 005F 002F 00AF");
|
||||
}
|
||||
break;
|
||||
case UC_DISA: // ಠ_ಠ
|
||||
if (record->event.pressed) {
|
||||
send_unicode_hex_string("0CA0 005F 0CA0");
|
||||
}
|
||||
break;
|
||||
case UC_FLIP: // (ノಠ痊ಠ)ノ彡┻━┻
|
||||
if (record->event.pressed) {
|
||||
send_unicode_string("(ノಠ痊ಠ)ノ彡┻━┻");
|
||||
}
|
||||
break;
|
||||
case UC_TABL: // ┬─┬ノ( º _ ºノ)
|
||||
if (record->event.pressed) {
|
||||
send_unicode_string("┬─┬ノ( º _ ºノ)");
|
||||
}
|
||||
break;
|
||||
case UC_SHRG: // ¯\_(ツ)_/¯
|
||||
if (record->event.pressed) {
|
||||
send_unicode_string("¯\\_(ツ)_/¯");
|
||||
}
|
||||
break;
|
||||
case UC_DISA: // ಠ_ಠ
|
||||
if (record->event.pressed) {
|
||||
send_unicode_string("ಠ_ಠ");
|
||||
}
|
||||
break;
|
||||
#endif
|
||||
}
|
||||
return process_record_keymap(keycode, record) &&
|
||||
case KC_RGB_T: // This allows me to use underglow as layer indication, or as normal
|
||||
#if defined(RGBLIGHT_ENABLE) || defined(RGB_MATRIX_ENABLE)
|
||||
process_record_user_rgb(keycode, record) &&
|
||||
if (record->event.pressed) {
|
||||
userspace_config.rgb_layer_change ^= 1;
|
||||
dprintf("rgblight layer change [EEPROM]: %u\n", userspace_config.rgb_layer_change);
|
||||
eeconfig_update_user(userspace_config.raw);
|
||||
if (userspace_config.rgb_layer_change) {
|
||||
# if defined(RGBLIGHT_ENABLE) && defined(RGB_MATRIX_ENABLE)
|
||||
rgblight_enable_noeeprom();
|
||||
# endif
|
||||
layer_state_set(layer_state); // This is needed to immediately set the layer color (looks better)
|
||||
# if defined(RGBLIGHT_ENABLE) && defined(RGB_MATRIX_ENABLE)
|
||||
} else {
|
||||
rgblight_disable_noeeprom();
|
||||
# endif
|
||||
}
|
||||
}
|
||||
#endif // RGBLIGHT_ENABLE
|
||||
process_record_secrets(keycode, record);
|
||||
break;
|
||||
|
||||
#if defined(RGBLIGHT_ENABLE) || defined(RGB_MATRIX_ENABLE)
|
||||
case RGB_TOG:
|
||||
// Split keyboards need to trigger on key-up for edge-case issue
|
||||
# ifndef SPLIT_KEYBOARD
|
||||
if (record->event.pressed) {
|
||||
# else
|
||||
if (!record->event.pressed) {
|
||||
# endif
|
||||
# if defined(RGBLIGHT_ENABLE) && !defined(RGBLIGHT_DISABLE_KEYCODES)
|
||||
rgblight_toggle();
|
||||
# endif
|
||||
# if defined(RGB_MATRIX_ENABLE) && !defined(RGB_MATRIX_DISABLE_KEYCODES)
|
||||
rgb_matrix_toggle();
|
||||
# endif
|
||||
}
|
||||
return false;
|
||||
break;
|
||||
case RGB_MODE_FORWARD ... RGB_MODE_GRADIENT: // quantum_keycodes.h L400 for definitions
|
||||
if (record->event.pressed) {
|
||||
bool is_eeprom_updated;
|
||||
# if defined(RGBLIGHT_ENABLE) && !defined(RGBLIGHT_DISABLE_KEYCODES)
|
||||
// This disables layer indication, as it's assumed that if you're changing this ... you want that disabled
|
||||
if (userspace_config.rgb_layer_change) {
|
||||
userspace_config.rgb_layer_change = false;
|
||||
dprintf("rgblight layer change [EEPROM]: %u\n", userspace_config.rgb_layer_change);
|
||||
is_eeprom_updated = true;
|
||||
}
|
||||
# endif
|
||||
# if defined(RGB_MATRIX_ENABLE) && defined(RGB_MATRIX_FRAMEBUFFER_EFFECTS)
|
||||
if (userspace_config.rgb_matrix_idle_anim) {
|
||||
userspace_config.rgb_matrix_idle_anim = false;
|
||||
dprintf("RGB Matrix Idle Animation [EEPROM]: %u\n", userspace_config.rgb_matrix_idle_anim);
|
||||
is_eeprom_updated = true;
|
||||
}
|
||||
# endif
|
||||
if (is_eeprom_updated) {
|
||||
eeconfig_update_user(userspace_config.raw);
|
||||
}
|
||||
}
|
||||
|
||||
# if defined(RGBLIGHT_DISABLE_KEYCODES) || defined(RGB_MATRIX_DISABLE_KEYCODES)
|
||||
if (keycode == RGB_MODE_FORWARD && record->event.pressed) {
|
||||
uint8_t shifted = get_mods() & (MOD_MASK_SHIFT);
|
||||
if (shifted) {
|
||||
# if defined(RGBLIGHT_ENABLE) && !defined(RGBLIGHT_DISABLE_KEYCODES)
|
||||
rgblight_step_reverse();
|
||||
# endif
|
||||
# if defined(RGB_MATRIX_ENABLE) && !defined(RGB_MATRIX_DISABLE_KEYCODES)
|
||||
rgb_matrix_step_reverse();
|
||||
# endif
|
||||
} else {
|
||||
# if defined(RGBLIGHT_ENABLE) && !defined(RGBLIGHT_DISABLE_KEYCODES)
|
||||
rgblight_step();
|
||||
# endif
|
||||
# if defined(RGB_MATRIX_ENABLE) && !defined(RGB_MATRIX_DISABLE_KEYCODES)
|
||||
rgb_matrix_step();
|
||||
# endif
|
||||
}
|
||||
} else if (keycode == RGB_MODE_REVERSE && record->event.pressed) {
|
||||
uint8_t shifted = get_mods() & (MOD_MASK_SHIFT);
|
||||
if (shifted) {
|
||||
# if defined(RGBLIGHT_ENABLE) && !defined(RGBLIGHT_DISABLE_KEYCODES)
|
||||
rgblight_step();
|
||||
# endif
|
||||
# if defined(RGB_MATRIX_ENABLE) && !defined(RGB_MATRIX_DISABLE_KEYCODES)
|
||||
rgb_matrix_step();
|
||||
# endif
|
||||
} else {
|
||||
# if defined(RGBLIGHT_ENABLE) && !defined(RGBLIGHT_DISABLE_KEYCODES)
|
||||
rgblight_step_reverse();
|
||||
# endif
|
||||
# if defined(RGB_MATRIX_ENABLE) && !defined(RGB_MATRIX_DISABLE_KEYCODES)
|
||||
rgb_matrix_step_reverse();
|
||||
# endif
|
||||
}
|
||||
} else if (keycode == RGB_HUI) {
|
||||
# ifndef SPLIT_KEYBOARD
|
||||
if (record->event.pressed) {
|
||||
# else
|
||||
if (!record->event.pressed) {
|
||||
# endif
|
||||
# if defined(RGBLIGHT_ENABLE) && !defined(RGBLIGHT_DISABLE_KEYCODES)
|
||||
rgblight_increase_hue();
|
||||
# endif
|
||||
# if defined(RGB_MATRIX_ENABLE) && !defined(RGB_MATRIX_DISABLE_KEYCODES)
|
||||
rgb_matrix_increase_hue();
|
||||
# endif
|
||||
}
|
||||
} else if (keycode == RGB_HUD) {
|
||||
# ifndef SPLIT_KEYBOARD
|
||||
if (record->event.pressed) {
|
||||
# else
|
||||
if (!record->event.pressed) {
|
||||
# endif
|
||||
# if defined(RGBLIGHT_ENABLE) && !defined(RGBLIGHT_DISABLE_KEYCODES)
|
||||
rgblight_decrease_hue();
|
||||
# endif
|
||||
# if defined(RGB_MATRIX_ENABLE) && !defined(RGB_MATRIX_DISABLE_KEYCODES)
|
||||
rgb_matrix_decrease_hue();
|
||||
# endif
|
||||
}
|
||||
} else if (keycode == RGB_SAI) {
|
||||
# ifndef SPLIT_KEYBOARD
|
||||
if (record->event.pressed) {
|
||||
# else
|
||||
if (!record->event.pressed) {
|
||||
# endif
|
||||
# if defined(RGBLIGHT_ENABLE) && !defined(RGBLIGHT_DISABLE_KEYCODES)
|
||||
rgblight_increase_sat();
|
||||
# endif
|
||||
# if defined(RGB_MATRIX_ENABLE) && !defined(RGB_MATRIX_DISABLE_KEYCODES)
|
||||
rgb_matrix_increase_sat();
|
||||
# endif
|
||||
}
|
||||
} else if (keycode == RGB_SAD) {
|
||||
# ifndef SPLIT_KEYBOARD
|
||||
if (record->event.pressed) {
|
||||
# else
|
||||
if (!record->event.pressed) {
|
||||
# endif
|
||||
# if defined(RGBLIGHT_ENABLE) && !defined(RGBLIGHT_DISABLE_KEYCODES)
|
||||
rgblight_decrease_sat();
|
||||
# endif
|
||||
# if defined(RGB_MATRIX_ENABLE) && !defined(RGB_MATRIX_DISABLE_KEYCODES)
|
||||
rgb_matrix_decrease_sat();
|
||||
# endif
|
||||
}
|
||||
} else if (keycode == RGB_VAI) {
|
||||
# ifndef SPLIT_KEYBOARD
|
||||
if (record->event.pressed) {
|
||||
# else
|
||||
if (!record->event.pressed) {
|
||||
# endif
|
||||
# if defined(RGBLIGHT_ENABLE) && !defined(RGBLIGHT_DISABLE_KEYCODES)
|
||||
rgblight_increase_val();
|
||||
# endif
|
||||
# if defined(RGB_MATRIX_ENABLE) && !defined(RGB_MATRIX_DISABLE_KEYCODES)
|
||||
rgb_matrix_increase_val();
|
||||
# endif
|
||||
}
|
||||
} else if (keycode == RGB_VAD) {
|
||||
# ifndef SPLIT_KEYBOARD
|
||||
if (record->event.pressed) {
|
||||
# else
|
||||
if (!record->event.pressed) {
|
||||
# endif
|
||||
# if defined(RGBLIGHT_ENABLE) && !defined(RGBLIGHT_DISABLE_KEYCODES)
|
||||
rgblight_decrease_val();
|
||||
# endif
|
||||
# if defined(RGB_MATRIX_ENABLE) && !defined(RGB_MATRIX_DISABLE_KEYCODES)
|
||||
rgb_matrix_decrease_val();
|
||||
# endif
|
||||
}
|
||||
} else if (keycode == RGB_SPI) {
|
||||
if (record->event.pressed) {
|
||||
# if defined(RGBLIGHT_ENABLE) && !defined(RGBLIGHT_DISABLE_KEYCODES)
|
||||
rgblight_increase_speed();
|
||||
# endif
|
||||
# if defined(RGB_MATRIX_ENABLE) && !defined(RGB_MATRIX_DISABLE_KEYCODES)
|
||||
rgb_matrix_increase_speed();
|
||||
# endif
|
||||
}
|
||||
} else if (keycode == RGB_SPD) {
|
||||
if (record->event.pressed) {
|
||||
# if defined(RGBLIGHT_ENABLE) && !defined(RGBLIGHT_DISABLE_KEYCODES)
|
||||
rgblight_decrease_speed();
|
||||
# endif
|
||||
# if defined(RGB_MATRIX_ENABLE) && !defined(RGB_MATRIX_DISABLE_KEYCODES)
|
||||
rgb_matrix_decrease_speed();
|
||||
# endif
|
||||
}
|
||||
}
|
||||
return false;
|
||||
# endif
|
||||
#endif
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -34,13 +34,13 @@ enum userspace_custom_keycodes {
|
||||
bool process_record_secrets(uint16_t keycode, keyrecord_t *record);
|
||||
bool process_record_keymap(uint16_t keycode, keyrecord_t *record);
|
||||
|
||||
#define LOWER MO(_LOWER)
|
||||
#define RAISE MO(_RAISE)
|
||||
#define ADJUST MO(_ADJUST)
|
||||
#define LOWER MO(_LOWER)
|
||||
#define RAISE MO(_RAISE)
|
||||
#define ADJUST MO(_ADJUST)
|
||||
#define TG_MODS TG(_MODS)
|
||||
#define TG_GAME TG(_GAMEPAD)
|
||||
#define OS_LWR OSL(_LOWER)
|
||||
#define OS_RSE OSL(_RAISE)
|
||||
#define OS_LWR OSL(_LOWER)
|
||||
#define OS_RSE OSL(_RAISE)
|
||||
|
||||
#define KC_SEC1 KC_SECRET_1
|
||||
#define KC_SEC2 KC_SECRET_2
|
||||
@@ -48,13 +48,13 @@ bool process_record_keymap(uint16_t keycode, keyrecord_t *record);
|
||||
#define KC_SEC4 KC_SECRET_4
|
||||
#define KC_SEC5 KC_SECRET_5
|
||||
|
||||
#define QWERTY KC_QWERTY
|
||||
#define DVORAK KC_DVORAK
|
||||
#define QWERTY KC_QWERTY
|
||||
#define DVORAK KC_DVORAK
|
||||
#define COLEMAK KC_COLEMAK
|
||||
#define WORKMAN KC_WORKMAN
|
||||
|
||||
#define KC_RESET RESET
|
||||
#define KC_RST KC_RESET
|
||||
#define KC_RST KC_RESET
|
||||
|
||||
#ifdef SWAP_HANDS_ENABLE
|
||||
# define KC_C1R3 SH_T(KC_TAB)
|
||||
@@ -81,7 +81,7 @@ bool process_record_keymap(uint16_t keycode, keyrecord_t *record);
|
||||
#define OS_RCTL OSM(MOD_RCTL)
|
||||
#define OS_LALT OSM(MOD_LALT)
|
||||
#define OS_RALT OSM(MOD_RALT)
|
||||
#define OS_MEH OSM(MOD_MEH)
|
||||
#define OS_MEH OSM(MOD_MEH)
|
||||
#define OS_HYPR OSM(MOD_HYPR)
|
||||
|
||||
#define ALT_APP ALT_T(KC_APP)
|
||||
|
||||
86
users/drashna/rgb_matrix_stuff.c
Normal file
86
users/drashna/rgb_matrix_stuff.c
Normal file
@@ -0,0 +1,86 @@
|
||||
#include "drashna.h"
|
||||
|
||||
#include "lib/lib8tion/lib8tion.h"
|
||||
extern led_config_t g_led_config;
|
||||
|
||||
static uint32_t hypno_timer;
|
||||
#if defined(SPLIT_KEYBOARD) || defined(KEYBOARD_ergodox_ez) || defined(KEYBOARD_crkbd)
|
||||
# define RGB_MATRIX_REST_MODE RGB_MATRIX_CYCLE_OUT_IN_DUAL
|
||||
#else
|
||||
# define RGB_MATRIX_REST_MODE RGB_MATRIX_CYCLE_OUT_IN
|
||||
#endif
|
||||
|
||||
void rgb_matrix_layer_helper(uint8_t hue, uint8_t sat, uint8_t val, uint8_t mode, uint8_t speed, uint8_t led_type) {
|
||||
HSV hsv = {hue, sat, val};
|
||||
if (hsv.v > rgb_matrix_config.hsv.v) {
|
||||
hsv.v = rgb_matrix_config.hsv.v;
|
||||
}
|
||||
|
||||
switch (mode) {
|
||||
case 1: // breathing
|
||||
{
|
||||
uint16_t time = scale16by8(g_rgb_counters.tick, speed / 8);
|
||||
hsv.v = scale8(abs8(sin8(time) - 128) * 2, hsv.v);
|
||||
RGB rgb = hsv_to_rgb(hsv);
|
||||
for (uint8_t i = 0; i < DRIVER_LED_TOTAL; i++) {
|
||||
if (HAS_FLAGS(g_led_config.flags[i], led_type)) {
|
||||
rgb_matrix_set_color(i, rgb.r, rgb.g, rgb.b);
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
default: // Solid Color
|
||||
{
|
||||
RGB rgb = hsv_to_rgb(hsv);
|
||||
for (uint8_t i = 0; i < DRIVER_LED_TOTAL; i++) {
|
||||
if (HAS_FLAGS(g_led_config.flags[i], led_type)) {
|
||||
rgb_matrix_set_color(i, rgb.r, rgb.g, rgb.b);
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
__attribute__((weak)) void rgb_matrix_indicator_keymap(void) {}
|
||||
|
||||
void matrix_scan_rgb_matrix(void) {
|
||||
#if defined(RGB_MATRIX_FRAMEBUFFER_EFFECTS)
|
||||
if (userspace_config.rgb_matrix_idle_anim && rgb_matrix_get_mode() == RGB_MATRIX_TYPING_HEATMAP && timer_elapsed32(hypno_timer) > 15000) {
|
||||
rgb_matrix_mode_noeeprom(RGB_MATRIX_REST_MODE);
|
||||
}
|
||||
#endif
|
||||
rgb_matrix_indicator_keymap();
|
||||
}
|
||||
|
||||
void keyboard_post_init_rgb_matrix(void) {
|
||||
#if defined(RGB_MATRIX_FRAMEBUFFER_EFFECTS)
|
||||
if (userspace_config.rgb_matrix_idle_anim) {
|
||||
rgb_matrix_mode_noeeprom(RGB_MATRIX_REST_MODE);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
bool process_record_user_rgb_matrix(uint16_t keycode, keyrecord_t *record) {
|
||||
#if defined(RGB_MATRIX_FRAMEBUFFER_EFFECTS)
|
||||
hypno_timer = timer_read32();
|
||||
if (userspace_config.rgb_matrix_idle_anim && rgb_matrix_get_mode() == RGB_MATRIX_REST_MODE) {
|
||||
rgb_matrix_mode_noeeprom(RGB_MATRIX_TYPING_HEATMAP);
|
||||
}
|
||||
#endif
|
||||
switch (keycode) {
|
||||
case RGB_IDL: // This allows me to use underglow as layer indication, or as normal
|
||||
#if defined(RGB_MATRIX_ENABLE) && defined(RGB_MATRIX_FRAMEBUFFER_EFFECTS)
|
||||
if (record->event.pressed) {
|
||||
userspace_config.rgb_matrix_idle_anim ^= 1;
|
||||
dprintf("RGB Matrix Idle Animation [EEPROM]: %u\n", userspace_config.rgb_matrix_idle_anim);
|
||||
eeconfig_update_user(userspace_config.raw);
|
||||
if (userspace_config.rgb_matrix_idle_anim) {
|
||||
rgb_matrix_mode_noeeprom(RGB_MATRIX_TYPING_HEATMAP);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
break;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
9
users/drashna/rgb_matrix_stuff.h
Normal file
9
users/drashna/rgb_matrix_stuff.h
Normal file
@@ -0,0 +1,9 @@
|
||||
#pragma once
|
||||
#include "quantum.h"
|
||||
|
||||
bool process_record_user_rgb_matrix(uint16_t keycode, keyrecord_t *record);
|
||||
void keyboard_post_init_rgb_matrix(void);
|
||||
void matrix_scan_rgb_matrix(void);
|
||||
|
||||
void rgb_matrix_set_color_all(uint8_t red, uint8_t green, uint8_t blue);
|
||||
void rgb_matrix_layer_helper(uint8_t hue, uint8_t sat, uint8_t val, uint8_t mode, uint8_t speed, uint8_t led_type);
|
||||
@@ -2,89 +2,77 @@
|
||||
#include "rgb_stuff.h"
|
||||
#include "eeprom.h"
|
||||
|
||||
#if defined(RGBLIGHT_ENABLE)
|
||||
extern rgblight_config_t rgblight_config;
|
||||
bool has_initialized;
|
||||
|
||||
void rgblight_sethsv_default_helper(uint8_t index) { rgblight_sethsv_at(rgblight_config.hue, rgblight_config.sat, rgblight_config.val, index); }
|
||||
#endif // RGBLIGHT_ENABLE
|
||||
|
||||
#if defined(RGB_MATRIX_ENABLE)
|
||||
static uint32_t hypno_timer;
|
||||
# if defined(SPLIT_KEYBOARD) || defined(KEYBOARD_ergodox_ez) || defined(KEYBOARD_crkbd)
|
||||
# define RGB_MATRIX_REST_MODE RGB_MATRIX_CYCLE_OUT_IN_DUAL
|
||||
# else
|
||||
# define RGB_MATRIX_REST_MODE RGB_MATRIX_CYCLE_OUT_IN
|
||||
# endif
|
||||
#endif
|
||||
|
||||
/* Custom indicators for modifiers.
|
||||
* This allows for certain lights to be lit up, based on what mods are active, giving some visual feedback.
|
||||
* This is especially useful for One Shot Mods, since it's not always obvious if they're still lit up.
|
||||
*/
|
||||
#ifdef RGBLIGHT_ENABLE
|
||||
# ifdef INDICATOR_LIGHTS
|
||||
#ifdef INDICATOR_LIGHTS
|
||||
void set_rgb_indicators(uint8_t this_mod, uint8_t this_led, uint8_t this_osm) {
|
||||
if (userspace_config.rgb_layer_change && get_highest_layer(layer_state) == 0) {
|
||||
if ((this_mod | this_osm) & MOD_MASK_SHIFT || this_led & (1 << USB_LED_CAPS_LOCK)) {
|
||||
# ifdef SHFT_LED1
|
||||
# ifdef SHFT_LED1
|
||||
rgblight_sethsv_at(120, 255, 255, SHFT_LED1);
|
||||
# endif // SHFT_LED1
|
||||
# ifdef SHFT_LED2
|
||||
# endif // SHFT_LED1
|
||||
# ifdef SHFT_LED2
|
||||
rgblight_sethsv_at(120, 255, 255, SHFT_LED2);
|
||||
# endif // SHFT_LED2
|
||||
# endif // SHFT_LED2
|
||||
} else {
|
||||
# ifdef SHFT_LED1
|
||||
# ifdef SHFT_LED1
|
||||
rgblight_sethsv_default_helper(SHFT_LED1);
|
||||
# endif // SHFT_LED1
|
||||
# ifdef SHFT_LED2
|
||||
# endif // SHFT_LED1
|
||||
# ifdef SHFT_LED2
|
||||
rgblight_sethsv_default_helper(SHFT_LED2);
|
||||
# endif // SHFT_LED2
|
||||
# endif // SHFT_LED2
|
||||
}
|
||||
if ((this_mod | this_osm) & MOD_MASK_CTRL) {
|
||||
# ifdef CTRL_LED1
|
||||
# ifdef CTRL_LED1
|
||||
rgblight_sethsv_at(0, 255, 255, CTRL_LED1);
|
||||
# endif // CTRL_LED1
|
||||
# ifdef CTRL_LED2
|
||||
# endif // CTRL_LED1
|
||||
# ifdef CTRL_LED2
|
||||
rgblight_sethsv_at(0, 255, 255, CTRL_LED2);
|
||||
# endif // CTRL_LED2
|
||||
# endif // CTRL_LED2
|
||||
} else {
|
||||
# ifdef CTRL_LED1
|
||||
# ifdef CTRL_LED1
|
||||
rgblight_sethsv_default_helper(CTRL_LED1);
|
||||
# endif // CTRL_LED1
|
||||
# ifdef CTRL_LED2
|
||||
# endif // CTRL_LED1
|
||||
# ifdef CTRL_LED2
|
||||
rgblight_sethsv_default_helper(CTRL_LED2);
|
||||
# endif // CTRL_LED2
|
||||
# endif // CTRL_LED2
|
||||
}
|
||||
if ((this_mod | this_osm) & MOD_MASK_GUI) {
|
||||
# ifdef GUI_LED1
|
||||
# ifdef GUI_LED1
|
||||
rgblight_sethsv_at(51, 255, 255, GUI_LED1);
|
||||
# endif // GUI_LED1
|
||||
# ifdef GUI_LED2
|
||||
# endif // GUI_LED1
|
||||
# ifdef GUI_LED2
|
||||
rgblight_sethsv_at(51, 255, 255, GUI_LED2);
|
||||
# endif // GUI_LED2
|
||||
# endif // GUI_LED2
|
||||
} else {
|
||||
# ifdef GUI_LED1
|
||||
# ifdef GUI_LED1
|
||||
rgblight_sethsv_default_helper(GUI_LED1);
|
||||
# endif // GUI_LED1
|
||||
# ifdef GUI_LED2
|
||||
# endif // GUI_LED1
|
||||
# ifdef GUI_LED2
|
||||
rgblight_sethsv_default_helper(GUI_LED2);
|
||||
# endif // GUI_LED2
|
||||
# endif // GUI_LED2
|
||||
}
|
||||
if ((this_mod | this_osm) & MOD_MASK_ALT) {
|
||||
# ifdef ALT_LED1
|
||||
# ifdef ALT_LED1
|
||||
rgblight_sethsv_at(240, 255, 255, ALT_LED1);
|
||||
# endif // ALT_LED1
|
||||
# ifdef GUI_LED2
|
||||
# endif // ALT_LED1
|
||||
# ifdef GUI_LED2
|
||||
rgblight_sethsv_at(240, 255, 255, ALT_LED2);
|
||||
# endif // GUI_LED2
|
||||
# endif // GUI_LED2
|
||||
} else {
|
||||
# ifdef GUI_LED1
|
||||
# ifdef GUI_LED1
|
||||
rgblight_sethsv_default_helper(ALT_LED1);
|
||||
# endif // GUI_LED1
|
||||
# ifdef GUI_LED2
|
||||
# endif // GUI_LED1
|
||||
# ifdef GUI_LED2
|
||||
rgblight_sethsv_default_helper(ALT_LED2);
|
||||
# endif // GUI_LED2
|
||||
# endif // GUI_LED2
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -95,9 +83,9 @@ void matrix_scan_indicator(void) {
|
||||
set_rgb_indicators(get_mods(), host_keyboard_leds(), get_oneshot_mods());
|
||||
}
|
||||
}
|
||||
# endif // INDICATOR_LIGHTS
|
||||
#endif // INDICATOR_LIGHTS
|
||||
|
||||
# ifdef RGBLIGHT_TWINKLE
|
||||
#ifdef RGBLIGHT_TWINKLE
|
||||
static rgblight_fadeout lights[RGBLED_NUM];
|
||||
|
||||
__attribute__((weak)) bool rgblight_twinkle_is_led_used_keymap(uint8_t index) { return false; }
|
||||
@@ -105,40 +93,40 @@ __attribute__((weak)) bool rgblight_twinkle_is_led_used_keymap(uint8_t index) {
|
||||
/* This function checks for used LEDs. This way, collisions don't occur and cause weird rendering */
|
||||
bool rgblight_twinkle_is_led_used(uint8_t index) {
|
||||
switch (index) {
|
||||
# ifdef INDICATOR_LIGHTS
|
||||
# ifdef SHFT_LED1
|
||||
# ifdef INDICATOR_LIGHTS
|
||||
# ifdef SHFT_LED1
|
||||
case SHFT_LED1:
|
||||
return true;
|
||||
# endif // SHFT_LED1
|
||||
# ifdef SHFT_LED2
|
||||
# endif // SHFT_LED1
|
||||
# ifdef SHFT_LED2
|
||||
case SHFT_LED2:
|
||||
return true;
|
||||
# endif // SHFT_LED2
|
||||
# ifdef CTRL_LED1
|
||||
# endif // SHFT_LED2
|
||||
# ifdef CTRL_LED1
|
||||
case CTRL_LED1:
|
||||
return true;
|
||||
# endif // CTRL_LED1
|
||||
# ifdef CTRL_LED2
|
||||
# endif // CTRL_LED1
|
||||
# ifdef CTRL_LED2
|
||||
case CTRL_LED2:
|
||||
return true;
|
||||
# endif // CTRL_LED2
|
||||
# ifdef GUI_LED1
|
||||
# endif // CTRL_LED2
|
||||
# ifdef GUI_LED1
|
||||
case GUI_LED1:
|
||||
return true;
|
||||
# endif // GUI_LED1
|
||||
# ifdef GUI_LED2
|
||||
# endif // GUI_LED1
|
||||
# ifdef GUI_LED2
|
||||
case GUI_LED2:
|
||||
return true;
|
||||
# endif // GUI_LED2
|
||||
# ifdef ALT_LED1
|
||||
# endif // GUI_LED2
|
||||
# ifdef ALT_LED1
|
||||
case ALT_LED1:
|
||||
return true;
|
||||
# endif // ALT_LED1
|
||||
# ifdef ALT_LED2
|
||||
# endif // ALT_LED1
|
||||
# ifdef ALT_LED2
|
||||
case ALT_LED2:
|
||||
return true;
|
||||
# endif // ALT_LED2
|
||||
# endif // INDICATOR_LIGHTS
|
||||
# endif // ALT_LED2
|
||||
# endif // INDICATOR_LIGHTS
|
||||
default:
|
||||
return rgblight_twinkle_is_led_used_keymap(index);
|
||||
}
|
||||
@@ -213,23 +201,15 @@ void start_rgb_light(void) {
|
||||
|
||||
rgblight_sethsv_at(light->hue, 255, light->life, light_index);
|
||||
}
|
||||
# endif
|
||||
#endif // RGBLIGHT_ENABLE
|
||||
#endif
|
||||
|
||||
bool process_record_user_rgb(uint16_t keycode, keyrecord_t *record) {
|
||||
bool process_record_user_rgb_light(uint16_t keycode, keyrecord_t *record) {
|
||||
uint16_t temp_keycode = keycode;
|
||||
// Filter out the actual keycode from MT and LT keys.
|
||||
if ((keycode >= QK_MOD_TAP && keycode <= QK_MOD_TAP_MAX) || (keycode >= QK_LAYER_TAP && keycode <= QK_LAYER_TAP_MAX)) {
|
||||
temp_keycode &= 0xFF;
|
||||
}
|
||||
|
||||
#if defined(RGB_MATRIX_ENABLE) && defined(RGB_MATRIX_FRAMEBUFFER_EFFECTS)
|
||||
hypno_timer = timer_read32();
|
||||
if (userspace_config.rgb_matrix_idle_anim && rgb_matrix_get_mode() == RGB_MATRIX_REST_MODE) {
|
||||
rgb_matrix_mode_noeeprom(RGB_MATRIX_TYPING_HEATMAP);
|
||||
}
|
||||
#endif
|
||||
|
||||
switch (temp_keycode) {
|
||||
#ifdef RGBLIGHT_TWINKLE
|
||||
case KC_A ... KC_SLASH:
|
||||
@@ -242,228 +222,19 @@ bool process_record_user_rgb(uint16_t keycode, keyrecord_t *record) {
|
||||
start_rgb_light();
|
||||
}
|
||||
break;
|
||||
#endif // RGBLIGHT_TWINKLE
|
||||
case KC_RGB_T: // This allows me to use underglow as layer indication, or as normal
|
||||
#if defined(RGBLIGHT_ENABLE) || defined(RGB_MATRIX_ENABLE)
|
||||
if (record->event.pressed) {
|
||||
userspace_config.rgb_layer_change ^= 1;
|
||||
dprintf("rgblight layer change [EEPROM]: %u\n", userspace_config.rgb_layer_change);
|
||||
eeconfig_update_user(userspace_config.raw);
|
||||
if (userspace_config.rgb_layer_change) {
|
||||
# if defined(RGBLIGHT_ENABLE) && defined(RGB_MATRIX_ENABLE)
|
||||
rgblight_enable_noeeprom();
|
||||
# endif
|
||||
layer_state_set(layer_state); // This is needed to immediately set the layer color (looks better)
|
||||
# if defined(RGBLIGHT_ENABLE) && defined(RGB_MATRIX_ENABLE)
|
||||
} else {
|
||||
rgblight_disable_noeeprom();
|
||||
# endif
|
||||
}
|
||||
}
|
||||
#endif // RGBLIGHT_ENABLE
|
||||
break;
|
||||
case RGB_IDL: // This allows me to use underglow as layer indication, or as normal
|
||||
#if defined(RGB_MATRIX_ENABLE) && defined(RGB_MATRIX_FRAMEBUFFER_EFFECTS)
|
||||
if (record->event.pressed) {
|
||||
userspace_config.rgb_matrix_idle_anim ^= 1;
|
||||
dprintf("RGB Matrix Idle Animation [EEPROM]: %u\n", userspace_config.rgb_matrix_idle_anim);
|
||||
eeconfig_update_user(userspace_config.raw);
|
||||
if (userspace_config.rgb_matrix_idle_anim) {
|
||||
rgb_matrix_mode_noeeprom(RGB_MATRIX_TYPING_HEATMAP);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
break;
|
||||
#if defined(RGBLIGHT_ENABLE) || defined(RGB_MATRIX_ENABLE)
|
||||
case RGB_TOG:
|
||||
// Split keyboards need to trigger on key-up for edge-case issue
|
||||
# ifndef SPLIT_KEYBOARD
|
||||
if (record->event.pressed) {
|
||||
# else
|
||||
if (!record->event.pressed) {
|
||||
# endif
|
||||
# if defined(RGBLIGHT_ENABLE) && !defined(RGBLIGHT_DISABLE_KEYCODES)
|
||||
rgblight_toggle();
|
||||
# endif
|
||||
# if defined(RGB_MATRIX_ENABLE) && !defined(RGB_MATRIX_DISABLE_KEYCODES)
|
||||
rgb_matrix_toggle();
|
||||
# endif
|
||||
}
|
||||
return false;
|
||||
break;
|
||||
case RGB_MODE_FORWARD ... RGB_MODE_GRADIENT: // quantum_keycodes.h L400 for definitions
|
||||
if (record->event.pressed) {
|
||||
bool is_eeprom_updated;
|
||||
# if defined(RGBLIGHT_ENABLE) && !defined(RGBLIGHT_DISABLE_KEYCODES)
|
||||
// This disables layer indication, as it's assumed that if you're changing this ... you want that disabled
|
||||
if (userspace_config.rgb_layer_change) {
|
||||
userspace_config.rgb_layer_change = false;
|
||||
dprintf("rgblight layer change [EEPROM]: %u\n", userspace_config.rgb_layer_change);
|
||||
is_eeprom_updated = true;
|
||||
}
|
||||
# endif
|
||||
# if defined(RGB_MATRIX_ENABLE) && defined(RGB_MATRIX_FRAMEBUFFER_EFFECTS)
|
||||
if (userspace_config.rgb_matrix_idle_anim) {
|
||||
userspace_config.rgb_matrix_idle_anim = false;
|
||||
dprintf("RGB Matrix Idle Animation [EEPROM]: %u\n", userspace_config.rgb_matrix_idle_anim);
|
||||
is_eeprom_updated = true;
|
||||
}
|
||||
# endif
|
||||
if (is_eeprom_updated) {
|
||||
eeconfig_update_user(userspace_config.raw);
|
||||
}
|
||||
}
|
||||
|
||||
# if defined(RGBLIGHT_DISABLE_KEYCODES) || defined(RGB_MATRIX_DISABLE_KEYCODES)
|
||||
if (keycode == RGB_MODE_FORWARD && record->event.pressed) {
|
||||
uint8_t shifted = get_mods() & (MOD_MASK_SHIFT);
|
||||
if (shifted) {
|
||||
# if defined(RGBLIGHT_ENABLE) && !defined(RGBLIGHT_DISABLE_KEYCODES)
|
||||
rgblight_step_reverse();
|
||||
# endif
|
||||
# if defined(RGB_MATRIX_ENABLE) && !defined(RGB_MATRIX_DISABLE_KEYCODES)
|
||||
rgb_matrix_step_reverse();
|
||||
# endif
|
||||
} else {
|
||||
# if defined(RGBLIGHT_ENABLE) && !defined(RGBLIGHT_DISABLE_KEYCODES)
|
||||
rgblight_step();
|
||||
# endif
|
||||
# if defined(RGB_MATRIX_ENABLE) && !defined(RGB_MATRIX_DISABLE_KEYCODES)
|
||||
rgb_matrix_step();
|
||||
# endif
|
||||
}
|
||||
} else if (keycode == RGB_MODE_REVERSE && record->event.pressed) {
|
||||
uint8_t shifted = get_mods() & (MOD_MASK_SHIFT);
|
||||
if (shifted) {
|
||||
# if defined(RGBLIGHT_ENABLE) && !defined(RGBLIGHT_DISABLE_KEYCODES)
|
||||
rgblight_step();
|
||||
# endif
|
||||
# if defined(RGB_MATRIX_ENABLE) && !defined(RGB_MATRIX_DISABLE_KEYCODES)
|
||||
rgb_matrix_step();
|
||||
# endif
|
||||
} else {
|
||||
# if defined(RGBLIGHT_ENABLE) && !defined(RGBLIGHT_DISABLE_KEYCODES)
|
||||
rgblight_step_reverse();
|
||||
# endif
|
||||
# if defined(RGB_MATRIX_ENABLE) && !defined(RGB_MATRIX_DISABLE_KEYCODES)
|
||||
rgb_matrix_step_reverse();
|
||||
# endif
|
||||
}
|
||||
} else if (keycode == RGB_HUI) {
|
||||
# ifndef SPLIT_KEYBOARD
|
||||
if (record->event.pressed) {
|
||||
# else
|
||||
if (!record->event.pressed) {
|
||||
# endif
|
||||
# if defined(RGBLIGHT_ENABLE) && !defined(RGBLIGHT_DISABLE_KEYCODES)
|
||||
rgblight_increase_hue();
|
||||
# endif
|
||||
# if defined(RGB_MATRIX_ENABLE) && !defined(RGB_MATRIX_DISABLE_KEYCODES)
|
||||
rgb_matrix_increase_hue();
|
||||
# endif
|
||||
}
|
||||
} else if (keycode == RGB_HUD) {
|
||||
# ifndef SPLIT_KEYBOARD
|
||||
if (record->event.pressed) {
|
||||
# else
|
||||
if (!record->event.pressed) {
|
||||
# endif
|
||||
# if defined(RGBLIGHT_ENABLE) && !defined(RGBLIGHT_DISABLE_KEYCODES)
|
||||
rgblight_decrease_hue();
|
||||
# endif
|
||||
# if defined(RGB_MATRIX_ENABLE) && !defined(RGB_MATRIX_DISABLE_KEYCODES)
|
||||
rgb_matrix_decrease_hue();
|
||||
# endif
|
||||
}
|
||||
} else if (keycode == RGB_SAI) {
|
||||
# ifndef SPLIT_KEYBOARD
|
||||
if (record->event.pressed) {
|
||||
# else
|
||||
if (!record->event.pressed) {
|
||||
# endif
|
||||
# if defined(RGBLIGHT_ENABLE) && !defined(RGBLIGHT_DISABLE_KEYCODES)
|
||||
rgblight_increase_sat();
|
||||
# endif
|
||||
# if defined(RGB_MATRIX_ENABLE) && !defined(RGB_MATRIX_DISABLE_KEYCODES)
|
||||
rgb_matrix_increase_sat();
|
||||
# endif
|
||||
}
|
||||
} else if (keycode == RGB_SAD) {
|
||||
# ifndef SPLIT_KEYBOARD
|
||||
if (record->event.pressed) {
|
||||
# else
|
||||
if (!record->event.pressed) {
|
||||
# endif
|
||||
# if defined(RGBLIGHT_ENABLE) && !defined(RGBLIGHT_DISABLE_KEYCODES)
|
||||
rgblight_decrease_sat();
|
||||
# endif
|
||||
# if defined(RGB_MATRIX_ENABLE) && !defined(RGB_MATRIX_DISABLE_KEYCODES)
|
||||
rgb_matrix_decrease_sat();
|
||||
# endif
|
||||
}
|
||||
} else if (keycode == RGB_VAI) {
|
||||
# ifndef SPLIT_KEYBOARD
|
||||
if (record->event.pressed) {
|
||||
# else
|
||||
if (!record->event.pressed) {
|
||||
# endif
|
||||
# if defined(RGBLIGHT_ENABLE) && !defined(RGBLIGHT_DISABLE_KEYCODES)
|
||||
rgblight_increase_val();
|
||||
# endif
|
||||
# if defined(RGB_MATRIX_ENABLE) && !defined(RGB_MATRIX_DISABLE_KEYCODES)
|
||||
rgb_matrix_increase_val();
|
||||
# endif
|
||||
}
|
||||
} else if (keycode == RGB_VAD) {
|
||||
# ifndef SPLIT_KEYBOARD
|
||||
if (record->event.pressed) {
|
||||
# else
|
||||
if (!record->event.pressed) {
|
||||
# endif
|
||||
# if defined(RGBLIGHT_ENABLE) && !defined(RGBLIGHT_DISABLE_KEYCODES)
|
||||
rgblight_decrease_val();
|
||||
# endif
|
||||
# if defined(RGB_MATRIX_ENABLE) && !defined(RGB_MATRIX_DISABLE_KEYCODES)
|
||||
rgb_matrix_decrease_val();
|
||||
# endif
|
||||
}
|
||||
} else if (keycode == RGB_SPI) {
|
||||
if (record->event.pressed) {
|
||||
# if defined(RGBLIGHT_ENABLE) && !defined(RGBLIGHT_DISABLE_KEYCODES)
|
||||
rgblight_increase_speed();
|
||||
# endif
|
||||
# if defined(RGB_MATRIX_ENABLE) && !defined(RGB_MATRIX_DISABLE_KEYCODES)
|
||||
rgb_matrix_increase_speed();
|
||||
# endif
|
||||
}
|
||||
} else if (keycode == RGB_SPD) {
|
||||
if (record->event.pressed) {
|
||||
# if defined(RGBLIGHT_ENABLE) && !defined(RGBLIGHT_DISABLE_KEYCODES)
|
||||
rgblight_decrease_speed();
|
||||
# endif
|
||||
# if defined(RGB_MATRIX_ENABLE) && !defined(RGB_MATRIX_DISABLE_KEYCODES)
|
||||
rgb_matrix_decrease_speed();
|
||||
# endif
|
||||
}
|
||||
}
|
||||
return false;
|
||||
# endif
|
||||
#endif
|
||||
|
||||
break;
|
||||
#endif // RGBLIGHT_TWINKLE
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
void keyboard_post_init_rgb(void) {
|
||||
#if defined(RGBLIGHT_ENABLE)
|
||||
# if defined(RGBLIGHT_STARTUP_ANIMATION)
|
||||
void keyboard_post_init_rgb_light(void) {
|
||||
#if defined(RGBLIGHT_STARTUP_ANIMATION)
|
||||
bool is_enabled = rgblight_config.enable;
|
||||
if (userspace_config.rgb_layer_change) {
|
||||
rgblight_enable_noeeprom();
|
||||
}
|
||||
if (rgblight_config.enable) {
|
||||
layer_state_set_user(layer_state);
|
||||
layer_state_set_rgb_light(layer_state);
|
||||
uint16_t old_hue = rgblight_config.hue;
|
||||
rgblight_mode_noeeprom(RGBLIGHT_MODE_STATIC_LIGHT);
|
||||
for (uint16_t i = 255; i > 0; i--) {
|
||||
@@ -476,17 +247,11 @@ void keyboard_post_init_rgb(void) {
|
||||
rgblight_disable_noeeprom();
|
||||
}
|
||||
|
||||
# endif
|
||||
layer_state_set_user(layer_state);
|
||||
#endif
|
||||
#if defined(RGB_MATRIX_ENABLE) && defined(RGB_MATRIX_FRAMEBUFFER_EFFECTS)
|
||||
if (userspace_config.rgb_matrix_idle_anim) {
|
||||
rgb_matrix_mode_noeeprom(RGB_MATRIX_REST_MODE);
|
||||
}
|
||||
#endif
|
||||
layer_state_set_rgb_light(layer_state);
|
||||
}
|
||||
|
||||
void matrix_scan_rgb(void) {
|
||||
void matrix_scan_rgb_light(void) {
|
||||
#ifdef RGBLIGHT_ENABLE
|
||||
# ifdef RGBLIGHT_TWINKLE
|
||||
scan_rgblight_fadeout();
|
||||
@@ -496,23 +261,15 @@ void matrix_scan_rgb(void) {
|
||||
matrix_scan_indicator();
|
||||
# endif
|
||||
#endif
|
||||
|
||||
#if defined(RGB_MATRIX_ENABLE) && defined(RGB_MATRIX_FRAMEBUFFER_EFFECTS)
|
||||
if (userspace_config.rgb_matrix_idle_anim && rgb_matrix_get_mode() == RGB_MATRIX_TYPING_HEATMAP && timer_elapsed32(hypno_timer) > 15000) {
|
||||
rgb_matrix_mode_noeeprom(RGB_MATRIX_REST_MODE);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
#ifdef RGBLIGHT_ENABLE
|
||||
void rgblight_set_hsv_and_mode(uint8_t hue, uint8_t sat, uint8_t val, uint8_t mode) {
|
||||
rgblight_sethsv_noeeprom(hue, sat, val);
|
||||
wait_us(175); // Add a slight delay between color and mode to ensure it's processed correctly
|
||||
rgblight_mode_noeeprom(mode);
|
||||
}
|
||||
#endif
|
||||
|
||||
layer_state_t layer_state_set_rgb(layer_state_t state) {
|
||||
layer_state_t layer_state_set_rgb_light(layer_state_t state) {
|
||||
#ifdef RGBLIGHT_ENABLE
|
||||
if (userspace_config.rgb_layer_change) {
|
||||
switch (get_highest_layer(state)) {
|
||||
@@ -574,40 +331,3 @@ layer_state_t layer_state_set_rgb(layer_state_t state) {
|
||||
|
||||
return state;
|
||||
}
|
||||
|
||||
#ifdef RGB_MATRIX_ENABLE
|
||||
# include "lib/lib8tion/lib8tion.h"
|
||||
extern led_config_t g_led_config;
|
||||
|
||||
void rgb_matrix_layer_helper(uint8_t hue, uint8_t sat, uint8_t val, uint8_t mode, uint8_t speed, uint8_t led_type) {
|
||||
HSV hsv = {hue, sat, val};
|
||||
if (hsv.v > rgb_matrix_config.hsv.v) {
|
||||
hsv.v = rgb_matrix_config.hsv.v;
|
||||
}
|
||||
|
||||
switch (mode) {
|
||||
case 1: // breathing
|
||||
{
|
||||
uint16_t time = scale16by8(g_rgb_counters.tick, speed / 8);
|
||||
hsv.v = scale8(abs8(sin8(time) - 128) * 2, hsv.v);
|
||||
RGB rgb = hsv_to_rgb(hsv);
|
||||
for (uint8_t i = 0; i < DRIVER_LED_TOTAL; i++) {
|
||||
if (HAS_FLAGS(g_led_config.flags[i], led_type)) {
|
||||
rgb_matrix_set_color(i, rgb.r, rgb.g, rgb.b);
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
default: // Solid Color
|
||||
{
|
||||
RGB rgb = hsv_to_rgb(hsv);
|
||||
for (uint8_t i = 0; i < DRIVER_LED_TOTAL; i++) {
|
||||
if (HAS_FLAGS(g_led_config.flags[i], led_type)) {
|
||||
rgb_matrix_set_color(i, rgb.r, rgb.g, rgb.b);
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
@@ -1,10 +1,7 @@
|
||||
#pragma once
|
||||
#include "quantum.h"
|
||||
#ifdef RGB_MATRIX_ENABLE
|
||||
# include "rgb_matrix.h"
|
||||
#endif
|
||||
|
||||
#if defined(RGBLIGHT_ENABLE) && defined(RGBLIGHT_TWINKLE)
|
||||
#if defined(RGBLIGHT_TWINKLE)
|
||||
typedef struct {
|
||||
bool enabled;
|
||||
uint8_t hue;
|
||||
@@ -13,20 +10,13 @@ typedef struct {
|
||||
} rgblight_fadeout;
|
||||
#endif
|
||||
|
||||
bool process_record_user_rgb(uint16_t keycode, keyrecord_t *record);
|
||||
void keyboard_post_init_rgb(void);
|
||||
void matrix_scan_rgb(void);
|
||||
layer_state_t layer_state_set_rgb(layer_state_t state);
|
||||
layer_state_t default_layer_state_set_rgb(layer_state_t state);
|
||||
bool process_record_user_rgb_light(uint16_t keycode, keyrecord_t *record);
|
||||
void keyboard_post_init_rgb_light(void);
|
||||
void matrix_scan_rgb_light(void);
|
||||
layer_state_t layer_state_set_rgb_light(layer_state_t state);
|
||||
layer_state_t default_layer_state_set_rgb_light(layer_state_t state);
|
||||
void rgblight_sethsv_default_helper(uint8_t index);
|
||||
|
||||
#if defined(RGBLIGHT_ENABLE) && defined(RGBLIGHT_TWINKLE)
|
||||
#if defined(RGBLIGHT_TWINKLE)
|
||||
void scan_rgblight_fadeout(void);
|
||||
#endif
|
||||
#if defined(RGBLIGHT_ENABLE)
|
||||
void rgblight_sethsv_default_helper(uint8_t index);
|
||||
#endif
|
||||
|
||||
#ifdef RGB_MATRIX_ENABLE
|
||||
void rgb_matrix_set_color_all(uint8_t red, uint8_t green, uint8_t blue);
|
||||
void rgb_matrix_layer_helper(uint8_t hue, uint8_t sat, uint8_t val, uint8_t mode, uint8_t speed, uint8_t led_type);
|
||||
#endif
|
||||
|
||||
@@ -2,9 +2,10 @@ SRC += drashna.c \
|
||||
process_records.c
|
||||
|
||||
ifneq ($(PLATFORM),CHIBIOS)
|
||||
LTO_ENABLE = yes
|
||||
LTO_ENABLE = yes
|
||||
endif
|
||||
SPACE_CADET_ENABLE = no
|
||||
GRAVE_ESC_ENABLE = no
|
||||
|
||||
ifneq ($(strip $(NO_SECRETS)), yes)
|
||||
ifneq ("$(wildcard $(USER_PATH)/secrets.c)","")
|
||||
@@ -19,10 +20,6 @@ ifeq ($(strip $(TAP_DANCE_ENABLE)), yes)
|
||||
SRC += tap_dances.c
|
||||
endif
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
ifeq ($(strip $(RGBLIGHT_ENABLE)), yes)
|
||||
SRC += rgb_stuff.c
|
||||
ifeq ($(strip $(INDICATOR_LIGHTS)), yes)
|
||||
@@ -41,7 +38,7 @@ endif
|
||||
|
||||
RGB_MATRIX_ENABLE ?= no
|
||||
ifneq ($(strip $(RGB_MATRIX_ENABLE)), no)
|
||||
SRC += rgb_stuff.c
|
||||
SRC += rgb_matrix_stuff.c
|
||||
endif
|
||||
|
||||
|
||||
@@ -61,3 +58,7 @@ endif
|
||||
ifeq ($(strip $(PROTOCOL)), VUSB)
|
||||
NKRO_ENABLE = no
|
||||
endif
|
||||
|
||||
ifeq ($(strip $(OLED_DRIVER_ENABLE)), yes)
|
||||
SRC += oled_stuff.c
|
||||
endif
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user