DIY keyboard: How to make aerial wiring with LED prototype keyboard type-a

Required materials

keyboard

Keyboard case

keyboard

Key switches

keyboard

Keycaps

keyboard

Promicro

keyboard

Heat-resistant crosslinked vinyl insulated wire / insulated enamel wire

keyboard

Rectifier diode / switching diode

keyboard

3mm bullet type LED diode

・Soldering iron
・Solder

How to assemble

keyboard

Disassemble the key switch and insert the LED diode. A 3mm bullet-shaped LED fits nicely

keyboard keyboard

After inserting the LED diode, replace the key switch. Make this 18 pieces

keyboard

Refer to the image and assign the key switch with LED to the yellow part and the other key switches to the white part to fit the keyboard frame.

keyboard

Insert your favorite key switch into the keyboard case

keyboard

Solder the rectifier diode as shown in the image with reference to the drawing.

keyboard

The direction of the rectifier diode is (-) → (+). Be sure to unify the orientation and solder in the same way as the drawing.

keyboard

Solder the vertical lines. It doesn't matter what method or material you use as long as the horizontal black line and the vertical red line are insulated.

This video uses insulated enamel wire. This insulating enamel wire is energized by scraping or burning off the insulating coating.

Use a soldering iron to burn off the connection part of the key switch so that only the key switch part is energized.

keyboard

Completed image

keyboard

Refer to the image and solder the plus and minus of the LED diode with an insulating wire. Make sure that the plus and minus are not energized

keyboard

Completed image

keyboard keyboard

Solder the numbers enclosed in red on the Promicro and the numbers on the design drawing with a cable such as a heat-resistant crosslinked vinyl insulated wire.

keyboard keyboard

Completed image

Flashing using qmk_firmware

How to install Arch linux

Write using Arch linux

sudo pacman -Syu

Update entire package

sudo pacman -S git

Install git

python3 -m pip install --upgrade pip

Update pip

git clone --recurse-submodules https://github.com/qmk/qmk_firmware.git

Download qmk_firmware

cd qmk_firmware

Install required files

sudo ./util/qmk_install.sh

./util/new_keyboard.sh

Keyboard Name: pka
Keyboard Type [avr]: Enter without entering anything
Your Name [Your Name]: prototype

overwrite

micro keyboards/pka/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 { B1, B3, B2, B6, B5, B4, E6, D7, C6, D4, D0, D1 }
#define UNUSED_PINS 

/* COL2ROW, ROW2COL */
#define DIODE_DIRECTION COL2ROW

/* 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

#define BACKLIGHT_PIN D2
#define BACKLIGHT_LEVELS 10

overwrite pka.h

micro keyboards/pka/pka.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 } \
}

keymap.c 上書き

micro keyboards/pka/keymaps/default/keymap.c

/* Copyright 2021 prototype */
// https://beta.docs.qmk.fm/using-qmk/simple-keycodes/keycodes
// https://github.com/qmk/qmk_firmware/blob/master/quantum/keymap_extras/keymap_jp.h


#include QMK_KEYBOARD_H
#include"keymap_jp.h"

// Defines names for use in layer keycodes and the keymap
enum layer_names {
    _PRO,
    _QWE,
    _LEF,
    _E1,
    _E2,
    _E3,
    _L1,
    _L2
};

