mirror of
https://github.com/qmk/qmk_firmware
synced 2025-01-04 22:13:04 +00:00
Compare commits
21 Commits
67e1770523
...
979ec4d9b6
Author | SHA1 | Date | |
---|---|---|---|
|
979ec4d9b6 | ||
|
d5a0424987 | ||
|
1e6eb5e35c | ||
|
57f89e5388 | ||
|
4d182ec117 | ||
|
53680fa6da | ||
|
08c1c045f9 | ||
|
fe2200f73a | ||
|
efcd6187d1 | ||
|
fd0a552fc1 | ||
|
92534d8e3d | ||
|
f549948bbd | ||
|
4d3d8887e7 | ||
|
5593e73ba7 | ||
|
93de533580 | ||
|
fc4d9c63fb | ||
|
58323017ff | ||
|
b6cdbaa45d | ||
|
3f645fdbeb | ||
|
0749aa2290 | ||
|
56beb6a633 |
@ -140,6 +140,9 @@
|
||||
"custommk/genesis": {
|
||||
"target": "custommk/genesis/rev1"
|
||||
},
|
||||
"cxt_studio":{
|
||||
"target":"cxt_studio/12e4"
|
||||
},
|
||||
"daisy": {
|
||||
"target": "ktec/daisy"
|
||||
},
|
||||
|
@ -442,6 +442,8 @@ bool bluefruit_le_enable_keyboard(void) {
|
||||
static const char kGapDevName[] PROGMEM = "AT+GAPDEVNAME=" PRODUCT;
|
||||
// Turn on keyboard support
|
||||
static const char kHidEnOn[] PROGMEM = "AT+BLEHIDEN=1";
|
||||
// Turn on battery service
|
||||
static const char kBattEnOn[] PROGMEM = "AT+BLEBATTEN=1";
|
||||
|
||||
// Adjust intervals to improve latency. This causes the "central"
|
||||
// system (computer/tablet) to poll us every 10-30 ms. We can't
|
||||
@ -456,7 +458,7 @@ bool bluefruit_le_enable_keyboard(void) {
|
||||
// Turn down the power level a bit
|
||||
static const char kPower[] PROGMEM = "AT+BLEPOWERLEVEL=-12";
|
||||
static PGM_P const configure_commands[] PROGMEM = {
|
||||
kEcho, kGapIntervals, kGapDevName, kHidEnOn, kPower, kATZ,
|
||||
kEcho, kGapIntervals, kGapDevName, kHidEnOn, kBattEnOn, kPower, kATZ,
|
||||
};
|
||||
|
||||
uint8_t i;
|
||||
@ -555,6 +557,7 @@ void bluefruit_le_task(void) {
|
||||
state.last_battery_update = timer_read();
|
||||
|
||||
state.vbat = analogReadPin(BATTERY_LEVEL_PIN);
|
||||
bluefruit_le_set_battery_level(100); // TODO
|
||||
}
|
||||
#endif
|
||||
}
|
||||
@ -683,3 +686,13 @@ bool bluefruit_le_set_power_level(int8_t level) {
|
||||
snprintf(cmd, sizeof(cmd), "AT+BLEPOWERLEVEL=%d", level);
|
||||
return at_command(cmd, NULL, 0, false);
|
||||
}
|
||||
|
||||
bool bluefruit_le_set_battery_level(uint8_t level) {
|
||||
char cmd[18];
|
||||
if (!state.configured) {
|
||||
return false;
|
||||
}
|
||||
|
||||
snprintf(cmd, sizeof(cmd), "AT+BLEBATTVAL=%d", level);
|
||||
return at_command(cmd, NULL, 0, false);
|
||||
}
|
||||
|
@ -51,6 +51,7 @@ extern uint32_t bluefruit_le_read_battery_voltage(void);
|
||||
|
||||
extern bool bluefruit_le_set_mode_leds(bool on);
|
||||
extern bool bluefruit_le_set_power_level(int8_t level);
|
||||
extern bool bluefruit_le_set_battery_level(uint8_t level);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
|
8
keyboards/chill/ghoul/chconf.h
Normal file
8
keyboards/chill/ghoul/chconf.h
Normal file
@ -0,0 +1,8 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0-or-later */
|
||||
|
||||
#pragma once
|
||||
|
||||
#define CH_CFG_ST_RESOLUTION 16
|
||||
#define CH_CFG_ST_FREQUENCY 10000
|
||||
|
||||
#include_next <chconf.h>
|
7
keyboards/chill/ghoul/config.h
Normal file
7
keyboards/chill/ghoul/config.h
Normal file
@ -0,0 +1,7 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0-or-later */
|
||||
|
||||
#pragma once
|
||||
|
||||
#define BACKLIGHT_PWM_DRIVER PWMD2
|
||||
#define BACKLIGHT_PWM_CHANNEL 2
|
||||
#define BACKLIGHT_PAL_MODE 2
|
7
keyboards/chill/ghoul/halconf.h
Normal file
7
keyboards/chill/ghoul/halconf.h
Normal file
@ -0,0 +1,7 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0-or-later */
|
||||
|
||||
#pragma once
|
||||
|
||||
#define HAL_USE_PWM TRUE
|
||||
|
||||
#include_next <halconf.h>
|
408
keyboards/chill/ghoul/keyboard.json
Normal file
408
keyboards/chill/ghoul/keyboard.json
Normal file
File diff suppressed because it is too large
Load Diff
24
keyboards/chill/ghoul/keymaps/default/keymap.c
Normal file
24
keyboards/chill/ghoul/keymaps/default/keymap.c
Normal file
@ -0,0 +1,24 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0-or-later */
|
||||
|
||||
#include QMK_KEYBOARD_H
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
|
||||
[0] = 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_SCRL, 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_BSPC, KC_INS, KC_HOME, KC_PGUP,
|
||||
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN,
|
||||
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
|
||||
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1), KC_UP,
|
||||
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
|
||||
),
|
||||
|
||||
[1] = LAYOUT_all(
|
||||
_______, KC_VOLU, KC_VOLD, KC_MUTE, _______, KC_MPRV, KC_MPLY, KC_MSTP, KC_MNXT, _______, _______, _______, KC_SLEP, _______, _______, _______,
|
||||
BL_TOGG, BL_UP, BL_DOWN, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
|
||||
)
|
||||
};
|
11
keyboards/chill/ghoul/mcuconf.h
Normal file
11
keyboards/chill/ghoul/mcuconf.h
Normal file
@ -0,0 +1,11 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0-or-later */
|
||||
|
||||
#pragma once
|
||||
|
||||
#include_next <mcuconf.h>
|
||||
|
||||
#undef STM32_PWM_USE_TIM2
|
||||
#define STM32_PWM_USE_TIM2 TRUE
|
||||
|
||||
#undef STM32_ST_USE_TIMER
|
||||
#define STM32_ST_USE_TIMER 14
|
27
keyboards/chill/ghoul/readme.md
Normal file
27
keyboards/chill/ghoul/readme.md
Normal file
@ -0,0 +1,27 @@
|
||||
# Ghoul TKL
|
||||
|
||||
![image](https://i.imgur.com/Y39mNA4.jpeg)
|
||||
|
||||
A modern replacement PCB for Filco TKLs, adding support for PCB-mount stabilizers and popular alternate layouts. In-switch backlight LEDs are also supported.
|
||||
|
||||
* Keyboard Maintainer: [chillKB](https://github.com/chillKB)
|
||||
* Hardware Supported: Ghoul TKL PCB
|
||||
* Hardware Availability: [Open source on GitHub](https://github.com/chillKB/ghoulTKL)
|
||||
|
||||
Make example for this keyboard (after setting up your build environment):
|
||||
|
||||
make chill/ghoul:default
|
||||
|
||||
Flashing example for this keyboard:
|
||||
|
||||
make chill/ghoul: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 3 ways:
|
||||
|
||||
* **Bootmagic reset**: Hold down the top left key (usually Escape) and plug in the keyboard
|
||||
* **Physical reset button**: Hold the boot button and tap the reset button on the back of the PCB
|
||||
* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available
|
6
keyboards/cxt_studio/12e4/config.h
Normal file
6
keyboards/cxt_studio/12e4/config.h
Normal file
@ -0,0 +1,6 @@
|
||||
// Copyright 2023 Colin Kinloch (@ColinKinloch)
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
#pragma once
|
||||
|
||||
#define RGB_MATRIX_TYPING_HEATMAP_SPREAD 9
|
@ -3,8 +3,6 @@
|
||||
|
||||
#include "quantum.h"
|
||||
|
||||
static uint8_t anim = 0;
|
||||
|
||||
#ifdef ENCODER_ENABLE
|
||||
bool encoder_update_kb(uint8_t index, bool clockwise) {
|
||||
if (!encoder_update_user(index, clockwise)) {
|
||||
@ -21,32 +19,26 @@ bool encoder_update_kb(uint8_t index, bool clockwise) {
|
||||
break;
|
||||
case 1: {
|
||||
if (clockwise) {
|
||||
rgblight_increase_hue();
|
||||
rgb_matrix_increase_hue();
|
||||
} else {
|
||||
rgblight_decrease_hue();
|
||||
rgb_matrix_decrease_hue();
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 2: {
|
||||
if (clockwise) {
|
||||
rgblight_increase_val();
|
||||
rgb_matrix_increase_val();
|
||||
} else {
|
||||
rgblight_decrease_val();
|
||||
rgb_matrix_decrease_val();
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 3: {
|
||||
if (clockwise) {
|
||||
anim++;
|
||||
rgb_matrix_step();
|
||||
} else {
|
||||
anim--;
|
||||
rgb_matrix_step_reverse();
|
||||
}
|
||||
if (anim >= RGB_MATRIX_EFFECT_MAX) {
|
||||
anim = 0;
|
||||
} else if (anim < 0) {
|
||||
anim = RGB_MATRIX_EFFECT_MAX - 1;
|
||||
}
|
||||
rgblight_mode(anim);
|
||||
}
|
||||
break;
|
||||
}
|
@ -1,6 +1,6 @@
|
||||
{
|
||||
"manufacturer": "CXT",
|
||||
"keyboard_name": "cxt_studio",
|
||||
"keyboard_name": "cxt_studio 12E4",
|
||||
"maintainer": "ColinKinloch",
|
||||
"bootloader": "atmel-dfu",
|
||||
"diode_direction": "ROW2COL",
|
@ -1,5 +1,5 @@
|
||||
{
|
||||
"keyboard": "cxt_studio",
|
||||
"keyboard": "cxt_studio/12e4",
|
||||
"keymap": "default",
|
||||
"layout": "LAYOUT",
|
||||
"layers": [
|
@ -1,20 +1,20 @@
|
||||
# cxt_studio
|
||||
# cxt_studio/12e4
|
||||
|
||||
![cxt_studio](https://i.imgur.com/AMCTioSh.jpeg)
|
||||
![cxt_studio/12e4](https://i.imgur.com/AMCTioSh.jpeg)
|
||||
|
||||
3x4 ortho rgb lighting 4 knobs.
|
||||
|
||||
* Keyboard Maintainer: [Colin Kinloch](https://github.com/ColinKinloch)
|
||||
* Hardware Supported: CXT-Studio
|
||||
* Hardware Supported: CXT-Studio/12E4
|
||||
* Hardware Availability: AliExpress. I think the manufacturer is on Taobao.
|
||||
|
||||
Make example for this keyboard (after setting up your build environment):
|
||||
|
||||
make cxt_studio:default
|
||||
make cxt_studio/12e4:default
|
||||
|
||||
Flashing example for this keyboard:
|
||||
|
||||
make cxt_studio:default:flash
|
||||
make cxt_studio/12e4: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).
|
||||
|
@ -1,22 +0,0 @@
|
||||
// Copyright 2023 Colin Kinloch (@ColinKinloch)
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
#pragma once
|
||||
|
||||
#define RGB_MATRIX_TYPING_HEATMAP_SPREAD 9
|
||||
|
||||
/*
|
||||
* Feature disable options
|
||||
* These options are also useful to firmware size reduction.
|
||||
*/
|
||||
|
||||
/* disable debug print */
|
||||
//#define NO_DEBUG
|
||||
|
||||
/* disable print */
|
||||
//#define NO_PRINT
|
||||
|
||||
/* disable action features */
|
||||
//#define NO_ACTION_LAYER
|
||||
//#define NO_ACTION_TAPPING
|
||||
//#define NO_ACTION_ONESHOT
|
@ -119,8 +119,7 @@
|
||||
"solid_reactive_multinexus": true,
|
||||
"solid_splash": true,
|
||||
"wave_left_right": true,
|
||||
"wave_up_down": true,
|
||||
"effect_max": true
|
||||
"wave_up_down": true
|
||||
},
|
||||
"layout": [
|
||||
{"matrix":[0, 0], "flags":1, "x":0, "y":0},
|
||||
|
@ -136,8 +136,7 @@
|
||||
"solid_reactive_multinexus": true,
|
||||
"solid_splash": true,
|
||||
"wave_left_right": true,
|
||||
"wave_up_down": true,
|
||||
"effect_max": true
|
||||
"wave_up_down": true
|
||||
},
|
||||
"layout": [
|
||||
{"matrix":[0, 0], "flags":1, "x":0, "y":0},
|
||||
|
@ -43,13 +43,13 @@ static painter_font_handle_t thintel;
|
||||
enum {
|
||||
RGB_MATRIX_EFFECT_NONE,
|
||||
# include "rgb_matrix_effects.inc"
|
||||
# undef RGB_MATRIX_EFFECT
|
||||
# ifdef RGB_MATRIX_CUSTOM_KB
|
||||
# include "rgb_matrix_kb.inc"
|
||||
# endif
|
||||
# ifdef RGB_MATRIX_CUSTOM_USER
|
||||
# include "rgb_matrix_user.inc"
|
||||
# endif
|
||||
# undef RGB_MATRIX_EFFECT
|
||||
};
|
||||
|
||||
# define RGB_MATRIX_EFFECT(x) \
|
||||
@ -60,13 +60,13 @@ const char *rgb_matrix_name(uint8_t effect) {
|
||||
case RGB_MATRIX_EFFECT_NONE:
|
||||
return "NONE";
|
||||
# include "rgb_matrix_effects.inc"
|
||||
# undef RGB_MATRIX_EFFECT
|
||||
# ifdef RGB_MATRIX_CUSTOM_KB
|
||||
# include "rgb_matrix_kb.inc"
|
||||
# endif
|
||||
# ifdef RGB_MATRIX_CUSTOM_USER
|
||||
# include "rgb_matrix_user.inc"
|
||||
# endif
|
||||
# undef RGB_MATRIX_EFFECT
|
||||
default:
|
||||
return "UNKNOWN";
|
||||
}
|
||||
|
@ -773,23 +773,24 @@ def find_keyboard_c(keyboard):
|
||||
def _extract_led_config(info_data, keyboard):
|
||||
"""Scan all <keyboard>.c files for led config
|
||||
"""
|
||||
cols = info_data['matrix_size']['cols']
|
||||
rows = info_data['matrix_size']['rows']
|
||||
|
||||
for feature in ['rgb_matrix', 'led_matrix']:
|
||||
if info_data.get('features', {}).get(feature, False) or feature in info_data:
|
||||
|
||||
# Only attempt search if dd led config is missing
|
||||
if 'layout' not in info_data.get(feature, {}):
|
||||
# Process
|
||||
for file in find_keyboard_c(keyboard):
|
||||
try:
|
||||
ret = find_led_config(file, cols, rows)
|
||||
if ret:
|
||||
info_data[feature] = info_data.get(feature, {})
|
||||
info_data[feature]['layout'] = ret
|
||||
except Exception as e:
|
||||
_log_warning(info_data, f'led_config: {file.name}: {e}')
|
||||
cols = info_data.get('matrix_size', {}).get('cols')
|
||||
rows = info_data.get('matrix_size', {}).get('rows')
|
||||
if cols and rows:
|
||||
# Process
|
||||
for file in find_keyboard_c(keyboard):
|
||||
try:
|
||||
ret = find_led_config(file, cols, rows)
|
||||
if ret:
|
||||
info_data[feature] = info_data.get(feature, {})
|
||||
info_data[feature]['layout'] = ret
|
||||
except Exception as e:
|
||||
_log_warning(info_data, f'led_config: {file.name}: {e}')
|
||||
else:
|
||||
_log_warning(info_data, 'led_config: matrix size required to parse g_led_config')
|
||||
|
||||
if info_data[feature].get('layout', None) and not info_data[feature].get('led_count', None):
|
||||
info_data[feature]['led_count'] = len(info_data[feature]['layout'])
|
||||
|
@ -1,4 +1,4 @@
|
||||
// Copyright 2024 QMK
|
||||
// Copyright 2025 QMK
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
/*******************************************************************************
|
||||
|
@ -1,4 +1,4 @@
|
||||
// Copyright 2024 QMK
|
||||
// Copyright 2025 QMK
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
/*******************************************************************************
|
||||
|
@ -1,4 +1,4 @@
|
||||
// Copyright 2024 QMK
|
||||
// Copyright 2025 QMK
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
/*******************************************************************************
|
||||
|
@ -1,4 +1,4 @@
|
||||
// Copyright 2024 QMK
|
||||
// Copyright 2025 QMK
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
/*******************************************************************************
|
||||
|
@ -1,4 +1,4 @@
|
||||
// Copyright 2024 QMK
|
||||
// Copyright 2025 QMK
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
/*******************************************************************************
|
||||
|
@ -1,4 +1,4 @@
|
||||
// Copyright 2024 QMK
|
||||
// Copyright 2025 QMK
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
/*******************************************************************************
|
||||
|
@ -1,4 +1,4 @@
|
||||
// Copyright 2024 QMK
|
||||
// Copyright 2025 QMK
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
/*******************************************************************************
|
||||
|
@ -1,4 +1,4 @@
|
||||
// Copyright 2024 QMK
|
||||
// Copyright 2025 QMK
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
/*******************************************************************************
|
||||
|
@ -1,4 +1,4 @@
|
||||
// Copyright 2024 QMK
|
||||
// Copyright 2025 QMK
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
/*******************************************************************************
|
||||
|
@ -1,4 +1,4 @@
|
||||
// Copyright 2024 QMK
|
||||
// Copyright 2025 QMK
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
/*******************************************************************************
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user