1
0

Compare commits

...

27 Commits

Author SHA1 Message Date
QMK Bot
25e93b4b67 format code according to conventions [skip ci] 2020-09-03 11:25:14 +00:00
MelGeek
2f26e14dc6 Update ISSI3741 (#9912)
* [Driver] bugfix reset the scaling register flag to FALSE

* Update drivers/issi/is31fl3741.c

Co-authored-by: Ryan <fauxpark@gmail.com>

* Add CS & SW defines for ISSI3741

* Make IS31FL3741 control register update clearer

Co-authored-by: Ryan <fauxpark@gmail.com>
Co-authored-by: Jumail Mundekkat <mundekkat@hotmail.com>
2020-09-03 20:37:04 +10:00
gtips
bad589ec59 [Keyboard] reviung33 (#10162)
* [Keyboard] Add keyboard Reviung41

* Modified files

* deleted keyboards/reviung41/keymaps/default/config.h

* modified keyboards/rebiung41/keymaps/default/keymap.c

* modified keyboards/reviung41/readme.md

* modified keyboards/reviung41/readme.md

* modified keyboards/reviung41/readme.md

* Update readme.md

Change the image photo of readme.md.

* [Keyboard] Add reviung61

* Update readme.md

* fix keyboards/reviung61/ and add keymap default_rgb

* fix keyboards/reviung61/info.json

* fix keyboards/reviung61/info.json

* remove keyboards/reviung61/keymaps/default/config.h

* [keyboard] Fixed readme.md for reviung39 and 61.

* [keyboard] add keyboard reviung33

* fix keyboards/reviung33/rules.mk

* modified: keyboards/reving33/config.h

* modified: keyboards/reving33/info.json

* modified: keyboards/reving33/keymaps/default/keymap.c
2020-09-03 01:42:09 -07:00
Sendy YK
eead2c6087 Update DZ60 Information (#10186)
* Remove #define DESCRIPTION

* Update readme.md

* Update keyboards/readme.md

* Update keyboards/readme.md
2020-09-03 01:36:04 -07:00
jrdsgl
04293bcd5b [Keymap] add sixkeyboard:via (#10172)
* Adding VIA support for sixkeyboard

* Update keyboards/sixkeyboard/keymaps/via/keymap.c

* Update keyboards/sixkeyboard/keymaps/via/keymap.c

* Update keyboards/sixkeyboard/keymaps/via/keymap.c

* Update keyboards/sixkeyboard/keymaps/via/keymap.c

* Update keymap.c

added suggested header. left my name out and changed year to 2020.
2020-09-03 01:34:42 -07:00
jotix
e7cc5a35c2 [Keymap] update ortho_4x12 jotix (#10157)
* mouse_layout

* add_mouse_btns

* reset_with_ctrl+esc+bspc

* add_mousekeys_on_right

* mod-tap-mouse-layer

* fn_layer
2020-09-03 01:28:07 -07:00
mujimanic
9808bfaf26 [Keyboard] add Sneakbox Alice Clone (#9792)
* Initial Commit for alice clone pcb

Initial commit for alice clone pcb

* Update keyboards/sneakbox/aliceclone/config.h

Change to #pragma once. Thanks.

* Update keyboards/sneakbox/aliceclone/config.h

* Update keyboards/sneakbox/aliceclone/kb.c

* Rename kb.h to aliceclone.h

* Update keyboards/sneakbox/aliceclone/keymaps/default/keymap.c

* Update keyboards/sneakbox/aliceclone/keymaps/default/keymap.c

* Update keyboards/sneakbox/aliceclone/keymaps/default/keymap.c

* Update keyboards/sneakbox/aliceclone/keymaps/default/keymap.c

* Update keyboards/sneakbox/aliceclone/keymaps/default/keymap.c

Got it. Thanks.

* Update keyboards/sneakbox/aliceclone/readme.md

* Update keyboards/sneakbox/aliceclone/readme.md

* Update keyboards/sneakbox/aliceclone/rules.mk

* Update keymap.c

* Rename kb.c to aliceclone.c

* Update keyboards/sneakbox/aliceclone/config.h

* Update keyboards/sneakbox/aliceclone/aliceclone.h

* Update keyboards/sneakbox/aliceclone/aliceclone.h

* Update keyboards/sneakbox/aliceclone/aliceclone.h

* Update keyboards/sneakbox/aliceclone/config.h

Got it. Thanks.

* Update keyboards/sneakbox/aliceclone/readme.md

Got it, the parent company folder needs to be added for make to find the source. Forgot that. Thanks.

* Update keyboards/sneakbox/aliceclone/config.h

* Info.json now reflects QMK configurator metadata

Previously, .json represented via metadata.

* Changed typo ) to } at end of line 9.

* Update keymap.c

Updated the spacing of the keymap layout to be more readable.

* Update keymap.c

Updated this VIA keymap for formatting to make it more readable.

* Update keymap.c

Updated formatting of the rotary encoder function

* Update keymap.c

* Update info.json

Corrected key layout and aligned for straight keymap, removed rotation references

* Update keymap.c

Adjusted formatting for key layout for readability

* Adjusted formatting for key layout for readability

Adjusted formatting for key layout for readability

* Added GPLv2 License header

* Added GPLv2 license header

* Update aliceclone.c

* Updated the LAYOUT map 

LAYOUT map now resembles the actual keymap with correct KXY keys corresponding to switch position.

* GPLv2 license header added

* Update keyboards/sneakbox/aliceclone/config.h

* GPLv2 License Header added

* Updated License Header, Added keymap layers

Added total of 4 keymap layers, fixed keymap visual formatting. License header GPLv2

* Added extra layers, corrected layer references

* Updated formatting for keymap.c LAYOUT

* Update keyboards/sneakbox/aliceclone/aliceclone.h

Updated

* Update keyboards/sneakbox/aliceclone/info.json

Updated

* Update keyboards/sneakbox/aliceclone/info.json

Updated

* Update keyboards/sneakbox/aliceclone/info.json

Updated formatting

* Update keyboards/sneakbox/aliceclone/keymaps/default/keymap.c

Reviewed and approved. Thanks.

* Update keyboards/sneakbox/aliceclone/keymaps/default/keymap.c

Reviewed. Understood. Thanks.

* Update keyboards/sneakbox/aliceclone/keymaps/default/keymap.c

Got it. Removed.

* Update keyboards/sneakbox/aliceclone/keymaps/via/keymap.c

Agreed. Thanks for the suggestion.

* Update keyboards/sneakbox/aliceclone/readme.md

* Update keyboards/sneakbox/aliceclone/readme.md

* Update keymap.c

tabs spaces formatting

* Update keymap.c

Tabs and spaces. Remove L3 L4

* syntax in enum layer_names

removed comma after "_FN"

* Update aliceclone.h

renamed LAYOUT_all to LAYOUT

* Update keymap.c

Updated keymap

* Update keymap.c

* Update keyboards/sneakbox/aliceclone/readme.md

* Update keyboards/sneakbox/aliceclone/keymaps/via/keymap.c

* Update keyboards/sneakbox/aliceclone/keymaps/via/keymap.c

* Update keyboards/sneakbox/aliceclone/keymaps/via/keymap.c

* Update keyboards/sneakbox/aliceclone/keymaps/via/keymap.c

* Update keyboards/sneakbox/aliceclone/aliceclone.h

* Update keyboards/sneakbox/aliceclone/keymaps/default/keymap.c

* Update keyboards/sneakbox/aliceclone/keymaps/default/keymap.c
2020-09-03 01:24:55 -07:00
Andy Jack
2ab307a940 [Keymap] add 40percentclub/mf68:andyjack (#10208)
* Initial checkin of my 40percentclub/mf68 keymap

* Add gplv2 license header
2020-09-01 23:31:57 -07:00
t-miyajima
4086729f5e [Keyboard] Add Chavdai40% rev2 (#10210)
* add chavdai40 rev2

* add chavdai40 rev2

* change include quantum.h to top of h files
2020-09-01 23:29:17 -07:00
Matthew Lyon
4701001524 add centromere:mattly keymap (#10177)
* mattly's mirrored centromere layout

* Update keyboards/centromere/keymaps/mattly/keymap.c

* Update keyboards/centromere/keymaps/mattly/rules.mk
2020-09-01 18:01:24 -07:00
4pplet
6e618baa57 update 4pplet/waffling60 keyboard (#10143)
* Update config.h

added debounce to prevent stuttering with some switches

* Update README.md
2020-09-01 17:36:00 -07:00
Blake
825ef0bd96 add keebio/bdn9:ghostseven keymap (#10154)
Keebio BDN9 Additional Keymap - Rev Encoders
2020-09-01 17:31:34 -07:00
Salicylic-acid3
58600d3f65 (setta21 & getta25) Keymaps Update (#10170)
OLED is turned off by default.
2020-09-01 17:28:55 -07:00
MechMerlin
f145696dad E85 Hotswap/Soldered Fixes (#10173)
* split up the e85 into hotswap and soldered variants

* remove layout_all LAYOUT macro for hotswap pcb

* add copyright header to  to all config files

* remove list of alternate bootloaders

* spruce up config file

* comply with PR check list

* Update keyboards/exclusive/e85/hotswap/info.json

* Update keyboards/exclusive/e85/hotswap/info.json

* Update keyboards/exclusive/e85/hotswap/info.json

* Update keyboards/exclusive/e85/rules.mk

* Update keyboards/exclusive/e85/config.h

* Update keyboards/exclusive/e85/hotswap/config.h

* Update keyboards/exclusive/e85/soldered/config.h

* remove LAYOUT_all in hotswap and also remove superfluous comments

* remove the soldered tsangan map
2020-09-01 14:45:25 -07:00
Sendy YK
7fe01239dd update ai03/soyuz:mrsendyyk keymap (#10161)
Update ai03 Soyuz readme.md and keymap.c

* Update readme.md

* Update readme.md

* Update keymap.c

* Update keymap.c

* Update readme.md

* Update readme.md

* Update readme.md

* Update readme.md
2020-09-01 09:18:36 -07:00
Bradford
32910738fd add bm60rgb:jbradforddillon keymap (#10133)
* Added bm60rgb keymap

* Fix copyright
2020-09-01 09:11:16 -07:00
Bradford
4889625015 bm60rgb: fixed LED layout; add underglow support (#10132)
* Fixed the LED layout for the bm60rgb

* Added underglow support
2020-09-01 09:09:24 -07:00
Josh Hinnebusch
744940bbd9 hineybush/h88: update h88 LED stuff (#10101)
* update h88.c

* Update keyboards/hineybush/h88/h88.c
2020-09-01 09:05:03 -07:00
TheLibra23
0bec817479 keebio/viterbi/rev2/: replaced change PRODUCT_ID (#10167)
* replaced #define PRODUCT_ID 0x1157 with #define PRODUCT_ID 0x2157 

replaced product id to distinguish rev2 from rev1.
bakingpy gave me permission through discord chat.
2020-09-01 08:55:31 -07:00
umi
80fd81ad6b [Docs] Japanese translation of docs/ref_functions.md (#9878)
* add ref_functions.md translation

* modify internal link for ja

* update based on comment

* reflect #9892 change

* update based on comment

* update based on comment
2020-09-01 18:31:25 +09:00
Joe Wasson
d16d866597 [Keyboard] 1upkeyboards/1up60rgb: fix broken Enter (#10188)
The recent change to unnest macros put the enter on the wrong matrix key. On the 1uprgb, the ANSI and ISO enters share the same cell as does the ANSI and ISO backslash.
2020-08-31 22:41:41 -07:00
Ryan
0032cb026b [Keyboard] YMDK NP21 refactor (#10181) 2020-08-31 22:30:07 -07:00
Sendy YK
854a94f383 [Keymap] update dz60:mrsendyyk (#10160)
Update DZ60 Personal readme.md and keymap.c

* Update readme.md

* Update keymap.c

* Update keymap.c

* Update readme.md

* Update readme.md

* Update readme.md

* Update keymap.c

* Update readme.md

* Update

* Update readme.md

* Update keymap.c

* Update readme.md
2020-08-31 22:26:52 -07:00
Joe Wasson
4a6cfb06c5 TMO50: use layer_state_set_kb at keyboard level (#10150)
* Change TMO to use layer_state_set_kb as is customary at the keyboard level.

This also factors out `process_indicator_led` to a separate method.
2020-08-31 22:19:51 -07:00
Danilo de Klerk
a9a2817f3a [Keymap] Add ddeklerk ortho_4x12 layout (#10109)
* Add ddeklerk ortho_4x12 layout

* Add license header
2020-08-31 21:44:47 -07:00
gorbachev
4286b81af0 [Keymap] add dmqdesign/spin:gorbachev (#9919)
* Add keymap for DQM Design Spin macropad

* changes from code review

* state -> layer_state

* Formatting fixes

* Formatting fixes

* Formatting fixes

* Formatting fixes

* Formatting fixes
2020-08-31 21:23:29 -07:00
mechlovin
fa740c1286 [Keyboard] Mechlovin Delphine (#9835)
* add

* ADD

* update

* update

* update

* update

* Update rgb_led.c

* Update rgb_led.c
2020-08-31 17:20:19 -07:00
117 changed files with 3749 additions and 483 deletions

122
docs/ja/ref_functions.md Normal file
View File

@@ -0,0 +1,122 @@
# キーボードをより良くするための便利なコア関数のリスト
<!---
original document: 0.9.47:docs/ref_functions.md
git diff 0.9.47 HEAD -- docs/ref_functions.md | cat
-->
QMK には、信じられないほど便利な、またはあなたが望んでいた機能を少し追加する、隠された関数がたくさんあります。特定の機能に固有の関数はそれぞれの機能のページにあるため、ここには含まれていません。
## (OLKB) トライレイヤー :id=olkb-tri-layers
目的に応じて、実際に使うことができる別個の関数があります。
### `update_tri_layer(x, y, z)`
最初は `update_tri_layer(x, y, z)` 関数です。この関数はレイヤー `x``y` の両方がオンになっているかどうかを調べます。両方ともオンの場合は、レイヤー `z` がオンになります。それ以外の場合、`x``y` の両方がオンではない(一方のみがオン、またはどちらもオンでない)場合は、レイヤー `z` をオフにします。
この関数は、この機能を持つ特定のキーを作成したいが、他のレイヤーのキーコードではそうしたくない場合に便利です。
#### 例
```c
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
switch (keycode) {
case LOWER:
if (record->event.pressed) {
layer_on(_LOWER);
update_tri_layer(_LOWER, _RAISE, _ADJUST);
} else {
layer_off(_LOWER);
update_tri_layer(_LOWER, _RAISE, _ADJUST);
}
return false;
case RAISE:
if (record->event.pressed) {
layer_on(_RAISE);
update_tri_layer(_LOWER, _RAISE, _ADJUST);
} else {
layer_off(_RAISE);
update_tri_layer(_LOWER, _RAISE, _ADJUST);
}
return false;
}
return true;
}
```
### `update_tri_layer_state(state, x, y, z)`
もう1つの関数は `update_tri_layer_state(state, x, y, z)` です。この関数は [`layer_state_set_*` 関数](ja/custom_quantum_functions.md#layer-change-code)から呼び出されることを意図しています。これは、キーコードを使ってレイヤーを変更するたびに、これがチェックされることを意味します。したがって、`LT(layer, kc)` を使ってレイヤーを変更すると、同じレイヤーチェックが引き起こされます。
このメソッドの注意点は、`x` および `y` レイヤーをオンにしないと、`z` レイヤーにアクセスできないことです。レイヤー `z` のみをアクティブにしようとすると、このコードが実行され、使用前にレイヤー `z` がオフになるからです。
#### 例
```c
layer_state_t layer_state_set_user(layer_state_t state) {
return update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST);
}
```
あるいは、すぐに値を「返す」必要はありません。複数のトライレイヤーを追加、あるいは追加の効果を追加する場合に便利です。
```c
layer_state_t layer_state_set_user(layer_state_t state) {
state = update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST);
state = update_tri_layer_state(state, _RAISE, _SYMB, _SPECIAL);
return state;
}
```
## 永続的なデフォルトレイヤーの設定
デフォルトレイヤーを設定して、キーボードを取り外しても保持されるようにしたいですか?そうであれば、これがそのための関数です。
これを使うには、`set_single_persistent_default_layer(layer)` を使います。レイヤーに名前が定義されている場合は、代わりにそれを使うことができます (_QWERTY、_DVORAK、_COLEMAK など)。
これは、デフォルトレイヤーを設定し、永続設定が更新され、もし [オーディオ](ja/feature_audio.md) がキーボードで有効でデフォルトレイヤーの音が設定されている場合は、曲を再生します。
デフォルトレイヤーの音を設定するには、以下のように `config.h` ファイルに定義する必要があります。
```c
#define DEFAULT_LAYER_SONGS { SONG(QWERTY_SOUND), \
SONG(COLEMAK_SOUND), \
SONG(DVORAK_SOUND) \
}
```
?> [quantum/audio/song_list.h](https://github.com/qmk/qmk_firmware/blob/master/quantum/audio/song_list.h) に使用できる多くの定義済みの曲があります。
## キーボードのリセット
使用できる `RESET` quantum キーコードがあります。ただし、キーを個別に押すのではなくマクロの一部としてリセットしたい場合は、そうすることができます。
そのためには、`reset_keyboard()` を関数またはマクロに追加すると、ブートローダがリセットされます。
## EEPROM (永続ストレージ)の消去
オーディオ、RGB アンダーグロー、バックライト、キーの動作に問題がある場合は、EEPROM (永続的な設定のストレージ)をリセットすることができます。ブートマジックはこれを行う方法の1つですが、有効になっていない場合はカスタムマクロを使って行うことができます。
EEPROM を消去するには、関数またはマクロから `eeconfig_init()` を実行し、ほとんどの設定をデフォルトにリセットします。
## タップランダムキー
ランダムな文字をホストコンピュータに送信する場合は、`tap_random_base64()` 関数を使うことができます。これは[疑似乱数的に](https://en.wikipedia.org/wiki/Pseudorandom_number_generator)0から63の数字を選択し、その選択に基づいてキー押下を送信します。(025 は `A``Z`、2651 は `a``z`、5261 は `0``9`、62 は `+`、63 は `/`)。
?> 言うまでもないですが、これはランダムに Base64 キーあるいはパスワードを生成する暗号的に安全な方法では _ありません_
## ソフトウェアタイマー
タイマーを開始し、時間固有のイベントの値を読み取ることができます。以下は例です:
```c
static uint16_t key_timer;
key_timer = timer_read();
if (timer_elapsed(key_timer) < 100) {
// 経過時間が 100ms 未満の場合に何かを行う
} else {
// 経過時間が 100ms 以上の場合に何かを行う
}
```

View File

@@ -78,23 +78,6 @@ bool g_scaling_registers_update_required[DRIVER_COUNT] = {false};
uint8_t g_scaling_registers[DRIVER_COUNT][ISSI_MAX_LEDS];
uint32_t IS31FL3741_get_cw_sw_position(uint8_t cs, uint8_t sw) {
uint32_t pos = 0;
if (cs < 31) {
if (sw < 7) {
pos = (sw - 1) * 30 + (cs - 1);
} else {
pos = 0xB4 + (sw - 7) * 30 + (cs - 1);
}
} else {
pos = 0xB4 + 0x5A + (sw - 1) * 9 + (cs - 31);
}
return pos;
}
void IS31FL3741_write_register(uint8_t addr, uint8_t reg, uint8_t data) {
g_twi_transfer_buffer[0] = reg;
g_twi_transfer_buffer[1] = data;
@@ -186,16 +169,11 @@ void IS31FL3741_init(uint8_t addr) {
void IS31FL3741_set_color(int index, uint8_t red, uint8_t green, uint8_t blue) {
if (index >= 0 && index < DRIVER_LED_TOTAL) {
is31_led led = g_is31_leds[index];
uint32_t rp = 0, gp = 0, bp = 0;
rp = IS31FL3741_get_cw_sw_position(led.rcs, led.rsw);
gp = IS31FL3741_get_cw_sw_position(led.gcs, led.gsw);
bp = IS31FL3741_get_cw_sw_position(led.bcs, led.bsw);
g_pwm_buffer[led.driver][rp] = red;
g_pwm_buffer[led.driver][gp] = green;
g_pwm_buffer[led.driver][bp] = blue;
g_pwm_buffer_update_required = true;
g_pwm_buffer[led.driver][led.r] = red;
g_pwm_buffer[led.driver][led.g] = green;
g_pwm_buffer[led.driver][led.b] = blue;
g_pwm_buffer_update_required = true;
}
}
@@ -208,26 +186,22 @@ void IS31FL3741_set_color_all(uint8_t red, uint8_t green, uint8_t blue) {
void IS31FL3741_set_led_control_register(uint8_t index, bool red, bool green, bool blue) {
is31_led led = g_is31_leds[index];
uint32_t scaling_register_r = IS31FL3741_get_cw_sw_position(led.rcs, led.rsw);
uint32_t scaling_register_g = IS31FL3741_get_cw_sw_position(led.gcs, led.gsw);
uint32_t scaling_register_b = IS31FL3741_get_cw_sw_position(led.bcs, led.bsw);
if (red) {
g_scaling_registers[led.driver][scaling_register_r] = 0xFF;
g_scaling_registers[led.driver][led.r] = 0xFF;
} else {
g_scaling_registers[led.driver][scaling_register_r] = 0x00;
g_scaling_registers[led.driver][led.r] = 0x00;
}
if (green) {
g_scaling_registers[led.driver][scaling_register_g] = 0xFF;
g_scaling_registers[led.driver][led.g] = 0xFF;
} else {
g_scaling_registers[led.driver][scaling_register_g] = 0x00;
g_scaling_registers[led.driver][led.g] = 0x00;
}
if (blue) {
g_scaling_registers[led.driver][scaling_register_b] = 0xFF;
g_scaling_registers[led.driver][led.b] = 0xFF;
} else {
g_scaling_registers[led.driver][scaling_register_b] = 0x00;
g_scaling_registers[led.driver][led.b] = 0x00;
}
g_scaling_registers_update_required[led.driver] = true;
@@ -242,15 +216,9 @@ void IS31FL3741_update_pwm_buffers(uint8_t addr1, uint8_t addr2) {
}
void IS31FL3741_set_pwm_buffer(const is31_led *pled, uint8_t red, uint8_t green, uint8_t blue) {
uint32_t rp = 0, gp = 0, bp = 0;
rp = IS31FL3741_get_cw_sw_position(pled->rcs, pled->rsw);
gp = IS31FL3741_get_cw_sw_position(pled->gcs, pled->gsw);
bp = IS31FL3741_get_cw_sw_position(pled->bcs, pled->bsw);
g_pwm_buffer[pled->driver][rp] = red;
g_pwm_buffer[pled->driver][gp] = green;
g_pwm_buffer[pled->driver][bp] = blue;
g_pwm_buffer[pled->driver][pled->r] = red;
g_pwm_buffer[pled->driver][pled->g] = green;
g_pwm_buffer[pled->driver][pled->b] = blue;
g_pwm_buffer_update_required = true;
}
@@ -261,7 +229,8 @@ void IS31FL3741_update_led_control_registers(uint8_t addr, uint8_t index) {
IS31FL3741_write_register(addr, ISSI_COMMANDREGISTER_WRITELOCK, 0xC5);
IS31FL3741_write_register(addr, ISSI_COMMANDREGISTER, ISSI_PAGE_SCALING_0);
for (int i = 0; i < 180; ++i) {
// CS1_SW1 to CS30_SW6 are on PG2
for (int i = CS1_SW1; i <= CS30_SW6; ++i) {
IS31FL3741_write_register(addr, i, g_scaling_registers[0][i]);
}
@@ -269,8 +238,9 @@ void IS31FL3741_update_led_control_registers(uint8_t addr, uint8_t index) {
IS31FL3741_write_register(addr, ISSI_COMMANDREGISTER_WRITELOCK, 0xC5);
IS31FL3741_write_register(addr, ISSI_COMMANDREGISTER, ISSI_PAGE_SCALING_1);
for (int i = 0; i < 171; ++i) {
IS31FL3741_write_register(addr, i, g_scaling_registers[0][180 + i]);
// CS1_SW7 to CS39_SW9 are on PG3
for (int i = CS1_SW7; i <= CS39_SW9; ++i) {
IS31FL3741_write_register(addr, i - CS1_SW7, g_scaling_registers[0][i]);
}
g_scaling_registers_update_required[index] = false;
@@ -278,13 +248,7 @@ void IS31FL3741_update_led_control_registers(uint8_t addr, uint8_t index) {
}
void IS31FL3741_set_scaling_registers(const is31_led *pled, uint8_t red, uint8_t green, uint8_t blue) {
uint32_t rp = 0, gp = 0, bp = 0;
rp = IS31FL3741_get_cw_sw_position(pled->rcs, pled->rsw);
gp = IS31FL3741_get_cw_sw_position(pled->gcs, pled->gsw);
bp = IS31FL3741_get_cw_sw_position(pled->bcs, pled->bsw);
g_scaling_registers[pled->driver][rp] = red;
g_scaling_registers[pled->driver][gp] = green;
g_scaling_registers[pled->driver][bp] = blue;
g_scaling_registers[pled->driver][pled->r] = red;
g_scaling_registers[pled->driver][pled->g] = green;
g_scaling_registers[pled->driver][pled->b] = blue;
}

View File

@@ -23,13 +23,10 @@
#include <stdbool.h>
typedef struct is31_led {
uint8_t driver : 2;
uint8_t rcs;
uint8_t rsw;
uint8_t gcs;
uint8_t gsw;
uint8_t bcs;
uint8_t bsw;
uint8_t driver : 2;
uint16_t r;
uint16_t g;
uint16_t b;
} __attribute__((packed)) is31_led;
extern const is31_led g_is31_leds[DRIVER_LED_TOTAL];
@@ -53,3 +50,372 @@ void IS31FL3741_update_led_control_registers(uint8_t addr1, uint8_t addr2);
void IS31FL3741_set_scaling_registers(const is31_led *pled, uint8_t red, uint8_t green, uint8_t blue);
void IS31FL3741_set_pwm_buffer(const is31_led *pled, uint8_t red, uint8_t green, uint8_t blue);
#define CS1_SW1 0x00
#define CS2_SW1 0x01
#define CS3_SW1 0x02
#define CS4_SW1 0x03
#define CS5_SW1 0x04
#define CS6_SW1 0x05
#define CS7_SW1 0x06
#define CS8_SW1 0x07
#define CS9_SW1 0x08
#define CS10_SW1 0x09
#define CS11_SW1 0x0A
#define CS12_SW1 0x0B
#define CS13_SW1 0x0C
#define CS14_SW1 0x0D
#define CS15_SW1 0x0E
#define CS16_SW1 0x0F
#define CS17_SW1 0x10
#define CS18_SW1 0x11
#define CS19_SW1 0x12
#define CS20_SW1 0x13
#define CS21_SW1 0x14
#define CS22_SW1 0x15
#define CS23_SW1 0x16
#define CS24_SW1 0x17
#define CS25_SW1 0x18
#define CS26_SW1 0x19
#define CS27_SW1 0x1A
#define CS28_SW1 0x1B
#define CS29_SW1 0x1C
#define CS30_SW1 0x1D
#define CS1_SW2 0x1E
#define CS2_SW2 0x1F
#define CS3_SW2 0x20
#define CS4_SW2 0x21
#define CS5_SW2 0x22
#define CS6_SW2 0x23
#define CS7_SW2 0x24
#define CS8_SW2 0x25
#define CS9_SW2 0x26
#define CS10_SW2 0x27
#define CS11_SW2 0x28
#define CS12_SW2 0x29
#define CS13_SW2 0x2A
#define CS14_SW2 0x2B
#define CS15_SW2 0x2C
#define CS16_SW2 0x2D
#define CS17_SW2 0x2E
#define CS18_SW2 0x2F
#define CS19_SW2 0x30
#define CS20_SW2 0x31
#define CS21_SW2 0x32
#define CS22_SW2 0x33
#define CS23_SW2 0x34
#define CS24_SW2 0x35
#define CS25_SW2 0x36
#define CS26_SW2 0x37
#define CS27_SW2 0x38
#define CS28_SW2 0x39
#define CS29_SW2 0x3A
#define CS30_SW2 0x3B
#define CS1_SW3 0x3C
#define CS2_SW3 0x3D
#define CS3_SW3 0x3E
#define CS4_SW3 0x3F
#define CS5_SW3 0x40
#define CS6_SW3 0x41
#define CS7_SW3 0x42
#define CS8_SW3 0x43
#define CS9_SW3 0x44
#define CS10_SW3 0x45
#define CS11_SW3 0x46
#define CS12_SW3 0x47
#define CS13_SW3 0x48
#define CS14_SW3 0x49
#define CS15_SW3 0x4A
#define CS16_SW3 0x4B
#define CS17_SW3 0x4C
#define CS18_SW3 0x4D
#define CS19_SW3 0x4E
#define CS20_SW3 0x4F
#define CS21_SW3 0x50
#define CS22_SW3 0x51
#define CS23_SW3 0x52
#define CS24_SW3 0x53
#define CS25_SW3 0x54
#define CS26_SW3 0x55
#define CS27_SW3 0x56
#define CS28_SW3 0x57
#define CS29_SW3 0x58
#define CS30_SW3 0x59
#define CS1_SW4 0x5A
#define CS2_SW4 0x5B
#define CS3_SW4 0x5C
#define CS4_SW4 0x5D
#define CS5_SW4 0x5E
#define CS6_SW4 0x5F
#define CS7_SW4 0x60
#define CS8_SW4 0x61
#define CS9_SW4 0x62
#define CS10_SW4 0x63
#define CS11_SW4 0x64
#define CS12_SW4 0x65
#define CS13_SW4 0x66
#define CS14_SW4 0x67
#define CS15_SW4 0x68
#define CS16_SW4 0x69
#define CS17_SW4 0x6A
#define CS18_SW4 0x6B
#define CS19_SW4 0x6C
#define CS20_SW4 0x6D
#define CS21_SW4 0x6E
#define CS22_SW4 0x6F
#define CS23_SW4 0x70
#define CS24_SW4 0x71
#define CS25_SW4 0x72
#define CS26_SW4 0x73
#define CS27_SW4 0x74
#define CS28_SW4 0x75
#define CS29_SW4 0x76
#define CS30_SW4 0x77
#define CS1_SW5 0x78
#define CS2_SW5 0x79
#define CS3_SW5 0x7A
#define CS4_SW5 0x7B
#define CS5_SW5 0x7C
#define CS6_SW5 0x7D
#define CS7_SW5 0x7E
#define CS8_SW5 0x7F
#define CS9_SW5 0x80
#define CS10_SW5 0x81
#define CS11_SW5 0x82
#define CS12_SW5 0x83
#define CS13_SW5 0x84
#define CS14_SW5 0x85
#define CS15_SW5 0x86
#define CS16_SW5 0x87
#define CS17_SW5 0x88
#define CS18_SW5 0x89
#define CS19_SW5 0x8A
#define CS20_SW5 0x8B
#define CS21_SW5 0x8C
#define CS22_SW5 0x8D
#define CS23_SW5 0x8E
#define CS24_SW5 0x8F
#define CS25_SW5 0x90
#define CS26_SW5 0x91
#define CS27_SW5 0x92
#define CS28_SW5 0x93
#define CS29_SW5 0x94
#define CS30_SW5 0x95
#define CS1_SW6 0x96
#define CS2_SW6 0x97
#define CS3_SW6 0x98
#define CS4_SW6 0x99
#define CS5_SW6 0x9A
#define CS6_SW6 0x9B
#define CS7_SW6 0x9C
#define CS8_SW6 0x9D
#define CS9_SW6 0x9E
#define CS10_SW6 0x9F
#define CS11_SW6 0xA0
#define CS12_SW6 0xA1
#define CS13_SW6 0xA2
#define CS14_SW6 0xA3
#define CS15_SW6 0xA4
#define CS16_SW6 0xA5
#define CS17_SW6 0xA6
#define CS18_SW6 0xA7
#define CS19_SW6 0xA8
#define CS20_SW6 0xA9
#define CS21_SW6 0xAA
#define CS22_SW6 0xAB
#define CS23_SW6 0xAC
#define CS24_SW6 0xAD
#define CS25_SW6 0xAE
#define CS26_SW6 0xAF
#define CS27_SW6 0xB0
#define CS28_SW6 0xB1
#define CS29_SW6 0xB2
#define CS30_SW6 0xB3
#define CS1_SW7 0xB4
#define CS2_SW7 0xB5
#define CS3_SW7 0xB6
#define CS4_SW7 0xB7
#define CS5_SW7 0xB8
#define CS6_SW7 0xB9
#define CS7_SW7 0xBA
#define CS8_SW7 0xBB
#define CS9_SW7 0xBC
#define CS10_SW7 0xBD
#define CS11_SW7 0xBE
#define CS12_SW7 0xBF
#define CS13_SW7 0xC0
#define CS14_SW7 0xC1
#define CS15_SW7 0xC2
#define CS16_SW7 0xC3
#define CS17_SW7 0xC4
#define CS18_SW7 0xC5
#define CS19_SW7 0xC6
#define CS20_SW7 0xC7
#define CS21_SW7 0xC8
#define CS22_SW7 0xC9
#define CS23_SW7 0xCA
#define CS24_SW7 0xCB
#define CS25_SW7 0xCC
#define CS26_SW7 0xCD
#define CS27_SW7 0xCE
#define CS28_SW7 0xCF
#define CS29_SW7 0xD0
#define CS30_SW7 0xD1
#define CS1_SW8 0xD2
#define CS2_SW8 0xD3
#define CS3_SW8 0xD4
#define CS4_SW8 0xD5
#define CS5_SW8 0xD6
#define CS6_SW8 0xD7
#define CS7_SW8 0xD8
#define CS8_SW8 0xD9
#define CS9_SW8 0xDA
#define CS10_SW8 0xDB
#define CS11_SW8 0xDC
#define CS12_SW8 0xDD
#define CS13_SW8 0xDE
#define CS14_SW8 0xDF
#define CS15_SW8 0xE0
#define CS16_SW8 0xE1
#define CS17_SW8 0xE2
#define CS18_SW8 0xE3
#define CS19_SW8 0xE4
#define CS20_SW8 0xE5
#define CS21_SW8 0xE6
#define CS22_SW8 0xE7
#define CS23_SW8 0xE8
#define CS24_SW8 0xE9
#define CS25_SW8 0xEA
#define CS26_SW8 0xEB
#define CS27_SW8 0xEC
#define CS28_SW8 0xED
#define CS29_SW8 0xEE
#define CS30_SW8 0xEF
#define CS1_SW9 0xF0
#define CS2_SW9 0xF1
#define CS3_SW9 0xF2
#define CS4_SW9 0xF3
#define CS5_SW9 0xF4
#define CS6_SW9 0xF5
#define CS7_SW9 0xF6
#define CS8_SW9 0xF7
#define CS9_SW9 0xF8
#define CS10_SW9 0xF9
#define CS11_SW9 0xFA
#define CS12_SW9 0xFB
#define CS13_SW9 0xFC
#define CS14_SW9 0xFD
#define CS15_SW9 0xFE
#define CS16_SW9 0xFF
#define CS17_SW9 0x100
#define CS18_SW9 0x101
#define CS19_SW9 0x102
#define CS20_SW9 0x103
#define CS21_SW9 0x104
#define CS22_SW9 0x105
#define CS23_SW9 0x106
#define CS24_SW9 0x107
#define CS25_SW9 0x108
#define CS26_SW9 0x109
#define CS27_SW9 0x10A
#define CS28_SW9 0x10B
#define CS29_SW9 0x10C
#define CS30_SW9 0x10D
#define CS31_SW1 0x10E
#define CS32_SW1 0x10F
#define CS33_SW1 0x110
#define CS34_SW1 0x111
#define CS35_SW1 0x112
#define CS36_SW1 0x113
#define CS37_SW1 0x114
#define CS38_SW1 0x115
#define CS39_SW1 0x116
#define CS31_SW2 0x117
#define CS32_SW2 0x118
#define CS33_SW2 0x119
#define CS34_SW2 0x11A
#define CS35_SW2 0x11B
#define CS36_SW2 0x11C
#define CS37_SW2 0x11D
#define CS38_SW2 0x11E
#define CS39_SW2 0x11F
#define CS31_SW3 0x120
#define CS32_SW3 0x121
#define CS33_SW3 0x122
#define CS34_SW3 0x123
#define CS35_SW3 0x124
#define CS36_SW3 0x125
#define CS37_SW3 0x126
#define CS38_SW3 0x127
#define CS39_SW3 0x128
#define CS31_SW4 0x129
#define CS32_SW4 0x12A
#define CS33_SW4 0x12B
#define CS34_SW4 0x12C
#define CS35_SW4 0x12D
#define CS36_SW4 0x12E
#define CS37_SW4 0x12F
#define CS38_SW4 0x130
#define CS39_SW4 0x131
#define CS31_SW5 0x132
#define CS32_SW5 0x133
#define CS33_SW5 0x134
#define CS34_SW5 0x135
#define CS35_SW5 0x136
#define CS36_SW5 0x137
#define CS37_SW5 0x138
#define CS38_SW5 0x139
#define CS39_SW5 0x13A
#define CS31_SW6 0x13B
#define CS32_SW6 0x13C
#define CS33_SW6 0x13D
#define CS34_SW6 0x13E
#define CS35_SW6 0x13F
#define CS36_SW6 0x140
#define CS37_SW6 0x141
#define CS38_SW6 0x142
#define CS39_SW6 0x143
#define CS31_SW7 0x144
#define CS32_SW7 0x145
#define CS33_SW7 0x146
#define CS34_SW7 0x147
#define CS35_SW7 0x148
#define CS36_SW7 0x149
#define CS37_SW7 0x14A
#define CS38_SW7 0x14B
#define CS39_SW7 0x14C
#define CS31_SW8 0x14D
#define CS32_SW8 0x14E
#define CS33_SW8 0x14F
#define CS34_SW8 0x150
#define CS35_SW8 0x151
#define CS36_SW8 0x152
#define CS37_SW8 0x153
#define CS38_SW8 0x154
#define CS39_SW8 0x155
#define CS31_SW9 0x156
#define CS32_SW9 0x157
#define CS33_SW9 0x158
#define CS34_SW9 0x159
#define CS35_SW9 0x15A
#define CS36_SW9 0x15B
#define CS37_SW9 0x15C
#define CS38_SW9 0x15D
#define CS39_SW9 0x15E

View File

@@ -28,7 +28,7 @@
) { \
{ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, XXX }, \
{ k10, XXX, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k1E }, \
{ k20, XXX, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, XXX, k2E }, \
{ k20, XXX, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2E, XXX }, \
{ k30, XXX, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, XXX, k3D, XXX }, \
{ k40, k41, XXX, k43, XXX, XXX, k46, XXX, XXX, XXX, k4A, k4B, XXX, k4D, k4E } \
}
@@ -42,8 +42,8 @@
k40, k41, k43, k46, k4A, k4B, k4D, k4E \
) { \
{ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, XXX }, \
{ k10, XXX, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, XXX }, \
{ k20, XXX, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, k2E }, \
{ k10, XXX, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k2D }, \
{ k20, XXX, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2E, XXX }, \
{ k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, XXX, k3D, XXX }, \
{ k40, k41, XXX, k43, XXX, XXX, k46, XXX, XXX, XXX, k4A, k4B, XXX, k4D, k4E } \
}
@@ -58,7 +58,7 @@
) { \
{ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E }, \
{ k10, XXX, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k1E }, \
{ k20, XXX, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, XXX, k2E }, \
{ k20, XXX, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2E, XXX }, \
{ k30, XXX, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, XXX, k3D, k3E }, \
{ k40, k41, XXX, k43, XXX, XXX, k46, XXX, XXX, XXX, k4A, k4B, XXX, k4D, k4E } \
}
@@ -73,7 +73,7 @@
) { \
{ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E }, \
{ k10, XXX, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k1E }, \
{ k20, XXX, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, XXX, k2E }, \
{ k20, XXX, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2E, XXX }, \
{ k30, XXX, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, XXX, k3D, k3E }, \
{ XXX, k41, XXX, k43, XXX, XXX, k46, XXX, XXX, XXX, XXX, k4B, XXX, k4D, XXX } \
}

View File

@@ -0,0 +1,144 @@
/*
Copyright 2020 Andy Jack
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 {
_QWERTY,
_L1,
_L2
};
#define CTL_ESC LCTL_T(KC_ESC)
/* these key combos are mapped to shell commands in my .keylaunchrc */
#define MUT_IN LALT(KC_F10)
#define MUT_OUT LALT(KC_F11)
#define MUT_MIC LALT(KC_F12)
#define SCN_LCK LCTL(KC_SLCK)
extern keymap_config_t keymap_config;
enum custom_keycodes {
AJ_FN = SAFE_RANGE,
AJ_RCTL,
AJ_MSWP,
AJ_MLCK,
};
// clang-format off
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_QWERTY] = LAYOUT_68_ansi(
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_PGUP,
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_PGDN,
CTL_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, AJ_FN, AJ_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
),
[_L1] = LAYOUT_68_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_BSPC, KC_VOLU, KC_HOME,
_______, _______, KC_HOME, KC_UP, KC_END, _______, _______, MUT_IN , MUT_OUT, MUT_MIC, _______, _______, BL_STEP, _______, KC_VOLD, KC_END,
_______, _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, SCN_LCK, _______, _______, _______,
_______, _______, _______, _______, KC_BTN3, _______, _______, KC_MUTE, _______, _______, _______, _______, KC_MUTE,
_______, AJ_MLCK, AJ_MSWP, _______, _______, _______, _______, KC_MPRV, KC_MPLY, KC_MNXT
),
[_L2] = LAYOUT_68_ansi(
KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_BSPC, KC_VOLU, KC_HOME,
_______, _______, _______, KC_UP, _______, _______, _______, KC_7, KC_8, KC_9, _______, _______, _______, _______, KC_VOLD, KC_END,
_______, _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, KC_4, KC_5, KC_6, _______, _______, _______,
_______, _______, _______, _______, _______, _______, KC_0, KC_1, KC_2, KC_3, _______, _______, KC_MUTE,
_______, _______, _______, _______, _______, _______, _______, KC_MPRV, KC_MPLY, KC_MNXT
)
};
// clang-format on
static bool aj_fn_down = false;
static bool aj_rctl_down = false;
static uint8_t keycode_for_aj_rctl;
/* My version of:
https://www.reddit.com/r/olkb/comments/8eticz/how_to_activate_a_layer_with_a_combination/dxygw0f/
* AJ_FN by itself turns on layer 1
* AJ_RCTL by itself acts as a control key
* pressing FN and RCTL together, in any order, turns on layer 2
*/
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
switch (keycode) {
case AJ_FN:
if (record->event.pressed) {
if (aj_rctl_down) {
layer_on(_L2);
} else {
layer_on(_L1);
}
aj_fn_down = true;
} else {
layer_off(_L1);
layer_off(_L2);
aj_fn_down = false;
}
return false;
break;
case AJ_RCTL:
if (record->event.pressed) {
if (aj_fn_down) {
layer_on(_L2);
} else {
register_code(keycode_for_aj_rctl);
}
aj_rctl_down = true;
} else {
layer_off(_L2);
unregister_code(keycode_for_aj_rctl);
aj_rctl_down = false;
}
return false;
break;
case AJ_MSWP:
case AJ_MLCK:
if (record->event.pressed) {
if (!eeconfig_is_enabled()) {
eeconfig_init();
}
keymap_config.raw = eeconfig_read_keymap();
switch (keycode) {
case AJ_MSWP:
keymap_config.swap_lalt_lgui = !keymap_config.swap_lalt_lgui;
keymap_config.swap_ralt_rgui = keymap_config.swap_lalt_lgui;
keycode_for_aj_rctl = keymap_config.swap_lalt_lgui ? KC_RALT : KC_RCTL;
break;
case AJ_MLCK:
keymap_config.no_gui = !keymap_config.no_gui;
break;
}
eeconfig_update_keymap(keymap_config.raw);
clear_keyboard(); // clear to prevent stuck keys
}
return false;
break;
}
return true;
}
void keyboard_post_init_user(void) {
if (!eeconfig_is_enabled()) {
eeconfig_init();
}
keymap_config.raw = eeconfig_read_keymap();
keycode_for_aj_rctl = keymap_config.swap_lalt_lgui ? KC_RALT : KC_RCTL;
eeconfig_update_keymap(keymap_config.raw);
clear_keyboard(); // clear to prevent stuck keys
}

View File

@@ -0,0 +1,22 @@
## Customizations from the `default` keymap
* caps lock is left ctrl / press & release for escape
* keyboard LED brightness control - Fn + ] (same as default)
* bootmagic:
* ability to swap keys - for moving between mac and win/linux
* for win/linux - keys are as labeled in layer 0; AJ_RCTL is right ctl
* for mac:
* LALT and LGUI swapped
* RALT key sends RGUI code
* AJ_RCTL key sends RALT code
* layer 2 access via Fn + AJ_RCTL pressed in any order
* regardless of swapped state
* ability to disable left gui
* Fn + v sends a middle mouse click - nice for pasting the mouse selection in
linux - I always mess up and scroll while clicking
* note: the mouse cursor has to be placed at the insert point
* mapping some Fn + key combinations to program launch shortcuts
<!--
vim:tw=78
-->

View File

@@ -0,0 +1,2 @@
MOUSEKEY_ENABLE = yes
BOOTMAGIC_ENABLE = full

View File

@@ -5,7 +5,7 @@ A 60% PCB for MX switches, one hot swap and one solder-pcb version with decent l
More info: https://geekhack.org/index.php?topic=103531.0
* Keyboard Maintainer: [4pplet](https://github.com/4pplet)
* Hardware Supported: waffling60 Rev A
* Hardware Supported: [waffling60](https://github.com/4pplet/waffling60)
Make example for this keyboard (after setting up your build environment):

View File

@@ -25,7 +25,7 @@
//#define MATRIX_HAS_GHOST
/* Set 0 if debouncing isn't needed */
#define DEBOUNCE 0
#define DEBOUNCE 5
#define QMK_ESC_OUTPUT D3 // usually COL
#define QMK_ESC_INPUT D4 // usually ROW

View File

@@ -1,24 +1,9 @@
#include QMK_KEYBOARD_H
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/*[0]
*┌───┬───┬───┬───┐
*│N L│/ │* │- │
*├───┼───┼───┼───┤
*│7 │8 │9 │ │
*├───┼───┼───┤+ │
*│4 │5 │6 │ │
*├───┼───┼───┼───┤
*│1 │2 │3 │ │
*├───┴───┼───┤Ent│
*│0 │. │ │
*└───────┴───┴───┘
*/
[0] = LAYOUT_numpad_5x4(KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS,
KC_P7, KC_P8, KC_P9,
KC_P4, KC_P5, KC_P6, KC_PPLS,
KC_P1, KC_P2, KC_P3,
KC_P0, KC_PDOT, KC_PENT)
[0] = LAYOUT_numpad_5x4(KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS,
KC_P7, KC_P8, KC_P9,
KC_P4, KC_P5, KC_P6, KC_PPLS,
KC_P1, KC_P2, KC_P3,
KC_P0, KC_PDOT, KC_PENT)
};

View File

@@ -1,25 +1,11 @@
# [Sendy YK](https://mr.sendyyk.com)'s Keymap
# [Sendy YK's Keymap](https://github.com/mrsendyyk/my_qmk/tree/master/ai03_soyuz_numpad)
`LAYOUT_numpad_5x4`
### [0]
```
┌───┬───┬───┬───┐
│N L│/ │* │- │
├───┼───┼───┼───┤
│7 │8 │9 │ │
├───┼───┼───┤+ │
│4 │5 │6 │ │
├───┼───┼───┼───┤
│1 │2 │3 │ │
├───┴───┼───┤Ent│
│0 │. │ │
└───────┴───┴───┘
```
![Default Layer [0]](https://raw.githubusercontent.com/mrsendyyk/my_qmk/master/ai03_soyuz_numpad/assets/ai03_soyuz_mrsendyyk.png)
## Build The Firmware
You will need to build the firmware. To do so go to your terminal window and run the compile command:
qmk compile -kb ai03/soyuz -km mrsendyyk
See [The Complete Newbs Guide To QMK](https://docs.qmk.fm/#/newbs).

View File

@@ -43,31 +43,35 @@ void led_set_kb(uint8_t usb_led) {
}
led_config_t g_led_config = { {
{ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13 },
{ 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27 },
{ 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 40, 41, 42 },
{ NO_LED, 43, 44, 45, 46, 48, 49, 50, 51, 52, 53, 54, 55, 56 },
{ 57, 58, 59, NO_LED, NO_LED, NO_LED, NO_LED, 60, NO_LED, NO_LED, 61, 62, 63, 64}
{ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13 },
{ 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27 },
{ 28, NO_LED, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40 },
{ NO_LED, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53 },
{ 54, 55, 56, NO_LED, NO_LED, NO_LED, 57, NO_LED, NO_LED, 58, 59, 60, 61, 62 }
}, {
// Esc, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, -, =, Backspace
{ 0, 0 }, { 15, 0 }, { 30, 0 }, { 45, 0 }, { 60, 0 }, { 75, 0 }, { 90, 0 }, { 105, 0 }, { 120, 0 }, { 135, 0 }, { 150, 0 }, { 165, 0 }, { 180, 0 }, { 202, 0 },
// Tab, Q, W, E, R, T, Y, U, I, O, P, [, ], ,
{ 7, 16 }, { 22, 16 }, { 37, 16 }, { 52, 16 }, { 67, 16 }, { 82, 16 }, { 97, 16 }, { 112, 16 }, { 127, 16 }, { 142, 16 }, { 157, 16 }, { 172, 16 }, { 187, 16 }, { 206, 16 },
{ 7, 16 }, { 22, 16 }, { 37, 16 }, { 52, 16 }, { 67, 16 }, { 82, 16 }, { 97, 16 }, { 112, 16 }, { 127, 16 }, { 142, 16 }, { 157, 16 }, { 172, 16 }, { 187, 16 }, { 206, 16 },
// Capslock, A, S, D, F, G, H, J, K, L, ;, ', Enter
{ 11, 32 }, { 26, 32 }, { 41, 32 }, { 56, 32 }, { 71, 32 }, { 86, 32 }, { 101, 32 }, { 116, 32 }, { 131, 32 }, { 146, 32 }, { 161, 32 }, { 176, 32 }, { 198, 32 },
{ 11, 32 }, { 26, 32 }, { 41, 32 }, { 56, 32 }, { 71, 32 }, { 86, 32 }, { 101, 32 }, { 116, 32 }, { 131, 32 }, { 146, 32 }, { 161, 32 }, { 176, 32 }, { 198, 32 },
// LShift, Z, X, C, V, B, N, M, ,, ., /, Shift, Up,
{ 18, 48 }, { 30, 48 }, { 45, 48 }, { 60, 48 }, { 75, 48 }, { 90, 48 }, { 105, 48 }, { 120, 48 }, { 135, 48 }, { 150, 48 }, { 165, 48 }, { 191, 48 }, { 210, 48 },
{ 18, 48 }, { 30, 48 }, { 45, 48 }, { 60, 48 }, { 75, 48 }, { 90, 48 }, { 105, 48 }, { 120, 48 }, { 135, 48 }, { 150, 48 }, { 165, 48 }, { 191, 48 }, { 210, 48 },
// Ctrl, GUI, Alt, Space, RAlt, FN, Left, Down, Right
{ 3, 64 }, { 22, 64 }, { 33, 64 }, { 101, 64 }, { 135, 64 }, { 153, 64 }, { 195, 64 }, { 210, 64 }, { 225, 64 }
{ 3, 64 }, { 22, 64 }, { 33, 64 }, { 101, 64 }, { 135, 64 }, { 153, 64 }, { 195, 64 }, { 210, 64 }, { 225, 64 },
// UNDERGLOW
{ 216, 32 }, { 180, 32 }, { 144, 32 }, { 108, 32 }, { 72, 32 }, { 36, 32 }
}, {
// Esc, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, -, =, Backspace
4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
// Tab, Q, W, E, R, T, Y, U, I, O, P, [, ], ,
1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
// Tab, Q, W, E, R, T, Y, U, I, O, P, [, ], ,
1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
// Capslock, A, S, D, F, G, H, J, K, L, ;, ', Enter
1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
// LShift, Z, X, C, V, B, N, M, ,, ., /, Shift, Up,
1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
// LShift, Z, X, C, V, B, N, M, ,, ., /, Shift, Up,
1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
// Ctrl, GUI, Alt, Space, RAlt, FN, Left, Down, Right
1, 1, 1, 4, 1, 1, 1, 1, 1
1, 1, 1, 4, 1, 1, 1, 1, 1,
// UNDERGLOW
2, 2, 2, 2, 2, 2
} };

View File

@@ -0,0 +1,41 @@
/* Copyright 2020 jbradforddillon
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include QMK_KEYBOARD_H
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = LAYOUT(
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC,
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS,
KC_GRV, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, RSFT_T(KC_SLSH), KC_UP, LT(1,KC_DEL),
KC_LCTL, KC_LALT, KC_LGUI, KC_SPC, KC_RGUI, MO(2), KC_LEFT, KC_DOWN, KC_RGHT
),
[1] = LAYOUT(
RESET, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______,
_______, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, RGB_SPI, RGB_SPD, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______
),
[2] = LAYOUT(
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_VOLU, KC_MUTE,
_______, _______, _______, _______, _______, _______, KC_MPRV, KC_VOLD, KC_MNXT
)
};

View File

@@ -0,0 +1,5 @@
I set this up the same way I set up my dz60 boards.
- Apple layout,
- Capslock replaced with grave/tilde,
- RShift doubles as forward slash, and
- Delete doubles as a layer shift.

View File

@@ -0,0 +1,55 @@
#include QMK_KEYBOARD_H
#include "mattly.h"
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// I apparently soldered in my switches on the wrong sides of the boards, so this is mirrored
[_BASE_MAC] = LAYOUT_split_3x6_3(
KC_SCLN, KC_P, O_CTL, I_ALT, U_GUI, KC_Y, KC_T, R_GUI, E_ALT, W_CTL, KC_Q, KC_BSPC,
KC_QUOT, MINSCTL, L_ALT, K_GUI, J_SFT, KC_H, KC_G, F_SFT, D_GUI, S_ALT, A_CTL, KC_CAPS,
KC_ENT, KC_SLSH, KC_DOT, KC_COMM, KC_M, KC_N, KC_B, KC_V, KC_C, KC_X, KC_Z, NAVLOCK,
DEL_WRP, BSP_SYM, SPC_SFT, SPC_SFT, TAB_NUM, ESC_HYP
),
[_OVER_WIN] = LAYOUT_split_3x6_3(
_______, _______, O_GUI, _______, U_CTL, _______, _______, R_CTL, _______, W_GUI, _______, _______,
_______, MINSGUI, _______, K_CTL, _______, _______, _______, _______, D_CTL, _______, A_GUI, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______
),
[_SYMBOL] = LAYOUT_split_3x6_3(
_______, XXXXXXX, KC_ASTR, KC_PLUS, KC_RABK, KC_LABK, KC_RBRC, KC_LBRC, KC_TILD, KC_GRV, KC_AMPR, _______,
_______, KC_UNDS, KC_AT, KC_EXLM, KC_COLN, KC_SCLN, KC_RPRN, KC_LPRN, KC_EQL, KC_PERC, KC_DLR, _______,
_______, KC_QUES, KC_BSLS, KC_PIPE, KC_DQUO, KC_QUOT, KC_RCBR, KC_LCBR, KC_HASH, KC_CIRC, KC_HASH, XXXXXXX,
_______, _______, _______, _______, _______, _______
),
[_NAVNUM] = LAYOUT_split_3x6_3(
KC_PLUS, KC_DOT, KC_P9, KC_P8, KC_P7, KC_DLR, KC_PGUP, M_FWORD, KC_UP, M_BWORD, M_NAVFW, M_NXWIN,
KC_MINS, KC_EQL, KC_P6, KC_P5, KC_P4, KC_PERC, KC_PGDN, KC_RGHT, KC_DOWN, KC_LEFT, M_NAVBK, M_PVWIN,
KC_ASTR, KC_COMM, KC_P3, KC_P2, KC_P1, KC_P0, M_NXTAB, KC_END, XXXXXXX, KC_HOME, M_PVTAB, _______,
KC_P0, _______, _______, _______, _______, _______
),
[_NAVNUM_WIN] = LAYOUT_split_3x6_3(
_______, _______, _______, _______, _______, _______, _______, W_FWORD, _______, W_BWORD, W_NAVFW, W_NXWIN,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, W_NAVBK, W_PVWIN,
_______, _______, _______, _______, _______, _______, W_NXTAB, _______, _______, _______, W_PVTAB, _______,
_______, _______, _______, _______, _______, _______
),
[_FUNCT] = LAYOUT_split_3x6_3(
KC_F15, KC_F12, KC_F9, KC_F8, KC_F7, KC_VOLU, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RESET,
KC_F14, KC_F11, KC_F6, KC_F5, KC_F4, KC_MUTE, XXXXXXX, TOG_WIN, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
KC_F13, KC_F10, KC_F3, KC_F2, KC_F1, KC_VOLD, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
_______, _______, _______, _______, _______, _______
),
[_FUNCT_WIN] = LAYOUT_split_3x6_3(
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______
),
};

View File

@@ -0,0 +1 @@
MOUSEKEY_ENABLE = no

View File

@@ -5,15 +5,17 @@
Chavdai40 is very simple decoratable 40% keyboard
* Keyboard Maintainer: [t-miyajima](https://github.com/dvorak55)
* Hardware Supported: Chavdai40 PCB rev1
* Hardware Availability: not yet available.
* Hardware Supported: Chavdai40 PCB rev1,rev2
* Hardware Availability: [yushakobo](https://yushakobo.jp/shop/consign_chavdai40/)
Make example for this keyboard (after setting up your build environment):
make chavdai40:default
make chavdai40/rev1:default
make chavdai40/rev2:default
Flashing example for this keyboard:
make chavdai40:default:flash
make chavdai40/rev1:default:flash
make chavdai40/rev2:default:flash
See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).

View File

@@ -13,4 +13,4 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include "chavdai40.h"
#include "rev1.h"

View File

@@ -17,10 +17,10 @@
#pragma once
#define XXX KC_NO
#include "quantum.h"
#define XXX KC_NO
// This a shortcut to help you visually see your layout.
#define LAYOUT_44key( \

View File

@@ -0,0 +1,74 @@
/* Copyright 2020 t-miyajima
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#pragma once
#include "config_common.h"
/* USB Device descriptor parameter */
#define VENDOR_ID 0x16D0
#define PRODUCT_ID 0x0F95
#define DEVICE_VER 0x0002
#define MANUFACTURER t-miyajima
#define PRODUCT Chavdai40 rev2
/* usb power settings */
#define USB_MAX_POWER_CONSUMPTION 100
/* key matrix size */
#define MATRIX_ROWS 4
#define MATRIX_COLS 13
#define MATRIX_ROW_PINS { A0, A15, B5, B6 }
#define MATRIX_COL_PINS { B7, B4, B3, A8, B1, B0, A7, A6, A5, A4, A3, A2, A1 }
#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
#define DEBOUNCE 5
/* define if matrix has ghost (lacks anti-ghosting diodes) */
//#define MATRIX_HAS_GHOST
/* If defined, GRAVE_ESC will always act as ESC when CTRL is held.
* This is userful for the Windows task manager shortcut (ctrl+shift+esc).
*/
// #define GRAVE_ESC_CTRL_OVERRIDE
/*
* Force NKRO
*
* Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved
* state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the
* makefile for this to work.)
*
* If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N)
* until the next keyboard reset.
*
* NKRO may prevent your keystrokes from being detected in the BIOS, but it is
* fully operational during normal computer usage.
*
* For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N)
* or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by
* bootmagic, NKRO mode will always be enabled until it is toggled again during a
* power-up.
*
*/
//#define FORCE_NKRO

View File

@@ -0,0 +1,16 @@
/* Copyright 2020 t-miyajima
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include "rev2.h"

View File

@@ -0,0 +1,49 @@
/* Copyright 2020 t-miyajima
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#pragma once
#include "quantum.h"
#define XXX KC_NO
// This a shortcut to help you visually see your layout.
#define LAYOUT_44key( \
k01, k02, k03, k04, k05, k06, k07, k08, k09, k10, k11, k12, k13, \
k14 , k15, k16, k17, k18, k19, k20, k21, k22, k23, k24, k25 , \
k26 , k27, k28, k29, k30, k31, k32, k33, k34, k35, k36, k37, \
k38, k39, k40, k41, k42, k43, k44 \
) { \
{ k01, k02, k03, k04, k05, k06, k07, k08, k09, k10, k11, k12, k13 }, \
{ k14, k15, k16, k17, k18, k19, k20, k21, k22, k23, k24, k25, XXX }, \
{ k26, k27, k28, k29, k30, k31, k32, k33, k34, k35, k36, k37, XXX }, \
{ k38, k39, XXX, k40, XXX, k41, XXX, XXX, k42, k43, k44, XXX, XXX } \
}
#define LAYOUT_42key( \
k01, k02, k03, k04, k05, k06, k07, k08, k09, k10, k11, k12, k13, \
k14 , k15, k16, k17, k18, k19, k20, k21, k22, k23, k24, k25 , \
k26 , k27, k28, k29, k30, k31, k32, k33, k34, k35, k36, k37, \
k38, k39, k41, k43, k44 \
) { \
{ k01, k02, k03, k04, k05, k06, k07, k08, k09, k10, k11, k12, k13 }, \
{ k14, k15, k16, k17, k18, k19, k20, k21, k22, k23, k24, k25, XXX }, \
{ k26, k27, k28, k29, k30, k31, k32, k33, k34, k35, k36, k37, XXX }, \
{ k38, k39, XXX, XXX, XXX, k41, XXX, XXX, XXX, k43, k44, XXX, XXX } \
}

View File

@@ -0,0 +1,18 @@
# MCU name
MCU = STM32F042
# Build Options
# change yes to no to disable
BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
NKRO_ENABLE = no # USB Nkey Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
BLUETOOTH_ENABLE = no # Enable Bluetooth
AUDIO_ENABLE = no # Audio output

View File

@@ -0,0 +1,25 @@
/* Copyright 2019-2020 DMQ Design
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#pragma once
#define RGBLIGHT_ANIMATIONS
#define RGBLIGHT_HUE_STEP 8
// Use one or the other, determines the orientation of
// the OLED display
// #define RIGHT_HAND
#define LEFT_HAND

View File

@@ -0,0 +1,247 @@
/* Copyright 2019-2020 DMQ Design
*
* 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 {
_NUMPAD,
_RGB,
_MACRO
};
enum custom_keycodes {
HELLO_WORLD = SAFE_RANGE,
};
//The below layers are intentionally empty in order to give a good starting point for how to configure multiple layers.
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_NUMPAD] = LAYOUT(/* Base */
KC_7, KC_8, KC_9, TO(_NUMPAD),
KC_4, KC_5, KC_6, TO(_RGB),
KC_1, KC_2, KC_3, TO(_MACRO),
KC_0, KC_DOT, KC_ENTER
),
[_RGB] = LAYOUT(/* Base */
RGB_HUI, RGB_SAI, RGB_VAI, KC_TRNS,
RGB_HUD, RGB_SAD, RGB_VAD, KC_TRNS,
KC_NO, KC_NO, KC_NO, KC_TRNS,
RGB_RMOD, RGB_TOG, RGB_MOD
),
[_MACRO] = LAYOUT(/* Base */
HELLO_WORLD, KC_NO, KC_NO, KC_TRNS,
KC_NO, KC_NO, KC_NO, KC_TRNS,
KC_NO, KC_NO, KC_NO, KC_TRNS,
KC_NO, KC_NO, KC_NO
)
};
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
switch (keycode) {
case HELLO_WORLD:
if (record->event.pressed) {
SEND_STRING("Hello, world!");
}
break;
}
return true;
};
void encoder_update_user(uint8_t index, bool clockwise) {
if (index == 0) { /* First encoder */
switch (get_highest_layer(layer_state)) { //break each encoder update into a switch statement for the current layer
case _NUMPAD:
if (clockwise) {
tap_code(KC_DOWN);
} else {
tap_code(KC_UP);
}
break;
case _RGB:
if (clockwise) {
rgblight_increase_hue();
} else {
rgblight_decrease_hue();
}
break;
case _MACRO:
if (clockwise) {
break;
} else {
break;
}
break;
}
} else if (index == 1) { /* Second encoder */
switch (get_highest_layer(layer_state)) {
case _NUMPAD:
if (clockwise) {
tap_code(KC_PGDN);
} else {
tap_code(KC_PGUP);
}
break;
case _RGB:
if (clockwise) {
rgblight_increase_sat();
} else {
rgblight_decrease_sat();
}
break;
case _MACRO:
if (clockwise) {
break;
} else {
break;
}
break;
}
} else if (index == 2) { /* Third encoder */
switch (get_highest_layer(layer_state)) {
case _NUMPAD:
if (clockwise) {
tap_code(KC_VOLU);
} else {
tap_code(KC_VOLD);
}
break;
case _RGB:
if (clockwise) {
rgblight_increase_val();
} else {
rgblight_decrease_val();
}
break;
case _MACRO:
if (clockwise) {
break;
} else {
break;
}
break;
}
}
}
layer_state_t layer_state_set_user(layer_state_t state) { //This will run every time the layer is updated
switch (get_highest_layer(state)) {
case _NUMPAD:
setrgb(RGB_WHITE, &led[0]); //Set the top LED to white for the bottom layer
setrgb(0, 0, 0, &led[1]);
setrgb(0, 0, 0, &led[2]);
break;
case _RGB:
setrgb(0, 0, 0, &led[0]); //Set the middle LED to white for the middle layer
setrgb(RGB_WHITE, &led[1]);
setrgb(0, 0, 0, &led[2]);
break;
case _MACRO:
setrgb(0, 0, 0, &led[0]);
setrgb(0, 0, 0, &led[1]);
setrgb(RGB_WHITE, &led[2]); //Set the bottom LED to white for the top layer
break;
}
rgblight_set();
return state;
}
#ifdef OLED_DRIVER_ENABLE
static const char *ANIMATION_NAMES[] = {
"unknown",
"static",
"breathing I",
"breathing II",
"breathing III",
"breathing IV",
"rainbow mood I",
"rainbow mood II",
"rainbow mood III",
"rainbow swirl I",
"rainbow swirl II",
"rainbow swirl III",
"rainbow swirl IV",
"rainbow swirl V",
"rainbow swirl VI",
"snake I",
"snake II",
"snake III",
"snake IV",
"snake V",
"snake VI",
"knight I",
"knight II",
"knight III",
"christmas",
"static gradient I",
"static gradient II",
"static gradient III",
"static gradient IV",
"static gradient V",
"static gradient VI",
"static gradient VII",
"static gradient VIII",
"static gradient IX",
"static gradient X",
"rgb test",
"alternating",
"twinkle I",
"twinkle II",
"twinkle III",
"twinkle IV",
"twinkle V",
"twinkle VI"
};
void rgblight_get_mode_name(uint8_t mode, size_t bufsize, char *buf) {
snprintf(buf, bufsize, "%-25s", ANIMATION_NAMES[mode]);
}
oled_rotation_t oled_init_user(oled_rotation_t rotation) {
#ifdef LEFT_HAND
return OLED_ROTATION_180;
#else
return OLED_ROTATION_0;
#endif
}
void oled_task_user(void) {
// Host Keyboard Layer Status
oled_write_P(PSTR("Layer: "), false);
switch (get_highest_layer(layer_state)) {
case _NUMPAD:
oled_write_P(PSTR("Numpad\n"), false);
break;
case _RGB:
oled_write_P(PSTR("RGB\n"), false);
break;
case _MACRO:
oled_write_P(PSTR("Macro\n"), false);
break;
default:
// Or use the write_ln shortcut over adding '\n' to the end of your string
oled_write_ln_P(PSTR("Undefined"), false);
}
static char rgb_mode_name[30];
rgblight_get_mode_name(rgblight_get_mode(), sizeof(rgb_mode_name), rgb_mode_name);
oled_write_P(PSTR("Mode: "), false);
oled_write_ln(rgb_mode_name, false);
}
#endif

View File

@@ -0,0 +1,7 @@
# Keymap for Spin
* Encoder button push changes layers
* First layer is a number pad
* Second layer is RGB control layer
* Third layer is macro layer
* OLED support

View File

@@ -0,0 +1,3 @@
OLED_DRIVER_ENABLE = yes
MOUSEKEY_ENABLE = no
MIDI_ENABLE = no

View File

@@ -8,7 +8,6 @@
#define DEVICE_VER 0x0001
#define MANUFACTURER KBDFans
#define PRODUCT DZ60
#define DESCRIPTION DZ60 Keyboard
/* key matrix size */
#define MATRIX_ROWS 5

View File

@@ -1,63 +1,29 @@
/*
* Based on Sendy YK's 60% ANSI Arrow Layout and Keymap
* https://github.com/qmk/qmk_firmware/blob/master/layouts/default/60_ansi_arrow/info.json
* https://github.com/qmk/qmk_firmware/blob/master/layouts/community/60_ansi_arrow/mrsendyyk/keymap.c
*
* https://github.com/mrsendyyk
*/
#include QMK_KEYBOARD_H
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/*
* Default Layer [0]
* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐
* │Esc│1 │2 │3 │4 │5 │6 │7 │8 │9 │0 │- │= │Bspc │
* ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤
* │Tab │Q │W │E │R │T │Y │U │I │O │P │[ │] │\ │
* ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤
* │Caps L│A │S │D │F │G │H │J │K │L │; │' │Enter │
* ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴┬───┬───┤
* │Shift │Z │X │C │V │B │N │M │, │. │Shift │↑ │/ │
* ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴──┬┴──┬───┼───┼───┤
* │Ctl │OS │Alt │ Space │Alt│Ctl│← │↓ │→ │
* └────┴────┴────┴────────────────────────┴───┴───┴───┴───┴───┘
*/
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* Default Layer [0] */
[0] = LAYOUT_60_ansi_arrow(KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC,
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS,
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_RSFT, KC_UP, KC_SLSH,
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, LT(2, KC_RALT), LT(1, KC_RCTL), KC_LEFT, KC_DOWN, KC_RGHT
),
/*
* Fn Layer [1]
* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐
* │` │F1 │F2 │F3 │F4 │F5 │F6 │F7 │F8 │F9 │F10│F11│F12│Delete │
* ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤
* │Bri+ │ │ │End│Rst│ │ │ │Ins│ │P S│ │ │Eject│
* ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤
* │Bri- │ │S L│ │ │ │Hm │ │ │ │ │ │Mute │
* ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴┬───┬───┤
* │Vol+ │ │ │Cal│ │ │N L│Ml │ │ │Pause │P U│ │
* ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴──┬┴──┬───┼───┼───┤
* │Vol-│Rwd │F FD│ Play │Stp│ │Prv│P D│Nxt│
* └────┴────┴────┴────────────────────────┴───┴───┴───┴───┴───┘
*/
/* Fn Layer [1] */
[1] = LAYOUT_60_ansi_arrow(KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL,
KC_BRIU, KC_TRNS, KC_TRNS, KC_END, RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_INS, KC_TRNS, KC_PSCR, KC_TRNS, KC_TRNS, KC_EJCT,
KC_BRID, KC_TRNS, KC_SLCK, KC_TRNS, KC_TRNS, KC_TRNS, KC_HOME, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MUTE,
KC_VOLU, KC_TRNS, KC_TRNS, KC_CALC, KC_TRNS, KC_TRNS, KC_NLCK, KC_MAIL, KC_TRNS, KC_TRNS, KC_PAUS, KC_PGUP, KC_TRNS,
KC_VOLD, KC_MRWD, KC_MFFD, KC_MPLY, KC_MSTP, KC_TRNS, KC_MPRV, KC_PGDN, KC_MNXT
),
/*
* Fn Layer [2]
* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐
* │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
* ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤
* │ │R T│R M│Hu+│Hu-│Sa+│Sa-│Br+│Br-│ │ │ │ │ │
* ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤
* │ │ │ │ │ │ │ │ │ │ │ │ │ │
* ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴┬───┬───┤
* │ │ │ │ │BL-│B T│BL+│B C│ │ │ │ │ │
* ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴──┬┴──┬───┼───┼───┤
* │ │ │ │ │ │ │ │ │ │
* └────┴────┴────┴────────────────────────┴───┴───┴───┴───┴───┘
*/
/* Fn Layer [2] */
[2] = LAYOUT_60_ansi_arrow(KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
@@ -71,7 +37,7 @@ void keyboard_post_init_user(void) {
rgblight_sethsv_noeeprom(0, 0, 0);
}
/* RGB Lighting/LED/Underglow as Caps Lock, Num Lock, Scroll Lock, and Layer indicator */
/* RGB Lighting/LED/Underglow as Caps Lock, Num Lock, Scroll Lock, and Layer Indicator */
void update_led(void) {
/* Num Lock Indicator */
if (host_keyboard_led_state().num_lock) {
@@ -79,7 +45,7 @@ void keyboard_post_init_user(void) {
}
/* Scroll Lock Indicator */
if (host_keyboard_led_state().scroll_lock) {
rgblight_setrgb(0, 100, 255);
rgblight_setrgb(241, 190, 72);
}
}

View File

@@ -1,56 +1,85 @@
# [Sendy YK](https://mr.sendyyk.com)'s Keymap
`LAYOUT_60_ansi_arrow` with RGB Lighting/LED/Underglow as Caps Lock, Num Lock, Scroll Lock, and Layer indicator.
# Sendy YK's 60% ANSI Arrow Layout and Keymap
This is Sendy YK's [60% ANSI Arrow Layout](https://github.com/qmk/qmk_firmware/blob/master/layouts/default/60_ansi_arrow/info.json) and [Keymap (with RGB Lighting/LED/Underglow as Caps Lock, Num Lock, Scroll Lock, and Layer Indicator)](https://github.com/qmk/qmk_firmware/blob/master/layouts/community/60_ansi_arrow/mrsendyyk/keymap.c).
## 60% ANSI Arrow Layout
![LAYOUT_60_ansi_arrow](https://raw.githubusercontent.com/mrsendyyk/my_qmk/master/kbdfans_tofu_60_keyboard/assets/dz60_layout_60_ansi_arrow.png)
## Keymap
### Default Layer [0]
```
┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐
│Esc│1 │2 │3 │4 │5 │6 │7 │8 │9 │0 │- │= │Bspc │
├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤
│Tab │Q │W │E │R │T │Y │U │I │O │P │[ │] │\ │
├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤
│Caps L│A │S │D │F │G │H │J │K │L │; │' │Enter │
├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴┬───┬───┤
│Shift │Z │X │C │V │B │N │M │, │. │Shift │↑ │/ │
├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴──┬┴──┬───┼───┼───┤
│Ctl │OS │Alt │ Space │Alt│Ctl│← │↓ │→ │
└────┴────┴────┴────────────────────────┴───┴───┴───┴───┴───┘
```
![Default Layer [0]](https://raw.githubusercontent.com/mrsendyyk/my_qmk/master/kbdfans_tofu_60_keyboard/assets/dz60_mrsendyyk_0.png)
### Fn Layer [1]
Press and hold *right* **Ctl** key.
```
┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐
│` │F1 │F2 │F3 │F4 │F5 │F6 │F7 │F8 │F9 │F10│F11│F12│Delete │
├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤
│Bri+ │ │ │End│Rst│ │ │ │Ins│ │P S│ │ │Eject│
├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤
│Bri- │ │S L│ │ │ │Hm │ │ │ │ │ │Mute │
├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴┬───┬───┤
│Vol+ │ │ │Cal│ │ │N L│Ml │ │ │Pause │P U│ │
├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴──┬┴──┬───┼───┼───┤
│Vol-│Rwd │F FD│ Play │Stp│ │Prv│P D│Nxt│
└────┴────┴────┴────────────────────────┴───┴───┴───┴───┴───┘
```
Press and hold *right* **Ctrl** key.
![Fn Layer [1]](https://raw.githubusercontent.com/mrsendyyk/my_qmk/master/kbdfans_tofu_60_keyboard/assets/dz60_mrsendyyk_1.png)
### Fn Layer [2]
Press and hold *right* **Alt** key.
![Fn Layer [2]](https://raw.githubusercontent.com/mrsendyyk/my_qmk/master/kbdfans_tofu_60_keyboard/assets/dz60_mrsendyyk_2.png)
### RGB Lighting/LED/Underglow as Caps Lock, Num Lock, Scroll Lock, and Layer Indicator
#### Caps Lock Indicator
```c
/* Caps Lock Indicator */
if (IS_LED_ON(usb_led, USB_LED_CAPS_LOCK)) {
writePinLow(B2);
rgblight_setrgb(100, 255, 100);
}
```
┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │
├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤
│ │R T│R M│Hu+│Hu-│Sa+│Sa-│Br+│Br-│ │ │ │ │ │
├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤
│ │ │ │ │ │ │ │ │ │ │ │ │
├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴┬───┬───┤
│ │ │ │BL-│B T│BL+│B C│ │ │ │ │ │
├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴──┬┴──┬───┼───┼───┤
│ │ │ │ │ │ │ │ │ │
└────┴────┴────┴────────────────────────┴───┴───┴───┴───┴───┘
#### Num Lock Indicator
```c
/* Num Lock Indicator */
if (host_keyboard_led_state().num_lock) {
rgblight_setrgb(225, 8, 0);
}
```
#### Scroll Lock Indicator
```c
/* Scroll Lock Indicator */
if (host_keyboard_led_state().scroll_lock) {
rgblight_setrgb(241, 190, 72);
}
```
#### Layer Indicator
```c
/* Layer Indicator */
else {
switch (get_highest_layer(layer_state)) {
/* Fn Layer [1] Indicator */
case 1:
rgblight_setrgb(255, 110, 0);
break;
/* Fn Layer [2] Indicator */
case 2:
rgblight_setrgb(255, 110, 0);
break;
/* Default Layer [0] Indicator */
default:
rgblight_setrgb(0, 0, 0);
break;
}
update_led();
}
```
## Build The Firmware
You will need to build the firmware. To do so go to your terminal window and run the compile command:
qmk compile -kb dz60 -km mrsendyyk
See [The Complete Newbs Guide To QMK](https://docs.qmk.fm/#/newbs).

View File

@@ -1,12 +1,14 @@
# DZ60
# DZ60 60% Mechanical Keyboard PCB
![dz60](https://cdn.shopify.com/s/files/1/1473/3902/files/1_6525343b-ee62-47e8-882a-05e316136a3f.jpg?v=1501657073)
![DZ60](https://cdn.shopify.com/s/files/1/1473/3902/products/c_1.jpg)
A customizable 60% keyboard.
## A Customizable 60% Mechanical Keyboard PCB
![A Customizable 60% Mechanical Keyboard PCB](https://cdn.shopify.com/s/files/1/1473/3902/files/1_03_abb48769-9486-44bd-a761-7cd39d7e1bda.jpg)
* Keyboard Maintainer: QMK Community
* Hardware Supported: DZ60
* Hardware Availability: [KBDfans](https://kbdfans.myshopify.com/collections/pcb/products/dz60-60-pcb?variant=40971616717)
* Hardware Supported: DZ60 60% Mechanical Keyboard PCB
* Hardware Availability: [KBDfans](https://kbdfans.com/collections/60/products/dz60-60-pcb)
Make example for this keyboard (after setting up your build environment):

View File

@@ -21,11 +21,8 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
/* USB Device descriptor parameter */
#define VENDOR_ID 0x4558 // EX
#define PRODUCT_ID 0xE851 // E8.5 Version 1
#define DEVICE_VER 0x0001
#define MANUFACTURER Exclusive
#define PRODUCT E8.5 Hotswap PCB
#define DESCRIPTION A custom TKL keyboard
/* key matrix size */
#define MATRIX_ROWS 11

View File

@@ -0,0 +1,18 @@
/* Copyright 2020 MechMerlin
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define PRODUCT_ID 0xE851 // E8.5 Hotswap
#define PRODUCT E8.5 Hotswap PCB

View File

@@ -14,4 +14,4 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include "e85.h"
#include "hotswap.h"

View File

@@ -0,0 +1,63 @@
/* Copyright 2020 MechMerlin
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#pragma once
#include "quantum.h"
#define ___ KC_NO
#define LAYOUT_ansi_standard( \
K00, K01, K02, K03, K04, K05, K06, K07, K08, K68, K67, K65, K64, K63, K66, K62, K61, \
K10, K11, K12, K13, K14, K15, K16, K17, K18, K78, K70, K77, K75, K73, K76, K72, K71, \
K20, K21, K22, K23, K24, K25, K26, K27, K28, K88, K87, K85, K84, K83, K86, K82, K81, \
K30, K31, K32, K33, K34, K35, K36, K37, K38, K98, K97, K95, K93, \
K40, K42, K43, K44, K45, K46, K47, K48, KA8, KA7, KA5, KA4, K92, \
K50, K51, K52, K56, K58, K57, K54, K53, KA6, KA2, KA1 \
) { \
{ K00, K01, K02, K03, K04, K05, K06, K07, K08 }, \
{ K10, K11, K12, K13, K14, K15, K16, K17, K18 }, \
{ K20, K21, K22, K23, K24, K25, K26, K27, K28 }, \
{ K30, K31, K32, K33, K34, K35, K36, K37, K38 }, \
{ K40, KC_NO, K42, K43, K44, K45, K46, K47, K48 }, \
{ K50, K51, K52, K53, K54, KC_NO, K56, K57, K58 }, \
{ KC_NO, K61, K62, K63, K64, K65, K66, K67, K68 }, \
{ K70, K71, K72, K73, KC_NO, K75, K76, K77, K78 }, \
{ KC_NO, K81, K82, K83, K84, K85, K86, K87, K88 }, \
{ KC_NO, KC_NO, K92, K93, KC_NO, K95, KC_NO, K97, K98 }, \
{ KC_NO, KA1, KA2, KC_NO, KA4, KA5, KA6, KA7, KA8 }, \
}
#define LAYOUT_ansi_tsangan( \
K00, K01, K02, K03, K04, K05, K06, K07, K08, K68, K67, K65, K64, K63, K66, K62, K61, \
K10, K11, K12, K13, K14, K15, K16, K17, K18, K78, K70, K77, K75, K73, K76, K72, K71, \
K20, K21, K22, K23, K24, K25, K26, K27, K28, K88, K87, K85, K84, K83, K86, K82, K81, \
K30, K31, K32, K33, K34, K35, K36, K37, K38, K98, K97, K95, K93, \
K40, K42, K43, K44, K45, K46, K47, K48, KA8, KA7, KA5, KA4, K92, \
K50, K51, K52, K56, K57, K54, K53, KA6, KA2, KA1 \
) { \
{ K00, K01, K02, K03, K04, K05, K06, K07, K08 }, \
{ K10, K11, K12, K13, K14, K15, K16, K17, K18 }, \
{ K20, K21, K22, K23, K24, K25, K26, K27, K28 }, \
{ K30, K31, K32, K33, K34, K35, K36, K37, K38 }, \
{ K40, KC_NO, K42, K43, K44, K45, K46, K47, K48 }, \
{ K50, K51, K52, K53, K54, KC_NO, K56, K57, KC_NO }, \
{ KC_NO, K61, K62, K63, K64, K65, K66, K67, K68 }, \
{ K70, K71, K72, K73, KC_NO, K75, K76, K77, K78 }, \
{ KC_NO, K81, K82, K83, K84, K85, K86, K87, K88 }, \
{ KC_NO, KC_NO, K92, K93, KC_NO, K95, KC_NO, K97, K98 }, \
{ KC_NO, KA1, KA2, KC_NO, KA4, KA5, KA6, KA7, KA8 }, \
}

View File

@@ -0,0 +1,193 @@
{
"keyboard_name": "Exclusive E8.5 TKL",
"url": "",
"maintainer": "qmk",
"width": 18.25,
"height": 6.5,
"layouts": {
"LAYOUT_ansi_standard": {
"layout": [
{"label":"K00 (E6,D0)", "x":0, "y":0},
{"label":"K01 (E6,D1)", "x":1.25, "y":0},
{"label":"K02 (E6,D2)", "x":2.25, "y":0},
{"label":"K03 (E6,D3)", "x":3.25, "y":0},
{"label":"K04 (E6,D5)", "x":4.25, "y":0},
{"label":"K05 (E6,D4)", "x":5.5, "y":0},
{"label":"K06 (E6,D6)", "x":6.5, "y":0},
{"label":"K07 (E6,D7)", "x":7.5, "y":0},
{"label":"K08 (E6,B4)", "x":8.5, "y":0},
{"label":"K68 (F7,B4)", "x":9.75, "y":0},
{"label":"K67 (F7,D7)", "x":10.75, "y":0},
{"label":"K65 (F7,D4)", "x":11.75, "y":0},
{"label":"K64 (F7,D5)", "x":12.75, "y":0},
{"label":"K63 (F7,D3)", "x":14, "y":0},
{"label":"K66 (F7,D6)", "x":15.25, "y":0},
{"label":"K62 (F7,D2)", "x":16.25, "y":0},
{"label":"K61 (F7,D1)", "x":17.25, "y":0},
{"label":"K10 (B0,D0)", "x":0, "y":1.5},
{"label":"K11 (B0,D1)", "x":1, "y":1.5},
{"label":"K12 (B0,D2)", "x":2, "y":1.5},
{"label":"K13 (B0,D3)", "x":3, "y":1.5},
{"label":"K14 (B0,D5)", "x":4, "y":1.5},
{"label":"K15 (B0,D4)", "x":5, "y":1.5},
{"label":"K16 (B0,D6)", "x":6, "y":1.5},
{"label":"K17 (B0,D7)", "x":7, "y":1.5},
{"label":"K18 (B0,B4)", "x":8, "y":1.5},
{"label":"K78 (F6,B4)", "x":9, "y":1.5},
{"label":"K70 (F6,D0)", "x":10, "y":1.5},
{"label":"K77 (F6,D7)", "x":11, "y":1.5},
{"label":"K75 (F6,D4)", "x":12, "y":1.5},
{"label":"K73 (F6,D3)", "x":13, "y":1.5, "w":2},
{"label":"K76 (F6,D6)", "x":15.25, "y":1.5},
{"label":"K72 (F6,D2)", "x":16.25, "y":1.5},
{"label":"K71 (F6,D1)", "x":17.25, "y":1.5},
{"label":"K20 (B1,D0)", "x":0, "y":2.5, "w":1.5},
{"label":"K21 (B1,D1)", "x":1.5, "y":2.5},
{"label":"K22 (B1,D2)", "x":2.5, "y":2.5},
{"label":"K23 (B1,D3)", "x":3.5, "y":2.5},
{"label":"K24 (B1,D5)", "x":4.5, "y":2.5},
{"label":"K25 (B1,D4)", "x":5.5, "y":2.5},
{"label":"K26 (B1,D6)", "x":6.5, "y":2.5},
{"label":"K27 (B1,D7)", "x":7.5, "y":2.5},
{"label":"K28 (B1,B4)", "x":8.5, "y":2.5},
{"label":"K88 (F5,B4)", "x":9.5, "y":2.5},
{"label":"K87 (F5,D7)", "x":10.5, "y":2.5},
{"label":"K85 (F5,D4)", "x":11.5, "y":2.5},
{"label":"K84 (F5,D5)", "x":12.5, "y":2.5},
{"label":"K83 (F5,D3)", "x":13.5, "y":2.5, "w":1.5},
{"label":"K86 (F5,D6)", "x":15.25, "y":2.5},
{"label":"K82 (F5,D2)", "x":16.25, "y":2.5},
{"label":"K81 (F5,D1)", "x":17.25, "y":2.5},
{"label":"K30 (B2,D0)", "x":0, "y":3.5, "w":1.75},
{"label":"K31 (B2,D1)", "x":1.75, "y":3.5},
{"label":"K32 (B2,D2)", "x":2.75, "y":3.5},
{"label":"K33 (B2,D3)", "x":3.75, "y":3.5},
{"label":"K34 (B2,D5)", "x":4.75, "y":3.5},
{"label":"K35 (B2,D4)", "x":5.75, "y":3.5},
{"label":"K36 (B2,D6)", "x":6.75, "y":3.5},
{"label":"K37 (B2,D7)", "x":7.75, "y":3.5},
{"label":"K38 (B2,B4)", "x":8.75, "y":3.5},
{"label":"K98 (F4,B4)", "x":9.75, "y":3.5},
{"label":"K97 (F4,D7)", "x":10.75, "y":3.5},
{"label":"K95 (F4,D4)", "x":11.75, "y":3.5},
{"label":"K93 (F4,D3)", "x":12.75, "y":3.5, "w":2.25},
{"label":"K40 (B3,D0)", "x":0, "y":4.5, "w":2.25},
{"label":"K42 (B3,D2)", "x":2.25, "y":4.5},
{"label":"K43 (B3,D3)", "x":3.25, "y":4.5},
{"label":"K44 (B3,D5)", "x":4.25, "y":4.5},
{"label":"K45 (B3,D4)", "x":5.25, "y":4.5},
{"label":"K46 (B3,D6)", "x":6.25, "y":4.5},
{"label":"K47 (B3,D7)", "x":7.25, "y":4.5},
{"label":"K48 (B3,B4)", "x":8.25, "y":4.5},
{"label":"KA8 (F1,B4)", "x":9.25, "y":4.5},
{"label":"KA7 (F1,D7)", "x":10.25, "y":4.5},
{"label":"KA5 (F1,D4)", "x":11.25, "y":4.5},
{"label":"KA4 (F1,D5)", "x":12.25, "y":4.5, "w":2.75},
{"label":"K92 (F4,D2)", "x":16.25, "y":4.5},
{"label":"K50 (B7,D0)", "x":0, "y":5.5, "w":1.25},
{"label":"K51 (B7,D1)", "x":1.25, "y":5.5, "w":1.25},
{"label":"K52 (B7,D2)", "x":2.5, "y":5.5, "w":1.25},
{"label":"K56 (B7,D6)", "x":3.75, "y":5.5, "w":6.25},
{"label":"K58 (B7,B4)", "x":10, "y":5.5, "w":1.25},
{"label":"K57 (B7,D7)", "x":11.25, "y":5.5, "w":1.25},
{"label":"K54 (B7,D5)", "x":12.5, "y":5.5, "w":1.25},
{"label":"K53 (B7,D3)", "x":13.75, "y":5.5, "w":1.25},
{"label":"KA6 (F1,D6)", "x":15.25, "y":5.5},
{"label":"KA2 (F1,D2)", "x":16.25, "y":5.5},
{"label":"KA1 (F1,D1)", "x":17.25, "y":5.5}
]
},
"LAYOUT_ansi_tsangan": {
"layout": [
{"label":"K00 (E6,D0)", "x":0, "y":0},
{"label":"K01 (E6,D1)", "x":1.25, "y":0},
{"label":"K02 (E6,D2)", "x":2.25, "y":0},
{"label":"K03 (E6,D3)", "x":3.25, "y":0},
{"label":"K04 (E6,D5)", "x":4.25, "y":0},
{"label":"K05 (E6,D4)", "x":5.5, "y":0},
{"label":"K06 (E6,D6)", "x":6.5, "y":0},
{"label":"K07 (E6,D7)", "x":7.5, "y":0},
{"label":"K08 (E6,B4)", "x":8.5, "y":0},
{"label":"K68 (F7,B4)", "x":9.75, "y":0},
{"label":"K67 (F7,D7)", "x":10.75, "y":0},
{"label":"K65 (F7,D4)", "x":11.75, "y":0},
{"label":"K64 (F7,D5)", "x":12.75, "y":0},
{"label":"K63 (F7,D3)", "x":14, "y":0},
{"label":"K66 (F7,D6)", "x":15.25, "y":0},
{"label":"K62 (F7,D2)", "x":16.25, "y":0},
{"label":"K61 (F7,D1)", "x":17.25, "y":0},
{"label":"K10 (B0,D0)", "x":0, "y":1.5},
{"label":"K11 (B0,D1)", "x":1, "y":1.5},
{"label":"K12 (B0,D2)", "x":2, "y":1.5},
{"label":"K13 (B0,D3)", "x":3, "y":1.5},
{"label":"K14 (B0,D5)", "x":4, "y":1.5},
{"label":"K15 (B0,D4)", "x":5, "y":1.5},
{"label":"K16 (B0,D6)", "x":6, "y":1.5},
{"label":"K17 (B0,D7)", "x":7, "y":1.5},
{"label":"K18 (B0,B4)", "x":8, "y":1.5},
{"label":"K78 (F6,B4)", "x":9, "y":1.5},
{"label":"K70 (F6,D0)", "x":10, "y":1.5},
{"label":"K77 (F6,D7)", "x":11, "y":1.5},
{"label":"K75 (F6,D4)", "x":12, "y":1.5},
{"label":"K73 (F6,D3)", "x":13, "y":1.5, "w":2},
{"label":"K76 (F6,D6)", "x":15.25, "y":1.5},
{"label":"K72 (F6,D2)", "x":16.25, "y":1.5},
{"label":"K71 (F6,D1)", "x":17.25, "y":1.5},
{"label":"K20 (B1,D0)", "x":0, "y":2.5, "w":1.5},
{"label":"K21 (B1,D1)", "x":1.5, "y":2.5},
{"label":"K22 (B1,D2)", "x":2.5, "y":2.5},
{"label":"K23 (B1,D3)", "x":3.5, "y":2.5},
{"label":"K24 (B1,D5)", "x":4.5, "y":2.5},
{"label":"K25 (B1,D4)", "x":5.5, "y":2.5},
{"label":"K26 (B1,D6)", "x":6.5, "y":2.5},
{"label":"K27 (B1,D7)", "x":7.5, "y":2.5},
{"label":"K28 (B1,B4)", "x":8.5, "y":2.5},
{"label":"K88 (F5,B4)", "x":9.5, "y":2.5},
{"label":"K87 (F5,D7)", "x":10.5, "y":2.5},
{"label":"K85 (F5,D4)", "x":11.5, "y":2.5},
{"label":"K84 (F5,D5)", "x":12.5, "y":2.5},
{"label":"K83 (F5,D3)", "x":13.5, "y":2.5, "w":1.5},
{"label":"K86 (F5,D6)", "x":15.25, "y":2.5},
{"label":"K82 (F5,D2)", "x":16.25, "y":2.5},
{"label":"K81 (F5,D1)", "x":17.25, "y":2.5},
{"label":"K30 (B2,D0)", "x":0, "y":3.5, "w":1.75},
{"label":"K31 (B2,D1)", "x":1.75, "y":3.5},
{"label":"K32 (B2,D2)", "x":2.75, "y":3.5},
{"label":"K33 (B2,D3)", "x":3.75, "y":3.5},
{"label":"K34 (B2,D5)", "x":4.75, "y":3.5},
{"label":"K35 (B2,D4)", "x":5.75, "y":3.5},
{"label":"K36 (B2,D6)", "x":6.75, "y":3.5},
{"label":"K37 (B2,D7)", "x":7.75, "y":3.5},
{"label":"K38 (B2,B4)", "x":8.75, "y":3.5},
{"label":"K98 (F4,B4)", "x":9.75, "y":3.5},
{"label":"K97 (F4,D7)", "x":10.75, "y":3.5},
{"label":"K95 (F4,D4)", "x":11.75, "y":3.5},
{"label":"K93 (F4,D3)", "x":12.75, "y":3.5, "w":2.25},
{"label":"K40 (B3,D0)", "x":0, "y":4.5, "w":2.25},
{"label":"K42 (B3,D2)", "x":2.25, "y":4.5},
{"label":"K43 (B3,D3)", "x":3.25, "y":4.5},
{"label":"K44 (B3,D5)", "x":4.25, "y":4.5},
{"label":"K45 (B3,D4)", "x":5.25, "y":4.5},
{"label":"K46 (B3,D6)", "x":6.25, "y":4.5},
{"label":"K47 (B3,D7)", "x":7.25, "y":4.5},
{"label":"K48 (B3,B4)", "x":8.25, "y":4.5},
{"label":"KA8 (F1,B4)", "x":9.25, "y":4.5},
{"label":"KA7 (F1,D7)", "x":10.25, "y":4.5},
{"label":"KA5 (F1,D4)", "x":11.25, "y":4.5},
{"label":"KA4 (F1,D5)", "x":12.25, "y":4.5, "w":2.75},
{"label":"K92 (F4,D2)", "x":16.25, "y":4.5},
{"label":"K50 (B7,D0)", "x":0, "y":5.5, "w":1.5},
{"label":"K51 (B7,D1)", "x":1.5, "y":5.5},
{"label":"K52 (B7,D2)", "x":2.5, "y":5.5, "w":1.5},
{"label":"K56 (B7,D6)", "x":4, "y":5.5, "w":7},
{"label":"K57 (B7,D7)", "x":11, "y":5.5, "w":1.5},
{"label":"K54 (B7,D5)", "x":12.5, "y":5.5},
{"label":"K53 (B7,D3)", "x":13.5, "y":5.5, "w":1.5},
{"label":"KA6 (F1,D6)", "x":15.25, "y":5.5},
{"label":"KA2 (F1,D2)", "x":16.25, "y":5.5},
{"label":"KA1 (F1,D1)", "x":17.25, "y":5.5}
]
}
}
}

View File

@@ -0,0 +1,17 @@
/* Copyright 2020 MechMerlin
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define DYNAMIC_KEYMAP_LAYER_COUNT 3

View File

@@ -0,0 +1,17 @@
# Exclusive E8.5 Hotswap
Hotswap PCB for Exclusive E8.5.
Switch Matrix is identical between the standard and tsangan variants. Please select the correct layout.
* Keyboard Maintainer: [MechMerlin](https://github.com/mechmerlin)
* Hardware Supported: E8.5 Hotswap, atmega32u4
* Hardware Availability: [Geekhack GB](https://geekhack.org/index.php?topic=103520)
Make example for this keyboard (after setting up your build environment):
make exclusive/e85/hotswap:default
**Reset Key**: The board can be reset by shorting the two holes underneath the PCB, or pressing the reset button on the reverse side.
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).

View File

View File

@@ -1 +0,0 @@
#define DYNAMIC_KEYMAP_LAYER_COUNT 3

View File

@@ -1,16 +1,15 @@
# Exclusive E8.5 Hotswap
Custom hotswap PCB for Exclusive E8.5.
Custom PCBs for Exclusive E8.5.
The switch matrix is identical between all three PCB variants of this board. Choose the correct LAYOUT that best matches the physical LAYOUT of your PCB.
* Keyboard Maintainer: [MechMerlin](https://github.com/mechmerlin)
* Keyboard Maintainer: [MechMerlin](https://github.com/mechmerlin), [rebeccaby](https://github.com/rebeccaby)
* Hardware Supported: E8.5 Hotswap/Soldered, atmega32u4
* Hardware Availability: [Geekhack GB](https://geekhack.org/index.php?topic=103520)
Make example for this keyboard (after setting up your build environment):
make exclusive/e85:default
make exclusive/e85/hotswap:default
make exclusive/e85/soldered:default
**Reset Key**: The board can be reset by shorting the two holes underneath the PCB, or pressing the reset button on the reverse side.

View File

@@ -2,13 +2,6 @@
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
@@ -25,8 +18,8 @@ SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
NKRO_ENABLE = no # USB Nkey Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
MIDI_ENABLE = no # MIDI support
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
BLUETOOTH_ENABLE = no # Enable Bluetooth
AUDIO_ENABLE = no # Audio output
FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
LTO_ENABLE = yes
DEFAULT_FOLDER = exclusive/e85/hotswap

View File

@@ -0,0 +1,18 @@
/* Copyright 2020 MechMerlin
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define PRODUCT_ID 0xE852 // E8.5 Soldered
#define PRODUCT E8.5 Soldered PCB

View File

@@ -0,0 +1,37 @@
/* Copyright 2020 MechMerlin
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include QMK_KEYBOARD_H
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = LAYOUT_ansi_tsangan(
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, MO(1), KC_PSCR, KC_SLCK, KC_PAUS,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN,
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
),
[1] = LAYOUT_ansi_tsangan(
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
RGB_MOD, RGB_TOG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
BL_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______
),
};

View File

@@ -0,0 +1,37 @@
/* Copyright 2020 MechMerlin
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include QMK_KEYBOARD_H
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = LAYOUT_ansi_standard(
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, MO(1), KC_PSCR, KC_SLCK, KC_PAUS,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN,
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_APP, KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
),
[1] = LAYOUT_ansi_standard(
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
RGB_MOD, RGB_TOG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
BL_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
),
};

View File

@@ -0,0 +1,17 @@
/* Copyright 2020 MechMerlin
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define DYNAMIC_KEYMAP_LAYER_COUNT 3

View File

@@ -0,0 +1,45 @@
/* Copyright 2020 MechMerlin
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include QMK_KEYBOARD_H
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = LAYOUT_ansi_tsangan(
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, MO(1), KC_PSCR, KC_SLCK, KC_PAUS,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN,
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
),
[1] = LAYOUT_ansi_tsangan(
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
RGB_MOD, RGB_TOG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
BL_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______
),
[2] = LAYOUT_ansi_tsangan(
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______
),
};

View File

@@ -0,0 +1,3 @@
VIA_ENABLE = yes
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration

View File

@@ -0,0 +1,15 @@
# Exclusive E8.5 Soldered
Soldered PCB for Exclusive E8.5.
* Keyboard Maintainer: [MechMerlin](https://github.com/mechmerlin), [rebeccaby](https://github.com/rebeccaby)
* Hardware Supported: E8.5 Soldered, atmega32u4
* Hardware Availability: [Geekhack GB](https://geekhack.org/index.php?topic=103520)
Make example for this keyboard (after setting up your build environment):
make exclusive/e85/soldered:default
**Reset Key**: The board can be reset by shorting the two holes underneath the PCB, or pressing the reset button on the reverse side.
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).

View File

@@ -0,0 +1,17 @@
/* Copyright 2020 MechMerlin
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include "soldered.h"

View File

@@ -20,7 +20,6 @@
#define ___ KC_NO
// This is the layout for the soldered PCB
#define LAYOUT_all( \
K00, K01, K02, K03, K04, K05, K06, K07, K08, K68, K67, K65, K64, K63, K66, K62, K61, \
K10, K11, K12, K13, K14, K15, K16, K17, K18, K78, K70, K77, K75, K74, K73, K76, K72, K71, \
@@ -42,12 +41,11 @@
{ KC_NO, KA1, KA2, KA3, KA4, KA5, KA6, KA7, KA8 }, \
}
// This is the layout for one hotswap PCB and can also be used on the soldered edition
#define LAYOUT_ansi_standard( \
K00, K01, K02, K03, K04, K05, K06, K07, K08, K68, K67, K65, K64, K63, K66, K62, K61, \
K10, K11, K12, K13, K14, K15, K16, K17, K18, K78, K70, K77, K75, K73, K76, K72, K71, \
K20, K21, K22, K23, K24, K25, K26, K27, K28, K88, K87, K85, K84, K83, K86, K82, K81, \
K30, K31, K32, K33, K34, K35, K36, K37, K38, K98, K97, K95, K93, \
K20, K21, K22, K23, K24, K25, K26, K27, K28, K88, K87, K85, K84, K94, K86, K82, K81, \
K30, K31, K32, K33, K34, K35, K36, K37, K38, K98, K97, K95, K83, \
K40, K42, K43, K44, K45, K46, K47, K48, KA8, KA7, KA5, KA4, K92, \
K50, K51, K52, K56, K58, K57, K54, K53, KA6, KA2, KA1 \
) { \
@@ -60,16 +58,15 @@
{ KC_NO, K61, K62, K63, K64, K65, K66, K67, K68 }, \
{ K70, K71, K72, K73, KC_NO, K75, K76, K77, K78 }, \
{ KC_NO, K81, K82, K83, K84, K85, K86, K87, K88 }, \
{ KC_NO, KC_NO, K92, K93, KC_NO, K95, KC_NO, K97, K98 }, \
{ KC_NO, KC_NO, K92, KC_NO, K94, K95, KC_NO, K97, K98 }, \
{ KC_NO, KA1, KA2, KC_NO, KA4, KA5, KA6, KA7, KA8 }, \
}
// This is the layout for one hotswap PCB and can also be used on the soldered edition
#define LAYOUT_ansi_tsangan( \
K00, K01, K02, K03, K04, K05, K06, K07, K08, K68, K67, K65, K64, K63, K66, K62, K61, \
K10, K11, K12, K13, K14, K15, K16, K17, K18, K78, K70, K77, K75, K73, K76, K72, K71, \
K20, K21, K22, K23, K24, K25, K26, K27, K28, K88, K87, K85, K84, K83, K86, K82, K81, \
K30, K31, K32, K33, K34, K35, K36, K37, K38, K98, K97, K95, K93, \
K20, K21, K22, K23, K24, K25, K26, K27, K28, K88, K87, K85, K84, K94, K86, K82, K81, \
K30, K31, K32, K33, K34, K35, K36, K37, K38, K98, K97, K95, K83, \
K40, K42, K43, K44, K45, K46, K47, K48, KA8, KA7, KA5, KA4, K92, \
K50, K51, K52, K56, K57, K54, K53, KA6, KA2, KA1 \
) { \
@@ -82,6 +79,6 @@
{ KC_NO, K61, K62, K63, K64, K65, K66, K67, K68 }, \
{ K70, K71, K72, K73, KC_NO, K75, K76, K77, K78 }, \
{ KC_NO, K81, K82, K83, K84, K85, K86, K87, K88 }, \
{ KC_NO, KC_NO, K92, K93, KC_NO, K95, KC_NO, K97, K98 }, \
{ KC_NO, KA1, KA2, KC_NO, KA4, KA5, KA6, KA7, KA8 }, \
{ KC_NO, KC_NO, K92, KC_NO, K94, K95, KC_NO, K97, K98 }, \
{ KC_NO, KA1, KA2, KC_NO, KA4, KA5, KA6, KA7, KA8 }, \
}

View File

@@ -0,0 +1 @@
OLED_DRIVER_ENABLE = yes

View File

@@ -26,7 +26,7 @@ AUDIO_ENABLE = no # Audio output on port C6
UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight.
OLED_DRIVER_ENABLE = yes
OLED_DRIVER_ENABLE = no
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend

View File

@@ -18,7 +18,8 @@
void matrix_init_kb(void) {
// put your keyboard start-up code here
// runs once when the firmware starts up
setPinOutput(D5);
setPinOutput(E6);
matrix_init_user();
}
@@ -42,26 +43,19 @@ void led_set_kb(uint8_t usb_led) {
led_set_user(usb_led);
}
void led_init_ports(void) {
setPinOutput(D5);
setPinOutput(E6);
bool led_update_kb(led_t led_state) {
if(led_update_user(led_state)) {
writePin(D5, !led_state.caps_lock);
writePin(E6, !led_state.scroll_lock);
}
return true;
}
void led_set_user(uint8_t usb_led) {
if (IS_LED_ON(usb_led, USB_LED_CAPS_LOCK)) {
setPinOutput(D5);
writePinLow(D5);
} else {
setPinInput(D5);
}
if (IS_LED_ON(usb_led, USB_LED_SCROLL_LOCK)) {
setPinOutput(E6);
writePinLow(E6);
} else {
setPinInput(E6);
}
void eeconfig_init_kb(void) { // EEPROM is getting reset!
rgblight_enable(); // Enable RGB by default
rgblight_sethsv(0, 255, 128); // Set default HSV - red hue, full saturation, medium brightness
rgblight_mode(RGBLIGHT_MODE_RAINBOW_SWIRL + 2); // set to RGB_RAINBOW_SWIRL by default
eeconfig_update_kb(0);
eeconfig_init_user();
}

View File

@@ -0,0 +1,20 @@
/* Copyright 2020 GhostSeven <work@ghost7.com>
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#pragma once
#ifdef RGB_MATRIX_ENABLE
# define RGB_MATRIX_KEYPRESSES
#endif

View File

@@ -0,0 +1,70 @@
/* Copyright 2020 GhostSeven <work@ghost7.com>
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include QMK_KEYBOARD_H
enum encoder_names {
_LEFT,
_RIGHT,
_MIDDLE,
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/*
| Knob 1: Vol Dn/Up | | Knob 2: Page Dn/Up |
| Press: Mute | Home | Press: Play/Pause |
| Hold: Layer 2 | Up | Enter |
| Left | Down | Right |
*/
[0] = LAYOUT(
KC_MUTE, KC_HOME, KC_MPLY,
MO(1) , KC_UP , KC_ENT,
KC_LEFT, KC_DOWN, KC_RGHT
),
/*
| RESET | Shift+CMD+B (Build VS Code) | Media Stop |
| Held: Layer 2 | Home | RGB Mode |
| Media Previous | End | Media Next |
*/
[1] = LAYOUT(
RESET , S(G(KC_B)), KC_STOP,
_______, KC_HOME, RGB_MOD,
KC_MPRV, KC_END , KC_MNXT
),
};
void encoder_update_user(uint8_t index, bool clockwise) {
if (index == _LEFT) {
if (clockwise) {
tap_code(KC_VOLD);
} else {
tap_code(KC_VOLU);
}
}
else if (index == _MIDDLE) {
if (clockwise) {
tap_code(KC_UP);
} else {
tap_code(KC_DOWN);
}
}
else if (index == _RIGHT) {
if (clockwise) {
tap_code(KC_PGUP);
} else {
tap_code(KC_PGDN);
}
}
}

View File

@@ -19,7 +19,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
/* USB Device descriptor parameter */
#define VENDOR_ID 0xCB10
#define PRODUCT_ID 0x1157
#define PRODUCT_ID 0x2157
#define DEVICE_VER 0x0200
#define MANUFACTURER Keebio
#define PRODUCT The Viterbi Keyboard

View File

@@ -0,0 +1,44 @@
/*
Copyright 2020 Team Mechlovin'
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 0x4D4C
#define MANUFACTURER Mechlovin
#define PRODUCT Mechlovin Delphine
/* key matrix size */
#define MATRIX_ROWS 6
#define MATRIX_COLS 4
/*
* 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 { F0, F1, F4, F5, F6, D3 }
#define MATRIX_COL_PINS { F7, D7, D6, D2 }
#define DIODE_DIRECTION COL2ROW

View File

@@ -0,0 +1,35 @@
/* Copyright 2020 Team Mechlovin'
*
* 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 "delphine.h"
void matrix_init_kb(void) {
matrix_init_user();
led_init_ports();
}
void led_init_ports(void) {
setPinOutput(B5);
writePinLow(B5);
}
bool led_update_kb(led_t led_state) {
if(led_update_user(led_state)) {
writePin(B5, led_state.num_lock);
}
return true;
}

View File

@@ -0,0 +1,35 @@
/* Copyright 2020 Team Mechlovin'
*
* 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_ortho_6x4( \
K00, K01, K02, K03, \
K10, K11, K12, K13, \
K20, K21, K22, K23, \
K30, K31, K32, K33, \
K40, K41, K42, K43, \
K50, K51, K52, K53 \
) { \
{ K00, K01, K02, K03 }, \
{ K10, K11, K12, K13 }, \
{ K20, K21, K22, K23 }, \
{ K30, K31, K32, K33 }, \
{ K40, K41, K42, K43 }, \
{ K50, K51, K52, K53 }, \
}

View File

@@ -0,0 +1,38 @@
{
"keyboard_name": "Delphine",
"url": "",
"maintainer": "Team Mechlovin'",
"width": 4,
"height": 6.25,
"layouts": {
"LAYOUT_ortho_6x4": {
"layout": [
{"label":"K00 (F0,F7)", "x":0, "y":0},
{"label":"K01 (F0,D7)", "x":1, "y":0},
{"label":"K02 (F0,D6)", "x":2, "y":0},
{"label":"K03 (F0,D2)", "x":3, "y":0},
{"label":"K10 (F1,F7)", "x":0, "y":1.25},
{"label":"K11 (F1,D7)", "x":1, "y":1.25},
{"label":"K12 (F1,D6)", "x":2, "y":1.25},
{"label":"K13 (F1,D2)", "x":3, "y":1.25},
{"label":"K20 (F4,F7)", "x":0, "y":2.25},
{"label":"K21 (F4,D7)", "x":1, "y":2.25},
{"label":"K22 (F4,D6)", "x":2, "y":2.25},
{"label":"K23 (F4,D2)", "x":3, "y":2.25},
{"label":"K30 (F5,F7)", "x":0, "y":3.25},
{"label":"K31 (F5,D7)", "x":1, "y":3.25},
{"label":"K32 (F5,D6)", "x":2, "y":3.25},
{"label":"K33 (F5,D2)", "x":3, "y":3.25},
{"label":"K40 (F6,F7)", "x":0, "y":4.25},
{"label":"K41 (F6,D7)", "x":1, "y":4.25},
{"label":"K42 (F6,D6)", "x":2, "y":4.25},
{"label":"K43 (F6,D2)", "x":3, "y":4.25},
{"label":"K50 (D3,F7)", "x":0, "y":5.25},
{"label":"K51 (D3,D7)", "x":1, "y":5.25},
{"label":"K52 (D3,D6)", "x":2, "y":5.25},
{"label":"K53 (D3,D2)", "x":3, "y":5.25}
]
}
}
,"meta": "https://noroadsleft.github.io/kbf_qmk_converter/"
}

View File

@@ -0,0 +1,28 @@
/* Copyright 2020 Team Mechlovin'
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include QMK_KEYBOARD_H
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = LAYOUT_ortho_6x4(
KC_ESC, BL_STEP, RGB_TOG, RGB_MOD,
KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS,
KC_P7, KC_P8, KC_P9, KC_PPLS,
KC_P4, KC_P5, KC_P6, KC_PEQL,
KC_P1, KC_P2, KC_P3, KC_PENT,
KC_P0, KC_P0, KC_PDOT, KC_BSPC
),
};

View File

@@ -0,0 +1 @@
# The default keymap for delphine

View File

@@ -0,0 +1,52 @@
/* Copyright 2020 Team Mechlovin'
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include QMK_KEYBOARD_H
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = LAYOUT_ortho_6x4(
KC_ESC, BL_STEP, RGB_TOG, RGB_MOD,
KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS,
KC_P7, KC_P8, KC_P9, KC_PPLS,
KC_P4, KC_P5, KC_P6, KC_PEQL,
KC_P1, KC_P2, KC_P3, KC_PENT,
KC_P0, KC_P0, KC_PDOT, KC_BSPC
),
[1] = LAYOUT_ortho_6x4(
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
),
[2] = LAYOUT_ortho_6x4(
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
),
[3] = LAYOUT_ortho_6x4(
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
),
};

View File

@@ -0,0 +1 @@
# The via keymap for delphine

View File

@@ -0,0 +1 @@
VIA_ENABLE = yes

View File

@@ -0,0 +1,34 @@
#pragma once
#define PRODUCT_ID 0xDEF1
#define DEVICE_VER 0x0001
#ifdef BACKLIGHT_ENABLE
#define BACKLIGHT_PIN B6
// #define BACKLIGHT_BREATHING
#define BACKLIGHT_LEVELS 3
#endif
#ifdef RGBLIGHT_ENABLE
#define RGB_DI_PIN E2
#define RGBLED_NUM 13
#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

View File

@@ -0,0 +1,2 @@
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow

View File

@@ -0,0 +1,15 @@
# delphine
![delphine](imgur.com image replace me!)
A Number-Pad PCB, Mono backlight and RGB backlight version, Dolpad compatible.
* Keyboard Maintainer: [Mechlovin'](https://github.com/mechlovin)
* Hardware Supported: Delphine PCB
* Hardware Availability: [Team Mechlovin'](https://mechlove.com)
Make example for this keyboard (after setting up your build environment):
make mechlovin/delphine: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).

View File

@@ -0,0 +1,47 @@
#pragma once
#define PRODUCT_ID 0xDEF2
#define DEVICE_VER 0x0001
#ifdef RGBLIGHT_ENABLE
#define RGB_DI_PIN E2
#define RGBLED_NUM 13
#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
//rgb matrix setting// This is a 7-bit address, that gets left-shifted and bit 0
// set to 0 for write, 1 for read (as per I2C protocol)
// The address will vary depending on your wiring:
// 0b1110100 AD <-> GND
// 0b1110111 AD <-> VCC
// 0b1110101 AD <-> SCL
// 0b1110110 AD <-> SDA
#define DRIVER_ADDR_1 0b1110110
#define DRIVER_ADDR_2 0b1110100
#define DRIVER_COUNT 1
#define DRIVER_1_LED_TOTAL 25
#define DRIVER_2_LED_TOTAL 0
#define DRIVER_LED_TOTAL 25
#define RGB_MATRIX_KEYPRESSES // reacts to keypresses
#define RGB_MATRIX_KEYRELEASES // reacts to keyreleases (instead of keypresses)
#define RGB_DISABLE_AFTER_TIMEOUT 0 // number of ticks to wait until disabling effects
#define RGB_DISABLE_WHEN_USB_SUSPENDED false // turn off effects when suspended
#define RGB_MATRIX_LED_FLUSH_LIMIT 16 // limits in milliseconds how frequently an animation will update the LEDs. 16 (16ms) is equivalent to limiting to 60fps (increases keyboard responsiveness)
#define RGB_MATRIX_MAXIMUM_BRIGHTNESS 255 // limits maximum brightness of LEDs to 200 out of 255. If not defined maximum brightness is set to 255
#define RGB_MATRIX_STARTUP_MODE RGB_MATRIX_CYCLE_PINWHEEL // Sets the default mode, if none has been set

View File

@@ -0,0 +1,160 @@
/* Copyright 2020 Team Mechlovin'
*
* 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 "rgb_led.h"
#ifdef RGB_MATRIX_ENABLE
const is31_led g_is31_leds[DRIVER_LED_TOTAL] = {
// left CA
{0, C5_2, C6_2, C7_2}, //D2-0
{0, C1_1, C3_2, C4_2}, //D20-1
{0, C5_1, C6_1, C7_1}, //D36-2
{0, C2_1, C3_1, C4_1}, //D46-3
{0, C5_4, C6_4, C7_4}, //D65-4
{0, C1_3, C2_3, C3_3}, //D26-5
{0, C5_3, C6_3, C7_3}, //D37-6
{0, C1_2, C2_2, C4_3}, //D47-7
{0, C4_5, C5_5, C7_6}, //D11-8
{0, C1_5, C2_5, C3_5}, //D27-9
{0, C4_4, C6_5, C7_5}, //D38-10
{0, C1_4, C2_4, C3_4}, //D48-11
// left CB
{0, C2_9, C3_9, C4_9}, //D17-12
{0, C5_9, C6_9, C7_9}, //D28-13
{0, C1_9, C3_10, C4_10}, //D39-14
{0, C5_10, C6_10, C7_10}, //D49-15
{0, C1_10, C2_10, C4_11}, //D18-16
{0, C5_11, C6_11, C7_11}, //D29-17
{0, C1_11, C2_11, C3_11}, //D40-18
{0, C5_12, C6_12, C7_12}, //D50-19
{0, C1_12, C2_12, C3_12}, //D19-20
{0, C1_13, C2_13, C3_13}, //D61-21
{0, C4_13, C5_13, C7_14}, //D35-22
{0, C1_14, C2_14, C3_14}, //D41-23
{0, C4_14, C5_14, C6_14}, //D51-24
};
led_config_t g_led_config = { {
// Key Matrix to LED Index
{0, 1, 2, 3},
{4, 5, 6, 7},
{8, 9, 10, 11},
{12, 13, 14, 15},
{16, 17, 18, 19},
{20, 22, 23, 24}
},
{
//LED Index to Physical Positon
{ 0, 0}, { 75, 0}, {149, 0}, {224, 0},
{ 0, 13}, { 75, 13}, {149, 13}, {224, 13},
{ 0, 25}, { 75, 25}, {149, 25}, {224, 25},
{ 0, 38}, { 75, 38}, {149, 38}, {224, 38},
{ 0, 51}, { 75, 51}, {149, 51}, {224, 51},
{ 0, 64}, { 37, 64}, { 75, 64}, {149, 64}, {224, 64},
}, {
4, 4, 4, 4,
4, 1, 1, 4,
4, 1, 1, 4,
4, 1, 1, 4,
4, 1, 1, 4,
4, 0, 1, 1, 4,
} };
void rgb_matrix_indicators_kb(void) {
if (host_keyboard_led_state().num_lock) {
rgb_matrix_set_color(4, 255, 255, 255);
}
}
__attribute__((weak))
layer_state_t layer_state_set_user(layer_state_t state) {
// if on layer 1, turn on L1 LED, otherwise off.
if (get_highest_layer(state) == 0) {
rgb_matrix_set_color(1, 255, 0, 0);
} else {
rgb_matrix_set_color(1, 0, 0, 0);
}
// if on layer 2, turn on L2 LED, otherwise off.
if (get_highest_layer(state) == 1) {
rgb_matrix_set_color(0, 255, 0, 0);
} else {
rgb_matrix_set_color(0, 0, 0, 0);
}
// if on layer 3, turn on L3 LED, otherwise off.
if (get_highest_layer(state) == 2) {
rgb_matrix_set_color(3, 255, 0, 0);
} else {
rgb_matrix_set_color(3, 0, 0, 0);
}
// if on layer 4, turn on L4 LED, otherwise off.
if (get_highest_layer(state) == 3) {
rgb_matrix_set_color(2, 255, 0, 0);
} else {
rgb_matrix_set_color(2, 0, 0, 0);
}
return state;
}
#endif
bool process_record_kb(uint16_t keycode, keyrecord_t *record) {
if (!process_record_user(keycode, record)) { return false; }
if (record->event.pressed) {
switch(keycode) {
#ifdef RGB_MATRIX_ENABLE
case KC_F13: // toggle rgb matrix
rgb_matrix_toggle();
return false;
case KC_F14:
rgb_matrix_step();
return false;
case KC_F15:
rgb_matrix_increase_speed();
return false;
case KC_F16:
rgb_matrix_decrease_speed();
return false;
case KC_F17:
rgb_matrix_increase_hue();
return false;
case KC_F18:
rgb_matrix_decrease_hue();
return false;
case KC_F19:
rgb_matrix_increase_sat();
return false;
case KC_F20:
rgb_matrix_decrease_sat();
return false;
case KC_F21:
rgb_matrix_increase_val();
return false;
case KC_F22:
rgb_matrix_decrease_val();
return false;
#endif
default:
break;
}
}
return true;
}

View File

@@ -0,0 +1,19 @@
/* Copyright 2020 Team Mechlovin'
*
* 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"

View File

@@ -0,0 +1,2 @@
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
RGB_MATRIX_ENABLE = IS31FL3731 # Use RGB matrix

View File

@@ -0,0 +1,25 @@
# MCU name
MCU = atmega32u4
# Bootloader selection
BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
NKRO_ENABLE = yes # USB Nkey Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
BLUETOOTH_ENABLE = no # Enable Bluetooth
AUDIO_ENABLE = no # Audio output
LAYOUTS = ortho_6x4
DEFAULT_FOLDER = mechlovin/delphine/mono_led

View File

@@ -0,0 +1,137 @@
/*
Copyright 2020 gtips
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#pragma once
#include "config_common.h"
/* USB Device descriptor parameter */
#define VENDOR_ID 0xFEED
#define PRODUCT_ID 0x516D
#define DEVICE_VER 0x0001
#define MANUFACTURER gtips
#define PRODUCT reviung33
/* key matrix size */
#define MATRIX_ROWS 4
#define MATRIX_COLS 10
/*
* Keyboard Matrix Assignments
*
* Change this to how you wired your keyboard
* COLS: AVR pins used for columns, left to right
* ROWS: AVR pins used for rows, top to bottom
* DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode)
* ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode)
*
*/
#define MATRIX_ROW_PINS { F4, F5, F6, F7}
#define MATRIX_COL_PINS { D4, C6, D7, E6, B4, B1, B3, B2, B6, B5 }
#define UNUSED_PINS
/* COL2ROW, ROW2COL */
#define DIODE_DIRECTION COL2ROW
#define RGB_DI_PIN D3
#ifdef RGB_DI_PIN
# define RGBLED_NUM 5
# define RGBLIGHT_HUE_STEP 16
# define RGBLIGHT_SAT_STEP 16
# define RGBLIGHT_VAL_STEP 16
# 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
/*== customize breathing effect ==*/
/*==== (DEFAULT) use fixed table instead of exp() and sin() ====*/
//# define RGBLIGHT_BREATHE_TABLE_SIZE 256 // 256(default) or 128 or 64
/*==== use exp() and sin() ====*/
//# define RGBLIGHT_EFFECT_BREATHE_CENTER 1.85 // 1 to 2.7
//# define RGBLIGHT_EFFECT_BREATHE_MAX 255 // 0 to 255
#endif
/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
#define DEBOUNCE 5
/* define if matrix has ghost (lacks anti-ghosting diodes) */
//#define MATRIX_HAS_GHOST
/* 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
/* If defined, GRAVE_ESC will always act as ESC when CTRL is held.
* This is useful for the Windows task manager shortcut (ctrl+shift+esc).
*/
//#define GRAVE_ESC_CTRL_OVERRIDE
/*
* Force NKRO
*
* Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved
* state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the
* makefile for this to work.)
*
* If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N)
* until the next keyboard reset.
*
* NKRO may prevent your keystrokes from being detected in the BIOS, but it is
* fully operational during normal computer usage.
*
* For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N)
* or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by
* bootmagic, NKRO mode will always be enabled until it is toggled again during a
* power-up.
*
*/
//#define FORCE_NKRO
/*
* 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
/* disable these deprecated features by default */
#define NO_ACTION_MACRO
#define NO_ACTION_FUNCTION
/* Bootmagic Lite key configuration */
//#define BOOTMAGIC_LITE_ROW 0
//#define BOOTMAGIC_LITE_COLUMN 0

View File

@@ -0,0 +1,49 @@
{
"keyboard_name": "reviung33",
"url": "",
"maintainer": "gtips",
"width": 3,
"height": 2,
"layouts": {
"LAYOUT_reviung33": {
"layout": [
{"x":0, "y":0},
{"x":1, "y":0},
{"x":2, "y":0},
{"x":3, "y":0},
{"x":4, "y":0},
{"x":5, "y":0},
{"x":6, "y":0},
{"x":7, "y":0},
{"x":8, "y":0},
{"x":9, "y":0},
{"x":0, "y":1},
{"x":1, "y":1},
{"x":2, "y":1},
{"x":3, "y":1},
{"x":4, "y":1},
{"x":5, "y":1},
{"x":6, "y":1},
{"x":7, "y":1},
{"x":8, "y":1},
{"x":9, "y":1},
{"x":0, "y":2},
{"x":1, "y":2},
{"x":2, "y":2},
{"x":3, "y":2},
{"x":4, "y":2},
{"x":5, "y":2},
{"x":6, "y":2},
{"x":7, "y":2},
{"x":8, "y":2},
{"x":9, "y":2},
{"x":0, "y":3},
{"x":2, "y":3, "w":6},
{"x":9, "y":3}
]
}
}
}

View File

@@ -0,0 +1,71 @@
/* Copyright 2020 gtips
*
* 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
// Defines names for use in layer keycodes and the keymap
enum layer_names {
_BASE,
_LOWER,
_RAISE,
_ADJUST
};
#define LOWER MO(_LOWER)
#define RAISE MO(_RAISE)
#define CT_Q LCTL_T(KC_Q)
#define CT_CM RCTL_T(KC_COMM)
#define SF_Z LSFT_T(KC_Z)
#define SF_SS RSFT_T(KC_SLSH)
#define AL_X LALT_T(KC_X)
#define AL_DT RALT_T(KC_DOT)
#define TB_LO LT(LOWER, KC_TAB)
#define BS_RA LT(RAISE, KC_BSPC)
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_BASE] = LAYOUT_reviung33(
CT_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P,
KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_ENT,
SF_Z, AL_X, KC_C, KC_V, KC_B, KC_N, KC_M, CT_CM, AL_DT, SF_SS,
TB_LO, KC_SPC, BS_RA
),
[_LOWER] = LAYOUT_reviung33(
KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN,
KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_SCLN,
KC_LSFT, KC_ESC, KC_LGUI, KC_LALT, KC_QUOT, KC_HOME, KC_END, KC_PGUP, KC_PGDN, KC_RSFT,
_______, _______, _______
),
[_RAISE] = LAYOUT_reviung33(
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_LBRC, KC_RBRC, KC_BSLS, XXXXXXX, XXXXXXX, KC_GRV, KC_TILD, KC_COLN,
KC_LSFT, KC_ESC, KC_RGUI, KC_LALT, KC_DQUO, KC_TAB, KC_RALT, KC_RCTL, KC_RALT, KC_RSFT,
_______, KC_DEL, _______
),
[_ADJUST] = LAYOUT_reviung33(
RGB_VAI, RGB_SAI, RGB_HUI, RGB_MOD, RGB_TOG, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5,
RGB_VAD, RGB_SAD, RGB_HUD, RGB_RMOD,XXXXXXX, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10,
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RESET, KC_F11, KC_F12, KC_CAPS, XXXXXXX, KC_PSCR,
_______, _______, _______
),
};
layer_state_t layer_state_set_user(layer_state_t state) {
return update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST);
}

View File

@@ -0,0 +1 @@
# The default keymap for reviung33

View File

@@ -0,0 +1,70 @@
/* Copyright 2020 gtips
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include QMK_KEYBOARD_H
#include "keymap_jp.h"
enum layer_names {
_BASE,
_LOWER,
_RAISE,
_ADJUST
};
#define LOWER MO(_LOWER)
#define RAISE MO(_RAISE)
#define CT_Q LCTL_T(JP_Q)
#define CT_CM RCTL_T(JP_COMM)
#define SF_Z LSFT_T(JP_Z)
#define SF_SS RSFT_T(JP_SLSH)
#define AL_X LALT_T(JP_X)
#define AL_DT RALT_T(JP_DOT)
#define TB_LO LT(LOWER, KC_TAB)
#define BS_RA LT(RAISE, KC_BSPC)
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_BASE] = LAYOUT_reviung33(
CT_Q, JP_W, JP_E, JP_R, JP_T, JP_Y, JP_U, JP_I, JP_O, JP_P,
JP_A, JP_S, JP_D, JP_F, JP_G, JP_H, JP_J, JP_K, JP_L, KC_ENT,
SF_Z, AL_X, JP_C, JP_V, JP_B, JP_N, JP_M, CT_CM, AL_DT, SF_SS,
TB_LO, KC_SPC, BS_RA
),
[_LOWER] = LAYOUT_reviung33(
JP_EXLM, JP_AT, JP_HASH, JP_DLR, JP_PERC, JP_CIRC, JP_AMPR, JP_ASTR, JP_LPRN, JP_RPRN,
JP_UNDS, JP_PLUS, JP_LCBR, JP_RCBR, JP_PIPE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, JP_SCLN,
KC_LSFT, KC_ESC, KC_LGUI, KC_LALT, JP_QUOT, KC_HOME, KC_END, KC_PGUP, KC_PGDN, KC_RSFT,
_______, _______, _______
),
[_RAISE] = LAYOUT_reviung33(
JP_1, JP_2, JP_3, JP_4, JP_5, JP_6, JP_7, JP_8, JP_9, JP_0,
JP_MINS, JP_EQL, JP_LBRC, JP_RBRC, JP_YEN, KC_RO, XXXXXXX, JP_GRV, JP_TILD, JP_COLN,
KC_LSFT, KC_ESC, KC_RGUI, KC_LALT, JP_DQUO, KC_TAB, XXXXXXX, KC_RCTL, KC_RALT, KC_RSFT,
_______, KC_DEL, _______
),
[_ADJUST] = LAYOUT_reviung33(
RGB_VAI, RGB_SAI, RGB_HUI, RGB_MOD, RGB_TOG, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5,
RGB_VAD, RGB_SAD, RGB_HUD, RGB_RMOD,XXXXXXX, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10,
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RESET, KC_F11, KC_F12, KC_CAPS, XXXXXXX, KC_PSCR,
_______, _______, _______
),
};
layer_state_t layer_state_set_user(layer_state_t state) {
return update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST);
}

View File

@@ -0,0 +1 @@
# The default_jp keymap for reviung33

View File

@@ -0,0 +1,15 @@
# reviung33
![REVIUNG33](https://github.com/gtips/reviung/blob/master/reviung33/image/reviung33-01.jpg)
The REVIUNG33 is 33-key ortholinear keyboard.
* Keyboard Maintainer: [gtips](https://github.com/gtips)
* Hardware Supported: REVIUNG33 PCB.
* Hardware Availability: [PCB & Case Data](https://github.com/gtips/reviung/tree/master/reviung33)
Make example for this keyboard (after setting up your build environment):
make reviung33: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).

View File

@@ -0,0 +1,17 @@
/* Copyright 2020 gtips
*
* 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 "reviung33.h"

View File

@@ -0,0 +1,40 @@
/* Copyright 2020 gtips
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#pragma once
#include "quantum.h"
/* This is a shortcut to help you visually see your layout.
*
* The first section contains all of the arguments representing the physical
* layout of the board and position of the keys.
*
* The second converts the arguments into a two-dimensional array which
* represents the switch matrix.
*/
#define LAYOUT_reviung33( \
K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, \
K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, \
K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, \
K30, K31, K32 \
) \
{ \
{ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09 }, \
{ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19 }, \
{ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29 }, \
{ K30, K31, K32, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO } \
}

View File

@@ -0,0 +1,22 @@
# MCU name
MCU = atmega32u4
# Bootloader selection
BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration
MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = no # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
NKRO_ENABLE = no # USB Nkey Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
BLUETOOTH_ENABLE = no # Enable Bluetooth
AUDIO_ENABLE = no # Audio output

View File

@@ -1,3 +1,3 @@
RGBLIGHT_ENABLE = no
RGB_MATRIX_ENABLE = WS2812
OLED_DRIVER_ENABLE = yes

View File

@@ -27,7 +27,7 @@ UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight.
TAP_DANCE_ENABLE = no
OLED_DRIVER_ENABLE = yes
OLED_DRIVER_ENABLE = no
USE_I2C = no
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend

View File

@@ -0,0 +1,39 @@
/* 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/>.
*/
#include QMK_KEYBOARD_H
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = LAYOUT(
KC_A, KC_B, KC_C,
KC_D, KC_E, KC_F
),
[1] = LAYOUT(
KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS
),
[2] = LAYOUT(
KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS
),
[3] = LAYOUT(
KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS
)
};

View File

@@ -0,0 +1,2 @@
VIA_ENABLE = yes
LTO_ENABLE = yes

View File

@@ -0,0 +1,36 @@
/*
Copyright 2020 Bryan Ong
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 "aliceclone.h"
void keyboard_pre_init_kb() {
setPinOutput(D7);
setPinOutput(D6);
setPinOutput(D4);
keyboard_pre_init_user();
}
bool led_update_kb(led_t led_state) {
bool res = led_update_user(led_state);
if(res) {
writePin(D7, led_state.num_lock);
writePin(D6, led_state.caps_lock);
writePin(D4, led_state.scroll_lock);
}
return res;
}

View File

@@ -0,0 +1,39 @@
/*
Copyright 2020 Bryan Ong
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#pragma once
#include "quantum.h"
#define LAYOUT_all( \
K020, K000, K001, K002, K003, K004, K005, K006, K010, K011, K012, K013, K014, K015, K016, K017, \
K040, K021, K022, K023, K024, K025, K026, K030, K031, K032, K033, K034, K035, K036, K037, \
K060, K041, K042, K043, K044, K045, K046, K050, K051, K052, K053, K054, K055, K056, \
K061, K062, K063, K064, K065, K066, K070, K071, K072, K073, K074, K075, K076, K077, \
K081, K083, K085, K086, K091, K093, K097 \
) { \
{ K000, K001, K002, K003, K004, K005, K006, KC_NO }, \
{ K010, K011, K012, K013, K014, K015, K016, K017 }, \
{ K020, K021, K022, K023, K024, K025, K026, KC_NO }, \
{ K030, K031, K032, K033, K034, K035, K036, K037 }, \
{ K040, K041, K042, K043, K044, K045, K046, KC_NO }, \
{ K050, K051, K052, K053, K054, K055, K056, KC_NO }, \
{ K060, K061, K062, K063, K064, K065, K066, KC_NO }, \
{ K070, K071, K072, K073, K074, K075, K076, K077 }, \
{ KC_NO, K081, KC_NO, K083, KC_NO, K085, K086, KC_NO }, \
{ KC_NO, K091, KC_NO, K093, KC_NO, KC_NO, KC_NO, K097 } \
}

View File

@@ -0,0 +1,68 @@
/*
Copyright 2020 Bryan Ong
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 0x5342
#define PRODUCT_ID 0x0001
#define DEVICE_VER 0x0001
#define MANUFACTURER Sneakbox
#define PRODUCT AliceClone
/*Bootmagic boot button, set to topmost, leftmost key */
#define BOOTMAGIC_LITE_ROW 2
#define BOOTMAGIC_LITE_COLUMN 0
/* encoder */
/* #define NUMBER_OF_ENCODERS 1 */
#define ENCODERS_PAD_A { D3 }
#define ENCODERS_PAD_B { D2 }
#define ENCODER_RESOLUTION 1
/* key matrix size */
#define MATRIX_ROWS 10
#define MATRIX_COLS 8
/* key matrix pins */
#define MATRIX_ROW_PINS { F1, E6, F4, B1, F5, B2, F6, B3, F7, B7 }
#define MATRIX_COL_PINS { F0, D0, C7, C6, B6, B5, B4, D1 }
#define UNUSED_PINS
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
/* Set 0 if debouncing isn't needed */
#define DEBOUNCE 5
/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
#define LOCKING_SUPPORT_ENABLE
/* Locking resynchronize hack */
#define LOCKING_RESYNC_ENABLE
#ifdef RGB_DI_PIN
#define RGBLIGHT_ANIMATIONS
#define RGBLED_NUM 0
#define RGBLIGHT_HUE_STEP 8
#define RGBLIGHT_SAT_STEP 8
#define RGBLIGHT_VAL_STEP 8
#endif

Some files were not shown because too many files have changed in this diff Show More