Merge remote-tracking branch 'origin/master' into develop
commit
d758496ad1
|
@ -0,0 +1,49 @@
|
|||
# isometria<sup>75</sup>
|
||||
|
||||
![Isometria sample image](https://mpwr.xyz/projects/isometria75/preview/elmo_pc_BOW_overview.png)
|
||||
|
||||
A 75% ISO-only board with a rotary encoder, RGB underglow and single color dimmable backlight. The hardware is ready to have Bluetooth support added later on. The design is open source and all files (PCB and case) can be found in my [Github repo](https://github.com/ebastler/isometria-75).
|
||||
|
||||
* Keyboard Maintainer: [ebastler](https://github.com/ebastler)
|
||||
* Hardware Supported: Rev1 PCB, see Github repo linked above
|
||||
* Hardware Availability: None, feel free to order/manufacture parts yourself.
|
||||
|
||||
Bootmagic Lite key: Escape
|
||||
Physical reset switch present on the bottom of the PCB
|
||||
|
||||
Make example for this keyboard (after setting up your build environment):
|
||||
|
||||
make ebastler/isometria_75/rev1: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).
|
||||
|
||||
|
||||
## Default keymap layout binds
|
||||
|
||||
Layer 1 toggle: Right menu key (to the right of ralt, left of the arrow cluster)
|
||||
Layer 2 toggle: Right menu key + right shift key
|
||||
|
||||
Alternate layer mod keys (All on layer 1):
|
||||
* Home: Insert
|
||||
* Backspace: Delete
|
||||
|
||||
Alternate layer hardware control keys (All on layer 1):
|
||||
* Esc: Enable/disable underglow
|
||||
* F1/F2: lower/increase underglow brightness
|
||||
* F3/F4: lower/increase backlight brightness
|
||||
* F5/F6: lower/increase underglow hue
|
||||
* F7/F8: lower/increase underglow saturation
|
||||
* F9/F10: previous/next underglow effect
|
||||
* F11/F12: lower/increase underglow effect speed
|
||||
* Print Sreen: Shortcut to static underglow
|
||||
|
||||
Encoder mapping (Layer 0):
|
||||
* CCW/CW: Decrease/Increase volume
|
||||
* Click: Play/Pause
|
||||
|
||||
Encoder mapping (Layer 1):
|
||||
* CCW/CW: Previous/Next track
|
||||
* Click: Mute audio
|
||||
|
||||
Encoder mapping (Layer 2):
|
||||
* CCW/CW: Screen brightness up/down
|
|
@ -0,0 +1,25 @@
|
|||
/* Copyright 2020 Moritz Plattner (ebastler)
|
||||
*
|
||||
* 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 3 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 <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
#pragma once
|
||||
|
||||
/* Change system timer resolution, because TIM2 and TIM3 are different */
|
||||
#define CH_CFG_ST_RESOLUTION 16
|
||||
#define CH_CFG_INTERVALS_SIZE 16
|
||||
|
||||
/* no clue, wouldn't compile without */
|
||||
#define CH_CFG_USE_TM FALSE
|
||||
|
||||
#include_next <chconf.h>
|
|
@ -0,0 +1,74 @@
|
|||
/*
|
||||
Copyright 2020 Moritz Plattner
|
||||
|
||||
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"
|
||||
|
||||
/* USB Device descriptor parameter */
|
||||
#define VENDOR_ID 0x6562 // "eb"
|
||||
#define PRODUCT_ID 0x1337
|
||||
#define DEVICE_VER 0x0001
|
||||
#define MANUFACTURER ebastler
|
||||
#define PRODUCT isometria 75
|
||||
|
||||
/* key matrix size */
|
||||
#define MATRIX_ROWS 6
|
||||
#define MATRIX_COLS 16
|
||||
|
||||
#define MATRIX_ROW_PINS { A15, B4, B5, B6, B7, B8}
|
||||
#define MATRIX_COL_PINS { B12, B13, B14, B15, A8, A10, A13, A14, B9, C13, F0, F1, A0, B2, B10, B11 }
|
||||
#define UNUSED_PINS
|
||||
|
||||
/* COL2ROW, ROW2COL*/
|
||||
#define DIODE_DIRECTION COL2ROW
|
||||
#define DEBOUNCE 5
|
||||
|
||||
/* Backlight */
|
||||
#define BACKLIGHT_PIN A9
|
||||
#define BACKLIGHT_BREATHING
|
||||
#define BACKLIGHT_PWM_DRIVER PWMD1
|
||||
#define BACKLIGHT_PWM_CHANNEL 2
|
||||
#define BACKLIGHT_PAL_MODE 2
|
||||
#define BACKLIGHT_LEVELS 5
|
||||
#define BACKLIGHT_ON_STATE 1
|
||||
#define BACKLIGHT_PWM_OUTPUT_FREQUENCY 1000 // Increases backlight PWM freq if compiled with an unmerged PR. Does no harm without it.
|
||||
|
||||
/* Underglow */
|
||||
#define RGB_DI_PIN B3
|
||||
#define RGBLED_NUM 17
|
||||
#define WS2812_PWM_DRIVER PWMD2
|
||||
#define WS2812_PWM_CHANNEL 2
|
||||
#define WS2812_PWM_PAL_MODE 2
|
||||
#define WS2812_DMA_STREAM STM32_DMA1_STREAM2
|
||||
#define WS2812_DMA_CHANNEL 2
|
||||
#define RGBLIGHT_SLEEP
|
||||
#define RGBLIGHT_EFFECT_BREATHING
|
||||
#define RGBLIGHT_EFFECT_RAINBOW_MOOD
|
||||
#define RGBLIGHT_EFFECT_RAINBOW_SWIRL
|
||||
|
||||
|
||||
/* Rotary encoder - set the resolution fitting your encoder.
|
||||
Most will need a value of 4. If 1 encoder click results in 2 keycodes sent
|
||||
increase the value. If you need 2 clicks for 1 keycode, decrease*/
|
||||
#define ENCODER_RESOLUTION 2
|
||||
#define ENCODERS_PAD_A { C15 }
|
||||
#define ENCODERS_PAD_B { C14 }
|
||||
#define TAP_CODE_DELAY 10
|
||||
|
||||
/* ADC - will be used for battery monitoring once BT support is added */
|
||||
/* #define ADC_PIN B0 */
|
|
@ -0,0 +1,23 @@
|
|||
/* Copyright 2020 Moritz Plattner (ebastler)
|
||||
*
|
||||
* 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 3 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 <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
#pragma once
|
||||
|
||||
/* no clue, wouldn't compile without */
|
||||
#define HAL_USE_DAC FALSE
|
||||
#define HAL_USE_GPT FALSE
|
||||
#define HAL_USE_I2C FALSE
|
||||
|
||||
#include_next <halconf.h>
|
|
@ -0,0 +1,12 @@
|
|||
{
|
||||
"keyboard_name": "isometria_75",
|
||||
"url": "https://github.com/ebastler/isometria-75",
|
||||
"maintainer": "ebastler",
|
||||
"width": 16.25,
|
||||
"height": 6.25,
|
||||
"layouts": {
|
||||
"LAYOUT_iso": {
|
||||
"layout": [{"label":"Esc", "x":0, "y":0}, {"label":"F1", "x":1.25, "y":0}, {"label":"F2", "x":2.25, "y":0}, {"label":"F3", "x":3.25, "y":0}, {"label":"F4", "x":4.25, "y":0}, {"label":"F5", "x":5.5, "y":0}, {"label":"F6", "x":6.5, "y":0}, {"label":"F7", "x":7.5, "y":0}, {"label":"F8", "x":8.5, "y":0}, {"label":"F9", "x":9.75, "y":0}, {"label":"F10", "x":10.75, "y":0}, {"label":"F11", "x":11.75, "y":0}, {"label":"F12", "x":12.75, "y":0}, {"label":"KC_PSCR", "x":14, "y":0}, {"label":"KC_MPLY", "x":15.25, "y":0}, {"label":"\u00b0", "x":0, "y":1.25}, {"label":"!", "x":1, "y":1.25}, {"label":"\"", "x":2, "y":1.25}, {"label":"\u00a7", "x":3, "y":1.25}, {"label":"$", "x":4, "y":1.25}, {"label":"%", "x":5, "y":1.25}, {"label":"&", "x":6, "y":1.25}, {"label":"/", "x":7, "y":1.25}, {"label":"(", "x":8, "y":1.25}, {"label":")", "x":9, "y":1.25}, {"label":"=", "x":10, "y":1.25}, {"label":"?", "x":11, "y":1.25}, {"label":"`", "x":12, "y":1.25}, {"label":"BACKSPACE", "x":13, "y":1.25, "w":2}, {"label":"HOME", "x":15.25, "y":1.25}, {"label":"TAB", "x":0, "y":2.25, "w":1.5}, {"label":"Q", "x":1.5, "y":2.25}, {"label":"W", "x":2.5, "y":2.25}, {"label":"E", "x":3.5, "y":2.25}, {"label":"R", "x":4.5, "y":2.25}, {"label":"T", "x":5.5, "y":2.25}, {"label":"Z", "x":6.5, "y":2.25}, {"label":"U", "x":7.5, "y":2.25}, {"label":"I", "x":8.5, "y":2.25}, {"label":"O", "x":9.5, "y":2.25}, {"label":"P", "x":10.5, "y":2.25}, {"label":"\u00fc", "x":11.5, "y":2.25}, {"label":"*", "x":12.5, "y":2.25}, {"label":"ENTER", "x":13.75, "y":2.25, "w":1.25, "h":2}, {"label":"PAGE", "x":15.25, "y":2.25}, {"label":"CAPS LOCK", "x":0, "y":3.25, "w":1.75}, {"label":"A", "x":1.75, "y":3.25}, {"label":"S", "x":2.75, "y":3.25}, {"label":"D", "x":3.75, "y":3.25}, {"label":"F", "x":4.75, "y":3.25}, {"label":"G", "x":5.75, "y":3.25}, {"label":"H", "x":6.75, "y":3.25}, {"label":"J", "x":7.75, "y":3.25}, {"label":"K", "x":8.75, "y":3.25}, {"label":"L", "x":9.75, "y":3.25}, {"label":"\u00f6", "x":10.75, "y":3.25}, {"label":"\u00e4", "x":11.75, "y":3.25}, {"label":"'", "x":12.75, "y":3.25}, {"label":"PAGE", "x":15.25, "y":3.25}, {"label":"SHIFT", "x":0, "y":4.25, "w":1.25}, {"label":"<", "x":1.25, "y":4.25}, {"label":"Y", "x":2.25, "y":4.25}, {"label":"X", "x":3.25, "y":4.25}, {"label":"C", "x":4.25, "y":4.25}, {"label":"V", "x":5.25, "y":4.25}, {"label":"B", "x":6.25, "y":4.25}, {"label":"N", "x":7.25, "y":4.25}, {"label":"M", "x":8.25, "y":4.25}, {"label":";", "x":9.25, "y":4.25}, {"label":":", "x":10.25, "y":4.25}, {"label":"_", "x":11.25, "y":4.25}, {"label":"SHIFT", "x":12.25, "y":4.25, "w":1.5}, {"label":"END", "x":15.25, "y":4.25}, {"label":"UP", "x":14, "y":4.5}, {"label":"CTRL", "x":0, "y":5.25, "w":1.25}, {"label":"SUPER", "x":1.25, "y":5.25, "w":1.25}, {"label":"ALT", "x":2.5, "y":5.25, "w":1.25}, {"x":3.75, "y":5.25, "w":6.25}, {"label":"ALT", "x":10, "y":5.25, "w":1.5}, {"label":"FUNC", "x":11.5, "y":5.25, "w":1.25}, {"label":"LEFT", "x":13, "y":5.5}, {"label":"DOWN", "x":14, "y":5.5}, {"label":"RIGHT", "x":15, "y":5.5}]
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,74 @@
|
|||
/* Copyright 2020 Moritz Plattner
|
||||
*
|
||||
* 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] = {
|
||||
|
||||
[0] = LAYOUT_iso( /* keymap for layer 0 */
|
||||
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_MPLY,
|
||||
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_BSPC, KC_HOME,
|
||||
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_PGUP,
|
||||
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_NUHS, KC_ENT, KC_PGDN,
|
||||
KC_LSFT, KC_NUBS, 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_END,
|
||||
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, LT(1, KC_APP), KC_LEFT, KC_DOWN, KC_RGHT),
|
||||
|
||||
[1] = LAYOUT_iso( /* keymap for layer 1 */
|
||||
RGB_TOG, RGB_VAD, RGB_VAI, BL_DEC, BL_INC, RGB_HUD, RGB_HUI, RGB_SAD, RGB_SAI, RGB_RMOD, RGB_MOD, RGB_SPD, RGB_SPI, RGB_M_P, KC_MUTE,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_DEL, KC_INS,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, MO(2), KC_TRNS, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, LT(1, KC_APP), KC_TRNS, KC_TRNS, KC_TRNS),
|
||||
|
||||
[2] = LAYOUT_iso( /* keymap for layer 2 */
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RESET,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, MO(2), KC_TRNS, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, LT(1, KC_APP), KC_TRNS, KC_TRNS, KC_TRNS),
|
||||
};
|
||||
|
||||
/* Encoder */
|
||||
void encoder_update_user(uint8_t index, bool clockwise) {
|
||||
/* The first if reads the first encoder, not needed on this board which only features a single one */
|
||||
if (index == 0) {
|
||||
/* The switch case allows for different encoder mappings on different layers, "default" map gets applied for all unspecified layers */
|
||||
switch(get_highest_layer(layer_state)){
|
||||
case 2:
|
||||
if (clockwise) {
|
||||
tap_code(KC_BRIU);
|
||||
} else {
|
||||
tap_code(KC_BRID);
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
if (clockwise) {
|
||||
tap_code(KC_MNXT);
|
||||
} else {
|
||||
tap_code(KC_MPRV);
|
||||
}
|
||||
break;
|
||||
default:
|
||||
if (clockwise){
|
||||
tap_code(KC_VOLU);
|
||||
} else{
|
||||
tap_code(KC_VOLD);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,82 @@
|
|||
/* Copyright 2020 Moritz Plattner
|
||||
*
|
||||
* 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] = {
|
||||
|
||||
[0] = LAYOUT_iso( /* keymap for layer 0 */
|
||||
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_MPLY,
|
||||
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_BSPC, KC_HOME,
|
||||
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_PGUP,
|
||||
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_NUHS, KC_ENT, KC_PGDN,
|
||||
KC_LSFT, KC_NUBS, 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_END,
|
||||
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, LT(1, KC_APP), KC_LEFT, KC_DOWN, KC_RGHT),
|
||||
|
||||
[1] = LAYOUT_iso( /* keymap for layer 1 */
|
||||
RGB_TOG, RGB_VAD, RGB_VAI, BL_DEC, BL_INC, RGB_HUD, RGB_HUI, RGB_SAD, RGB_SAI, RGB_RMOD, RGB_MOD, RGB_SPD, RGB_SPI, RGB_M_P, KC_MUTE,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_DEL, KC_INS,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, MO(2), KC_TRNS, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, LT(1, KC_APP), KC_TRNS, KC_TRNS, KC_TRNS),
|
||||
|
||||
[2] = LAYOUT_iso( /* keymap for layer 2 */
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RESET,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, MO(2), KC_TRNS, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, LT(1, KC_APP), KC_TRNS, KC_TRNS, KC_TRNS),
|
||||
|
||||
[3] = LAYOUT_iso( /* keymap for layer 3 */
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
|
||||
};
|
||||
|
||||
/* Encoder */
|
||||
void encoder_update_user(uint8_t index, bool clockwise) {
|
||||
/* The first if reads the first encoder, not needed on this board which only features a single one */
|
||||
if (index == 0) {
|
||||
/* The switch case allows for different encoder mappings on different layers, "default" map gets applied for all unspecified layers */
|
||||
switch(get_highest_layer(layer_state)){
|
||||
case 2:
|
||||
if (clockwise) {
|
||||
tap_code(KC_BRIU);
|
||||
} else {
|
||||
tap_code(KC_BRID);
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
if (clockwise) {
|
||||
tap_code(KC_MNXT);
|
||||
} else {
|
||||
tap_code(KC_MPRV);
|
||||
}
|
||||
break;
|
||||
default:
|
||||
if (clockwise){
|
||||
tap_code(KC_VOLU);
|
||||
} else{
|
||||
tap_code(KC_VOLD);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1 @@
|
|||
VIA_ENABLE = yes
|
|
@ -0,0 +1,33 @@
|
|||
/* Copyright 2020 Moritz Plattner (ebastler)
|
||||
*
|
||||
* 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 3 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 <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
#pragma once
|
||||
|
||||
#include_next <mcuconf.h>
|
||||
|
||||
/* enable TIM1, used for backlight PWM */
|
||||
#undef STM32_PWM_USE_TIM1
|
||||
#define STM32_PWM_USE_TIM1 TRUE
|
||||
|
||||
/* enable TIM2, used for underglow PWM driver */
|
||||
#undef STM32_PWM_USE_TIM2
|
||||
#define STM32_PWM_USE_TIM2 TRUE
|
||||
|
||||
/* move system from TIM2 (default) to TIM3 (since TIM2 is needed for underglow) */
|
||||
#undef STM32_PWM_USE_TIM3
|
||||
#define STM32_PWM_USE_TIM3 FALSE
|
||||
#undef STM32_ST_USE_TIMER
|
||||
#define STM32_ST_USE_TIMER 3
|
||||
|
|
@ -0,0 +1,49 @@
|
|||
# isometria<sup>75</sup>
|
||||
|
||||
![Isometria sample image](https://mpwr.xyz/projects/isometria75/preview/elmo_pc_BOW_overview.png)
|
||||
|
||||
A 75% ISO-only board with a rotary encoder, RGB underglow and single color dimmable backlight. The hardware is ready to have Bluetooth support added later on. The design is open source and all files (PCB and case) can be found in my [Github repo](https://github.com/ebastler/isometria-75).
|
||||
|
||||
* Keyboard Maintainer: [ebastler](https://github.com/ebastler)
|
||||
* Hardware Supported: Rev1 PCB, see Github repo linked above
|
||||
* Hardware Availability: None, feel free to order/manufacture parts yourself.
|
||||
|
||||
Bootmagic Lite key: Escape
|
||||
Physical reset switch present on the bottom of the PCB
|
||||
|
||||
Make example for this keyboard (after setting up your build environment):
|
||||
|
||||
make ebastler/isometria_75/rev1: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).
|
||||
|
||||
|
||||
## Default keymap layout binds
|
||||
|
||||
Layer 1 toggle: Right menu key (to the right of ralt, left of the arrow cluster)
|
||||
Layer 2 toggle: Right menu key + right shift key
|
||||
|
||||
Alternate layer mod keys (All on layer 1):
|
||||
* Home: Insert
|
||||
* Backspace: Delete
|
||||
|
||||
Alternate layer hardware control keys (All on layer 1):
|
||||
* Esc: Enable/disable underglow
|
||||
* F1/F2: lower/increase underglow brightness
|
||||
* F3/F4: lower/increase backlight brightness
|
||||
* F5/F6: lower/increase underglow hue
|
||||
* F7/F8: lower/increase underglow saturation
|
||||
* F9/F10: previous/next underglow effect
|
||||
* F11/F12: lower/increase underglow effect speed
|
||||
* Print Sreen: Shortcut to static underglow
|
||||
|
||||
Encoder mapping (Layer 0):
|
||||
* CCW/CW: Decrease/Increase volume
|
||||
* Click: Play/Pause
|
||||
|
||||
Encoder mapping (Layer 1):
|
||||
* CCW/CW: Previous/Next track
|
||||
* Click: Mute audio
|
||||
|
||||
Encoder mapping (Layer 2):
|
||||
* CCW/CW: Screen brightness up/down
|
|
@ -0,0 +1,17 @@
|
|||
/* Copyright 2020 Moritz Plattner
|
||||
*
|
||||
* 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 "rev1.h"
|
|
@ -0,0 +1,35 @@
|
|||
/* Copyright 2020 Moritz Plattner
|
||||
*
|
||||
* 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 "quantum.h"
|
||||
|
||||
#define LAYOUT_iso( \
|
||||
K000, K001, K002, K003, K004, K006, K007, K008, K009, K010, K011, K012, K013, K014, K015, \
|
||||
K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K114, K115, \
|
||||
K200, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, K215, \
|
||||
K300, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, K314, K315, \
|
||||
K400, K401, K402, K403, K404, K405, K406, K407, K408, K409, K410, K411, K413, K414, K415, \
|
||||
K500, K501, K502, K506, K510, K511, K513, K514, K515 \
|
||||
) { \
|
||||
{ K000, K001, K002, K003, K004, KC_NO, K006, K007, K008, K009, K010, K011, K012, K013, K014, K015 } , \
|
||||
{ K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, KC_NO, K114, K115 } , \
|
||||
{ K200, KC_NO, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, KC_NO, K215 } , \
|
||||
{ K300, KC_NO, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, K314, K315 } , \
|
||||
{ K400, K401, K402, K403, K404, K405, K406, K407, K408, K409, K410, K411, KC_NO, K413, K414, K415 } , \
|
||||
{ K500, K501, K502, KC_NO, KC_NO, KC_NO, K506, KC_NO, KC_NO, KC_NO, K510, K511, KC_NO, K513, K514, K515 } \
|
||||
}
|
|
@ -0,0 +1,24 @@
|
|||
# MCU name
|
||||
MCU = STM32F072
|
||||
|
||||
# Build Options
|
||||
# change yes to no to disable
|
||||
#
|
||||
BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration
|
||||
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
|
||||
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
|
||||
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
|
||||
# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
|
||||
NKRO_ENABLE = yes # USB Nkey Rollover
|
||||
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
|
||||
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
|
||||
BLUETOOTH_ENABLE = no # Enable Bluetooth
|
||||
AUDIO_ENABLE = no # Audio output
|
||||
ENCODER_ENABLE = yes
|
||||
WS2812_DRIVER = pwm
|
||||
|
||||
# Enter lower-power sleep mode when on the ChibiOS idle thread
|
||||
OPT_DEFS += -DCORTEX_ENABLE_WFI_IDLE=TRUE
|
|
@ -0,0 +1,6 @@
|
|||
# ebastler
|
||||
|
||||
I'm a hobbyist designing keyboards for fun. [My homepage](https://mpwr.xyz). All my personal keyboard projects are open source and can be found in my github repo(s), linked below. Commissions may remain closed source.
|
||||
|
||||
|
||||
* [isometria<sup>75</sup>](isometria_75) - 75% ISO-only board with rotary encoder, RGB underglow and single color backlight. [Github repo](https://github.com/ebastler/isometria-75).
|
Loading…
Reference in New Issue