diff options
Diffstat (limited to 'keyboards/handwired')
52 files changed, 3307 insertions, 819 deletions
diff --git a/keyboards/handwired/datahand/config.h b/keyboards/handwired/datahand/config.h new file mode 100644 index 0000000000..1ba8479f0a --- /dev/null +++ b/keyboards/handwired/datahand/config.h @@ -0,0 +1,87 @@ +/* Copyright 2017-2019 Nikolaus Wittenstein <nikolaus.wittenstein@gmail.com> + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH + * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, + * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM + * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR + * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR + * PERFORMANCE OF THIS SOFTWARE. + */ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +/* Taken from the DataHand PS/2-USB adaptor. */ +#define VENDOR_ID 0x13BA +#define PRODUCT_ID 0x0017 +#define DEVICE_VER 0x0001 +#define MANUFACTURER DataHand +#define PRODUCT DataHand +#define DESCRIPTION DataHand Teensy++ 2.0 conversion + +/* key matrix size */ +#define MATRIX_ROWS 13 +#define MATRIX_COLS 4 + +#define DIODE_DIRECTION CUSTOM_MATRIX + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCING_DELAY 0 + +/* 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 + +/* + * 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 + +/* + * Magic Key Options + * + * Magic keys are hotkey commands that allow control over firmware functions of + * the keyboard. They are best used in combination with the HID Listen program, + * found here: https://www.pjrc.com/teensy/hid_listen.html + * + * The options below allow the magic key functionality to be changed. This is + * useful if your keyboard/keypad is missing keys and you want magic key support. + */ + +/* key combination for magic key command */ +#define IS_COMMAND() ( \ + keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \ +) + +/* + * Command/Windows key option + * + * If you define this, the thumb enter key becomes the Command/Windows key. There's still an enter key on the right + * ring finger, so this key is much better utilized as the otherwise nonexistent Command key. I think some newer + * DataHands let you remap right ring east as Command, but having it on the thumb is nicer. Comment out this define + * to use the original layout. + */ +#define DATAHAND_THUMB_RETURN_COMMAND diff --git a/keyboards/handwired/datahand/datahand.h b/keyboards/handwired/datahand/datahand.h new file mode 100644 index 0000000000..cb9a4d3e3b --- /dev/null +++ b/keyboards/handwired/datahand/datahand.h @@ -0,0 +1,133 @@ +/* Copyright 2017-2019 Nikolaus Wittenstein <nikolaus.wittenstein@gmail.com> + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH + * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, + * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM + * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR + * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR + * PERFORMANCE OF THIS SOFTWARE. + */ + +#pragma once + +#include "quantum.h" + +/* This a shortcut to help you visually see your layout. + * The first section contains all of the arguements; the second converts the arguments into a two-dimensional array. + */ + +/* Each code is three letters + * l or r - left or right hand + * p, r, m, i, t - pinky, ring finger, middle finger, index finger, thumb + * fingers: n, s, e, w, c - north, south, east, west, and center (manual calls this "well" but we already have "west") + * thumb: p, n, c, l, u, k - pad, nail, center, lock (harder center), up, knuckle + */ +#define LAYOUT( \ + lpn, lrn, lmn, lin, rin, rmn, rrn, rpn, \ +lpw, lpc, lpe, lrw, lrc, lre, lmw, lmc, lme, liw, lic, lie, riw, ric, rie, rmw, rmc, rme, rrw, rrc, rre, rpw, rpc, rpe, \ + lps, lrs, lms, lis, ris, rms, rrs, rps, \ + ltp, ltn, rtn, rtp, \ + ltc, rtc, \ + ltl, rtl, \ + ltu, ltk, rtk, rtu) \ +{ \ + {riw, rin, lpw, lpn},\ + {ric, rie, lpc, lpe},\ + {ris, rms, lps, lrs},\ + {rmw, rmn, lrw, lrn},\ + {rmc, rme, lrc, lre},\ + {rrw, rrn, lmw, lmn},\ + {rrc, rre, lmc, lme},\ + {rrs, rps, lms, lis},\ + {rpw, rpn, liw, lin},\ + {rpc, rpe, lic, lie},\ + {rtk, rtn, ltk, ltn},\ + {rtc, rtl, ltc, ltl},\ + {rtp, rtu, ltp, ltu},\ +} + +/* Mode LEDs are active-low on Port B on the Teensy. */ +#define LED_MODE_PORT PORTB +#define LED_TENKEY (1<<3) +#define LED_FN (1<<4) +#define LED_NORMAL (1<<5) +#define LED_NAS (1<<6) + +/* Lock LEDs are active-low on Port F on the Teensy. */ +#define LED_LOCK_PORT PORTF +#define LED_CAPS_LOCK (1<<4) +#define LED_MOUSE_LOCK (1<<5) +#define LED_NUM_LOCK (1<<6) +#define LED_SCROLL_LOCK (1<<7) + + +/* Appendix: + * Table based on https://geekhack.org/index.php?topic=12212.msg2059319#msg2059319 + * Some pin assignments (e.g. for PS/2 I/O) have been fixed. + * + * Teensy Datahand 8051 pin pin 8051 Datahand Teensy + * ------ -------- ---- --- --- ---- -------- ------ + * GND Mtrx send A P1.0 1 40 VCC VCC VCC + * PB7 Mtrx send B P1.1 2 39 P0.0 LED RH NAS PB6 + * PD0 Mtrx send C P1.2 3 38 P0.1 LED RH NORM PB5 + * PD1 Mtrx send D P1.3 4 37 P0.2 LED RH FCTN PB4 + * PD2 RH rcv 0 P1.4 5 36 P0.3 LED RH 10K PB3 + * PD3 RH rcv 1 P1.5 6 35 P0.4 LED RH unused PB2 + * PD4 LH rcv 0 P1.6 7 34 P0.5 LED RH unused PE1 + * PD5 LH rcv 1 P1.7 8 33 P0.6 LED RH unused PE0 + * PD6 Reset button RST 9 32 P0.7 ? PE7 + * PD7 ? P3.0 10 31 VPP - PE6 + * PE0 ? P3.1 11 30 ALE - GND + * PE1 kbd data P3.2 12 29 PSEN - AREF + * PC0 ? P3.3 13 28 P2.7 ? PF0 + * PC1 kbd clk P3.4 14 27 P2.6 ? PF1 + * PC2 ? P3.5 15 26 P2.5 ? PF2 + * PC3 RAM P3.6 16 25 P2.4 ? PF3 + * PC4 RAM P3.7 17 24 P2.3 LED D15 LH (CAPLK) PF4 + * PC5 XTAL2 XTAL2 18 23 P2.2 LED D13 LH (MSELK) PF5 + * PC6 XTAL1 XTAL1 19 22 P2.1 LED D6 LH (NUMLK) PF6 + * PC7 GND GND 20 21 P2.0 LED D14 LH (SCRLK) PF7 + * + * JP3 Pinout + * 2 - keyboard data + * 3 - keyboard clock + * + * In order to get the Teensy to work, we need to move pin 1 to a different pin. This is + * because on the Teensy pin 1 is ground, but we need to write to pin 1 in order to read + * the keyboard matrix. An ideal pin to move it to is VPP (pin 31), because this pin tells + * the 8051 whether it should read from external or internal memory. The Teensy doesn't + * care about that. + * + * The easiest way to reassign the pin is to use standoffs. You can check out this thread: + * https://geekhack.org/index.php?topic=12212.msg235382#msg235382 for a picture of what + * this looks like. Note that in the picture the pin has been reassigned to pin 12. We + * don't want to do that because we're going to use that pin to send data over PS/2. + * + * We could if we wanted also reassign the PS/2 pins to Teensy hardware UART pins, but + * that's more work. Instead we'll just bit-bang PS/2 because it's an old, slow protocol + * (and because there's already a bit-banged PS/2 host implementation in QMK - we just + * need to add the device side). + * + * So overall, we want the following inputs and outputs: + * Outputs: + * Matrix: + * PB7 + * PD0 + * PD1 + * PE6 (moved from pin1, GND) + * LEDs: + * PB3-6 + * PF4-7 + * Inputs: + * Matrix: + * PD2-5 + * I/Os (start up as inputs): + * PS/2: + * PC1 + * PE1 + */ diff --git a/keyboards/handwired/datahand/keymaps/default/keymap.c b/keyboards/handwired/datahand/keymaps/default/keymap.c new file mode 100644 index 0000000000..8f44535594 --- /dev/null +++ b/keyboards/handwired/datahand/keymaps/default/keymap.c @@ -0,0 +1,313 @@ +/* Copyright 2017-2019 Nikolaus Wittenstein <nikolaus.wittenstein@gmail.com> + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH + * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, + * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM + * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR + * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR + * PERFORMANCE OF THIS SOFTWARE. + */ + +#include QMK_KEYBOARD_H + +#include <stdbool.h> + +/* Datahand features not supported: + * * All online reprogramming (user settings using the reset button). + * * Program Selection features. + * * Macros. + * * Direct substitutions. + * * L/R Modf. + * * Mouse Click Lock (Function Direct Access + Mouse Button key). + * * Different mouse movement speeds with the two pointer fingers, and using both pointer fingers to move even faster. + * + * As far as I know, everything else works. + */ + +enum layer { + NORMAL, +#ifdef DATAHAND_THUMB_RETURN_COMMAND + NORMAL_THUMB_RETURN_COMMAND, +#endif + FUNCTION_MOUSE, + FUNCTION_ARROWS, + NAS, + NAS_NUMLOCK, + NAS_TENKEY, + NAS_TENKEY_NUMLOCK, + + NUM_LAYERS +}; + +enum custom_keycodes { + N = SAFE_RANGE, /* Normal */ + NS, /* NAS */ + NSL, /* NAS Lock */ + NLK, /* Numlock */ + FN, /* Function mode - needs to be able to switch to mouse or arrow layer */ + TK0, /* Ten-key off button */ + TK1, /* Ten-key on button */ + AR, /* FN arrow mode */ + MS, /* FN mouse mode */ + DZ, /* Double zero button */ +}; + +static bool mouse_enabled = true; +static bool tenkey_enabled = false; +static bool numlock_enabled = false; +static bool nas_locked = false; + +/* Declared weak so that it can easily be overridden. */ +__attribute__((weak)) const uint16_t PROGMEM keymaps[NUM_LAYERS][MATRIX_ROWS][MATRIX_COLS] = { +[NORMAL] = LAYOUT( + KC_Q, KC_W, KC_E, KC_R, KC_U, KC_I, KC_O, KC_P, +KC_DEL, KC_A, KC_LBRC, KC_ESC, KC_S, KC_B, KC_GRV, KC_D, KC_T, KC_DQT, KC_F, KC_G, KC_H, KC_J, KC_QUOT, KC_Y, KC_K, KC_COLN, KC_N, KC_L, KC_ENT, KC_RBRC, KC_SCLN, KC_BSLS, + KC_Z, KC_X, KC_C, KC_V, KC_M, KC_COMM, KC_DOT, KC_SLSH, + KC_ENT, KC_TAB, KC_BSPC, KC_SPC, + KC_LSFT, NS, + KC_CAPS, NSL, + N, KC_LCTL, KC_LALT, FN), + +#ifdef DATAHAND_THUMB_RETURN_COMMAND +[NORMAL_THUMB_RETURN_COMMAND] = LAYOUT( + _______, _______, _______, _______, _______, _______, _______, _______, +_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, + KC_LCMD, _______, _______, _______, + _______, _______, + _______, _______, + _______, _______, _______, _______), +#endif + +[FUNCTION_MOUSE] = LAYOUT( + KC_F2, KC_F4, KC_F6, KC_MS_U, KC_MS_U, KC_F8, KC_F10, KC_PGUP, +_______, KC_NO, KC_SLCK, _______, KC_BTN3, NLK, KC_BTN1, MS, KC_BTN2, KC_MS_L, KC_BTN1, KC_MS_R, KC_MS_L, KC_BTN2, KC_MS_R, KC_END, AR, KC_LSFT, KC_INS, KC_9, KC_ENT, KC_F11, KC_0, KC_F12, + KC_F1, KC_F3, KC_F5, KC_MS_D, KC_MS_D, KC_F7, KC_F9, KC_PGDN, + _______, _______, _______, _______, + _______, _______, + _______, _______, + _______, _______, _______, _______), +[FUNCTION_ARROWS] = LAYOUT( + _______, _______, _______, KC_UP, KC_UP, _______, _______, _______, +_______, _______, _______, _______, KC_LCTL, _______, _______, _______, _______, KC_LEFT, KC_HOME, KC_RGHT, KC_LEFT, KC_HOME, KC_RGHT, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, KC_DOWN, KC_DOWN, _______, _______, _______, + _______, _______, _______, _______, + _______, _______, + _______, _______, + _______, _______, _______, _______), +[NAS] = LAYOUT( + KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, +_______, KC_1, KC_TILD, _______, KC_2, NLK, KC_LABK, KC_3, KC_RABK, KC_SLSH, KC_4, KC_5, KC_6, KC_7, KC_UNDS, KC_CIRC, KC_8, KC_ENT, KC_SCLN, KC_9, KC_BSLS, TK0, KC_0, TK1, + KC_EQL, KC_X, KC_PERC, KC_MINS, KC_PLUS, KC_DOT, KC_SLSH, KC_QUES, + _______, _______, _______, _______, + _______, _______, + _______, _______, + _______, _______, _______, _______), +[NAS_NUMLOCK] = LAYOUT( + _______, _______, _______, _______, _______, KC_PAST, _______, _______, +_______, KC_KP_1, _______, _______, KC_KP_2, _______, _______, KC_KP_3, _______, KC_PSLS, KC_KP_4, KC_KP_5, KC_KP_6, KC_KP_7, _______, _______, KC_KP_8, _______, _______, KC_KP_9, KC_PENT, _______, KC_KP_0, _______, + KC_PEQL, _______, _______, KC_PMNS, KC_PPLS, _______, KC_PDOT, _______, + _______, _______, _______, _______, + _______, _______, + _______, _______, + _______, _______, _______, _______), +[NAS_TENKEY] = LAYOUT( + _______, _______, _______, KC_UP, KC_7, KC_8, KC_9, KC_ASTR, +_______, KC_QUOT, _______, _______, KC_DLR, _______, _______, KC_AMPR, _______, KC_LEFT, KC_HOME, KC_RGHT, KC_0, KC_4, DZ, KC_PLUS, KC_5, KC_MINS, KC_EQL, KC_6, KC_ENT, _______, KC_DOT, _______, + KC_LPRN, KC_RPRN, _______, KC_DOWN, KC_1, KC_2, KC_3, KC_SLSH, + _______, _______, _______, _______, + _______, _______, + _______, _______, + _______, _______, _______, _______), +[NAS_TENKEY_NUMLOCK] = LAYOUT( + _______, _______, _______, _______, KC_KP_7, KC_KP_8, KC_KP_9, KC_PAST, +_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_KP_0, KC_KP_4, _______, KC_PPLS, KC_KP_5, KC_PMNS, KC_PEQL, KC_KP_6, KC_PENT, _______, KC_PDOT, _______, + _______, _______, _______, _______, KC_KP_1, KC_KP_2, KC_KP_3, KC_PSLS, + _______, _______, _______, _______, + _______, _______, + _______, _______, + _______, _______, _______, _______), +}; + +static void lock_led_set(bool on, uint8_t led) { + if (on) { + LED_LOCK_PORT &= ~led; + } else { + LED_LOCK_PORT |= led; + } +} + +static void mode_led_set(uint8_t led) { + static const uint8_t ALL_MODE_LEDS = LED_FN | LED_NORMAL | LED_NAS | LED_TENKEY; + LED_MODE_PORT |= ALL_MODE_LEDS; + LED_MODE_PORT &= ~led; +} + +static void layer_set(bool on, uint8_t layer) { + if (on) { + layer_on(layer); + } else { + layer_off(layer); + } + + if (layer_state_is(NAS) || layer_state_is(NAS_NUMLOCK) || layer_state_is(NAS_TENKEY) || layer_state_is(NAS_TENKEY_NUMLOCK)) { + if (tenkey_enabled) { + mode_led_set(LED_NAS | LED_TENKEY); + } else { + mode_led_set(LED_NAS); + } + } else if (layer_state_is(FUNCTION_MOUSE) || layer_state_is(FUNCTION_ARROWS)) { + mode_led_set(LED_FN); + } else if (layer_state_is(NORMAL)) { + mode_led_set(LED_NORMAL); + } +} + +static void set_normal(void) { + layer_move(NORMAL); + +#ifdef DATAHAND_THUMB_RETURN_COMMAND + layer_set(true, NORMAL_THUMB_RETURN_COMMAND); +#endif + + /* Then call layer_set to update LEDs. */ + layer_set(true, NORMAL); +} + +static void set_nas(bool on) { + /* Always turn on the base NAS layer so other layers can fall through. */ + layer_set(on, NAS); + + layer_set(on && numlock_enabled, NAS_NUMLOCK); + layer_set(on && tenkey_enabled, NAS_TENKEY); + layer_set(on && tenkey_enabled && numlock_enabled, NAS_TENKEY_NUMLOCK); +} + +static void set_tenkey(bool on) { + tenkey_enabled = on; + + /* We have to be on the NAS layer in order to be able to toggle TK. + * Re-toggle it on so that we move to the right layer (and set the right LED). + */ + set_nas(true); +} + +static void toggle_numlock(void) { + numlock_enabled = !numlock_enabled; + lock_led_set(numlock_enabled, LED_NUM_LOCK); + + if (layer_state_is(NAS)) { + /* If we're already in NAS, re-set it so that we activate the numlock layer. */ + set_nas(true); + } +} + +static void set_function(void) { + /* Make sure to turn off NAS if we're entering function */ + set_nas(false); + + /* Always turn on the mouse layer so the arrow layer can fall through. */ + layer_set(true, FUNCTION_MOUSE); + layer_set(!mouse_enabled, FUNCTION_ARROWS); +} + +static void set_mouse_enabled(bool on) { + mouse_enabled = on; + + /* Re-run set_function to set our layers correctly. */ + set_function(); +} + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + bool pressed = record->event.pressed; + + switch(keycode) { + case N: + if (pressed) { + set_normal(); + } + break; + + case NS: + if (pressed) { + nas_locked = false; + } + set_nas(pressed); + break; + + case NSL: + if (pressed) { + nas_locked = true; + set_nas(true); + } + break; + + case NLK: + if (pressed) { + toggle_numlock(); + SEND_STRING(SS_DOWN(X_NUMLOCK)); + } else { + SEND_STRING(SS_UP(X_NUMLOCK)); + } + break; + + case FN: + if (pressed) { + set_function(); + } + break; + + case TK0: + if (pressed) { + set_tenkey(false); + } + break; + + case TK1: + if (pressed) { + set_tenkey(true); + } + break; + + case MS: + if (pressed) { + set_mouse_enabled(true); + } + break; + + case AR: + if (pressed) { + set_mouse_enabled(false); + } + break; + + case DZ: + if (pressed) { + SEND_STRING(SS_TAP(X_KP_0) SS_TAP(X_KP_0)); + } + break; + } + + return true; +}; + +void matrix_init_user(void) { +#ifdef DATAHAND_THUMB_RETURN_COMMAND + set_normal(); +#endif +} + +void matrix_scan_user(void) { + +} + +void led_set_user(uint8_t usb_led) { + lock_led_set(usb_led & (1<<USB_LED_NUM_LOCK), LED_NUM_LOCK); + lock_led_set(usb_led & (1<<USB_LED_CAPS_LOCK), LED_CAPS_LOCK); + lock_led_set(usb_led & (1<<USB_LED_SCROLL_LOCK), LED_SCROLL_LOCK); +} diff --git a/keyboards/handwired/datahand/matrix.c b/keyboards/handwired/datahand/matrix.c new file mode 100644 index 0000000000..a08450d779 --- /dev/null +++ b/keyboards/handwired/datahand/matrix.c @@ -0,0 +1,125 @@ +/* Copyright 2017-2019 Nikolaus Wittenstein <nikolaus.wittenstein@gmail.com> + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH + * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, + * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM + * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR + * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR + * PERFORMANCE OF THIS SOFTWARE. + */ + +#include "datahand.h" + +#include "matrix.h" +#include "action.h" + +#include <stdint.h> +#include <stdbool.h> +#include <avr/io.h> + +static matrix_row_t matrix[MATRIX_ROWS]; + +static matrix_row_t read_cols(void); +static void select_row(uint8_t row); + +void matrix_init(void) { + /* See datahand.h for more detail on pins. */ + + /* 7 - matrix scan; 6-3 - mode LEDs */ + DDRB = 0b11111000; + + /* 1-0 - matrix scan */ + DDRD = 0b00000011; + + /* 6 - matrix scan */ + DDRE = 0b01000000; + + /* 7-4 - lock LEDs */ + DDRF = 0b11110000; + + /* Turn off the non-Normal LEDs (they're active low). */ + PORTB |= LED_TENKEY | LED_FN | LED_NAS; + + /* Turn off the lock LEDs. */ + PORTF |= LED_CAPS_LOCK | LED_NUM_LOCK | LED_SCROLL_LOCK | LED_MOUSE_LOCK; + + matrix_init_user(); +} + +uint8_t matrix_scan(void) { + for (uint8_t row = 0; row < MATRIX_ROWS; row++) { + select_row(row); + /* The default hardware works down to at least 100us, but I have a replacement + * photodiode that responds a little more slowly. Cranking it up to 1000us fixes + * shadowing issues. + */ + _delay_us(1000); + matrix[row] = read_cols(); + } + + matrix_scan_user(); + + return 1; +} + +matrix_row_t matrix_get_row(uint8_t row) { + return matrix[row]; +} + +void matrix_print(void) { + print("\nr/c 01234567\n"); + + for (uint8_t row = 0; row < MATRIX_ROWS; row++) { + phex(row); + print(": "); + print_bin_reverse8(matrix_get_row(row)); + print("\n"); + } +} + +bool process_record_kb(uint16_t keycode, keyrecord_t *record) { + return process_record_user(keycode, record); +} + +static void select_row(uint8_t row) { + /* Original 8051: P1 bits 0-3 (pins 1-4) + * Teensy++: PE0, PB7, PD0, PD1 + */ + + if (row & (1<<0)) { + PORTE |= (1<<6); + } else { + PORTE &= ~(1<<6); + } + + if (row & (1<<1)) { + PORTB |= (1<<7); + } else { + PORTB &= ~(1<<7); + } + + if (row & (1<<2)) { + PORTD |= (1<<0); + } else { + PORTD &= ~(1<<0); + } + + if (row & (1<<3)) { + PORTD |= (1<<1); + } else { + PORTD &= ~(1<<1); + } +} + +static matrix_row_t read_cols(void) { + /* Original 8051: P1 bits 4-7 (pins 5-8) + * Teensy++: PD bits 2-5 + */ + + return (PIND & 0b00111100) >> 2; +} diff --git a/keyboards/handwired/datahand/readme.md b/keyboards/handwired/datahand/readme.md new file mode 100644 index 0000000000..923cebb00e --- /dev/null +++ b/keyboards/handwired/datahand/readme.md @@ -0,0 +1,15 @@ +# DataHand + +A keyboard designed to prevent RSI. See [Wikipedia](https://en.wikipedia.org/wiki/DataHand) and [this website](http://octopup.org/computer/datahand) for more info. + +To use this firmware, you have to replace the stock microcontroller with a Teensy++ 2.0. This is relatively easy and also reversible. See the notes at the bottom of datahand.h for more info. + +Keyboard Maintainer: [Nikolaus Wittenstein](https://github.com/adzenith) +Hardware Supported: DataHand Personal or Pro II +Hardware Availability: No longer in production + +Make example for this keyboard (after setting up your build environment): + + make handwired/datahand:default + +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). diff --git a/keyboards/handwired/datahand/rules.mk b/keyboards/handwired/datahand/rules.mk new file mode 100644 index 0000000000..59f14e17a4 --- /dev/null +++ b/keyboards/handwired/datahand/rules.mk @@ -0,0 +1,59 @@ +# Project-specific includes +SRC = matrix.c + +# MCU name +MCU = at90usb1286 + +# Processor frequency. +# This will define a symbol, F_CPU, in all source code files equal to the +# processor frequency in Hz. You can then use this symbol in your source code to +# calculate timings. Do NOT tack on a 'UL' at the end, this will be done +# automatically to create a 32-bit value in your source code. +# +# This will be an integer division of F_USB below, as it is sourced by +# F_USB after it has run through any CPU prescalers. Note that this value +# does not *change* the processor frequency - it should merely be updated to +# reflect the processor speed set externally so that the code can use accurate +# software delays. +F_CPU = 16000000 + +# +# LUFA specific +# +# Target architecture (see library "Board Types" documentation). +ARCH = AVR8 + +# Input clock frequency. +# This will define a symbol, F_USB, in all source code files equal to the +# input clock frequency (before any prescaling is performed) in Hz. This value may +# differ from F_CPU if prescaling is used on the latter, and is required as the +# raw input clock is fed directly to the PLL sections of the AVR for high speed +# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL' +# at the end, this will be done automatically to create a 32-bit value in your +# source code. +# +# If no clock division is performed on the input clock inside the AVR (via the +# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU. +F_USB = $(F_CPU) + +# Interrupt driven control endpoint task(+60) +OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT + +BOOTLOADER = halfkay + +# Build Options +BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) +MOUSEKEY_ENABLE = yes # Mouse keys(+4700) +EXTRAKEY_ENABLE = yes # Audio control and System control(+450) +CONSOLE_ENABLE = yes # Console for debug(+400) +COMMAND_ENABLE = yes # Commands for debug and configuration +NKRO_ENABLE = yes # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default +MIDI_ENABLE = no # MIDI controls +UNICODE_ENABLE = no # Unicode +BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID +AUDIO_ENABLE = no # Audio output on port C6 +CUSTOM_MATRIX = yes # We definitely have a nonstandard matrix + +# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE +SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend diff --git a/keyboards/handwired/downbubble/downbubble.h b/keyboards/handwired/downbubble/downbubble.h index a25a9a5db5..0df39dd9ee 100644 --- a/keyboards/handwired/downbubble/downbubble.h +++ b/keyboards/handwired/downbubble/downbubble.h @@ -25,7 +25,7 @@ * The second converts the arguments into a two-dimensional array which * represents the switch matrix. */ -#define LAYOUT_downbubble_standard( \ +#define LAYOUT_standard( \ K00, K01, K02, K03, K04, K05, K06, K010, K011, K012, K013, K014, K015, K016, K017, K018, K019,\ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K110, K111, K112, K113, K114, K115, K116, K118, K119,\ K20, K21, K22, K23, K24, K25, K26, K27, K28, K210, K211, K212, K213, K214, K215, K216, K217, K218, K219,\ @@ -42,7 +42,7 @@ { K50, K51, K52, K53, K54, KC_NO, K56, KC_NO, K58, KC_NO, K510, KC_NO, K512, K513, K514, KC_NO, K516, K517, K518, K519 }, \ } -#define LAYOUT_downbubble_splitbackspace( \ +#define LAYOUT_split_bs( \ K00, K01, K02, K03, K04, K05, K06, K010, K011, K012, K013, K014, K015, K016, K017, K018, K019,\ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K110, K111, K112, K113, K114, K115, K116, K117, K118, K119,\ K20, K21, K22, K23, K24, K25, K26, K27, K28, K210, K211, K212, K213, K214, K215, K216, K217, K218, K219,\ @@ -59,7 +59,7 @@ { K50, K51, K52, K53, K54, KC_NO, K56, KC_NO, K58, KC_NO, K510, KC_NO, K512, K513, K514, KC_NO, K516, K517, K518, K519 }, \ } -#define LAYOUT_downbubble_splitrightshift( \ +#define LAYOUT_split_rshift( \ K00, K01, K02, K03, K04, K05, K06, K010, K011, K012, K013, K014, K015, K016, K017, K018, K019,\ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K110, K111, K112, K113, K114, K115, K116, K118, K119,\ K20, K21, K22, K23, K24, K25, K26, K27, K28, K210, K211, K212, K213, K214, K215, K216, K217, K218, K219,\ @@ -76,7 +76,7 @@ { K50, K51, K52, K53, K54, KC_NO, K56, KC_NO, K58, KC_NO, K510, KC_NO, K512, K513, K514, KC_NO, K516, K517, K518, K519 }, \ } -#define LAYOUT_downbubble_splitnumpad( \ +#define LAYOUT_split_numpad( \ K00, K01, K02, K03, K04, K05, K06, K010, K011, K012, K013, K014, K015, K016, K017, K018, K019,\ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K110, K111, K112, K113, K114, K115, K116, K118, K119,\ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K210, K211, K212, K213, K214, K215, K216, K217, K218, K219,\ @@ -93,7 +93,7 @@ { K50, K51, K52, K53, K54, KC_NO, K56, K57, K58, K59, K510, KC_NO, K512, K513, K514, KC_NO, K516, K517, K518, K519 }, \ } -#define LAYOUT_downbubble_spliteverything( \ +#define LAYOUT_all( \ K00, K01, K02, K03, K04, K05, K06, K010, K011, K012, K013, K014, K015, K016, K017, K018, K019,\ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K110, K111, K112, K113, K114, K115, K116, K117, K118, K119,\ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K210, K211, K212, K213, K214, K215, K216, K217, K218, K219,\ diff --git a/keyboards/handwired/downbubble/info.json b/keyboards/handwired/downbubble/info.json index cd64c0e369..c5cd97de54 100644 --- a/keyboards/handwired/downbubble/info.json +++ b/keyboards/handwired/downbubble/info.json @@ -5,550 +5,555 @@ "width": 22.75, "height": 6, "layouts": { - "LAYOUT_downbubble_standard": { - "layout": [ - {"label":"K00", "x":0, "y":0.5}, - {"label":"K01", "x":1, "y":0.5}, - {"label":"K02", "x":2, "y":0.5}, - {"label":"K03", "x":3, "y":0.5}, - {"label":"K04", "x":4, "y":0.5}, - {"label":"K05", "x":5, "y":0.5}, - {"label":"K06", "x":6, "y":0.5}, - {"label":"K010", "x":12.75, "y":0.5}, - {"label":"K011", "x":13.75, "y":0.5}, - {"label":"K012", "x":14.75, "y":0.5}, - {"label":"K013", "x":15.75, "y":0.5}, - {"label":"K014", "x":16.75, "y":0.5}, - {"label":"K015", "x":17.75, "y":0.5}, - {"label":"K016", "x":18.75, "y":0.5}, - {"label":"K017", "x":19.75, "y":0.5}, - {"label":"K018", "x":20.75, "y":0.5}, - {"label":"K019", "x":21.75, "y":0.5}, - {"label":"K10", "x":0, "y":1.5}, - {"label":"K11", "x":1, "y":1.5}, - {"label":"K12", "x":2, "y":1.5}, - {"label":"K13", "x":3, "y":1.5}, - {"label":"K14", "x":4, "y":1.5}, - {"label":"K15", "x":5, "y":1.5}, - {"label":"K16", "x":6, "y":1.5}, - {"label":"K17", "x":8.75, "y":1.5}, - {"label":"K18", "x":9.75, "y":1.5}, - {"label":"K19", "x":10.75, "y":1.5}, - {"label":"K110", "x":12.75, "y":1.5}, - {"label":"K111", "x":13.75, "y":1.5}, - {"label":"K112", "x":14.75, "y":1.5}, - {"label":"K113", "x":15.75, "y":1.5}, - {"label":"K114", "x":16.75, "y":1.5}, - {"label":"K115", "x":17.75, "y":1.5}, - {"label":"K116", "x":18.75, "y":1.5, "w":2}, - {"label":"K118", "x":20.75, "y":1.5}, - {"label":"K119", "x":21.75, "y":1.5}, - {"label":"K20", "x":0, "y":2.5, "w":1.5}, - {"label":"K21", "x":1.5, "y":2.5}, - {"label":"K22", "x":2.5, "y":2.5}, - {"label":"K23", "x":3.5, "y":2.5}, - {"label":"K24", "x":4.5, "y":2.5}, - {"label":"K25", "x":5.5, "y":2.5}, - {"label":"K26", "x":7.75, "y":2.5}, - {"label":"K17", "x":8.75, "y":2.5}, - {"label":"K28", "x":9.75, "y":2.5}, - {"label":"K210", "x":12.25, "y":2.5}, - {"label":"K211", "x":13.25, "y":2.5}, - {"label":"K212", "x":14.25, "y":2.5}, - {"label":"K213", "x":15.25, "y":2.5}, - {"label":"K214", "x":16.25, "y":2.5}, - {"label":"K215", "x":17.25, "y":2.5}, - {"label":"K216", "x":18.25, "y":2.5}, - {"label":"K217", "x":19.25, "y":2.5, "w":1.5}, - {"label":"K218", "x":20.75, "y":2.5}, - {"label":"K219", "x":21.75, "y":2.5}, - {"label":"K30", "x":0, "y":3.5, "w":1.75}, - {"label":"K31", "x":1.75, "y":3.5}, - {"label":"K32", "x":2.75, "y":3.5}, - {"label":"K33", "x":3.75, "y":3.5}, - {"label":"K34", "x":4.75, "y":3.5}, - {"label":"K35", "x":5.75, "y":3.5}, - {"label":"K36", "x":7.75, "y":3.5}, - {"label":"K37", "x":8.75, "y":3.5}, - {"label":"K38", "x":9.75, "y":3.5}, - {"label":"K29", "x":10.75, "y":2.5, "h":2}, - {"label":"K310", "x":12.5, "y":3.5}, - {"label":"K311", "x":13.5, "y":3.5}, - {"label":"K312", "x":14.5, "y":3.5}, - {"label":"K313", "x":15.5, "y":3.5}, - {"label":"K314", "x":16.5, "y":3.5}, - {"label":"K315", "x":17.5, "y":3.5}, - {"label":"K317", "x":18.5, "y":3.5, "w":2.25}, - {"label":"K40", "x":0, "y":4.5, "w":2.25}, - {"label":"K41", "x":2.25, "y":4.5}, - {"label":"K42", "x":3.25, "y":4.5}, - {"label":"K43", "x":4.25, "y":4.5}, - {"label":"K44", "x":5.25, "y":4.5}, - {"label":"K45", "x":6.25, "y":4.5}, - {"label":"K46", "x":7.75, "y":4.5}, - {"label":"K47", "x":8.75, "y":4.5}, - {"label":"K48", "x":9.75, "y":4.5}, - {"label":"K410", "x":13, "y":4.5}, - {"label":"K411", "x":14, "y":4.5}, - {"label":"K412", "x":15, "y":4.5}, - {"label":"K413", "x":16, "y":4.5}, - {"label":"K414", "x":17, "y":4.5}, - {"label":"K416", "x":18, "y":4.5, "w":2.75}, - {"label":"K418", "x":20.75, "y":4.5}, - {"label":"K50", "x":0, "y":5.5, "w":1.25}, - {"label":"K51", "x":1.25, "y":5.5, "w":1.25}, - {"label":"K52", "x":2.5, "y":5.5, "w":1.25}, - {"label":"K53", "x":3.75, "y":5.5, "w":1.25}, - {"label":"K54", "x":5, "y":5.5, "w":2.25}, - {"label":"K56", "x":7.75, "y":5.5, "w":2}, - {"label":"K58", "x":9.75, "y":5.5}, - {"label":"K49", "x":10.75, "y":4.5, "h":2}, - {"label":"K510", "x":13, "y":5.5, "w":2}, - {"label":"K512", "x":15, "y":5.5, "w":1.25}, - {"label":"K513", "x":16.25, "y":5.5, "w":1.25}, - {"label":"K514", "x":17.5, "y":5.5, "w":1.25}, - {"label":"K516", "x":18.75, "y":5.5}, - {"label":"K517", "x":19.75, "y":5.5}, - {"label":"K518", "x":20.75, "y":5.5}, - {"label":"K519", "x":21.75, "y":5.5}] - }, - "LAYOUT_downbubbled_splitbackspace": { - "layout": [ - {"label":"K00", "x":0, "y":0.5}, - {"label":"K01", "x":1, "y":0.5}, - {"label":"K02", "x":2, "y":0.5}, - {"label":"K03", "x":3, "y":0.5}, - {"label":"K04", "x":4, "y":0.5}, - {"label":"K05", "x":5, "y":0.5}, - {"label":"K06", "x":6, "y":0.5}, - {"label":"K010", "x":12.75, "y":0.5}, - {"label":"K011", "x":13.75, "y":0.5}, - {"label":"K012", "x":14.75, "y":0.5}, - {"label":"K013", "x":15.75, "y":0.5}, - {"label":"K014", "x":16.75, "y":0.5}, - {"label":"K015", "x":17.75, "y":0.5}, - {"label":"K016", "x":18.75, "y":0.5}, - {"label":"K017", "x":19.75, "y":0.5}, - {"label":"K018", "x":20.75, "y":0.5}, - {"label":"K019", "x":21.75, "y":0.5}, - {"label":"K10", "x":0, "y":1.5}, - {"label":"K11", "x":1, "y":1.5}, - {"label":"K12", "x":2, "y":1.5}, - {"label":"K13", "x":3, "y":1.5}, - {"label":"K14", "x":4, "y":1.5}, - {"label":"K15", "x":5, "y":1.5}, - {"label":"K16", "x":6, "y":1.5}, - {"label":"K17", "x":8.75, "y":1.5}, - {"label":"K18", "x":9.75, "y":1.5}, - {"label":"K19", "x":10.75, "y":1.5}, - {"label":"K110", "x":12.75, "y":1.5}, - {"label":"K111", "x":13.75, "y":1.5}, - {"label":"K112", "x":14.75, "y":1.5}, - {"label":"K113", "x":15.75, "y":1.5}, - {"label":"K114", "x":16.75, "y":1.5}, - {"label":"K115", "x":17.75, "y":1.5}, - {"label":"K116", "x":18.75, "y":1.5}, - {"label":"K117", "x":19.75, "y":1}, - {"label":"K118", "x":20.75, "y":1.5}, - {"label":"K119", "x":21.75, "y":1.5}, - {"label":"K20", "x":0, "y":2.5, "w":1.5}, - {"label":"K21", "x":1.5, "y":2.5}, - {"label":"K22", "x":2.5, "y":2.5}, - {"label":"K23", "x":3.5, "y":2.5}, - {"label":"K24", "x":4.5, "y":2.5}, - {"label":"K25", "x":5.5, "y":2.5}, - {"label":"K26", "x":7.75, "y":2.5}, - {"label":"K17", "x":8.75, "y":2.5}, - {"label":"K28", "x":9.75, "y":2.5}, - {"label":"K210", "x":12.25, "y":2.5}, - {"label":"K211", "x":13.25, "y":2.5}, - {"label":"K212", "x":14.25, "y":2.5}, - {"label":"K213", "x":15.25, "y":2.5}, - {"label":"K214", "x":16.25, "y":2.5}, - {"label":"K215", "x":17.25, "y":2.5}, - {"label":"K216", "x":18.25, "y":2.5}, - {"label":"K217", "x":19.25, "y":2.5, "w":1.5}, - {"label":"K218", "x":20.75, "y":2.5}, - {"label":"K219", "x":21.75, "y":2.5}, - {"label":"K30", "x":0, "y":3.5, "w":1.75}, - {"label":"K31", "x":1.75, "y":3.5}, - {"label":"K32", "x":2.75, "y":3.5}, - {"label":"K33", "x":3.75, "y":3.5}, - {"label":"K34", "x":4.75, "y":3.5}, - {"label":"K35", "x":5.75, "y":3.5}, - {"label":"K36", "x":7.75, "y":3.5}, - {"label":"K37", "x":8.75, "y":3.5}, - {"label":"K38", "x":9.75, "y":3.5}, - {"label":"K29", "x":10.75, "y":2.5, "h":2}, - {"label":"K310", "x":12.5, "y":3.5}, - {"label":"K311", "x":13.5, "y":3.5}, - {"label":"K312", "x":14.5, "y":3.5}, - {"label":"K313", "x":15.5, "y":3.5}, - {"label":"K314", "x":16.5, "y":3.5}, - {"label":"K315", "x":17.5, "y":3.5}, - {"label":"K317", "x":18.5, "y":3.5, "w":2.25}, - {"label":"K40", "x":0, "y":4.5, "w":2.25}, - {"label":"K41", "x":2.25, "y":4.5}, - {"label":"K42", "x":3.25, "y":4.5}, - {"label":"K43", "x":4.25, "y":4.5}, - {"label":"K44", "x":5.25, "y":4.5}, - {"label":"K45", "x":6.25, "y":4.5}, - {"label":"K46", "x":7.75, "y":4.5}, - {"label":"K47", "x":8.75, "y":4.5}, - {"label":"K48", "x":9.75, "y":4.5}, - {"label":"K410", "x":13, "y":4.5}, - {"label":"K411", "x":14, "y":4.5}, - {"label":"K412", "x":15, "y":4.5}, - {"label":"K413", "x":16, "y":4.5}, - {"label":"K414", "x":17, "y":4.5}, - {"label":"K416", "x":18, "y":4.5, "w":2.75}, - {"label":"K418", "x":20.75, "y":4.5}, - {"label":"K50", "x":0, "y":5.5, "w":1.25}, - {"label":"K51", "x":1.25, "y":5.5, "w":1.25}, - {"label":"K52", "x":2.5, "y":5.5, "w":1.25}, - {"label":"K53", "x":3.75, "y":5.5, "w":1.25}, - {"label":"K54", "x":5, "y":5.5, "w":2.25}, - {"label":"K56", "x":7.75, "y":5.5, "w":2}, - {"label":"K58", "x":9.75, "y":5.5}, - {"label":"K49", "x":10.75, "y":4.5, "h":2}, - {"label":"K510", "x":13, "y":5.5, "w":2}, - {"label":"K512", "x":15, "y":5.5, "w":1.25}, - {"label":"K513", "x":16.25, "y":5.5, "w":1.25}, - {"label":"K514", "x":17.5, "y":5.5, "w":1.25}, - {"label":"K516", "x":18.75, "y":5.5}, - {"label":"K517", "x":19.75, "y":5.5}, - {"label":"K518", "x":20.75, "y":5.5}, - {"label":"K519", "x":21.75, "y":5.5}] - }, - "LAYOUT_downbubble_splitrightshift": { - "layout": [ - {"label":"K00", "x":0, "y":0.5}, - {"label":"K01", "x":1, "y":0.5}, - {"label":"K02", "x":2, "y":0.5}, - {"label":"K03", "x":3, "y":0.5}, - {"label":"K04", "x":4, "y":0.5}, - {"label":"K05", "x":5, "y":0.5}, - {"label":"K06", "x":6, "y":0.5}, - {"label":"K010", "x":12.75, "y":0.5}, - {"label":"K011", "x":13.75, "y":0.5}, - {"label":"K012", "x":14.75, "y":0.5}, - {"label":"K013", "x":15.75, "y":0.5}, - {"label":"K014", "x":16.75, "y":0.5}, - {"label":"K015", "x":17.75, "y":0.5}, - {"label":"K016", "x":18.75, "y":0.5}, - {"label":"K017", "x":19.75, "y":0.5}, - {"label":"K018", "x":20.75, "y":0.5}, - {"label":"K019", "x":21.75, "y":0.5}, - {"label":"K10", "x":0, "y":1.5}, - {"label":"K11", "x":1, "y":1.5}, - {"label":"K12", "x":2, "y":1.5}, - {"label":"K13", "x":3, "y":1.5}, - {"label":"K14", "x":4, "y":1.5}, - {"label":"K15", "x":5, "y":1.5}, - {"label":"K16", "x":6, "y":1.5}, - {"label":"K17", "x":8.75, "y":1.5}, - {"label":"K18", "x":9.75, "y":1.5}, - {"label":"K19", "x":10.75, "y":1.5}, - {"label":"K110", "x":12.75, "y":1.5}, - {"label":"K111", "x":13.75, "y":1.5}, - {"label":"K112", "x":14.75, "y":1.5}, - {"label":"K113", "x":15.75, "y":1.5}, - {"label":"K114", "x":16.75, "y":1.5}, - {"label":"K115", "x":17.75, "y":1.5}, - {"label":"K116", "x":18.75, "y":1.5, "w":2}, - {"label":"K118", "x":20.75, "y":1.5}, - {"label":"K119", "x":21.75, "y":1.5}, - {"label":"K20", "x":0, "y":2.5, "w":1.5}, - {"label":"K21", "x":1.5, "y":2.5}, - {"label":"K22", "x":2.5, "y":2.5}, - {"label":"K23", "x":3.5, "y":2.5}, - {"label":"K24", "x":4.5, "y":2.5}, - {"label":"K25", "x":5.5, "y":2.5}, - {"label":"K26", "x":7.75, "y":2.5}, - {"label":"K17", "x":8.75, "y":2.5}, - {"label":"K28", "x":9.75, "y":2.5}, - {"label":"K210", "x":12.25, "y":2.5}, - {"label":"K211", "x":13.25, "y":2.5}, - {"label":"K212", "x":14.25, "y":2.5}, - {"label":"K213", "x":15.25, "y":2.5}, - {"label":"K214", "x":16.25, "y":2.5}, - {"label":"K215", "x":17.25, "y":2.5}, - {"label":"K216", "x":18.25, "y":2.5}, - {"label":"K217", "x":19.25, "y":2.5, "w":1.5}, - {"label":"K218", "x":20.75, "y":2.5}, - {"label":"K219", "x":21.75, "y":2.5}, - {"label":"K30", "x":0, "y":3.5, "w":1.75}, - {"label":"K31", "x":1.75, "y":3.5}, - {"label":"K32", "x":2.75, "y":3.5}, - {"label":"K33", "x":3.75, "y":3.5}, - {"label":"K34", "x":4.75, "y":3.5}, - {"label":"K35", "x":5.75, "y":3.5}, - {"label":"K36", "x":7.75, "y":3.5}, - {"label":"K37", "x":8.75, "y":3.5}, - {"label":"K38", "x":9.75, "y":3.5}, - {"label":"K29", "x":10.75, "y":2.5, "h":2}, - {"label":"K310", "x":12.5, "y":3.5}, - {"label":"K311", "x":13.5, "y":3.5}, - {"label":"K312", "x":14.5, "y":3.5}, - {"label":"K313", "x":15.5, "y":3.5}, - {"label":"K314", "x":16.5, "y":3.5}, - {"label":"K315", "x":17.5, "y":3.5}, - {"label":"K317", "x":18.5, "y":3.5, "w":2.25}, - {"label":"K40", "x":0, "y":4.5, "w":2.25}, - {"label":"K41", "x":2.25, "y":4.5}, - {"label":"K42", "x":3.25, "y":4.5}, - {"label":"K43", "x":4.25, "y":4.5}, - {"label":"K44", "x":5.25, "y":4.5}, - {"label":"K45", "x":6.25, "y":4.5}, - {"label":"K46", "x":7.75, "y":4.5}, - {"label":"K47", "x":8.75, "y":4.5}, - {"label":"K48", "x":9.75, "y":4.5}, - {"label":"K410", "x":13, "y":4.5}, - {"label":"K411", "x":14, "y":4.5}, - {"label":"K412", "x":15, "y":4.5}, - {"label":"K413", "x":16, "y":4.5}, - {"label":"K414", "x":17, "y":4.5}, - {"label":"K416", "x":18, "y":4.5, "w":1.75}, - {"label":"K417", "x":19.75, "y":4}, - {"label":"K418", "x":20.75, "y":4.5}, - {"label":"K50", "x":0, "y":5.5, "w":1.25}, - {"label":"K51", "x":1.25, "y":5.5, "w":1.25}, - {"label":"K52", "x":2.5, "y":5.5, "w":1.25}, - {"label":"K53", "x":3.75, "y":5.5, "w":1.25}, - {"label":"K54", "x":5, "y":5.5, "w":2.25}, - {"label":"K56", "x":7.75, "y":5.5, "w":2}, - {"label":"K58", "x":9.75, "y":5.5}, - {"label":"K49", "x":10.75, "y":4.5, "h":2}, - {"label":"K510", "x":13, "y":5.5, "w":2}, - {"label":"K512", "x":15, "y":5.5, "w":1.25}, - {"label":"K513", "x":16.25, "y":5.5, "w":1.25}, - {"label":"K514", "x":17.5, "y":5.5, "w":1.25}, - {"label":"K516", "x":18.75, "y":5.5}, - {"label":"K517", "x":19.75, "y":5.5}, - {"label":"K518", "x":20.75, "y":5.5}, - {"label":"K519", "x":21.75, "y":5.5}] - }, - "LAYOUT_downbubble_splitnumpad": { - "layout": [ - {"label":"K00", "x":0, "y":0.5}, - {"label":"K01", "x":1, "y":0.5}, - {"label":"K02", "x":2, "y":0.5}, - {"label":"K03", "x":3, "y":0.5}, - {"label":"K04", "x":4, "y":0.5}, - {"label":"K05", "x":5, "y":0.5}, - {"label":"K06", "x":6, "y":0.5}, - {"label":"K010", "x":12.75, "y":0.5}, - {"label":"K011", "x":13.75, "y":0.5}, - {"label":"K012", "x":14.75, "y":0.5}, - {"label":"K013", "x":15.75, "y":0.5}, - {"label":"K014", "x":16.75, "y":0.5}, - {"label":"K015", "x":17.75, "y":0.5}, - {"label":"K016", "x":18.75, "y":0.5}, - {"label":"K017", "x":19.75, "y":0.5}, - {"label":"K018", "x":20.75, "y":0.5}, - {"label":"K019", "x":21.75, "y":0.5}, - {"label":"K10", "x":0, "y":1.5}, - {"label":"K11", "x":1, "y":1.5}, - {"label":"K12", "x":2, "y":1.5}, - {"label":"K13", "x":3, "y":1.5}, - {"label":"K14", "x":4, "y":1.5}, - {"label":"K15", "x":5, "y":1.5}, - {"label":"K16", "x":6, "y":1.5}, - {"label":"K17", "x":8.75, "y":1.5}, - {"label":"K18", "x":9.75, "y":1.5}, - {"label":"K19", "x":10.75, "y":1.5}, - {"label":"K110", "x":12.75, "y":1.5}, - {"label":"K111", "x":13.75, "y":1.5}, - {"label":"K112", "x":14.75, "y":1.5}, - {"label":"K113", "x":15.75, "y":1.5}, - {"label":"K114", "x":16.75, "y":1.5}, - {"label":"K115", "x":17.75, "y":1.5}, - {"label":"K116", "x":18.75, "y":1.5, "w":2}, - {"label":"K118", "x":20.75, "y":1.5}, - {"label":"K119", "x":21.75, "y":1.5}, - {"label":"K20", "x":0, "y":2.5, "w":1.5}, - {"label":"K21", "x":1.5, "y":2.5}, - {"label":"K22", "x":2.5, "y":2.5}, - {"label":"K23", "x":3.5, "y":2.5}, - {"label":"K24", "x":4.5, "y":2.5}, - {"label":"K25", "x":5.5, "y":2.5}, - {"label":"K26", "x":7.75, "y":2.5}, - {"label":"K17", "x":8.75, "y":2.5}, - {"label":"K28", "x":9.75, "y":2.5}, - {"label":"K29", "x":10.75, "y":2}, - {"label":"K210", "x":12.25, "y":2.5}, - {"label":"K211", "x":13.25, "y":2.5}, - {"label":"K212", "x":14.25, "y":2.5}, - {"label":"K213", "x":15.25, "y":2.5}, - {"label":"K214", "x":16.25, "y":2.5}, - {"label":"K215", "x":17.25, "y":2.5}, - {"label":"K216", "x":18.25, "y":2.5}, - {"label":"K217", "x":19.25, "y":2.5, "w":1.5}, - {"label":"K218", "x":20.75, "y":2.5}, - {"label":"K219", "x":21.75, "y":2.5}, - {"label":"K30", "x":0, "y":3.5, "w":1.75}, - {"label":"K31", "x":1.75, "y":3.5}, - {"label":"K32", "x":2.75, "y":3.5}, - {"label":"K33", "x":3.75, "y":3.5}, - {"label":"K34", "x":4.75, "y":3.5}, - {"label":"K35", "x":5.75, "y":3.5}, - {"label":"K36", "x":7.75, "y":3.5}, - {"label":"K37", "x":8.75, "y":3.5}, - {"label":"K38", "x":9.75, "y":3.5}, - {"label":"K39", "x":10.75, "y":3}, - {"label":"K310", "x":12.5, "y":3.5}, - {"label":"K311", "x":13.5, "y":3.5}, - {"label":"K312", "x":14.5, "y":3.5}, - {"label":"K313", "x":15.5, "y":3.5}, - {"label":"K314", "x":16.5, "y":3.5}, - {"label":"K315", "x":17.5, "y":3.5}, - {"label":"K317", "x":18.5, "y":3.5, "w":2.25}, - {"label":"K40", "x":0, "y":4.5, "w":2.25}, - {"label":"K41", "x":2.25, "y":4.5}, - {"label":"K42", "x":3.25, "y":4.5}, - {"label":"K43", "x":4.25, "y":4.5}, - {"label":"K44", "x":5.25, "y":4.5}, - {"label":"K45", "x":6.25, "y":4.5}, - {"label":"K46", "x":7.75, "y":4.5}, - {"label":"K47", "x":8.75, "y":4.5}, - {"label":"K48", "x":9.75, "y":4.5}, - {"label":"K49", "x":10.75, "y":4}, - {"label":"K410", "x":13, "y":4.5}, - {"label":"K411", "x":14, "y":4.5}, - {"label":"K412", "x":15, "y":4.5}, - {"label":"K413", "x":16, "y":4.5}, - {"label":"K414", "x":17, "y":4.5}, - {"label":"K416", "x":18, "y":4.5, "w":2.75}, - {"label":"K418", "x":20.75, "y":4.5}, - {"label":"K50", "x":0, "y":5.5, "w":1.25}, - {"label":"K51", "x":1.25, "y":5.5, "w":1.25}, - {"label":"K52", "x":2.5, "y":5.5, "w":1.25}, - {"label":"K53", "x":3.75, "y":5.5, "w":1.25}, - {"label":"K54", "x":5, "y":5.5, "w":2.25}, - {"label":"K56", "x":7.75, "y":5.5}, - {"Label":"K57", "x":8.75, "y":5}, - {"label":"K58", "x":9.75, "y":5}, - {"label":"K59", "x":10.75, "y":5}, - {"label":"K510", "x":13, "y":5.5, "w":2}, - {"label":"K512", "x":15, "y":5.5, "w":1.25}, - {"label":"K513", "x":16.25, "y":5.5, "w":1.25}, - {"label":"K514", "x":17.5, "y":5.5, "w":1.25}, - {"label":"K516", "x":18.75, "y":5.5}, - {"label":"K517", "x":19.75, "y":5.5}, - {"label":"K518", "x":20.75, "y":5.5}, - {"label":"K519", "x":21.75, "y":5.5}] - }, - "LAYOUT_downbubble_spliteverything": { - "layout": [ - {"label":"K00", "x":0, "y":0}, - {"label":"K01", "x":1, "y":0}, - {"label":"K02", "x":2, "y":0}, - {"label":"K03", "x":3, "y":0}, - {"label":"K04", "x":4, "y":0}, - {"label":"K05", "x":5, "y":0}, - {"label":"K06", "x":6, "y":0}, - {"label":"K010", "x":12.75, "y":0}, - {"label":"K011", "x":13.75, "y":0}, - {"label":"K012", "x":14.75, "y":0}, - {"label":"K013", "x":15.75, "y":0}, - {"label":"K014", "x":16.75, "y":0}, - {"label":"K015", "x":17.75, "y":0}, - {"label":"K016", "x":18.75, "y":0}, - {"label":"K017", "x":19.75, "y":0}, - {"label":"K018", "x":20.75, "y":0}, - {"label":"K019", "X":21.75, "y":0}, - {"label":"K10", "x":0, "y":1}, - {"label":"K11", "x":1, "y":1}, - {"label":"K12", "x":2, "y":1}, - {"label":"K13", "x":3, "y":1}, - {"label":"K14", "x":4, "y":1}, - {"label":"K15", "x":5, "y":1}, - {"label":"K16", "x":6, "y":1}, - {"label":"K17", "x":8.75, "y":1}, - {"label":"K18", "x":9.75, "y":1}, - {"label":"K19", "x":10.75, "y":1}, - {"label":"K110", "x":12.75, "y":1}, - {"label":"K111", "x":13.75, "y":1}, - {"label":"K112", "x":14.75, "y":1}, - {"label":"K113", "x":15.75, "y":1}, - {"label":"K114", "x":16.75, "y":1}, - {"label":"K115", "x":17.75, "y":1}, - {"label":"K116", "x":18.75, "y":1}, - {"label":"K117", "x":19.75, "y":1}, - {"label":"K118", "x":20.75, "y":1}, - {"label":"K119", "x":21.75, "y":1}, - {"label":"K20", "x":0, "y":2, "w":1.5}, - {"label":"K21", "x":1.5, "y":2}, - {"label":"K22", "x":2.5, "y":2}, - {"label":"K23", "x":3.5, "y":2}, - {"label":"K24", "x":4.5, "y":2}, - {"label":"K25", "x":5.5, "y":2}, - {"label":"K26", "x":7.75, "y":2}, - {"label":"K27", "x":8.75, "y":2}, - {"label":"K28", "x":9.75, "y":2}, - {"label":"K29", "x":10.75, "y":2}, - {"label":"K210", "x":12.25, "y":2}, - {"label":"K211", "x":13.25, "y":2}, - {"label":"K212", "x":14.25, "y":2}, - {"label":"K213", "x":15.25, "y":2}, - {"label":"K214", "x":16.25, "y":2}, - {"label":"K215", "x":17.25, "y":2}, - {"label":"K216", "x":18.25, "y":2}, - {"label":"K217", "x":19.25, "y":2, "w":1.5}, - {"label":"K218", "x":20.75, "y":2}, - {"label":"K219", "x":21.75, "y":2}, - {"label":"K30", "x":0, "y":3, "w":1.75}, - {"label":"K31", "x":1.75, "y":3}, - {"label":"K32", "x":2.75, "y":3}, - {"label":"K33", "x":3.75, "y":3}, - {"label":"K34", "x":4.75, "y":3}, - {"label":"K35", "x":5.75, "y":3}, - {"label":"K36", "x":7.75, "y":3}, - {"label":"K37", "x":8.75, "y":3}, - {"label":"K38", "x":9.75, "y":3}, - {"label":"K39", "x":10.75, "y":3}, - {"label":"K310", "x":12.5, "y":3}, - {"label":"K311", "x":13.5, "y":3}, - {"label":"K312", "x":14.5, "y":3}, - {"label":"K313", "x":15.5, "y":3}, - {"label":"K314", "x":16.5, "y":3}, - {"label":"K315", "x":17.5, "y":3}, - {"label":"K317", "x":18.5, "y":3, "w":2.25}, - {"label":"K40", "x":0, "y":4, "w":2.25}, - {"label":"K41", "x":2.25, "y":4}, - {"label":"K42", "x":3.25, "y":4}, - {"label":"K43", "x":4.25, "y":4}, - {"label":"K44", "x":5.25, "y":4}, - {"label":"K45", "x":6.25, "y":4}, - {"label":"K46", "x":7.75, "y":4}, - {"label":"K47", "x":8.75, "y":4}, - {"label":"K48", "x":9.75, "y":4}, - {"label":"K49", "x":10.75, "y":4}, - {"label":"K410", "x":13, "y":4}, - {"label":"K411", "x":14, "y":4}, - {"label":"K412", "x":15, "y":4}, - {"label":"K413", "x":16, "y":4}, - {"label":"K414", "x":17, "y":4}, - {"label":"K416", "x":18, "y":4, "w":1.75}, - {"label":"K417", "x":19.75, "y":4}, - {"label":"K418", "x":20.75, "y":4}, - {"label":"K50", "x":0, "y":5, "w":1.25}, - {"label":"K51", "x":1.25, "y":5, "w":1.25}, - {"label":"K52", "x":2.5, "y":5, "w":1.25}, - {"label":"K53", "x":3.75, "y":5, "w":1.25}, - {"label":"K54", "x":5, "y":5, "w":2.25}, - {"label":"K56", "x":7.75, "y":5}, - {"label":"K57", "x":8.75, "y":5}, - {"label":"K58", "x":9.75, "y":5}, - {"label":"K59", "x":10.75, "y":5}, - {"label":"K510", "x":13, "y":5, "w":2}, - {"label":"K512", "x":15, "y":5, "w":1.25}, - {"label":"K513", "x":16.25, "y":5, "w":1.25}, - {"label":"K514", "x":17.5, "y":5, "w":1.25}, - {"label":"K516", "x":18.75, "y":5}, - {"label":"K517", "x":19.75, "y":5}, - {"label":"K518", "x":20.75, "y":5}, - {"label":"K519", "x":21.75, "y":5}] + "LAYOUT_standard": { + "layout": [ + {"label":"K00", "x":0, "y":0}, + {"label":"K01", "x":1, "y":0}, + {"label":"K02", "x":2, "y":0}, + {"label":"K03", "x":3, "y":0}, + {"label":"K04", "x":4, "y":0}, + {"label":"K05", "x":5, "y":0}, + {"label":"K06", "x":6, "y":0}, + {"label":"K010", "x":12.75, "y":0}, + {"label":"K011", "x":13.75, "y":0}, + {"label":"K012", "x":14.75, "y":0}, + {"label":"K013", "x":15.75, "y":0}, + {"label":"K014", "x":16.75, "y":0}, + {"label":"K015", "x":17.75, "y":0}, + {"label":"K016", "x":18.75, "y":0}, + {"label":"K017", "x":19.75, "y":0}, + {"label":"K018", "x":20.75, "y":0}, + {"label":"K019", "x":21.75, "y":0}, + {"label":"K10", "x":0, "y":1}, + {"label":"K11", "x":1, "y":1}, + {"label":"K12", "x":2, "y":1}, + {"label":"K13", "x":3, "y":1}, + {"label":"K14", "x":4, "y":1}, + {"label":"K15", "x":5, "y":1}, + {"label":"K16", "x":6, "y":1}, + {"label":"K17", "x":8.75, "y":1}, + {"label":"K18", "x":9.75, "y":1}, + {"label":"K19", "x":10.75, "y":1}, + {"label":"K110", "x":12.75, "y":1}, + {"label":"K111", "x":13.75, "y":1}, + {"label":"K112", "x":14.75, "y":1}, + {"label":"K113", "x":15.75, "y":1}, + {"label":"K114", "x":16.75, "y":1}, + {"label":"K115", "x":17.75, "y":1}, + {"label":"K116", "x":18.75, "y":1, "w":2}, + {"label":"K118", "x":20.75, "y":1}, + {"label":"K119", "x":21.75, "y":1}, + {"label":"K20", "x":0, "y":2, "w":1.5}, + {"label":"K21", "x":1.5, "y":2}, + {"label":"K22", "x":2.5, "y":2}, + {"label":"K23", "x":3.5, "y":2}, + {"label":"K24", "x":4.5, "y":2}, + {"label":"K25", "x":5.5, "y":2}, + {"label":"K26", "x":7.75, "y":2}, + {"label":"K17", "x":8.75, "y":2}, + {"label":"K28", "x":9.75, "y":2}, + {"label":"K210", "x":12.25, "y":2}, + {"label":"K211", "x":13.25, "y":2}, + {"label":"K212", "x":14.25, "y":2}, + {"label":"K213", "x":15.25, "y":2}, + {"label":"K214", "x":16.25, "y":2}, + {"label":"K215", "x":17.25, "y":2}, + {"label":"K216", "x":18.25, "y":2}, + {"label":"K217", "x":19.25, "y":2, "w":1.5}, + {"label":"K218", "x":20.75, "y":2}, + {"label":"K219", "x":21.75, "y":2}, + {"label":"K30", "x":0, "y":3, "w":1.75}, + {"label":"K31", "x":1.75, "y":3}, + {"label":"K32", "x":2.75, "y":3}, + {"label":"K33", "x":3.75, "y":3}, + {"label":"K34", "x":4.75, "y":3}, + {"label":"K35", "x":5.75, "y":3}, + {"label":"K36", "x":7.75, "y":3}, + {"label":"K37", "x":8.75, "y":3}, + {"label":"K38", "x":9.75, "y":3}, + {"label":"K29", "x":10.75, "y":2, "h":2}, + {"label":"K310", "x":12.5, "y":3}, + {"label":"K311", "x":13.5, "y":3}, + {"label":"K312", "x":14.5, "y":3}, + {"label":"K313", "x":15.5, "y":3}, + {"label":"K314", "x":16.5, "y":3}, + {"label":"K315", "x":17.5, "y":3}, + {"label":"K317", "x":18.5, "y":3, "w":2.25}, + {"label":"K40", "x":0, "y":4, "w":2.25}, + {"label":"K41", "x":2.25, "y":4}, + {"label":"K42", "x":3.25, "y":4}, + {"label":"K43", "x":4.25, "y":4}, + {"label":"K44", "x":5.25, "y":4}, + {"label":"K45", "x":6.25, "y":4}, + {"label":"K46", "x":7.75, "y":4}, + {"label":"K47", "x":8.75, "y":4}, + {"label":"K48", "x":9.75, "y":4}, + {"label":"K410", "x":13, "y":4}, + {"label":"K411", "x":14, "y":4}, + {"label":"K412", "x":15, "y":4}, + {"label":"K413", "x":16, "y":4}, + {"label":"K414", "x":17, "y":4}, + {"label":"K416", "x":18, "y":4, "w":2.75}, + {"label":"K418", "x":20.75, "y":4}, + {"label":"K50", "x":0, "y":5, "w":1.25}, + {"label":"K51", "x":1.25, "y":5, "w":1.25}, + {"label":"K52", "x":2.5, "y":5, "w":1.25}, + {"label":"K53", "x":3.75, "y":5, "w":1.25}, + {"label":"K54", "x":5, "y":5, "w":2.25}, + {"label":"K56", "x":7.75, "y":5, "w":2}, + {"label":"K58", "x":9.75, "y":5}, + {"label":"K49", "x":10.75, "y":4, "h":2}, + {"label":"K510", "x":13, "y":5, "w":2}, + {"label":"K512", "x":15, "y":5, "w":1.25}, + {"label":"K513", "x":16.25, "y":5, "w":1.25}, + {"label":"K514", "x":17.5, "y":5, "w":1.25}, + {"label":"K516", "x":18.75, "y":5}, + {"label":"K517", "x":19.75, "y":5}, + {"label":"K518", "x":20.75, "y":5}, + {"label":"K519", "x":21.75, "y":5} + ] + }, + "LAYOUT_split_bs": { + "layout": [ + {"label":"K00", "x":0, "y":0}, + {"label":"K01", "x":1, "y":0}, + {"label":"K02", "x":2, "y":0}, + {"label":"K03", "x":3, "y":0}, + {"label":"K04", "x":4, "y":0}, + {"label":"K05", "x":5, "y":0}, + {"label":"K06", "x":6, "y":0}, + {"label":"K010", "x":12.75, "y":0}, + {"label":"K011", "x":13.75, "y":0}, + {"label":"K012", "x":14.75, "y":0}, + {"label":"K013", "x":15.75, "y":0}, + {"label":"K014", "x":16.75, "y":0}, + {"label":"K015", "x":17.75, "y":0}, + {"label":"K016", "x":18.75, "y":0}, + {"label":"K017", "x":19.75, "y":0}, + {"label":"K018", "x":20.75, "y":0}, + {"label":"K019", "x":21.75, "y":0}, + {"label":"K10", "x":0, "y":1}, + {"label":"K11", "x":1, "y":1}, + {"label":"K12", "x":2, "y":1}, + {"label":"K13", "x":3, "y":1}, + {"label":"K14", "x":4, "y":1}, + {"label":"K15", "x":5, "y":1}, + {"label":"K16", "x":6, "y":1}, + {"label":"K17", "x":8.75, "y":1}, + {"label":"K18", "x":9.75, "y":1}, + {"label":"K19", "x":10.75, "y":1}, + {"label":"K110", "x":12.75, "y":1}, + {"label":"K111", "x":13.75, "y":1}, + {"label":"K112", "x":14.75, "y":1}, + {"label":"K113", "x":15.75, "y":1}, + {"label":"K114", "x":16.75, "y":1}, + {"label":"K115", "x":17.75, "y":1}, + {"label":"K116", "x":18.75, "y":1}, + {"label":"K117", "x":19.75, "y":1}, + {"label":"K118", "x":20.75, "y":1}, + {"label":"K119", "x":21.75, "y":1}, + {"label":"K20", "x":0, "y":2, "w":1.5}, + {"label":"K21", "x":1.5, "y":2}, + {"label":"K22", "x":2.5, "y":2}, + {"label":"K23", "x":3.5, "y":2}, + {"label":"K24", "x":4.5, "y":2}, + {"label":"K25", "x":5.5, "y":2}, + {"label":"K26", "x":7.75, "y":2}, + {"label":"K17", "x":8.75, "y":2}, + {"label":"K28", "x":9.75, "y":2}, + {"label":"K210", "x":12.25, "y":2}, + {"label":"K211", "x":13.25, "y":2}, + {"label":"K212", "x":14.25, "y":2}, + {"label":"K213", "x":15.25, "y":2}, + {"label":"K214", "x":16.25, "y":2}, + {"label":"K215", "x":17.25, "y":2}, + {"label":"K216", "x":18.25, "y":2}, + {"label":"K217", "x":19.25, "y":2, "w":1.5}, + {"label":"K218", "x":20.75, "y":2}, + {"label":"K219", "x":21.75, "y":2}, + {"label":"K30", "x":0, "y":3, "w":1.75}, + {"label":"K31", "x":1.75, "y":3}, + {"label":"K32", "x":2.75, "y":3}, + {"label":"K33", "x":3.75, "y":3}, + {"label":"K34", "x":4.75, "y":3}, + {"label":"K35", "x":5.75, "y":3}, + {"label":"K36", "x":7.75, "y":3}, + {"label":"K37", "x":8.75, "y":3}, + {"label":"K38", "x":9.75, "y":3}, + {"label":"K29", "x":10.75, "y":2, "h":2}, + {"label":"K310", "x":12.5, "y":3}, + {"label":"K311", "x":13.5, "y":3}, + {"label":"K312", "x":14.5, "y":3}, + {"label":"K313", "x":15.5, "y":3}, + {"label":"K314", "x":16.5, "y":3}, + {"label":"K315", "x":17.5, "y":3}, + {"label":"K317", "x":18.5, "y":3, "w":2.25}, + {"label":"K40", "x":0, "y":4, "w":2.25}, + {"label":"K41", "x":2.25, "y":4}, + {"label":"K42", "x":3.25, "y":4}, + {"label":"K43", "x":4.25, "y":4}, + {"label":"K44", "x":5.25, "y":4}, + {"label":"K45", "x":6.25, "y":4}, + {"label":"K46", "x":7.75, "y":4}, + {"label":"K47", "x":8.75, "y":4}, + {"label":"K48", "x":9.75, "y":4}, + {"label":"K410", "x":13, "y":4}, + {"label":"K411", "x":14, "y":4}, + {"label":"K412", "x":15, "y":4}, + {"label":"K413", "x":16, "y":4}, + {"label":"K414", "x":17, "y":4}, + {"label":"K416", "x":18, "y":4, "w":2.75}, + {"label":"K418", "x":20.75, "y":4}, + {"label":"K50", "x":0, "y":5, "w":1.25}, + {"label":"K51", "x":1.25, "y":5, "w":1.25}, + {"label":"K52", "x":2.5, "y":5, "w":1.25}, + {"label":"K53", "x":3.75, "y":5, "w":1.25}, + {"label":"K54", "x":5, "y":5, "w":2.25}, + {"label":"K56", "x":7.75, "y":5, "w":2}, + {"label":"K58", "x":9.75, "y":5}, + {"label":"K49", "x":10.75, "y":4, "h":2}, + {"label":"K510", "x":13, "y":5, "w":2}, + {"label":"K512", "x":15, "y":5, "w":1.25}, + {"label":"K513", "x":16.25, "y":5, "w":1.25}, + {"label":"K514", "x":17.5, "y":5, "w":1.25}, + {"label":"K516", "x":18.75, "y":5}, + {"label":"K517", "x":19.75, "y":5}, + {"label":"K518", "x":20.75, "y":5}, + {"label":"K519", "x":21.75, "y":5} + ] + }, + "LAYOUT_split_rshift": { + "layout": [ + {"label":"K00", "x":0, "y":0}, + {"label":"K01", "x":1, "y":0}, + {"label":"K02", "x":2, "y":0}, + {"label":"K03", "x":3, "y":0}, + {"label":"K04", "x":4, "y":0}, + {"label":"K05", "x":5, "y":0}, + {"label":"K06", "x":6, "y":0}, + {"label":"K010", "x":12.75, "y":0}, + {"label":"K011", "x":13.75, "y":0}, + {"label":"K012", "x":14.75, "y":0}, + {"label":"K013", "x":15.75, "y":0}, + {"label":"K014", "x":16.75, "y":0}, + {"label":"K015", "x":17.75, "y":0}, + {"label":"K016", "x":18.75, "y":0}, + {"label":"K017", "x":19.75, "y":0}, + {"label":"K018", "x":20.75, "y":0}, + {"label":"K019", "x":21.75, "y":0}, + {"label":"K10", "x":0, "y":1}, + {"label":"K11", "x":1, "y":1}, + {"label":"K12", "x":2, "y":1}, + {"label":"K13", "x":3, "y":1}, + {"label":"K14", "x":4, "y":1}, + {"label":"K15", "x":5, "y":1}, + {"label":"K16", "x":6, "y":1}, + {"label":"K17", "x":8.75, "y":1}, + {"label":"K18", "x":9.75, "y":1}, + {"label":"K19", "x":10.75, "y":1}, + {"label":"K110", "x":12.75, "y":1}, + {"label":"K111", "x":13.75, "y":1}, + {"label":"K112", "x":14.75, "y":1}, + {"label":"K113", "x":15.75, "y":1}, + {"label":"K114", "x":16.75, "y":1}, + {"label":"K115", "x":17.75, "y":1}, + {"label":"K116", "x":18.75, "y":1, "w":2}, + {"label":"K118", "x":20.75, "y":1}, + {"label":"K119", "x":21.75, "y":1}, + {"label":"K20", "x":0, "y":2, "w":1.5}, + {"label":"K21", "x":1.5, "y":2}, + {"label":"K22", "x":2.5, "y":2}, + {"label":"K23", "x":3.5, "y":2}, + {"label":"K24", "x":4.5, "y":2}, + {"label":"K25", "x":5.5, "y":2}, + {"label":"K26", "x":7.75, "y":2}, + {"label":"K17", "x":8.75, "y":2}, + {"label":"K28", "x":9.75, "y":2}, + {"label":"K210", "x":12.25, "y":2}, + {"label":"K211", "x":13.25, "y":2}, + {"label":"K212", "x":14.25, "y":2}, + {"label":"K213", "x":15.25, "y":2}, + {"label":"K214", "x":16.25, "y":2}, + {"label":"K215", "x":17.25, "y":2}, + {"label":"K216", "x":18.25, "y":2}, + {"label":"K217", "x":19.25, "y":2, "w":1.5}, + {"label":"K218", "x":20.75, "y":2}, + {"label":"K219", "x":21.75, "y":2}, + {"label":"K30", "x":0, "y":3, "w":1.75}, + {"label":"K31", "x":1.75, "y":3}, + {"label":"K32", "x":2.75, "y":3}, + {"label":"K33", "x":3.75, "y":3}, + {"label":"K34", "x":4.75, "y":3}, + {"label":"K35", "x":5.75, "y":3}, + {"label":"K36", "x":7.75, "y":3}, + {"label":"K37", "x":8.75, "y":3}, + {"label":"K38", "x":9.75, "y":3}, + {"label":"K29", "x":10.75, "y":2, "h":2}, + {"label":"K310", "x":12.5, "y":3}, + {"label":"K311", "x":13.5, "y":3}, + {"label":"K312", "x":14.5, "y":3}, + {"label":"K313", "x":15.5, "y":3}, + {"label":"K314", "x":16.5, "y":3}, + {"label":"K315", "x":17.5, "y":3}, + {"label":"K317", "x":18.5, "y":3, "w":2.25}, + {"label":"K40", "x":0, "y":4, "w":2.25}, + {"label":"K41", "x":2.25, "y":4}, + {"label":"K42", "x":3.25, "y":4}, + {"label":"K43", "x":4.25, "y":4}, + {"label":"K44", "x":5.25, "y":4}, + {"label":"K45", "x":6.25, "y":4}, + {"label":"K46", "x":7.75, "y":4}, + {"label":"K47", "x":8.75, "y":4}, + {"label":"K48", "x":9.75, "y":4}, + {"label":"K410", "x":13, "y":4}, + {"label":"K411", "x":14, "y":4}, + {"label":"K412", "x":15, "y":4}, + {"label":"K413", "x":16, "y":4}, + {"label":"K414", "x":17, "y":4}, + {"label":"K416", "x":18, "y":4, "w":1.75}, + {"label":"K417", "x":19.75, "y":4}, + {"label":"K418", "x":20.75, "y":4}, + {"label":"K50", "x":0, "y":5, "w":1.25}, + {"label":"K51", "x":1.25, "y":5, "w":1.25}, + {"label":"K52", "x":2.5, "y":5, "w":1.25}, + {"label":"K53", "x":3.75, "y":5, "w":1.25}, + {"label":"K54", "x":5, "y":5, "w":2.25}, + {"label":"K56", "x":7.75, "y":5, "w":2}, + {"label":"K58", "x":9.75, "y":5}, + {"label":"K49", "x":10.75, "y":4, "h":2}, + {"label":"K510", "x":13, "y":5, "w":2}, + {"label":"K512", "x":15, "y":5, "w":1.25}, + {"label":"K513", "x":16.25, "y":5, "w":1.25}, + {"label":"K514", "x":17.5, "y":5, "w":1.25}, + {"label":"K516", "x":18.75, "y":5}, + {"label":"K517", "x":19.75, "y":5}, + {"label":"K518", "x":20.75, "y":5}, + {"label":"K519", "x":21.75, "y":5} + ] + }, + "LAYOUT_split_numpad": { + "layout": [ + {"label":"K00", "x":0, "y":0}, + {"label":"K01", "x":1, "y":0}, + {"label":"K02", "x":2, "y":0}, + {"label":"K03", "x":3, "y":0}, + {"label":"K04", "x":4, "y":0}, + {"label":"K05", "x":5, "y":0}, + {"label":"K06", "x":6, "y":0}, + {"label":"K010", "x":12.75, "y":0}, + {"label":"K011", "x":13.75, "y":0}, + {"label":"K012", "x":14.75, "y":0}, + {"label":"K013", "x":15.75, "y":0}, + {"label":"K014", "x":16.75, "y":0}, + {"label":"K015", "x":17.75, "y":0}, + {"label":"K016", "x":18.75, "y":0}, + {"label":"K017", "x":19.75, "y":0}, + {"label":"K018", "x":20.75, "y":0}, + {"label":"K019", "x":21.75, "y":0}, + {"label":"K10", "x":0, "y":1}, + {"label":"K11", "x":1, "y":1}, + {"label":"K12", "x":2, "y":1}, + {"label":"K13", "x":3, "y":1}, + {"label":"K14", "x":4, "y":1}, + {"label":"K15", "x":5, "y":1}, + {"label":"K16", "x":6, "y":1}, + {"label":"K17", "x":8.75, "y":1}, + {"label":"K18", "x":9.75, "y":1}, + {"label":"K19", "x":10.75, "y":1}, + {"label":"K110", "x":12.75, "y":1}, + {"label":"K111", "x":13.75, "y":1}, + {"label":"K112", "x":14.75, "y":1}, + {"label":"K113", "x":15.75, "y":1}, + {"label":"K114", "x":16.75, "y":1}, + {"label":"K115", "x":17.75, "y":1}, + {"label":"K116", "x":18.75, "y":1, "w":2}, + {"label":"K118", "x":20.75, "y":1}, + {"label":"K119", "x":21.75, "y":1}, + {"label":"K20", "x":0, "y":2, "w":1.5}, + {"label":"K21", "x":1.5, "y":2}, + {"label":"K22", "x":2.5, "y":2}, + {"label":"K23", "x":3.5, "y":2}, + {"label":"K24", "x":4.5, "y":2}, + {"label":"K25", "x":5.5, "y":2}, + {"label":"K26", "x":7.75, "y":2}, + {"label":"K17", "x":8.75, "y":2}, + {"label":"K28", "x":9.75, "y":2}, + {"label":"K29", "x":10.75, "y":2}, + {"label":"K210", "x":12.25, "y":2}, + {"label":"K211", "x":13.25, "y":2}, + {"label":"K212", "x":14.25, "y":2}, + {"label":"K213", "x":15.25, "y":2}, + {"label":"K214", "x":16.25, "y":2}, + {"label":"K215", "x":17.25, "y":2}, + {"label":"K216", "x":18.25, "y":2}, + {"label":"K217", "x":19.25, "y":2, "w":1.5}, + {"label":"K218", "x":20.75, "y":2}, + {"label":"K219", "x":21.75, "y":2}, + {"label":"K30", "x":0, "y":3, "w":1.75}, + {"label":"K31", "x":1.75, "y":3}, + {"label":"K32", "x":2.75, "y":3}, + {"label":"K33", "x":3.75, "y":3}, + {"label":"K34", "x":4.75, "y":3}, + {"label":"K35", "x":5.75, "y":3}, + {"label":"K36", "x":7.75, "y":3}, + {"label":"K37", "x":8.75, "y":3}, + {"label":"K38", "x":9.75, "y":3}, + {"label":"K39", "x":10.75, "y":3}, + {"label":"K310", "x":12.5, "y":3}, + {"label":"K311", "x":13.5, "y":3}, + {"label":"K312", "x":14.5, "y":3}, + {"label":"K313", "x":15.5, "y":3}, + {"label":"K314", "x":16.5, "y":3}, + {"label":"K315", "x":17.5, "y":3}, + {"label":"K317", "x":18.5, "y":3, "w":2.25}, + {"label":"K40", "x":0, "y":4, "w":2.25}, + {"label":"K41", "x":2.25, "y":4}, + {"label":"K42", "x":3.25, "y":4}, + {"label":"K43", "x":4.25, "y":4}, + {"label":"K44", "x":5.25, "y":4}, + {"label":"K45", "x":6.25, "y":4}, + {"label":"K46", "x":7.75, "y":4}, + {"label":"K47", "x":8.75, "y":4}, + {"label":"K48", "x":9.75, "y":4}, + {"label":"K49", "x":10.75, "y":4}, + {"label":"K410", "x":13, "y":4}, + {"label":"K411", "x":14, "y":4}, + {"label":"K412", "x":15, "y":4}, + {"label":"K413", "x":16, "y":4}, + {"label":"K414", "x":17, "y":4}, + {"label":"K416", "x":18, "y":4, "w":2.75}, + {"label":"K418", "x":20.75, "y":4}, + {"label":"K50", "x":0, "y":5, "w":1.25}, + {"label":"K51", "x":1.25, "y":5, "w":1.25}, + {"label":"K52", "x":2.5, "y":5, "w":1.25}, + {"label":"K53", "x":3.75, "y":5, "w":1.25}, + {"label":"K54", "x":5, "y":5, "w":2.25}, + {"label":"K56", "x":7.75, "y":5}, + {"Label":"K57", "x":8.75, "y":5}, + {"label":"K58", "x":9.75, "y":5}, + {"label":"K59", "x":10.75, "y":5}, + {"label":"K510", "x":13, "y":5, "w":2}, + {"label":"K512", "x":15, "y":5, "w":1.25}, + {"label":"K513", "x":16.25, "y":5, "w":1.25}, + {"label":"K514", "x":17.5, "y":5, "w":1.25}, + {"label":"K516", "x":18.75, "y":5}, + {"label":"K517", "x":19.75, "y":5}, + {"label":"K518", "x":20.75, "y":5}, + {"label":"K519", "x":21.75, "y":5} + ] + }, + "LAYOUT_all": { + "layout": [ + {"label":"K00", "x":0, "y":0}, + {"label":"K01", "x":1, "y":0}, + {"label":"K02", "x":2, "y":0}, + {"label":"K03", "x":3, "y":0}, + {"label":"K04", "x":4, "y":0}, + {"label":"K05", "x":5, "y":0}, + {"label":"K06", "x":6, "y":0}, + {"label":"K010", "x":12.75, "y":0}, + {"label":"K011", "x":13.75, "y":0}, + {"label":"K012", "x":14.75, "y":0}, + {"label":"K013", "x":15.75, "y":0}, + {"label":"K014", "x":16.75, "y":0}, + {"label":"K015", "x":17.75, "y":0}, + {"label":"K016", "x":18.75, "y":0}, + {"label":"K017", "x":19.75, "y":0}, + {"label":"K018", "x":20.75, "y":0}, + {"label":"K019", "x":21.75, "y":0}, + {"label":"K10", "x":0, "y":1}, + {"label":"K11", "x":1, "y":1}, + {"label":"K12", "x":2, "y":1}, + {"label":"K13", "x":3, "y":1}, + {"label":"K14", "x":4, "y":1}, + {"label":"K15", "x":5, "y":1}, + {"label":"K16", "x":6, "y":1}, + {"label":"K17", "x":8.75, "y":1}, + {"label":"K18", "x":9.75, "y":1}, + {"label":"K19", "x":10.75, "y":1}, + {"label":"K110", "x":12.75, "y":1}, + {"label":"K111", "x":13.75, "y":1}, + {"label":"K112", "x":14.75, "y":1}, + {"label":"K113", "x":15.75, "y":1}, + {"label":"K114", "x":16.75, "y":1}, + {"label":"K115", "x":17.75, "y":1}, + {"label":"K116", "x":18.75, "y":1}, + {"label":"K117", "x":19.75, "y":1}, + {"label":"K118", "x":20.75, "y":1}, + {"label":"K119", "x":21.75, "y":1}, + {"label":"K20", "x":0, "y":2, "w":1.5}, + {"label":"K21", "x":1.5, "y":2}, + {"label":"K22", "x":2.5, "y":2}, + {"label":"K23", "x":3.5, "y":2}, + {"label":"K24", "x":4.5, "y":2}, + {"label":"K25", "x":5.5, "y":2}, + {"label":"K26", "x":7.75, "y":2}, + {"label":"K27", "x":8.75, "y":2}, + {"label":"K28", "x":9.75, "y":2}, + {"label":"K29", "x":10.75, "y":2}, + {"label":"K210", "x":12.25, "y":2}, + {"label":"K211", "x":13.25, "y":2}, + {"label":"K212", "x":14.25, "y":2}, + {"label":"K213", "x":15.25, "y":2}, + {"label":"K214", "x":16.25, "y":2}, + {"label":"K215", "x":17.25, "y":2}, + {"label":"K216", "x":18.25, "y":2}, + {"label":"K217", "x":19.25, "y":2, "w":1.5}, + {"label":"K218", "x":20.75, "y":2}, + {"label":"K219", "x":21.75, "y":2}, + {"label":"K30", "x":0, "y":3, "w":1.75}, + {"label":"K31", "x":1.75, "y":3}, + {"label":"K32", "x":2.75, "y":3}, + {"label":"K33", "x":3.75, "y":3}, + {"label":"K34", "x":4.75, "y":3}, + {"label":"K35", "x":5.75, "y":3}, + {"label":"K36", "x":7.75, "y":3}, + {"label":"K37", "x":8.75, "y":3}, + {"label":"K38", "x":9.75, "y":3}, + {"label":"K39", "x":10.75, "y":3}, + {"label":"K310", "x":12.5, "y":3}, + {"label":"K311", "x":13.5, "y":3}, + {"label":"K312", "x":14.5, "y":3}, + {"label":"K313", "x":15.5, "y":3}, + {"label":"K314", "x":16.5, "y":3}, + {"label":"K315", "x":17.5, "y":3}, + {"label":"K317", "x":18.5, "y":3, "w":2.25}, + {"label":"K40", "x":0, "y":4, "w":2.25}, + {"label":"K41", "x":2.25, "y":4}, + {"label":"K42", "x":3.25, "y":4}, + {"label":"K43", "x":4.25, "y":4}, + {"label":"K44", "x":5.25, "y":4}, + {"label":"K45", "x":6.25, "y":4}, + {"label":"K46", "x":7.75, "y":4}, + {"label":"K47", "x":8.75, "y":4}, + {"label":"K48", "x":9.75, "y":4}, + {"label":"K49", "x":10.75, "y":4}, + {"label":"K410", "x":13, "y":4}, + {"label":"K411", "x":14, "y":4}, + {"label":"K412", "x":15, "y":4}, + {"label":"K413", "x":16, "y":4}, + {"label":"K414", "x":17, "y":4}, + {"label":"K416", "x":18, "y":4, "w":1.75}, + {"label":"K417", "x":19.75, "y":4}, + {"label":"K418", "x":20.75, "y":4}, + {"label":"K50", "x":0, "y":5, "w":1.25}, + {"label":"K51", "x":1.25, "y":5, "w":1.25}, + {"label":"K52", "x":2.5, "y":5, "w":1.25}, + {"label":"K53", "x":3.75, "y":5, "w":1.25}, + {"label":"K54", "x":5, "y":5, "w":2.25}, + {"label":"K56", "x":7.75, "y":5}, + {"label":"K57", "x":8.75, "y":5}, + {"label":"K58", "x":9.75, "y":5}, + {"label":"K59", "x":10.75, "y":5}, + {"label":"K510", "x":13, "y":5, "w":2}, + {"label":"K512", "x":15, "y":5, "w":1.25}, + {"label":"K513", "x":16.25, "y":5, "w":1.25}, + {"label":"K514", "x":17.5, "y":5, "w":1.25}, + {"label":"K516", "x":18.75, "y":5}, + {"label":"K517", "x":19.75, "y":5}, + {"label":"K518", "x":20.75, "y":5}, + {"label":"K519", "x":21.75, "y":5} + ] } - } + } } diff --git a/keyboards/handwired/downbubble/keymaps/default/keymap.c b/keyboards/handwired/downbubble/keymaps/default/keymap.c index d35d367394..48303900fb 100644 --- a/keyboards/handwired/downbubble/keymaps/default/keymap.c +++ b/keyboards/handwired/downbubble/keymaps/default/keymap.c @@ -22,7 +22,7 @@ enum custom_keycodes { }; const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [0] = LAYOUT_downbubble_standard(\ + [0] = LAYOUT_standard(\ 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_NLCK, KC_HOME, KC_TRNS, KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_PSLS, KC_PAST, KC_PMNS, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_END, KC_PGUP, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_P7, KC_P8, KC_P9, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_PGDN, @@ -31,7 +31,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_LCTL, KC_LGUI, KC_LALT, KC_BSPC, KC_SPC, KC_P0, KC_PDOT, KC_PENT, KC_BSPC, KC_RALT, KC_RGUI, KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT ), - LAYOUT_downbubble_splitbackspace(\ + LAYOUT_split_bs(\ 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_NLCK, KC_HOME, KC_TRNS, KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_PSLS, KC_PAST, KC_PMNS, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_TRNS, KC_END, KC_PGUP, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_P7, KC_P8, KC_P9, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_PGDN, @@ -40,7 +40,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_LCTL, KC_LGUI, KC_LALT, KC_BSPC, KC_SPC, KC_P0, KC_PDOT, KC_PENT, KC_BSPC, KC_RALT, KC_RGUI, KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT ), - LAYOUT_downbubble_splitrightshift(\ + LAYOUT_split_rshift(\ 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_NLCK, KC_HOME, KC_TRNS, KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_PSLS, KC_PAST, KC_PMNS, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_END, KC_PGUP, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_P7, KC_P8, KC_P9, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_PGDN, @@ -49,7 +49,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_LCTL, KC_LGUI, KC_LALT, KC_BSPC, KC_SPC, KC_P0, KC_PDOT, KC_PENT, KC_BSPC, KC_RALT, KC_RGUI, KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT ), - LAYOUT_downbubble_splitnumpad(\ + LAYOUT_split_numpad(\ 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_NLCK, KC_HOME, KC_TRNS, KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_PSLS, KC_PAST, KC_PMNS, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_END, KC_PGUP, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_P7, KC_P8, KC_P9, KC_PPLS, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_PGDN, @@ -58,7 +58,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_LCTL, KC_LGUI, KC_LALT, KC_BSPC, KC_SPC, KC_P0, KC_TRNS, KC_PDOT, KC_TRNS, KC_BSPC, KC_RALT, KC_RGUI, KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT ), - LAYOUT_downbubble_spliteverything(\ + LAYOUT_all(\ 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_NLCK, KC_HOME, KC_TRNS, KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_PSLS, KC_PAST, KC_PMNS, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_TRNS, KC_END, KC_PGUP, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_P7, KC_P8, KC_P9, KC_PPLS, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_PGDN, diff --git a/keyboards/handwired/frenchdev/keymaps/default/keymap.c b/keyboards/handwired/frenchdev/keymaps/default/keymap.c index 635383b55b..3d0f1fbfb8 100644 --- a/keyboards/handwired/frenchdev/keymaps/default/keymap.c +++ b/keyboards/handwired/frenchdev/keymaps/default/keymap.c @@ -176,11 +176,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { }; - -const uint16_t PROGMEM fn_actions[] = { - -}; - void hold_shift(void) { shift_count = shift_count + 1; register_code(KC_LSHIFT); @@ -359,10 +354,6 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) return MACRO_NONE; }; -void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) { - -} - void matrix_init_user(void) { } diff --git a/keyboards/handwired/hexon38/config.h b/keyboards/handwired/hexon38/config.h new file mode 100644 index 0000000000..23eb51e014 --- /dev/null +++ b/keyboards/handwired/hexon38/config.h @@ -0,0 +1,60 @@ +// see https://github.com/pepaslabs/hexon38 + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0xFEED +#define PRODUCT_ID 0x6060 +#define DEVICE_VER 0x0001 +#define MANUFACTURER pepaslabs +#define PRODUCT hexon38 +#define DESCRIPTION "A handmade non-split ergonomic 38-key keyboard, inspired by the lil38. See https://github.com/pepaslabs/hexon38." + +/* key matrix size */ +#define MATRIX_ROWS 4 +#define MATRIX_COLS 12 + +/* key matrix pins */ +#define MATRIX_ROW_PINS { B0, F0, B2, F4 } +#define MATRIX_COL_PINS { C6, D3, D2, D1, D0, B7, F6, F7, B6, B5, B4, D7 } +#define UNUSED_PINS + +/* COL2ROW or ROW2COL */ +#define DIODE_DIRECTION ROW2COL + +/* number of backlight levels */ + +#ifdef BACKLIGHT_PIN +#define BACKLIGHT_LEVELS 0 +#endif + +/* Set 0 if debouncing isn't needed */ +#define DEBOUNCING_DELAY 5 + + +/* key combination for command */ +#define IS_COMMAND() ( \ + keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \ +) + +#ifdef RGB_DI_PIN +#define RGBLIGHT_ANIMATIONS +#define RGBLED_NUM 0 +#define RGBLIGHT_HUE_STEP 8 +#define RGBLIGHT_SAT_STEP 8 +#define RGBLIGHT_VAL_STEP 8 +#endif + + +// Disabled features: + +/* 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 + +/* prevent stuck modifiers */ +//#define PREVENT_STUCK_MODIFIERS diff --git a/keyboards/handwired/hexon38/hexon38.c b/keyboards/handwired/hexon38/hexon38.c new file mode 100644 index 0000000000..d830adef3c --- /dev/null +++ b/keyboards/handwired/hexon38/hexon38.c @@ -0,0 +1,3 @@ +// see https://github.com/pepaslabs/hexon38 + +#include "hexon38.h" diff --git a/keyboards/handwired/hexon38/hexon38.h b/keyboards/handwired/hexon38/hexon38.h new file mode 100644 index 0000000000..f98f460faf --- /dev/null +++ b/keyboards/handwired/hexon38/hexon38.h @@ -0,0 +1,17 @@ +// see https://github.com/pepaslabs/hexon38 + +#pragma once + +#include "quantum.h" + +#define LAYOUT( \ + K002, K003, K004, K005, K006, K007, K008, K009, \ + K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, \ + K200, K201, K202, K203, K204, K207, K208, K209, K210, K211, \ + K302, K303, K304, K305, K306, K307, K308, K309 \ +) { \ + { KC_NO, KC_NO, K002, K003, K004, K005, K006, K007, K008, K009, KC_NO, KC_NO }, \ + { K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111 }, \ + { K200, K201, K202, K203, K204, KC_NO, KC_NO, K207, K208, K209, K210, K211 }, \ + { KC_NO, KC_NO, K302, K303, K304, K305, K306, K307, K308, K309, KC_NO, KC_NO } \ +} diff --git a/keyboards/handwired/hexon38/keymaps/default/keymap.c b/keyboards/handwired/hexon38/keymaps/default/keymap.c new file mode 100644 index 0000000000..c3805991f0 --- /dev/null +++ b/keyboards/handwired/hexon38/keymaps/default/keymap.c @@ -0,0 +1,407 @@ +// see https://github.com/pepaslabs/hexon38 + +#include "hexon38.h" + +#define A_ KC_A +#define B_ KC_B +#define C_ KC_C +#define D_ KC_D +#define E_ KC_E +#define F_ KC_F +#define G_ KC_G +#define H_ KC_H +#define I_ KC_I +#define J_ KC_J +#define K_ KC_K +#define L_ KC_L +#define M_ KC_M +#define N_ KC_N +#define O_ KC_O +#define P_ KC_P +#define Q_ KC_Q +#define R_ KC_R +#define S_ KC_S +#define T_ KC_T +#define U_ KC_U +#define V_ KC_V +#define W_ KC_W +#define X_ KC_X +#define Y_ KC_Y +#define Z_ KC_Z + +// Dual-role keys: modifier when held, alpha when tapped. +#define A_CTL CTL_T(KC_A) +#define S_ALT ALT_T(KC_S) +#define D_GUI GUI_T(KC_D) +#define F_SFT SFT_T(KC_F) +#define J_SFT SFT_T(KC_J) +#define K_GUI GUI_T(KC_K) +#define L_ALT ALT_T(KC_L) +#define COLN_CTL CTL_T(KC_SCLN) + +#define ______ KC_TRNS +#define LSHIFT KC_LSHIFT +#define RSHIFT KC_RSHIFT +#define COMMA KC_COMM +#define SLASH KC_SLSH +#define SPACE KC_SPC +#define TAB KC_TAB +#define BKSPC KC_BSPC +#define ENTER KC_ENT +#define PERIOD KC_DOT + +#define BASE_LAYER LAYOUT +#define BLANK_LAYER LAYOUT + + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + BASE_LAYER( +// ,--------+--------+--------+--------. ,--------+--------+--------+--------. + W_ , E_ , R_ , T_ , Y_ , U_ , I_ , O_ , +//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------. + Q_ , A_CTL , S_ALT , D_GUI , F_SFT , G_ , H_ , J_SFT , K_GUI , L_ALT ,COLN_CTL, P_ , +//|--------+--------+--------+--------+--------+--------' `--------+--------+--------+--------+--------+--------| + B_ , Z_ , X_ , C_ , V_ , M_ , COMMA , PERIOD , SLASH , N_ , +//`--------+--------+--------+--------+--------' `--------+--------+--------+--------+--------' + +// ,--------+--------+--------+--------. ,--------+--------+--------+--------. + LSHIFT , SPACE , TAB , DEBUG , SPACE , BKSPC , ENTER , RSHIFT +// `--------+--------+--------+--------' `--------+--------+--------+--------' +), + + BLANK_LAYER( +// ,--------+--------+--------+--------. ,--------+--------+--------+--------. + ______ , ______ , ______ , ______ , ______ , ______ , ______ , ______ , +//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------. + ______ , ______ , ______ , ______ , ______ , ______ , ______ , ______ , ______ , ______ , ______ , ______ , +//|--------+--------+--------+--------+--------+--------' `--------+--------+--------+--------+--------+--------| + ______ , ______ , ______ , ______ , ______ , ______ , ______ , ______ , ______ , ______ , +//`--------+--------+--------+--------+--------' `--------+--------+--------+--------+--------' + +// ,--------+--------+--------+--------. ,--------+--------+--------+--------. + ______ , ______ , ______ , ______ , ______ , ______ , ______ , ______ +// `--------+--------+--------+--------' `--------+--------+--------+--------' +) + +}; + +// a linked list of pending key events (press or release) which we haven't processed yet. +struct _pending_key_t { + uint16_t keycode; + keyrecord_t record; + struct _pending_key_t *next; +}; +typedef struct _pending_key_t pending_key_t; + +// worst case is 10 down strokes and 1 up stroke before we can start disambiguating. +#define RINGSIZE 11 + +// a ring buffer and linked list to store pending key events (presses and releases). +// (basically, this is a fixed-allocation linked list.) +struct _kring_t { + // the actual key events. + pending_key_t items[RINGSIZE]; + // the index of the oldest item, or -1 if no items. + int8_t ifirst; + // the index of the most recently added item, or -1 if no items. + int8_t ilast; + // the number of items in the ring. + uint8_t count; + // the head of the linked list. + pending_key_t *head; +}; +typedef struct _kring_t kring_t; + +// safe accessor to the i-th item of the linked list (returns pointer or NULL). +pending_key_t* kring_get(kring_t *ring, uint8_t i) { + if (i >= ring->count) { + return NULL; + } + uint8_t j = (ring->ifirst + i) % RINGSIZE; + return &(ring->items[j]); +} + +// return the last key in the list of buffered keys. +pending_key_t* kring_last(kring_t *ring) { + if (ring->count == 0) { + return NULL; + } + return kring_get(ring, ring->count - 1); +} + +// remove the oldest item from the ring (the head of the list). +void kring_pop(kring_t *ring) { + if (ring->count > 0) { + ring->ifirst += 1; + ring->ifirst %= RINGSIZE; + ring->head = ring->head->next; + ring->count -= 1; + } +} + +// add an item to the ring (append to the list). +void kring_append(kring_t *ring, uint16_t keycode, keyrecord_t *record) { + if (ring->count >= RINGSIZE) { + // uh oh, we overflowed the capacity of our buffer :( + return; + } + + // if the ring is empty, insert at index 0. + if (ring->count == 0) { + ring->count += 1; + ring->ifirst = 0; + ring->ilast = 0; + ring->head = &(ring->items[0]); + } + // else, append it onto the end. + else { + ring->count += 1; + ring->ilast += 1; + ring->ilast %= RINGSIZE; + } + + // the index at which we should insert this item. + int8_t i = ring->ilast; + + // insert the item. + ring->items[i].keycode = keycode; + ring->items[i].record.event = record->event; +#ifndef NO_ACTION_TAPPING + ring->items[i].record.tap = record->tap; +#endif + ring->items[i].next = NULL; + + // update the previous item to point to this item. + if (ring->count > 1) { + kring_get(ring, ring->count - 2)->next = &(ring->items[i]); + } +} + +kring_t g_pending; + +void matrix_init_user(void) { + g_pending.ifirst = -1; + g_pending.ilast = -1; + g_pending.count = 0; + g_pending.head = NULL; +} + +void matrix_scan_user(void) {} + +/* +a_ a-: emit a +a_ b_ b- a-: emit SHIFT+b +a_ b_ a- b-: emit a, b +dual1down, dual1up -> norm1down, norm1up +dual1down, norm2down, norm2up -> mod1down, norm2down, norm2up +dual1down, norm2down, dual1up -> norm1down, norm2down, norm1up +dual1down, dual2down, norm3down, norm3up -> mod1down, mod2down, norm3down, norm3up +so, a dual key can't be disambiguated until the next keyup of a keydown (not including keyups from keys before it). +*/ + +bool is_ambiguous_kc(uint16_t kc) { + // See the MT() define: https://github.com/qmk/qmk_firmware/blob/master/quantum/quantum_keycodes.h#L642 + // See the QK_MOD_TAP case: https://github.com/qmk/qmk_firmware/blob/master/quantum/keymap_common.c#L134 + uint8_t mod = mod_config((kc >> 0x8) & 0x1F); + return mod != 0; +} + +bool is_down(pending_key_t *k) { + return k->record.event.pressed; +} + +bool is_up(pending_key_t *k) { + return !is_down(k); +} + +bool keys_match(pending_key_t *a, pending_key_t *b) { + return a->record.event.key.col == b->record.event.key.col + && a->record.event.key.row == b->record.event.key.row; +} + +// both the down and corresponding upstroke of a keypress. +struct _pending_pair_t { + pending_key_t *down; + pending_key_t *up; +}; +typedef struct _pending_pair_t pending_pair_t; + +// returns true if this keydown event has a corresponding keyup event in the +// list of buffered keys. also fills out 'p'. +bool is_downup_pair(pending_key_t *k, pending_pair_t *p) { + // first, make sure this event is keydown. + if (!is_down(k)) { + return false; + } + // now find its matching keyup. + pending_key_t *next = k->next; + while (next != NULL) { + if (keys_match(k, next) && is_up(next)) { + // found it. + if (p != NULL) { + p->down = k; + p->up = next; + } + return true; + } + next = next->next; + } + // didn't find it. + return false; +} + +// given a QK_MOD_TAP keycode, return the KC_* version of the modifier keycode. +uint16_t get_mod_kc(uint16_t keycode) { + uint8_t mod = mod_config((keycode >> 0x8) & 0x1F); + switch (mod) { + case MOD_LCTL: + return KC_LCTL; + case MOD_RCTL: + return KC_RCTL; + case MOD_LSFT: + return KC_LSFT; + case MOD_RSFT: + return KC_RSFT; + case MOD_LALT: + return KC_LALT; + case MOD_RALT: + return KC_RALT; + case MOD_LGUI: + return KC_LGUI; + case MOD_RGUI: + return KC_RGUI; + default: + // shrug? this shouldn't happen. + return keycode; + } +} + +bool is_mod_kc(uint16_t keycode) { + switch (keycode) { + case QK_MODS ... QK_MODS_MAX: + return true; + default: + return false; + } +} + +void interpret_as_mod(pending_pair_t *p) { + // see https://github.com/qmk/qmk_firmware/issues/1503 + pending_key_t *k; + k = p->down; + if (k != NULL) { + k->keycode = get_mod_kc(k->keycode); + } + k = p->up; + if (k != NULL) { + k->keycode = get_mod_kc(k->keycode); + } +} + +void interpret_as_normal(pending_pair_t *p) { + pending_key_t *k; + k = p->down; + if (k != NULL) { + k->keycode = k->keycode & 0xFF; + } + k = p->up; + if (k != NULL) { + k->keycode = k->keycode & 0xFF; + } +} + +void execute_head_and_pop(kring_t *ring) { + pending_key_t *head = kring_get(ring, 0); + uint16_t kc = head->keycode; + if (is_mod_kc(kc)) { + if (is_down(head)) { + dprintf(" %s: mod down 0x%04X\n", __func__, kc); + set_mods(get_mods() | MOD_BIT(kc)); + } else { + dprintf(" %s: mod up 0x%04X\n", __func__, kc); + set_mods(get_mods() & ~MOD_BIT(kc)); + } + } else { + if (is_down(head)) { + dprintf(" %s: key down 0x%04X\n", __func__, kc); + register_code16(kc); + } else { + dprintf(" %s: key up 0x%04X\n", __func__, kc); + unregister_code16(kc); + } + } + kring_pop(ring); +} + +// try to figure out what the next pending keypress means. +bool parse_next(kring_t *pending) { + pending_pair_t p; + pending_key_t *first = kring_get(pending, 0); + if (!is_ambiguous_kc(first->keycode)) { + // this pending key isn't ambiguous, so execute it. + dprintf(" %s: found unambiguous key\n", __func__); + execute_head_and_pop(pending); + return true; + } else if (is_ambiguous_kc(first->keycode) && is_up(first)) { + dprintf(" %s: interpreting keyup as mod\n", __func__); + p.down = NULL; + p.up = first; + interpret_as_mod(&p); + execute_head_and_pop(pending); + return true; + } else if (is_downup_pair(first, &p)) { + // 'first' was released before any other pressed key, so treat this as + // a rolling series of normal key taps. + dprintf(" %s: found down-up pair, interpreting as normal key\n", __func__); + interpret_as_normal(&p); + execute_head_and_pop(pending); + return true; + } else { + // if another key was pressed and released while 'first' was held, then we + // should treat it like a modifier. + pending_key_t *next = first->next; + while (next != NULL) { + if (is_downup_pair(next, NULL)) { + dprintf(" %s: found subsequent downup pair, interpreting head as mod\n", __func__); + p.down = first; + p.up = NULL; + interpret_as_mod(&p); + execute_head_and_pop(pending); + return true; + } + next = next->next; + } + + // we can't disambiguate 'first' yet. wait for another keypress. + dprintf(" %s: can't disambiguate (yet)\n", __func__); + return false; + } +} + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + if (keycode == DEBUG) { + return true; + } + + if (g_pending.count == 0 && !is_ambiguous_kc(keycode)) { + // we have no pending keys and this key isn't ambiguous, so we should + // just let QMK take care of it. + dprintf("%s: handled by qmk\n", __func__); + return true; + } else { + dprintf("%s: got dual-role key\n", __func__); + // append the keypress and then try parsing all pending keypresses. + kring_append(&g_pending, keycode, record); + while (g_pending.count > 0) { + dprintf("%s: looping through %d keys...\n", __func__, g_pending.count); + if (!parse_next(&g_pending)) { + // one of our keypresses is ambiguous and we can't proceed until + // we get further keypresses to disambiguate it. + dprintf("%s: %d pending keys are ambiguous\n", __func__, g_pending.count); + break; + } + } + return false; + } +} diff --git a/keyboards/handwired/hexon38/readme.md b/keyboards/handwired/hexon38/readme.md new file mode 100644 index 0000000000..c8ada8e2b2 --- /dev/null +++ b/keyboards/handwired/hexon38/readme.md @@ -0,0 +1,11 @@ +# hexon38 + +QMK support for the [hexon38](https://github.com/pepaslabs/hexon38). + +## Building + +``` +$ cd qmk_firmware +$ make handwired/hexon38 +``` + diff --git a/keyboards/handwired/hexon38/rules.mk b/keyboards/handwired/hexon38/rules.mk new file mode 100644 index 0000000000..2b6f17afc2 --- /dev/null +++ b/keyboards/handwired/hexon38/rules.mk @@ -0,0 +1,64 @@ +# see https://github.com/pepaslabs/hexon38 + +# MCU name +MCU = atmega32u4 + +# Processor frequency. +# This will define a symbol, F_CPU, in all source code files equal to the +# processor frequency in Hz. You can then use this symbol in your source code to +# calculate timings. Do NOT tack on a 'UL' at the end, this will be done +# automatically to create a 32-bit value in your source code. +# +# This will be an integer division of F_USB below, as it is sourced by +# F_USB after it has run through any CPU prescalers. Note that this value +# does not *change* the processor frequency - it should merely be updated to +# reflect the processor speed set externally so that the code can use accurate +# software delays. +F_CPU = 16000000 + +# +# LUFA specific +# +# Target architecture (see library "Board Types" documentation). +ARCH = AVR8 + +# Input clock frequency. +# This will define a symbol, F_USB, in all source code files equal to the +# input clock frequency (before any prescaling is performed) in Hz. This value may +# differ from F_CPU if prescaling is used on the latter, and is required as the +# raw input clock is fed directly to the PLL sections of the AVR for high speed +# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL' +# at the end, this will be done automatically to create a 32-bit value in your +# source code. +# +# If no clock division is performed on the input clock inside the AVR (via the +# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU. +F_USB = $(F_CPU) + +# Interrupt driven control endpoint task(+60) +OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT + + +# Bootloader selection +# Teensy halfkay +# Pro Micro caterina +# Atmel DFU atmel-dfu +# LUFA DFU lufa-dfu +# QMK DFU qmk-dfu +# atmega32a bootloadHID +BOOTLOADER = halfkay + + +# Enabled build options: +BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000) +MOUSEKEY_ENABLE = yes # Mouse keys(+4700) +EXTRAKEY_ENABLE = yes # Audio control and System control(+450) +CONSOLE_ENABLE = yes # Console for debug(+400) +COMMAND_ENABLE = yes # Commands for debug and configuration +NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work + +# Disabled build options: +SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +AUDIO_ENABLE = no +RGBLIGHT_ENABLE = no diff --git a/keyboards/handwired/ibm122m/keymaps/lukaus/keymap.c b/keyboards/handwired/ibm122m/keymaps/lukaus/keymap.c index 9cd58c0ec9..130465e8d8 100644 --- a/keyboards/handwired/ibm122m/keymaps/lukaus/keymap.c +++ b/keyboards/handwired/ibm122m/keymaps/lukaus/keymap.c @@ -137,10 +137,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ),*/ }; -const uint16_t PROGMEM fn_actions[] = { - -}; - const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) { // MACRODOWN only works in this function diff --git a/keyboards/handwired/ibm122m/readme.md b/keyboards/handwired/ibm122m/readme.md index 09dac49c0d..de89d7596e 100644 --- a/keyboards/handwired/ibm122m/readme.md +++ b/keyboards/handwired/ibm122m/readme.md @@ -13,4 +13,4 @@ Make example for this keyboard (after setting up your build environment): make handwired/ibm122m:default -See [build environment setup](https://docs.qmk.fm/build_environment_setup.html) then the [make instructions](https://docs.qmk.fm/make_instructions.html) for more information. +See [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) then the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. diff --git a/keyboards/handwired/not_so_minidox/readme.md b/keyboards/handwired/not_so_minidox/readme.md index bd40607357..c791e6e3f9 100644 --- a/keyboards/handwired/not_so_minidox/readme.md +++ b/keyboards/handwired/not_so_minidox/readme.md @@ -12,7 +12,7 @@ Make example for this keyboard (after setting up your build environment): make not_so_minidox/rev1:default -See [build environment setup](https://docs.qmk.fm/build_environment_setup.html) then the [make instructions](https://docs.qmk.fm/make_instructions.html) for more information. +See [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) then the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Flashing ------- diff --git a/keyboards/handwired/numpad20/readme.md b/keyboards/handwired/numpad20/readme.md index 29c832daf0..4e14fbb005 100644 --- a/keyboards/handwired/numpad20/readme.md +++ b/keyboards/handwired/numpad20/readme.md @@ -10,4 +10,4 @@ Make example for this keyboard (after setting up your build environment): make handwired/numpad20:default -See [build environment setup](https://docs.qmk.fm/build_environment_setup.html) then the [make instructions](https://docs.qmk.fm/make_instructions.html) for more information.
\ No newline at end of file +See [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) then the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information.
\ No newline at end of file diff --git a/keyboards/handwired/ortho5x13/ortho5x13.h b/keyboards/handwired/ortho5x13/ortho5x13.h index 93551bd70b..a43fc76ae6 100644 --- a/keyboards/handwired/ortho5x13/ortho5x13.h +++ b/keyboards/handwired/ortho5x13/ortho5x13.h @@ -1,5 +1,4 @@ -#ifndef ORTHO5X13_H -#define ORTHO5X13_H +#pragma once #include "quantum.h" @@ -18,7 +17,7 @@ { k40, k41, k42, k43, k44, k45, KC_NO, k47, k48, k49, k4a, k4b, k4c } \ } -#define LAYOUT_compact( \ +#define LAYOUT_kc( \ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, \ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, \ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, \ @@ -32,5 +31,3 @@ { KC_##k30, KC_##k31, KC_##k32, KC_##k33, KC_##k34, KC_##k35, KC_##k35, KC_##k37, KC_##k38, KC_##k39, KC_##k3a, KC_##k3b, KC_##k3c }, \ { KC_##k40, KC_##k41, KC_##k42, KC_##k43, KC_##k44, KC_##k45, KC_NO, KC_##k47, KC_##k48, KC_##k49, KC_##k4a, KC_##k4b, KC_##k4c } \ } - -#endif
\ No newline at end of file diff --git a/keyboards/handwired/ortho60/info.json b/keyboards/handwired/ortho60/info.json index b6e4854410..b94bfc7b53 100644 --- a/keyboards/handwired/ortho60/info.json +++ b/keyboards/handwired/ortho60/info.json @@ -65,8 +65,71 @@ {"label":"Raise", "x":7, "y":4}, {"label":"Left", "x":8, "y":4}, {"label":"Down", "x":9, "y":4}, - {"label":"Right", "x":10, "y":4}, - {"label":"up", "x":11, "y":4} + {"label":"Up", "x":10, "y":4}, + {"label":"Right", "x":11, "y":4} + ] + }, + "LAYOUT_1x2uC": { + "layout": [ + {"label":"`", "x":0, "y":0}, + {"label":"1", "x":1, "y":0}, + {"label":"2", "x":2, "y":0}, + {"label":"3", "x":3, "y":0}, + {"label":"4", "x":4, "y":0}, + {"label":"5", "x":5, "y":0}, + {"label":"6", "x":6, "y":0}, + {"label":"7", "x":7, "y":0}, + {"label":"8", "x":8, "y":0}, + {"label":"9", "x":9, "y":0}, + {"label":"0", "x":10, "y":0}, + {"label":"Backspace", "x":11, "y":0}, + {"label":"Tab", "x":0, "y":1}, + {"label":"Q", "x":1, "y":1}, + {"label":"W", "x":2, "y":1}, + {"label":"E", "x":3, "y":1}, + {"label":"R", "x":4, "y":1}, + {"label":"T", "x":5, "y":1}, + {"label":"Y", "x":6, "y":1}, + {"label":"U", "x":7, "y":1}, + {"label":"I", "x":8, "y":1}, + {"label":"O", "x":9, "y":1}, + {"label":"P", "x":10, "y":1}, + {"label":"Delete", "x":11, "y":1}, + {"label":"Esc", "x":0, "y":2}, + {"label":"A", "x":1, "y":2}, + {"label":"S", "x":2, "y":2}, + {"label":"D", "x":3, "y":2}, + {"label":"F", "x":4, "y":2}, + {"label":"G", "x":5, "y":2}, + {"label":"H", "x":6, "y":2}, + {"label":"J", "x":7, "y":2}, + {"label":"K", "x":8, "y":2}, + {"label":"L", "x":9, "y":2}, + {"label":";", "x":10, "y":2}, + {"label":"'", "x":11, "y":2}, + {"label":"Shift", "x":0, "y":3}, + {"label":"Z", "x":1, "y":3}, + {"label":"X", "x":2, "y":3}, + {"label":"C", "x":3, "y":3}, + {"label":"V", "x":4, "y":3}, + {"label":"B", "x":5, "y":3}, + {"label":"N", "x":6, "y":3}, + {"label":"M", "x":7, "y":3}, + {"label":",", "x":8, "y":3}, + {"label":".", "x":9, "y":3}, + {"label":"/", "x":10, "y":3}, + {"label":"Enter", "x":11, "y":3}, + {"label":"Fn", "x":0, "y":4}, + {"label":"Ctrl", "x":1, "y":4}, + {"label":"Alt", "x":2, "y":4}, + {"label":"Meta", "x":3, "y":4}, + {"label":"Lower", "x":4, "y":4}, + {"label":"Space", "x":5, "y":4, "w":2}, + {"label":"Raise", "x":7, "y":4}, + {"label":"Left", "x":8, "y":4}, + {"label":"Down", "x":9, "y":4}, + {"label":"Up", "x":10, "y":4}, + {"label":"Right", "x":11, "y":4} ] } } diff --git a/keyboards/handwired/ortho60/readme.md b/keyboards/handwired/ortho60/readme.md index 8db1b7df7d..be2a027c4f 100644 --- a/keyboards/handwired/ortho60/readme.md +++ b/keyboards/handwired/ortho60/readme.md @@ -1,3 +1,12 @@ # Ortho 60 -Blue Pill STM32F103C8T6 based 12x5 Ortholinear Board +A Blue Pill STM32F103C8T6-based 12x5 ortholinear keyboard. + +Keyboard Maintainer: [Andrew Kannan](https://github.com/awkannan1) +Hardware Supported: Blue Pill STM32F103C8T6 + +Make example for this keyboard (after setting up your build environment): + + make handwired/ortho60:default + +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). diff --git a/keyboards/handwired/ortho60/rules.mk b/keyboards/handwired/ortho60/rules.mk index 3f4574473c..91acb3c5c6 100644 --- a/keyboards/handwired/ortho60/rules.mk +++ b/keyboards/handwired/ortho60/rules.mk @@ -52,5 +52,3 @@ NKRO_ENABLE = yes # USB Nkey Rollover BACKLIGHT_ENABLE = yes LAYOUTS = ortho_5x12 - -DEFAULT_FOLDER = handwired/ortho60 diff --git a/keyboards/handwired/promethium/keymaps/default/keymap.c b/keyboards/handwired/promethium/keymaps/default/keymap.c index a1ca79f9a9..faae89f935 100644 --- a/keyboards/handwired/promethium/keymaps/default/keymap.c +++ b/keyboards/handwired/promethium/keymaps/default/keymap.c @@ -60,7 +60,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>. // Fillers to make layering clearer #define _______ KC_TRNS #define XXXXXXX KC_NO -#define G(x) LGUI(x) #define KC_WWWB KC_WWW_BACK #define KC_WWWF KC_WWW_FORWARD diff --git a/keyboards/handwired/promethium/keymaps/priyadi/keymap.c b/keyboards/handwired/promethium/keymaps/priyadi/keymap.c index a1ca79f9a9..faae89f935 100644 --- a/keyboards/handwired/promethium/keymaps/priyadi/keymap.c +++ b/keyboards/handwired/promethium/keymaps/priyadi/keymap.c @@ -60,7 +60,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>. // Fillers to make layering clearer #define _______ KC_TRNS #define XXXXXXX KC_NO -#define G(x) LGUI(x) #define KC_WWWB KC_WWW_BACK #define KC_WWWF KC_WWW_FORWARD diff --git a/keyboards/handwired/pteron/keymaps/FSund/keymap.c b/keyboards/handwired/pteron/keymaps/FSund/keymap.c index f34beae063..a52e842977 100644 --- a/keyboards/handwired/pteron/keymaps/FSund/keymap.c +++ b/keyboards/handwired/pteron/keymaps/FSund/keymap.c @@ -10,10 +10,8 @@ enum pteron_layers { #define LOWER MO(_LOWER) #define RAISE MO(_RAISE) -// use S() to produce shifted versions of keys -// #define S(kc) LSFT(kc) // defined by default - // alt gr +#undef G #define G(kc) RALT(kc) // custom keycodes diff --git a/keyboards/handwired/qc60/README.md b/keyboards/handwired/qc60/README.md index 85570a8a76..4fdd9ba6ef 100644 --- a/keyboards/handwired/qc60/README.md +++ b/keyboards/handwired/qc60/README.md @@ -1,5 +1,4 @@ -QC60 -======== +# QC60  @@ -19,4 +18,4 @@ Example of flashing this keyboard: make handwired/qc60/proto:avrdude -See [build environment setup](https://docs.qmk.fm/build_environment_setup.html) then the [make instructions](https://docs.qmk.fm/make_instructions.html) for more information. +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). diff --git a/keyboards/handwired/qc60/info.json b/keyboards/handwired/qc60/info.json index b39ec587bc..c047d50307 100644 --- a/keyboards/handwired/qc60/info.json +++ b/keyboards/handwired/qc60/info.json @@ -1,11 +1,93 @@ { - "keyboard_name": "QC60", - "url": "", - "maintainer": "coarse", - "width": 15, - "height": 5, + "keyboard_name": "QC60", + "url": "", + "maintainer": "coarse", + "width": 16, + "height": 5, "layouts": { - "LAYOUT_ANSI_DEFAULT": { + "LAYOUT": { + "key_count": 67, + "layout": [ + {"label":"L00", "x":0, "y":0}, + {"label":"L01", "x":1, "y":0}, + {"label":"L02", "x":2, "y":0}, + {"label":"L03", "x":3, "y":0}, + {"label":"L04", "x":4, "y":0}, + {"label":"L05", "x":5, "y":0}, + {"label":"L06", "x":6, "y":0}, + + {"label":"R00", "x":8, "y":0}, + {"label":"R01", "x":9, "y":0}, + {"label":"R02", "x":10, "y":0}, + {"label":"R03", "x":11, "y":0}, + {"label":"R04", "x":12, "y":0}, + {"label":"R05", "x":13, "y":0}, + {"label":"R06", "x":14, "y":0}, + {"label":"R07", "x":15, "y":0}, + + {"label":"L10", "x":0, "y":1, "w":1.5}, + {"label":"L11", "x":1.5, "y":1}, + {"label":"L12", "x":2.5, "y":1}, + {"label":"L13", "x":3.5, "y":1}, + {"label":"L14", "x":4.5, "y":1}, + {"label":"L15", "x":5.5, "y":1}, + + {"label":"R10", "x":7.5, "y":1}, + {"label":"R11", "x":8.5, "y":1}, + {"label":"R12", "x":9.5, "y":1}, + {"label":"R13", "x":10.5, "y":1}, + {"label":"R14", "x":11.5, "y":1}, + {"label":"R15", "x":12.5, "y":1}, + {"label":"R16", "x":13.5, "y":1}, + {"label":"R17", "x":14.5, "y":1, "w":1.5}, + + {"label":"L20", "x":0, "y":2, "w":1.75}, + {"label":"L21", "x":1.75, "y":2}, + {"label":"L22", "x":2.75, "y":2}, + {"label":"L23", "x":3.75, "y":2}, + {"label":"L24", "x":4.75, "y":2}, + {"label":"L25", "x":5.75, "y":2}, + + {"label":"R21", "x":7.75, "y":2}, + {"label":"R22", "x":8.75, "y":2}, + {"label":"R23", "x":9.75, "y":2}, + {"label":"R24", "x":10.75, "y":2}, + {"label":"R25", "x":11.75, "y":2}, + {"label":"R26", "x":12.75, "y":2}, + {"label":"R27", "x":13.75, "y":2, "w":2.25}, + + {"label":"L30", "x":0, "y":3, "w":1.25}, + {"label":"L31", "x":1.25, "y":3}, + {"label":"L32", "x":2.25, "y":3}, + {"label":"L33", "x":3.25, "y":3}, + {"label":"L34", "x":4.25, "y":3}, + {"label":"L35", "x":5.25, "y":3}, + {"label":"L36", "x":6.25, "y":3}, + + {"label":"R31", "x":8.25, "y":3}, + {"label":"R32", "x":9.25, "y":3}, + {"label":"R33", "x":10.25, "y":3}, + {"label":"R34", "x":11.25, "y":3}, + {"label":"R35", "x":12.25, "y":3}, + {"label":"R36", "x":13.25, "y":3, "w":1.75}, + {"label":"R37", "x":15, "y":3}, + + {"label":"L40", "x":0, "y":4, "w":1.25}, + {"label":"L41", "x":1.25, "y":4, "w":1.25}, + {"label":"L42", "x":2.5, "y":4, "w":1.25}, + {"label":"L43", "x":3.75, "y":4, "w":2.75}, + {"label":"L44", "x":6.5, "y":4, "w":1.25}, + + {"label":"R43", "x":8.75, "y":4, "w":1.25}, + {"label":"R44", "x":10, "y":4, "w":2}, + {"label":"R42", "x":12, "y":4}, + {"label":"R45", "x":13, "y":4}, + {"label":"R46", "x":14, "y":4}, + {"label":"R47", "x":15, "y":4} + ] + }, + + "LAYOUT_ansi_default": { "key_count": 64, "layout": [ {"label":"Esc", "x":0, "y":0}, @@ -16,13 +98,13 @@ {"label":"5", "x":5, "y":0}, {"label":"6", "x":6, "y":0}, - {"label":"7", "x":7, "y":0}, - {"label":"8", "x":8, "y":0}, - {"label":"9", "x":9, "y":0}, - {"label":"0", "x":10, "y":0}, - {"label":"-", "x":11, "y":0}, - {"label":"=", "x":12, "y":0}, - {"label":"Backspace", "x":13, "y":0, "w":2.0}, + {"label":"7", "x":8, "y":0}, + {"label":"8", "x":9, "y":0}, + {"label":"9", "x":10, "y":0}, + {"label":"0", "x":11, "y":0}, + {"label":"-", "x":12, "y":0}, + {"label":"=", "x":13, "y":0}, + {"label":"Backspace", "x":14, "y":0, "w":2.0}, {"label":"Tab", "x":0, "y":1, "w":1.5}, {"label":"Q", "x":1.5, "y":1}, @@ -31,14 +113,14 @@ {"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}, + {"label":"Y", "x":7.5, "y":1}, + {"label":"U", "x":8.5, "y":1}, + {"label":"I", "x":9.5, "y":1}, + {"label":"O", "x":10.5, "y":1}, + {"label":"P", "x":11.5, "y":1}, + {"label":"[", "x":12.5, "y":1}, + {"label":"]", "x":13.5, "y":1}, + {"label":"\\", "x":14.5, "y":1, "w":1.5}, {"label":"CapsLock", "x":0, "y":2, "w":1.75}, {"label":"A", "x":1.75, "y":2}, @@ -47,13 +129,13 @@ {"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}, - {"label":"Enter", "x":12.75, "y":2, "w":2.25}, + {"label":"H", "x":7.75, "y":2}, + {"label":"J", "x":8.75, "y":2}, + {"label":"K", "x":9.75, "y":2}, + {"label":"L", "x":10.75, "y":2}, + {"label":";", "x":11.75, "y":2}, + {"label":"'", "x":12.75, "y":2}, + {"label":"Enter", "x":13.75, "y":2, "w":2.25}, {"label":"Shift", "x":0, "y":3, "w":2.25}, {"label":"Z", "x":2.25, "y":3}, @@ -62,12 +144,12 @@ {"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":2.75}, + {"label":"N", "x":8.25, "y":3}, + {"label":"M", "x":9.25, "y":3}, + {"label":",", "x":10.25, "y":3}, + {"label":".", "x":11.25, "y":3}, + {"label":"/", "x":12.25, "y":3}, + {"label":"Shift", "x":13.25, "y":3, "w":2.75}, {"label":"Ctrl", "x":0, "y":4, "w":1.25}, {"label":"Win", "x":1.25, "y":4, "w":1.25}, @@ -75,13 +157,483 @@ {"x":3.75, "y":4, "w":2.75}, {"x":6.5, "y":4, "w":1.25}, - {"x":7.75, "y":4, "w":1.25}, - {"x":9, "y":4, "w":2.0}, - {"label":"Alt", "x":11, "y":4}, - {"label":"Win", "x":12, "y":4}, - {"label":"Menu", "x":13, "y":4}, - {"label":"Ctrl", "x":14, "y":4} + {"x":8.75, "y":4, "w":1.25}, + {"x":10, "y":4, "w":2.0}, + {"label":"Alt", "x":12, "y":4}, + {"label":"Win", "x":13, "y":4}, + {"label":"Menu", "x":14, "y":4}, + {"label":"Ctrl", "x":15, "y":4} + ] + }, + + "LAYOUT_ansi_alt": { + "key_count": 63, + "layout": [ + {"label":"L00", "x":0, "y":0}, + {"label":"L01", "x":1, "y":0}, + {"label":"L02", "x":2, "y":0}, + {"label":"L03", "x":3, "y":0}, + {"label":"L04", "x":4, "y":0}, + {"label":"L05", "x":5, "y":0}, + {"label":"L06", "x":6, "y":0}, + + {"label":"R00", "x":8, "y":0}, + {"label":"R01", "x":9, "y":0}, + {"label":"R02", "x":10, "y":0}, + {"label":"R03", "x":11, "y":0}, + {"label":"R04", "x":12, "y":0}, + {"label":"R05", "x":13, "y":0}, + {"label":"R07", "x":14, "y":0, "w":2}, + + {"label":"L10", "x":0, "y":1, "w":1.5}, + {"label":"L11", "x":1.5, "y":1}, + {"label":"L12", "x":2.5, "y":1}, + {"label":"L13", "x":3.5, "y":1}, + {"label":"L14", "x":4.5, "y":1}, + {"label":"L15", "x":5.5, "y":1}, + + {"label":"R10", "x":7.5, "y":1}, + {"label":"R11", "x":8.5, "y":1}, + {"label":"R12", "x":9.5, "y":1}, + {"label":"R13", "x":10.5, "y":1}, + {"label":"R14", "x":11.5, "y":1}, + {"label":"R15", "x":12.5, "y":1}, + {"label":"R16", "x":13.5, "y":1}, + {"label":"R17", "x":14.5, "y":1, "w":1.5}, + + {"label":"L20", "x":0, "y":2, "w":1.75}, + {"label":"L21", "x":1.75, "y":2}, + {"label":"L22", "x":2.75, "y":2}, + {"label":"L23", "x":3.75, "y":2}, + {"label":"L24", "x":4.75, "y":2}, + {"label":"L25", "x":5.75, "y":2}, + + {"label":"R21", "x":7.75, "y":2}, + {"label":"R22", "x":8.75, "y":2}, + {"label":"R23", "x":9.75, "y":2}, + {"label":"R24", "x":10.75, "y":2}, + {"label":"R25", "x":11.75, "y":2}, + {"label":"R26", "x":12.75, "y":2}, + {"label":"R27", "x":13.75, "y":2, "w":2.25}, + + {"label":"L31", "x":0, "y":3, "w":2.25}, + {"label":"L32", "x":2.25, "y":3}, + {"label":"L33", "x":3.25, "y":3}, + {"label":"L34", "x":4.25, "y":3}, + {"label":"L35", "x":5.25, "y":3}, + {"label":"L36", "x":6.25, "y":3}, + + {"label":"R31", "x":8.25, "y":3}, + {"label":"R32", "x":9.25, "y":3}, + {"label":"R33", "x":10.25, "y":3}, + {"label":"R34", "x":11.25, "y":3}, + {"label":"R35", "x":12.25, "y":3}, + {"label":"R36", "x":13.25, "y":3, "w":2.75}, + + {"label":"L40", "x":0, "y":4, "w":1.5}, + {"label":"L41", "x":1.5, "y":4}, + {"label":"L42", "x":2.5, "y":4, "w":1.5}, + {"label":"L43", "x":4, "y":4, "w":2.75}, + {"label":"L44", "x":6.75, "y":4}, + + {"label":"R43", "x":8.75, "y":4}, + {"label":"R44", "x":9.75, "y":4, "w":2.25}, + {"label":"R45", "x":12, "y":4, "w":1.5}, + {"label":"R46", "x":13.5, "y":4}, + {"label":"R47", "x":14.5, "y":4, "w":1.5} + ] + }, + + "LAYOUT_iso_default": { + "key_count": 65, + "layout": [ + {"label":"L00", "x":0, "y":0}, + {"label":"L01", "x":1, "y":0}, + {"label":"L02", "x":2, "y":0}, + {"label":"L03", "x":3, "y":0}, + {"label":"L04", "x":4, "y":0}, + {"label":"L05", "x":5, "y":0}, + {"label":"L06", "x":6, "y":0}, + + {"label":"R00", "x":8, "y":0}, + {"label":"R01", "x":9, "y":0}, + {"label":"R02", "x":10, "y":0}, + {"label":"R03", "x":11, "y":0}, + {"label":"R04", "x":12, "y":0}, + {"label":"R05", "x":13, "y":0}, + {"label":"R07", "x":14, "y":0, "w":2}, + + {"label":"L10", "x":0, "y":1, "w":1.5}, + {"label":"L11", "x":1.5, "y":1}, + {"label":"L12", "x":2.5, "y":1}, + {"label":"L13", "x":3.5, "y":1}, + {"label":"L14", "x":4.5, "y":1}, + {"label":"L15", "x":5.5, "y":1}, + + {"label":"R10", "x":7.5, "y":1}, + {"label":"R11", "x":8.5, "y":1}, + {"label":"R12", "x":9.5, "y":1}, + {"label":"R13", "x":10.5, "y":1}, + {"label":"R14", "x":11.5, "y":1}, + {"label":"R15", "x":12.5, "y":1}, + {"label":"R16", "x":13.5, "y":1}, + + {"label":"L20", "x":0, "y":2, "w":1.75}, + {"label":"L21", "x":1.75, "y":2}, + {"label":"L22", "x":2.75, "y":2}, + {"label":"L23", "x":3.75, "y":2}, + {"label":"L24", "x":4.75, "y":2}, + {"label":"L25", "x":5.75, "y":2}, + + {"label":"R21", "x":7.75, "y":2}, + {"label":"R22", "x":8.75, "y":2}, + {"label":"R23", "x":9.75, "y":2}, + {"label":"R24", "x":10.75, "y":2}, + {"label":"R25", "x":11.75, "y":2}, + {"label":"R26", "x":12.75, "y":2}, + {"label":"R17", "x":13.75, "y":2}, + {"label":"R27", "x":14.75, "y":1, "w":1.25, "h":2}, + + {"label":"L30", "x":0, "y":3, "w":1.25}, + {"label":"L31", "x":1.25, "y":3}, + {"label":"L32", "x":2.25, "y":3}, + {"label":"L33", "x":3.25, "y":3}, + {"label":"L34", "x":4.25, "y":3}, + {"label":"L35", "x":5.25, "y":3}, + {"label":"L36", "x":6.25, "y":3}, + + {"label":"R31", "x":8.25, "y":3}, + {"label":"R32", "x":9.25, "y":3}, + {"label":"R33", "x":10.25, "y":3}, + {"label":"R34", "x":11.25, "y":3}, + {"label":"R35", "x":12.25, "y":3}, + {"label":"R36", "x":13.25, "y":3, "w":2.75}, + + {"label":"L40", "x":0, "y":4, "w":1.25}, + {"label":"L41", "x":1.25, "y":4, "w":1.25}, + {"label":"L42", "x":2.5, "y":4, "w":1.25}, + {"label":"L43", "x":3.75, "y":4, "w":2.75}, + {"label":"L44", "x":6.5, "y":4, "w":1.25}, + + {"label":"R43", "x":8.75, "y":4, "w":1.25}, + {"label":"R44", "x":10, "y":4, "w":2}, + {"label":"R42", "x":12, "y":4}, + {"label":"R45", "x":13, "y":4}, + {"label":"R46", "x":14, "y":4}, + {"label":"R47", "x":15, "y":4} + ] + }, + + "LAYOUT_iso_alt": { + "key_count": 64, + "layout": [ + {"label":"L00", "x":0, "y":0}, + {"label":"L01", "x":1, "y":0}, + {"label":"L02", "x":2, "y":0}, + {"label":"L03", "x":3, "y":0}, + {"label":"L04", "x":4, "y":0}, + {"label":"L05", "x":5, "y":0}, + {"label":"L06", "x":6, "y":0}, + + {"label":"R00", "x":8, "y":0}, + {"label":"R01", "x":9, "y":0}, + {"label":"R02", "x":10, "y":0}, + {"label":"R03", "x":11, "y":0}, + {"label":"R04", "x":12, "y":0}, + {"label":"R05", "x":13, "y":0}, + {"label":"R07", "x":14, "y":0, "w":2}, + + {"label":"L10", "x":0, "y":1, "w":1.5}, + {"label":"L11", "x":1.5, "y":1}, + {"label":"L12", "x":2.5, "y":1}, + {"label":"L13", "x":3.5, "y":1}, + {"label":"L14", "x":4.5, "y":1}, + {"label":"L15", "x":5.5, "y":1}, + + {"label":"R10", "x":7.5, "y":1}, + {"label":"R11", "x":8.5, "y":1}, + {"label":"R12", "x":9.5, "y":1}, + {"label":"R13", "x":10.5, "y":1}, + {"label":"R14", "x":11.5, "y":1}, + {"label":"R15", "x":12.5, "y":1}, + {"label":"R16", "x":13.5, "y":1}, + + {"label":"L20", "x":0, "y":2, "w":1.75}, + {"label":"L21", "x":1.75, "y":2}, + {"label":"L22", "x":2.75, "y":2}, + {"label":"L23", "x":3.75, "y":2}, + {"label":"L24", "x":4.75, "y":2}, + {"label":"L25", "x":5.75, "y":2}, + + {"label":"R21", "x":7.75, "y":2}, + {"label":"R22", "x":8.75, "y":2}, + {"label":"R23", "x":9.75, "y":2}, + {"label":"R24", "x":10.75, "y":2}, + {"label":"R25", "x":11.75, "y":2}, + {"label":"R26", "x":12.75, "y":2}, + {"label":"R17", "x":13.75, "y":2}, + {"label":"R27", "x":14.75, "y":1, "w":1.25, "h":2}, + + {"label":"L30", "x":0, "y":3, "w":1.25}, + {"label":"L31", "x":1.25, "y":3}, + {"label":"L32", "x":2.25, "y":3}, + {"label":"L33", "x":3.25, "y":3}, + {"label":"L34", "x":4.25, "y":3}, + {"label":"L35", "x":5.25, "y":3}, + {"label":"L36", "x":6.25, "y":3}, + + {"label":"R31", "x":8.25, "y":3}, + {"label":"R32", "x":9.25, "y":3}, + {"label":"R33", "x":10.25, "y":3}, + {"label":"R34", "x":11.25, "y":3}, + {"label":"R35", "x":12.25, "y":3}, + {"label":"R36", "x":13.25, "y":3, "w":2.75}, + + {"label":"L40", "x":0, "y":4, "w":1.5}, + {"label":"L41", "x":1.5, "y":4}, + {"label":"L42", "x":2.5, "y":4, "w":1.5}, + {"label":"L43", "x":4, "y":4, "w":2.75}, + {"label":"L44", "x":6.75, "y":4}, + + {"label":"R43", "x":8.75, "y":4}, + {"label":"R44", "x":9.75, "y":4, "w":2.25}, + {"label":"R45", "x":12, "y":4, "w":1.5}, + {"label":"R46", "x":13.5, "y":4}, + {"label":"R47", "x":14.5, "y":4, "w":1.5} + ] + }, + + "LAYOUT_hhkb_default": { + "key_count": 63, + "layout": [ + {"label":"L00", "x":0, "y":0}, + {"label":"L01", "x":1, "y":0}, + {"label":"L02", "x":2, "y":0}, + {"label":"L03", "x":3, "y":0}, + {"label":"L04", "x":4, "y":0}, + {"label":"L05", "x":5, "y":0}, + {"label":"L06", "x":6, "y":0}, + + {"label":"R00", "x":8, "y":0}, + {"label":"R01", "x":9, "y":0}, + {"label":"R02", "x":10, "y":0}, + {"label":"R03", "x":11, "y":0}, + {"label":"R04", "x":12, "y":0}, + {"label":"R05", "x":13, "y":0}, + {"label":"R06", "x":14, "y":0}, + {"label":"R07", "x":15, "y":0}, + + {"label":"L10", "x":0, "y":1, "w":1.5}, + {"label":"L11", "x":1.5, "y":1}, + {"label":"L12", "x":2.5, "y":1}, + {"label":"L13", "x":3.5, "y":1}, + {"label":"L14", "x":4.5, "y":1}, + {"label":"L15", "x":5.5, "y":1}, + + {"label":"R10", "x":7.5, "y":1}, + {"label":"R11", "x":8.5, "y":1}, + {"label":"R12", "x":9.5, "y":1}, + {"label":"R13", "x":10.5, "y":1}, + {"label":"R14", "x":11.5, "y":1}, + {"label":"R15", "x":12.5, "y":1}, + {"label":"R16", "x":13.5, "y":1}, + {"label":"R17", "x":14.5, "y":1, "w":1.5}, + + {"label":"L20", "x":0, "y":2, "w":1.75}, + {"label":"L21", "x":1.75, "y":2}, + {"label":"L22", "x":2.75, "y":2}, + {"label":"L23", "x":3.75, "y":2}, + {"label":"L24", "x":4.75, "y":2}, + {"label":"L25", "x":5.75, "y":2}, + + {"label":"R21", "x":7.75, "y":2}, + {"label":"R22", "x":8.75, "y":2}, + {"label":"R23", "x":9.75, "y":2}, + {"label":"R24", "x":10.75, "y":2}, + {"label":"R25", "x":11.75, "y":2}, + {"label":"R26", "x":12.75, "y":2}, + {"label":"R27", "x":13.75, "y":2, "w":2.25}, + + {"label":"L31", "x":0, "y":3, "w":2.25}, + {"label":"L32", "x":2.25, "y":3}, + {"label":"L33", "x":3.25, "y":3}, + {"label":"L34", "x":4.25, "y":3}, + {"label":"L35", "x":5.25, "y":3}, + {"label":"L36", "x":6.25, "y":3}, + + {"label":"R31", "x":8.25, "y":3}, + {"label":"R32", "x":9.25, "y":3}, + {"label":"R33", "x":10.25, "y":3}, + {"label":"R34", "x":11.25, "y":3}, + {"label":"R35", "x":12.25, "y":3}, + {"label":"R36", "x":13.25, "y":3, "w":1.75}, + {"label":"R37", "x":15, "y":3}, + + {"label":"L41", "x":1.5, "y":4}, + {"label":"L42", "x":2.5, "y":4, "w":1.5}, + {"label":"L43", "x":4, "y":4, "w":2.75}, + {"label":"L44", "x":6.75, "y":4}, + + {"label":"R43", "x":8.75, "y":4}, + {"label":"R44", "x":9.75, "y":4, "w":2.25}, + {"label":"R45", "x":12, "y":4, "w":1.5}, + {"label":"R46", "x":13.5, "y":4} + ] + }, + + "LAYOUT_hhkb_split_lshift": { + "key_count": 64, + "layout": [ + {"label":"L00", "x":0, "y":0}, + {"label":"L01", "x":1, "y":0}, + {"label":"L02", "x":2, "y":0}, + {"label":"L03", "x":3, "y":0}, + {"label":"L04", "x":4, "y":0}, + {"label":"L05", "x":5, "y":0}, + {"label":"L06", "x":6, "y":0}, + + {"label":"R00", "x":8, "y":0}, + {"label":"R01", "x":9, "y":0}, + {"label":"R02", "x":10, "y":0}, + {"label":"R03", "x":11, "y":0}, + {"label":"R04", "x":12, "y":0}, + {"label":"R05", "x":13, "y":0}, + {"label":"R06", "x":14, "y":0}, + {"label":"R07", "x":15, "y":0}, + + {"label":"L10", "x":0, "y":1, "w":1.5}, + {"label":"L11", "x":1.5, "y":1}, + {"label":"L12", "x":2.5, "y":1}, + {"label":"L13", "x":3.5, "y":1}, + {"label":"L14", "x":4.5, "y":1}, + {"label":"L15", "x":5.5, "y":1}, + + {"label":"R10", "x":7.5, "y":1}, + {"label":"R11", "x":8.5, "y":1}, + {"label":"R12", "x":9.5, "y":1}, + {"label":"R13", "x":10.5, "y":1}, + {"label":"R14", "x":11.5, "y":1}, + {"label":"R15", "x":12.5, "y":1}, + {"label":"R16", "x":13.5, "y":1}, + {"label":"R17", "x":14.5, "y":1, "w":1.5}, + + {"label":"L20", "x":0, "y":2, "w":1.75}, + {"label":"L21", "x":1.75, "y":2}, + {"label":"L22", "x":2.75, "y":2}, + {"label":"L23", "x":3.75, "y":2}, + {"label":"L24", "x":4.75, "y":2}, + {"label":"L25", "x":5.75, "y":2}, + + {"label":"R21", "x":7.75, "y":2}, + {"label":"R22", "x":8.75, "y":2}, + {"label":"R23", "x":9.75, "y":2}, + {"label":"R24", "x":10.75, "y":2}, + {"label":"R25", "x":11.75, "y":2}, + {"label":"R26", "x":12.75, "y":2}, + {"label":"R27", "x":13.75, "y":2, "w":2.25}, + + {"label":"L30", "x":0, "y":3, "w":1.25}, + {"label":"L31", "x":1.25, "y":3}, + {"label":"L32", "x":2.25, "y":3}, + {"label":"L33", "x":3.25, "y":3}, + {"label":"L34", "x":4.25, "y":3}, + {"label":"L35", "x":5.25, "y":3}, + {"label":"L36", "x":6.25, "y":3}, + + {"label":"R31", "x":8.25, "y":3}, + {"label":"R32", "x":9.25, "y":3}, + {"label":"R33", "x":10.25, "y":3}, + {"label":"R34", "x":11.25, "y":3}, + {"label":"R35", "x":12.25, "y":3}, + {"label":"R36", "x":13.25, "y":3, "w":1.75}, + {"label":"R37", "x":15, "y":3}, + + {"label":"L41", "x":1.5, "y":4}, + {"label":"L42", "x":2.5, "y":4, "w":1.5}, + {"label":"L43", "x":4, "y":4, "w":2.75}, + {"label":"L44", "x":6.75, "y":4}, + + {"label":"R43", "x":8.75, "y":4}, + {"label":"R44", "x":9.75, "y":4, "w":2.25}, + {"label":"R45", "x":12, "y":4, "w":1.5}, + {"label":"R46", "x":13.5, "y":4} + ] + }, + + "LAYOUT_wkl_default": { + "key_count": 61, + "layout": [ + {"label":"L00", "x":0, "y":0}, + {"label":"L01", "x":1, "y":0}, + {"label":"L02", "x":2, "y":0}, + {"label":"L03", "x":3, "y":0}, + {"label":"L04", "x":4, "y":0}, + {"label":"L05", "x":5, "y":0}, + {"label":"L06", "x":6, "y":0}, + + {"label":"R00", "x":8, "y":0}, + {"label":"R01", "x":9, "y":0}, + {"label":"R02", "x":10, "y":0}, + {"label":"R03", "x":11, "y":0}, + {"label":"R04", "x":12, "y":0}, + {"label":"R05", "x":13, "y":0}, + {"label":"R07", "x":14, "y":0, "w":2}, + + {"label":"L10", "x":0, "y":1, "w":1.5}, + {"label":"L11", "x":1.5, "y":1}, + {"label":"L12", "x":2.5, "y":1}, + {"label":"L13", "x":3.5, "y":1}, + {"label":"L14", "x":4.5, "y":1}, + {"label":"L15", "x":5.5, "y":1}, + + {"label":"R10", "x":7.5, "y":1}, + {"label":"R11", "x":8.5, "y":1}, + {"label":"R12", "x":9.5, "y":1}, + {"label":"R13", "x":10.5, "y":1}, + {"label":"R14", "x":11.5, "y":1}, + {"label":"R15", "x":12.5, "y":1}, + {"label":"R16", "x":13.5, "y":1}, + {"label":"R17", "x":14.5, "y":1, "w":1.5}, + + {"label":"L20", "x":0, "y":2, "w":1.75}, + {"label":"L21", "x":1.75, "y":2}, + {"label":"L22", "x":2.75, "y":2}, + {"label":"L23", "x":3.75, "y":2}, + {"label":"L24", "x":4.75, "y":2}, + {"label":"L25", "x":5.75, "y":2}, + + {"label":"R21", "x":7.75, "y":2}, + {"label":"R22", "x":8.75, "y":2}, + {"label":"R23", "x":9.75, "y":2}, + {"label":"R24", "x":10.75, "y":2}, + {"label":"R25", "x":11.75, "y":2}, + {"label":"R26", "x":12.75, "y":2}, + {"label":"R27", "x":13.75, "y":2, "w":2.25}, + + {"label":"L31", "x":0, "y":3, "w":2.25}, + {"label":"L32", "x":2.25, "y":3}, + {"label":"L33", "x":3.25, "y":3}, + {"label":"L34", "x":4.25, "y":3}, + {"label":"L35", "x":5.25, "y":3}, + {"label":"L36", "x":6.25, "y":3}, + + {"label":"R31", "x":8.25, "y":3}, + {"label":"R32", "x":9.25, "y":3}, + {"label":"R33", "x":10.25, "y":3}, + {"label":"R34", "x":11.25, "y":3}, + {"label":"R35", "x":12.25, "y":3}, + {"label":"R36", "x":13.25, "y":3, "w":2.75}, + + {"label":"L40", "x":0, "y":4, "w":1.5}, + {"label":"L42", "x":2.5, "y":4, "w":1.5}, + {"label":"L43", "x":4, "y":4, "w":2.75}, + {"label":"L44", "x":6.75, "y":4}, + + {"label":"R43", "x":8.75, "y":4}, + {"label":"R44", "x":9.75, "y":4, "w":2.25}, + {"label":"R45", "x":12, "y":4, "w":1.5}, + {"label":"R47", "x":14.5, "y":4, "w":1.5} ] } } -}
\ No newline at end of file +} diff --git a/keyboards/handwired/qc60/keymaps/default/keymap.c b/keyboards/handwired/qc60/keymaps/default/keymap.c index bafaf5058e..88062d4ed4 100644 --- a/keyboards/handwired/qc60/keymaps/default/keymap.c +++ b/keyboards/handwired/qc60/keymaps/default/keymap.c @@ -24,9 +24,6 @@ extern keymap_config_t keymap_config; // entirely and just use numbers. #define _BASE 0 -#define _______ KC_TRNS -#define XXXXXXX KC_NO - const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [_BASE] = LAYOUT_ansi_default( 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_EQL, KC_BSPC, \ diff --git a/keyboards/handwired/qc60/keymaps/wntrmln/keymap.c b/keyboards/handwired/qc60/keymaps/wntrmln/keymap.c index f99635d531..f024ddb4b9 100644 --- a/keyboards/handwired/qc60/keymaps/wntrmln/keymap.c +++ b/keyboards/handwired/qc60/keymaps/wntrmln/keymap.c @@ -25,9 +25,6 @@ extern keymap_config_t keymap_config; #define _BASE 0 #define _FN 1 -#define _______ KC_TRNS -#define XXXXXXX KC_NO - #define FN MO(_FN) const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { diff --git a/keyboards/handwired/qc60/proto/proto.h b/keyboards/handwired/qc60/proto/proto.h index 191e8150a7..7e7755d0e2 100644 --- a/keyboards/handwired/qc60/proto/proto.h +++ b/keyboards/handwired/qc60/proto/proto.h @@ -14,8 +14,7 @@ * along with this program. If not, see <http://www.gnu.org/licenses/>. */ -#ifndef PROTO_H -#define PROTO_H +#pragma once #include "qc60.h" @@ -26,10 +25,10 @@ /* Split Backspace * {R07, XXX, R05, R04, R03, R02, R01, R00} - * + * * Split Right Shift * {R37, R36, R35, R34, R33, R32, R31, XXX} - * + * * Split Left Shift * {L30, L31, L32, L33, L34, L35, L36, XXX} * @@ -101,14 +100,14 @@ L00, L01, L02, L03, L04, L05, L06, R00, R01, R02, R03, R04, R05, R07, \ L10, L11, L12, L13, L14, L15, R10, R11, R12, R13, R14, R15, R16, \ L20, L21, L22, L23, L24, L25, R21, R22, R23, R24, R25, R26, R17, R27, \ - L31, L32, L33, L34, L35, L36, R31, R32, R33, R34, R35, R36, \ + L30, L31, L32, L33, L34, L35, L36, R31, R32, R33, R34, R35, R36, \ L40, L41, L42, L43, L44, R43, R44, R42, R45, R46, R47 \ ) \ { \ {L00, L01, L02, L03, L04, L05, L06, XXX}, \ {L10, L11, L12, L13, L14, L15, XXX, XXX}, \ {L20, L21, L22, L23, L24, L25, XXX, XXX}, \ - {XXX, L31, L32, L33, L34, L35, L36, XXX}, \ + {L30, L31, L32, L33, L34, L35, L36, XXX}, \ {L40, L41, L42, L43, L44, XXX, XXX, XXX}, \ {R07, XXX, R05, R04, R03, R02, R01, R00}, \ {R17, R16, R15, R14, R13, R12, R11, R10}, \ @@ -118,17 +117,17 @@ } #define LAYOUT_iso_alt( \ - L00, L01, L02, L03, L04, L05, L06, R00, R01, R02, R03, R04, R05, R07, \ - L10, L11, L12, L13, L14, L15, R10, R11, R12, R13, R14, R15, R16, R17, \ - L20, L21, L22, L23, L24, L25, R21, R22, R23, R24, R25, R26, R27, \ - L31, L32, L33, L34, L35, L36, R31, R32, R33, R34, R35, R36, \ - L40, L41, L42, L43, L44, R43, R44, R45, R46, R47 \ + L00, L01, L02, L03, L04, L05, L06, R00, R01, R02, R03, R04, R05, R07, \ + L10, L11, L12, L13, L14, L15, R10, R11, R12, R13, R14, R15, R16, \ + L20, L21, L22, L23, L24, L25, R21, R22, R23, R24, R25, R26, R17, R27, \ + L30, L31, L32, L33, L34, L35, L36, R31, R32, R33, R34, R35, R36, \ + L40, L41, L42, L43, L44, R43, R44, R45, R46, R47 \ ) \ { \ {L00, L01, L02, L03, L04, L05, L06, XXX}, \ {L10, L11, L12, L13, L14, L15, XXX, XXX}, \ {L20, L21, L22, L23, L24, L25, XXX, XXX}, \ - {XXX, L31, L32, L33, L34, L35, L36, XXX}, \ + {L30, L31, L32, L33, L34, L35, L36, XXX}, \ {L40, L41, L42, L43, L44, XXX, XXX, XXX}, \ {R07, XXX, R05, R04, R03, R02, R01, R00}, \ {R17, R16, R15, R14, R13, R12, R11, R10}, \ @@ -196,6 +195,3 @@ {XXX, R36, R35, R34, R33, R32, R31, XXX}, \ {R47, XXX, R45, R44, R43, XXX, XXX, XXX}, \ } - - -#endif diff --git a/keyboards/handwired/reddot/info.json b/keyboards/handwired/reddot/info.json new file mode 100644 index 0000000000..1fcc8677e8 --- /dev/null +++ b/keyboards/handwired/reddot/info.json @@ -0,0 +1,108 @@ +{ + "keyboard_name": "handwired/reddot", + "url": "", + "maintainer": "qmk", + "width": 20.5, + "height": 5, + "layouts": { + "LAYOUT": { + "layout": [ + {"label":"k00 (Esc)", "x":0, "y":0}, + {"label":"k01 (F1)", "x":1, "y":0}, + {"label":"k02 (F2)", "x":2, "y":0}, + {"label":"k03 (F3)", "x":3, "y":0}, + {"label":"k04 (F4)", "x":4, "y":0}, + {"label":"k05 (F5)", "x":5, "y":0}, + {"label":"k06 (Tab)", "x":6, "y":0, "w":2}, + {"label":"k07 (Caps Lock)", "x":8, "y":0}, + {"label":"k08 (F6)", "x":9, "y":0}, + {"label":"k09 (F7)", "x":10, "y":0}, + {"label":"k0A (F8)", "x":11, "y":0}, + {"label":"k0B (F9)", "x":12, "y":0}, + {"label":"k0C (F10)", "x":13, "y":0}, + {"label":"k0D (F11)", "x":14, "y":0}, + {"label":"k0E (F12)", "x":15, "y":0}, + {"label":"k10 (Function)", "x":16.5, "y":0}, + {"label":"k11 (Keypad /)", "x":17.5, "y":0}, + {"label":"k12 (Keypad *)", "x":18.5, "y":0}, + {"label":"k13 (Keypad -)", "x":19.5, "y":0}, + + {"label":"k20 (Left Alt)", "x":0, "y":1}, + {"label":"k21 (1 / FR Ampersand)", "x":1, "y":1}, + {"label":"k22 (2 / FR É)", "x":2, "y":1}, + {"label":"k23 (3 / FR Quote)", "x":3, "y":1}, + {"label":"k24 (4 / FR Apostrophe)", "x":4, "y":1}, + {"label":"k25 (5 / FR Left Parenthesis)", "x":5, "y":1}, + {"label":"k26 (Backspace)", "x":6, "y":1, "w":2}, + {"label":"k27 (Delete)", "x":8, "y":1}, + {"label":"k28 (6 / FR Minus)", "x":9, "y":1}, + {"label":"k29 (7 / FR È)", "x":10, "y":1}, + {"label":"k2A (8 / FR Underscore)", "x":11, "y":1}, + {"label":"k2B (9 / FR Ç)", "x":12, "y":1}, + {"label":"k2C (0 / FR À)", "x":13, "y":1}, + {"label":"k2D (Minus / FR Right Parenthesis)", "x":14, "y":1}, + {"label":"k2E (Equals / FR Equals)", "x":15, "y":1}, + {"label":"k30 (Insert)", "x":16.5, "y":1}, + {"label":"k31 (Home)", "x":17.5, "y":1}, + {"label":"k32 (Page Up)", "x":18.5, "y":1}, + + {"label":"k40 (GUI)", "x":0, "y":2}, + {"label":"k41 (Q / FR A)", "x":1, "y":2}, + {"label":"k42 (W / FR Z)", "x":2, "y":2}, + {"label":"k43 (E)", "x":3, "y":2}, + {"label":"k44 (R)", "x":4, "y":2}, + {"label":"k45 (T)", "x":5, "y":2}, + {"label":"k46 (Shift)", "x":6, "y":2, "h":2}, + {"label":"k66 (Enter)", "x":7, "y":2, "h":2}, + {"label":"k47 (Enter)", "x":8, "y":2, "h":2}, + {"label":"k48 (Y)", "x":9, "y":2}, + {"label":"k49 (U)", "x":10, "y":2}, + {"label":"k4A (I)", "x":11, "y":2}, + {"label":"k4B (O)", "x":12, "y":2}, + {"label":"k4C (P)", "x":13, "y":2}, + {"label":"k4D (Left Bracket / FR Circumflex)", "x":14, "y":2}, + {"label":"k4E (Right Bracket / FR Dollar)", "x":15, "y":2}, + {"label":"k50 (Delete)", "x":16.5, "y":2}, + {"label":"k51 (End)", "x":17.5, "y":2}, + {"label":"k52 (Page Down)", "x":18.5, "y":2}, + {"label":"k53 (Keypad +)", "x":19.5, "y":1, "h":2}, + + {"label":"k60 (Ctrl)", "x":0, "y":3}, + {"label":"k61 (A / FR Q)", "x":1, "y":3}, + {"label":"k62 (S)", "x":2, "y":3}, + {"label":"k63 (D)", "x":3, "y":3}, + {"label":"k64 (F)", "x":4, "y":3}, + {"label":"k65 (G)", "x":5, "y":3}, + {"label":"k68 (H)", "x":9, "y":3}, + {"label":"k69 (J)", "x":10, "y":3}, + {"label":"k6A (K)", "x":11, "y":3}, + {"label":"k6B (L)", "x":12, "y":3}, + {"label":"k6C (Semicolon / FR M)", "x":13, "y":3}, + {"label":"k6D (Quote / FR Ù)", "x":14, "y":3}, + {"label":"k6E (ISO Hash / FR Asterisk)", "x":15, "y":3}, + {"label":"k70 (Keypad 1)", "x":16.5, "y":3}, + {"label":"k71 (Up)", "x":17.5, "y":3}, + {"label":"k72 (Keypad 3)", "x":18.5, "y":3}, + + {"label":"k80 (ISO Backslash / FR Less Than)", "x":0, "y":4}, + {"label":"k81 (Z / FR W)", "x":1, "y":4}, + {"label":"k82 (X)", "x":2, "y":4}, + {"label":"k83 (C)", "x":3, "y":4}, + {"label":"k84 (V)", "x":4, "y":4}, + {"label":"k85 (B)", "x":5, "y":4}, + {"label":"k86 (Space)", "x":6, "y":4, "w":2}, + {"label":"k88 (Space)", "x":8, "y":4, "w":2}, + {"label":"k89 (N)", "x":10, "y":4}, + {"label":"k8A (M / FR Comma)", "x":11, "y":4}, + {"label":"k8B (Comma / FR Semicolon)", "x":12, "y":4}, + {"label":"k8C (Period / Colon)", "x":13, "y":4}, + {"label":"k8D (Slash / FR Exclaim)", "x":14, "y":4}, + {"label":"k8E (Right Alt / FR AltGr)", "x":15, "y":4}, + {"label":"k90 (Left)", "x":16.5, "y":4}, + {"label":"k91 (Down)", "x":17.5, "y":4}, + {"label":"k92 (Right)", "x":18.5, "y":4}, + {"label":"k93 (Keypad Enter)", "x":19.5, "y":3, "h":2} + ] + } + } +} diff --git a/keyboards/handwired/reddot/keymaps/default/keymap.c b/keyboards/handwired/reddot/keymaps/default/keymap.c index 73aeff2252..246a03b4d7 100755..100644 --- a/keyboards/handwired/reddot/keymaps/default/keymap.c +++ b/keyboards/handwired/reddot/keymaps/default/keymap.c @@ -1,29 +1,22 @@ -#include "reddot.h" -#include "../../../../../quantum/keymap_extras/keymap_french.h" +#include QMK_KEYBOARD_H +#include "keymap_french.h" const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { -[0] = KEYMAP( - KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_TAB, KC_CAPS, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_FN0, KC_KP_SLASH, KC_KP_ASTERISK, KC_KP_MINUS,\ - KC_LALT, FR_AMP, FR_EACU, FR_QUOT, FR_APOS, FR_LPRN, KC_BSPACE, KC_DELETE, FR_MINS, FR_EGRV, FR_UNDS, FR_CCED, FR_AGRV, FR_RPRN, FR_EQL, KC_INSERT, KC_HOME, KC_PGUP,\ - KC_LGUI, FR_A, FR_Z, KC_E, KC_R, KC_T, KC_LSFT, KC_ENT, KC_Y, KC_U, KC_I, KC_O, KC_P, FR_CIRC, FR_DLR, KC_DELETE, KC_END, KC_PGDOWN, KC_KP_PLUS,\ - KC_LCTL, FR_Q, KC_S, KC_D, KC_F, KC_G, KC_ENT, KC_H, KC_J, KC_K, KC_L, FR_M, FR_UGRV, FR_ASTR, KC_KP_1, KC_UP, KC_KP_3,\ - FR_LESS, FR_W, KC_X, KC_C, KC_V, KC_B, KC_SPACE, KC_SPACE, KC_N, FR_COMM, FR_SCLN, FR_COLN, FR_EXLM, KC_ALGR, KC_LEFT, KC_DOWN, KC_RIGHT, KC_KP_ENTER), - - [1] = KEYMAP( - KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_TAB, KC_CAPS, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_FN0, KC_KP_SLASH, KC_KP_ASTERISK, KC_KP_MINUS,\ - KC_LALT, FR_AMP, FR_EACU, FR_QUOT, FR_APOS, FR_LPRN, KC_BSPACE, KC_DELETE, FR_MINS, FR_EGRV, FR_UNDS, FR_CCED, FR_AGRV, FR_RPRN, FR_EQL, KC_7, KC_8, KC_9,\ - KC_LGUI, FR_A, FR_Z, KC_E, KC_R, KC_T, KC_LSFT, KC_ENT, KC_Y, KC_U, KC_I, KC_O, KC_P, FR_CIRC, FR_DLR, KC_4, KC_5, KC_6, KC_KP_PLUS,\ - KC_LCTL, FR_Q, KC_S, KC_D, KC_F, KC_G, KC_ENT, KC_H, KC_J, KC_K, KC_L, FR_M, FR_UGRV, FR_ASTR, KC_1, KC_2, KC_3,\ - FR_LESS, FR_W, KC_X, KC_C, KC_V, KC_B, KC_SPACE, KC_SPACE, KC_N, FR_COMM, FR_SCLN, FR_COLN, FR_EXLM, KC_ALGR, KC_LEFT, KC_DOWN, KC_RIGHT, KC_KP_ENTER), -}; + [0] = LAYOUT( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_TAB, KC_CAPS, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, TG(1), KC_PSLS, KC_PAST, KC_PMNS, \ + KC_LALT, FR_AMP, FR_EACU, FR_QUOT, FR_APOS, FR_LPRN, KC_BSPC, KC_DEL, FR_MINS, FR_EGRV, FR_UNDS, FR_CCED, FR_AGRV, FR_RPRN, FR_EQL, KC_INS, KC_HOME, KC_PGUP, \ + KC_LGUI, FR_A, FR_Z, KC_E, KC_R, KC_T, KC_LSFT, KC_ENT, KC_ENT, KC_Y, KC_U, KC_I, KC_O, KC_P, FR_CIRC, FR_DLR, KC_DEL, KC_END, KC_PGDN, KC_PPLS, \ + KC_LCTL, FR_Q, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, FR_M, FR_UGRV, FR_ASTR, KC_P1, KC_UP, KC_P3, \ + FR_LESS, FR_W, KC_X, KC_C, KC_V, KC_B, KC_SPC, KC_SPC, KC_N, FR_COMM, FR_SCLN, FR_COLN, FR_EXLM, KC_ALGR, KC_LEFT, KC_DOWN, KC_RGHT, KC_PENT \ + ), + [1] = LAYOUT( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_TAB, KC_CAPS, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, KC_PSLS, KC_PAST, KC_PMNS, \ + KC_LALT, FR_AMP, FR_EACU, FR_QUOT, FR_APOS, FR_LPRN, KC_BSPC, KC_DEL, FR_MINS, FR_EGRV, FR_UNDS, FR_CCED, FR_AGRV, FR_RPRN, FR_EQL, KC_7, KC_8, KC_9, \ + KC_LGUI, FR_A, FR_Z, KC_E, KC_R, KC_T, KC_LSFT, KC_ENT, KC_ENT, KC_Y, KC_U, KC_I, KC_O, KC_P, FR_CIRC, FR_DLR, KC_4, KC_5, KC_6, KC_PPLS, \ + KC_LCTL, FR_Q, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, FR_M, FR_UGRV, FR_ASTR, KC_1, KC_2, KC_3, \ + FR_LESS, FR_W, KC_X, KC_C, KC_V, KC_B, KC_SPC, KC_SPC, KC_N, FR_COMM, FR_SCLN, FR_COLN, FR_EXLM, KC_ALGR, KC_LEFT, KC_DOWN, KC_RGHT, KC_PENT \ + ), -const uint16_t PROGMEM fn_actions[] = { - ACTION_LAYER_TOGGLE(1), }; - -const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) { - return MACRO_NONE; -}; - diff --git a/keyboards/handwired/reddot/readme.md b/keyboards/handwired/reddot/readme.md index 8cdbb47d66..27c8b54d60 100755 --- a/keyboards/handwired/reddot/readme.md +++ b/keyboards/handwired/reddot/readme.md @@ -1,24 +1,14 @@ -## RedDot Specific Info ## +# RedDot +An ortholinear compact fullsize keyboard configured for French AZERTY layout. -## Quantum MK Firmware +- [Layout](http://www.keyboard-layout-editor.com/##@_plate:true%3B&@_sm=cherry&sb=cherry&st=MX1A-L1xx%3B&=Esc&=F1&=F2&=F3&=F4&=F5&_w:2%3B&=Tab&=Caps%20Lock&=F6&=F7&=F8&=F9&=F10&=F11&=F12&_x:0.5%3B&=Fn&=%2F%2F&=*&=-%3B&@=Alt&=1%0A%2F&&=2%0A%C3%A9%0A%0A~&=3%0A%22%0A%0A%23&=4%0A'%0A%0A%7B&=5%0A(%0A%0A%5B&_w:2%3B&=Back&=Del&=6%0A-%0A%0A%7C&=7%0A%C3%A8%0A%0A%60&=8%0A%2F_%0A%0A%5C&=9%0A%C3%A7%0A%0A%5E&=0%0A%C3%A0%0A%0A%2F@&=%C2%B0%0A)%0A%0A%5D&=+%0A%2F=%0A%0A%7D&_x:0.5%3B&=Insert&=Home&=Page%20Up&_h:2%3B&=+%3B&@=Win&=A&=Z&=E&=R&=T&_h:2%3B&=Shift&_h:2%3B&=Enter&_h:2%3B&=Enter&=Y&=U&=I&=O&=P&=%C2%A8%0A%5E&=%C2%A3%0A$&_x:0.5%3B&=Delete&=End&=Page%20Down%3B&@=Ctrl&=Q&=S&=D&=F&=G&_x:3%3B&=H&=J&=K&=L&=M&=%25%0A%C3%B9&=%C2%B5%0A*&_x:0.5%3B&=1%0AEnd&=Up&=3%0APgDn&_h:2%3B&=Enter%3B&@=%3E%0A%3C&=W&=X&=C&=V&=B&_w:2%3B&=Space&_w:2%3B&=Space&=N&=%3F%0A,&=.%0A%2F%3B&=%2F%2F%0A%2F:&=%C2%A7%0A!&=Alt%20Gr&_x:0.5%3B&=Left&=Down&=Right) -For the full Quantum feature list, see [the parent README.md](/readme.md). +Keyboard Maintainer: [The QMK Community](https://github.com/qmk) +Hardware Supported: RedDot handwired -## Building +Make example for this keyboard (after setting up your build environment): -Download or clone the whole firmware and navigate to the keyboard/reddot folder. Once your dev env is setup, you'll be able to type `make` to generate your .hex - you can then use the Teensy Loader to program your .hex file. + make handwired/reddot:default -Depending on which keymap you would like to use, you will have to compile slightly differently. - -### Default -To build with the default keymap, simply run `make`. - -### Other Keymaps -Several version of keymap are available in advance but you are recommended to define your favorite layout yourself. To define your own keymap create file named `<name>.c` and see keymap document (you can find in top README.md) and existent keymap files. - -To build the firmware binary hex file with a keymap just do `make` with `KEYMAP` option like: -``` -$ make KEYMAP=[default|jack|<name>] -``` -Keymaps follow the format **__\<name\>.c__** and are stored in the `keymaps` folder. +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). diff --git a/keyboards/handwired/reddot/reddot.h b/keyboards/handwired/reddot/reddot.h index f0c4be5571..a763f2ddc3 100755 --- a/keyboards/handwired/reddot/reddot.h +++ b/keyboards/handwired/reddot/reddot.h @@ -1,20 +1,17 @@ -#ifndef REDDOT_H -#define REDDOT_H +#pragma once #include "quantum.h" -#define KEYMAP( \ - k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E, k10, k11, k12, k13, \ - k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, k2E, k30, k31, k32, \ - k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4A, k4B, k4C, k4D, k4E, k50, k51, k52, k53, \ - k60, k61, k62, k63, k64, k65, k66, k68, k69, k6A, k6B, k6C, k6D, k6E, k70, k71, k72, \ - k80, k81, k82, k83, k84, k85, k86, k88, k89, k8A, k8B, k8C, k8D, k8E, k90, k91, k92, k93\ +#define LAYOUT( \ + k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E, k10, k11, k12, k13, \ + k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, k2E, k30, k31, k32, \ + k40, k41, k42, k43, k44, k45, k46, k66, k47, k48, k49, k4A, k4B, k4C, k4D, k4E, k50, k51, k52, k53, \ + k60, k61, k62, k63, k64, k65, k68, k69, k6A, k6B, k6C, k6D, k6E, k70, k71, k72, \ + k80, k81, k82, k83, k84, k85, k86, k88, k89, k8A, k8B, k8C, k8D, k8E, k90, k91, k92, k93 \ ) { \ - { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E, k10, k11, k12, k13 }, \ - { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, k2E, k30, k31, k32, KC_NO }, \ - { k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4A, k4B, k4C, k4D, k4E, k50, k51, k52, k53 }, \ - { k60, k61, k62, k63, k64, k65, k66, KC_NO, k68, k69, k6A, k6B, k6C, k6D, k6E, k70, k71, k72, KC_NO }, \ - { k80, k81, k82, k83, k84, k85, k86, KC_NO, k88, k89, k8A, k8B, k8C, k8D, k8E, k90, k91, k92, k93 } \ + { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E, k10, k11, k12, k13 }, \ + { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, k2E, k30, k31, k32, KC_NO }, \ + { k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4A, k4B, k4C, k4D, k4E, k50, k51, k52, k53 }, \ + { k60, k61, k62, k63, k64, k65, k66, KC_NO, k68, k69, k6A, k6B, k6C, k6D, k6E, k70, k71, k72, KC_NO }, \ + { k80, k81, k82, k83, k84, k85, k86, KC_NO, k88, k89, k8A, k8B, k8C, k8D, k8E, k90, k91, k92, k93 } \ } - -#endif diff --git a/keyboards/handwired/retro_refit/info.json b/keyboards/handwired/retro_refit/info.json new file mode 100644 index 0000000000..44ae97cd12 --- /dev/null +++ b/keyboards/handwired/retro_refit/info.json @@ -0,0 +1,95 @@ +{ + "keyboard_name": "handwired/retro_refit", + "url": "", + "maintainer": "qmk", + "width": 15.5, + "height": 6.5, + "layouts": { + "LAYOUT": { + "key_count": 81, + "layout": [ + {"label":"Esc", "x":0, "y":0}, + {"label":"F1", "x":1, "y":0}, + {"label":"F2", "x":2, "y":0}, + {"label":"F3", "x":3, "y":0}, + {"label":"F4", "x":4, "y":0}, + {"label":"F5", "x":5, "y":0}, + {"label":"F6", "x":6, "y":0}, + {"label":"F7", "x":7, "y":0}, + {"label":"F8", "x":8, "y":0}, + {"label":"F9", "x":9, "y":0}, + {"label":"F10", "x":10, "y":0}, + {"label":"Num Lock", "x":11.5, "y":0}, + {"label":"Scroll Lock", "x":12.5, "y":0}, + {"label":"Print Screen", "x":13.5, "y":0}, + {"label":"Pause", "x":14.5, "y":0}, + {"label":"`", "x":0, "y":1.5}, + {"label":"1", "x":1, "y":1.5}, + {"label":"2", "x":2, "y":1.5}, + {"label":"3", "x":3, "y":1.5}, + {"label":"4", "x":4, "y":1.5}, + {"label":"5", "x":5, "y":1.5}, + {"label":"6", "x":6, "y":1.5}, + {"label":"7", "x":7, "y":1.5}, + {"label":"8", "x":8, "y":1.5}, + {"label":"9", "x":9, "y":1.5}, + {"label":"0", "x":10, "y":1.5}, + {"label":"-", "x":11, "y":1.5}, + {"label":"=", "x":12, "y":1.5}, + {"label":"Backspace", "x":13, "y":1.5, "w":1.5}, + {"label":"Home", "x":14.5, "y":1.5}, + {"label":"Tab", "x":0, "y":2.5, "w":1.5}, + {"label":"Q", "x":1.5, "y":2.5}, + {"label":"W", "x":2.5, "y":2.5}, + {"label":"E", "x":3.5, "y":2.5}, + {"label":"R", "x":4.5, "y":2.5}, + {"label":"T", "x":5.5, "y":2.5}, + {"label":"Y", "x":6.5, "y":2.5}, + {"label":"U", "x":7.5, "y":2.5}, + {"label":"I", "x":8.5, "y":2.5}, + {"label":"O", "x":9.5, "y":2.5}, + {"label":"P", "x":10.5, "y":2.5}, + {"label":"[", "x":11.5, "y":2.5}, + {"label":"]", "x":12.5, "y":2.5}, + {"label":"Page Up", "x":14.5, "y":2.5}, + {"label":"Ctrl", "x":0, "y":3.5, "w":1.75}, + {"label":"A", "x":1.75, "y":3.5}, + {"label":"S", "x":2.75, "y":3.5}, + {"label":"D", "x":3.75, "y":3.5}, + {"label":"F", "x":4.75, "y":3.5}, + {"label":"G", "x":5.75, "y":3.5}, + {"label":"H", "x":6.75, "y":3.5}, + {"label":"J", "x":7.75, "y":3.5}, + {"label":"K", "x":8.75, "y":3.5}, + {"label":"L", "x":9.75, "y":3.5}, + {"label":";", "x":10.75, "y":3.5}, + {"label":"'", "x":11.75, "y":3.5}, + {"label":"Enter", "x":12.75, "y":3.5, "w":1.75}, + {"label":"Page Down", "x":14.5, "y":3.5}, + {"label":"Shift", "x":0, "y":4.5, "w":2.25}, + {"label":"Z", "x":2.25, "y":4.5}, + {"label":"X", "x":3.25, "y":4.5}, + {"label":"C", "x":4.25, "y":4.5}, + {"label":"V", "x":5.25, "y":4.5}, + {"label":"B", "x":6.25, "y":4.5}, + {"label":"N", "x":7.25, "y":4.5}, + {"label":"M", "x":8.25, "y":4.5}, + {"label":",", "x":9.25, "y":4.5}, + {"label":".", "x":10.25, "y":4.5}, + {"label":"/", "x":11.25, "y":4.5}, + {"label":"Shift", "x":12.25, "y":4.5, "w":1.25}, + {"label":"Up", "x":13.5, "y":4.5}, + {"label":"End", "x":14.5, "y":4.5}, + {"label":"Alt", "x":0, "y":5.5, "w":1.25}, + {"label":"Caps Lock", "x":1.25, "y":5.5, "w":1.25}, + {"label":"\\", "x":2.5, "y":5.5}, + {"label":"Space", "x":3.5, "y":5.5, "w":7}, + {"label":"Insert", "x":10.5, "y":5.5}, + {"label":"Delete", "x":11.5, "y":5.5}, + {"label":"Left", "x":12.5, "y":5.5}, + {"label":"Down", "x":13.5, "y":5.5}, + {"label":"Right", "x":14.5, "y":5.5} + ] + } + } +} diff --git a/keyboards/handwired/retro_refit/keymaps/default/keymap.c b/keyboards/handwired/retro_refit/keymaps/default/keymap.c index 598541a05b..2f9f28478e 100644 --- a/keyboards/handwired/retro_refit/keymaps/default/keymap.c +++ b/keyboards/handwired/retro_refit/keymaps/default/keymap.c @@ -1,31 +1,12 @@ - -#include "retro_refit.h" +#include QMK_KEYBOARD_H const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { -[0] = - KEYMAP( ESC, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, NLCK, SLCK, PSCR, PAUS, \ - GRV, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, MINS, EQL, BSPC, HOME, \ - TAB, Q, W, E, R, T, Y, U, I, O, P, LBRC, RBRC, PGUP, \ - BSLS, A, S, D, F, G, H, J, K, L, SCLN, QUOT, ENT, PGDN, \ - LSFT, Z, X, C, V, B, N, M, COMM, DOT, SLSH, RSFT, UP, END, \ - LCTL, LGUI, LALT, SPC, INS, DEL, LEFT, DOWN, RGHT), -}; - -const uint16_t PROGMEM fn_actions[] = { - -}; - -const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) -{ - // MACRODOWN only works in this function - switch(id) { - case 0: - if (record->event.pressed) { - register_code(KC_RSFT); - } else { - unregister_code(KC_RSFT); - } - break; - } - return MACRO_NONE; + [0] = LAYOUT( \ + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_NLCK, KC_SLCK, KC_PSCR, KC_PAUS, \ + 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_BSLS, 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_PGDN, \ + KC_LSFT, 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_INS, KC_DEL, KC_LEFT, KC_DOWN, KC_RGHT \ + ), }; diff --git a/keyboards/handwired/retro_refit/readme.md b/keyboards/handwired/retro_refit/readme.md index 9f10edf9fc..8dfca7b10b 100644 --- a/keyboards/handwired/retro_refit/readme.md +++ b/keyboards/handwired/retro_refit/readme.md @@ -1,60 +1,42 @@ -retro_refit keyboard firmware -====================== - -## Keyboard Info +# retro_refit The retro refit keyboard used a Teensy to replace the original controller on a 386 "laptop". -http://imgur.com/a/08Fyj +[Image Gallery](https://imgur.com/a/08Fyj) -This keyboard uses a KEYMAP macro that is a great example of using a non-standard row-column matrix. The keyboard in question had 11 rows and 8 columns, but the rows were not all horizontal, and the columns were not all vertical. For example, row 2 contained "Print Screen", "N", "M", ",", ".", "/", "Right Shift", and"Left Alt". Column 0 contained "F6", "7", "O", "'", "Q", "D", "B", "Left Alt", "Up Arrow", and "Down Arrow". +This keyboard uses a LAYOUT macro that is a great example of using a non-standard row-column matrix. The keyboard in question had 11 rows and 8 columns, but the rows were not all horizontal, and the columns were not all vertical. For example, row 2 contained "Print Screen", "N", "M", ",", ".", "/", "Right Shift", and"Left Alt". Column 0 contained "F6", "7", "O", "'", "Q", "D", "B", "Left Alt", "Up Arrow", and "Down Arrow". -The macro makes programming the keys easier and in a more straight-forward manner because it realigns the keys into a 6x15 sensible keyboard layout instead of the obtuse 11x8 matrix. Each Kxy corrisponds to a key in row x column y. +The macro makes programming the keys easier and in a more straight-forward manner because it realigns the keys into a 6x15 sensible keyboard layout instead of the obtuse 11x8 matrix. Each Kxy corresponds to a key in row x column y. ``` -#define KEYMAP( \ - K77, K05, K04, K03, K02, K01, K00, KA7, KA6, KA5, KA4, KA3, KA2, K11, K94, \ - K27, K76, K75, K74, K73, K72, K71, K70, K67, K66, K65, K64, K63, K62, KA1, \ - K61, K60, K57, K56, K55, K54, K53, K52, K51, K50, K47, K46, K45, K97, \ - K43, K42, K41, K40, K37, K36, K35, K34, K33, K32, K31, K30, K44, K87, \ - K26, K24, K23, K22, K21, K20, K17, K16, K15, K14, K13, K12, KA0, K91, \ - K10, K06, K25, K07, K86, K85, K95, K90, K93 \ +#define LAYOUT( \ + K77, K05, K04, K03, K02, K01, K00, KA7, KA6, KA5, KA4, KA3, KA2, K11, K94, \ + K27, K76, K75, K74, K73, K72, K71, K70, K67, K66, K65, K64, K63, K62, KA1, \ + K61, K60, K57, K56, K55, K54, K53, K52, K51, K50, K47, K46, K45, K97, \ + K43, K42, K41, K40, K37, K36, K35, K34, K33, K32, K31, K30, K44, K87, \ + K26, K24, K23, K22, K21, K20, K17, K16, K15, K14, K13, K12, KA0, K91, \ + K10, K06, K25, K07, K86, K85, K95, K90, K93 \ ) { \ -{ KC_##K00, KC_##K01, KC_##K02, KC_##K03, KC_##K04, KC_##K05, KC_##K06, KC_##K07, }, \ -{ KC_##K10, KC_##K11, KC_##K12, KC_##K13, KC_##K14, KC_##K15, KC_##K16, KC_##K17, }, \ -{ KC_##K20, KC_##K21, KC_##K22, KC_##K23, KC_##K24, KC_##K25, KC_##K26, KC_##K27, }, \ -{ KC_##K30, KC_##K31, KC_##K32, KC_##K33, KC_##K34, KC_##K35, KC_##K36, KC_##K37, }, \ -{ KC_##K40, KC_##K41, KC_##K42, KC_##K43, KC_##K44, KC_##K45, KC_##K46, KC_##K47, }, \ -{ KC_##K50, KC_##K51, KC_##K52, KC_##K53, KC_##K54, KC_##K55, KC_##K56, KC_##K57, }, \ -{ KC_##K60, KC_##K61, KC_##K62, KC_##K63, KC_##K64, KC_##K65, KC_##K66, KC_##K67, }, \ -{ KC_##K70, KC_##K71, KC_##K72, KC_##K73, KC_##K74, KC_##K75, KC_##K76, KC_##K77, }, \ -{ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_##K85, KC_##K86, KC_##K87, }, \ -{ KC_##K90, KC_##K91, KC_NO, KC_##K93, KC_##K94, KC_##K95, KC_NO, KC_##K97, }, \ -{ KC_##KA0, KC_##KA1, KC_##KA2, KC_##KA3, KC_##KA4, KC_##KA5, KC_##KA6, KC_##KA7, } \ + { K00, K01, K02, K03, K04, K05, K06, K07 }, \ + { K10, K11, K12, K13, K14, K15, K16, K17 }, \ + { K20, K21, K22, K23, K24, K25, K26, K27 }, \ + { K30, K31, K32, K33, K34, K35, K36, K37 }, \ + { K40, K41, K42, K43, K44, K45, K46, K47 }, \ + { K50, K51, K52, K53, K54, K55, K56, K57 }, \ + { K60, K61, K62, K63, K64, K65, K66, K67 }, \ + { K70, K71, K72, K73, K74, K75, K76, K77 }, \ + { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, K85, K86, K87 }, \ + { K90, K91, KC_NO, K93, K94, K95, KC_NO, K97 }, \ + { KA0, KA1, KA2, KA3, KA4, KA5, KA6, KA7 } \ } ``` -## Quantum MK Firmware - -For the full Quantum feature list, see [the parent readme.md](/readme.md). - -## Building - -Download or clone the whole firmware and navigate to the keyboards/retro_refit folder. Once your dev env is setup, you'll be able to type `make` to generate your .hex - you can then use the Teensy Loader to program your .hex file. - -Depending on which keymap you would like to use, you will have to compile slightly differently. +Keyboard Maintainer: [The QMK Community](https://github.com/qmk) +Hardware Supported: Leading Edge D3 386 keyboard, Teensy -### Default -To build with the default keymap, simply run `make default`. +Make example for this keyboard (after setting up your build environment): -### Other Keymaps -Several version of keymap are available in advance but you are recommended to define your favorite layout yourself. To define your own keymap create file named `<name>.c` and see keymap document (you can find in top readme.md) and existent keymap files. - -To build the firmware binary hex file with a keymap just do `make` with a keymap like this: - -``` -$ make [default|jack|<name>] -``` + make handwired/retro_refit:default -Keymaps follow the format **__\<name\>.c__** and are stored in the `keymaps` folder.
\ No newline at end of file +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). diff --git a/keyboards/handwired/retro_refit/retro_refit.h b/keyboards/handwired/retro_refit/retro_refit.h index 109acdc399..ad1c567a84 100644 --- a/keyboards/handwired/retro_refit/retro_refit.h +++ b/keyboards/handwired/retro_refit/retro_refit.h @@ -1,38 +1,35 @@ -#ifndef RETRO_REFIT_H -#define RETRO_REFIT_H +#pragma once #include "quantum.h" -// This macro is an example of using a non-standard row-column matrix. The -// keyboard in question had 11 rows and 8 columns, but the rows were not all -// horizontal, and the columns were not all vertical. For example, row 2 +// This macro is an example of using a non-standard row-column matrix. The +// keyboard in question had 11 rows and 8 columns, but the rows were not all +// horizontal, and the columns were not all vertical. For example, row 2 // contained "Print Screen", "N", "M", ",", ".", "/", "Right Shift", and -// "Left Alt". Column 0 contained "F6", "7", "O", "'", "Q", "D", "B", +// "Left Alt". Column 0 contained "F6", "7", "O", "'", "Q", "D", "B", // "Left Alt", "Up Arrow", and "Down Arrow". // // The macro makes programming the keys easier and in a more straight-forward -// manner because it realigns the keys into a 6x15 sensible keyboard layout +// manner because it realigns the keys into a 6x15 sensible keyboard layout // instead of the obtuse 11x8 matrix. -#define KEYMAP( \ - K77, K05, K04, K03, K02, K01, K00, KA7, KA6, KA5, KA4, KA3, KA2, K11, K94, \ - K27, K76, K75, K74, K73, K72, K71, K70, K67, K66, K65, K64, K63, K62, KA1, \ - K61, K60, K57, K56, K55, K54, K53, K52, K51, K50, K47, K46, K45, K97, \ - K43, K42, K41, K40, K37, K36, K35, K34, K33, K32, K31, K30, K44, K87, \ - K26, K24, K23, K22, K21, K20, K17, K16, K15, K14, K13, K12, KA0, K91, \ - K10, K06, K25, K07, K86, K85, K95, K90, K93 \ +#define LAYOUT( \ + K77, K05, K04, K03, K02, K01, K00, KA7, KA6, KA5, KA4, KA3, KA2, K11, K94, \ + K27, K76, K75, K74, K73, K72, K71, K70, K67, K66, K65, K64, K63, K62, KA1, \ + K61, K60, K57, K56, K55, K54, K53, K52, K51, K50, K47, K46, K45, K97, \ + K43, K42, K41, K40, K37, K36, K35, K34, K33, K32, K31, K30, K44, K87, \ + K26, K24, K23, K22, K21, K20, K17, K16, K15, K14, K13, K12, KA0, K91, \ + K10, K06, K25, K07, K86, K85, K95, K90, K93 \ ) { \ -{ KC_##K00, KC_##K01, KC_##K02, KC_##K03, KC_##K04, KC_##K05, KC_##K06, KC_##K07, }, \ -{ KC_##K10, KC_##K11, KC_##K12, KC_##K13, KC_##K14, KC_##K15, KC_##K16, KC_##K17, }, \ -{ KC_##K20, KC_##K21, KC_##K22, KC_##K23, KC_##K24, KC_##K25, KC_##K26, KC_##K27, }, \ -{ KC_##K30, KC_##K31, KC_##K32, KC_##K33, KC_##K34, KC_##K35, KC_##K36, KC_##K37, }, \ -{ KC_##K40, KC_##K41, KC_##K42, KC_##K43, KC_##K44, KC_##K45, KC_##K46, KC_##K47, }, \ -{ KC_##K50, KC_##K51, KC_##K52, KC_##K53, KC_##K54, KC_##K55, KC_##K56, KC_##K57, }, \ -{ KC_##K60, KC_##K61, KC_##K62, KC_##K63, KC_##K64, KC_##K65, KC_##K66, KC_##K67, }, \ -{ KC_##K70, KC_##K71, KC_##K72, KC_##K73, KC_##K74, KC_##K75, KC_##K76, KC_##K77, }, \ -{ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_##K85, KC_##K86, KC_##K87, }, \ -{ KC_##K90, KC_##K91, KC_NO, KC_##K93, KC_##K94, KC_##K95, KC_NO, KC_##K97, }, \ -{ KC_##KA0, KC_##KA1, KC_##KA2, KC_##KA3, KC_##KA4, KC_##KA5, KC_##KA6, KC_##KA7, } \ + { K00, K01, K02, K03, K04, K05, K06, K07 }, \ + { K10, K11, K12, K13, K14, K15, K16, K17 }, \ + { K20, K21, K22, K23, K24, K25, K26, K27 }, \ + { K30, K31, K32, K33, K34, K35, K36, K37 }, \ + { K40, K41, K42, K43, K44, K45, K46, K47 }, \ + { K50, K51, K52, K53, K54, K55, K56, K57 }, \ + { K60, K61, K62, K63, K64, K65, K66, K67 }, \ + { K70, K71, K72, K73, K74, K75, K76, K77 }, \ + { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, K85, K86, K87 }, \ + { K90, K91, KC_NO, K93, K94, K95, KC_NO, K97 }, \ + { KA0, KA1, KA2, KA3, KA4, KA5, KA6, KA7 } \ } - -#endif
\ No newline at end of file diff --git a/keyboards/handwired/rs60/README.md b/keyboards/handwired/rs60/README.md new file mode 100644 index 0000000000..07c967e276 --- /dev/null +++ b/keyboards/handwired/rs60/README.md @@ -0,0 +1,27 @@ +# rs60: Handwired Slim Preonic Clone + +I wanted a preonic layout but with a very low profile. As Jack is still working on the Preonic PCB for Kailh Choc switches, I figured I could try to handwire one myself. It's my first custom keyboard, so I had a lot to learn. + +First I designed the case in fusion 360. I wanted to build it using acrylic, constrained myself to standard acrylic sheet thickness. + + + +You can download the model [here](https://a360.co/2OqiKLm). + +To test my design I 3D printed the parts. + + + +The result was encouraging, so I decided to build a prototype out of the printed plates using Kailh Choc brown switches. I tried to make the handwiring job as flat as possible so it can fit in my design. + + + + +I designed switch plate and the middle plates so that they would be glued together. The middle plate has inserts to attach the bottom plate using m8 screws. + + + +The end result is not too bad, but there is a few things I would do differently. Gluing 3D printed plates wasn't a good idea. The switch layer is so thin, that it bends when all the switches are slotted. As a result, the keyboard is not entirely flat. I will replace the bottom plate by a metal one so I get more weight and rigidity. + +Even with acrylic, I think I will have the same issue. I might switch to screws + bolts that go all the way through. + diff --git a/keyboards/handwired/rs60/config.h b/keyboards/handwired/rs60/config.h new file mode 100644 index 0000000000..371150a79a --- /dev/null +++ b/keyboards/handwired/rs60/config.h @@ -0,0 +1,47 @@ +/* +Copyright 2018 QMK Contributors + +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 + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0xFEED +#define PRODUCT_ID 0x4260 +#define DEVICE_VER 0x0001 +#define MANUFACTURER rs +#define PRODUCT rs60 +#define DESCRIPTION Preonic clone based on pro micro + +/* key matrix size */ +#define MATRIX_ROWS 5 +#define MATRIX_COLS 12 + +/* key matrix pins */ +#define MATRIX_ROW_PINS { B5, B6, B4, B2, E6 } +#define MATRIX_COL_PINS { C6, D4, D0, D1, D2, D3, F4, F5, F6, F7, B1, B3} +#define UNUSED_PINS { } + +#define QMK_ESC_OUTPUT C6 +#define QMK_ESC_INPUT B4 +#define QMK_LED B0 +// #define QMK_SPEAKER C6 + +/* COL2ROW or ROW2COL */ +#define DIODE_DIRECTION COL2ROW + +/* key combination for command */ +#define IS_COMMAND() ( \ + false \ +) diff --git a/keyboards/handwired/rs60/keymaps/default/keymap.c b/keyboards/handwired/rs60/keymaps/default/keymap.c new file mode 100644 index 0000000000..9fea769d05 --- /dev/null +++ b/keyboards/handwired/rs60/keymaps/default/keymap.c @@ -0,0 +1,207 @@ +/* Copyright 2015-2017 Jack Humbert + * + * 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 layers { + _QWERTY, + _COLEMAK, + _DVORAK, + _LOWER, + _RAISE, + _ADJUST +}; + +enum keycodes { + QWERTY = SAFE_RANGE, + COLEMAK, + DVORAK, + LOWER, + RAISE, +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + +/* Qwerty + * ,-----------------------------------------------------------------------------------. + * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Tab | Q | W | E | R | T | Y | U | I | O | P | Del | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | Esc | A | S | D | F | G | H | J | K | L | ; | " | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | Shift| Z | X | C | V | B | N | M | , | . | / |Enter | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Brite| Ctrl | Alt | GUI |Lower | Space |Raise | Left | Down | Up |Right | + * `-----------------------------------------------------------------------------------' + */ +[_QWERTY] = LAYOUT( \ + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, 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_DEL, \ + KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, \ + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT, \ + _______, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT \ +), + +/* Colemak + * ,-----------------------------------------------------------------------------------. + * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Tab | Q | W | F | P | G | J | L | U | Y | ; | Del | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | Esc | A | R | S | T | D | H | N | E | I | O | " | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | Shift| Z | X | C | V | B | K | M | , | . | / |Enter | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Brite| Ctrl | Alt | GUI |Lower | Space |Raise | Left | Down | Up |Right | + * `-----------------------------------------------------------------------------------' + */ +[_COLEMAK] = LAYOUT( \ + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, \ + KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_DEL, \ + KC_ESC, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT, \ + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT, \ + _______, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT \ +), + +/* Dvorak + * ,-----------------------------------------------------------------------------------. + * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Tab | " | , | . | P | Y | F | G | C | R | L | Del | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | Esc | A | O | E | U | I | D | H | T | N | S | / | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | Shift| ; | Q | J | K | X | B | M | W | V | Z |Enter | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Brite| Ctrl | Alt | GUI |Lower | Space |Raise | Left | Down | Up |Right | + * `-----------------------------------------------------------------------------------' + */ +[_DVORAK] = LAYOUT( \ + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, \ + KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_DEL, \ + KC_ESC, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_SLSH, \ + KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_ENT, \ + _______, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT \ +), + +/* Lower + * ,-----------------------------------------------------------------------------------. + * | ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | Bksp | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | Del | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | Del | F1 | F2 | F3 | F4 | F5 | F6 | _ | + | { | } | | | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | | F7 | F8 | F9 | F10 | F11 | F12 |ISO ~ |ISO | | | | | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | | | | | | | Next | Vol- | Vol+ | Play | + * `-----------------------------------------------------------------------------------' + */ +[_LOWER] = LAYOUT( \ + KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC, \ + KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_DEL, \ + KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE, \ + _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,S(KC_NUHS),S(KC_NUBS),KC_HOME, KC_END, _______, \ + _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY \ +), + +/* Raise + * ,-----------------------------------------------------------------------------------. + * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Del | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | Del | F1 | F2 | F3 | F4 | F5 | F6 | - | = | [ | ] | \ | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | | F7 | F8 | F9 | F10 | F11 | F12 |ISO # |ISO / | | | | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | | | | | | | Next | Vol- | Vol+ | Play | + * `-----------------------------------------------------------------------------------' + */ +[_RAISE] = LAYOUT( \ + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, \ + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL, \ + KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS, \ + _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_NUHS, KC_NUBS, KC_PGUP, KC_PGDN, _______, \ + _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY \ +), + +/* Adjust (Lower + Raise) + * ,-----------------------------------------------------------------------------------. + * | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | Reset| | | | | | | | | | Del | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | | | |Aud on|AudOff|AGnorm|AGswap|Qwerty|Colemk|Dvorak| | | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | |Voice-|Voice+|Mus on|MusOff|MidiOn|MidOff| | | | | | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | | | | | | | | | | | + * `-----------------------------------------------------------------------------------' + */ +[_ADJUST] = LAYOUT( \ + KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, \ + _______, RESET, DEBUG, _______, _______, _______, _______, TERM_ON, TERM_OFF,_______, _______, KC_DEL, \ + _______, _______, _______, _______, _______, AG_NORM, AG_SWAP, QWERTY, COLEMAK, DVORAK, _______, _______, \ + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \ + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \ +) +}; + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { + case QWERTY: + if (record->event.pressed) { + set_single_persistent_default_layer(_QWERTY); + } + return false; + break; + case COLEMAK: + if (record->event.pressed) { + set_single_persistent_default_layer(_COLEMAK); + } + return false; + break; + case DVORAK: + if (record->event.pressed) { + set_single_persistent_default_layer(_DVORAK); + } + return false; + break; + case LOWER: + if (record->event.pressed) { + layer_on(_LOWER); + update_tri_layer(_LOWER, _RAISE, _ADJUST); + } else { + layer_off(_LOWER); + update_tri_layer(_LOWER, _RAISE, _ADJUST); + } + return false; + break; + case RAISE: + if (record->event.pressed) { + layer_on(_RAISE); + update_tri_layer(_LOWER, _RAISE, _ADJUST); + } else { + layer_off(_RAISE); + update_tri_layer(_LOWER, _RAISE, _ADJUST); + } + return false; + break; + } + return true; +}; diff --git a/keyboards/handwired/rs60/keymaps/default/readme.md b/keyboards/handwired/rs60/keymaps/default/readme.md new file mode 100644 index 0000000000..e911968dd9 --- /dev/null +++ b/keyboards/handwired/rs60/keymaps/default/readme.md @@ -0,0 +1 @@ +# The default Preonic layout - largely based on the Planck's
\ No newline at end of file diff --git a/keyboards/handwired/rs60/rs60.c b/keyboards/handwired/rs60/rs60.c new file mode 100644 index 0000000000..f748740cbe --- /dev/null +++ b/keyboards/handwired/rs60/rs60.c @@ -0,0 +1,18 @@ +/* +Copyright 2018 QMK Community + +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 "rs60.h" diff --git a/keyboards/handwired/rs60/rs60.h b/keyboards/handwired/rs60/rs60.h new file mode 100644 index 0000000000..f2113f05c3 --- /dev/null +++ b/keyboards/handwired/rs60/rs60.h @@ -0,0 +1,36 @@ +/* +Copyright 2018 QMK Community + +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( \ + k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, \ + k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, \ + k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, \ + k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, \ + k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4a, k4b \ +) \ +{ \ + { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b }, \ + { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b }, \ + { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b }, \ + { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b }, \ + { k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4a, k4b } \ +} + +#define LAYOUT_ortho_5x12 LAYOUT diff --git a/keyboards/handwired/rs60/rules.mk b/keyboards/handwired/rs60/rules.mk new file mode 100644 index 0000000000..7b4ec69d0d --- /dev/null +++ b/keyboards/handwired/rs60/rules.mk @@ -0,0 +1,61 @@ +# MCU name +MCU = atmega32u4 + +# Processor frequency. +# This will define a symbol, F_CPU, in all source code files equal to the +# processor frequency in Hz. You can then use this symbol in your source code to +# calculate timings. Do NOT tack on a 'UL' at the end, this will be done +# automatically to create a 32-bit value in your source code. +# +# This will be an integer division of F_USB below, as it is sourced by +# F_USB after it has run through any CPU prescalers. Note that this value +# does not *change* the processor frequency - it should merely be updated to +# reflect the processor speed set externally so that the code can use accurate +# software delays. +F_CPU = 16000000 + +# +# LUFA specific +# +# Target architecture (see library "Board Types" documentation). +ARCH = AVR8 + +# Input clock frequency. +# This will define a symbol, F_USB, in all source code files equal to the +# input clock frequency (before any prescaling is performed) in Hz. This value may +# differ from F_CPU if prescaling is used on the latter, and is required as the +# raw input clock is fed directly to the PLL sections of the AVR for high speed +# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL' +# at the end, this will be done automatically to create a 32-bit value in your +# source code. +# +# If no clock division is performed on the input clock inside the AVR (via the +# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU. +F_USB = $(F_CPU) + +# Bootloader +BOOTLOADER = qmk-dfu + +# Interrupt driven control endpoint task(+60) +OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT + +LAYOUTS = ortho_5x12 + +# Boot Section Size in *bytes* +#OPT_DEFS += -DBOOTLOADER_SIZE=4096 + + +# Build Options +# comment out to disable the options. +# +BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) +MOUSEKEY_ENABLE = no # Mouse keys(+4700) +EXTRAKEY_ENABLE = no # Audio control and System control(+450) +CONSOLE_ENABLE = yes # Console for debug(+400) +COMMAND_ENABLE = no # Commands for debug and configuration +SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend +NKRO_ENABLE = no # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +BACKLIGHT_ENABLE = no # Custom backlighting code is used, so this should not be enabled +AUDIO_ENABLE = no # This can be enabled if a speaker is connected to the expansion port. Not compatible with RGBLIGHT below +RGBLIGHT_ENABLE = no # This can be enabled if a ws2812 strip is connected to the expansion port. + diff --git a/keyboards/handwired/terminus_mini/readme.md b/keyboards/handwired/terminus_mini/readme.md index 94249d6a96..5f0271bb40 100644 --- a/keyboards/handwired/terminus_mini/readme.md +++ b/keyboards/handwired/terminus_mini/readme.md @@ -10,4 +10,4 @@ Make example for this keyboard (after setting up your build environment): make handwired/terminus_mini:default -See [build environment setup](https://docs.qmk.fm/build_environment_setup.html) then the [make instructions](https://docs.qmk.fm/make_instructions.html) for more information.
\ No newline at end of file +See [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) then the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information.
\ No newline at end of file diff --git a/keyboards/handwired/traveller/keymaps/default/keymap.c b/keyboards/handwired/traveller/keymaps/default/keymap.c index 13d889ab8b..f7f08268f0 100644 --- a/keyboards/handwired/traveller/keymaps/default/keymap.c +++ b/keyboards/handwired/traveller/keymaps/default/keymap.c @@ -157,11 +157,8 @@ Right hand nav keys work pretty well chorded with the Right hand Hi Key const uint16_t PROGMEM fn_actions[] = { [_QW] = ACTION_LAYER_ON(_QW,ON_RELEASE), // return to QWERTY layer [_LW] = ACTION_LAYER_TAP_TOGGLE(_LW), // Turn on LW when holding, or tap 3 times to switch - [_HI] = ACTION_LAYER_TAP_TOGGLE(_HI), // Turn on LW when holding, or tap 3 times to switch [_NAV] = ACTION_LAYER_TOGGLE(_NAV), [_FKEYS] = ACTION_LAYER_TOGGLE(_FKEYS), - [_LWOUT] = ACTION_LAYER_OFF(_LW,ON_RELEASE), - [_HIOUT] = ACTION_LAYER_OFF(_HI,ON_RELEASE), // Functions [RGBLED_TOGGLE] = ACTION_FUNCTION(RGBLED_TOGGLE), diff --git a/keyboards/handwired/woodpad/keymaps/default/keymap.c b/keyboards/handwired/woodpad/keymaps/default/keymap.c index 1fa90ba919..70c05fc271 100644 --- a/keyboards/handwired/woodpad/keymaps/default/keymap.c +++ b/keyboards/handwired/woodpad/keymaps/default/keymap.c @@ -59,10 +59,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ), }; -const uint16_t PROGMEM fn_actions[] = { - -}; - void numlock_led_on(void) { PORTF |= (1<<7); } diff --git a/keyboards/handwired/xealous/debounce.c b/keyboards/handwired/xealous/debounce.c new file mode 100644 index 0000000000..65a99f27f2 --- /dev/null +++ b/keyboards/handwired/xealous/debounce.c @@ -0,0 +1,63 @@ +#include <string.h> +#include "config.h" +#include "matrix.h" +#include "timer.h" +#include "quantum.h" + +#ifndef DEBOUNCING_DELAY +# define DEBOUNCING_DELAY 5 +#endif + +//Debouncing counters +typedef uint8_t debounce_counter_t; +#define DEBOUNCE_COUNTER_MODULO 250 +#define DEBOUNCE_COUNTER_INACTIVE 251 + +static debounce_counter_t *debounce_counters; + +void debounce_init(uint8_t num_rows) +{ + debounce_counters = malloc(num_rows*MATRIX_COLS); + memset(debounce_counters, DEBOUNCE_COUNTER_INACTIVE, num_rows*MATRIX_COLS); +} + +void update_debounce_counters(uint8_t num_rows, uint8_t current_time) +{ + for (uint8_t row = 0; row < num_rows; row++) + { + for (uint8_t col = 0; col < MATRIX_COLS; col++) + { + if (debounce_counters[row*MATRIX_COLS + col] != DEBOUNCE_COUNTER_INACTIVE) + { + if (TIMER_DIFF(current_time, debounce_counters[row*MATRIX_COLS + col], DEBOUNCE_COUNTER_MODULO) >= DEBOUNCING_DELAY) { + debounce_counters[row*MATRIX_COLS + col] = DEBOUNCE_COUNTER_INACTIVE; + } + } + } + } +} + +void transfer_matrix_values(matrix_row_t raw[], matrix_row_t cooked[], uint8_t num_rows, uint8_t current_time) +{ + for (uint8_t row = 0; row < num_rows; row++) + { + matrix_row_t delta = raw[row] ^ cooked[row]; + + for (uint8_t col = 0; col < MATRIX_COLS; col++) + { + if (debounce_counters[row*MATRIX_COLS + col] == DEBOUNCE_COUNTER_INACTIVE && (delta & (1<<col))) + { + debounce_counters[row*MATRIX_COLS + col] = current_time; + cooked[row] ^= (1 << col); + } + } + } +} + +void debounce(matrix_row_t raw[], matrix_row_t cooked[], uint8_t num_rows, bool changed) +{ + uint8_t current_time = timer_read() % DEBOUNCE_COUNTER_MODULO; + + update_debounce_counters(num_rows, current_time); + transfer_matrix_values(raw, cooked, num_rows, current_time); +}
\ No newline at end of file diff --git a/keyboards/handwired/xealous/rules.mk b/keyboards/handwired/xealous/rules.mk index eebd11d86e..07e1c875e6 100644 --- a/keyboards/handwired/xealous/rules.mk +++ b/keyboards/handwired/xealous/rules.mk @@ -1,4 +1,5 @@ -SRC += matrix_scanrate.c matrix.c +#SRC += matrix_scanrate.c matrix.c +SRC += debounce.c # MCU name MCU = atmega32u4 @@ -37,7 +38,7 @@ F_USB = $(F_CPU) # Bootloader # This definition is optional, and if your keyboard supports multiple bootloaders of -# different sizes, comment this out, and the correct address will be loaded +# different sizes, comment this out, and the correct address will be loaded # automatically (+60). See bootloader.mk for all options. BOOTLOADER = caterina @@ -59,14 +60,15 @@ MIDI_ENABLE = no # MIDI controls AUDIO_ENABLE = yes # Audio output on port C6 UNICODE_ENABLE = no # Unicode BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. +RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. SPLIT_KEYBOARD = yes # Use shared split_common code SUBPROJECT_rev1 = yes # Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend -CUSTOM_MATRIX = yes +CUSTOM_MATRIX = no +CUSTOM_DEBOUNCE = yes LAYOUTS = split60 |