Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Sejin EAT-1010M2 keyboard #19802

Closed
wants to merge 1 commit into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
33 changes: 33 additions & 0 deletions keyboards/handwired/sejin_eat1010r2/config.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
/*
Copyright 2022 DmNosachev

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"

/* key matrix size */
#define MATRIX_ROWS 8
#define MATRIX_COLS 16

#define MATRIX_HAS_GHOST

#define NUM_LOCK_LED_PIN B0
#define SCROLL_LOCK_LED_PIN B10
#define CAPS_LOCK_LED_PIN B1

Comment on lines +20 to +31
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
#include "config_common.h"
/* key matrix size */
#define MATRIX_ROWS 8
#define MATRIX_COLS 16
#define MATRIX_HAS_GHOST
#define NUM_LOCK_LED_PIN B0
#define SCROLL_LOCK_LED_PIN B10
#define CAPS_LOCK_LED_PIN B1
#define MATRIX_HAS_GHOST

#define BOOTMAGIC_LITE_ROW 1
#define BOOTMAGIC_LITE_COLUMN 0
27 changes: 27 additions & 0 deletions keyboards/handwired/sejin_eat1010r2/halconf.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
/* Copyright 2020 QMK
*
* 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/>.
*/

/*
* This file was auto-generated by:
* `qmk chibios-confmigrate -i keyboards/handwired/z150/halconf.h -r platforms/chibios/common/configs/halconf.h`
*/

#pragma once

#define HAL_USE_PWM TRUE

#include_next <halconf.h>

33 changes: 33 additions & 0 deletions keyboards/handwired/sejin_eat1010r2/info.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
{
"keyboard_name": "EAT-1010R2",
"manufacturer": "Sejin",
"url": "",
"maintainer": "DmNosachev",
"usb": {
"vid": "0x515A",
"pid": "0x4D4D",
"device_version": "0.0.1"
},
"diode_direction": "COL2ROW",
"development_board": "bluepill",
"matrix_pins": {
"cols": ["B9", "B8", "B7", "B6", "B5", "B4", "B3", "A15", "C13", "C14", "C15", "A0", "A1", "A2", "A3", "A4"],
"rows": ["B11", "B12", "B13", "B14", "B15", "A8", "A9", "A10"]
},
"features": {
"audio": false,
"bootmagic": true,
"command": false,
"console": false,
"extrakey": true,
"midi": false,
"mousekey": true,
"nkro": false,
"rgblight": false,
"unicode": false,
"bluetooth": false,
"backlight": false,
"sleep_led": false
},
Comment on lines +20 to +31
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
"command": false,
"console": false,
"extrakey": true,
"midi": false,
"mousekey": true,
"nkro": false,
"rgblight": false,
"unicode": false,
"bluetooth": false,
"backlight": false,
"sleep_led": false
},
"command": false,
"console": false,
"extrakey": true,
"midi": false,
"mousekey": true,
"nkro": false,
"rgblight": false,
"unicode": false,
"bluetooth": false,
"backlight": false,
"sleep_led": false
},
"indicators": {
"num_lock": "B0",
"caps_lock": "B1",
"scroll_lock": "B10",
},

"debounce": 5
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
"debounce": 5

}
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This file is missing the x, y coordinates (at the minimum). See configuator support.

38 changes: 38 additions & 0 deletions keyboards/handwired/sejin_eat1010r2/keymaps/debug/keymap.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
/* Copyright 2020 DmNosachev
*
* 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] = {
/* Base */
[0] = LAYOUT_debug(
KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO
)
};

