1
0

add scroll + notifications

oh my god it took far too long to get notifications working...
This commit is contained in:
Daniel Prilik
2020-10-29 19:31:32 -04:00
parent c4039edc55
commit cf1b0a4eb4
19 changed files with 810 additions and 53 deletions

View File

@@ -87,7 +87,7 @@ impl Worker {
Ordering::Greater => self.fake_input.key_press(&[EV_KEY::KEY_RIGHT]).unwrap(),
}
eprintln!("{:?}", self.velocity);
// eprintln!("{:?}", self.velocity);
}
}
}

View File

@@ -23,11 +23,11 @@ impl Media {
impl ControlMode for Media {
fn on_btn_press(&mut self) -> DynResult<()> {
self.fake_input.key_click(&[EV_KEY::KEY_PLAYPAUSE])?;
Ok(())
}
fn on_btn_release(&mut self) -> DynResult<()> {
self.fake_input.key_click(&[EV_KEY::KEY_PLAYPAUSE])?;
Ok(())
}

View File

@@ -1,7 +1,9 @@
mod dpad;
mod media;
mod scroll_zoom;
mod volume;
pub use self::dpad::*;
pub use self::media::*;
pub use self::scroll_zoom::*;
pub use self::volume::*;

View File

@@ -0,0 +1,68 @@
use crate::common::{action_notification, DialDir, ThresholdHelper};
use crate::controller::ControlMode;
use crate::fake_input::{FakeInput, ScrollStep};
use crate::DynResult;
use evdev_rs::enums::EV_KEY;
pub struct ScrollZoom {
thresh: ThresholdHelper,
zoom: bool,
fake_input: FakeInput,
}
impl ScrollZoom {
pub fn new(sensitivity: i32) -> ScrollZoom {
ScrollZoom {
thresh: ThresholdHelper::new(sensitivity),
zoom: false,
fake_input: FakeInput::new(),
}
}
}
impl ControlMode for ScrollZoom {
fn on_btn_press(&mut self) -> DynResult<()> {
Ok(())
}
fn on_btn_release(&mut self) -> DynResult<()> {
self.zoom = !self.zoom;
if self.zoom {
action_notification("Zoom Mode", "zoom-in")?;
} else {
action_notification("ScrollZoom Mode", "input-mouse")?;
}
Ok(())
}
fn on_dial(&mut self, delta: i32) -> DynResult<()> {
match self.thresh.update(delta) {
None => {}
Some(DialDir::Left) => {
if self.zoom {
eprintln!("zoom out");
self.fake_input
.key_click(&[EV_KEY::KEY_LEFTCTRL, EV_KEY::KEY_MINUS])?;
} else {
eprintln!("scroll up");
self.fake_input.scroll_step(ScrollStep::Up)?;
}
}
Some(DialDir::Right) => {
if self.zoom {
eprintln!("zoom in");
self.fake_input
.key_click(&[EV_KEY::KEY_LEFTCTRL, EV_KEY::KEY_EQUAL])?;
} else {
eprintln!("scroll down");
self.fake_input.scroll_step(ScrollStep::Down)?;
}
}
}
Ok(())
}
}

View File

@@ -24,14 +24,13 @@ impl Volume {
impl ControlMode for Volume {
fn on_btn_press(&mut self) -> DynResult<()> {
// TODO: support double-click to mute
eprintln!("play/pause");
// self.fake_input.mute()?
self.fake_input.key_click(&[EV_KEY::KEY_PLAYPAUSE])?;
Ok(())
}
fn on_btn_release(&mut self) -> DynResult<()> {
eprintln!("play/pause");
// self.fake_input.mute()?
self.fake_input.key_click(&[EV_KEY::KEY_PLAYPAUSE])?;
Ok(())
}