- ïŒïŒæ¬ãã£ãã¿ãŒã®ãŽãŒã«
- ïŒïŒQMKç°å¢ãæ§ç¯ãã
- ïŒïŒç¢ºèªã®ããã«ã³ã³ãã€ã«ããŠã¿ã
- ïŒïŒãã³ãã¬ãŒããããŠã³ããŒãããŠé 眮ãã
- ïŒïŒãªããŒã ãã
- ïŒïŒconfig.hãç·šéãã
- ïŒïŒå template.hãç·šéãã
- ïŒïŒããŒããããç·šéãã
- ïŒïŒVIAçšJSONãã¡ã€ã«ãäœæãã
- å¥è§£ïŒQMKç°å¢ãå ¥ããããªããã³ã³ãã€ã«ãªããŠããããªãããšããæ¹ãž
ïŒïŒæ¬ãã£ãã¿ãŒã®ãŽãŒã«
æ¬ãã£ãã¿ãŒãå®äºãããšããŒããŒããå®éã«åããããã®ãã¡ãŒã ãŠã§ã¢ãšãVIA/Remapã§åäœããJSONãã¡ã€ã«ãåºæ¥äžãããŸãã
GL516ã¯ãã¡ãŒã ãŠã§ã¢ããã³ãã¬ãŒãåããŠããã®ã§ãããã°ã©ãã³ã°åå¿è
ã§ãæ¯èŒçç°¡åã«ãã¡ãŒã ãŠã§ã¢ãäœãäžããããšãã§ããŸãã
ïŒïŒQMKç°å¢ãæ§ç¯ãã
äœã¯ãªããšããŸãã¯QMK Firmwareã®ç°å¢ãæ§ç¯ããŸãããã
ç°å¢æ§ç¯åŸãããããšã§ãã¡ãŒã ãŠã§ã¢ãã³ã³ãã€ã«ããŠProMicroã«æžã蟌ãããšãã§ããŸãã
QMKç°å¢ã®æ§ç¯ã¯QMK Firmwareã®å ¬åŒããã¥ã¡ã³ããåç §ããŠæ§ç¯ãããŠã¿ãŠãã ããã
ïŒïŒç¢ºèªã®ããã«ã³ã³ãã€ã«ããŠã¿ã
- ç°å¢ãæ§ç¯ã§ããããŸãã³ã³ãã€ã«ã§ããã確èªããã
make 7skb:default
â»ããŒãžãããŠããããŒããŒããªãäœã§ã倧äžå€«ã§ãã
ãGL516ã®äœäŸã«ã€ããŠã¯çŸåšããŒãžäžã§ãã
QMK MSYSã䜿çšããŠããå Žåã¯ä»¥äžãè©ŠããŠã¿ãã
qmk compile -kb gl516/a52gl -km default
æçµçã«* The firmware size is fine
ãåºåãããã°ç°å¢ã¯æ£åžžã«æ§ç¯ã§ããŠããã
ïŒïŒãã³ãã¬ãŒããããŠã³ããŒãããŠé 眮ãã
-
ãã³ãã¬ãŒããã¡ãŒã ãŠã§ã¢ãããŠã³ããŒããã
https://github.com/Salicylic-acid3/Zenn-Content-Public/blob/main/samples/gl516design/template.zip
-
ããŠã³ããŒããããã¡ãŒã ãŠã§ã¢ã¯å±éããŠQMKãã¡ãŒã ãŠã§ã¢ãé 眮ãããã£ã¬ã¯ããªã®
qmk_firmware/keyboards/gl516
é äžã«é 眮ããŠãã ããã
ïŒïŒãªããŒã ãã
template
ãšããååã®ãŸãŸã§ã¯ã¢ã¬ããªãã®ã§ãããŒããŒãåãèªåã®ãã®ã«å€æŽããŸãããã
- ãã©ã«ãåãå€æŽããã
-
template.c
ãštemplate.h
ã®ãã¡ã€ã«åãå€æŽããã
- å
template.c
ã®äžã®ãã¡ã€ã«åãå€æŽããã
- #include "template.h"
+ #include "yatteiki.h"
ïŒïŒconfig.hãç·šéãã
config.h
ã¯ãã®åã®éããããŒããŒãã®åºæ¬çãªèšå®ãèšèŒããŸãã
- USBæ©åšãšããŠã®æ å ±ãå€æŽããã
#define VENDOR_ID 0xF516 //GL516ãããã£ãã ããæ£èŠã«ååŸããŠå€æŽããŠãããã
#define PRODUCT_ID 0xF516 //ä»»æã®å€ã«å€æŽãã§ããã ãä»ã®ããŒããŒããšãã¶ããªãããã«ååãããã£ãã工倫ããŠããã
#define DEVICE_VER 0x0001
#define MANUFACTURER Salicylic_Acid //ä»»æã®å€ã«å€æŽã
#define PRODUCT template //ä»»æã®å€ã«å€æŽ
- ããŒãããªã¯ã¹ã®ãµã€ãºãå€æŽããã
/* key matrix size */
#define MATRIX_ROWS 10 //MATRIX_ROW_PINSã®åæ°ãè¡æ°ãæžãããå Žåã¯æžããã
#define MATRIX_COLS 8 //MATRIX_COL_PINSã®æ°ãåæ°ãæžãããå Žåã¯æžããã
// wiring of each half
#define MATRIX_ROW_PINS { D1, D0, D4, C6, D7 } //è¡æ°ãæžãããå Žåã¯å³ããæžããã
#define MATRIX_COL_PINS { F4, F5, F6, F7, B1, B3, B2, E6 } //åæ°ãæžãããå Žåã¯å³ããæžããã
#define UNUSED_PINS
- LEDã®èšå®ãå€æŽããã
/* ws2812 RGB LED */
#define RGB_DI_PIN D3 //LEDã䜿çšããªãå Žåã¯ãã®è¡ãå«ããŠå
šãŠåé€ã
#ifndef RGBLED_NUM
#define RGBLED_NUM 80 //LEDã®æ°ãä»»æã®å€ã«å€æŽã
#endif
ïŒïŒå template.hãç·šéãã
å
template.hãšãããã¡ã€ã«ã«ã¯ã¬ã€ã¢ãŠããã¯ããå®çŸ©ãããŠããŸãã
ããã¯ããŒãããªã¯ã¹ãçšããè¡åã®ã©ã®ããŒãæå¹ã§ãã©ãããé
眮ã§ããŒã䞊ãã§ããã®ããå®çŸ©ããŠããŸãã
以äžã¯ããŒãããªã¯ã¹ãçšããè¡åã®ã©ã®ããŒãæå¹ããå®çŸ©ããŠããŸãã
#define LAYOUT( \
ïœïœïœïœïœïœïœïœçç¥ïœïœïœïœïœïœïœïœ
) \
{ \
{ L00, L01, L02, L03, L04, L05, L06, L07 }, \
{ L10, L11, L12, L13, L14, L15, L16, L17 }, \
{ L20, L21, L22, L23, L24, L25, L26, L27 }, \
{ L30, L31, L32, L33, L34, L35, L36, L37 }, \
{ L40, L41, L42, L43, L44, L45, L46, L47 }, \
{ R00, R01, R02, R03, R04, R05, R06, R07 }, \
{ R10, R11, R12, R13, R14, R15, R16, R17 }, \
{ R20, R21, R22, R23, R24, R25, R26, R27 }, \
{ R30, R31, R32, R33, R34, R35, R36, R37 }, \
{ R40, R41, R42, R43, R44, R45, R46, R47 } \
}
ã€ãŸããèšèšå·¥çšã§åè·¯å³ããåé€ããããŒã®éšåã«KC_NO
ãå
¥ããå¿
èŠããããŸãã
以äžã¯è¡åã§å®çŸ©ãããã¹ã€ããããã©ã®ãããªé çªã«äžŠãã§ããã®ããå®çŸ©ããŠããŸãã
ããã¯åºæ¿ãšèŠæ¯ã¹ãªããæžããŠãããŸãã
#define LAYOUT( \
L00, L01, L02, L03, L04, L05, L06, L07, R00, R01, R02, R03, R04, R05, R06, R07, \
L10, L11, L12, L13, L14, L15, L16, L17, R10, R11, R12, R13, R14, R15, R16, R17, \
L20, L21, L22, L23, L24, L25, L26, L27, R20, R21, R22, R23, R24, R25, R26, R27, \
L30, L31, L32, L33, L34, L35, L36, L37, R30, R31, R32, R33, R34, R35, R36, R37, \
L40, L41, L42, L43, L44, L45, L46, L47, R40, R41, R42, R43, R44, R45, R46, R47 \
) \
{ \
ïœïœïœïœïœïœïœïœçç¥ïœïœïœïœïœïœïœïœ
}
#define LAYOUT( \
L00, L01, L02, L03, L04, L05, L06, R00, R01, R02, R03, R04, R05, R06, \
L10, L11, L12, L13, L14, L15, L16, R10, R11, R12, R13, R14, R15, \
L20, L21, L22, L23, L24, L25, L26, R20, R21, R22, R23, R24, R25, R26, \
L30, L31, L32, L34, L35, L36, R31, R33, R34, R35, R36 \
) \
{ \
ïœïœïœïœïœïœïœïœçç¥ïœïœïœïœïœïœïœïœ
}
- 以äžã®è§£èª¬ãèžãŸããŠã¬ã€ã¢ãŠããã¯ããå€æŽããã
#define LAYOUT( \
L00, L01, L02, L03, L04, L05, L06, R00, R01, R02, R03, R04, R05, R06, \
L10, L11, L12, L13, L14, L15, L16, R10, R11, R12, R13, R14, R15, \
L20, L21, L22, L23, L24, L25, L26, R20, R21, R22, R23, R24, R25, R26, \
L30, L31, L32, L34, L35, L36, R31, R33, R34, R35, R36 \
) \
{ \
{ L00, L01, L02, L03, L04, L05, L06 }, \
{ L10, L11, L12, L13, L14, L15, L16 }, \
{ L20, L21, L22, L23, L24, L25, L26 }, \
{ L30, L31, L32, KC_NO, L34, L35, L36 }, \
{ R00, R01, R02, R03, R04, R05, R06 }, \
{ R10, R11, R12, R13, R14, R15, KC_NO }, \
{ R20, R21, R22, R23, R24, R25, R26 }, \
{ KC_NO, R31, KC_NO, R33, R34, R35, R36 } \
}
ïŒïŒããŒããããç·šéãã
- defaultããŒããããäœæããã
QMKå ¬åŒããã¥ã¡ã³ãã®ããŒã³ãŒãäžèŠ§ãåç §ããkeymaps/defaultãã©ã«ãé äžã®keymap.c
ãç·šéããã
[0] = LAYOUT(
//,-----------------------------------------------------------------------------------------------------------------------------------------------.
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_PSLS, KC_PAST, KC_PMNS, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL,
//|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_P7, KC_P8, KC_P9, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC,
//|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_P4, KC_P5, KC_P6, 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_P1, KC_P2, KC_P3, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_UP, KC_RSFT,
//|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
KC_LCTRL, KC_LGUI, KC_LALT, KC_ENT, KC_SPC, KC_BSPC, KC_P0, KC_PDOT, KC_PPLS, KC_DEL, KC_SPC, KC_RALT, KC_APP, KC_LEFT, KC_DOWN, KC_RGHT
//|-----------------------------------------------------------------------------------------------------------------------------------------------'
)
- defaultããŒããããã³ã³ãã€ã«ããã
make gl516/template:default
QMK MSYSã䜿çšããŠããå Žåã¯ä»¥äžãè©ŠããŠã¿ãã
qmk compile -kb gl516/template -km default
- VIAããŒããããäœæããã
defaultããŒããããVIAçšã®ããŒãããã«äžæžãããã
[0] = LAYOUT(
//,-----------------------------------------------------------------------------------------------------------------------------------------------.
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_PSLS, KC_PAST, KC_PMNS, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL,
//|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_P7, KC_P8, KC_P9, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC,
//|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_P4, KC_P5, KC_P6, 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_P1, KC_P2, KC_P3, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_UP, KC_RSFT,
//|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
KC_LCTRL, KC_LGUI, KC_LALT, KC_ENT, KC_SPC, KC_BSPC, KC_P0, KC_PDOT, KC_PPLS, KC_DEL, KC_SPC, KC_RALT, KC_APP, KC_LEFT, KC_DOWN, KC_RGHT
//|-----------------------------------------------------------------------------------------------------------------------------------------------'
), âããã®ã«ã³ããå¿ããã«ïŒïŒ
VIAçšã®ããŒãããã«ã¯ã¬ã€ã€ãŒã4ã€å¿ èŠãªã®ã§ãdefaultã¬ã€ã€ãŒä»¥å€ãäœãã
[1] = LAYOUT(
//,-----------------------------------------------------------------------------------------------------------------------------------------------.
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
//|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
//|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
//|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
//|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
//|-----------------------------------------------------------------------------------------------------------------------------------------------'
),
ïœïœïœïœïœïœïœïœçç¥ïœïœïœïœïœïœïœïœ
[3] = LAYOUT(
//,-----------------------------------------------------------------------------------------------------------------------------------------------.
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
//|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
//|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
//|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
//|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
//|-----------------------------------------------------------------------------------------------------------------------------------------------'
) âããã®ã«ã³ãã¯äžèŠïŒïŒ
Tips:LEDã«ããã¬ã€ã€ãŒã€ã³ãžã±ãŒã¿æ©èœã«ã€ããŠ
ãã®æã®ä»å æ©èœã¯defaultããŒãããã«è¿œå ããããšã¯ãªã¹ã¹ã¡ããŸããããVIAçšã®ããŒãããã«ã¯è¿œå ããŠãããŠããããšæããŸãã
//A description for expressing the layer position in LED mode.
layer_state_t layer_state_set_user(layer_state_t state) {
#ifdef RGBLIGHT_ENABLE
switch (get_highest_layer(state)) {
case 1:
rgblight_sethsv_at(HSV_BLUE, 0); //è²ãå€ããã«ã¯HSV_BLUEãªã©ã®æãç·šéããŠãã ããã
break;
case 2:
rgblight_sethsv_at(HSV_RED, 0);
break;
case 3:
rgblight_sethsv_at(HSV_PURPLE, 0);
break;
default: // for any other layers, or the default layer
rgblight_sethsv_at( 0, 0, 0, 0); //defaultã¬ã€ã€ãŒã§ã¯å
ããªãããã«ããŠããŸãããdefaultã¬ã€ã€ãŒã§ãå
ããããå Žåã¯äžãšåãæ§ã«å
¥åããŠãã ããã
break;
}
rgblight_set_effect_range( 1, 79); //ã¬ã€ã€ãŒã€ã³ãžã±ãŒã¿æ©èœã«LEDãäœå䜿çšãããããæ®ãäœåã¯æ®éã«å
ããããããèšè¿°ããŸãããã®äŸã®å Žåã1åç®ã ããã€ã³ãžã±ãŒã¿ã«çšããæ®ã79åã¯æ®éã«å
ããŸãã
#endif
return state;
}
- VIAçšããŒããããã³ã³ãã€ã«ããã
make gl516/template:via
QMK MSYSã䜿çšããŠããå Žåã¯ä»¥äžãè©ŠããŠã¿ãã
qmk compile -kb gl516/template -km via
ïŒïŒVIAçšJSONãã¡ã€ã«ãäœæãã
ãã¡ãã®èšäºãåç §ããŠãã ããã
GL516äœäŸã®KLEã®ãªã³ã¯ãšJSONãã¡ã€ã«ãæžããŠãããŸãã®ã§ãåèã«ããŠãã ãããããŒããŒãå | KLE | JSON |
---|---|---|
template | ãã¡ã | ãã¡ã |
A52GL | ãã¡ã | ãã¡ã |
J73GL | ãã¡ã | ãã¡ã |
N51GL | ãã¡ã | ãã¡ã |
å¥è§£ïŒQMKç°å¢ãå ¥ããããªããã³ã³ãã€ã«ãªããŠããããªãããšããæ¹ãž
äžèšã®éãããã³ãã¬ãŒããã¡ãŒã ãŠã§ã¢ããåé€ããŠå°çšã®ãã¡ãŒã ãŠã§ã¢ãäœæããã®ã§ãã©ãããŠããã¡ãŒã ãŠã§ã¢ã®äœæãé£ããæ¹ã¯ãã³ãã¬ãŒããã¡ãŒã ãŠã§ã¢ããã®ãŸãŸäœ¿çšããŠã䜿ããŸãã
templateã®ãã¡ãŒã ãŠã§ã¢ããã®ãŸãŸäœ¿ããšåå¿ããªãããŒãååšããŠããŸããŸãã®ã§ãVIAçšã®JSONãã¡ã€ã«ãå°ãã ãä¿®æ£ããŠäœ¿ãããšã§éè²ãªã䜿ãããšãã§ããŸãã
VIAçšãã¡ãŒã ãŠã§ã¢ã®Hexãã¡ã€ã«ã¯ãã¡ãã
VIAçšãã¡ãŒã ãŠã§ã¢ã®JSONãã¡ã€ã«ã¯ãã¡ãã
-
KLEã«ãŠäžèŠãªããŒãåé€ããŸãã¯ã¬ã€ã¢ãŠããå€æŽã
-
jsonãã¡ã€ã«ãããŠã³ããŒãããã
-
ããŠã³ããŒãããjsonãã¡ã€ã«ã®äžéšãã³ããŒ
[
{
"name": "template"
},
[ //âãããã
"0,0",
"0,1",
"0,2",
"0,3",
"0,4",
"0,5",
{
"x": 3
},
"5,1",
"5,2",
"5,3",
"5,4",
"5,5",
"5,6",
"5,7"
],
ïœïœïœïœïœïœïœïœçç¥ïœïœïœïœïœïœïœïœ
[
"4,0",
"4,1",
"4,2",
"4,3",
"4,4",
"4,5",
{
"x": 3
},
"9,1",
"9,2",
"9,3",
"9,4",
"9,5",
"9,6",
"9,7"
] //âãããŸã§ãã³ããŒ
]
- templateãã¡ãŒã ãŠã§ã¢çšã®JSONãã¡ã€ã«ã«ããŒã¹ãããã
{
"name": "template",
"vendorId": "0xF516",
"productId": "0xF516",
"lighting": "qmk_rgblight",
"matrix": { "rows": 10, "cols": 8 },
"layouts": {
"keymap": [
[ //âãããã
"0,0",
"0,1",
"0,2",
"0,3",
"0,4",
"0,5",
"0,6",
"0,7",
"5,0",
"5,1",
"5,2",
"5,3",
"5,4",
"5,5",
"5,6",
"5,7"
],
ïœïœïœïœïœïœïœïœçç¥ïœïœïœïœïœïœïœïœ
[
"4,0",
"4,1",
"4,2",
"4,3",
"4,4",
"4,5",
"4,6",
"4,7",
"9,0",
"9,1",
"9,2",
"9,3",
"9,4",
"9,5",
"9,6",
"9,7"
] //âãããŸã§ã眮ãæãã
]
}
}
- ãããRemapãVIAã§èªã¿èŸŒãŸããããšã§ãã¡ãŒã ãŠã§ã¢ãªã©ãäžåæžããã«äœã£ãã¬ã€ã¢ãŠãã§ããŒããŒãã䜿çšã§ããã