Skip to content

Commit 70c36c6

Browse files
authored
First support for KKC Wily (#25852)
1 parent 56a2e33 commit 70c36c6

File tree

11 files changed

+491
-0
lines changed

11 files changed

+491
-0
lines changed

keyboards/wily/info.json

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
{
2+
"manufacturer": "KKC",
3+
"maintainer": "Gondolindrim",
4+
"usb": {
5+
"vid": "0x5750",
6+
"device_version": "0.0.1"
7+
},
8+
"features": {
9+
"bootmagic": true,
10+
"mousekey": true,
11+
"extrakey": true,
12+
"nkro": true
13+
},
14+
"build": {
15+
"lto": true
16+
},
17+
"diode_direction": "COL2ROW",
18+
"processor": "STM32F411",
19+
"bootloader": "stm32-dfu"
20+
}

keyboards/wily/readme.md

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
# KKC Wily
2+
3+
The Wily is a 65% keyboard by Keyote Key Company.
4+
5+
* Keyboard Maintainer: [gondolindrim](https://github.com/gondolindrim)
6+
* Hardware Supported: three PCB variants (solderable, hotswap with Tsangan bottom row, hotswap with default bottom row), both based on STM32F072
7+
* Hardware Availability: not yet available for purchase as of november 2025.
8+
9+
Make example for this keyboard (after setting up your build environment):
10+
11+
make wily/<version>:default
12+
13+
Where `<version>` can be either `wily_s` , `wily_h625` or `wily_h700`. Flashing example for this keyboard:
14+
15+
make wily/<version>:default:flash
16+
17+
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).
18+
19+
## Bootloader
20+
21+
Enter the bootloader in 3 ways:
22+
23+
* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (Escape) and plug in the keyboard
24+
* **Physical reset button**: press and hold the button on the back of the PCB for five seconds
25+
* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available
26+
Lines changed: 90 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,90 @@
1+
{
2+
"keyboard_name": "Keyote Wily-H625",
3+
"usb": {
4+
"pid": "0x5053",
5+
"device_version": "0.0.1"
6+
},
7+
"matrix_pins": {
8+
"cols": ["A15", "B10", "C15", "C14", "C13", "B1", "B0", "A7", "A6", "A5", "B14", "B13", "B12", "A4", "A3"],
9+
"rows": ["A0", "B8", "B3", "B5", "B9"]
10+
},
11+
"layouts": {
12+
"LAYOUT": {
13+
"layout": [
14+
{"matrix":[0,0], "x":0, "y":0},
15+
{"matrix":[0,1], "x":1, "y":0},
16+
{"matrix":[0,2], "x":2, "y":0},
17+
{"matrix":[0,3], "x":3, "y":0},
18+
{"matrix":[0,4], "x":4, "y":0},
19+
{"matrix":[0,5], "x":5, "y":0},
20+
{"matrix":[0,6], "x":6, "y":0},
21+
{"matrix":[0,7], "x":7, "y":0},
22+
{"matrix":[0,8], "x":8, "y":0},
23+
{"matrix":[0,9], "x":9, "y":0},
24+
{"matrix":[0,10], "x":10, "y":0},
25+
{"matrix":[0,11], "x":11, "y":0},
26+
{"matrix":[0,12], "x":12, "y":0},
27+
{"matrix":[0,13], "x":13, "y":0},
28+
{"matrix":[0,14], "x":14, "y":0},
29+
{"matrix":[1,14], "x":15, "y":0},
30+
31+
{"matrix":[1,0], "x":0, "y":1, "w":1.5},
32+
{"matrix":[1,1], "x":1.5, "y":1},
33+
{"matrix":[1,2], "x":2.5, "y":1},
34+
{"matrix":[1,3], "x":3.5, "y":1},
35+
{"matrix":[1,4], "x":4.5, "y":1},
36+
{"matrix":[1,5], "x":5.5, "y":1},
37+
{"matrix":[1,6], "x":6.5, "y":1},
38+
{"matrix":[1,7], "x":7.5, "y":1},
39+
{"matrix":[1,8], "x":8.5, "y":1},
40+
{"matrix":[1,9], "x":9.5, "y":1},
41+
{"matrix":[1,10], "x":10.5, "y":1},
42+
{"matrix":[1,11], "x":11.5, "y":1},
43+
{"matrix":[1,12], "x":12.5, "y":1},
44+
{"matrix":[1,13], "x":13.5, "y":1, "w":1.5},
45+
{"matrix":[2,14], "x":15 , "y":1},
46+
47+
{"matrix":[2,0], "x":0 , "y":2},
48+
{"matrix":[2,1], "x":1.75 , "y":2},
49+
{"matrix":[2,2], "x":2.75 , "y":2},
50+
{"matrix":[2,3], "x":3.75, "y":2},
51+
{"matrix":[2,4], "x":4.75, "y":2},
52+
{"matrix":[2,5], "x":5.75, "y":2},
53+
{"matrix":[2,6], "x":6.75, "y":2},
54+
{"matrix":[2,7], "x":7.75, "y":2},
55+
{"matrix":[2,8], "x":8.75, "y":2},
56+
{"matrix":[2,9], "x":9.75, "y":2},
57+
{"matrix":[2,10], "x":10.75, "y":2},
58+
{"matrix":[2,11], "x":11.75, "y":2},
59+
{"matrix":[2,12], "x":12.75, "y":2, "w":2.25},
60+
{"matrix":[2,13], "x":15 , "y":2},
61+
62+
{"matrix":[3,0], "x":0 , "y":3, "w":2.25},
63+
{"matrix":[3,2], "x":2.25, "y":3},
64+
{"matrix":[3,3], "x":3.25, "y":3},
65+
{"matrix":[3,4], "x":4.25, "y":3},
66+
{"matrix":[3,5], "x":5.25, "y":3},
67+
{"matrix":[3,6], "x":6.25, "y":3},
68+
{"matrix":[3,7], "x":7.25, "y":3},
69+
{"matrix":[3,8], "x":8.25, "y":3},
70+
{"matrix":[3,9], "x":9.25, "y":3},
71+
{"matrix":[3,10], "x":10.25 , "y":3},
72+
{"matrix":[3,11], "x":11.25, "y":3},
73+
{"matrix":[3,12], "x":12.25, "y":3, "w":1.75},
74+
{"matrix":[3,13], "x":14, "y":3},
75+
{"matrix":[3,14], "x":15, "y":3},
76+
77+
{"matrix":[4,0], "x":0 , "y":4, "w":1.25},
78+
{"matrix":[4,1], "x":1.25, "y":4, "w":1.25},
79+
{"matrix":[4,2], "x":2.5 , "y":4, "w":1.25},
80+
{"matrix":[4,6], "x":3.75, "y":4, "w":6.25},
81+
{"matrix":[4,8], "x":10, "y":4},
82+
{"matrix":[4,9], "x":11, "y":4},
83+
{"matrix":[4,10], "x":12, "y":4},
84+
{"matrix":[4,12], "x":13, "y":4},
85+
{"matrix":[4,13], "x":14, "y":4},
86+
{"matrix":[4,14], "x":15, "y":4}
87+
]
88+
}
89+
}
90+
}
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
/* Copyright 2025 Gondolindrim
2+
*
3+
* This program is free software: you can redistribute it and/or modify
4+
* it under the terms of the GNU General Public License as published by
5+
* the Free Software Foundation, either version 2 of the License, or
6+
* (at your option) any later version.
7+
*
8+
* This program is distributed in the hope that it will be useful,
9+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
10+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11+
* GNU General Public License for more details.
12+
*
13+
* You should have received a copy of the GNU General Public License
14+
* along with this program. If not, see <http://www.gnu.org/licenses/>.
15+
*/
16+
#include QMK_KEYBOARD_H
17+
#define LT1GUI LT(1, KC_RGUI)
18+
19+
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
20+
[0] = LAYOUT( /* Base */
21+
QK_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_BSPC, KC_DEL ,
22+
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_HOME,
23+
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_END ,
24+
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_INS ,
25+
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC , KC_RALT, LT1GUI , KC_RGUI, KC_LEFT, KC_DOWN, KC_RGHT
26+
),
27+
[1] = LAYOUT(
28+
QK_BOOT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
29+
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
30+
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
31+
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
32+
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
33+
)
34+
};
Lines changed: 89 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,89 @@
1+
{
2+
"keyboard_name": "Keyote Wily-H700",
3+
"usb": {
4+
"pid": "0x5052",
5+
"device_version": "0.0.1"
6+
},
7+
"matrix_pins": {
8+
"cols": ["A15", "B10", "C15", "C14", "C13", "B1", "B0", "A7", "A6", "A5", "B14", "B13", "B12", "A4", "A3"],
9+
"rows": ["A0", "B8", "B3", "B5", "B9"]
10+
},
11+
"layouts": {
12+
"LAYOUT": {
13+
"layout": [
14+
{"matrix":[0,0], "x":0, "y":0},
15+
{"matrix":[0,1], "x":1, "y":0},
16+
{"matrix":[0,2], "x":2, "y":0},
17+
{"matrix":[0,3], "x":3, "y":0},
18+
{"matrix":[0,4], "x":4, "y":0},
19+
{"matrix":[0,5], "x":5, "y":0},
20+
{"matrix":[0,6], "x":6, "y":0},
21+
{"matrix":[0,7], "x":7, "y":0},
22+
{"matrix":[0,8], "x":8, "y":0},
23+
{"matrix":[0,9], "x":9, "y":0},
24+
{"matrix":[0,10], "x":10, "y":0},
25+
{"matrix":[0,11], "x":11, "y":0},
26+
{"matrix":[0,12], "x":12, "y":0},
27+
{"matrix":[0,13], "x":13, "y":0},
28+
{"matrix":[0,14], "x":14, "y":0},
29+
{"matrix":[1,14], "x":15, "y":0},
30+
31+
{"matrix":[1,0], "x":0, "y":1, "w":1.5},
32+
{"matrix":[1,1], "x":1.5, "y":1},
33+
{"matrix":[1,2], "x":2.5, "y":1},
34+
{"matrix":[1,3], "x":3.5, "y":1},
35+
{"matrix":[1,4], "x":4.5, "y":1},
36+
{"matrix":[1,5], "x":5.5, "y":1},
37+
{"matrix":[1,6], "x":6.5, "y":1},
38+
{"matrix":[1,7], "x":7.5, "y":1},
39+
{"matrix":[1,8], "x":8.5, "y":1},
40+
{"matrix":[1,9], "x":9.5, "y":1},
41+
{"matrix":[1,10], "x":10.5, "y":1},
42+
{"matrix":[1,11], "x":11.5, "y":1},
43+
{"matrix":[1,12], "x":12.5, "y":1},
44+
{"matrix":[1,13], "x":13.5, "y":1, "w":1.5},
45+
{"matrix":[2,14], "x":15 , "y":1},
46+
47+
{"matrix":[2,0], "x":0 , "y":2},
48+
{"matrix":[2,1], "x":1.75 , "y":2},
49+
{"matrix":[2,2], "x":2.75 , "y":2},
50+
{"matrix":[2,3], "x":3.75, "y":2},
51+
{"matrix":[2,4], "x":4.75, "y":2},
52+
{"matrix":[2,5], "x":5.75, "y":2},
53+
{"matrix":[2,6], "x":6.75, "y":2},
54+
{"matrix":[2,7], "x":7.75, "y":2},
55+
{"matrix":[2,8], "x":8.75, "y":2},
56+
{"matrix":[2,9], "x":9.75, "y":2},
57+
{"matrix":[2,10], "x":10.75, "y":2},
58+
{"matrix":[2,11], "x":11.75, "y":2},
59+
{"matrix":[2,12], "x":12.75, "y":2, "w":2.25},
60+
{"matrix":[2,13], "x":15 , "y":2},
61+
62+
{"matrix":[3,0], "x":0 , "y":3, "w":2.25},
63+
{"matrix":[3,2], "x":2.25, "y":3},
64+
{"matrix":[3,3], "x":3.25, "y":3},
65+
{"matrix":[3,4], "x":4.25, "y":3},
66+
{"matrix":[3,5], "x":5.25, "y":3},
67+
{"matrix":[3,6], "x":6.25, "y":3},
68+
{"matrix":[3,7], "x":7.25, "y":3},
69+
{"matrix":[3,8], "x":8.25, "y":3},
70+
{"matrix":[3,9], "x":9.25, "y":3},
71+
{"matrix":[3,10], "x":10.25 , "y":3},
72+
{"matrix":[3,11], "x":11.25, "y":3},
73+
{"matrix":[3,12], "x":12.25, "y":3, "w":1.75},
74+
{"matrix":[3,13], "x":14, "y":3},
75+
{"matrix":[3,14], "x":15, "y":3},
76+
77+
{"matrix":[4,0], "x":0 , "y":4, "w":1.5},
78+
{"matrix":[4,1], "x":1, "y":4},
79+
{"matrix":[4,2], "x":2.5 , "y":4, "w":1.5},
80+
{"matrix":[4,6], "x":4, "y":4, "w":7},
81+
{"matrix":[4,9], "x":11, "y":4},
82+
{"matrix":[4,10], "x":12, "y":4},
83+
{"matrix":[4,12], "x":13, "y":4},
84+
{"matrix":[4,13], "x":14, "y":4},
85+
{"matrix":[4,14], "x":15, "y":4}
86+
]
87+
}
88+
}
89+
}
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
/* Copyright 2025 Gondolindrim
2+
*
3+
* This program is free software: you can redistribute it and/or modify
4+
* it under the terms of the GNU General Public License as published by
5+
* the Free Software Foundation, either version 2 of the License, or
6+
* (at your option) any later version.
7+
*
8+
* This program is distributed in the hope that it will be useful,
9+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
10+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11+
* GNU General Public License for more details.
12+
*
13+
* You should have received a copy of the GNU General Public License
14+
* along with this program. If not, see <http://www.gnu.org/licenses/>.
15+
*/
16+
#include QMK_KEYBOARD_H
17+
#define LT1GUI LT(1, KC_RGUI)
18+
19+
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
20+
[0] = LAYOUT( /* Base */
21+
QK_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_BSPC, KC_DEL ,
22+
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_HOME,
23+
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_END ,
24+
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_INS ,
25+
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC , LT1GUI , KC_RGUI, KC_LEFT, KC_DOWN, KC_RGHT
26+
),
27+
[1] = LAYOUT(
28+
QK_BOOT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
29+
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
30+
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
31+
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
32+
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
33+
)
34+
};

