cKeys Handwire 101 Refactor (#13879)

* update info.json

- use human-friendly formatting
- remove `key_count` key

* rename LAYOUT to LAYOUT_ortho_4x4

* refactor default keymap

- add license header
- qmk cformat pass
- keycode grid alignment

* remove empty config.h file from default keymap

* update Manufacturer and Product strings

* tidy up handwire_101.c

- add license header
- remove boilerplate functions

* tidy up handwire_101.h

- add license header
- remove instructive comment

* minor rules.mk tidy-up

- remove Bootloader selection sample comments

* rewrite SEND_STRING() statements per fauxpark

Co-authored-by: Ryan <fauxpark@gmail.com>

Co-authored-by: Ryan <fauxpark@gmail.com>
master
James Young 2021-08-04 14:32:27 -07:00 committed by GitHub
parent 4445455c1f
commit f4c55db8dd
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
7 changed files with 237 additions and 211 deletions

View File

@ -23,8 +23,8 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define VENDOR_ID 0xFEED #define VENDOR_ID 0xFEED
#define PRODUCT_ID 0x6060 #define PRODUCT_ID 0x6060
#define DEVICE_VER 0x0001 #define DEVICE_VER 0x0001
#define MANUFACTURER ckeys_handwire #define MANUFACTURER cKeys
#define PRODUCT ckeys_handwire #define PRODUCT Handwire 101
/* key matrix size */ /* key matrix size */
#define MATRIX_ROWS 4 #define MATRIX_ROWS 4

View File

@ -1,28 +1,17 @@
/* Copyright 2019 Branden Byers
*
* 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 "handwire_101.h" #include "handwire_101.h"
void matrix_init_kb(void) {
// put your keyboard start-up code here
// runs once when the firmware starts up
// Turn status LED on
//DDRD |= (1<<6);
//PORTD |= (1<<6);
matrix_init_user();
}
void matrix_scan_kb(void) {
// put your looping keyboard code here
// runs every cycle (a lot)
matrix_scan_user();
}
bool process_record_kb(uint16_t keycode, keyrecord_t *record) {
// put your per-action keyboard code here
// runs for every action, just before processing by the firmware
return process_record_user(keycode, record);
}
void led_set_kb(uint8_t usb_led) {
// put your keyboard LED indicator (ex: Caps Lock LED) toggling code here
led_set_user(usb_led);
}

View File

@ -1,12 +1,24 @@
/* Copyright 2019 Branden Byers
*
* 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 #pragma once
#include "quantum.h" #include "quantum.h"
// This a shortcut to help you visually see your layout. #define LAYOUT_ortho_4x4( \
// The following is an example using the Planck MIT layout
// The first section contains all of the arguements
// The second converts the arguments into a two-dimensional array
#define LAYOUT( \
k00, k01, k02, k03, \ k00, k01, k02, k03, \
k10, k11, k12, k13, \ k10, k11, k12, k13, \
k20, k21, k22, k23, \ k20, k21, k22, k23, \
@ -18,4 +30,3 @@
{ k20, k21, k22, k23 }, \ { k20, k21, k22, k23 }, \
{ k30, k31, k32, k33 } \ { k30, k31, k32, k33 } \
} }

View File

@ -4,10 +4,32 @@
"maintainer": "brandenbyers", "maintainer": "brandenbyers",
"width": 4, "width": 4,
"height": 4, "height": 4,
"layout_aliases": {
"LAYOUT": "LAYOUT_ortho_4x4"
},
"layouts": { "layouts": {
"LAYOUT_ortho_4x4": { "LAYOUT_ortho_4x4": {
"key_count": 16, "layout": [
"layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":0, "y":1}, {"x":1, "y":1}, {"x":2, "y":1}, {"x":3, "y":1}, {"x":0, "y":2}, {"x":1, "y":2}, {"x":2, "y":2}, {"x":3, "y":2}, {"x":0, "y":3}, {"x":1, "y":3}, {"x":2, "y":3}, {"x":3, "y":3}] {"x":0, "y":0},
{"x":1, "y":0},
{"x":2, "y":0},
{"x":3, "y":0},
{"x":0, "y":1},
{"x":1, "y":1},
{"x":2, "y":1},
{"x":3, "y":1},
{"x":0, "y":2},
{"x":1, "y":2},
{"x":2, "y":2},
{"x":3, "y":2},
{"x":0, "y":3},
{"x":1, "y":3},
{"x":2, "y":3},
{"x":3, "y":3}
]
} }
} }
} }

View File

@ -1,3 +0,0 @@
#pragma once
// Add overrides here

View File

@ -1,3 +1,19 @@
/* Copyright 2019 Branden Byers
*
* 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 #include QMK_KEYBOARD_H
enum layers { enum layers {
@ -29,13 +45,13 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* | 1 | 2 | 3 | - | * | 1 | 2 | 3 | - |
* |-----+-----+-----+-----| * |-----+-----+-----+-----|
* | 0 | . | = | + | * | 0 | . | = | + |
* `---------------------- ' * `-----------------------'
*/ */
[_BASE] = LAYOUT( [_BASE] = LAYOUT_ortho_4x4(
KC_KP_7, KC_KP_8, KC_KP_9, LT(MO(_LAYERS), KC_PSLS), \ KC_P7, KC_P8, KC_P9, LT(_LAYERS, KC_PSLS),
KC_KP_4, KC_KP_5, KC_KP_6, KC_PAST, \ KC_P4, KC_P5, KC_P6, KC_PAST,
KC_KP_1, KC_KP_2, KC_KP_3, KC_PMNS, \ KC_P1, KC_P2, KC_P3, KC_PMNS,
KC_KP_0, KC_KP_DOT, KC_KP_EQUAL, KC_PPLS \ KC_P0, KC_PDOT, KC_PEQL, KC_PPLS
), ),
/* LAYERS /* LAYERS
* ,---------------------------. * ,---------------------------.
@ -48,11 +64,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* | ADMIN | | | | * | ADMIN | | | |
* `---------------------------' * `---------------------------'
*/ */
[_LAYERS] = LAYOUT( [_LAYERS] = LAYOUT_ortho_4x4(
TG(_MUSIC), _______, _______, _______, \ TG(_MUSIC), _______, _______, _______,
TG(_MOUSE), _______, _______, _______, \ TG(_MOUSE), _______, _______, _______,
TG(_TERMINAL), _______, _______, _______, \ TG(_TERMINAL), _______, _______, _______,
TG(_ADMIN), _______, _______, _______\ TG(_ADMIN), _______, _______, _______
), ),
/* MUSIC /* MUSIC
* ,-----------------------. * ,-----------------------.
@ -63,14 +79,14 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* | OFF | | | | * | OFF | | | |
* |-----+-----+-----+-----| * |-----+-----+-----+-----|
* | ON | | |MODES| * | ON | | |MODES|
* `---------------------- ' * `-----------------------'
*/ */
// TODO: Make this music layer the one to jump to other music layers (different octaves) // TODO: Make this music layer the one to jump to other music layers (different octaves)
[_MUSIC] = LAYOUT( [_MUSIC] = LAYOUT_ortho_4x4(
_______, _______, _______, _______, \ _______, _______, _______, _______,
_______, _______, _______, TG(_MUSIC_4_LIFE), \ _______, _______, _______, TG(_MUSIC_4_LIFE),
MU_OFF, _______, _______, _______, \ MU_OFF, _______, _______, _______,
MU_ON, _______, _______, MU_MOD \ MU_ON, _______, _______, MU_MOD
), ),
/* MUSIC_4_LIFE /* MUSIC_4_LIFE
* ,-----------------------. * ,-----------------------.
@ -81,13 +97,13 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* | | | | | * | | | | |
* |-----+-----+-----+-----| * |-----+-----+-----+-----|
* | | | | | * | | | | |
* `---------------------- ' * `-----------------------'
*/ */
[_MUSIC_4_LIFE] = LAYOUT( [_MUSIC_4_LIFE] = LAYOUT_ortho_4x4(
KC_M, KC_M, KC_M, KC_M, \ KC_M, KC_M, KC_M, KC_M,
KC_M, KC_M, KC_M, KC_M, \ KC_M, KC_M, KC_M, KC_M,
KC_M, KC_M, KC_M, KC_M, \ KC_M, KC_M, KC_M, KC_M,
KC_M, KC_M, KC_M, KC_M \ KC_M, KC_M, KC_M, KC_M
), ),
/* MOUSE /* MOUSE
* ,-------------------------------------------------. * ,-------------------------------------------------.
@ -100,11 +116,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* | BUTTON 3 |SCROLL LEFT|SCROLL DOWN |SCROLL RIGHT| * | BUTTON 3 |SCROLL LEFT|SCROLL DOWN |SCROLL RIGHT|
* `-------------------------------------------------' * `-------------------------------------------------'
*/ */
[_MOUSE] = LAYOUT( [_MOUSE] = LAYOUT_ortho_4x4(
KC_MS_BTN5, _______, KC_MS_WH_UP, _______, \ KC_BTN5, _______, KC_WH_U, _______,
_______, KC_MS_BTN1, KC_MS_UP, KC_MS_BTN2, \ _______, KC_BTN1, KC_MS_U, KC_BTN2,
KC_MS_BTN4, KC_MS_LEFT, KC_MS_DOWN, KC_MS_RIGHT, \ KC_BTN4, KC_MS_L, KC_MS_D, KC_MS_R,
KC_MS_BTN3, KC_MS_WH_LEFT, KC_MS_WH_DOWN, KC_MS_WH_RIGHT \ KC_BTN3, KC_WH_L, KC_WH_D, KC_WH_R
), ),
/* TERMINAL /* TERMINAL
* ,---------------------------------------. * ,---------------------------------------.
@ -117,11 +133,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* |TERMINAL ON |HELP | | | * |TERMINAL ON |HELP | | |
* `--------=======------------------------' * `--------=======------------------------'
*/ */
[_TERMINAL] = LAYOUT( [_TERMINAL] = LAYOUT_ortho_4x4(
_______, TERM_ABOUT, _______, _______, \ _______, TERM_ABOUT, _______, _______,
TERM_OFF, TERM_PRINT, _______, _______, \ TERM_OFF, TERM_PRINT, _______, _______,
_______, TERM_FLUSH, _______, _______, \ _______, TERM_FLUSH, _______, _______,
TERM_ON, TERM_HELP , _______, _______\ TERM_ON, TERM_HELP , _______, _______
), ),
/* ADMIN /* ADMIN
* ,-----------------------------------------. * ,-----------------------------------------.
@ -134,11 +150,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* | X | |CLICKY DOWN|CLICKY ON | * | X | |CLICKY DOWN|CLICKY ON |
* `-----------------------------------------' * `-----------------------------------------'
*/ */
[_ADMIN] = LAYOUT( [_ADMIN] = LAYOUT_ortho_4x4(
RESET, _______, _______, _______, \ RESET, _______, _______, _______,
CKEYS_ABOUT, _______, _______, _______, \ CKEYS_ABOUT, _______, _______, _______,
_______, _______, _______, CK_OFF, \ _______, _______, _______, CK_OFF,
_______, _______, _______, CK_ON \ _______, _______, _______, CK_ON
), ),
}; };
@ -147,30 +163,28 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
case TERM_ABOUT: case TERM_ABOUT:
if (record->event.pressed) { if (record->event.pressed) {
// when keycode TERM_ABOUT is pressed // when keycode TERM_ABOUT is pressed
SEND_STRING("about"SS_TAP(X_ENTER)); SEND_STRING("about\n");
} else {
// when keycode TERM_ABOUT is released
} }
break; break;
case TERM_PRINT: case TERM_PRINT:
if (record->event.pressed) { if (record->event.pressed) {
SEND_STRING("print"SS_TAP(X_ENTER)); SEND_STRING("print\n");
} else { } }
break; break;
case TERM_FLUSH: case TERM_FLUSH:
if (record->event.pressed) { if (record->event.pressed) {
SEND_STRING("flush"SS_TAP(X_ENTER)); SEND_STRING("flush\n");
} else { } }
break; break;
case TERM_HELP: case TERM_HELP:
if (record->event.pressed) { if (record->event.pressed) {
SEND_STRING("help"SS_TAP(X_ENTER)); SEND_STRING("help\n");
} else { } }
break; break;
case CKEYS_ABOUT: case CKEYS_ABOUT:
if (record->event.pressed) { if (record->event.pressed) {
SEND_STRING("https://cKeys.org"SS_TAP(X_ENTER)"Making people smile one keyboard at a time."SS_TAP(X_ENTER)"cKeys is a volunteer-run 501(c)(3) nonprofit organization."SS_TAP(X_ENTER)); SEND_STRING("https://cKeys.org\nMaking people smile one keyboard at a time.\ncKeys is a volunteer-run 501(c)(3) nonprofit organization.\n");
} else { } }
break; break;
} }
return true; return true;

View File

@ -2,13 +2,6 @@
MCU = atmega32u4 MCU = atmega32u4
# Bootloader selection # Bootloader selection
# Teensy halfkay
# Pro Micro caterina
# Atmel DFU atmel-dfu
# LUFA DFU lufa-dfu
# QMK DFU qmk-dfu
# ATmega32A bootloadHID
# ATmega328P USBasp
BOOTLOADER = caterina BOOTLOADER = caterina
# Build Options # Build Options