/ { // First, delete the existing basic GPIO based instance. /delete-node/ encoder; }; &pinctrl { qdec_default: qdec_default { group1 { psels = , ; bias-pull-up; }; }; qdec_sleep: qdec_sleep { group1 { psels = , ; bias-pull-up; low-power-enable; }; }; }; // Set up the QDEC hardware based driver and give it the same label as the deleted node. encoder: &qdec0 { status = "okay"; led-pre = <0>; steps = <80>; pinctrl-0 = <&qdec_default>; pinctrl-1 = <&qdec_sleep>; pinctrl-names = "default", "sleep"; }; / { behaviors { hw_soft_off: hw_soft_off { compatible = "zmk,behavior-soft-off"; #binding-cells = <0>; }; }; soft_off_direct_kscan: soft_off_direct_kscan { compatible = "zmk,kscan-gpio-direct"; input-keys = <&button0>; wakeup-source; }; soft_off_sideband_behaviors { compatible = "zmk,kscan-sideband-behaviors"; kscan = <&soft_off_direct_kscan>; soft_off { row = <0>; column = <0>; bindings = <&hw_soft_off>; }; }; soft_off_wakers { compatible = "zmk,soft-off-wakeup-sources"; status = "okay"; wakeup-sources = <&soft_off_direct_kscan>; }; };