keyboards/wily/wily_s/config.h

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
/* Copyright 2025 Gondolindrim
2+
3+
This program is free software: you can redistribute it and/or modify
4+
it under the terms of the GNU General Public License as published by
5+
the Free Software Foundation, either version 2 of the License, or
6+
(at your option) any later version.
7+
8+
This program is distributed in the hope that it will be useful,
9+
but WITHOUT ANY WARRANTY; without even the implied warranty of
10+
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11+
GNU General Public License for more details.
12+
13+
You should have received a copy of the GNU General Public License
14+
along with this program. If not, see <http://www.gnu.org/licenses/>.
15+
*/
16+
17+
#pragma once
18+
19+
#define BACKLIGHT_PWM_DRIVER PWMD3
20+
#define BACKLIGHT_PWM_CHANNEL 4
21+
#define BACKLIGHT_PWM_PAL_MOPDE 2

keyboards/wily/wily_s/halconf.h

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
/* Copyright 2025 Gondolindrim
2+
*
3+
* This program is free software: you can redistribute it and/or modify
4+
* it under the terms of the GNU General Public License as published by
5+
* the Free Software Foundation, either version 2 of the License, or
6+
* (at your option) any later version.
7+
*
8+
* This program is distributed in the hope that it will be useful,
9+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
10+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11+
* GNU General Public License for more details.
12+
*
13+
* You should have received a copy of the GNU General Public License
14+
* along with this program. If not, see <http://www.gnu.org/licenses/>.
15+
*/
16+
17+
#pragma once
18+
19+
#define HAL_USE_PWM TRUE
20+
21+
#include_next <halconf.h>

0 commit comments

Comments
 (0)