Compare commits

..

6 Commits

Author SHA1 Message Date
QMK Bot
c5b0e3a6a3
Format code according to conventions (#20175) 2023-03-18 18:15:26 +00:00
jack
a1a5dd6ddd
Fixup kbdfans/tiger80 RGB animations (#20164) 2023-03-18 11:38:24 -06:00
Laneware
da52450152
Add Support for LPAD (#19852)
Co-authored-by: jack <0x6a73@protonmail.com>
Co-authored-by: Drashna Jaelre <drashna@live.com>
2023-03-18 11:33:20 -06:00
Dam Vu Duy
7b9d471ba0
[Keyboard] Add Coban Pad 3A (#19634) 2023-03-18 11:32:29 -06:00
toinux
319da117b7
[Keymap] crkbd toinux update (#19673) 2023-03-18 11:26:42 -06:00
Nick Brassel
f8e89a1fe4
De-parallelise CI (#20171)
* De-parallelise CI

No speed increase.

* Update .github/workflows/ci_builds.yml
2023-03-18 15:58:51 +00:00
26 changed files with 461 additions and 114 deletions

View File

@ -20,7 +20,6 @@ jobs:
strategy:
matrix:
keymap: [default, via]
keyboard_folder: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z]
container: qmkfm/qmk_cli
@ -35,13 +34,13 @@ jobs:
- name: Install dependencies
run: pip3 install -r requirements.txt
- name: Run `qmk mass-compile` (keyboards ${{ matrix.keyboard_folder }}*, keymap ${{ matrix.keymap }})
run: qmk mass-compile -j $(nproc 2>/dev/null || sysctl -n hw.ncpu 2>/dev/null || getconf _NPROCESSORS_ONLN 2>/dev/null) -km ${{ matrix.keymap }} -f 'keyboard_folder=${{ matrix.keyboard_folder }}*'
- name: Run `qmk mass-compile` (keymap ${{ matrix.keymap }})
run: qmk mass-compile -j $(nproc 2>/dev/null || sysctl -n hw.ncpu 2>/dev/null || getconf _NPROCESSORS_ONLN 2>/dev/null) -km ${{ matrix.keymap }}
- name: 'Upload binaries'
uses: actions/upload-artifact@v3
with:
name: binaries-${{ matrix.keyboard_folder }}-${{ matrix.keymap }}
name: binaries-${{ matrix.keymap }}
if-no-files-found: ignore
path: |
*.bin

View File

@ -0,0 +1,23 @@
/* Copyright 2021 RyanDam (https://github.com/RyanDam)
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#pragma once
#define ENCODERS_PAD_A { GP5 }
#define ENCODERS_PAD_B { GP4 }
#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET
#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_TIMEOUT 500U

View File

@ -0,0 +1,28 @@
{
"keyboard_name": "Coban Pad 3A",
"name": "Coban Pad 3A",
"url": "https://cobanstationery.com",
"maintainer": "Coban Stationery",
"manufacturer": "Coban Stationery",
"usb": {
"pid": "0xCC3A",
"vid": "0xCB3A",
"device_version": "1.1.0"
},
"matrix_pins": {
"direct": [
["GP8", "GP7", "GP6"]
]
},
"processor": "RP2040",
"bootloader": "rp2040",
"layouts": {
"LAYOUT": {
"layout": [
{"label":"Mute", "x":0, "y":0, "matrix": [0, 0]},
{"label":"Next", "x":1, "y":0, "matrix": [0, 1]},
{"label":"Push", "x":3, "y":0, "matrix": [0, 2]},
]
}
}
}

View File

@ -0,0 +1,27 @@
/* Copyright 2021 RyanDam (https://github.com/RyanDam)
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include QMK_KEYBOARD_H
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = LAYOUT(KC_MUTE, KC_MNXT, KC_MPLY),
};
#if defined(ENCODER_MAP_ENABLE)
const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
[0] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
};
#endif

View File

@ -0,0 +1 @@
ENCODER_MAP_ENABLE = yes

View File

@ -0,0 +1,18 @@
/* Copyright 2021 RyanDam (https://github.com/RyanDam)
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#pragma once
#define DYNAMIC_KEYMAP_LAYER_COUNT 2

View File

@ -0,0 +1,27 @@
/* Copyright 2021 RyanDam (https://github.com/RyanDam)
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include QMK_KEYBOARD_H
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = LAYOUT(KC_MUTE, KC_MNXT, KC_MPLY),
};
#if defined(ENCODER_MAP_ENABLE)
const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
[0] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
};
#endif

View File

@ -0,0 +1,3 @@
VIA_ENABLE = yes
LTO_ENABLE = yes
ENCODER_MAP_ENABLE = yes

View File

@ -0,0 +1,29 @@
/* Copyright 2021 RyanDam (https://github.com/RyanDam)
*
* 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 "quantum.h"
#if defined(ENCODER_ENABLE)
bool encoder_update_kb(uint8_t index, bool clockwise) {
if (!encoder_update_user(index, clockwise)) { return false; }
if (clockwise) {
tap_code_delay(KC_VOLU, 10);
} else {
tap_code_delay(KC_VOLD, 10);
}
return true;
}
#endif

View File

@ -0,0 +1,24 @@
# Coban Pad 3A
![Coban Pad 3A](https://i.imgur.com/0afuIuYh.png)
Small macro keyboard with 2 hotswapable button and 1 EC11 rotary encoder
* Keyboard Maintainer: [RyanDam](https://github.com/RyanDam)
* Hardware Supported: Coban Pad 3A
Make example for this keyboard (after setting up your build environment):
make coban/pad3a:default
Flashing example for this keyboard:
make coban/pad3a:default:flash
See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
## Bootloader
Enter the bootloader:
* **boot button**: Hold the BOOT button on the back of the PCB while plug in usb cable

View File

@ -0,0 +1,3 @@
MOUSEKEY_ENABLE = yes
EXTRAKEY_ENABLE = yes
ENCODER_ENABLE = yes

View File

@ -66,51 +66,51 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
// RGB Matrix Animation modes. Explicitly enabled
// For full list of effects, see:
// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects
// # define ENABLE_RGB_MATRIX_ALPHAS_MODS
// # define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
// # define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
// # define ENABLE_RGB_MATRIX_BREATHING
// # define ENABLE_RGB_MATRIX_BAND_SAT
// # define ENABLE_RGB_MATRIX_BAND_VAL
// # define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
// # define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
// # define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT
// # define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
// # define ENABLE_RGB_MATRIX_CYCLE_ALL
// # define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
// # define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
// # define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
// # define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
// # define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
// # define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
// # define ENABLE_RGB_MATRIX_CYCLE_SPIRAL
// # define ENABLE_RGB_MATRIX_DUAL_BEACON
// # define ENABLE_RGB_MATRIX_RAINBOW_BEACON
// # define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
// # define ENABLE_RGB_MATRIX_RAINDROPS
// # define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
// # define ENABLE_RGB_MATRIX_HUE_BREATHING
// # define ENABLE_RGB_MATRIX_HUE_PENDULUM
// # define ENABLE_RGB_MATRIX_HUE_WAVE
// # define ENABLE_RGB_MATRIX_PIXEL_RAIN
// # define ENABLE_RGB_MATRIX_PIXEL_FLOW
// # define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
# undef ENABLE_RGB_MATRIX_ALPHAS_MODS
# undef ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
# undef ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
# undef ENABLE_RGB_MATRIX_BREATHING
# undef ENABLE_RGB_MATRIX_BAND_SAT
# undef ENABLE_RGB_MATRIX_BAND_VAL
# undef ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
# undef ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
# undef ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT
# undef ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
# undef ENABLE_RGB_MATRIX_CYCLE_ALL
# undef ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
# undef ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
# undef ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
# undef ENABLE_RGB_MATRIX_CYCLE_OUT_IN
# undef ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
# undef ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
# undef ENABLE_RGB_MATRIX_CYCLE_SPIRAL
# undef ENABLE_RGB_MATRIX_DUAL_BEACON
# undef ENABLE_RGB_MATRIX_RAINBOW_BEACON
# undef ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
# undef ENABLE_RGB_MATRIX_RAINDROPS
# undef ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
# undef ENABLE_RGB_MATRIX_HUE_BREATHING
# undef ENABLE_RGB_MATRIX_HUE_PENDULUM
# undef ENABLE_RGB_MATRIX_HUE_WAVE
# undef ENABLE_RGB_MATRIX_PIXEL_RAIN
# undef ENABLE_RGB_MATRIX_PIXEL_FLOW
# undef ENABLE_RGB_MATRIX_PIXEL_FRACTAL
// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined
// # define ENABLE_RGB_MATRIX_TYPING_HEATMAP
// # define ENABLE_RGB_MATRIX_DIGITAL_RAIN
# undef ENABLE_RGB_MATRIX_TYPING_HEATMAP
# undef ENABLE_RGB_MATRIX_DIGITAL_RAIN
// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined
// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE
// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE
# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
# define ENABLE_RGB_MATRIX_SPLASH
// # define ENABLE_RGB_MATRIX_MULTISPLASH
// # define ENABLE_RGB_MATRIX_SOLID_SPLASH
// # define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
# undef ENABLE_RGB_MATRIX_MULTISPLASH
# undef ENABLE_RGB_MATRIX_SOLID_SPLASH
# undef ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
#endif
#define OLED_FONT_H "keyboards/crkbd/keymaps/toinux/glcdfont.c"
@ -119,3 +119,5 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
// #define SPLIT_LED_STATE_ENABLE
#define LAYER_STATE_16BIT
#define HOLD_ON_OTHER_KEY_PRESS_PER_KEY

View File

@ -1,4 +1,4 @@
/* Copyright 2022 toinux
/* Copyright 2022 @toinux
*
* 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

View File

@ -59,7 +59,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// Gaming
// ,-----------------------------------------------------. ,-----------------------------------------------------.
// | Esc | Q | W | E | R | T | | Y | U | I | O | P | Bksp |
// | Tab | Q | W | E | R | T | | Y | U | I | O | P | Bksp |
// |--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
// | Ctrl | A | S | D | F | G | | H | J | K | L | ;/Mous | ' |
// |--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
@ -68,7 +68,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// | LALT |GAMING2 | Space | | Spc/NAV| RAISE |ACCENTS |
// `--------------------------' `--------------------------'
[_GAMING] = LAYOUT_split_3x6_3(
KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, 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_BSPC,
KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, MOSCLN, KC_QUOT,
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, SFTENT,
KC_LALT, GAMING2, KC_SPC, SPCNAV, RAISE, ACCENTS
@ -79,7 +79,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// ,-----------------------------------------------------. ,-----------------------------------------------------.
// | Tab | 1 | 2 | 3 | 4 | 5 | | | | | | | |
// |--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
// | Ctrl | 6 | 7 | 8 | 9 | 0 | | | | | | | |
// | Esc | 6 | 7 | 8 | 9 | 0 | | | | | | | |
// |--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
// | LGui | Base | | Vol- | Vol+ | Mute | | | | | | | |
// `--------+--------+--------+--------+--------+--------+--------. .--------+--------+--------+--------+--------+--------+--------'
@ -87,7 +87,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// `--------------------------' `--------------------------'
[_GAMING2] = LAYOUT_split_3x6_3(
KC_TAB, KC_1, KC_2, KC_3, KC_4, KC_5, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
KC_LCTL, KC_6, KC_7, KC_8, KC_9, KC_0, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
KC_ESC, KC_6, KC_7, KC_8, KC_9, KC_0, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
KC_LGUI, BASE, XXXXXXX, KC_VOLD, KC_VOLU, KC_MUTE, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
_______, _______, _______, _______, _______, _______
@ -223,6 +223,15 @@ layer_state_t layer_state_set_user(layer_state_t state) {
return update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST);
}
bool get_hold_on_other_key_press(uint16_t keycode, keyrecord_t *record) {
switch (keycode) {
case CTRLSC:
return true;
default:
return false;
}
}
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
#ifdef OLED_ENABLE

View File

@ -23,6 +23,7 @@ static const char gaming2_leds[] = {23, 18, 17, 10, 9, 22, 19, 16, 11, 8};
static const char nav_leds[] = {38, 43, 44, 46};
static const char fun_leds[] = {45, 44, 37, 46, 43, 38, 47, 42, 39, 40};
static const char mouse_leds[] = {11, 16, 17, 19};
static const char adjust_leds[] = {6, 33};
bool rgb_matrix_indicators_advanced_user(uint8_t led_min, uint8_t led_max) {
if (host_keyboard_led_state().caps_lock) {
@ -32,7 +33,7 @@ bool rgb_matrix_indicators_advanced_user(uint8_t led_min, uint8_t led_max) {
case _GAMING:
if (is_keyboard_master()) {
for (uint8_t i = 0; i < 4; i++) {
rgb_matrix_set_color(gaming_leds[i], RGB_RED);
rgb_matrix_set_color(gaming_leds[i], 0x88, 0x00, 0x00);
}
}
break;
@ -54,7 +55,9 @@ bool rgb_matrix_indicators_advanced_user(uint8_t led_min, uint8_t led_max) {
}
break;
case _ADJUST:
rgb_matrix_set_color(6, RGB_RED);
for (uint8_t i = 0; i < 2; i++) {
rgb_matrix_set_color(adjust_leds[i], RGB_RED);
}
break;
case _MOUSE:
if (is_keyboard_master()) {

View File

@ -16,19 +16,7 @@
#pragma once
#ifdef RGB_DI_PIN
#define RGBLIGHT_EFFECT_BREATHING
#define RGBLIGHT_EFFECT_RAINBOW_MOOD
#define RGBLIGHT_EFFECT_RAINBOW_SWIRL
#define RGBLIGHT_EFFECT_SNAKE
#define RGBLIGHT_EFFECT_KNIGHT
#define RGBLIGHT_EFFECT_CHRISTMAS
#define RGBLIGHT_EFFECT_STATIC_GRADIENT
#define RGBLIGHT_EFFECT_RGB_TEST
#define RGBLIGHT_EFFECT_ALTERNATING
#define RGBLIGHT_EFFECT_TWINKLE
#define RGBLIGHT_DEFAULT_MODE (RGBLIGHT_EFFECT_RAINBOW_MOOD + 6)
#define RGBLIGHT_DEFAULT_SPD 15
#endif
#define VIA_EEPROM_LAYOUT_OPTIONS_SIZE 2

View File

@ -31,7 +31,19 @@
"led_count": 20,
"pin": "B3",
"saturation_steps": 10,
"sleep": true
"sleep": true,
"animations": {
"alternating": true,
"breathing": true,
"christmas": true,
"knight": true,
"rainbow_mood": true,
"rainbow_swirl": true,
"rgb_test": true,
"snake": true,
"static_gradient": true,
"twinkle": true
}
},
"url": "",
"usb": {

10
keyboards/lpad/config.h Normal file
View File

@ -0,0 +1,10 @@
// Copyright 2023 Laneware Peripherals
// SPDX-License-Identifier: GPL-2.0-or-later
#pragma once
/* 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

36
keyboards/lpad/info.json Normal file
View File

@ -0,0 +1,36 @@
{
"keyboard_name": "L-PAD",
"manufacturer": "Laneware Peripherals",
"url": "",
"maintainer": "qmk",
"usb": {
"vid": "0x4C50",
"pid": "0x2222",
"device_version": "0.0.1"
},
"processor": "atmega32u4",
"bootloader": "atmel-dfu",
"matrix_pins": {
"cols": ["F5", "E6", "D0"],
"rows": ["D3", "D4", "D6"]
},
"diode_direction": "COL2ROW",
"encoder": {
"rotary": [
{
"pin_a": "F0",
"pin_b": "F1"
}
]
},
"layouts":{
"LAYOUT": {
"layout":[{ "label": "Play", "matrix": [0, 0], "w": 1, "x": 0, "y": 0 },
{ "label": "Mute", "matrix": [0, 1], "w": 1, "x": 1.5, "y": 0.5 },
{ "label": "Next", "matrix": [1, 0], "w": 1, "x": 0, "y": 1 },
{ "label": "Prev", "matrix": [2, 0], "w": 1, "x": 0, "y": 2 },
{ "label": "Left", "matrix": [2, 1], "w": 1, "x": 1, "y": 2 },
{ "label": "Rght", "matrix": [2, 2], "w": 1, "x": 2, "y": 2 }]
},
}
}

View File

@ -0,0 +1,13 @@
// Copyright 2023 Laneware Peripherals
// SPDX-License-Identifier: GPL-2.0-or-later
#include QMK_KEYBOARD_H
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = LAYOUT (
KC_MPLY, KC_MUTE,
KC_MNXT,
KC_MPRV, KC_LEFT, KC_RIGHT)
};

View File

@ -0,0 +1,36 @@
// Copyright 2023 Laneware Peripherals
// SPDX-License-Identifier: GPL-2.0-or-later
#include QMK_KEYBOARD_H
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = LAYOUT (
KC_MPLY, KC_MUTE,
KC_MNXT,
KC_MPRV, KC_LEFT, KC_RIGHT),
[1] = LAYOUT (
KC_TRNS, KC_TRNS,
KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS),
[2] = LAYOUT (
KC_TRNS, KC_TRNS,
KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS),
[3] = LAYOUT (
KC_TRNS, KC_TRNS,
KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS),
};
#if defined(ENCODER_MAP_ENABLE)
const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
[0] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
[1] = {ENCODER_CCW_CW(KC_TRNS, KC_TRNS)},
[2] = {ENCODER_CCW_CW(KC_TRNS, KC_TRNS)},
[3] = {ENCODER_CCW_CW(KC_TRNS, KC_TRNS)},
};
#endif

View File

@ -0,0 +1,2 @@
VIA_ENABLE = yes
ENCODER_MAP_ENABLE = yes

18
keyboards/lpad/lpad.c Normal file
View File

@ -0,0 +1,18 @@
// Copyright 2023 Laneware Peripherals
// SPDX-License-Identifier: GPL-2.0-or-later
#include "quantum.h"
#ifdef ENCODER_ENABLE
bool encoder_update_kb(uint8_t index, bool clockwise) {
if (!encoder_update_user(index, clockwise)) return false;
if (index == 0) { /* First encoder */
if (clockwise) {
tap_code(KC_VOLU);
} else {
tap_code(KC_VOLD);
}
}
return true;
}
#endif

27
keyboards/lpad/readme.md Normal file
View File

@ -0,0 +1,27 @@
# LPAD
![LPAD](https://i.imgur.com/bQgqZC6h.jpg)
A Macro Keyboard with a RHS rotary encoder, made and sold by Laneware Peripherals.
* Keyboard Maintainer: [Laneware Peripherals](https://github.com/laneware)
* Hardware Supported: LPAD
* Hardware Availability: [Laneware Peripherals](https://lanewareperipherals.com/),
Make example for this keyboard (after setting up your build environment):
make lpad:default
Flashing example for this keyboard:
make lpad:default:flash
See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
## Bootloader
Enter the bootloader in 2 ways:
* **Bootmagic reset**: Hold down the Top Left Switch and plug in the keyboard
* **Physical reset button**: Briefly press the button on the back of the PCB

14
keyboards/lpad/rules.mk Normal file
View File

@ -0,0 +1,14 @@
# Build Options
# change yes to no to disable
#
BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
ENCODER_ENABLE = yes

View File

@ -20,33 +20,33 @@
// clang-format off
// keymap adapted for http://marin.jb.free.fr/qwerty-fr/
// keymap adapted for https://qwerty-fr.org/
/* AltGr symbols
/* AltGr symbols (* symbol = dead key)
*
* ` ¹ ² ³ ê ^ ŷ û î ô
* * ` ¹ ² ê * ¯* ^ û î ô ø
*
* â é è ® π ¥ ù î ò œ « »
* â é è ® þ * ̑ ù î ò œ « »
*
* à æ ë ε α ÿ ü ï ö ´ ¦
* à æ ë * Ω ÿ ü ï ö ´ ̀
*
* ä × ç ω ß ñ µ ¸ ° ʕ
* ä × ç ß ñ * * ¸ ·
*
*  
* non-breaking space
*
*/
// Row 1
#define QF_DGRV RALT(KC_GRV) // ` (dead)
#define QF_SUP1 RALT(KC_1) // ¹
#define QF_SUP2 RALT(KC_2) // ²
#define QF_SUP3 RALT(KC_3) // ³
#define QF_ECIR RALT(KC_4) // ê
#define QF_EURO RALT(KC_5) // €
#define QF_ECIR RALT(KC_3) // ê
#define QF_EURO RALT(KC_4) // €
#define QF_MACR RALT(KC_5) // ¯ (dead)
#define QF_DCIR RALT(KC_6) // ^ (dead)
#define QF_YCIR RALT(KC_7) // ŷ
#define QF_UCIR RALT(KC_8) // û
#define QF_ICIR RALT(KC_9) // î
#define QF_OCIR RALT(KC_0) // ô
#define QF_UCIR RALT(KC_7) // û
#define QF_ICIR RALT(KC_8) // î
#define QF_OCIR RALT(KC_9) // ô
#define QF_OSTR RALT(KC_0) // ø
#define QF_DASH RALT(KC_MINUS) //
#define QF_NEQL RALT(KC_EQUAL) // ≠
// Row 2
@ -54,8 +54,8 @@
#define QF_EACU RALT(KC_W) // é
#define QF_EGRV RALT(KC_E) // è
#define QF_REGD RALT(KC_R) // ®
#define QF_PI RALT(KC_T) // π
#define QF_YEN RALT(KC_Y) // ¥
#define QF_THRN RALT(KC_T) // þ
#define QF_RBRV RALT(KC_Y) // ̑ (dead)
#define QF_UGRV RALT(KC_U) // ù
#define QF_IGRV RALT(KC_I) // ì
#define QF_OGRV RALT(KC_O) // ò
@ -66,65 +66,62 @@
#define QF_AGRV RALT(KC_A) // à
#define QF_AE RALT(KC_S) // æ
#define QF_EDIA RALT(KC_D) // ë
#define QF_EPSL RALT(KC_F) // ε
#define QF_ALPH RALT(KC_G) // α
#define QF_GR RALT(KC_G) // Greek (dead)
#define QF_YDIA RALT(KC_H) // ÿ
#define QF_UDIA RALT(KC_J) // ü
#define QF_IDIA RALT(KC_K) // ï
#define QF_ODIA RALT(KC_L) // ö
#define QF_PILC RALT(KC_SCLN) // ¶
#define QF_ACUT RALT(KC_QUOT) // ´ (dead)
#define QF_BRKP RALT(KC_BSLS) // ¦
#define QF_ACUT RALT(KC_SCLN) // ´ (dead)
#define QF_AGR RALT(KC_QUOT) // ̀ (dead)
// Row 4
#define QF_LTEQ RALT(KC_NUBS) // ≤
#define QF_ADIA RALT(KC_Z) // ä
#define QF_MUL RALT(KC_X) // ×
#define QF_CCED RALT(KC_C) // ç
#define QF_OMEG RALT(KC_V) // ω
#define QF_SS RALT(KC_B) // ß
#define QF_NTIL RALT(KC_N) // ñ
#define QF_MICR RALT(KC_M) // µ
#define QF_MATH RALT(KC_M) // Math (dead)
#define QF_CEDL RALT(KC_COMM) // ¸ (dead)
#define QF_DEG RALT(KC_DOT) // °
#define QF_VOPH RALT(KC_SLSH) // ʕ
#define QF_MED RALT(KC_DOT) // ·
#define QF_APO RALT(KC_SLSH) //
// Row 5
#define QF_NBSP RALT(KC_SPC) //   (non-breaking space)
/* Shift+AltGr symbols
*
* ~ ¡ ˝ ¯ Ê £ ˇ Ŷ Û Î Ô ±
* * ~ ¡ * ˝ Ê * ¤* ˙* ˇ Û Î Ô Ø
*
* Â É È © Π ¤ Ù Ì Ò Œ
* Â É È © Þ * ˘ Ù Ì Ò Œ
*
* À Æ Ë Δ β Ÿ Ü Ï ö § ¨ ø
* À Æ Ë Ÿ Ü Ï Ö * °* ¨
*
* Ä ÷ Ç Ω þ Ñ Σ ˛ ˚ ¿
* Ä ÷ Ç Ñ ˛ ¿
*
*  
* narrow non-breaking spc
*
*/
// Row 1
#define QF_DTIL S(RALT(KC_GRV)) // ~ (dead)
#define QF_IEXL S(RALT(KC_1)) // ¡
#define QF_DACU S(RALT(KC_2)) // ˝ (dead)
#define QF_MACR S(RALT(KC_3)) // ¯ (dead)
#define QF_ECIU S(RALT(KC_4)) // Ê
#define QF_PND S(RALT(KC_5)) // £
#define QF_ECIU S(RALT(KC_3)) // Ê
#define QF_CURR S(RALT(KC_4)) // ¤ (dead)
#define QF_NTON S(RALT(KC_5)) // ˙ (dead)
#define QF_CARN S(RALT(KC_6)) // ˇ (dead)
#define QF_YCIU S(RALT(KC_7)) // Ŷ
#define QF_UCIU S(RALT(KC_8)) // Û
#define QF_ICIU S(RALT(KC_9)) // Î
#define QF_OCIO S(RALT(KC_0)) // Ô
#define QF_UCIU S(RALT(KC_7)) // Û
#define QF_ICIU S(RALT(KC_8)) // Î
#define QF_OCIO S(RALT(KC_9)) // Ô
#define QF_UOST S(RALT(KC_0)) // Ø
#define QF_NDSH S(RALT(KC_MINUS)) // —
#define QF_PLMN S(RALT(KC_EQUAL)) // ±
#define QF_APPR S(RALT(KC_EQUAL)) // ≈
// Row 2
#define QF_ACIU S(RALT(KC_Q)) // Â
#define QF_ECUU S(RALT(KC_W)) // É
#define QF_EGRU S(RALT(KC_E)) // È
#define QF_COPY S(RALT(KC_R)) // ©
#define QF_PIU S(RALT(KC_T)) // Π
#define QF_CURR S(RALT(KC_Y)) // ¤
#define QF_UTRN S(RALT(KC_T)) // Þ
#define QF_BRV S(RALT(KC_Y)) // ˘ (dead)
#define QF_UGRU S(RALT(KC_U)) // Ù
#define QF_IGRU S(RALT(KC_I)) // Ì
#define QF_OGRU S(RALT(KC_O)) // Ò
@ -135,24 +132,22 @@
#define QF_AGRU S(RALT(KC_A)) // À
#define QF_AEU S(RALT(KC_S)) // Æ
#define QF_EDIU S(RALT(KC_D)) // Ë
#define QF_DELT S(RALT(KC_F)) // Δ
#define QF_BETA S(RALT(KC_G)) // β
#define QF_YDIU S(RALT(KC_H)) // Ÿ
#define QF_UDIU S(RALT(KC_J)) // Ü
#define QF_IDIU S(RALT(KC_K)) // Ï
#define QF_ODIU S(RALT(KC_L)) // Ö
#define QF_SECT S(RALT(KC_SCLN)) // §
#define QF_DEG S(RALT(KC_SCLN)) // ° (dead)
#define QF_DIAE S(RALT(KC_QUOT)) // ¨ (dead)
#define QF_OSTR S(RALT(KC_BSLS)) // ø
#define QF_DLQM S(RALT(KC_BSLS)) // „
// Row 4
#define QF_GTEQ S(RALT(KC_NUBS)) // ≥
#define QF_ADIU S(RALT(KC_Z)) // Ä
#define QF_DIV S(RALT(KC_X)) // ÷
#define QF_CCDU S(RALT(KC_C)) // Ç
#define QF_OMEU S(RALT(KC_V)) // Ω
#define QF_THRN S(RALT(KC_B)) // þ
#define QF_USS S(RALT(KC_B)) // ẞ
#define QF_NTIU S(RALT(KC_N)) // Ñ
#define QF_SIGM S(RALT(KC_M)) // Σ
#define QF_OGON S(RALT(KC_COMM)) // ˛ (dead)
#define QF_RNGA S(RALT(KC_DOT)) // ˚ (dead)
#define QF_SUSP S(RALT(KC_DOT)) // …
#define QF_IQUE S(RALT(KC_SLSH)) // ¿
// Row 5
#define QF_NNBS RALT(KC_SPC) // (narrow non-breaking space)