const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
    /* _PRO
    ┌──────┬──────┬──────┬──────┬──────┬──────┼──────┬──────┬──────┬──────┬──────┬──────┐
    │ 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  │   ?  │
    ├──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤
    │L1/Esc│Alt/半│ GUI  │  E1  │E2/Muh│  BS  │Space │E3/Hen│ Left │ Down │  Up  │Right │
    └──────┴──────┴──────┴──────┴──────┴──────┼──────┴──────┴──────┴──────┴──────┴──────┘
    */
    [_PRO] = 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,
    LT(_L1, KC_ESC), ALT_T(KC_LANG5), KC_LGUI, MO(_E1), LT(_E2, KC_MHEN),  KC_BSPC,   KC_SPC,  LT(_E3, KC_HENK), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT
    ),
    /* QWERTY
    ┌──────┬──────┬──────┬──────┬──────┬──────┼──────┬──────┬──────┬──────┬──────┬──────┐
    │ 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 │
    └──────┴──────┴──────┴──────┴──────┴──────┼──────┴──────┴──────┴──────┴──────┴──────┘
    */
    [_QWE] = 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, \
    _______, _______, _______, _______, _______, _______,   _______, _______, _______, _______, _______, _______ \
    ),
    /* E1
    ┌──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┐
    │   |  │  ;+  │  :*  │  ↑   │  -=  │  /?  │      │Bacl-↓│Bacl-↑│      │      │      │
    ├──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤
    │   "  │  [   │  ←   │  ↓   │  →   │  ]   │      │Vol-DW│Vol-UP│Bli-DW│Bli-UP│      │
    ├──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤
    │      │  \_  │  ^~  │  @`  │  ,<  │  .>  │      │      │      │      │      │      │
    ├──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤
    │      │      │      │■■■■■■│      │      │  Del │      │ Home │ PgDw │ PgUP │ End  │
    └──────┴──────┴──────┴──────┴──────┴──────┴──────┴──────┴──────┴──────┴──────┴──────┘
    */
    [_E1] = LAYOUT(
    JP_PIPE, JP_SCLN, JP_COLN, KC_UP,   KC_MINS, KC_SLSH,   _______, BL_INC,  BL_DEC,  _______, _______, _______, \
    JP_DQUO, JP_LBRC, KC_LEFT, KC_DOWN, KC_RGHT, JP_RBRC,   _______, KC_VOLD, KC_VOLU, KC_BRID, KC_BRIU, _______, \
    _______, JP_BSLS, JP_CIRC, JP_AT,   KC_COMM, KC_DOT,    BL_TOGG, BL_OFF,  BL_ON,   BL_BRTG, BL_STEP, _______, \
    _______, _______, _______, _______, _______, _______,   KC_DEL,  _______, KC_HOME, KC_PGDN, KC_PGUP, KC_END \
    ),
    /* E2
    ┌──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┐
    │  ,   │  .   │  7   │  8   │  9   │  '   │  F1  │  F2  │  F3  │  F4  │  F5  │  F6  │
    ├──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤
    │      │  :   │  4   │  5   │  6   │  `   │  F7  │  F8  │  F9  │  F10 │  F11 │  F12 │
    ├──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤
    │      │  0   │  1   │  2   │  3   │ CAPS │半/全│無変換│ 変換 │ かな │Insert│PrintS│
    ├──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤
    │      │      │      │      │■■■■■■│      │  Del │      │ Home │ PgDw │ PGUP │ End  │
    └──────┴──────┴──────┴──────┴──────┴──────┴──────┴──────┴──────┴──────┴──────┴──────┘
    */
    [_E2] = LAYOUT(
    KC_COMM, KC_DOT,  KC_7,    KC_8,    KC_9,    JP_QUOT,   KC_F1,    KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6, \
    _______, JP_COLN, KC_4,    KC_5,    KC_6,    JP_GRV,    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_INS,  KC_PSCR, \
    _______, _______, _______, _______, _______, _______,   KC_DEL,   _______, KC_HOME, KC_PGDN, KC_PGUP, KC_END \
    ),
    /* E3
    ┌──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┐
    │  ,   │  .   │  &   │  ~   │  =   │  _   │  ?   │  (   │  )   │  '   │  "   │  @   │
    ├──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤
    │      │  `   │  $   │  %   │  ^   │  %   │  #   │  [   │  ]   │  :   │  ;   │  |   │
    ├──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤
    │      │      │  !   │  @   │  #   │  <   │  >   │  {   │  }   │  +   │  *   │  \   │
    ├──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤
    │      │      │      │      │      │      │  Del │■■■■■■│ Home │ PgDw │ PGUP │ End  │
    └──────┴──────┴──────┴──────┴──────┴──────┴──────┴──────┴──────┴──────┴──────┴──────┘
    */
    [_E3] = LAYOUT(
    KC_COMM, KC_DOT,  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_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 \
    ),
    /* LEF
    ┌──────┬──────┬──────┬──────┬──────┬──────┐
    │ Tab  │   Q  │   W  │   D  │   F  │  BS  │
    ├──────┼──────┼──────┼──────┼──────┼──────┤
    │ Ctrl │   U  │   E  │   A  │   O  │   I  │
    ├──────┼──────┼──────┼──────┼──────┼──────┤
    │Shift │   Z  │   X  │   C  │   V  │Space │
    ├──────┼──────┼──────┼──────┼──────┼──────┤
    │L1/Esc│Alt/半│ GUI  │  E1  │E2/Muh│L2/Hen│
    └──────┴──────┴──────┴──────┴──────┴──────┘
    */
    [_LEF] = LAYOUT(
    _______, KC_Q,    KC_W,    KC_D,             KC_F,    KC_BSPC, _______, _______, _______, _______, _______, _______, \
    _______, KC_U,    KC_E,    KC_A,             KC_O,    KC_I,    _______, _______, _______, _______, _______, _______, \
    _______, KC_Z,    KC_X,    KC_C,             KC_V,    KC_SPC,  _______, _______, _______, _______, _______, _______, \
    _______, _______, _______, LT(_E1, KC_HENK), _______, MO(_L2), _______, _______, _______, _______, _______, _______ \
    ),
    /* L1
    ┌──────┬──────┬──────┬──────┬──────┬──────┐
    │  F1  │  F2  │  F3  │  F4  │  F5  │  F6  │
    ├──────┼──────┼──────┼──────┼──────┼──────┤
    │  F7  │  F8  │  F9  │  F10 │  F11 │  F12 │
    ├──────┼──────┼──────┼──────┼──────┼──────┤
    │Protok│QWERTY│ LEFT │Insert│PrintS│      │
    ├──────┼──────┼──────┼──────┼──────┼──────┤
    │■■■■■■│      │      │      │      │      │
    └──────┴──────┴──────┴──────┴──────┴──────┘
    */
    [_L1] = 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(_PRO), DF(_QWE), DF(_LEF), KC_INS,  KC_PSCR, _______,   _______, _______, _______, _______, _______, _______, \
    _______,  _______,  _______,  _______, _______, _______,   _______, _______, _______, _______, _______, _______ \
    ),
        /* L2
    ┌──────┬──────┬──────┬──────┬──────┬──────┐
    │      │   p  │   k  │   g  │   l  │ Del  │
    ├──────┼──────┼──────┼──────┼──────┼──────┤
    │      │   h  │   t  │   n  │   s  │   r  │
    ├──────┼──────┼──────┼──────┼──────┼──────┤
    │      │   j  │   y  │   b  │   m  │Enter │
    ├──────┼──────┼──────┼──────┼──────┼──────┤
    │      │      │      │      │      │■■■■■■│
    └──────┴──────┴──────┴──────┴──────┴──────┘
    */
    [_L2] = 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,    _______, _______, _______,  _______,  _______, _______, \
    _______, _______, _______, _______, _______, _______,   _______, _______, _______,  _______,  _______, _______ \
    )
};

Flash promicro

keyboard

Connect Promicro and Arch linux with a USB cable

sudo make pka:default:avrdude

Flash

keyboard

For reset your computer ...

keyboard keyboard

Short the RST and GRD of promicro with something that energizes such as tweezers

keyboard

The screen changes like the image

Writing is finished

Key maps

keyboard

protokey placement

keyboard

Qwerty placement

keyboard

Left placement

Protokeyboard type-A created this time for sale

We sell the same products as the one created this time at Booth.

Sales site

thank you

Thank you for watching until the end. I'm glad if you can use it as a reference.

Thank you for Helping

Give money to us for Amazon gift

We will continue to update useful information. I am delighted to jump to your help. Thank you very much.