mirror of
https://github.com/zmkfirmware/zmk.git
synced 2026-03-20 04:55:20 -05:00
* feat(mouse): Add mouse move and scroll support
* Use Zephyr input subsystem for all pointers.
* Input processors for modifying events, e.g. scaling, swapping
codes, temporary (mouse) layers, etc.
* Mouse move/scroll behaviors.
* Infrastructure in place for physical pointer input devices.
* feat: Add input split support.
* docs: Add initial pointer docs.
---------
Co-authored-by: Cem Aksoylar <caksoylar@users.noreply.github.com>
Co-authored-by: Alexander Krikun <krikun98@gmail.com>
Co-authored-by: Robert U <urob@users.noreply.github.com>
Co-authored-by: Shawn Meier <ftc@users.noreply.github.com>
Co-authored-by: Chris Andreae <chris@andreae.gen.nz>
Co-authored-by: Anant Thazhemadam <47104651+thazhemadam@users.noreply.github.com>
Co-authored-by: Erik Tollerud <erik.tollerud@gmail.com>
Co-authored-by: Nicolas Munnich <98408764+Nick-Munnich@users.noreply.github.com>
78 lines
2.1 KiB
C
78 lines
2.1 KiB
C
/*
|
|
* Copyright (c) 2020 The ZMK Contributors
|
|
*
|
|
* SPDX-License-Identifier: MIT
|
|
*/
|
|
|
|
#pragma once
|
|
|
|
#include <zmk/ble.h>
|
|
#include <zmk/endpoints_types.h>
|
|
|
|
/**
|
|
* Recommended length of string buffer for printing endpoint identifiers.
|
|
*/
|
|
#define ZMK_ENDPOINT_STR_LEN 10
|
|
|
|
#ifdef CONFIG_ZMK_USB
|
|
#define ZMK_ENDPOINT_USB_COUNT 1
|
|
#else
|
|
#define ZMK_ENDPOINT_USB_COUNT 0
|
|
#endif
|
|
|
|
#ifdef CONFIG_ZMK_BLE
|
|
#define ZMK_ENDPOINT_BLE_COUNT ZMK_BLE_PROFILE_COUNT
|
|
#else
|
|
#define ZMK_ENDPOINT_BLE_COUNT 0
|
|
#endif
|
|
|
|
/**
|
|
* The total number of different (struct zmk_endpoint_instance) values that can
|
|
* be selected.
|
|
*
|
|
* Note that this value may change between firmware versions, so it should not
|
|
* be used in any persistent storage.
|
|
*/
|
|
#define ZMK_ENDPOINT_COUNT (ZMK_ENDPOINT_USB_COUNT + ZMK_ENDPOINT_BLE_COUNT)
|
|
|
|
bool zmk_endpoint_instance_eq(struct zmk_endpoint_instance a, struct zmk_endpoint_instance b);
|
|
|
|
/**
|
|
* Writes a string identifying an endpoint instance.
|
|
*
|
|
* @param str Address of output string buffer
|
|
* @param len Length of string buffer. See ZMK_ENDPOINT_STR_LEN for recommended length.
|
|
*
|
|
* @returns Number of characters written.
|
|
*/
|
|
int zmk_endpoint_instance_to_str(struct zmk_endpoint_instance endpoint, char *str, size_t len);
|
|
|
|
/**
|
|
* Gets a unique index for an endpoint instance. This can be used together with
|
|
* ZMK_ENDPOINT_COUNT to manage separate state for each endpoint instance.
|
|
*
|
|
* Note that the index for a specific instance may change between firmware versions,
|
|
* so it should not be used in any persistent storage.
|
|
*/
|
|
int zmk_endpoint_instance_to_index(struct zmk_endpoint_instance endpoint);
|
|
|
|
/**
|
|
* Sets the preferred endpoint transport to use. (If the preferred endpoint is
|
|
* not available, a different one may automatically be selected.)
|
|
*/
|
|
int zmk_endpoints_select_transport(enum zmk_transport transport);
|
|
int zmk_endpoints_toggle_transport(void);
|
|
|
|
/**
|
|
* Gets the currently-selected endpoint.
|
|
*/
|
|
struct zmk_endpoint_instance zmk_endpoints_selected(void);
|
|
|
|
int zmk_endpoints_send_report(uint16_t usage_page);
|
|
|
|
#if IS_ENABLED(CONFIG_ZMK_POINTING)
|
|
int zmk_endpoints_send_mouse_report();
|
|
#endif // IS_ENABLED(CONFIG_ZMK_POINTING)
|
|
|
|
void zmk_endpoints_clear_current(void);
|