mirror of
https://github.com/qmk/qmk_firmware.git
synced 2025-07-27 11:31:13 +00:00
Merge b192ae13ac
into 36c3f4deba
This commit is contained in:
commit
5263dd2fa7
9
keyboards/redragon/k715_pro/bluetooth/bluetooth.mk
Normal file
9
keyboards/redragon/k715_pro/bluetooth/bluetooth.mk
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
|
||||||
|
BLUETOOTH_DIR = bluetooth
|
||||||
|
SRC += \
|
||||||
|
$(BLUETOOTH_DIR)/bluetooth_main.c \
|
||||||
|
$(BLUETOOTH_DIR)/btfunc.c \
|
||||||
|
$(BLUETOOTH_DIR)/btspi.c \
|
||||||
|
$(BLUETOOTH_DIR)/btsys.c
|
||||||
|
|
||||||
|
VPATH += $(TOP_DIR)/keyboards/redragon/k715_pro/$(BLUETOOTH_DIR)
|
31
keyboards/redragon/k715_pro/bluetooth/bluetooth_main.c
Normal file
31
keyboards/redragon/k715_pro/bluetooth/bluetooth_main.c
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
/* Copyright 2024 temp4gh
|
||||||
|
*
|
||||||
|
* 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"
|
||||||
|
|
||||||
|
__attribute__((weak)) void bluetooth_pre_task(void) {}
|
||||||
|
__attribute__((weak)) void bluetooth_task(void) {}
|
||||||
|
__attribute__((weak)) void bluetooth_post_task(void) {}
|
||||||
|
|
||||||
|
void bluetooth_tasks(void) {
|
||||||
|
bluetooth_pre_task();
|
||||||
|
bluetooth_task();
|
||||||
|
bluetooth_post_task();
|
||||||
|
}
|
||||||
|
|
||||||
|
void housekeeping_task_kb(void) {
|
||||||
|
bluetooth_tasks();
|
||||||
|
}
|
78
keyboards/redragon/k715_pro/bluetooth/btfunc.c
Normal file
78
keyboards/redragon/k715_pro/bluetooth/btfunc.c
Normal file
@ -0,0 +1,78 @@
|
|||||||
|
/* Copyright 2023 temp4gh
|
||||||
|
*
|
||||||
|
* 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 <stdbool.h>
|
||||||
|
#include "quantum.h"
|
||||||
|
#include "btfunc.h"
|
||||||
|
#include "btspi.h"
|
||||||
|
#include "k715_pro.h"
|
||||||
|
|
||||||
|
extern user_settings_config g_config;
|
||||||
|
extern tDevInfo dev_info;
|
||||||
|
|
||||||
|
void k715bt_send_ble_req_bt_info(void)
|
||||||
|
{
|
||||||
|
k715bt_send_spi_extend_single_packet(KBD_CMD_GET_INFO, NULL, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
void k715bt_send_ble_req_bt_name(void)
|
||||||
|
{
|
||||||
|
k715bt_send_spi_extend_single_packet(KBD_CMD_BT_GETNAME, NULL, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
void k715bt_send_mcu_req_ble_fwver(void)
|
||||||
|
{
|
||||||
|
k715bt_send_spi_extend_single_packet(KBD_CMD_MCU_REQ_BT_FWVER, NULL, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
void k715bt_send_ble_switch_device_mode(uint8_t mode)
|
||||||
|
{
|
||||||
|
k715bt_send_spi_extend_single_packet(KBD_CMD_MODE_SET, &mode, 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
void k715bt_send_ble_pair(uint8_t pair_timeout, uint8_t *adv_data, uint8_t adv_data_len)
|
||||||
|
{
|
||||||
|
k715bt_send_spi_extend_single_packet(KBD_CMD_BT_PAIR, NULL, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
void k715bt_send_ble_reconnect_bt(uint8_t reconn_timeout)
|
||||||
|
{
|
||||||
|
k715bt_send_spi_extend_single_packet(KBD_CMD_BT_BACK, &reconn_timeout, 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
void k715bt_send_ble_disconnect_bt(void)
|
||||||
|
{
|
||||||
|
k715bt_send_spi_extend_single_packet(KBD_CMD_BT_DISCONNECT, NULL, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
void k715bt_send_ble_set_device_name(uint8_t *dev_name, uint8_t dev_name_len)
|
||||||
|
{
|
||||||
|
k715bt_send_spi_extend_single_packet(KBD_CMD_BT_SETNAME, dev_name, dev_name_len);
|
||||||
|
}
|
||||||
|
|
||||||
|
void k715bt_send_ble_set_bt_channel(uint8_t bt_channel)
|
||||||
|
{
|
||||||
|
k715bt_send_spi_extend_single_packet(KBD_CMD_BT_SETCHN, &bt_channel, 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
void k715bt_switch_channel(uint8_t bt_channel)
|
||||||
|
{
|
||||||
|
if(g_config.bt_ch != bt_channel)
|
||||||
|
{
|
||||||
|
k715bt_send_ble_set_bt_channel(bt_channel);
|
||||||
|
g_config.bt_ch = bt_channel;
|
||||||
|
}
|
||||||
|
}
|
30
keyboards/redragon/k715_pro/bluetooth/btfunc.h
Normal file
30
keyboards/redragon/k715_pro/bluetooth/btfunc.h
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
/* Copyright 2023 temp4gh
|
||||||
|
*
|
||||||
|
* 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 "stdint.h"
|
||||||
|
|
||||||
|
void k715bt_send_ble_req_bt_info(void);
|
||||||
|
void k715bt_send_ble_req_bt_name(void);
|
||||||
|
void k715bt_send_mcu_req_ble_fwver(void);
|
||||||
|
void k715bt_send_ble_set_device_name(uint8_t *dev_name, uint8_t dev_name_len);
|
||||||
|
void k715bt_send_ble_switch_device_mode(uint8_t mode);
|
||||||
|
void k715bt_send_ble_set_bt_channel(uint8_t bt_channel);
|
||||||
|
void k715bt_send_ble_pair(uint8_t pair_timeout, uint8_t *adv_data, uint8_t adv_data_len);
|
||||||
|
void k715bt_send_ble_reconnect_bt(uint8_t reconn_timeout);
|
||||||
|
void k715bt_send_ble_disconnect_bt(void);
|
||||||
|
void k715bt_switch_channel(uint8_t bt_channel);
|
1231
keyboards/redragon/k715_pro/bluetooth/btspi.c
Normal file
1231
keyboards/redragon/k715_pro/bluetooth/btspi.c
Normal file
File diff suppressed because it is too large
Load Diff
204
keyboards/redragon/k715_pro/bluetooth/btspi.h
Normal file
204
keyboards/redragon/k715_pro/bluetooth/btspi.h
Normal file
@ -0,0 +1,204 @@
|
|||||||
|
/* Copyright 2023 temp4gh
|
||||||
|
*
|
||||||
|
* 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 ENABLE_SPI_BLE_MODULE
|
||||||
|
|
||||||
|
#define SPI_MODE 3
|
||||||
|
#define SPI_DIVISOR 32
|
||||||
|
|
||||||
|
#define IS31FL3733_POWERON_PIN B2
|
||||||
|
#define EXT_IS31FL3733_SUSPEND_PIN (IS31FL3733_POWERON_PIN)
|
||||||
|
|
||||||
|
#define EXT_READ_DIP_PIN_USB_MODE C13
|
||||||
|
#define EXT_READ_DIP_PIN_BT_MODE C14
|
||||||
|
|
||||||
|
#define CAPS_LOCK_DRV_PIN B8
|
||||||
|
#define set_caps_lock_on() palClearLine(CAPS_LOCK_DRV_PIN)
|
||||||
|
#define set_caps_lock_off() palSetLine(CAPS_LOCK_DRV_PIN)
|
||||||
|
|
||||||
|
#define EXT_READ_SPI_SLAVE_INT_PIN B9
|
||||||
|
#define EXT_READ_SPI_SLAVE_GPIO_INIT (PAL_MODE_INPUT_PULLUP)
|
||||||
|
#define EXT_READ_SPI_SLAVE_READY (PAL_LOW)
|
||||||
|
#define EXT_READ_SPI_SLAVE_NOT_READY (PAL_HIGH)
|
||||||
|
|
||||||
|
#define KBD_BT_MODE 0
|
||||||
|
#define KBD_USB_MODE 2
|
||||||
|
#define KBD_POWEROFF_MODE 8
|
||||||
|
#define INVALID_DIP_DEVICE_MODE 0xFF
|
||||||
|
|
||||||
|
#define DEVICE_MODE_BT KBD_BT_MODE
|
||||||
|
#define DEVICE_MODE_2D4G KBD_24G_MODE
|
||||||
|
#define DEVICE_MODE_USB KBD_USB_MODE
|
||||||
|
|
||||||
|
#define BTSTATEDISCONN 0
|
||||||
|
#define BTSTATEDISCOVER 1
|
||||||
|
#define BTSTATECONNECTED 2
|
||||||
|
#define BTSTATERECONN 3
|
||||||
|
|
||||||
|
#define BT_CHANNEL_1 1
|
||||||
|
#define BT_CHANNEL_INVALID 0xFF
|
||||||
|
|
||||||
|
#define BT_BACK_TIMEOUT 60000
|
||||||
|
#define BT_BACK_TIMEOUT_MS ((BT_BACK_TIMEOUT) / 1000)
|
||||||
|
|
||||||
|
#define BT_BP_TIMEOUT 60000
|
||||||
|
#define BT_BP_TIMEOUT_MS ((BT_BP_TIMEOUT) / 1000)
|
||||||
|
|
||||||
|
//means use default value
|
||||||
|
#define DEFAULT_BT_BP_TIMEOUT 0
|
||||||
|
|
||||||
|
//based on ms
|
||||||
|
#define RF_TIMEOUT_OFFSET 1000
|
||||||
|
|
||||||
|
#define MAX_SPI_BLE_SINGLE_PACKET_LENGTH 12
|
||||||
|
#define MAX_SPI_BLE_MUL_PACKET_LENGTH 11
|
||||||
|
#define MAX_SPI_BLE_SINGLE_PACKET_LOAD_LENGTH 13
|
||||||
|
#define MAX_BLE_SPI_RX_FRAME_MAX_SIZE 16
|
||||||
|
#define MAX_BLE_SPI_TX_FRAME_MAX_SIZE (MAX_BLE_SPI_RX_FRAME_MAX_SIZE)
|
||||||
|
#define MAX_BLE_SPI_NOTIFY_CMD_BUF_SIZE (32)
|
||||||
|
|
||||||
|
#define SPI_BLE_PACKET_HEADER 0x5A
|
||||||
|
|
||||||
|
#define SEND_BT_NAME_DELAY_MS 10
|
||||||
|
|
||||||
|
#define KBD_CMD_UNKNOW 0x0
|
||||||
|
#define KBD_CMD_MODE_SET 0x11
|
||||||
|
#define KBD_CMD_BT_PAIR 0x21
|
||||||
|
#define KBD_CMD_BT_BACK 0x22
|
||||||
|
#define KBD_CMD_BT_DISCONNECT 0x23
|
||||||
|
#define KBD_CMD_BT_SETNAME 0x25
|
||||||
|
#define KBD_CMD_BT_GETNAME 0x26
|
||||||
|
#define KBD_CMD_BT_SETCHN 0x27
|
||||||
|
#define KBD_CMD_GET_INFO 0x51
|
||||||
|
#define KBD_CMD_INVALID 0x0
|
||||||
|
|
||||||
|
#define KBD_CMD_BT_QUERY_KEY_STATE 0x66
|
||||||
|
#define KBD_CMD_MCU_RESP_KEY_STATE 0x67
|
||||||
|
#define KBD_CMD_QUERY_LOST_KEY_STATE 0x68
|
||||||
|
|
||||||
|
#define KBD_CMD_SEND_BT_TEST_RF 0x71
|
||||||
|
#define KBD_CMD_MCU_REQ_BT_FWVER 0x72
|
||||||
|
#define KBD_CMD_MCU_RECV_BT_FWVER 0x72
|
||||||
|
#define KBD_CMD_BT_REQ_MCU_FWVER 0x73
|
||||||
|
#define KBD_CMD_SEND_BT_MCU_FWVER 0x73
|
||||||
|
#define KBD_CMD_BT_REQ_DEV_STATUS 0x74
|
||||||
|
#define KBD_CMD_SEND_BT_DEV_STATUS 0x74
|
||||||
|
#define KBD_CMD_BT_REQ_LIGHT_CONTROL 0x75
|
||||||
|
#define KBD_CMD_BT_REQ_DEEP_SLEEP 0x76
|
||||||
|
#define KBD_CMD_BT_SET_TEST_MODE 0x77
|
||||||
|
|
||||||
|
typedef struct
|
||||||
|
{
|
||||||
|
uint32_t NumLock: 1;
|
||||||
|
uint32_t CapsLock: 1;
|
||||||
|
uint32_t ScrollLock: 1;
|
||||||
|
uint32_t red: 1;
|
||||||
|
uint32_t green: 1;
|
||||||
|
uint32_t blue: 1;
|
||||||
|
uint32_t win_lock: 1;
|
||||||
|
uint32_t kbd_lock: 1;
|
||||||
|
|
||||||
|
uint32_t btstate: 2;
|
||||||
|
uint32_t wifistate: 3;
|
||||||
|
uint32_t btpair: 1;
|
||||||
|
uint32_t btback: 1;
|
||||||
|
uint32_t lowVoltage: 1;
|
||||||
|
|
||||||
|
uint32_t devmode: 7;
|
||||||
|
uint32_t btconnected: 1;
|
||||||
|
|
||||||
|
uint32_t usbstate: 3;
|
||||||
|
uint32_t fn_down: 1;
|
||||||
|
uint32_t pair: 1;
|
||||||
|
uint32_t res_bt_isr: 1;
|
||||||
|
uint32_t usb_connected: 2;
|
||||||
|
|
||||||
|
uint32_t last_key_ms;
|
||||||
|
uint32_t bt_timeout;
|
||||||
|
} tDevInfo;
|
||||||
|
|
||||||
|
#define BLE_SPI_RX_BUF_MAX_SIZE 20
|
||||||
|
typedef struct
|
||||||
|
{
|
||||||
|
uint8_t spi_read_buf[BLE_SPI_RX_BUF_MAX_SIZE];
|
||||||
|
uint8_t spi_read_length;
|
||||||
|
} spi_read_data_t;
|
||||||
|
|
||||||
|
typedef struct __attribute__((__packed__))
|
||||||
|
{
|
||||||
|
uint32_t NumLock: 1;
|
||||||
|
uint32_t CapsLock: 1;
|
||||||
|
uint32_t ScrollLock: 1;
|
||||||
|
uint32_t res: 1;
|
||||||
|
uint32_t remote_btn_down: 1;
|
||||||
|
uint32_t remote_btn_dec: 1;
|
||||||
|
uint32_t remote_btn_add: 1;
|
||||||
|
uint32_t remote_chg: 1;
|
||||||
|
uint32_t state_bt: 8;
|
||||||
|
uint32_t state_24g: 8;
|
||||||
|
uint32_t state_usb: 8;
|
||||||
|
uint8_t mode;
|
||||||
|
uint8_t eff_mode;
|
||||||
|
uint8_t eff_bright;
|
||||||
|
uint8_t eff_speed;
|
||||||
|
uint8_t eff_r;
|
||||||
|
uint8_t eff_g;
|
||||||
|
uint8_t eff_b;
|
||||||
|
uint8_t ch;
|
||||||
|
}
|
||||||
|
spi_slave_dev_info_t;
|
||||||
|
|
||||||
|
#define KB_MAGIC_NUMBER 0xBE
|
||||||
|
typedef struct
|
||||||
|
{
|
||||||
|
uint8_t magic_num;
|
||||||
|
|
||||||
|
uint8_t caps_lock: 1;
|
||||||
|
uint8_t num_lock: 1;
|
||||||
|
uint8_t scroll_lock: 1;
|
||||||
|
uint8_t winlock_state: 1;
|
||||||
|
|
||||||
|
uint8_t kbd_lock: 1;
|
||||||
|
uint8_t reset_factory: 1;
|
||||||
|
uint8_t reserved_bit: 2;
|
||||||
|
|
||||||
|
uint8_t kbd_dev_mode;
|
||||||
|
uint8_t bt_ch;
|
||||||
|
uint8_t bt_used;
|
||||||
|
uint8_t bt_last_connected;
|
||||||
|
|
||||||
|
uint8_t reset_reason;
|
||||||
|
uint8_t unused;
|
||||||
|
} user_settings_config;
|
||||||
|
|
||||||
|
#define spi_use_begin() do{}while(0)
|
||||||
|
#define spi_use_end() do{}while(0)
|
||||||
|
|
||||||
|
#define kbd_spi_send_byte(_t_) spi_write(_t_)
|
||||||
|
#define kbd_spi_rec_byte(_t_) spi_read()
|
||||||
|
|
||||||
|
void set_dev_info_bt_pair_timeout(void);
|
||||||
|
void set_dev_info_bt_reconn_timeout(void);
|
||||||
|
void check_read_spi_data(void);
|
||||||
|
void update_caps_led(void);
|
||||||
|
void k715_bt_start_pair(uint8_t chn);
|
||||||
|
bool is_usb_mode_enabled(void);
|
||||||
|
bool is_bt_mode_enabled(void);
|
||||||
|
void k715_ble_spi_init(void);
|
||||||
|
void k715bt_send_spi_extend_single_packet(uint8_t param_type, uint8_t *param_data, uint8_t param_len);
|
50
keyboards/redragon/k715_pro/bluetooth/btsys.c
Normal file
50
keyboards/redragon/k715_pro/bluetooth/btsys.c
Normal file
@ -0,0 +1,50 @@
|
|||||||
|
/* Copyright 2024 temp4gh
|
||||||
|
*
|
||||||
|
* 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"
|
||||||
|
#include "config.h"
|
||||||
|
#include "btspi.h"
|
||||||
|
|
||||||
|
void init_set_IS31FL3733_poweron(void)
|
||||||
|
{
|
||||||
|
palSetLineMode(IS31FL3733_POWERON_PIN, PAL_MODE_OUTPUT_PUSHPULL);
|
||||||
|
palSetLine(IS31FL3733_POWERON_PIN);
|
||||||
|
}
|
||||||
|
|
||||||
|
void bootloader_jump(void)
|
||||||
|
{
|
||||||
|
NVIC_SystemReset();
|
||||||
|
}
|
||||||
|
|
||||||
|
void mcu_reset(void)
|
||||||
|
{
|
||||||
|
NVIC_SystemReset();
|
||||||
|
}
|
||||||
|
|
||||||
|
void board_init(void)
|
||||||
|
{
|
||||||
|
AFIO->MAPR |= AFIO_MAPR_SWJ_CFG_DISABLE;
|
||||||
|
|
||||||
|
palSetLineMode(CAPS_LOCK_DRV_PIN, PAL_MODE_OUTPUT_PUSHPULL);
|
||||||
|
set_caps_lock_off();
|
||||||
|
|
||||||
|
palSetPadMode(GPIOC, 11, PAL_MODE_INPUT);
|
||||||
|
palSetPadMode(GPIOA, 13, PAL_MODE_OUTPUT_PUSHPULL);
|
||||||
|
palSetPadMode(GPIOA, 14, PAL_MODE_OUTPUT_PUSHPULL);
|
||||||
|
palSetPadMode(GPIOA, 15, PAL_MODE_OUTPUT_PUSHPULL);
|
||||||
|
|
||||||
|
init_set_IS31FL3733_poweron();
|
||||||
|
}
|
27
keyboards/redragon/k715_pro/config.h
Normal file
27
keyboards/redragon/k715_pro/config.h
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
/* Copyright 2023 temp4gh
|
||||||
|
*
|
||||||
|
* 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 IS31FL3733_I2C_ADDRESS_1 IS31FL3733_I2C_ADDRESS_GND_GND
|
||||||
|
#define IS31FL3733_I2C_ADDRESS_2 IS31FL3733_I2C_ADDRESS_GND_VCC
|
||||||
|
|
||||||
|
#define SPI_DRIVER SPID2
|
||||||
|
#define SPI_SCK_PIN B13
|
||||||
|
#define SPI_MOSI_PIN B15
|
||||||
|
#define SPI_MISO_PIN B14
|
||||||
|
|
||||||
|
#define SPI_SLAVE_CS B12
|
28
keyboards/redragon/k715_pro/halconf.h
Normal file
28
keyboards/redragon/k715_pro/halconf.h
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
/* Copyright 2020 QMK
|
||||||
|
*
|
||||||
|
* 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_next <halconf.h>
|
||||||
|
|
||||||
|
#undef HAL_USE_I2C
|
||||||
|
#define HAL_USE_I2C TRUE
|
||||||
|
|
||||||
|
#undef HAL_USE_SPI
|
||||||
|
#define HAL_USE_SPI TRUE
|
||||||
|
|
||||||
|
#undef SPI_SELECT_MODE
|
||||||
|
#define SPI_SELECT_MODE SPI_SELECT_MODE_PAD
|
303
keyboards/redragon/k715_pro/k715_pro.c
Normal file
303
keyboards/redragon/k715_pro/k715_pro.c
Normal file
@ -0,0 +1,303 @@
|
|||||||
|
/* Copyright 2023 temp4gh
|
||||||
|
*
|
||||||
|
* This program is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 2 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include QMK_KEYBOARD_H
|
||||||
|
#include "spi_master.h"
|
||||||
|
#include "host_driver.h"
|
||||||
|
#include "config.h"
|
||||||
|
|
||||||
|
#include "k715_pro.h"
|
||||||
|
#include "btspi.h"
|
||||||
|
|
||||||
|
const is31fl3733_led_t PROGMEM g_is31fl3733_leds[IS31FL3733_LED_COUNT] =
|
||||||
|
{
|
||||||
|
{0, SW7_CS1, SW9_CS1, SW8_CS1},
|
||||||
|
{0, SW7_CS3, SW9_CS3, SW8_CS3},
|
||||||
|
{0, SW7_CS4, SW9_CS4, SW8_CS4},
|
||||||
|
{0, SW7_CS5, SW9_CS5, SW8_CS5},
|
||||||
|
{0, SW7_CS6, SW9_CS6, SW8_CS6},
|
||||||
|
{0, SW7_CS7, SW9_CS7, SW8_CS7},
|
||||||
|
{0, SW7_CS8, SW9_CS8, SW8_CS8},
|
||||||
|
{0, SW7_CS9, SW9_CS9, SW8_CS9},
|
||||||
|
{0, SW7_CS10, SW9_CS10, SW8_CS10},
|
||||||
|
{0, SW7_CS11, SW9_CS11, SW8_CS11},
|
||||||
|
{0, SW7_CS12, SW9_CS12, SW8_CS12},
|
||||||
|
{0, SW7_CS13, SW9_CS13, SW8_CS13},
|
||||||
|
{0, SW7_CS14, SW9_CS14, SW8_CS14},
|
||||||
|
{0, SW7_CS15, SW9_CS15, SW8_CS15},
|
||||||
|
{0, SW4_CS1, SW6_CS1, SW5_CS1},
|
||||||
|
{0, SW4_CS2, SW6_CS2, SW5_CS2},
|
||||||
|
{0, SW4_CS3, SW6_CS3, SW5_CS3},
|
||||||
|
{0, SW4_CS4, SW6_CS4, SW5_CS4},
|
||||||
|
{0, SW4_CS5, SW6_CS5, SW5_CS5},
|
||||||
|
{0, SW4_CS6, SW6_CS6, SW5_CS6},
|
||||||
|
{0, SW4_CS7, SW6_CS7, SW5_CS7},
|
||||||
|
{0, SW4_CS8, SW6_CS8, SW5_CS8},
|
||||||
|
{0, SW4_CS9, SW6_CS9, SW5_CS9},
|
||||||
|
{0, SW4_CS10, SW6_CS10, SW5_CS10},
|
||||||
|
{0, SW4_CS11, SW6_CS11, SW5_CS11},
|
||||||
|
{0, SW4_CS12, SW6_CS12, SW5_CS12},
|
||||||
|
{0, SW4_CS13, SW6_CS13, SW5_CS13},
|
||||||
|
{0, SW4_CS14, SW6_CS14, SW5_CS14},
|
||||||
|
{0, SW4_CS15, SW6_CS15, SW5_CS15},
|
||||||
|
{0, SW1_CS1, SW3_CS1, SW2_CS1},
|
||||||
|
{0, SW1_CS2, SW3_CS2, SW2_CS2},
|
||||||
|
{0, SW1_CS3, SW3_CS3, SW2_CS3},
|
||||||
|
{0, SW1_CS4, SW3_CS4, SW2_CS4},
|
||||||
|
{0, SW1_CS5, SW3_CS5, SW2_CS5},
|
||||||
|
{0, SW1_CS6, SW3_CS6, SW2_CS6},
|
||||||
|
{0, SW1_CS7, SW3_CS7, SW2_CS7},
|
||||||
|
{0, SW1_CS8, SW3_CS8, SW2_CS8},
|
||||||
|
{0, SW1_CS9, SW3_CS9, SW2_CS9},
|
||||||
|
{0, SW1_CS10, SW3_CS10, SW2_CS10},
|
||||||
|
{0, SW1_CS11, SW3_CS11, SW2_CS11},
|
||||||
|
{0, SW1_CS12, SW3_CS12, SW2_CS12},
|
||||||
|
{0, SW1_CS13, SW3_CS13, SW2_CS13},
|
||||||
|
{0, SW1_CS14, SW3_CS14, SW2_CS14},
|
||||||
|
{0, SW1_CS15, SW3_CS15, SW2_CS15},
|
||||||
|
{1, SW7_CS1, SW9_CS1, SW8_CS1},
|
||||||
|
{1, SW7_CS2, SW9_CS2, SW8_CS2},
|
||||||
|
{1, SW7_CS3, SW9_CS3, SW8_CS3},
|
||||||
|
{1, SW7_CS4, SW9_CS4, SW8_CS4},
|
||||||
|
{1, SW7_CS5, SW9_CS5, SW8_CS5},
|
||||||
|
{1, SW7_CS6, SW9_CS6, SW8_CS6},
|
||||||
|
{1, SW7_CS7, SW9_CS7, SW8_CS7},
|
||||||
|
{1, SW7_CS8, SW9_CS8, SW8_CS8},
|
||||||
|
{1, SW7_CS9, SW9_CS9, SW8_CS9},
|
||||||
|
{1, SW7_CS10, SW9_CS10, SW8_CS10},
|
||||||
|
{1, SW7_CS11, SW9_CS11, SW8_CS11},
|
||||||
|
{1, SW7_CS12, SW9_CS12, SW8_CS12},
|
||||||
|
{1, SW7_CS13, SW9_CS13, SW8_CS13},
|
||||||
|
{1, SW7_CS14, SW9_CS14, SW8_CS14},
|
||||||
|
{1, SW7_CS15, SW9_CS15, SW8_CS15},
|
||||||
|
{1, SW4_CS1, SW6_CS1, SW5_CS1},
|
||||||
|
{1, SW4_CS2, SW6_CS2, SW5_CS2},
|
||||||
|
{1, SW4_CS3, SW6_CS3, SW5_CS3},
|
||||||
|
{1, SW4_CS4, SW6_CS4, SW5_CS4},
|
||||||
|
{1, SW4_CS5, SW6_CS5, SW5_CS5},
|
||||||
|
{1, SW4_CS6, SW6_CS6, SW5_CS6},
|
||||||
|
{1, SW4_CS7, SW6_CS7, SW5_CS7},
|
||||||
|
{1, SW4_CS8, SW6_CS8, SW5_CS8},
|
||||||
|
{1, SW4_CS9, SW6_CS9, SW5_CS9},
|
||||||
|
{1, SW4_CS10, SW6_CS10, SW5_CS10},
|
||||||
|
{1, SW4_CS11, SW6_CS11, SW5_CS11},
|
||||||
|
{1, SW4_CS12, SW6_CS12, SW5_CS12},
|
||||||
|
{1, SW4_CS13, SW6_CS13, SW5_CS13},
|
||||||
|
{1, SW4_CS14, SW6_CS14, SW5_CS14},
|
||||||
|
{1, SW4_CS15, SW6_CS15, SW5_CS15},
|
||||||
|
{1, SW1_CS1, SW3_CS1, SW2_CS1},
|
||||||
|
{1, SW1_CS2, SW3_CS2, SW2_CS2},
|
||||||
|
{1, SW1_CS3, SW3_CS3, SW2_CS3},
|
||||||
|
{1, SW1_CS5, SW3_CS5, SW2_CS5},
|
||||||
|
{1, SW1_CS6, SW3_CS6, SW2_CS6},
|
||||||
|
{1, SW1_CS7, SW3_CS7, SW2_CS7},
|
||||||
|
{1, SW1_CS8, SW3_CS8, SW2_CS8},
|
||||||
|
{1, SW1_CS9, SW3_CS9, SW2_CS9},
|
||||||
|
{1, SW1_CS10, SW3_CS10, SW2_CS10},
|
||||||
|
{1, SW1_CS11, SW3_CS11, SW2_CS11},
|
||||||
|
{1, SW1_CS12, SW3_CS12, SW2_CS12},
|
||||||
|
{1, SW1_CS13, SW3_CS13, SW2_CS13},
|
||||||
|
{1, SW1_CS14, SW3_CS14, SW2_CS14},
|
||||||
|
{1, SW1_CS15, SW3_CS15, SW2_CS15},
|
||||||
|
{0, SW7_CS2, SW9_CS2, SW8_CS2},
|
||||||
|
{1, SW1_CS4, SW3_CS4, SW2_CS4}
|
||||||
|
};
|
||||||
|
|
||||||
|
static void send_ble_hid_report(uint8_t report_type, uint8_t *hid_report_buf, uint8_t data_len)
|
||||||
|
{
|
||||||
|
switch(report_type)
|
||||||
|
{
|
||||||
|
case BLE_HID_REPORT_TYPE_NORMAL_KEY:
|
||||||
|
{
|
||||||
|
k715bt_send_spi_extend_single_packet(report_type, hid_report_buf, data_len);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
case BLE_HID_REPORT_TYPE_EXTRA_KEY:
|
||||||
|
{
|
||||||
|
k715bt_send_spi_extend_single_packet(report_type, hid_report_buf, data_len);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
default:
|
||||||
|
{
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static uint8_t k715_ble_leds(void)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void k715_send_keyboard(report_keyboard_t *report)
|
||||||
|
{
|
||||||
|
uint8_t raw_data[KEYBOARD_REPORT_KEYS + 2];
|
||||||
|
|
||||||
|
raw_data[0] = report->mods;
|
||||||
|
raw_data[1] = 0;
|
||||||
|
for(int i = 0; i < KEYBOARD_REPORT_KEYS; i++)
|
||||||
|
{
|
||||||
|
raw_data[2 + i] = report->keys[i];
|
||||||
|
}
|
||||||
|
|
||||||
|
send_ble_hid_report(BLE_HID_REPORT_TYPE_NORMAL_KEY, raw_data, KEYBOARD_REPORT_KEYS + 2);
|
||||||
|
}
|
||||||
|
|
||||||
|
#ifdef NKRO_ENABLE
|
||||||
|
static void k715_send_nkro(report_nkro_t *report)
|
||||||
|
{
|
||||||
|
uint8_t raw_data[NKRO_REPORT_BITS + 2];
|
||||||
|
|
||||||
|
raw_data[0] = report->mods;
|
||||||
|
raw_data[1] = 0;
|
||||||
|
for(int i = 0; i < NKRO_REPORT_BITS; i++)
|
||||||
|
{
|
||||||
|
raw_data[2 + i] = report->bits[i];
|
||||||
|
}
|
||||||
|
|
||||||
|
send_ble_hid_report(BLE_HID_REPORT_TYPE_ALL_KEY, raw_data, NKRO_REPORT_BITS + 2);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
static void k715_send_mouse(report_mouse_t *report)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
static void k715_send_extra(report_extra_t *report)
|
||||||
|
{
|
||||||
|
if(report->report_id == REPORT_ID_CONSUMER)
|
||||||
|
{
|
||||||
|
uint8_t extra_buf[6];
|
||||||
|
|
||||||
|
memset(extra_buf, 0, sizeof(extra_buf));
|
||||||
|
memcpy(extra_buf, &report->usage, 2);
|
||||||
|
send_ble_hid_report(BLE_HID_REPORT_TYPE_EXTRA_KEY, extra_buf, sizeof(extra_buf));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static host_driver_t k715_ble_driver =
|
||||||
|
{
|
||||||
|
#ifdef NKRO_ENABLE
|
||||||
|
k715_ble_leds, k715_send_keyboard, k715_send_nkro, k715_send_mouse, k715_send_extra
|
||||||
|
#else
|
||||||
|
k715_ble_leds, k715_send_keyboard, NULL, k715_send_mouse, k715_send_extra
|
||||||
|
#endif
|
||||||
|
};
|
||||||
|
|
||||||
|
static bool _swtich_bt_driver(void)
|
||||||
|
{
|
||||||
|
if(host_get_driver() == &k715_ble_driver)
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
clear_keyboard();
|
||||||
|
|
||||||
|
#ifdef NKRO_ENABLE
|
||||||
|
keymap_config.nkro = true;
|
||||||
|
#else
|
||||||
|
keymap_config.nkro = false;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
host_set_driver(&k715_ble_driver);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
void k715bt_bt_swtich_ble_driver(void)
|
||||||
|
{
|
||||||
|
if(is_bt_mode_enabled())
|
||||||
|
{
|
||||||
|
_swtich_bt_driver();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void k715_rgb_matrix_flags_init(void)
|
||||||
|
{
|
||||||
|
rgb_matrix_enable();
|
||||||
|
rgb_matrix_set_flags(NORMAL_LED_FLAG_BIT);
|
||||||
|
}
|
||||||
|
|
||||||
|
void k715_bt_init(void)
|
||||||
|
{
|
||||||
|
k715_ble_spi_init();
|
||||||
|
k715_rgb_matrix_flags_init();
|
||||||
|
}
|
||||||
|
|
||||||
|
bool led_update_kb(led_t led_state)
|
||||||
|
{
|
||||||
|
bool res = led_update_user(led_state);
|
||||||
|
|
||||||
|
if(res)
|
||||||
|
{
|
||||||
|
update_caps_led();
|
||||||
|
}
|
||||||
|
|
||||||
|
return res;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool process_record_kb_bt(uint16_t keycode, keyrecord_t *record)
|
||||||
|
{
|
||||||
|
static uint8_t chn = 0;
|
||||||
|
|
||||||
|
switch(keycode)
|
||||||
|
{
|
||||||
|
case BT_CHN1:
|
||||||
|
case BT_CHN2:
|
||||||
|
case BT_CHN3:
|
||||||
|
if(is_bt_mode_enabled())
|
||||||
|
{
|
||||||
|
if(record->event.pressed)
|
||||||
|
{
|
||||||
|
chn = keycode - BT_CHN1 + 1;
|
||||||
|
k715_bt_start_pair(chn);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
chn = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool process_record_kb(uint16_t keycode, keyrecord_t *record)
|
||||||
|
{
|
||||||
|
if(!process_record_user(keycode, record))
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
return process_record_kb_bt(keycode, record);
|
||||||
|
}
|
||||||
|
|
||||||
|
void bluetooth_task(void)
|
||||||
|
{
|
||||||
|
k715bt_bt_swtich_ble_driver();
|
||||||
|
check_read_spi_data();
|
||||||
|
}
|
||||||
|
|
||||||
|
void keyboard_post_init_kb(void)
|
||||||
|
{
|
||||||
|
k715_bt_init();
|
||||||
|
keyboard_post_init_user();
|
||||||
|
}
|
35
keyboards/redragon/k715_pro/k715_pro.h
Normal file
35
keyboards/redragon/k715_pro/k715_pro.h
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
/* Copyright 2023 temp4gh
|
||||||
|
*
|
||||||
|
* 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 BLE_HID_REPORT_TYPE_NORMAL_KEY 0x1
|
||||||
|
#define BLE_HID_REPORT_TYPE_MOUSE_KEY 0x2
|
||||||
|
#define BLE_HID_REPORT_TYPE_EXTRA_KEY 0x3
|
||||||
|
#define BLE_HID_REPORT_TYPE_SYSTEM_KEY 0x4
|
||||||
|
#define BLE_HID_REPORT_TYPE_ALL_KEY 0x5
|
||||||
|
|
||||||
|
enum {
|
||||||
|
BT_CHN1,
|
||||||
|
BT_CHN2,
|
||||||
|
BT_CHN3,
|
||||||
|
NEW_SAFE_RANGE
|
||||||
|
};
|
||||||
|
|
||||||
|
#define NORMAL_LED_FLAG_BIT (LED_FLAG_KEYLIGHT | LED_FLAG_MODIFIER)
|
||||||
|
|
242
keyboards/redragon/k715_pro/keyboard.json
Normal file
242
keyboards/redragon/k715_pro/keyboard.json
Normal file
@ -0,0 +1,242 @@
|
|||||||
|
{
|
||||||
|
"manufacturer": "redragon",
|
||||||
|
"keyboard_name": "k715 pro",
|
||||||
|
"bootloader": "stm32duino",
|
||||||
|
"bootmagic": {
|
||||||
|
"matrix": [1, 0]
|
||||||
|
},
|
||||||
|
"diode_direction": "COL2ROW",
|
||||||
|
"dynamic_keymap": {
|
||||||
|
"layer_count": 2
|
||||||
|
},
|
||||||
|
"encoder": {
|
||||||
|
"rotary": [
|
||||||
|
{"pin_a": "B5", "pin_b": "B4"}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"features": {
|
||||||
|
"bootmagic": true,
|
||||||
|
"console": true,
|
||||||
|
"encoder": true,
|
||||||
|
"extrakey": true,
|
||||||
|
"mousekey": true,
|
||||||
|
"nkro": false,
|
||||||
|
"rgb_matrix": true
|
||||||
|
},
|
||||||
|
"indicators": {
|
||||||
|
"caps_lock": "B8",
|
||||||
|
"on_state": 0
|
||||||
|
},
|
||||||
|
"matrix_pins": {
|
||||||
|
"cols": ["A6", "A7", "C4", "C5", "B0", "B1", "C6", "C7", "C8", "C9", "A8", "A9", "A10", "A13", "A14", "A15"],
|
||||||
|
"rows": ["A0", "A1", "A2", "A3", "A4", "A5"]
|
||||||
|
},
|
||||||
|
"processor": "STM32F103",
|
||||||
|
"rgb_matrix": {
|
||||||
|
"animations": {
|
||||||
|
"solid_color": true,
|
||||||
|
"alphas_mods": true,
|
||||||
|
"gradient_up_down": true,
|
||||||
|
"gradient_left_right": true,
|
||||||
|
"breathing": true,
|
||||||
|
"band_sat": true,
|
||||||
|
"band_val": true,
|
||||||
|
"band_spiral_val": true,
|
||||||
|
"cycle_all": true,
|
||||||
|
"cycle_left_right": true,
|
||||||
|
"cycle_up_down": true,
|
||||||
|
"hue_wave": true,
|
||||||
|
"pixel_flow": true
|
||||||
|
},
|
||||||
|
"driver": "is31fl3733",
|
||||||
|
"layout": [
|
||||||
|
{"matrix": [0, 0], "x": 7, "y": 2, "flags": 4},
|
||||||
|
{"matrix": [0, 2], "x": 34, "y": 2, "flags": 4},
|
||||||
|
{"matrix": [0, 3], "x": 48, "y": 2, "flags": 4},
|
||||||
|
{"matrix": [0, 4], "x": 61, "y": 2, "flags": 4},
|
||||||
|
{"matrix": [0, 5], "x": 75, "y": 2, "flags": 4},
|
||||||
|
{"matrix": [0, 6], "x": 95, "y": 2, "flags": 4},
|
||||||
|
{"matrix": [0, 7], "x": 109, "y": 2, "flags": 4},
|
||||||
|
{"matrix": [0, 8], "x": 122, "y": 2, "flags": 4},
|
||||||
|
{"matrix": [0, 9], "x": 136, "y": 2, "flags": 4},
|
||||||
|
{"matrix": [0, 10], "x": 157, "y": 2, "flags": 4},
|
||||||
|
{"matrix": [0, 11], "x": 170, "y": 2, "flags": 4},
|
||||||
|
{"matrix": [0, 12], "x": 184, "y": 2, "flags": 4},
|
||||||
|
{"matrix": [0, 13], "x": 198, "y": 2, "flags": 4},
|
||||||
|
{"matrix": [0, 14], "x": 217, "y": 2, "flags": 4},
|
||||||
|
{"matrix": [1, 0], "x": 7, "y": 14, "flags": 4},
|
||||||
|
{"matrix": [1, 1], "x": 20, "y": 14, "flags": 4},
|
||||||
|
{"matrix": [1, 2], "x": 34, "y": 14, "flags": 4},
|
||||||
|
{"matrix": [1, 3], "x": 48, "y": 14, "flags": 4},
|
||||||
|
{"matrix": [1, 4], "x": 61, "y": 14, "flags": 4},
|
||||||
|
{"matrix": [1, 5], "x": 75, "y": 14, "flags": 4},
|
||||||
|
{"matrix": [1, 6], "x": 89, "y": 14, "flags": 4},
|
||||||
|
{"matrix": [1, 7], "x": 102, "y": 14, "flags": 4},
|
||||||
|
{"matrix": [1, 8], "x": 116, "y": 14, "flags": 4},
|
||||||
|
{"matrix": [1, 9], "x": 129, "y": 14, "flags": 4},
|
||||||
|
{"matrix": [1, 10], "x": 143, "y": 14, "flags": 4},
|
||||||
|
{"matrix": [1, 11], "x": 157, "y": 14, "flags": 4},
|
||||||
|
{"matrix": [1, 12], "x": 170, "y": 14, "flags": 4},
|
||||||
|
{"matrix": [1, 13], "x": 190, "y": 14, "flags": 4},
|
||||||
|
{"matrix": [1, 14], "x": 217, "y": 14, "flags": 4},
|
||||||
|
{"matrix": [2, 0], "x": 10, "y": 24, "flags": 4},
|
||||||
|
{"matrix": [2, 1], "x": 27, "y": 24, "flags": 4},
|
||||||
|
{"matrix": [2, 2], "x": 40, "y": 24, "flags": 4},
|
||||||
|
{"matrix": [2, 3], "x": 54, "y": 24, "flags": 4},
|
||||||
|
{"matrix": [2, 4], "x": 68, "y": 24, "flags": 4},
|
||||||
|
{"matrix": [2, 5], "x": 81, "y": 24, "flags": 4},
|
||||||
|
{"matrix": [2, 6], "x": 95, "y": 24, "flags": 4},
|
||||||
|
{"matrix": [2, 7], "x": 109, "y": 24, "flags": 4},
|
||||||
|
{"matrix": [2, 8], "x": 122, "y": 24, "flags": 4},
|
||||||
|
{"matrix": [2, 9], "x": 136, "y": 24, "flags": 4},
|
||||||
|
{"matrix": [2, 10], "x": 150, "y": 24, "flags": 4},
|
||||||
|
{"matrix": [2, 11], "x": 163, "y": 24, "flags": 4},
|
||||||
|
{"matrix": [2, 12], "x": 177, "y": 24, "flags": 4},
|
||||||
|
{"matrix": [2, 13], "x": 194, "y": 24, "flags": 4},
|
||||||
|
{"matrix": [2, 14], "x": 217, "y": 24, "flags": 4},
|
||||||
|
{"matrix": [3, 0], "x": 12, "y": 34, "flags": 4},
|
||||||
|
{"matrix": [3, 1], "x": 30, "y": 34, "flags": 4},
|
||||||
|
{"matrix": [3, 2], "x": 44, "y": 34, "flags": 4},
|
||||||
|
{"matrix": [3, 3], "x": 58, "y": 34, "flags": 4},
|
||||||
|
{"matrix": [3, 4], "x": 71, "y": 34, "flags": 4},
|
||||||
|
{"matrix": [3, 5], "x": 85, "y": 34, "flags": 4},
|
||||||
|
{"matrix": [3, 6], "x": 99, "y": 34, "flags": 4},
|
||||||
|
{"matrix": [3, 7], "x": 112, "y": 34, "flags": 4},
|
||||||
|
{"matrix": [3, 8], "x": 126, "y": 34, "flags": 4},
|
||||||
|
{"matrix": [3, 9], "x": 140, "y": 34, "flags": 4},
|
||||||
|
{"matrix": [3, 10], "x": 153, "y": 34, "flags": 4},
|
||||||
|
{"matrix": [3, 11], "x": 167, "y": 34, "flags": 4},
|
||||||
|
{"x": 180, "y": 34, "flags": 4},
|
||||||
|
{"matrix": [3, 13], "x": 189, "y": 34, "flags": 4},
|
||||||
|
{"matrix": [3, 14], "x": 217, "y": 34, "flags": 4},
|
||||||
|
{"matrix": [4, 0], "x": 8, "y": 44, "flags": 4},
|
||||||
|
{"x": 24, "y": 44, "flags": 4},
|
||||||
|
{"matrix": [4, 2], "x": 38, "y": 44, "flags": 4},
|
||||||
|
{"matrix": [4, 3], "x": 51, "y": 44, "flags": 4},
|
||||||
|
{"matrix": [4, 4], "x": 65, "y": 44, "flags": 4},
|
||||||
|
{"matrix": [4, 5], "x": 78, "y": 44, "flags": 4},
|
||||||
|
{"matrix": [4, 6], "x": 92, "y": 44, "flags": 4},
|
||||||
|
{"matrix": [4, 7], "x": 106, "y": 44, "flags": 4},
|
||||||
|
{"matrix": [4, 8], "x": 119, "y": 44, "flags": 4},
|
||||||
|
{"matrix": [4, 9], "x": 133, "y": 44, "flags": 4},
|
||||||
|
{"matrix": [4, 10], "x": 147, "y": 44, "flags": 4},
|
||||||
|
{"matrix": [4, 11], "x": 160, "y": 44, "flags": 4},
|
||||||
|
{"matrix": [4, 12], "x": 179, "y": 44, "flags": 4},
|
||||||
|
{"matrix": [4, 13], "x": 201, "y": 46, "flags": 4},
|
||||||
|
{"matrix": [4, 14], "x": 217, "y": 44, "flags": 4},
|
||||||
|
{"matrix": [5, 0], "x": 8, "y": 54, "flags": 4},
|
||||||
|
{"matrix": [5, 1], "x": 25, "y": 54, "flags": 4},
|
||||||
|
{"matrix": [5, 2], "x": 43, "y": 54, "flags": 4},
|
||||||
|
{"x": 67, "y": 57, "flags": 4},
|
||||||
|
{"x": 80, "y": 57, "flags": 4},
|
||||||
|
{"x": 94, "y": 54, "flags": 4},
|
||||||
|
{"matrix": [5, 6], "x": 107, "y": 57, "flags": 4},
|
||||||
|
{"x": 120, "y": 57, "flags": 4},
|
||||||
|
{"matrix": [5, 9], "x": 143, "y": 54, "flags": 4},
|
||||||
|
{"matrix": [5, 10], "x": 157, "y": 54, "flags": 4},
|
||||||
|
{"matrix": [5, 11], "x": 170, "y": 54, "flags": 4},
|
||||||
|
{"matrix": [5, 12], "x": 187, "y": 56, "flags": 4},
|
||||||
|
{"matrix": [5, 13], "x": 201, "y": 56, "flags": 4},
|
||||||
|
{"matrix": [5, 14], "x": 214, "y": 56, "flags": 4},
|
||||||
|
{"x": 207, "y": 23, "flags": 8},
|
||||||
|
{"x": 207, "y": 27, "flags": 8}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"usb": {
|
||||||
|
"device_version": "0.0.1",
|
||||||
|
"pid": "0x00D1",
|
||||||
|
"vid": "0x369B",
|
||||||
|
"no_startup_check": true
|
||||||
|
},
|
||||||
|
"layout_aliases": {
|
||||||
|
"LAYOUT_75_ansi": "LAYOUT"
|
||||||
|
},
|
||||||
|
"layouts": {
|
||||||
|
"LAYOUT": {
|
||||||
|
"layout": [
|
||||||
|
{"label": "ESC", "matrix": [0, 0], "x": 0, "y": 0},
|
||||||
|
{"label": "F1", "matrix": [0, 2], "x": 1.5, "y": 0},
|
||||||
|
{"label": "F2", "matrix": [0, 3], "x": 2.5, "y": 0},
|
||||||
|
{"label": "F3", "matrix": [0, 4], "x": 3.5, "y": 0},
|
||||||
|
{"label": "F4", "matrix": [0, 5], "x": 4.5, "y": 0},
|
||||||
|
{"label": "F5", "matrix": [0, 6], "x": 6, "y": 0},
|
||||||
|
{"label": "F6", "matrix": [0, 7], "x": 7, "y": 0},
|
||||||
|
{"label": "F7", "matrix": [0, 8], "x": 8, "y": 0},
|
||||||
|
{"label": "F8", "matrix": [0, 9], "x": 9, "y": 0},
|
||||||
|
{"label": "F9", "matrix": [0, 10], "x": 10.5, "y": 0},
|
||||||
|
{"label": "F10", "matrix": [0, 11], "x": 11.5, "y": 0},
|
||||||
|
{"label": "F11", "matrix": [0, 12], "x": 12.5, "y": 0},
|
||||||
|
{"label": "F12", "matrix": [0, 13], "x": 13.5, "y": 0},
|
||||||
|
{"label": "END", "matrix": [0, 15], "x": 15, "y": 0},
|
||||||
|
{"label": "GRV", "matrix": [1, 0], "x": 0, "y": 1.25},
|
||||||
|
{"label": "1", "matrix": [1, 1], "x": 1, "y": 1.25},
|
||||||
|
{"label": "2", "matrix": [1, 2], "x": 2, "y": 1.25},
|
||||||
|
{"label": "3", "matrix": [1, 3], "x": 3, "y": 1.25},
|
||||||
|
{"label": "4", "matrix": [1, 4], "x": 4, "y": 1.25},
|
||||||
|
{"label": "5", "matrix": [1, 5], "x": 5, "y": 1.25},
|
||||||
|
{"label": "6", "matrix": [1, 6], "x": 6, "y": 1.25},
|
||||||
|
{"label": "7", "matrix": [1, 7], "x": 7, "y": 1.25},
|
||||||
|
{"label": "8", "matrix": [1, 8], "x": 8, "y": 1.25},
|
||||||
|
{"label": "9", "matrix": [1, 9], "x": 9, "y": 1.25},
|
||||||
|
{"label": "0", "matrix": [1, 10], "x": 10, "y": 1.25},
|
||||||
|
{"label": "MINS", "matrix": [1, 11], "x": 11, "y": 1.25},
|
||||||
|
{"label": "EQL", "matrix": [1, 12], "x": 12, "y": 1.25},
|
||||||
|
{"label": "BSPC", "matrix": [1, 13], "x": 13, "y": 1.25, "w": 2},
|
||||||
|
{"label": "INS", "matrix": [1, 14], "x": 15, "y": 1.25},
|
||||||
|
{"label": "TAB", "matrix": [2, 0], "x": 0, "y": 2.25, "w": 1.5},
|
||||||
|
{"label": "Q", "matrix": [2, 1], "x": 1.5, "y": 2.25},
|
||||||
|
{"label": "W", "matrix": [2, 2], "x": 2.5, "y": 2.25},
|
||||||
|
{"label": "E", "matrix": [2, 3], "x": 3.5, "y": 2.25},
|
||||||
|
{"label": "R", "matrix": [2, 4], "x": 4.5, "y": 2.25},
|
||||||
|
{"label": "T", "matrix": [2, 5], "x": 5.5, "y": 2.25},
|
||||||
|
{"label": "Y", "matrix": [2, 6], "x": 6.5, "y": 2.25},
|
||||||
|
{"label": "U", "matrix": [2, 7], "x": 7.5, "y": 2.25},
|
||||||
|
{"label": "I", "matrix": [2, 8], "x": 8.5, "y": 2.25},
|
||||||
|
{"label": "O", "matrix": [2, 9], "x": 9.5, "y": 2.25},
|
||||||
|
{"label": "P", "matrix": [2, 10], "x": 10.5, "y": 2.25},
|
||||||
|
{"label": "LBRC", "matrix": [2, 11], "x": 11.5, "y": 2.25},
|
||||||
|
{"label": "RBRC", "matrix": [2, 12], "x": 12.5, "y": 2.25},
|
||||||
|
{"label": "BSLS", "matrix": [2, 13], "x": 13.5, "y": 2.25, "w": 1.5},
|
||||||
|
{"label": "DEL", "matrix": [2, 14], "x": 15, "y": 2.25},
|
||||||
|
{"label": "CAPS", "matrix": [3, 0], "x": 0, "y": 3.25, "w": 1.75},
|
||||||
|
{"label": "A", "matrix": [3, 1], "x": 1.75, "y": 3.25},
|
||||||
|
{"label": "S", "matrix": [3, 2], "x": 2.75, "y": 3.25},
|
||||||
|
{"label": "D", "matrix": [3, 3], "x": 3.75, "y": 3.25},
|
||||||
|
{"label": "F", "matrix": [3, 4], "x": 4.75, "y": 3.25},
|
||||||
|
{"label": "G", "matrix": [3, 5], "x": 5.75, "y": 3.25},
|
||||||
|
{"label": "H", "matrix": [3, 6], "x": 6.75, "y": 3.25},
|
||||||
|
{"label": "J", "matrix": [3, 7], "x": 7.75, "y": 3.25},
|
||||||
|
{"label": "K", "matrix": [3, 8], "x": 8.75, "y": 3.25},
|
||||||
|
{"label": "L", "matrix": [3, 9], "x": 9.75, "y": 3.25},
|
||||||
|
{"label": "SCLN", "matrix": [3, 10], "x": 10.75, "y": 3.25},
|
||||||
|
{"label": "QUOT", "matrix": [3, 11], "x": 11.75, "y": 3.25},
|
||||||
|
{"label": "ENT", "matrix": [3, 13], "x": 12.75, "y": 3.25, "w": 2.25},
|
||||||
|
{"label": "PGUP", "matrix": [3, 14], "x": 15, "y": 3.25},
|
||||||
|
{"label": "LSFT", "matrix": [4, 0], "x": 0, "y": 4.25, "w": 2.25},
|
||||||
|
{"label": "Z", "matrix": [4, 2], "x": 2.25, "y": 4.25},
|
||||||
|
{"label": "X", "matrix": [4, 3], "x": 3.25, "y": 4.25},
|
||||||
|
{"label": "C", "matrix": [4, 4], "x": 4.25, "y": 4.25},
|
||||||
|
{"label": "V", "matrix": [4, 5], "x": 5.25, "y": 4.25},
|
||||||
|
{"label": "B", "matrix": [4, 6], "x": 6.25, "y": 4.25},
|
||||||
|
{"label": "N", "matrix": [4, 7], "x": 7.25, "y": 4.25},
|
||||||
|
{"label": "M", "matrix": [4, 8], "x": 8.25, "y": 4.25},
|
||||||
|
{"label": "COMM", "matrix": [4, 9], "x": 9.25, "y": 4.25},
|
||||||
|
{"label": "DOT", "matrix": [4, 10], "x": 10.25, "y": 4.25},
|
||||||
|
{"label": "SLSH", "matrix": [4, 11], "x": 11.25, "y": 4.25},
|
||||||
|
{"label": "RSFT", "matrix": [4, 12], "x": 12.25, "y": 4.25, "w": 1.75},
|
||||||
|
{"label": "UP", "matrix": [4, 13], "x": 14, "y": 4.25},
|
||||||
|
{"label": "PGDN", "matrix": [4, 14], "x": 15, "y": 4.25},
|
||||||
|
{"label": "LCTL", "matrix": [5, 0], "x": 0, "y": 5.25, "w": 1.25},
|
||||||
|
{"label": "LGUI", "matrix": [5, 1], "x": 1.25, "y": 5.25, "w": 1.25},
|
||||||
|
{"label": "LALT", "matrix": [5, 2], "x": 2.5, "y": 5.25, "w": 1.25},
|
||||||
|
{"label": "SPC", "matrix": [5, 6], "x": 3.75, "y": 5.25, "w": 6.25},
|
||||||
|
{"label": "RALT", "matrix": [5, 9], "x": 10, "y": 5.25},
|
||||||
|
{"label": "MO(1)", "matrix": [5, 10], "x": 11, "y": 5.25},
|
||||||
|
{"label": "RCTL", "matrix": [5, 11], "x": 12, "y": 5.25},
|
||||||
|
{"label": "LEFT", "matrix": [5, 12], "x": 13, "y": 5.25},
|
||||||
|
{"label": "DOWN", "matrix": [5, 13], "x": 14, "y": 5.25},
|
||||||
|
{"label": "RGHT", "matrix": [5, 14], "x": 15, "y": 5.25}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
50
keyboards/redragon/k715_pro/keymaps/default/keymap.c
Normal file
50
keyboards/redragon/k715_pro/keymaps/default/keymap.c
Normal file
@ -0,0 +1,50 @@
|
|||||||
|
/* Copyright 2024 temp4gh
|
||||||
|
*
|
||||||
|
* This program is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 2 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include QMK_KEYBOARD_H
|
||||||
|
#include "k715_pro.h"
|
||||||
|
|
||||||
|
enum layer_names
|
||||||
|
{
|
||||||
|
_BASE,
|
||||||
|
_FnLay,
|
||||||
|
};
|
||||||
|
|
||||||
|
#ifdef ENCODER_MAP_ENABLE
|
||||||
|
const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
|
||||||
|
[_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
|
||||||
|
[_FnLay] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI) },
|
||||||
|
};
|
||||||
|
#endif
|
||||||
|
|
||||||
|
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
|
[_BASE] = LAYOUT(
|
||||||
|
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_MUTE,
|
||||||
|
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_INS,
|
||||||
|
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL,
|
||||||
|
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGUP,
|
||||||
|
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_PGDN,
|
||||||
|
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(_FnLay), KC_RCTL, KC_LEFT, KC_DOWN, KC_RIGHT
|
||||||
|
),
|
||||||
|
[_FnLay] = LAYOUT(
|
||||||
|
EE_CLR, KC_BRID, KC_BRIU, A(KC_TAB),G(KC_H),G(KC_D), G(KC_S), KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, XXXXXXX,
|
||||||
|
XXXXXXX, BT_CHN1, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RGB_MOD,
|
||||||
|
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_HOME, KC_END, XXXXXXX, XXXXXXX,
|
||||||
|
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_SCRL, KC_PSCR, XXXXXXX, XXXXXXX,
|
||||||
|
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_PAUS, XXXXXXX, RGB_VAI, XXXXXXX,
|
||||||
|
XXXXXXX, XXXXXXX, XXXXXXX, RGB_TOG, XXXXXXX, _______, XXXXXXX, RGB_SPD, RGB_VAD, RGB_SPI
|
||||||
|
)
|
||||||
|
};
|
2
keyboards/redragon/k715_pro/keymaps/default/rules.mk
Normal file
2
keyboards/redragon/k715_pro/keymaps/default/rules.mk
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
SPI_DRIVER_REQUIRED = yes
|
||||||
|
ENCODER_MAP_ENABLE = yes
|
25
keyboards/redragon/k715_pro/mcuconf.h
Normal file
25
keyboards/redragon/k715_pro/mcuconf.h
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
/* Copyright 2020 QMK
|
||||||
|
*
|
||||||
|
* 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_next <mcuconf.h>
|
||||||
|
|
||||||
|
#undef STM32_I2C_USE_I2C1
|
||||||
|
#define STM32_I2C_USE_I2C1 TRUE
|
||||||
|
|
||||||
|
#undef STM32_SPI_USE_SPI2
|
||||||
|
#define STM32_SPI_USE_SPI2 TRUE
|
1
keyboards/redragon/k715_pro/post_rules.mk
Normal file
1
keyboards/redragon/k715_pro/post_rules.mk
Normal file
@ -0,0 +1 @@
|
|||||||
|
include keyboards/redragon/k715_pro/bluetooth/bluetooth.mk
|
21
keyboards/redragon/k715_pro/readme.md
Normal file
21
keyboards/redragon/k715_pro/readme.md
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
# K715 Pro
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
A customizable 80% keyboard with wire and bluetooth.
|
||||||
|
|
||||||
|
- Keyboard Maintainer: [temp4gh](https://github.com/temp4gh)
|
||||||
|
- Hardware Supported:K715 pro PCB
|
||||||
|
- Hardware Availability: www.redragonzone.com
|
||||||
|
|
||||||
|
Make example for this keyboard (after setting up your build environment):
|
||||||
|
|
||||||
|
make redragon/k715_pro:default
|
||||||
|
|
||||||
|
Flashing example for this keyboard:
|
||||||
|
|
||||||
|
make redragon/k715_pro:default:flash
|
||||||
|
|
||||||
|
**Reset Key**: Hold down the key located at *K10*, commonly programmed as *Grave* while plugging in the keyboard.
|
||||||
|
|
||||||
|
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).
|
0
keyboards/redragon/k715_pro/rules.mk
Normal file
0
keyboards/redragon/k715_pro/rules.mk
Normal file
Loading…
Reference in New Issue
Block a user