bool process_record_user(uint16_t keycode, keyrecord_t *record) {
// If console is enabled, it will print the matrix position and status of each key pressed
#ifdef CONSOLE_ENABLE
uprintf("row: %u, col: %u, pressed: %u\n", record->event.key.row, record->event.key.col, record->event.pressed);
#endif
return true;
}
1 change: 1 addition & 0 deletions keyboards/handwired/sejin_eat1010r2/keymaps/debug/rules.mk
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
CONSOLE_ENABLE = yes # Console for debug
58 changes: 58 additions & 0 deletions keyboards/handwired/sejin_eat1010r2/keymaps/default/keymap.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
/* Copyright 2022 DmNosachev
*
* 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,
_FN1
};

const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/*
* ,---------------------------------------------------------------------------------------------------------------------------------------.
* | Esc | | F1 | F2 | F3 | F4 | | F5 | F6 | F7 | F8 | | F9 | F10 | F11 | F12 | |PrnSc|ScrLk|Pause| |
* |---------------------------------------------------------------------------------------------------------------------------------------|
* | ~ ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = | \ | Bsp | |Insrt|Home |PgUp | |NumLk| / | * | - |
* |---------------------------------------------------------------------------------------------------------------------------------------|
* | Tab | Q | W | E | R | T | Y | U | I | O | P | [ | ] | | | Del | End |PgDn | | 7 | 8 | 9 | + |
* |-------------------------------------------------------------------------------| | --------------------------------------| |
* | Caps | A | S | D | F | G | H | J | K | L | ;: | '" | Enter | | 4 | 5 | 6 | |
* |---------------------------------------------------------------------------------------------------------------------------------------|
* | Shift | Z | X | C | V | B | N | M | , | . | /? | Shift | | Up | | 1 | 2 | 3 |Enter|
* |-----------------------------------------------------------------------------------------|---------------------------------------| |
* | Ctrl | | Alt | Space | Alt | | Ctr | |Left |Down |Right| | 0 | . | |
* `---------------------------------------------------------------------------------------------------------------------------------------'
*/
[_BASE] = LAYOUT(
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_PSCR, KC_SCRL, 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_BSLS, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
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_ENT, KC_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS,
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_P4, KC_P5, KC_P6,
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_P1, KC_P2, KC_P3, KC_PENT,
KC_LCTL, KC_LALT, KC_SPC, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT
)
};

/*
void matrix_init_user(void) {
}
void matrix_scan_user(void) {
}
bool led_update_user(led_t led_state) {
return true;
}
*/
Comment on lines +49 to +58
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
/*
void matrix_init_user(void) {
}
void matrix_scan_user(void) {
}
bool led_update_user(led_t led_state) {
return true;
}
*/

31 changes: 31 additions & 0 deletions keyboards/handwired/sejin_eat1010r2/mcuconf.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
/* Copyright 2020 QMK
*
* 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/>.
*/

/*
* This file was auto-generated by:
* `qmk chibios-confmigrate -i keyboards/handwired/z150/mcuconf.h -r platforms/chibios/STM32_F103_STM32DUINO/configs/mcuconf.h`
*/

#pragma once

#include_next <mcuconf.h>

#undef STM32_PWM_USE_TIM4
#define STM32_PWM_USE_TIM4 TRUE

#undef STM32_SPI_USE_SPI2
#define STM32_SPI_USE_SPI2 FALSE

62 changes: 62 additions & 0 deletions keyboards/handwired/sejin_eat1010r2/readme.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
# QMK-based firmware for Zenith Z-150 keyboard

