Update modules name and add halcyon default keymap
This commit is contained in:
parent
0fe01454d8
commit
ac7c588033
44 changed files with 518 additions and 0 deletions
94
users/halcyon_modules/halcyon.c
Normal file
94
users/halcyon_modules/halcyon.c
Normal file
|
|
@ -0,0 +1,94 @@
|
|||
// Copyright 2024 splitkb.com (support@splitkb.com)
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
#include QMK_KEYBOARD_H
|
||||
|
||||
#include "halcyon.h"
|
||||
#include "transactions.h"
|
||||
#include "print.h"
|
||||
#include "split_util.h"
|
||||
#include "pointing_device.h"
|
||||
|
||||
__attribute__((weak)) bool module_post_init_kb(void) {
|
||||
return module_post_init_user();
|
||||
}
|
||||
__attribute__((weak)) bool module_housekeeping_task_kb(void) {
|
||||
return module_housekeeping_task_user();
|
||||
}
|
||||
__attribute__((weak)) bool display_module_housekeeping_task_kb(bool second_display) {
|
||||
return display_module_housekeeping_task_user(second_display);
|
||||
}
|
||||
|
||||
__attribute__((weak)) bool module_post_init_user(void) {
|
||||
return true;
|
||||
}
|
||||
__attribute__((weak)) bool module_housekeeping_task_user(void) {
|
||||
return true;
|
||||
}
|
||||
__attribute__((weak)) bool display_module_housekeeping_task_user(bool second_display) {
|
||||
return true;
|
||||
}
|
||||
|
||||
module_t module;
|
||||
#ifdef HLC_NONE
|
||||
module_t module = hlc_none;
|
||||
#endif
|
||||
#ifdef HLC_CIRQUE_TRACKPAD
|
||||
module_t module = hlc_cirque_trackpad;
|
||||
#endif
|
||||
#ifdef HLC_ENCODER
|
||||
module_t module = hlc_encoder;
|
||||
#endif
|
||||
#ifdef HLC_TFT_DISPLAY
|
||||
module_t module = hlc_tft_display;
|
||||
#endif
|
||||
|
||||
void module_sync_slave_handler(uint8_t initiator2target_buffer_size, const void* initiator2target_buffer, uint8_t target2initiator_buffer_size, void* target2initiator_buffer) {
|
||||
if (initiator2target_buffer_size == sizeof(module)) {
|
||||
memcpy(&module_master, initiator2target_buffer, sizeof(module_master));
|
||||
}
|
||||
}
|
||||
|
||||
void keyboard_post_init_kb(void) {
|
||||
// Register module sync split transaction
|
||||
transaction_register_rpc(MODULE_SYNC, module_sync_slave_handler);
|
||||
|
||||
// Do any post init for modules
|
||||
module_post_init_kb();
|
||||
|
||||
// User post init
|
||||
keyboard_post_init_user();
|
||||
}
|
||||
|
||||
void housekeeping_task_kb(void) {
|
||||
if (is_keyboard_master()) {
|
||||
static bool synced = 0;
|
||||
if(is_transport_connected() && synced == 0) {
|
||||
transaction_rpc_send(MODULE_SYNC, sizeof(module), &module); // Sync to slave
|
||||
synced = 1;
|
||||
}
|
||||
display_module_housekeeping_task_kb(false); // Is master so can never be the second display
|
||||
}
|
||||
if (!is_keyboard_master()) {
|
||||
if (module_master == hlc_tft_display) {
|
||||
display_module_housekeeping_task_kb(true); // If there is a display on master, become the second display
|
||||
} else {
|
||||
display_module_housekeeping_task_kb(false); // Otherwise be the main display
|
||||
}
|
||||
}
|
||||
module_housekeeping_task_kb();
|
||||
|
||||
housekeeping_task_user();
|
||||
}
|
||||
|
||||
report_mouse_t pointing_device_task_combined_kb(report_mouse_t left_report, report_mouse_t right_report) {
|
||||
// Only runs on master
|
||||
// Fixes the following bug: If master is right and master is NOT a cirque trackpad, the inputs would be inverted.
|
||||
if(module != hlc_cirque_trackpad && !is_keyboard_left()) {
|
||||
mouse_xy_report_t x = left_report.x;
|
||||
mouse_xy_report_t y = left_report.y;
|
||||
left_report.x = -x;
|
||||
left_report.y = -y;
|
||||
}
|
||||
return pointing_device_task_combined_user(left_report, right_report);
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue