From d14a92dfe51971b9456a7a72c724b23f2a9371f7 Mon Sep 17 00:00:00 2001 From: Daniel Prilik Date: Fri, 30 Oct 2020 23:39:12 -0400 Subject: [PATCH] add long-press + notif based mode switching oooooh boy, this is looking pretty slick. I'm kind-of impressed I was able to throw this together in ~2 days of post-work hacking (though I guess they were some pretty late-nights...) There's really only one feature left that I _need_ to implement, which is the on-disk persistence for selected mode. That shouldn't be too tricky though... --- README.md | 24 ++-- notif-demo.gif | Bin 0 -> 161946 bytes src/common.rs | 1 + src/controller/controls/dpad.rs | 9 +- src/controller/controls/media.rs | 9 +- src/controller/controls/null.rs | 15 ++- src/controller/controls/scroll_zoom.rs | 11 +- src/controller/controls/volume.rs | 11 +- src/controller/mod.rs | 166 +++++++++++++++++++++++-- src/dial_device.rs | 77 +++++++++--- src/main.rs | 20 +-- 11 files changed, 280 insertions(+), 63 deletions(-) create mode 100644 notif-demo.gif diff --git a/README.md b/README.md index a884156..f84f84c 100644 --- a/README.md +++ b/README.md @@ -18,12 +18,13 @@ You've been warned :eyes: ## Overview -Consists of two components: +`surface-dial-daemon` is a background daemon which recieves raw events and translates them to various actions. -- `surface-dial-daemon` - A background daemon which recieves raw events and translates them to various actions. -- `surface-dial-cli` - Controller to configure daemon functionality (e.g: change operating modes) +Aside from haptic feedback, the daemon also uses FreeDesktop notifications to provide visual feedback when performing various actions. -It would be cool to create some sort of GUI overlay (similar to the Windows one), though that's a bit out of scope at the moment. +![](notif-demo.gif) + +It would be cool to create some sort of GUI overlay (similar to the Windows one), though that's out of scope at the moment. ## Functionality @@ -33,12 +34,12 @@ It would be cool to create some sort of GUI overlay (similar to the Windows one) - [x] Media Controls - [x] D-Pad (emulated left, right, and space key) - [x] Scrolling / Zooming - - [ ] \(meta\) Specify modes via config file(s) -- [ ] Dynamically switch between operating modes - - _currently requires re-compiling the daemon_ - - [ ] Using some-sort of on-device mechanism (e.g: long-press) - - [ ] Using `surface-dial-cli` application + - [ ] \(meta\) custom modes specified via config file(s) +- [x] Dynamically switch between operating modes + - [x] Using some-sort of on-device mechanism (e.g: long-press) - [ ] Context-sensitive (based on currently open application) +- [ ] Mode Persistence + - _At the moment, whenever the dial disconnects, the daemon is re-launched, which resets the active mode to the default one. It would be good to have some on-disk persistence to remember the last selected mode._ - [x] Haptic Feedback - https://docs.microsoft.com/en-us/windows-hardware/design/component-guidelines/radial-controller-protocol-implementation - https://www.usb.org/sites/default/files/hutrr63b_-_haptics_page_redline_0.pdf @@ -46,6 +47,7 @@ It would be cool to create some sort of GUI overlay (similar to the Windows one) - _This was tricky to figure out, but in the end, it was surprisingly straightforward! Big thanks to [Geo](https://www.linkedin.com/in/geo-palakunnel-57718245/) for pointing me in the right direction!_ - [x] Desktop Notifications - [x] On Launch + - [x] When switching between modes - [x] When switching between sub-modes (e.g: scroll/zoom) Feel free to contribute new features! @@ -88,10 +90,6 @@ cargo build -p surface-dial-daemon && sudo target/debug/surface-dial-daemon Note the use of `sudo`, as `surface-dial-daemon` requires permission to access files under `/dev/input/` and `/dev/uinput`. -## Using `surface-dial-cli` - -TODO (the controller cli doesn't exist yet lol) - ## Installation As you might have noticed, the daemon dies whenever the Surface Dial disconnects (which happens after a brief period of inactivity). diff --git a/notif-demo.gif b/notif-demo.gif new file mode 100644 index 0000000000000000000000000000000000000000..a3b7936df7dbba62c276ce8e4fc88b72f13bacc1 GIT binary patch literal 161946 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%0AhGji`)ZltkLUCyja>kxs7yd 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

~5UcoRBS}Wl|s8 z1gbP{$zv!g#C8pPh;8OdzWUG%n2DkX|Ir5n&<75@_^&>k5&c)yJmY#i1HKD}3x-DC zsa5!1SI4*>Y1!n46LdInXqpoqUzn@vc(&qlJHcU}s_`K5VRgCFjKLGnu^%~A&(V?! zcWN*75w6;wj{kX5W7tM4TyEE9-l+hrXbS`4AOJA~f#sljBiq(XNU#_JG|Xdth8`-Y z?;By)69?eM=4A&$u>i+V8PRtZNybC8B;2r#f!#zwe#loi^KXEuX&?th22?Z#M8(!udaEpo8ZZ12>Sry58>$+-%36H|n3< zsEw?k1Tg%X6=3RqpB04nc>sp7BdzqM4ZYFdvH~et2HgJ{d@B(eF-!n?SkDtDfjx@; zarJB*diAKFDJ(t`y`3Bu)7;iYisWn+(fq--;5`PhU+f| zA9I>``xpNU-_BH*?7G$78k<}0wzuo@?bA1oah#*yUhVjKe_WtbkJadjCa0O%waV>J zrS6ye)_Rog8cX+AjQ>1%>L+JUqgv*TmTR6jK7^dqTd&!-?vni2{r&5Z$w>Cw!a>Zp z)909zz4VEMmuveI?%Bkp*rYt4?HzVCmjkcKg|aWYo447T*y<;0ihx5y}>X@%W{_rfEV=_be8rwyTO)dgD$be0s$9m)DplZziJ zwE4`N@(@TA=W|9lqhWogLlEAhHlG07o$%VwVwh7*0YWrGKK!+m&K2_899#|45Q=l2 zF&M<8R2bd@ccFwsolmH{as1SbKkU%G))~F?Sf%&6A#K}Lp3ixmwnuTdwv}XO)t~hW z%O*P47DGET1|tv`5cDi(KIx1sDkAdQng(N3-3 zF};3C9yMOxYX`-8?7A;*^Lm`0Yy}xT9-i=h?tMSanrsO95{CuX(tx_}(|0`4_!Cd5 z*2R3-X}k6D1*{DcEXjhqSAMZ>7^aphYFzGLv;Uu`*iLM`f zrGVS1-phXHG+yt}Ki$v_)#AQcl}ad=^?Nl`&*$xYjM+|VbFW?Q8&qM^k`P+8?W7SC zj{fQ-(OjqGm93EboRm2aSRU1@9b}$GIXzuhUB#RR`!Z5jGqU2Gq51(xf>P|z)~A@J%P*F@67{UP#_Qx2VPNgeYd58g5x!jE zzE4x`=<|CF1SFcoch+pBUeaLL-sK~YVv^K5(y^3wNT(U4cjA`C{X|7Elj-ZK!(fED z`MQrs3~4%DWS?P!d*1x+mn63Yk010JyD(<;X0C^^B?BvDb{!`9?VD~1CQlH5b3)=< z!jfqCq)RjWj9H&mgWQk$!rC!Lk_W^WW#?H=#vLSvoq7biZyapFD9Vi@t3^%YQFu3l z=0c+y;-~rnt5+(8sjaG#vpkmdI*(HroUWqqcF@_HXLoAbry8u@1X>M{u03AM2Lzb+ z%Xbj-4@z?s0d|-4%`kB@Ru9rLD90>*B`5q4KY~r8jQ11s?3nf{f}~j{+MmYouamsY zqUP@5O6~QoR=Ugwq%g8YKT6af3@m;~nFMS?4@JlU`u+HVP>sF3Ec7%+&^){g)B&47 zaq4@tj&fZ0_J$>&OMb+8y9RE31$#f%vQXge)zm@$EpO(jy1|)+A+H>i8!PPv_@fNZ ztw^96c|s;Nd|evUbB2T{XbgNFB1o0@&p z-QyAT&n?b6Ua)nk(8V6*HN24gX&Nh2-H}9kZ*SaSCmPqtl@~%~n=~%)DUZ)X&wJOQ z?1=@tDlVYz&I$3&E$0UhE)?+G%Da#TTyPz){P)WNIOIb9v2>R$_gS(gPOXKc>~5L3 zq{v0YR)$tQS1}OC#j}zNf@UFlEiwJti);zFn}d?JN53fTU#Q0k&lb{P@BrxB74eA9p7~jZe*3-ORJnzrJR=Q5fCEZ8<`G! zr|5U%Ad0rtWTDtObrA-=L#GQTJ*MIAm-@S`Yvqi4h}#wD~;OpPrM(A@oK5MJMsi4#*rKqImUNV zMwViJ_lWxD6vCNL07R`Db=xwqZu@A$0Rt!t363ERBlyUI8t^Qny}j6_$ZORj`Y{~g z>ckh*Ia7uXP;vrVJ2EZWJ+C+i&`#ezE_}*7?EYZ`BNxmav%?Sjhb)}z=dYZ8J_7S@ z^V(wvEC8)$br%J6zL^uhtXAh1WC1*z?Q`Re%4UY#Z?5$z@@B)t01;LwO`ic*6Q#bf z6$#br&a#wF5Rl$f9M1!6z-qq`Xet`u%Z3WF=WDYB9q5w+p;MZfl>qvBuPCQ?GX;78 zJpMOuIUsTm&;uFL&`>*ykm%o)VXGZ!CromnrSy4CKtXTwqJUL(ZrMMkM}LzW{~e(G z+oFKKrbl1o#&L%|Ze2d$O5`B@lhTOC&s0>}XQsQBW7UYqs7cUx;&f0o-lC%i#eR1D%|J{BopDQo(Hiz<8cQ>le z+>O%rAGlj-78`>vEU z1Hbx;II~Gvu=D%Y4g0;91<@;$Ar%>-JJ1blPdhh<>0gZNhNCtA>*JdFzbQfp2M(xz zABiPa8MWO&y1l&RiFP=0(&CMe{Y{&_kc+9V`W{}n!Zx4I|6zm_0lvs#0XC*COVBt6 zs==BEJGCW~I@KnfPqYbvtjQvYT5C=%0HNP^0N-cz5`M`ymXsJ)N4g z4cT5@-({$$qKlr;Sz_~V&bz-_{y*~<`fm!*pZ~Z`bs_Kw`176k-+I>l`A+ NotifyResult { + eprintln!("sending notification: {}", msg); Notification::new() .hint(Hint::Transient(true)) .hint(Hint::Category("device".into())) diff --git a/src/controller/controls/dpad.rs b/src/controller/controls/dpad.rs index 0560f43..5a1226e 100644 --- a/src/controller/controls/dpad.rs +++ b/src/controller/controls/dpad.rs @@ -3,7 +3,7 @@ use std::sync::mpsc; use std::thread::JoinHandle; use std::time::Duration; -use crate::controller::ControlMode; +use crate::controller::{ControlMode, ControlModeMeta}; use crate::dial_device::DialHaptics; use crate::fake_input::FakeInput; use crate::DynResult; @@ -123,6 +123,13 @@ impl DPad { } impl ControlMode for DPad { + fn meta(&self) -> ControlModeMeta { + ControlModeMeta { + name: "Paddle", + icon: "input-gaming", + } + } + fn on_start(&mut self, haptics: &DialHaptics) -> DynResult<()> { haptics.set_mode(false, Some(3600))?; Ok(()) diff --git a/src/controller/controls/media.rs b/src/controller/controls/media.rs index f993fe7..44a2f13 100644 --- a/src/controller/controls/media.rs +++ b/src/controller/controls/media.rs @@ -1,4 +1,4 @@ -use crate::controller::ControlMode; +use crate::controller::{ControlMode, ControlModeMeta}; use crate::dial_device::DialHaptics; use crate::fake_input::FakeInput; use crate::DynResult; @@ -18,6 +18,13 @@ impl Media { } impl ControlMode for Media { + fn meta(&self) -> ControlModeMeta { + ControlModeMeta { + name: "Media", + icon: "applications-multimedia", + } + } + fn on_start(&mut self, haptics: &DialHaptics) -> DynResult<()> { haptics.set_mode(false, Some(36))?; Ok(()) diff --git a/src/controller/controls/null.rs b/src/controller/controls/null.rs index 02d38a3..1218c12 100644 --- a/src/controller/controls/null.rs +++ b/src/controller/controls/null.rs @@ -1,16 +1,15 @@ -use crate::controller::ControlMode; +use crate::controller::{ControlMode, ControlModeMeta}; use crate::dial_device::DialHaptics; use crate::DynResult; -pub struct Null {} - -impl Null { - pub fn new() -> Null { - Null {} +impl ControlMode for () { + fn meta(&self) -> ControlModeMeta { + ControlModeMeta { + name: "null", + icon: "", + } } -} -impl ControlMode for Null { fn on_start(&mut self, haptics: &DialHaptics) -> DynResult<()> { haptics.set_mode(false, Some(0))?; Ok(()) diff --git a/src/controller/controls/scroll_zoom.rs b/src/controller/controls/scroll_zoom.rs index 9273888..72e2642 100644 --- a/src/controller/controls/scroll_zoom.rs +++ b/src/controller/controls/scroll_zoom.rs @@ -1,5 +1,5 @@ use crate::common::action_notification; -use crate::controller::ControlMode; +use crate::controller::{ControlMode, ControlModeMeta}; use crate::dial_device::DialHaptics; use crate::fake_input::{FakeInput, ScrollStep}; use crate::DynResult; @@ -26,6 +26,13 @@ const ZOOM_SENSITIVITY: u16 = 36; const SCROLL_SENSITIVITY: u16 = 90; impl ControlMode for ScrollZoom { + fn meta(&self) -> ControlModeMeta { + ControlModeMeta { + name: "Scroll/Zoom", + icon: "input-mouse", + } + } + fn on_start(&mut self, haptics: &DialHaptics) -> DynResult<()> { haptics.set_mode(false, Some(SCROLL_SENSITIVITY))?; Ok(()) @@ -43,7 +50,7 @@ impl ControlMode for ScrollZoom { action_notification("Zoom Mode", "zoom-in")?; haptics.set_mode(false, Some(ZOOM_SENSITIVITY))?; } else { - action_notification("ScrollZoom Mode", "input-mouse")?; + action_notification("Scroll Mode", "input-mouse")?; haptics.set_mode(false, Some(SCROLL_SENSITIVITY))?; } diff --git a/src/controller/controls/volume.rs b/src/controller/controls/volume.rs index 89274e6..2fb6168 100644 --- a/src/controller/controls/volume.rs +++ b/src/controller/controls/volume.rs @@ -1,4 +1,4 @@ -use crate::controller::ControlMode; +use crate::controller::{ControlMode, ControlModeMeta}; use crate::dial_device::DialHaptics; use crate::fake_input::FakeInput; use crate::DynResult; @@ -18,8 +18,15 @@ impl Volume { } impl ControlMode for Volume { + fn meta(&self) -> ControlModeMeta { + ControlModeMeta { + name: "Volume", + icon: "audio-volume-high", + } + } + fn on_start(&mut self, haptics: &DialHaptics) -> DynResult<()> { - haptics.set_mode(false, Some(36 * 2))?; + haptics.set_mode(true, Some(36 * 2))?; Ok(()) } diff --git a/src/controller/mod.rs b/src/controller/mod.rs index fba7b2c..14affef 100644 --- a/src/controller/mod.rs +++ b/src/controller/mod.rs @@ -1,47 +1,191 @@ -use crate::DynResult; +use std::sync::{Arc, Mutex}; use crate::dial_device::{DialDevice, DialEventKind, DialHaptics}; +use crate::DynResult; pub mod controls; +pub struct ControlModeMeta { + name: &'static str, + icon: &'static str, +} + pub trait ControlMode { + fn meta(&self) -> ControlModeMeta; + fn on_start(&mut self, haptics: &DialHaptics) -> DynResult<()>; + fn on_end(&mut self, _haptics: &DialHaptics) -> DynResult<()> { + Ok(()) + } + fn on_btn_press(&mut self, haptics: &DialHaptics) -> DynResult<()>; fn on_btn_release(&mut self, haptics: &DialHaptics) -> DynResult<()>; fn on_dial(&mut self, haptics: &DialHaptics, delta: i32) -> DynResult<()>; } +enum ActiveMode { + Normal(usize), + Meta, +} + pub struct DialController { device: DialDevice, - mode: Box, + modes: Vec>, + active_mode: ActiveMode, + + new_mode: Arc>>, + meta_mode: Box, // always MetaMode } impl DialController { - pub fn new(device: DialDevice, default_mode: Box) -> DialController { - DialController { - mode: default_mode, + pub fn new(device: DialDevice, modes: Vec>) -> DialController { + let metas = modes.iter().map(|m| m.meta()).collect(); + let new_mode = Arc::new(Mutex::new(None)); + + DialController { device, + + modes, + active_mode: ActiveMode::Normal(0), + + new_mode: new_mode.clone(), + meta_mode: Box::new(MetaMode::new(new_mode, 0, metas)), } } pub fn run(&mut self) -> DynResult<()> { - let haptics = self.device.haptics(); - - self.mode.on_start(haptics)?; + self.modes[0].on_start(self.device.haptics())?; loop { let evt = self.device.next_event()?; + let haptics = self.device.haptics(); + + if let Some(new_mode) = self.new_mode.lock().unwrap().take() { + self.active_mode = ActiveMode::Normal(new_mode); + self.modes[new_mode].on_start(haptics)?; + } + + let mode = match self.active_mode { + ActiveMode::Normal(idx) => &mut self.modes[idx], + ActiveMode::Meta => &mut self.meta_mode, + }; // TODO: press and hold (+ rotate?) to switch between modes match evt.kind { DialEventKind::Ignored => {} - DialEventKind::ButtonPress => self.mode.on_btn_press(haptics)?, - DialEventKind::ButtonRelease => self.mode.on_btn_release(haptics)?, - DialEventKind::Dial(delta) => self.mode.on_dial(haptics, delta)?, + DialEventKind::ButtonPress => mode.on_btn_press(haptics)?, + DialEventKind::ButtonRelease => mode.on_btn_release(haptics)?, + DialEventKind::Dial(delta) => mode.on_dial(haptics, delta)?, + DialEventKind::ButtonLongPress => { + eprintln!("long press!"); + if !matches!(self.active_mode, ActiveMode::Meta) { + mode.on_end(haptics)?; + self.active_mode = ActiveMode::Meta; + self.meta_mode.on_start(haptics)?; + } + } } } } } + +/// A mode for switching between modes. +struct MetaMode { + // constant + metas: Vec, + + // stateful (across invocations) + current_mode: usize, + new_mode: Arc>>, + + // reset in on_start + first_release: bool, + notif: Option, +} + +impl MetaMode { + fn new( + new_mode: Arc>>, + current_mode: usize, + metas: Vec, + ) -> MetaMode { + MetaMode { + metas, + + current_mode, + new_mode, + + first_release: true, + notif: None, + } + } +} + +impl ControlMode for MetaMode { + fn meta(&self) -> ControlModeMeta { + unreachable!() // meta mode never queries itself + } + + fn on_start(&mut self, haptics: &DialHaptics) -> DynResult<()> { + use notify_rust::*; + self.notif = Some( + Notification::new() + .hint(Hint::Resident(true)) + .hint(Hint::Category("device".into())) + .timeout(Timeout::Never) + .summary("Surface Dial") + .body(&format!( + "Entered Meta Mode (From Mode: {})", + self.metas[self.current_mode].name + )) + .icon("emblem-system") + .show()?, + ); + + haptics.buzz(1)?; + + self.first_release = true; + + haptics.set_mode(true, Some(36))?; + Ok(()) + } + + fn on_btn_press(&mut self, _haptics: &DialHaptics) -> DynResult<()> { + Ok(()) + } + + fn on_btn_release(&mut self, haptics: &DialHaptics) -> DynResult<()> { + if self.first_release { + self.first_release = false; + } else { + *self.new_mode.lock().unwrap() = Some(self.current_mode); + haptics.buzz(1)?; + + self.notif.take().unwrap().close(); + } + Ok(()) + } + + fn on_dial(&mut self, _haptics: &DialHaptics, delta: i32) -> DynResult<()> { + if delta > 0 { + self.current_mode += 1; + } else { + self.current_mode -= 1; + } + + self.current_mode %= self.metas.len(); + + let mode_meta = &self.metas[self.current_mode]; + if let Some(ref mut notification) = self.notif { + notification + .body(&format!("New Mode: {}", mode_meta.name)) + .icon(mode_meta.icon); + notification.update(); + } + + Ok(()) + } +} diff --git a/src/dial_device.rs b/src/dial_device.rs index 029d15d..58fedd2 100644 --- a/src/dial_device.rs +++ b/src/dial_device.rs @@ -1,4 +1,5 @@ use std::fs; +use std::sync::mpsc; use std::time::Duration; use evdev_rs::{Device, InputEvent}; @@ -7,10 +8,11 @@ use hidapi::{HidApi, HidDevice}; use crate::error::Error; pub struct DialDevice { - // TODO: explore what the control channel can be used for... - _control: Device, - axis: Device, + long_press_timeout: Duration, haptics: DialHaptics, + events: mpsc::Receiver, + + possible_long_press: bool, } #[derive(Debug)] @@ -25,10 +27,11 @@ pub enum DialEventKind { ButtonPress, ButtonRelease, Dial(i32), + ButtonLongPress, } impl DialDevice { - pub fn new() -> Result { + pub fn new(long_press_timeout: Duration) -> Result { let mut control = None; let mut axis = None; @@ -62,24 +65,66 @@ impl DialDevice { } } + // TODO: explore what the control channel can be used for... + let _control = control.ok_or(Error::MissingDial)?; + let axis = axis.ok_or(Error::MissingDial)?; + + let (events_tx, events_rx) = mpsc::channel(); + + // TODO: interleave control events with regular events + + std::thread::spawn({ + let events = events_tx; + move || { + loop { + let (_axis_status, axis_evt) = axis + .next_event(evdev_rs::ReadFlag::NORMAL) + .expect("Error::Evdev"); + // assert!(matches!(axis_status, ReadStatus::Success)); + let event = DialEvent::from_raw_evt(axis_evt.clone()) + .expect("Error::UnexpectedEvt(axis_evt)"); + + events.send(event).expect("failed to send axis event"); + } + } + }); + Ok(DialDevice { - _control: control.ok_or(Error::MissingDial)?, - axis: axis.ok_or(Error::MissingDial)?, + long_press_timeout, + events: events_rx, haptics: DialHaptics::new()?, + + possible_long_press: false, }) } - pub fn next_event(&self) -> Result { - // TODO: figure out how to interleave control events into the same event stream. + pub fn next_event(&mut self) -> Result { + let evt = if self.possible_long_press { + self.events.recv_timeout(self.long_press_timeout) + } else { + self.events + .recv() + .map_err(|_| mpsc::RecvTimeoutError::Disconnected) + }; - let (_axis_status, axis_evt) = self - .axis - .next_event(evdev_rs::ReadFlag::NORMAL) - .map_err(Error::Evdev)?; - // assert!(matches!(axis_status, ReadStatus::Success)); - - let event = - DialEvent::from_raw_evt(axis_evt.clone()).ok_or(Error::UnexpectedEvt(axis_evt))?; + let event = match evt { + Ok(event) => { + match event.kind { + DialEventKind::ButtonPress => self.possible_long_press = true, + DialEventKind::ButtonRelease => self.possible_long_press = false, + _ => {} + } + event + } + Err(mpsc::RecvTimeoutError::Timeout) => { + self.possible_long_press = false; + DialEvent { + time: Duration::from_secs(0), // this could be improved... + kind: DialEventKind::ButtonLongPress, + } + } + Err(_e) => panic!("Could not recv event"), + }; Ok(event) } diff --git a/src/main.rs b/src/main.rs index eea415c..882a338 100644 --- a/src/main.rs +++ b/src/main.rs @@ -24,7 +24,7 @@ fn main() { fn true_main() -> DynResult<()> { println!("Started."); - let dial = DialDevice::new()?; + let dial = DialDevice::new(std::time::Duration::from_millis(750))?; println!("Found the dial."); std::thread::spawn(move || { @@ -34,7 +34,7 @@ fn true_main() -> DynResult<()> { .timeout(Timeout::Never) .summary("Surface Dial") .body("Active!") - .icon("input-mouse") + .icon("media-optical") // it should be vaguely circular :P .show() .expect("failed to send notification"); @@ -46,13 +46,15 @@ fn true_main() -> DynResult<()> { } }); - // let default_mode = Box::new(controller::controls::Null::new()); - let default_mode = Box::new(controller::controls::ScrollZoom::new()); - // let default_mode = Box::new(controller::controls::Volume::new()); - // let default_mode = Box::new(controller::controls::Media::new()); - // let default_mode = Box::new(controller::controls::DPad::new()); - - let mut controller = DialController::new(dial, default_mode); + let mut controller = DialController::new( + dial, + vec![ + Box::new(controller::controls::ScrollZoom::new()), + Box::new(controller::controls::Volume::new()), + Box::new(controller::controls::Media::new()), + Box::new(controller::controls::DPad::new()), + ], + ); controller.run() }