Rotary encoder setting is revised to solve a malfunction. (#18227)

* Rotary encoder setting is revised to solve a mulfunction. UNUSED_PINS deleted.

* Encoder map applied.

* ENCODER_MAP_ENABLE moved to keymap level.

* Settings in rules.mk moved to info.json.

* picture sent to imgur. config.h streamlined.
This commit is contained in:
3araht 2022-09-30 15:13:21 +09:00 committed by GitHub
parent e1e86cb1fb
commit 10005e9f39
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
15 changed files with 106 additions and 199 deletions

View file

@ -154,55 +154,3 @@ uint8_t shift_led_indicator_right(uint8_t scale_indicator_col){
}
return scale_indicator_col;
}
#ifdef ENCODER_ENABLE
# ifdef ENCODERS
static uint8_t encoder_state[ENCODERS] = {0};
static keypos_t encoder_cw[ENCODERS] = ENCODERS_CW_KEY;
static keypos_t encoder_ccw[ENCODERS] = ENCODERS_CCW_KEY;
# endif
void encoder_action_unregister(void) {
# ifdef ENCODERS
for (int index = 0; index < ENCODERS; ++index) {
if (encoder_state[index]) {
keyevent_t encoder_event = (keyevent_t) {
.key = encoder_state[index] >> 1 ? encoder_cw[index] : encoder_ccw[index],
.pressed = false,
.time = (timer_read() | 1)
};
encoder_state[index] = 0;
action_exec(encoder_event);
}
}
# endif
}
void encoder_action_register(uint8_t index, bool clockwise) {
# ifdef ENCODERS
keyevent_t encoder_event = (keyevent_t) {
.key = clockwise ? encoder_cw[index] : encoder_ccw[index],
.pressed = true,
.time = (timer_read() | 1)
};
encoder_state[index] = (clockwise ^ 1) | (clockwise << 1);
# ifdef CONSOLE_ENABLE
uprintf("encoder_action_register index = %u, clockwise = %u, row = %u, col = %u\n", index, clockwise, encoder_event.key.row, encoder_event.key.col);
# endif
action_exec(encoder_event);
# endif
}
void matrix_scan_kb(void) {
encoder_action_unregister();
matrix_scan_user();
}
bool encoder_update_kb(uint8_t index, bool clockwise) {
encoder_action_register(index, clockwise);
// don't return user actions, because they are in the keymap
// encoder_update_user(index, clockwise);
return true;
};
#endif

View file

