QMK Configurator Support for KBD66 and RAMA M6-A (#2849)

* Added KBD66 Config

* Added RAMA M6-A Config

* Changed KEYMAP to LAYOUT for KBD66 and M6-A
This commit is contained in:
Eric 2018-04-30 22:45:38 +08:00 committed by Drashna Jaelre
parent 2054f20b69
commit bc89c4f104
13 changed files with 566 additions and 425 deletions

84
keyboards/kbd66/info.json Normal file
View file

@ -0,0 +1,84 @@
{
"keyboard_name": "kbd66",
"url": "",
"maintainer": "qmk",
"width": 16.5,
"height": 5,
"layouts": {
"LAYOUT": {
"layout": [
{ "label": "~", "x": 0, "y": 0 },
{ "label": "!", "x": 1, "y": 0 },
{ "label": "@", "x": 2, "y": 0 },
{ "label": "#", "x": 3, "y": 0 },
{ "label": "$", "x": 4, "y": 0 },
{ "label": "%", "x": 5, "y": 0 },
{ "label": "^", "x": 6, "y": 0 },
{ "label": "&", "x": 7, "y": 0 },
{ "label": "*", "x": 8, "y": 0 },
{ "label": "(", "x": 9, "y": 0 },
{ "label": ")", "x": 10, "y": 0 },
{ "label": "_", "x": 11, "y": 0 },
{ "label": "+", "x": 12, "y": 0 },
{ "label": "Bkspc", "x": 13, "y": 0 },
{ "label": "Bkspc", "x": 14, "y": 0 },
{ "x": 15.5, "y": 0 },
{ "label": "Tab", "x": 0, "y": 1, "w": 1.5 },
{ "label": "Q", "x": 1.5, "y": 1 },
{ "label": "W", "x": 2.5, "y": 1 },
{ "label": "E", "x": 3.5, "y": 1 },
{ "label": "R", "x": 4.5, "y": 1 },
{ "label": "T", "x": 5.5, "y": 1 },
{ "label": "Y", "x": 6.5, "y": 1 },
{ "label": "U", "x": 7.5, "y": 1 },
{ "label": "I", "x": 8.5, "y": 1 },
{ "label": "O", "x": 9.5, "y": 1 },
{ "label": "P", "x": 10.5, "y": 1 },
{ "label": "{", "x": 11.5, "y": 1 },
{ "label": "}", "x": 12.5, "y": 1 },
{ "label": "|", "x": 13.5, "y": 1, "w": 1.5 },
{ "x": 15.5, "y": 1 },
{ "label": "Caps Lock", "x": 0, "y": 2, "w": 1.75 },
{ "label": "A", "x": 1.75, "y": 2 },
{ "label": "S", "x": 2.75, "y": 2 },
{ "label": "D", "x": 3.75, "y": 2 },
{ "label": "F", "x": 4.75, "y": 2 },
{ "label": "G", "x": 5.75, "y": 2 },
{ "label": "H", "x": 6.75, "y": 2 },
{ "label": "J", "x": 7.75, "y": 2 },
{ "label": "K", "x": 8.75, "y": 2 },
{ "label": "L", "x": 9.75, "y": 2 },
{ "label": ":", "x": 10.75, "y": 2 },
{ "label": "\"", "x": 11.75, "y": 2 },
{ "x": 12.75, "y": 2 },
{ "label": "Enter", "x": 13.75, "y": 2, "w": 1.25 },
{ "label": "Shift", "x": 0, "y": 3, "w": 1.25 },
{ "x": 1.25, "y": 3 },
{ "label": "Z", "x": 2.25, "y": 3 },
{ "label": "X", "x": 3.25, "y": 3 },
{ "label": "C", "x": 4.25, "y": 3 },
{ "label": "V", "x": 5.25, "y": 3 },
{ "label": "B", "x": 6.25, "y": 3 },
{ "label": "N", "x": 7.25, "y": 3 },
{ "label": "M", "x": 8.25, "y": 3 },
{ "label": "<", "x": 9.25, "y": 3 },
{ "label": ">", "x": 10.25, "y": 3 },
{ "label": "?", "x": 11.25, "y": 3 },
{ "label": "Shift", "x": 12.25, "y": 3, "w": 1.25 },
{ "label": "Fn", "x": 13.5, "y": 3 },
{ "label": "Up", "x": 14.5, "y": 3 },
{ "label": "Ctrl", "x": 0, "y": 4, "w": 1.5 },
{ "label": "Win", "x": 1.5, "y": 4, "w": 1.25 },
{ "label": "Alt", "x": 2.75, "y": 4, "w": 1.25 },
{ "x": 4, "y": 4, "w": 2.75 },
{ "x": 6.75, "y": 4, "w": 2.75 },
{ "label": "Alt", "x": 9.5, "y": 4, "w": 1.25 },
{ "label": "Win", "x": 10.75, "y": 4, "w": 1.25 },
{ "label": "Menu", "x": 12, "y": 4, "w": 1.5 },
{ "label": "Left", "x": 13.5, "y": 4 },
{ "label": "Down", "x": 14.5, "y": 4 },
{ "label": "Right", "x": 15.5, "y": 4 }
]
}
}
}

View file

@ -19,7 +19,7 @@
#include "quantum.h"
// This a shortcut to help you visually see your layout.
#define KEYMAP( \
#define LAYOUT( \
k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D,k0E, k0F, \
k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k1F, \
k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2D, \

View file

@ -13,7 +13,7 @@
* 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 "kbd66.h"
#include QMK_KEYBOARD_H
#define _____ KC_TRNS
#define XXXXX KC_NO
@ -35,7 +35,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* |Ctl |OS |Alt | Space |Alt | Fn |Ctl |LFT|DWN|RIG|
* `-------------------------------------------------------------------'
*/
[_L0] = KEYMAP(
[_L0] = LAYOUT(
KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, XXXXX, KC_BSPC, KC_INS,
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_BSLS, KC_DEL,
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_ENT,
@ -56,7 +56,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* | | | | | | | | |PDn|SLk|
* `-------------------------------------------------------------------'
*/
[_L1] = KEYMAP(
[_L1] = LAYOUT(
KC_GRV, 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_HOME,
_____, _____, _____, _____, _____, _____, _____, _____, _____, _____, KC_PSCR, KC_VOLD, KC_VOLU, KC_MUTE, KC_END,
RESET, _____, _____, _____, _____, _____, _____, KC_MPRV, KC_MPLY, KC_MNXT, KC_MSTP, _____, _____,

View file

@ -13,7 +13,7 @@
* 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 "kbd66.h"
#include QMK_KEYBOARD_H
#define _____ KC_TRNS
#define XXXXX KC_NO
@ -35,7 +35,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* |Ctl |OS |Alt | Space |Alt | Fn |Ctl |LFT|DWN|RIG|
* `-------------------------------------------------------------------'
*/
[_L0] = KEYMAP(
[_L0] = LAYOUT(
KC_GESC, 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_GRV, KC_BSPC, KC_INS,
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_BSLS, KC_DEL,
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_ENT,
@ -56,7 +56,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* | | | | | | | | |PDn|SLk|
* `-------------------------------------------------------------------'
*/
[_L1] = KEYMAP(
[_L1] = LAYOUT(
KC_GRV, 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_HOME,
_____, _____, _____, _____, _____, _____, _____, _____, _____, _____, KC_PSCR, KC_VOLD, KC_VOLU, KC_MUTE, KC_END,
RESET, _____, _____, _____, _____, _____, _____, KC_MPRV, KC_MPLY, KC_MNXT, KC_MSTP, _____, _____,

View file

@ -13,7 +13,7 @@
* 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 "kbd66.h"
#include QMK_KEYBOARD_H
#define _____ KC_TRNS
#define XXXXX KC_NO
@ -35,7 +35,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* |Ctl |OS |Alt | Space |Alt | Fn |Ctl |LFT|DWN|RIG|
* `-------------------------------------------------------------------'
*/
[_L0] = KEYMAP(
[_L0] = LAYOUT(
KC_GESC, 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_GRV, KC_BSPC, KC_INS,
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_DEL,
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_ENT,
@ -56,7 +56,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* | | | | | | | | |PDn|SLk|
* `-------------------------------------------------------------------'
*/
[_L1] = KEYMAP(
[_L1] = LAYOUT(
KC_GRV, 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_HOME,
_____, _____, _____, _____, _____, _____, _____, _____, _____, _____, KC_PSCR, KC_VOLD, KC_VOLU, KC_MUTE, KC_END,
RESET, _____, _____, _____, _____, _____, _____, KC_MPRV, KC_MPLY, KC_MNXT, KC_MSTP, _____, _____,

View file

@ -1,4 +1,4 @@
#include "kbd66.h"
#include QMK_KEYBOARD_H
#define _MA 0
#define _GA 1
@ -14,7 +14,7 @@
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// Main Layer
[_MA] = KEYMAP(
[_MA] = LAYOUT(
KC_GESC, 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_MPLY,
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_BSLS, KC_DEL,
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_ENT,
@ -22,7 +22,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_LCTL, KC_LGUI, KC_LALT, SPACE, SPACE, KC_RALT, KC_RCTRL, MO(_FL), KC_LEFT, KC_DOWN, KC_RGHT),
//Function Layer
[_FL] = KEYMAP(
[_FL] = LAYOUT(
KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, TRNS, RESET, KC_PSCR,
TRNS, ______, ______, ______, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, ______,
TRNS, ______, ______, ______, TRNS, TG(_GA), TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS,
@ -30,7 +30,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, ______, KC_PGDN, ______),
//Arrow keys layer (space bar)
[_AR] = KEYMAP(
[_AR] = LAYOUT(
KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, TRNS, TRNS, TRNS,
TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS,
TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS,
@ -38,7 +38,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS),
//Game layer (fn + g)
[_GA] = KEYMAP(
[_GA] = LAYOUT(
TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS,
TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS,
TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS,

View file

@ -0,0 +1,19 @@
{
"keyboard_name": "m6-a",
"url": "",
"maintainer": "qmk",
"width": 3,
"height": 2,
"layouts": {
"LAYOUT": {
"layout": [
{ "x": 0, "y": 0 },
{ "x": 1, "y": 0 },
{ "x": 2, "y": 0 },
{ "x": 0, "y": 1 },
{ "x": 1, "y": 1 },
{ "x": 2, "y": 1 }
]
}
}
}

View file

@ -1,298 +1,324 @@
#include "../../m6_a.h"
#include QMK_KEYBOARD_H
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KEYMAP(
TO(1), KC_A, KC_B, KC_C, KC_D, KC_E),
LAYOUT(
TO(1), KC_A, KC_B, KC_C, KC_D, KC_E),
KEYMAP(
TO(2), KC_F, KC_G, KC_H, KC_I, KC_J),
LAYOUT(
TO(2), KC_F, KC_G, KC_H, KC_I, KC_J),
KEYMAP(
TO(3), KC_K, KC_L, KC_M, KC_N, KC_O),
LAYOUT(
TO(3), KC_K, KC_L, KC_M, KC_N, KC_O),
KEYMAP(
TO(4), KC_P, KC_Q, KC_R, KC_S, KC_T),
LAYOUT(
TO(4), KC_P, KC_Q, KC_R, KC_S, KC_T),
KEYMAP(
TO(5), KC_U, KC_V, KC_W, KC_X, KC_Y),
LAYOUT(
TO(5), KC_U, KC_V, KC_W, KC_X, KC_Y),
KEYMAP(
TO(0), KC_Z, KC_1, KC_2, KC_3, KC_4)
};
LAYOUT(
TO(0), KC_Z, KC_1, KC_2, KC_3, KC_4)};
const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) {
//keyevent_t event = record->event;
const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
{
//keyevent_t event = record->event;
switch (id) {
case 0:
if (record->event.pressed) {
return MACRO( T(T), T(G), T(L), T(H), T(F), T(ENT), END );
}
break;
case 1:
if (record->event.pressed) {
return MACRO( T(T), T(G), T(G), T(ENT), END );
}
break;
case 2:
if (record->event.pressed) {
return MACRO( D(NO), T(L), U(NO), END );
}
break;
case 3:
if (record->event.pressed) {
return MACRO( D(LCTL), T(Z), U(LCTL), END );
}
break;
case 4:
if (record->event.pressed) {
return MACRO( D(LCTL), D(LSFT), T(Z), U(LSFT), U(LCTL), END );
}
break;
case 5:
if (record->event.pressed) {
return MACRO( D(LCTL), T(X), U(LCTL), END );
}
break;
case 6:
if (record->event.pressed) {
return MACRO( D(LCTL), T(C), U(LCTL), END );
}
break;
case 7:
if (record->event.pressed) {
return MACRO( D(LCTL), T(V), U(LCTL), END );
}
break;
}
return MACRO_NONE;
switch (id)
{
case 0:
if (record->event.pressed)
{
return MACRO(T(T), T(G), T(L), T(H), T(F), T(ENT), END);
}
break;
case 1:
if (record->event.pressed)
{
return MACRO(T(T), T(G), T(G), T(ENT), END);
}
break;
case 2:
if (record->event.pressed)
{
return MACRO(D(NO), T(L), U(NO), END);
}
break;
case 3:
if (record->event.pressed)
{
return MACRO(D(LCTL), T(Z), U(LCTL), END);
}
break;
case 4:
if (record->event.pressed)
{
return MACRO(D(LCTL), D(LSFT), T(Z), U(LSFT), U(LCTL), END);
}
break;
case 5:
if (record->event.pressed)
{
return MACRO(D(LCTL), T(X), U(LCTL), END);
}
break;
case 6:
if (record->event.pressed)
{
return MACRO(D(LCTL), T(C), U(LCTL), END);
}
break;
case 7:
if (record->event.pressed)
{
return MACRO(D(LCTL), T(V), U(LCTL), END);
}
break;
}
return MACRO_NONE;
}
// M6-A LEDs are connected to D6, B6, F5, B4, C7, F7
// This is 1-based because I copied it from Knops code.
void set_switch_led(int ledId, bool state) {
if(state) {
switch(ledId) {
case 1:
PORTD |= (1<<6);
break;
case 2:
PORTB |= (1<<6);
break;
case 3:
PORTF |= (1<<5);
break;
case 4:
PORTB |= (1<<4);
break;
case 5:
PORTC |= (1<<7);
break;
case 6:
PORTF |= (1<<7);
break;
}
} else {
switch(ledId) {
case 1:
PORTD &= ~(1<<6);
break;
case 2:
PORTB &= ~(1<<6);
break;
case 3:
PORTF &= ~(1<<5);
break;
case 4:
PORTB &= ~(1<<4);
break;
case 5:
PORTC &= ~(1<<7);
break;
case 6:
PORTF &= ~(1<<7);
break;
}
}
void set_switch_led(int ledId, bool state)
{
if (state)
{
switch (ledId)
{
case 1:
PORTD |= (1 << 6);
break;
case 2:
PORTB |= (1 << 6);
break;
case 3:
PORTF |= (1 << 5);
break;
case 4:
PORTB |= (1 << 4);
break;
case 5:
PORTC |= (1 << 7);
break;
case 6:
PORTF |= (1 << 7);
break;
}
}
else
{
switch (ledId)
{
case 1:
PORTD &= ~(1 << 6);
break;
case 2:
PORTB &= ~(1 << 6);
break;
case 3:
PORTF &= ~(1 << 5);
break;
case 4:
PORTB &= ~(1 << 4);
break;
case 5:
PORTC &= ~(1 << 7);
break;
case 6:
PORTF &= ~(1 << 7);
break;
}
}
}
void set_layer_led(int layerId) {
// UNUSED
void set_layer_led(int layerId)
{
// UNUSED
}
void led_set_layer(int layer);
void matrix_init_user(void) {
led_init_ports();
led_set_layer(0);
void matrix_init_user(void)
{
led_init_ports();
led_set_layer(0);
}
void matrix_scan_user(void) {
void matrix_scan_user(void)
{
}
// M6-A LEDs are connected to D6, B6, F5, B4, C7, F7
void led_init_ports() {
// Switch #1
DDRD |= (1<<6);
PORTD &= ~(1<<6);
// Switch #2
DDRB |= (1<<6);
PORTB &= ~(1<<6);
// Switch #3
DDRF |= (1<<5);
PORTF &= ~(1<<5);
// Switch #4
DDRB |= (1<<4);
PORTB &= ~(1<<4);
void led_init_ports()
{
// Switch #1
DDRD |= (1 << 6);
PORTD &= ~(1 << 6);
// Switch #5
DDRC |= (1<<7);
PORTC &= ~(1<<7);
// Switch #6
DDRF |= (1<<7);
PORTF &= ~(1<<7);
// Switch #2
DDRB |= (1 << 6);
PORTB &= ~(1 << 6);
// Switch #3
DDRF |= (1 << 5);
PORTF &= ~(1 << 5);
// Switch #4
DDRB |= (1 << 4);
PORTB &= ~(1 << 4);
// Switch #5
DDRC |= (1 << 7);
PORTC &= ~(1 << 7);
// Switch #6
DDRF |= (1 << 7);
PORTF &= ~(1 << 7);
}
void led_set_user(uint8_t usb_led) {
void led_set_user(uint8_t usb_led)
{
if (usb_led & (1 << USB_LED_NUM_LOCK)) {
} else {
}
if (usb_led & (1 << USB_LED_NUM_LOCK))
{
}
else
{
}
if (usb_led & (1 << USB_LED_CAPS_LOCK)) {
if (usb_led & (1 << USB_LED_CAPS_LOCK))
{
}
else
{
}
} else {
if (usb_led & (1 << USB_LED_SCROLL_LOCK))
{
}
else
{
}
}
if (usb_led & (1 << USB_LED_SCROLL_LOCK)) {
} else {
}
if (usb_led & (1 << USB_LED_COMPOSE)) {
} else {
}
if (usb_led & (1 << USB_LED_KANA)) {
} else {
}
if (usb_led & (1 << USB_LED_COMPOSE))
{
}
else
{
}
if (usb_led & (1 << USB_LED_KANA))
{
}
else
{
}
}
void led_set_layer(int layer) {
switch(layer) {
case 0:
set_switch_led(1, true);
set_switch_led(2, false);
set_switch_led(3, false);
set_switch_led(4, false);
set_switch_led(5, false);
set_switch_led(6, false);
break;
case 1:
set_switch_led(1, false);
set_switch_led(2, true);
set_switch_led(3, false);
set_switch_led(4, false);
set_switch_led(5, false);
set_switch_led(6, false);
break;
case 2:
set_switch_led(1, false);
set_switch_led(2, false);
set_switch_led(3, true);
set_switch_led(4, false);
set_switch_led(5, false);
set_switch_led(6, false);
break;
case 3:
set_switch_led(1, false);
set_switch_led(2, false);
set_switch_led(3, false);
set_switch_led(4, true);
set_switch_led(5, false);
set_switch_led(6, false);
break;
case 4:
set_switch_led(1, false);
set_switch_led(2, false);
set_switch_led(3, false);
set_switch_led(4, false);
set_switch_led(5, true);
set_switch_led(6, false);
break;
case 5:
set_switch_led(1, false);
set_switch_led(2, false);
set_switch_led(3, false);
set_switch_led(4, false);
set_switch_led(5, false);
set_switch_led(6, true);
break;
default:
set_switch_led(1, true);
set_switch_led(2, true);
set_switch_led(3, true);
set_switch_led(4, true);
set_switch_led(5, true);
set_switch_led(6, true);
break;
}
void led_set_layer(int layer)
{
switch (layer)
{
case 0:
set_switch_led(1, true);
set_switch_led(2, false);
set_switch_led(3, false);
set_switch_led(4, false);
set_switch_led(5, false);
set_switch_led(6, false);
break;
case 1:
set_switch_led(1, false);
set_switch_led(2, true);
set_switch_led(3, false);
set_switch_led(4, false);
set_switch_led(5, false);
set_switch_led(6, false);
break;
case 2:
set_switch_led(1, false);
set_switch_led(2, false);
set_switch_led(3, true);
set_switch_led(4, false);
set_switch_led(5, false);
set_switch_led(6, false);
break;
case 3:
set_switch_led(1, false);
set_switch_led(2, false);
set_switch_led(3, false);
set_switch_led(4, true);
set_switch_led(5, false);
set_switch_led(6, false);
break;
case 4:
set_switch_led(1, false);
set_switch_led(2, false);
set_switch_led(3, false);
set_switch_led(4, false);
set_switch_led(5, true);
set_switch_led(6, false);
break;
case 5:
set_switch_led(1, false);
set_switch_led(2, false);
set_switch_led(3, false);
set_switch_led(4, false);
set_switch_led(5, false);
set_switch_led(6, true);
break;
default:
set_switch_led(1, true);
set_switch_led(2, true);
set_switch_led(3, true);
set_switch_led(4, true);
set_switch_led(5, true);
set_switch_led(6, true);
break;
}
}
bool process_record_user (uint16_t keycode, keyrecord_t *record) {
switch ( keycode )
{
case TO( 0 ):
if ( record->event.pressed )
{
led_set_layer( 0 );
}
break;
case TO( 1 ):
if ( record->event.pressed )
{
led_set_layer( 1 );
}
break;
case TO( 2 ):
if ( record->event.pressed )
{
led_set_layer( 2 );
}
break;
case TO( 3 ):
if ( record->event.pressed )
{
led_set_layer( 3 );
}
break;
case TO( 4 ):
if ( record->event.pressed )
{
led_set_layer( 4 );
}
break;
case TO( 5 ):
if ( record->event.pressed )
{
led_set_layer( 5 );
}
break;
}
return true;
bool process_record_user(uint16_t keycode, keyrecord_t *record)
{
switch (keycode)
{
case TO(0):
if (record->event.pressed)
{
led_set_layer(0);
}
break;
case TO(1):
if (record->event.pressed)
{
led_set_layer(1);
}
break;
case TO(2):
if (record->event.pressed)
{
led_set_layer(2);
}
break;
case TO(3):
if (record->event.pressed)
{
led_set_layer(3);
}
break;
case TO(4):
if (record->event.pressed)
{
led_set_layer(4);
}
break;
case TO(5):
if (record->event.pressed)
{
led_set_layer(5);
}
break;
}
return true;
}

View file

@ -1,92 +1,100 @@
#include "../../m6_a.h"
#include QMK_KEYBOARD_H
/*KNOPS_MISC*/
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/*KNOPS_KEYMAP*/
/*KNOPS_LAYOUT*/
};
void set_led_state(int ledId, bool state) {
if(state) {
switch(ledId) {
case 0:
PORTD |= (1<<6);
break;
case 1:
PORTB |= (1<<6);
break;
case 2:
PORTF |= (1<<5);
break;
case 3:
PORTB |= (1<<4);
break;
case 4:
PORTC |= (1<<7);
break;
case 5:
PORTF |= (1<<7);
break;
}
} else {
switch(ledId) {
case 0:
PORTD &= ~(1<<6);
break;
case 1:
PORTB &= ~(1<<6);
break;
case 2:
PORTF &= ~(1<<5);
break;
case 3:
PORTB &= ~(1<<4);
break;
case 4:
PORTC &= ~(1<<7);
break;
case 5:
PORTF &= ~(1<<7);
break;
}
}
void set_led_state(int ledId, bool state)
{
if (state)
{
switch (ledId)
{
case 0:
PORTD |= (1 << 6);
break;
case 1:
PORTB |= (1 << 6);
break;
case 2:
PORTF |= (1 << 5);
break;
case 3:
PORTB |= (1 << 4);
break;
case 4:
PORTC |= (1 << 7);
break;
case 5:
PORTF |= (1 << 7);
break;
}
}
else
{
switch (ledId)
{
case 0:
PORTD &= ~(1 << 6);
break;
case 1:
PORTB &= ~(1 << 6);
break;
case 2:
PORTF &= ~(1 << 5);
break;
case 3:
PORTB &= ~(1 << 4);
break;
case 4:
PORTC &= ~(1 << 7);
break;
case 5:
PORTF &= ~(1 << 7);
break;
}
}
}
void led_init_ports() {
// Switch #1
DDRD |= (1<<6);
PORTD &= ~(1<<6);
// Switch #2
DDRB |= (1<<6);
PORTB &= ~(1<<6);
// Switch #3
DDRF |= (1<<5);
PORTF &= ~(1<<5);
// Switch #4
DDRB |= (1<<4);
PORTB &= ~(1<<4);
void led_init_ports()
{
// Switch #1
DDRD |= (1 << 6);
PORTD &= ~(1 << 6);
// Switch #5
DDRC |= (1<<7);
PORTC &= ~(1<<7);
// Switch #6
DDRF |= (1<<7);
PORTF &= ~(1<<7);
// Switch #2
DDRB |= (1 << 6);
PORTB &= ~(1 << 6);
// Switch #3
DDRF |= (1 << 5);
PORTF &= ~(1 << 5);
// Switch #4
DDRB |= (1 << 4);
PORTB &= ~(1 << 4);
// Switch #5
DDRC |= (1 << 7);
PORTC &= ~(1 << 7);
// Switch #6
DDRF |= (1 << 7);
PORTF &= ~(1 << 7);
}
void led_set_layer(int layer) {
void led_set_layer(int layer)
{
/*KNOPS_SIMPLELED_STATES*/
}
void matrix_init_user(void) {
void matrix_init_user(void)
{
led_init_ports();
led_set_layer(0);
@ -94,27 +102,28 @@ void matrix_init_user(void) {
/*KNOPS_INIT*/
}
const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) {
const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
{
//keyevent_t event = record->event;
/*KNOPS_MACRO*/
return NULL;
return NULL;
}
void matrix_scan_user(void) {
void matrix_scan_user(void)
{
/*KNOPS_SCAN*/
}
void led_set_user(uint8_t usb_led) {
void led_set_user(uint8_t usb_led)
{
/*KNOPS_FUNCTIONALLED_STATES*/
}
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
bool process_record_user(uint16_t keycode, keyrecord_t *record)
{
/*KNOPS_PROCESS_STATE*/
return NULL;
return NULL;
}

View file

@ -6,12 +6,14 @@ Keymap was from my own port for the M6-A before official support was added, thus
Top-right button acts as a "toggle between layers" button. Layer 0 -> Layer 1 -> Layer 2 -> Layer 0 -> ...
- Layer 0: Git and Discord shortcuts
- Layer 1: Media playback and volume controls
- Layer 2: Osu! gamepad layer
* Layer 0: Git and Discord shortcuts
* Layer 1: Media playback and volume controls
* Layer 2: Osu! gamepad layer
## Helpful alternative keymaps (WIP)
### Arrow cluster
Use [karabiner-elements](https://github.com/tekezo/Karabiner-Elements) on macOS so that the state of the modifiers (shift, caps lock) are synchronised between keyboards (for shift + arrow key text selection, for example). It's also a handy tool for customising keyboard behaviour on a Mac.
On Windows/Linux modifier state should be shared between all keyboards by default.
@ -19,7 +21,7 @@ On Windows/Linux modifier state should be shared between all keyboards by defaul
Installation: install [homebrew](https://brew.sh) and run `brew install Caskroom/cask/karabiner-elements`.
```C
KEYMAP(
LAYOUT(
KC_ESC, KC_UP, TO(_LAYER0),
KC_LEFT, KC_DOWN, KC_RIGHT
)

View file

@ -1,4 +1,4 @@
#include "../../m6_a.h"
#include QMK_KEYBOARD_H
#include "action_layer.h"
#include "eeconfig.h"
@ -9,64 +9,66 @@ extern keymap_config_t keymap_config;
// Layer names don't all need to be of the same length, obviously, and you can also skip them
// entirely and just use numbers.
enum layers {
_LAYER0,
_LAYER1,
_LAYER2
enum layers
{
_LAYER0,
_LAYER1,
_LAYER2
};
enum custom_keycodes {
GIT_ADD = SAFE_RANGE,
GIT_COMMIT,
GIT_PUSH,
MUTE,
DEAFEN
enum custom_keycodes
{
GIT_ADD = SAFE_RANGE,
GIT_COMMIT,
GIT_PUSH,
MUTE,
DEAFEN
};
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
if (record->event.pressed) {
switch(keycode) {
case GIT_ADD:
SEND_STRING("git add ."SS_TAP(X_ENTER));
break;
case GIT_COMMIT:
SEND_STRING("git commit -m "SS_DOWN(X_LSHIFT)SS_TAP(X_QUOTE)SS_UP(X_LSHIFT));
break;
case GIT_PUSH:
SEND_STRING("git push"SS_TAP(X_ENTER));
break;
case MUTE:
SEND_STRING(SS_LGUI(SS_LSFT("M")));
break;
case DEAFEN:
SEND_STRING(SS_LGUI(SS_LSFT("D")));
break;
return false;
}
}
return true;
bool process_record_user(uint16_t keycode, keyrecord_t *record)
{
if (record->event.pressed)
{
switch (keycode)
{
case GIT_ADD:
SEND_STRING("git add ." SS_TAP(X_ENTER));
break;
case GIT_COMMIT:
SEND_STRING("git commit -m " SS_DOWN(X_LSHIFT) SS_TAP(X_QUOTE) SS_UP(X_LSHIFT));
break;
case GIT_PUSH:
SEND_STRING("git push" SS_TAP(X_ENTER));
break;
case MUTE:
SEND_STRING(SS_LGUI(SS_LSFT("M")));
break;
case DEAFEN:
SEND_STRING(SS_LGUI(SS_LSFT("D")));
break;
return false;
}
}
return true;
};
#define _______ KC_TRNS
#define XXXXXXX KC_NO
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_LAYER0] = KEYMAP(
MUTE, DEAFEN, TO(_LAYER1),
GIT_ADD, GIT_COMMIT, GIT_PUSH
),
[_LAYER1] = KEYMAP(
KC_VOLD, KC_VOLU, TO(_LAYER2),
KC_MRWD, KC_MPLY, KC_MNXT
),
[_LAYER2] = KEYMAP(
KC_ESC, KC_UP, TO(_LAYER0),
KC_Z, KC_X, KC_SPACE
)
};
[_LAYER0] = LAYOUT(
MUTE, DEAFEN, TO(_LAYER1),
GIT_ADD, GIT_COMMIT, GIT_PUSH),
[_LAYER1] = LAYOUT(
KC_VOLD, KC_VOLU, TO(_LAYER2),
KC_MRWD, KC_MPLY, KC_MNXT),
[_LAYER2] = LAYOUT(
KC_ESC, KC_UP, TO(_LAYER0),
KC_Z, KC_X, KC_SPACE)};
void matrix_init_user(void) {
#ifdef BACKLIGHT_ENABLE
void matrix_init_user(void)
{
#ifdef BACKLIGHT_ENABLE
backlight_level(0);
#endif
#endif
}

View file

@ -1,18 +1,17 @@
#include "../../m6_a.h"
#include QMK_KEYBOARD_H
// Define Layers
#define _BASE 0
#define _FNX 1
#define _FNX 1
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// Base Layer
[_BASE] = KEYMAP(
TO(1), KC_UP, KC_PGDN,
KC_LEFT,KC_DOWN,KC_RGHT),
// Base Layer
[_BASE] = LAYOUT(
TO(1), KC_UP, KC_PGDN,
KC_LEFT, KC_DOWN, KC_RGHT),
// Fn Layer
[_FNX] = KEYMAP(
TO(0),KC_VOLU,KC_MPLY,
KC_MRWD,KC_VOLD,KC_MFFD)
};
// Fn Layer
[_FNX] = LAYOUT(
TO(0), KC_VOLU, KC_MPLY,
KC_MRWD, KC_VOLD, KC_MFFD)};

View file

@ -21,9 +21,9 @@
// This a shortcut to help you visually see your layout.
// The first section contains all of the arguments
// The second converts the arguments into a two-dimensional array
#define KEYMAP( \
K00, K01, K02, K03, K04, K05 \
) { \
{ K00, K01, K02, K03, K04, K05 }, \
}
#define LAYOUT( \
K00, K01, K02, K03, K04, K05) \
{ \
{K00, K01, K02, K03, K04, K05}, \
}
#endif // RAMA_M6_A