forked from zmkfirmware/zmk
-
Notifications
You must be signed in to change notification settings - Fork 50
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
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. Co-authored-by: Alexander Krikun <[email protected]> Co-authored-by: Robert U <[email protected]> Co-authored-by: Shawn Meier <[email protected]> Co-authored-by: Chris Andreae <[email protected]>
- Loading branch information
1 parent
7e8c542
commit f8c1f47
Showing
101 changed files
with
2,995 additions
and
174 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,9 @@ | ||
/* | ||
* Copyright (c) 2024 The ZMK Contributors | ||
* | ||
* SPDX-License-Identifier: MIT | ||
*/ | ||
|
||
#include "mouse_key_press.dtsi" | ||
#include "mouse_move.dtsi" | ||
#include "mouse_scroll.dtsi" |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,25 @@ | ||
/* | ||
* Copyright (c) 2024 The ZMK Contributors | ||
* | ||
* SPDX-License-Identifier: MIT | ||
*/ | ||
|
||
#include <zephyr/dt-bindings/input/input-event-codes.h> | ||
|
||
/ { | ||
behaviors { | ||
/omit-if-no-ref/ mmv: mouse_move { | ||
compatible = "zmk,behavior-input-two-axis"; | ||
#binding-cells = <1>; | ||
x-input-code = <INPUT_REL_X>; | ||
y-input-code = <INPUT_REL_Y>; | ||
time-to-max-speed-ms = <300>; | ||
acceleration-exponent = <1>; | ||
}; | ||
}; | ||
|
||
mmv_input_listener: mmv_input_listener { | ||
compatible = "zmk,input-listener"; | ||
device = <&mmv>; | ||
}; | ||
}; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,26 @@ | ||
|
||
/* | ||
* Copyright (c) 2024 The ZMK Contributors | ||
* | ||
* SPDX-License-Identifier: MIT | ||
*/ | ||
|
||
#include <zephyr/dt-bindings/input/input-event-codes.h> | ||
|
||
/ { | ||
behaviors { | ||
/omit-if-no-ref/ msc: mouse_scroll { | ||
compatible = "zmk,behavior-input-two-axis"; | ||
#binding-cells = <1>; | ||
x-input-code = <INPUT_REL_HWHEEL>; | ||
y-input-code = <INPUT_REL_WHEEL>; | ||
time-to-max-speed-ms = <300>; | ||
acceleration-exponent = <0>; | ||
}; | ||
}; | ||
|
||
msc_input_listener: msc_input_listener { | ||
compatible = "zmk,input-listener"; | ||
device = <&msc>; | ||
}; | ||
}; |
28 changes: 28 additions & 0 deletions
28
app/dts/bindings/behaviors/zmk,behavior-input-two-axis.yaml
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,28 @@ | ||
# Copyright (c) 2024 The ZMK Contributors | ||
# SPDX-License-Identifier: MIT | ||
|
||
description: Two axis input behavior | ||
|
||
compatible: "zmk,behavior-input-two-axis" | ||
|
||
include: one_param.yaml | ||
|
||
properties: | ||
x-input-code: | ||
type: int | ||
required: true | ||
y-input-code: | ||
type: int | ||
required: true | ||
trigger-period-ms: | ||
type: int | ||
default: 16 | ||
description: The time (in ms) between generated inputs when an input has non-zero speed. | ||
delay-ms: | ||
type: int | ||
time-to-max-speed-ms: | ||
type: int | ||
required: true | ||
acceleration-exponent: | ||
type: int | ||
default: 1 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,6 @@ | ||
# Copyright (c) 2024 The ZMK Contributors | ||
# SPDX-License-Identifier: MIT | ||
|
||
properties: | ||
track-remainders: | ||
type: boolean |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,13 @@ | ||
# Copyright (c) 2024 The ZMK Contributors | ||
# SPDX-License-Identifier: MIT | ||
|
||
include: ip_common.yaml | ||
|
||
properties: | ||
"#input-processor-cells": | ||
type: int | ||
required: true | ||
const: 1 | ||
|
||
input-processor-cells: | ||
- param1 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,14 @@ | ||
# Copyright (c) 2024 The ZMK Contributors | ||
# SPDX-License-Identifier: MIT | ||
|
||
include: ip_common.yaml | ||
|
||
properties: | ||
"#input-processor-cells": | ||
type: int | ||
required: true | ||
const: 2 | ||
|
||
input-processor-cells: | ||
- param1 | ||
- param2 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,10 @@ | ||
# Copyright (c) 2024 The ZMK Contributors | ||
# SPDX-License-Identifier: MIT | ||
|
||
include: ip_common.yaml | ||
|
||
properties: | ||
"#input-processor-cells": | ||
type: int | ||
required: true | ||
const: 0 |
16 changes: 16 additions & 0 deletions
16
app/dts/bindings/input_processors/zmk,input-processor-code-mapper.yaml
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,16 @@ | ||
# Copyright (c) 2024, The ZMK Contributors | ||
# SPDX-License-Identifier: MIT | ||
|
||
description: Input Processor for remapping certain input codes to other codes | ||
|
||
compatible: "zmk,input-processor-code-mapper" | ||
|
||
include: ip_zero_param.yaml | ||
|
||
properties: | ||
type: | ||
type: int | ||
required: true | ||
map: | ||
type: array | ||
required: true |
16 changes: 16 additions & 0 deletions
16
app/dts/bindings/input_processors/zmk,input-processor-scaler.yaml
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,16 @@ | ||
# Copyright (c) 2024, The ZMK Contributors | ||
# SPDX-License-Identifier: MIT | ||
|
||
description: Input Processor for scaling values | ||
|
||
compatible: "zmk,input-processor-scaler" | ||
|
||
include: ip_two_param.yaml | ||
|
||
properties: | ||
type: | ||
type: int | ||
required: true | ||
codes: | ||
type: array | ||
required: true |
21 changes: 21 additions & 0 deletions
21
app/dts/bindings/input_processors/zmk,input-processor-temp-layer.yaml
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,21 @@ | ||
# Copyright (c) 2024, The ZMK Contributors | ||
# SPDX-License-Identifier: MIT | ||
|
||
description: Input Processor for temporarily enabling a layer after input events | ||
|
||
compatible: "zmk,input-processor-temp-layer" | ||
|
||
include: ip_two_param.yaml | ||
|
||
properties: | ||
require-prior-idle-ms: | ||
type: int | ||
required: false | ||
default: 0 | ||
description: Time in milliseconds that must pass after the last keystroke before the layer can be toggled | ||
|
||
excluded-positions: | ||
type: array | ||
required: false | ||
default: [] | ||
description: Array of key positions that will NOT trigger layer deactivation when pressed |
18 changes: 18 additions & 0 deletions
18
app/dts/bindings/input_processors/zmk,input-processor-transform.yaml
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,18 @@ | ||
# Copyright (c) 2024, The ZMK Contributors | ||
# SPDX-License-Identifier: MIT | ||
|
||
description: Input Processor for transforming values in various ways | ||
|
||
compatible: "zmk,input-processor-transform" | ||
|
||
include: ip_one_param.yaml | ||
|
||
properties: | ||
type: | ||
type: int | ||
x-codes: | ||
type: array | ||
required: true | ||
y-codes: | ||
type: array | ||
required: true |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,26 @@ | ||
# Copyright (c) 2024 The ZMK Contributors | ||
# SPDX-License-Identifier: MIT | ||
|
||
description: | | ||
Listener to subscribe to input events and send HID updates after processing | ||
compatible: "zmk,input-listener" | ||
|
||
properties: | ||
device: | ||
type: phandle | ||
required: true | ||
input-processors: | ||
type: phandle-array | ||
|
||
child-binding: | ||
description: "Listener overrides for certain layers" | ||
|
||
properties: | ||
layers: | ||
type: array | ||
required: true | ||
process-next: | ||
type: boolean | ||
input-processors: | ||
type: phandle-array |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,10 @@ | ||
/* | ||
* Copyright (c) 2024 The ZMK Contributors | ||
* | ||
* SPDX-License-Identifier: MIT | ||
*/ | ||
|
||
#include <input/processors/scaler.dtsi> | ||
#include <input/processors/code_mapper.dtsi> | ||
#include <input/processors/transform.dtsi> | ||
#include <input/processors/temp_layer.dtsi> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,29 @@ | ||
/* | ||
* Copyright (c) 2024 The ZMK Contributors | ||
* | ||
* SPDX-License-Identifier: MIT | ||
*/ | ||
|
||
#include <zephyr/dt-bindings/input/input-event-codes.h> | ||
|
||
/ { | ||
/omit-if-no-ref/ zip_xy_swap_mapper: zip_xy_swap_mapper { | ||
compatible = "zmk,input-processor-code-mapper"; | ||
#input-processor-cells = <0>; | ||
type = <INPUT_EV_REL>; | ||
map | ||
= <INPUT_REL_Y INPUT_REL_X> | ||
, <INPUT_REL_X INPUT_REL_Y> | ||
; | ||
}; | ||
|
||
/omit-if-no-ref/ zip_xy_to_scroll_mapper: zip_xy_to_scroll_mapper { | ||
compatible = "zmk,input-processor-code-mapper"; | ||
#input-processor-cells = <0>; | ||
type = <INPUT_EV_REL>; | ||
map | ||
= <INPUT_REL_Y INPUT_REL_WHEEL> | ||
, <INPUT_REL_X INPUT_REL_HWHEEL> | ||
; | ||
}; | ||
}; |
Oops, something went wrong.