@ -27,14 +27,14 @@
* represents the switch matrix.
*/
#define LAYOUT( \
enc, sustain, ccw, cw, \
enc, sustain, \
up, \
left, right, k01, k03, k05, k07, k09, k11, k13, k15, k17, k19, k21, k23, k25, k27, k29, k31, k33, k35, k37, \
down, k02, k04, k06, k08, k10, k12, k14, k16, k18, k20, k22, k24, k26, k28, k30, k32, k34, k36 \
) { \
{ enc, down, left, right, up, k01, k02, sustain }, \
{ k03, k04, k05, k06, k07, k08, k09, ccw }, \
{ k10, k11, k12, k13, k14, k15, k16, cw }, \
{ k03, k04, k05, k06, k07, k08, k09, KC_NO }, \
{ k10, k11, k12, k13, k14, k15, k16, KC_NO }, \
{ k17, k18, k19, k20, k21, k22, k23, KC_NO }, \
{ k24, k25, k26, k27, k28, k29, k30, KC_NO }, \
{ k31, k32, k33, k34, k35, k36, k37, KC_NO } \
@ -117,6 +117,3 @@ extern MidiDevice midi_device;
uint8_t shift_led_indicator_left(uint8_t scale_indicator_col);
uint8_t shift_led_indicator_right(uint8_t scale_indicator_col);
void encoder_action_unregister(void);
void encoder_action_register(uint8_t index, bool clockwise);

View file

@ -19,27 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
/* key matrix size */
#define MATRIX_ROWS 6
#define MATRIX_COLS 8
/*
* Keyboard Matrix Assignments
*
* Change this to how you wired your keyboard
* COLS: AVR pins used for columns, left to right
* ROWS: AVR pins used for rows, top to bottom
* DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode)
* ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode)
*
*/
#define MATRIX_ROW_PINS { E6, D7, C6, D4, D0, D1 }
#define MATRIX_COL_PINS { F4, F5, F6, F7, B1, B3, B2, B6 }
#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.
*/
@ -171,63 +150,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
# endif // CONSOLE_ENABLE
#endif // RGB_MATRIX_ENABLE
/* 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
/* Bootmagic Lite key configuration */
//#define BOOTMAGIC_LITE_ROW 0
//#define BOOTMAGIC_LITE_COLUMN 0
/* Audio */
#ifdef AUDIO_ENABLE
# define AUDIO_PIN B6 // use PB6 = PIN10 as Audio output
@ -262,19 +184,9 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
# define MIDI_INITIAL_VELOCITY 117
#endif // MIDI_ENABLE
/*
* Encoder options
*/
#ifdef ENCODER_ENABLE
# define ENCODERS_PAD_A { B5 }
# define ENCODERS_PAD_B { B4 }
# define ENCODER_RESOLUTION 4
# define TAP_CODE_DELAY 10
#define ENCODERS 1
#define ENCODERS_CW_KEY { {7, 2} }
#define ENCODERS_CCW_KEY { {7, 1} }
#endif // ENCODER_ENABLE
/* disable action features */
//#define NO_ACTION_LAYER
//#define NO_ACTION_TAPPING
/* 2021/01/22 added to shrink firmware size */
// NO_ACTION_TAPPING -1964 bytes, however, this disables Layer mods...

View file

@ -3,6 +3,26 @@
"manufacturer": "3araht",
"url": "https://github.com/3araht/chromatonemini",
"maintainer": "3araht",
"bootloader": "caterina",
"processor": "atmega32u4",
"features": {
"midi": true,
"extrakey": true,
"encoder": true,
"via": true,
"bootmagic": false,
"console": false,
"mousekey": false,
"nkro": false,
"rgblight": false,
"audio": false
},
"diode_direction": "COL2ROW",
"matrix_pins": {
"cols": [ "F4", "F5", "F6", "F7", "B1", "B3", "B2", "B6" ],
"rows": [ "E6", "D7", "C6", "D4", "D0", "D1" ]
},
"debounce": 5,
"usb": {
"vid": "0xFEED",
"pid": "0xF4B4",
@ -13,8 +33,6 @@
"layout": [
{"label":"enc", "x":0.5, "y":0},
{"label":"sustain", "x":1.5, "y":0},
{"label":"ccw", "x":2.5, "y":0},
{"label":"cw", "x":3.5, "y":0},
{"label":"up", "x":0.5, "y":1.5},
{"label":"left", "x":0, "y":2.5},
{"label":"right", "x":1, "y":2.5},
@ -57,5 +75,10 @@
{"label":"k34", "x":19, "y":3.5},
{"label":"k36", "x":20, "y":3.5}]
}
},
"encoder": {
"rotary": [
{ "pin_a": "B5", "pin_b": "B4", "resolution": 4 }
]
}
}

View file

