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

add support for m65 and simple 5x13 ortholinear #12315

Merged
merged 32 commits into from
Aug 10, 2021
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
32 commits
Select commit Hold shift + click to select a range
b35abd9
add support for m65 and simple 5x13 ortholinear
Feb 25, 2021
52b91b8
Update keyboards/m65/keymaps/default/keymap.c
Mar 29, 2021
c60a9fa
Update keyboards/m65/keymaps/default/keymap.c
Mar 29, 2021
f3037f0
Update keyboards/m65/keymaps/default/keymap.c
Mar 29, 2021
557f26a
Update keyboards/m65/keymaps/default/keymap.c
Mar 29, 2021
756f674
Update keyboards/m65/keymaps/default/keymap.c
Mar 29, 2021
e2145f0
Update keyboards/m65/keymaps/default/keymap.c
Mar 29, 2021
5c0485d
updates as per @sigprof review plus reformat
alinelena Mar 29, 2021
4635228
pins all now are defined at microcontroller level
alinelena Mar 29, 2021
e1564c8
profuct id defined at microcontroller level
alinelena Mar 30, 2021
3ed6df8
put leds on when _ADJ is on
alinelena Apr 2, 2021
c67c3bd
add danish keymap
alinelena Apr 2, 2021
5999719
make default uk centric iso as per readme
alinelena Apr 2, 2021
b9ac18f
default is now iso generic, uk is its own business
alinelena Apr 2, 2021
9acefc6
add license
alinelena Apr 3, 2021
cd137d9
update imgur links to reflect the layout
alinelena Apr 3, 2021
16b3a49
leds for _ADJ layer now do not prevent the other layers leds to get on
alinelena Apr 5, 2021
76a791a
Update keyboards/m65/keymaps/uk/keymap.c
Apr 19, 2021
649e8b3
Update keyboards/m65/keymaps/dk/keymap.c
Apr 19, 2021
f0d2635
Update keyboards/m65/keymaps/uk/readme.md
Apr 19, 2021
0778b5e
Update keyboards/m65/readme.md
Apr 19, 2021
4ad3834
add support for gd32f303cct6 by we act in rev2
alinelena May 3, 2021
211f7c3
Merge remote-tracking branch 'origin/develop' into m65-dev
alinelena May 3, 2021
fe012db
Revert "add support for gd32f303cct6 by we act in rev2"
alinelena May 3, 2021
9b9f8fe
Update keyboards/m65/rev1/rules.mk
May 3, 2021
d9bdff8
Update keyboards/m65/keymaps/dk/readme.md
May 6, 2021
90a443a
Update keyboards/m65/keymaps/uk/readme.md
May 6, 2021
522bbbc
Update keyboards/m65/keymaps/default/readme.md
May 6, 2021
bb80969
remove empty hal
alinelena May 14, 2021
d49da48
add capslock
alinelena May 19, 2021
9b56186
Update keyboards/m65/readme.md
Aug 10, 2021
87bab39
Update keyboards/m65/config.h
Aug 10, 2021
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
39 changes: 39 additions & 0 deletions keyboards/m65/config.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
/*
Copyright 2021 Alin M Elena <alinm.elena@gmail.com>

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"

#define VENDOR_ID 0xBABA
#define PRODUCT_ID 0x6060
#define MANUFACTURER m65
#define PRODUCT keyboard
alinelena marked this conversation as resolved.
Show resolved Hide resolved

#define MATRIX_ROWS 5
#define MATRIX_COLS 13

#define LED_NUM_LOCK_PIN B12
#define LED_CAPS_LOCK_PIN B13

#define UNUSED_PINS

#define DIODE_DIRECTION COL2ROW
#define DEBOUNCE 5

#define LOCKING_SUPPORT_ENABLE
#define LOCKING_RESYNC_ENABLE
83 changes: 83 additions & 0 deletions keyboards/m65/info.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,83 @@
{
"keyboard_name": "M65",
"keyboard_folder": "m65",
"url": "https://alin.elena.space/blog/keeblego/",
"maintainer": "alinelena",
"width": 13,
"height": 5,
"layouts": {
"LAYOUT_ortho_5x13": {
"layout": [
{"x": 0, "y": 0},
{"x": 1, "y": 0},
{"x": 2, "y": 0},
{"x": 3, "y": 0},
{"x": 4, "y": 0},
{"x": 5, "y": 0},
{"x": 6, "y": 0},
{"x": 7, "y": 0},
{"x": 8, "y": 0},
{"x": 9, "y": 0},
{"x": 10, "y": 0},
{"x": 11, "y": 0},
{"x": 12, "y": 0},

{"x": 0, "y": 1},
{"x": 1, "y": 1},
{"x": 2, "y": 1},
{"x": 3, "y": 1},
{"x": 4, "y": 1},
{"x": 5, "y": 1},
{"x": 6, "y": 1},
{"x": 7, "y": 1},
{"x": 8, "y": 1},
{"x": 9, "y": 1},
{"x": 10, "y": 1},
{"x": 11, "y": 1},
{"x": 12, "y": 1},

{"x": 0, "y": 2},
{"x": 1, "y": 2},
{"x": 2, "y": 2},
{"x": 3, "y": 2},
{"x": 4, "y": 2},
{"x": 5, "y": 2},
{"x": 6, "y": 2},
{"x": 7, "y": 2},
{"x": 8, "y": 2},
{"x": 9, "y": 2},
{"x": 10, "y": 2},
{"x": 11, "y": 2},
{"x": 12, "y": 2},

{"x": 0, "y": 3},
{"x": 1, "y": 3},
{"x": 2, "y": 3},
{"x": 3, "y": 3},
{"x": 4, "y": 3},
{"x": 5, "y": 3},
{"x": 6, "y": 3},
{"x": 7, "y": 3},
{"x": 8, "y": 3},
{"x": 9, "y": 3},
{"x": 10, "y": 3},
{"x": 11, "y": 3},
{"x": 12, "y": 3},

{"x": 0, "y": 4},
{"x": 1, "y": 4},
{"x": 2, "y": 4},
{"x": 3, "y": 4},
{"x": 4, "y": 4},
{"x": 5, "y": 4},
{"x": 6, "y": 4},
{"x": 7, "y": 4},
{"x": 8, "y": 4},
{"x": 9, "y": 4},
{"x": 10, "y": 4},
{"x": 11, "y": 4}
{"x": 12, "y": 4}
]
}
}
}
5 changes: 5 additions & 0 deletions keyboards/m65/keymaps/default/config.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@

alinelena marked this conversation as resolved.
Show resolved Hide resolved

#pragma once

#define TAPPING_TOGGLE 2
101 changes: 101 additions & 0 deletions keyboards/m65/keymaps/default/keymap.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,101 @@
/*
Copyright 2021 Alin M Elena <alinm.elena@gmail.com>

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

enum layer_names {
_QW = 0,
_LWR,
_RSE,
_ADJ
};

alinelena marked this conversation as resolved.
Show resolved Hide resolved
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {

[_QW] = LAYOUT_ortho_5x13(
KC_ESC, KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , KC_MINS, KC_BSPC ,
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_NUHS, KC_A , KC_S , KC_D , KC_F , KC_G , KC_H , KC_J , KC_K , KC_L , KC_SCLN, KC_QUOT, KC_ENT ,
KC_LSPO, KC_NUBS, KC_Z , KC_X , KC_C , KC_V , KC_B , KC_N , KC_M , KC_COMM, KC_DOT , KC_UP , KC_SLSH ,
KC_LCTL, KC_LGUI, TT(_LWR), KC_LALT, TT(_RSE), KC_SPC, KC_SPC, KC_SPC, KC_RALT, KC_RSPC, KC_LEFT, KC_DOWN, KC_RGHT),

[_LWR] = LAYOUT_ortho_5x13(
KC_GRV , KC_MUTE, KC_VOLU, KC_VOLD, KC_MPRV, KC_MPLY, KC_MNXT, G(KC_P), KC_SLEP, KC_WAKE, KC_PSCR, KC_DEL , KC_EQL ,
KC_BTN3, 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_BTN2, 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_BTN1, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MS_U, KC_TRNS ,
KC_TRNS, KC_BTN4, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R),

[_RSE] = LAYOUT_ortho_5x13(
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_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_WH_U, KC_TRNS ,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_WH_L, KC_WH_D, KC_WH_R),

[_ADJ] = LAYOUT_ortho_5x13(
KC_TRNS, KC_TRNS, A(KC_F2), 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, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
};

alinelena marked this conversation as resolved.
Show resolved Hide resolved
// let us assume we start with both layers off
bool toggle_lwr = false;
bool toggle_rse = false;

static inline void led_lwr(const bool on){
#ifdef KEYBOARD_m65_rev1
writePin(B12, on);
#endif
alinelena marked this conversation as resolved.
Show resolved Hide resolved
}

static inline void led_rse(const bool on){
#ifdef KEYBOARD_m65_rev1
writePin(B13, on);
#endif
alinelena marked this conversation as resolved.
Show resolved Hide resolved
}

alinelena marked this conversation as resolved.
Show resolved Hide resolved
void matrix_scan_user(void) {
led_lwr(toggle_lwr);
led_rse(toggle_rse);
}

bool process_record_user(uint16_t keycode, keyrecord_t *record) {

switch (keycode) {
case(TT(_LWR)):
if (record->event.pressed && record->tap.count == TAPPING_TOGGLE){
toggle_lwr = toggle_lwr ? false : true;
}
alinelena marked this conversation as resolved.
Show resolved Hide resolved
return true;
break;
case(TT(_RSE)):
if (record->event.pressed && record->tap.count == TAPPING_TOGGLE){
toggle_rse = toggle_rse ? false : true;
}
alinelena marked this conversation as resolved.
Show resolved Hide resolved
return true;
break;
default:
return true;
}
}

layer_state_t layer_state_set_user(layer_state_t state) {
return update_tri_layer_state(state, _LWR, _RSE, _ADJ);
}
13 changes: 13 additions & 0 deletions keyboards/m65/keymaps/default/readme.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
![M65 Layout Image](https://i.imgur.com/NexMpvg.png)

# Default M65 Layout

This is the default layout for M65. For the most part it's a straightforward and easy to follow layout inspired by ISO with a UK
turn. The only unusual key is the key in the upper left, which sends Escape normally, but Grave when in layer 1 aka LWR. Similarly
number row in layer 1 give the usual audio KC_GRV, KC_AUDIO_MUTE, KC_AUDIO_VOL_UP, KC_AUDIO_VOL_DOWN, KC_MEDIA_PREV_TRACK,
KC_MEDIA_PLAY_PAUSE, KC_MEDIA_NEXT_TRACK, M_EXTDISP, KC_SYSTEM_SLEEP, KC_SYSTEM_WAKE, KC_PSCREEN, KC_DEL, KC_EQL in layer 2 aka
RSE one gets F1-F12 mouse emulation can be used in layer 1 and 2.

flashing is done by LWR+RSE+r

full layout below see in keymap.c
19 changes: 19 additions & 0 deletions keyboards/m65/m65.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
/*
Copyright 2021 Alin M Elena <alinm.elena@gmail.com>

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 "m65.h"
34 changes: 34 additions & 0 deletions keyboards/m65/m65.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
/*
Copyright 2021 Alin M Elena <alinm.elena@gmail.com>

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_ortho_5x13( \
K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, \
K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, \
K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, \
K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, \
K400, K401, K402, K403, K404, K405, K406, K407, K408, K409, K410, K411, K412 \
) { \
{ K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012 }, \
{ K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112 }, \
{ K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212 }, \
{ K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312 }, \
{ K400, K401, K402, K403, K404, K405, K406, K407, K408, K409, K410, K411, K412 } \
}
22 changes: 22 additions & 0 deletions keyboards/m65/readme.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
# M65

![M65](https://i.imgur.com/gXuecus.jpg)
alinelena marked this conversation as resolved.
Show resolved Hide resolved

A (13x5) ortholinear keyboard that can be hand wired or using a pcb.

* Keyboard Maintainer: [Alin Elena](https://gitlab.com/drFaustroll)
alinelena marked this conversation as resolved.
Show resolved Hide resolved
* Hardware Supported: custom pcb [see](https://gitlab.com/drFaustroll/m65) STM/APM32F103C8T6, aka Black Pill
* Hardware Availability: [custom how to](https://alin.elena.space/blog/keeblego/)


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

make m65/rev1:default

Flashing example for this keyboard:

make m65/rev1:default:flash

To enter flashing mode, press Lower+Raise+R.

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).
29 changes: 29 additions & 0 deletions keyboards/m65/rev1/chconf.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
/* Copyright 2021 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/m65/rev1/chconf.h -r platforms/chibios/common/configs/chconf.h`
*/

#pragma once

#define CH_CFG_ST_TIMEDELTA 0

#define CH_CFG_USE_CONDVARS_TIMEOUT FALSE

#include_next <chconf.h>

24 changes: 24 additions & 0 deletions keyboards/m65/rev1/config.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
/*
Copyright 2021 Alin M Elena <alinm.elena@gmail.com>

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

#define DEVICE_VER 0x0001
// 0 1 2 3 4
#define MATRIX_ROW_PINS { B11, B0, B1, A2, A3 }
// 0 1 2 3 4 5 6 7 8 9 10 11 12
#define MATRIX_COL_PINS {A10, A15, B3, B4, B5, B9, B8, B7, B6, C15, A0, A7, B10 }
Loading