forked from kofal.net/zmk
feat(mouse): Add mouse move and scroll support (#2477)
* 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>
This commit is contained in:
@@ -26,6 +26,10 @@ LOG_MODULE_DECLARE(zmk, CONFIG_ZMK_LOG_LEVEL);
|
||||
#include <zmk/usb.h>
|
||||
#endif
|
||||
|
||||
#if IS_ENABLED(CONFIG_ZMK_POINTING)
|
||||
#include <zephyr/input/input.h>
|
||||
#endif
|
||||
|
||||
bool is_usb_power_present(void) {
|
||||
#if IS_ENABLED(CONFIG_USB_DEVICE_STACK)
|
||||
return zmk_usb_is_powered();
|
||||
@@ -59,12 +63,14 @@ int set_state(enum zmk_activity_state state) {
|
||||
|
||||
enum zmk_activity_state zmk_activity_get_state(void) { return activity_state; }
|
||||
|
||||
int activity_event_listener(const zmk_event_t *eh) {
|
||||
static int note_activity(void) {
|
||||
activity_last_uptime = k_uptime_get();
|
||||
|
||||
return set_state(ZMK_ACTIVITY_ACTIVE);
|
||||
}
|
||||
|
||||
static int activity_event_listener(const zmk_event_t *eh) { return note_activity(); }
|
||||
|
||||
void activity_work_handler(struct k_work *work) {
|
||||
int32_t current = k_uptime_get();
|
||||
int32_t inactive_time = current - activity_last_uptime;
|
||||
@@ -104,4 +110,16 @@ ZMK_LISTENER(activity, activity_event_listener);
|
||||
ZMK_SUBSCRIPTION(activity, zmk_position_state_changed);
|
||||
ZMK_SUBSCRIPTION(activity, zmk_sensor_event);
|
||||
|
||||
#if IS_ENABLED(CONFIG_ZMK_POINTING)
|
||||
|
||||
static void note_activity_work_cb(struct k_work *_work) { note_activity(); }
|
||||
|
||||
K_WORK_DEFINE(note_activity_work, note_activity_work_cb);
|
||||
|
||||
static void activity_input_listener(struct input_event *ev) { k_work_submit(¬e_activity_work); }
|
||||
|
||||
INPUT_CALLBACK_DEFINE(NULL, activity_input_listener);
|
||||
|
||||
#endif
|
||||
|
||||
SYS_INIT(activity_init, APPLICATION, CONFIG_APPLICATION_INIT_PRIORITY);
|
||||
|
||||
Reference in New Issue
Block a user