@ -39,7 +39,7 @@ extern midi_config_t midi_config;
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* Base */
[_BASE] = LAYOUT(
FN_MUTE, MI_SUS, KC_VOLD, KC_VOLU,
FN_MUTE, MI_SUS,
MI_BENDU,
MI_TRNSD, MI_TRNSU, MI_C_2, MI_D_2, MI_E_2, MI_Fs_2, MI_Ab_2, MI_Bb_2, MI_C_3, MI_D_3, MI_E_3, MI_Fs_3, MI_Ab_3, MI_Bb_3, MI_C_4, MI_D_4, MI_E_4, MI_Fs_4, MI_Ab_4, MI_Bb_4, MI_C_5,
MI_BENDD, MI_Db_2, MI_Eb_2, MI_F_2, MI_G_2, MI_A_2, MI_B_2, MI_Db_3, MI_Eb_3, MI_F_3, MI_G_3, MI_A_3, MI_B_3, MI_Db_4, MI_Eb_4, MI_F_4, MI_G_4, MI_A_4, MI_B_4
@ -47,20 +47,28 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* RESERVE */
[_RESERVE] = LAYOUT(
_______, _______, _______, _______,
_______, _______,
_______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
),
[_FN] = LAYOUT(
_______, XXXXXXX, XXXXXXX, XXXXXXX,
_______, XXXXXXX,
MI_VELU,
MI_OCTD, MI_OCTU, L_BASE, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, VERSION, XXXXXXX, XXXXXXX,
MI_VELD, L_RESERVE, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, EEP_RST, XXXXXXX, XXXXXXX
)
};
#if defined(ENCODER_MAP_ENABLE)
const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
[_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
[_RESERVE] = { ENCODER_CCW_CW(_______, _______) },
[_FN] = { ENCODER_CCW_CW(_______, _______) },
};
#endif
// commom codes called from eeconfig_init_user() and keyboard_post_init_user().
void my_init(void){
// Set octave to MI_OCT_1

View file

@ -0,0 +1 @@
ENCODER_MAP_ENABLE = yes # replacing ENCODERS_CW_KEY method to this on 2022/08/31.

View file

@ -215,7 +215,7 @@ static uint8_t key_separator_col = _KEY01; // (_KEY01 .. _KEY37). By defau
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* Base */
[_BASE] = LAYOUT(
FN_MUTE, MI_SUS, KC_VOLD, KC_VOLU,
FN_MUTE, MI_SUS,
MI_BENDU,
SHIFT_L, SHIFT_R, MI_C_2, MI_D_2, MI_E_2, MI_Fs_2, MI_Ab_2, MI_Bb_2, MI_C_3, MI_D_3, MI_E_3, MI_Fs_3, MI_Ab_3, MI_Bb_3, MI_C_4, MI_D_4, MI_E_4, MI_Fs_4, MI_Ab_4, MI_Bb_4, MI_C_5,
MI_BENDD, MI_Db_2, MI_Eb_2, MI_F_2, MI_G_2, MI_A_2, MI_B_2, MI_Db_3, MI_Eb_3, MI_F_3, MI_G_3, MI_A_3, MI_B_3, MI_Db_4, MI_Eb_4, MI_F_4, MI_G_4, MI_A_4, MI_B_4
@ -223,7 +223,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* 1 octave on the left side is ch2, others are ch1 (normal) */
[_SEPALEFTOCT] = LAYOUT(
_______, _______, _______, _______,
_______, _______,
_______,
SHIFT_L, SHIFT_R, YM_C_2, YM_D_2, YM_E_2, YM_Fs_2, YM_Ab_2, YM_Bb_2, MI_C_3, MI_D_3, MI_E_3, MI_Fs_3, MI_Ab_3, MI_Bb_3, MI_C_4, MI_D_4, MI_E_4, MI_Fs_4, MI_Ab_4, MI_Bb_4, MI_C_5,
_______, YM_Db_2, YM_Eb_2, YM_F_2, YM_G_2, YM_A_2, YM_B_2, MI_Db_3, MI_Eb_3, MI_F_3, MI_G_3, MI_A_3, MI_B_3, MI_Db_4, MI_Eb_4, MI_F_4, MI_G_4, MI_A_4, MI_B_4
@ -231,7 +231,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* Half ch2, half ch1 (normal) */
[_SEPAHALF] = LAYOUT(
_______, _______, _______, _______,
_______, _______,
_______,
SHIFT_L, SHIFT_R, YM_C_2, YM_D_2, YM_E_2, YM_Fs_2, YM_Ab_2, YM_Bb_2, YM_C_3, YM_D_3, YM_E_3, MI_Fs_3, MI_Ab_3, MI_Bb_3, MI_C_4, MI_D_4, MI_E_4, MI_Fs_4, MI_Ab_4, MI_Bb_4, MI_C_5,
_______, YM_Db_2, YM_Eb_2, YM_F_2, YM_G_2, YM_A_2, YM_B_2, YM_Db_3, YM_Eb_3, YM_F_3, MI_G_3, MI_A_3, MI_B_3, MI_Db_4, MI_Eb_4, MI_F_4, MI_G_4, MI_A_4, MI_B_4
@ -239,7 +239,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* 2 octave on the left side is ch2, others are ch1 (normal) */
[_SEPARIGHTOCT] = LAYOUT(
_______, _______, _______, _______,
_______, _______,
_______,
SHIFT_L, SHIFT_R, YM_C_2, YM_D_2, YM_E_2, YM_Fs_2, YM_Ab_2, YM_Bb_2, YM_C_3, YM_D_3, YM_E_3, YM_Fs_3, YM_Ab_3, YM_Bb_3, MI_C_4, MI_D_4, MI_E_4, MI_Fs_4, MI_Ab_4, MI_Bb_4, MI_C_5,
_______, YM_Db_2, YM_Eb_2, YM_F_2, YM_G_2, YM_A_2, YM_B_2, YM_Db_3, YM_Eb_3, YM_F_3, YM_G_3, YM_A_3, YM_B_3, MI_Db_4, MI_Eb_4, MI_F_4, MI_G_4, MI_A_4, MI_B_4
@ -247,7 +247,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* TRANS This layer must locate 1 layer below _FN layer. */
[_TRANS] = LAYOUT(
_______, _______, _______, _______,
_______, _______,
_______,
MI_TRNSD, MI_TRNSU, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
@ -255,7 +255,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* Flip Base SFIFTUP and SHIFT_L are swapped. */
[_FLIPBASE] = LAYOUT(
FN_MUTE, MI_SUS, KC_VOLD, KC_VOLU,
FN_MUTE, MI_SUS,
MI_BENDU,
SHIFT_L, SHIFT_R, MI_C_5, MI_Bb_4, MI_Ab_4, MI_Fs_4, MI_E_4, MI_D_4, MI_C_4, MI_Bb_3, MI_Ab_3, MI_Fs_3, MI_E_3, MI_D_3, MI_C_3, MI_Bb_2, MI_Ab_2, MI_Fs_2, MI_E_2, MI_D_2, MI_C_2,
MI_BENDD, MI_B_4, MI_A_4, MI_G_4, MI_F_4, MI_Eb_4, MI_Db_4, MI_B_3, MI_A_3, MI_G_3, MI_F_3, MI_Eb_3, MI_Db_3, MI_B_2, MI_A_2, MI_G_2, MI_F_2, MI_Eb_2, MI_Db_2
@ -263,20 +263,33 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* Flip Trans This layer must locate 1 layer above _FLIPBASE layer. MI_TRNSU and MI_TRNSD are swapped. */
[_FLIPTRANS] = LAYOUT(
_______, _______, _______, _______,
_______, _______,
_______,
MI_TRNSU, MI_TRNSD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
),
[_FN] = LAYOUT(
_______, XXXXXXX, RGB_RMOD, RGB_MOD,
_______, XXXXXXX,
MI_VELU,
MI_OCTD, MI_OCTU, B_BASE, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, B_LEFT, XXXXXXX, XXXXXXX, B_CENTER, XXXXXXX, XXXXXXX, B_RIGHT, XXXXXXX, XXXXXXX, XXXXXXX, VERSION, XXXXXXX, B_FLIP,
MI_VELD, TGLINTR, TGLTRNS, TGLCHGR, XXXXXXX, XXXXXXX, RGB_SAD, RGB_SAI, RGB_HUD, RGB_HUI, RGB_SPD, RGB_SPI, RGB_VAD, RGB_VAI, RGB_RMOD, RGB_MOD, EEP_RST, TGLINDI, RGB_TOG
)
};
#if defined(ENCODER_MAP_ENABLE)
const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
[_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
[_SEPALEFTOCT] = { ENCODER_CCW_CW(_______, _______) },
[_SEPAHALF] = { ENCODER_CCW_CW(_______, _______) },
[_SEPARIGHTOCT] = { ENCODER_CCW_CW(_______, _______) },
[_TRANS] = { ENCODER_CCW_CW(_______, _______) },
[_FLIPBASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
[_FLIPTRANS] = { ENCODER_CCW_CW(_______, _______) },
[_FN] = { ENCODER_CCW_CW(RGB_RMOD, RGB_MOD) },
};
#endif
// commom codes called from eeconfig_init_user() and keyboard_post_init_user().
void my_init(void){
// Set octave to MI_OCT_1

View file

@ -1,3 +1,5 @@
RGB_MATRIX_ENABLE = yes # Use RGB matrix (Don't enable this when RGBLIGHT_ENABLE is used.)
RGB_MATRIX_CUSTOM_KB = yes #
VIA_ENABLE = no # too many layers to use VIA...
ENCODER_MAP_ENABLE = yes # replacing ENCODERS_CW_KEY method to this on 2022/08/31.

View file

@ -215,7 +215,7 @@ static uint8_t key_separator_col = _KEY01; // (_KEY01 .. _KEY37). By defau
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* Base */
[_BASE] = LAYOUT(
FN_MUTE, MI_SUS, KC_VOLD, KC_VOLU,
FN_MUTE, MI_SUS,
MI_BENDU,
SHIFT_L, SHIFT_R, MI_C_2, MI_D_2, MI_E_2, MI_Fs_2, MI_Ab_2, MI_Bb_2, MI_C_3, MI_D_3, MI_E_3, MI_Fs_3, MI_Ab_3, MI_Bb_3, MI_C_4, MI_D_4, MI_E_4, MI_Fs_4, MI_Ab_4, MI_Bb_4, MI_C_5,
MI_BENDD, MI_Db_2, MI_Eb_2, MI_F_2, MI_G_2, MI_A_2, MI_B_2, MI_Db_3, MI_Eb_3, MI_F_3, MI_G_3, MI_A_3, MI_B_3, MI_Db_4, MI_Eb_4, MI_F_4, MI_G_4, MI_A_4, MI_B_4
@ -223,7 +223,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* 1 octave on the left side is ch2, others are ch1 (normal) */
[_SEPALEFTOCT] = LAYOUT(
_______, _______, _______, _______,
_______, _______,
_______,
SHIFT_L, SHIFT_R, YM_C_2, YM_D_2, YM_E_2, YM_Fs_2, YM_Ab_2, YM_Bb_2, MI_C_3, MI_D_3, MI_E_3, MI_Fs_3, MI_Ab_3, MI_Bb_3, MI_C_4, MI_D_4, MI_E_4, MI_Fs_4, MI_Ab_4, MI_Bb_4, MI_C_5,
_______, YM_Db_2, YM_Eb_2, YM_F_2, YM_G_2, YM_A_2, YM_B_2, MI_Db_3, MI_Eb_3, MI_F_3, MI_G_3, MI_A_3, MI_B_3, MI_Db_4, MI_Eb_4, MI_F_4, MI_G_4, MI_A_4, MI_B_4
@ -231,7 +231,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* Half ch2, half ch1 (normal) */
[_SEPAHALF] = LAYOUT(
_______, _______, _______, _______,
_______, _______,
_______,
SHIFT_L, SHIFT_R, YM_C_2, YM_D_2, YM_E_2, YM_Fs_2, YM_Ab_2, YM_Bb_2, YM_C_3, YM_D_3, YM_E_3, MI_Fs_3, MI_Ab_3, MI_Bb_3, MI_C_4, MI_D_4, MI_E_4, MI_Fs_4, MI_Ab_4, MI_Bb_4, MI_C_5,
_______, YM_Db_2, YM_Eb_2, YM_F_2, YM_G_2, YM_A_2, YM_B_2, YM_Db_3, YM_Eb_3, YM_F_3, MI_G_3, MI_A_3, MI_B_3, MI_Db_4, MI_Eb_4, MI_F_4, MI_G_4, MI_A_4, MI_B_4
@ -239,7 +239,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* 2 octave on the left side is ch2, others are ch1 (normal) */
[_SEPARIGHTOCT] = LAYOUT(
_______, _______, _______, _______,
_______, _______,
_______,
SHIFT_L, SHIFT_R, YM_C_2, YM_D_2, YM_E_2, YM_Fs_2, YM_Ab_2, YM_Bb_2, YM_C_3, YM_D_3, YM_E_3, YM_Fs_3, YM_Ab_3, YM_Bb_3, MI_C_4, MI_D_4, MI_E_4, MI_Fs_4, MI_Ab_4, MI_Bb_4, MI_C_5,
_______, YM_Db_2, YM_Eb_2, YM_F_2, YM_G_2, YM_A_2, YM_B_2, YM_Db_3, YM_Eb_3, YM_F_3, YM_G_3, YM_A_3, YM_B_3, MI_Db_4, MI_Eb_4, MI_F_4, MI_G_4, MI_A_4, MI_B_4
@ -247,7 +247,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* TRANS This layer must locate 1 layer below _FN layer. */
[_TRANS] = LAYOUT(
_______, _______, _______, _______,
_______, _______,
_______,
MI_TRNSD, MI_TRNSU, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
@ -255,7 +255,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* Flip Base SFIFTUP and SHIFT_L are swapped. */
[_FLIPBASE] = LAYOUT(
FN_MUTE, MI_SUS, KC_VOLD, KC_VOLU,
FN_MUTE, MI_SUS,
MI_BENDU,
SHIFT_L, SHIFT_R, MI_C_5, MI_Bb_4, MI_Ab_4, MI_Fs_4, MI_E_4, MI_D_4, MI_C_4, MI_Bb_3, MI_Ab_3, MI_Fs_3, MI_E_3, MI_D_3, MI_C_3, MI_Bb_2, MI_Ab_2, MI_Fs_2, MI_E_2, MI_D_2, MI_C_2,
MI_BENDD, MI_B_4, MI_A_4, MI_G_4, MI_F_4, MI_Eb_4, MI_Db_4, MI_B_3, MI_A_3, MI_G_3, MI_F_3, MI_Eb_3, MI_Db_3, MI_B_2, MI_A_2, MI_G_2, MI_F_2, MI_Eb_2, MI_Db_2
@ -263,20 +263,34 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* Flip Trans This layer must locate 1 layer above _FLIPBASE layer. MI_TRNSU and MI_TRNSD are swapped. */
[_FLIPTRANS] = LAYOUT(
_______, _______, _______, _______,
_______, _______,
_______,
MI_TRNSU, MI_TRNSD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
),
[_FN] = LAYOUT(
_______, XXXXXXX, RGB_RMOD, RGB_MOD,
_______, XXXXXXX,
MI_VELU,
MI_OCTD, MI_OCTU, B_BASE, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, B_LEFT, XXXXXXX, XXXXXXX, B_CENTER, XXXXXXX, XXXXXXX, B_RIGHT, XXXXXXX, XXXXXXX, XXXXXXX, VERSION, XXXXXXX, B_FLIP,
MI_VELD, TGLINTR, TGLTRNS, TGLCHGR, XXXXXXX, XXXXXXX, RGB_SAD, RGB_SAI, RGB_HUD, RGB_HUI, RGB_SPD, RGB_SPI, RGB_VAD, RGB_VAI, RGB_RMOD, RGB_MOD, EEP_RST, TGLINDI, RGB_TOG
)
};
#if defined(ENCODER_MAP_ENABLE)
const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
[_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
[_SEPALEFTOCT] = { ENCODER_CCW_CW(_______, _______) },
[_SEPAHALF] = { ENCODER_CCW_CW(_______, _______) },
[_SEPARIGHTOCT] = { ENCODER_CCW_CW(_______, _______) },
[_TRANS] = { ENCODER_CCW_CW(_______, _______) },
[_FLIPBASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
[_FLIPTRANS] = { ENCODER_CCW_CW(_______, _______) },
[_FN] = { ENCODER_CCW_CW(RGB_RMOD, RGB_MOD) },
};
#endif
// commom codes called from eeconfig_init_user() and keyboard_post_init_user().
void my_init(void){
// Set octave to MI_OCT_1

View file

@ -1,3 +1,5 @@
RGB_MATRIX_ENABLE = yes # Use RGB matrix (Don't enable this when RGBLIGHT_ENABLE is used.)
RGB_MATRIX_CUSTOM_KB = yes #
VIA_ENABLE = no # too many layers to use VIA...
ENCODER_MAP_ENABLE = yes # replacing ENCODERS_CW_KEY method to this on 2022/08/31.

View file

@ -1,4 +0,0 @@
#pragma once
// How many layers to use with VIA / Remap.
#define DYNAMIC_KEYMAP_LAYER_COUNT 4 // default:4

View file

@ -61,7 +61,7 @@ static bool is_trans_mode = false; // By default, shift mode is chosen.
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* Base */
[_BASE] = LAYOUT(
FN_MUTE, MI_SUS, KC_VOLD, KC_VOLU,
FN_MUTE, MI_SUS,
MI_BENDU,
SHIFT_L, SHIFT_R, MI_C_2, MI_D_2, MI_E_2, MI_Fs_2, MI_Ab_2, MI_Bb_2, MI_C_3, MI_D_3, MI_E_3, MI_Fs_3, MI_Ab_3, MI_Bb_3, MI_C_4, MI_D_4, MI_E_4, MI_Fs_4, MI_Ab_4, MI_Bb_4, MI_C_5,
MI_BENDD, MI_Db_2, MI_Eb_2, MI_F_2, MI_G_2, MI_A_2, MI_B_2, MI_Db_3, MI_Eb_3, MI_F_3, MI_G_3, MI_A_3, MI_B_3, MI_Db_4, MI_Eb_4, MI_F_4, MI_G_4, MI_A_4, MI_B_4
@ -69,7 +69,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* TRANS This layer must locate 1 layer below _FN layer. */
[_TRANS] = LAYOUT(
_______, _______, _______, _______,
_______, _______,
_______,
MI_TRNSD, MI_TRNSU, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
@ -77,20 +77,29 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* RESERVE */
[_RESERVE] = LAYOUT(
_______, _______, _______, _______,
_______, _______,
_______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
),
[_FN] = LAYOUT(
_______, XXXXXXX, RGB_RMOD, RGB_MOD,
_______, XXXXXXX,
MI_VELU,
MI_OCTD, MI_OCTU, B_BASE, DF(_RESERVE), XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, VERSION, XXXXXXX, XXXXXXX,
MI_VELD, TGLINTR, TGLTRNS, XXXXXXX, XXXXXXX, XXXXXXX, RGB_SAD, RGB_SAI, RGB_HUD, RGB_HUI, RGB_SPD, RGB_SPI, RGB_VAD, RGB_VAI, RGB_RMOD, RGB_MOD, EEP_RST, TGLINDI, RGB_TOG
)
};
#if defined(ENCODER_MAP_ENABLE)
const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
[_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
[_TRANS] = { ENCODER_CCW_CW(_______, _______) },
[_RESERVE] = { ENCODER_CCW_CW(_______, _______) },
[_FN] = { ENCODER_CCW_CW(RGB_RMOD, RGB_MOD) },
};
#endif
// commom codes called from eeconfig_init_user() and keyboard_post_init_user().
void my_init(void){
// Set octave to MI_OCT_1

View file

@ -1,3 +1,5 @@
RGB_MATRIX_ENABLE = yes # Use RGB matrix (Don't enable this when RGBLIGHT_ENABLE is used.)
RGB_MATRIX_CUSTOM_KB = yes #
VIA_ENABLE = yes
ENCODER_MAP_ENABLE = yes # replacing ENCODERS_CW_KEY method to this on 2022/08/31.

View file

@ -1,6 +1,6 @@
# chromatonemini
![chromatonemini](https://github.com/3araht/chromatonemini/blob/main/pictures/chromatonemini_toppage.jpg)
![chromatonemini](https://i.imgur.com/SuXzf9Dh.jpg)
chromatonemini keyboard is a simple-design Chromatone mini MIDI keyboard that covers 3 octaves (37 notes).

View file

@ -1,22 +1,2 @@
# MCU name
MCU = atmega32u4
# Bootloader selection
BOOTLOADER = caterina
# Build Options
# change yes to no to disable
#
BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
MIDI_ENABLE = yes # MIDI support
ENCODER_ENABLE = yes # encoder on mute button
RGB_MATRIX_DRIVER = WS2812 #
LTO_ENABLE = yes