自作キーボード : 空中配線 #2 qmk firmware 書き込み
完成品購入
↓
自作キーボード : 空中配線 #1 で作成した 自作キーボードの pro micro へ書き込みをします
install qmk_firmware
sudo pacman -S git
↓
git clone --recurse-submodules https://github.com/qmk/qmk_firmware.git
↓
cd qmk_firmware
↓
sudo ./util/qmk_install.sh
Packages (15) compiler-rt-11.1.0-1 confuse-3.3-3 libftdi-1.5-1 libusb-compat-0.1.7-1 arm-none-eabi-binutils-2.36.1-2
arm-none-eabi-gcc-10.2.0-1 arm-none-eabi-newlib-4.1.0-1 avr-binutils-2.36.1-2 avrdude-1:6.3-7 clang-11.1.0-1
dfu-programmer-0.7.2-3 dfu-util-0.10-1 unzip-6.0-14 wget-1.21.1-1 zip-3.0-9
必要ファイルをインストール
↓
ファームウェア作成
./util/new_keyboard.sh
↓
Keyboard Name: protokey
Keyboard Type [avr]: 何も入力しないでエンター
Your Name [Your Name]: prototype
↓
qmkfirmware/keyboards/protokey/config.h
/* Copyright 2021 prototype */
#pragma once
#include "config_common.h"
/* USB Device descriptor parameter */
#define VENDOR_ID 0xFEED
#define PRODUCT_ID 0x0000
#define DEVICE_VER 0x0001
#define MANUFACTURER prototype
#define PRODUCT protokey
/* key matrix size */
#define MATRIX_ROWS 4
#define MATRIX_COLS 12
/* Keyboard Matrix Assignments
D3 TXO ┌─■─┐ RAW RAW
D2 RX1 │o o│ GND GND
GND GND │o o│ RST RESET
GND GND │o o│ VCC VCC
D1 2 │o o│ A3 F4
D0 3 │o o│ A2 F5
D4 4 │o o│ A1 F6
C6 5 │o o│ A0 F7
D7 6 │o o│ 15 B1
E6 7 │o o│ 14 B3
B4 8 │o o│ 16 B2
B5 9 │o o│ 10 B6
└───┘
*/
#define MATRIX_ROW_PINS { F4, F5, F6, F7 }
#define MATRIX_COL_PINS { D1, D0, D4, C6, D7, E6, B4, B5, B6, B2, B3, B1 }
#define UNUSED_PINS
/* COL2ROW, ROW2COL */
#define DIODE_DIRECTION ROW2COL
/* Split Keyboard specific options, make sure you have 'SPLIT_KEYBOARD = yes' in your rules.mk, and define SOFT_SERIAL_PIN. */
#define SOFT_SERIAL_PIN D0 // or D1, D2, D3, E6
//#define LED_NUM_LOCK_PIN B0
//#define LED_CAPS_LOCK_PIN B1
//#define LED_SCROLL_LOCK_PIN B2
//#define LED_COMPOSE_PIN B3
//#define LED_KANA_PIN B4
//#define BACKLIGHT_PIN B7
//#define BACKLIGHT_LEVELS 3
//#define BACKLIGHT_BREATHING
//#define RGB_DI_PIN E2
//#ifdef RGB_DI_PIN
//# define RGBLED_NUM 16
//# define RGBLIGHT_HUE_STEP 8
//# define RGBLIGHT_SAT_STEP 8
//# define RGBLIGHT_VAL_STEP 8
//# define RGBLIGHT_LIMIT_VAL 255 /* The maximum brightness level */
//# define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */
/*== all animations enable ==*/
//# define RGBLIGHT_ANIMATIONS
/*== or choose animations ==*/
//# define RGBLIGHT_EFFECT_BREATHING
//# define RGBLIGHT_EFFECT_RAINBOW_MOOD
//# define RGBLIGHT_EFFECT_RAINBOW_SWIRL
//# define RGBLIGHT_EFFECT_SNAKE
//# define RGBLIGHT_EFFECT_KNIGHT
//# define RGBLIGHT_EFFECT_CHRISTMAS
//# define RGBLIGHT_EFFECT_STATIC_GRADIENT
//# define RGBLIGHT_EFFECT_RGB_TEST
//# define RGBLIGHT_EFFECT_ALTERNATING
/*== 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
上書き
↓
qmkfirmware/keyboards/protokey/protokey.h
/* Copyright 2021 prototype */
#pragma once
#include "quantum.h"
/* This is a shortcut to help you visually see your layout. */
#define LAYOUT( \
ka1, ka2, ka3, ka4, ka5, ka6, ka7, ka8, ka9, kaa, kab, kac, \
kb1, kb2, kb3, kb4, kb5, kb6, kb7, kb8, kb9, kba, kbb, kbc, \
kc1, kc2, kc3, kc4, kc5, kc6, kc7, kc8, kc9, kca, kcb, kcc, \
kd1, kd2, kd3, kd4, kd5, kd6, kd7, kd8, kd9, kda, kdb, kdc \
) { \
{ ka1, ka2, ka3, ka4, ka5, ka6, ka7, ka8, ka9, kaa, kab, kac }, \
{ kb1, kb2, kb3, kb4, kb5, kb6, kb7, kb8, kb9, kba, kbb, kbc }, \
{ kc1, kc2, kc3, kc4, kc5, kc6, kc7, kc8, kc9, kca, kcb, kcc }, \
{ kd1, kd2, kd3, kd4, kd5, kd6, kd7, kd8, kd9, kda, kdb, kdc } \
}
上書き
↓
keyboards/protokey/keymaps/default/keymap.c
/* Copyright 2021 prototype */
// https://github.com/qmk/qmk_firmware/blob/master/quantum/keymap_extras/keymap_jp.h
// https://beta.docs.qmk.fm/using-qmk/simple-keycodes/keycodes_basic
#include QMK_KEYBOARD_H
#include"keymap_jp.h"
// Defines names for use in layer keycodes and the keymap
enum layer_names {
_PROTO,
_QWERTY,
_EX1,
_EX2,
_EX3,
_LEFT,
_P0,
_P1,
_P2,
_P3
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* Base
┌──────┬──────┬──────┬──────┬──────┬──────┼──────┬──────┬──────┬──────┬──────┬──────┐
│ Tab │ Q │ W │ D │ F │ - │ / │ L │ G │ K │ P │ ` │
├──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤
│ Ctrl │ U │ E │ A │ O │ I │ R │ S │ N │ T │ H │Enter │
├──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤
│ Shift│ Z │ X │ C │ V │ ,< │ .> │ M │ B │ Y │ J │ ? │
├──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤
│ Esc │ Alt │ GUI │ EX1 │EX2/Mu│ BS │Space │EX3/He│ Left │ Down │ Up │Right │
└──────┴──────┴──────┴──────┴──────┴──────┼──────┴──────┴──────┴──────┴──────┴──────┘
*/
[_PROTO] = LAYOUT(
KC_TAB, KC_Q, KC_W, KC_D, KC_F, KC_MINS, KC_SLSH, KC_L, KC_G, KC_K, KC_P, JP_GRV,
KC_LCTL, KC_U, KC_E, KC_A, KC_O, KC_I, KC_R, KC_S, KC_N, KC_T, KC_H, KC_ENT,
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_COMM, KC_DOT, KC_M, KC_B, KC_Y, KC_J, KC_QUES,
KC_ESC, KC_LALT, KC_LGUI, MO(_EX1), LT(_EX2, KC_MHEN), KC_BSPC, KC_SPC, LT(_EX3, KC_HENK), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT
),
/* QWER
┌──────┬──────┬──────┬──────┬──────┬──────┼──────┬──────┬──────┬──────┬──────┬──────┐
│ Tab │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ @` │
├──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤
│ Ctrl │ A │ S │ D │ F │ G │ H │ J │ K │ L │ -_ │ Enter│
├──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤
│ Shift│ Z │ X │ C │ V │ B │ N │ M │ , │ . │ /? │ \_ │
├──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤
│ ESC │ Alt │ GUI │ F1 │LoMuhe│ BS │Space │RaHenk│ Left │ Down │ Up │Right │
└──────┴──────┴──────┴──────┴──────┴──────┼──────┴──────┴──────┴──────┴──────┴──────┘
*/
[_QWERTY] = LAYOUT( \
_______, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, \
_______, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_MINS, KC_ENT, \
_______, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, JP_BSLS, \
_______, _______, _______, _______, _______, _______, _______, _______, KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT \
),
/* EX1
┌──────┬──────┬──────┬──────┬──────┬──────┼──────┬──────┬──────┬──────┬──────┬──────┐
│ │Ctrl-S│Ctrl-Y│ ↑ │Ctrl-F│ │ │ │ │ │ │ │
├──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤
│ │Ctrl-A│ ← │ ↓ │ → │ │ │Vol-DW│Vol-UP│Bli-DW│Bli-UP│ │
├──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤
│ │Ctrl-Z│Ctrl-X│Ctrl-C│Ctrl-V│ │ │ │ │Left-H│QWERTY│Protok│
├──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤
│ │ │ │■■■■■■│ │ Del │ │ │ Home │ PgDw │ PgUP │ End │
└──────┴──────┴──────┴──────┴──────┴──────┼──────┴──────┴──────┴──────┴──────┴──────┘
*/
[_EX1] = LAYOUT(
_______, C(KC_S), C(KC_Y), KC_UP, C(KC_F), _______, _______, _______, _______, _______, _______, _______, \
_______, C(KC_A), KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, KC_VOLD, KC_VOLU, KC_BRID, KC_BRIU, _______, \
_______, C(KC_Z), C(KC_X), C(KC_C), C(KC_V), _______, _______, _______, _______, DF(_LEFT), DF(_QWERTY), DF(_PROTO), \
_______, _______, _______, _______, _______, KC_DEL, _______, _______, KC_HOME, KC_PGDN, KC_PGUP, KC_END \
),
/* EX2
┌──────┬──────┬──────┬──────┬──────┬──────┼──────┬──────┬──────┬──────┬──────┬──────┐
│ │ │ 7 │ 8 │ 9 │PrintS│ F1 │ F2 │ F3 │ F4 │ F5 │ F6 │
├──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤
│ │ │ 4 │ 5 │ 6 │Insert│ F7 │ F8 │ F9 │ F10 │ F11 │ F12 │
├──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤
│ │ 0 │ 1 │ 2 │ 3 │ CAPS │半/全│無変換│ 変換 │ かな │ │ │
├──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤
│ │ │ │ │■■■■■■│ Del │ │ │ Home │ PgDw │ PGUP │ End │
└──────┴──────┴──────┴──────┴──────┴──────┼──────┴──────┴──────┴──────┴──────┴──────┘
*/
[_EX2] = LAYOUT(
_______, _______, KC_7, KC_8, KC_9, KC_PSCR, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, \
_______, _______, KC_4, KC_5, KC_6, KC_INS, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, \
_______, KC_0, KC_1, KC_2, KC_3, JP_CAPS, KC_LANG5, KC_MHEN, KC_HENK, KC_KANA, _______, _______, \
_______, _______, _______, _______, _______, KC_DEL, _______, _______, KC_HOME, KC_PGDN, KC_PGUP, KC_END \
),
/* EX3
┌──────┬──────┬──────┬──────┬──────┬──────┼──────┬──────┬──────┬──────┬──────┬──────┐
│ │ , │ & │ ~ │ = │ _ │ ? │ ( │ ) │ ' │ " │ @ │
├──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤
│ │ ` │ $ │ % │ ^ │ % │ # │ [ │ ] │ : │ ; │ | │
├──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤
│ │ . │ ! │ @ │ # │ < │ > │ { │ } │ + │ * │ \ │
├──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤
│ │ │ │ │ │ Del │ │■■■■■■│ Home │ PgDw │ PGUP │ End │
└──────┴──────┴──────┴──────┴──────┴──────┼──────┴──────┴──────┴──────┴──────┴──────┘
*/
[_EX3] = LAYOUT(
_______, KC_COMM, JP_AMPR, JP_TILD, JP_EQL, JP_UNDS, KC_QUES, JP_LPRN, JP_RPRN, JP_QUOT, JP_DQUO, JP_AT, \
_______, JP_GRV, JP_DLR, JP_PERC, JP_CIRC, JP_PERC, JP_HASH, JP_LBRC, JP_RBRC, JP_COLN, JP_SCLN, JP_PIPE, \
_______, KC_DOT, KC_EXLM, JP_AT, JP_HASH, JP_LABK, JP_RABK, JP_LCBR, JP_RCBR, JP_PLUS, JP_ASTR, JP_BSLS, \
_______, _______, _______, _______, _______, KC_DEL, _______, _______, KC_HOME, KC_PGDN, KC_PGUP, KC_END \
),
/* LEFT
┌──────┬──────┬──────┬──────┬──────┬──────┐
│ Tab │ Q │ W │ D │ F │ BS │
├──────┼──────┼──────┼──────┼──────┼──────┤
│ Ctrl │ U │ E │ A │ O │ I │
├──────┼──────┼──────┼──────┼──────┼──────┤
│Shift │ Z │ X │ C │ V │Space │
├──────┼──────┼──────┼──────┼──────┼──────┤
│Esc/ 1│H/ZAlt│ GUI │Hen/ 2│Mu / 3│ 4 │
└──────┴──────┴──────┴──────┴──────┴──────┘
*/
[_LEFT] = LAYOUT(
KC_TAB, KC_Q, KC_W, KC_D, KC_F, KC_BSPC, _______, _______, _______, _______, _______, _______, \
KC_LCTL, KC_U, KC_E, KC_A, KC_O, KC_I, _______, _______, _______, _______, _______, _______, \
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_SPC, _______, _______, _______, _______, _______, _______, \
LT(_P1, KC_ESC), LALT(KC_LANG5), KC_LGUI, LT(_P2, KC_HENK), LT(_P3, KC_MHEN), MO(_P0), _______, _______, _______, _______, _______, _______ \
),
/* P0
┌──────┬──────┬──────┬──────┬──────┬──────┐
│ │ p │ k │ g │ l │ Del │
├──────┼──────┼──────┼──────┼──────┼──────┤
│ │ r │ t │ n │ s │ h │
├──────┼──────┼──────┼──────┼──────┼──────┤
│ │ j │ y │ b │ m │Enter │
├──────┼──────┼──────┼──────┼──────┼──────┤
│ │ │ │ │ │■■■■■■│
└──────┴──────┴──────┴──────┴──────┴──────┘
*/
[_P0] = LAYOUT(
_______, KC_P, KC_K, KC_G, KC_L, KC_DEL, _______, _______, _______, _______, _______, _______, \
_______, KC_H, KC_T, KC_N, KC_S, KC_R, _______, _______, _______, _______, _______, _______, \
_______, KC_J, KC_Y, KC_B, KC_M, KC_ENT, _______, _______, _______, _______, _______, _______, \
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \
),
/* p1
┌──────┬──────┬──────┬──────┬──────┬──────┐
│ F1 │ F2 │ F3 │ F4 │ F5 │ F6 │
├──────┼──────┼──────┼──────┼──────┼──────┤
│ F7 │ F8 │ F9 │ F10 │ F11 │ F12 │
├──────┼──────┼──────┼──────┼──────┼──────┤
│Protok│QWERTY│ │ │PrintS│Insert│
├──────┼──────┼──────┼──────┼──────┼──────┤
│■■■■■■│ │ │ │ │ │
└──────┴──────┴──────┴──────┴──────┴──────┘
*/
[_P1] = LAYOUT(
KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, _______, _______, _______, _______, _______, _______, \
KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, _______, _______, _______, _______, \
DF(_PROTO), DF(_QWERTY), _______, _______, KC_PSCR, KC_INS, _______, _______, _______, _______, _______, _______, \
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \
),
/* p2
┌──────┬──────┬──────┬──────┬──────┬──────┐
│ _ │ / │ - │ ↑ │ ' │ " │
├──────┼──────┼──────┼──────┼──────┼──────┤
│ @ │ [ │ ← │ ↓ │ → │ ] │
├──────┼──────┼──────┼──────┼──────┼──────┤
│ │ ^~ │ \| │ # │ , │ . │
├──────┼──────┼──────┼──────┼──────┼──────┤
│ │ │ │■■■■■■│ │ │
└──────┴──────┴──────┴──────┴──────┴──────┘
*/
[_P2] = LAYOUT(
JP_UNDS, JP_SLSH, KC_MINS, KC_UP, JP_QUOT, JP_DQUO, _______, _______, _______, _______, _______, _______, \
JP_AT, JP_LBRC, KC_LEFT, KC_DOWN, KC_RGHT, JP_RBRC, _______, _______, _______, _______, _______, _______, \
_______, JP_CIRC, JP_BSLS, JP_HASH, KC_COMM, KC_DOT, _______, _______, _______, _______, _______, _______, \
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \
),
/* p3
┌──────┬──────┬──────┬──────┬──────┬──────┐
│ │ + │ 7 │ 8 │ 9 │ ` │
├──────┼──────┼──────┼──────┼──────┼──────┤
│ │ = │ 4 │ 5 │ 6 │ : │
├──────┼──────┼──────┼──────┼──────┼──────┤
│ │ 0 │ 1 │ 2 │ 3 │ ; │
├──────┼──────┼──────┼──────┼──────┼──────┤
│ │ │ │ │■■■■■■│ │
└──────┴──────┴──────┴──────┴──────┴──────┘
*/
[_P3] = LAYOUT(
_______, JP_PLUS, KC_7, KC_8, KC_9, JP_GRV, _______, _______, _______, _______, _______, _______, \
_______, JP_EQL, KC_4, KC_5, KC_6, JP_COLN, _______, _______, _______, _______, _______, _______, \
_______, KC_0, KC_1, KC_2, KC_3, JP_SCLN, _______, _______, _______, _______, _______, _______, \
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \
)
};
上書き
↓
テスト
sudo make protokey:default
↓
promicro 書き込み
USBケーブル で promicro と PC を接続
↓
sudo make protokey:default:avrdude
↓
Pro micro の RST GRD をピンセット等でショート
↓
avrdude: safemode: Fuses OK (E:FB, H:D8, L:FF)
avrdude done. Thank you.
↓
pro micro との接続
画像の上と右の数字が pro micro の基盤にプリントされている基盤の数字に電線を入れてはんだ付け
↓
画像では ブレッドボード と ケーブル を使って接続していますが
直接 pro micro にケーブルを差し込んで直接はんだ付けしても問題ありません
↓
完成品購入
-
おすすめ
- 130種類の メカニカル キースイッチテスター の 音 と 種類 を解説
- 40%キーボード について
- 自作キーボード : 空中配線 #1 作り方
- arch mac : 初期設定 #1 install sever
- 自作キーボード : 合理的なキー配列について protokey配列
↓

最後までご覧いただきありがとうございました。参考になれば幸いです
↓
いつも助けてくださってありがとうございます
amazon ギフト券 投げ銭リンク
これからもお役に立てる情報を更新します。皆さんのお助けに飛び跳ねて喜びます。ありがとうございます。