![Z-150](https://imgur.com/jayyyvJ.jpg)
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
![Z-150](https://imgur.com/jayyyvJ.jpg)
![Z-150](https://i.imgur.com/jayyyvJh.jpg)


Zenith Z-150 keyboard conversion project: direct connection of Black Pill to the matrix.

* Keyboard Maintainer: [DmNosachev](https://github.com/DmNosachev)
* Hardware Supported: [Zenith Z-150 keyboard, 100-1860 version with white logo](https://deskthority.net/wiki/Zenith_Z-150), Black Pill STM32F103C8T6 MCU board. Alternatevely you can use any MCU which is supported by QMK and has 22 or more IO pins: Arduino Micro, Teensy 2.0, Teensy 2.0++, Blue Pill, etc.

Earlier 100-1886 version with black logo has different PCB.

Make example for this keyboard (after setting up your build environment):

make handwired/z150:default
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
make handwired/z150:default
make handwired/sejin_eat1010r2:default
Flashing example for this keyboard:
make handwired/sejin_eat1010r2: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).

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please add instruction on entering bootloader mode, as per template.

# Modding

## Matrix

Z-150 has 11x8 matrix. It's ghost-free thanks to the diodes.

Columns are located under NEC D8049HC MCU IC:
![Z-150 columns](https://imgur.com/XiOsrnh.jpg)

Rows are connected to unmarked 24-pin MUX IC:
![Z-150 rows](https://imgur.com/Wu8rHY0.jpg)

## LEDs

LEDs (from left to right): NumLock, CapsLock, ScrollLock:
![Z-150 LED cathodes](https://imgur.com/MO5NLlZ.jpg)

Their anodes are connected to VCC through 220Ω resistors.
![Z-150 LED anodes](https://imgur.com/w1MfjRN.jpg)

You can keep the original resistors, but with Black Pill or any other 3.3V controller the LEDs may seem a little dim. Try 150Ω or close value if you want to fix that.


## Black Pill
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

info.json says this uses a bluepill? May want to clear that up.

Suggested mount position for the Black Pill (view from the bottom side of the PCB):

```
R0 R1 R2 R3 R4 R6 R9 LC LN LS
,--------------------------------------------------------------------,
|B12 B13 B14 B15 A8 A9 A10 A11 A12 A15 B3 B4 B5 B6 B7 3V3 GND |---,
| |USB|
|B11 B10 B1 B0 A7 A6 A5 A4 A3 A2 A1 A0 RST C13 B9 B8 GND |---'
'--------------------------------------------------------------------'
C0 C1 C2 C3 C4 C5 C6 C7 R5 R8 R7 RA
```


1. Desolder all ICs, crystal oscillator, capacitors and resistors except R0–R2 (they connect LEDs to VCC).
1. Solder 12-pin header to the Black Pill (pins B11–A0 on the left side).
2. Solder two 3-pin headers for boot jumpers.
3. Solder 4-pin SWD header.
4. Burn [STM32duino bootloader](https://github.com/rogerclarkmelbourne/STM32duino-bootloader/blob/master/bootloader_only_binaries/generic_boot20_pb12.bin) to Black Pill.
5. Compile and flash the firmware: `make handwired/z150:default:flash`
5. Align Black Pill pins B11–A4 with columns 0–7 and solder them.
6. Connect rows, LEDs, ground and VCC traces to the corresponding pins of the BlackPill using additional wires.
2 changes: 2 additions & 0 deletions keyboards/handwired/sejin_eat1010r2/rules.mk
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
# Enter lower-power sleep mode when on the ChibiOS idle thread
OPT_DEFS += -DCORTEX_ENABLE_WFI_IDLE=TRUE
39 changes: 39 additions & 0 deletions keyboards/handwired/sejin_eat1010r2/sejin_eat1010r2.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
/* Copyright 2020 DmNosachev
*
* 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 "sejin_eat1010r2.h"

void matrix_init_kb(void) {
setPinOutput(NUM_LOCK_LED_PIN);
setPinOutput(CAPS_LOCK_LED_PIN);
setPinOutput(SCROLL_LOCK_LED_PIN);

writePinLow(NUM_LOCK_LED_PIN);
writePinLow(CAPS_LOCK_LED_PIN);
writePinLow(SCROLL_LOCK_LED_PIN);

matrix_init_user();
}

bool led_update_kb(led_t led_state) {
bool res = led_update_user(led_state);
if(res) {
writePin(NUM_LOCK_LED_PIN, !led_state.num_lock);
writePin(CAPS_LOCK_LED_PIN, !led_state.caps_lock);
writePin(SCROLL_LOCK_LED_PIN, !led_state.scroll_lock);
}
return res;
}
Comment on lines +18 to +39
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
void matrix_init_kb(void) {
setPinOutput(NUM_LOCK_LED_PIN);
setPinOutput(CAPS_LOCK_LED_PIN);
setPinOutput(SCROLL_LOCK_LED_PIN);
writePinLow(NUM_LOCK_LED_PIN);
writePinLow(CAPS_LOCK_LED_PIN);
writePinLow(SCROLL_LOCK_LED_PIN);
matrix_init_user();
}
bool led_update_kb(led_t led_state) {
bool res = led_update_user(led_state);
if(res) {
writePin(NUM_LOCK_LED_PIN, !led_state.num_lock);
writePin(CAPS_LOCK_LED_PIN, !led_state.caps_lock);
writePin(SCROLL_LOCK_LED_PIN, !led_state.scroll_lock);
}
return res;
}

Loading