Skip to content

Commit

Permalink
use different values for scroll and cursor speeds
Browse files Browse the repository at this point in the history
  • Loading branch information
ArchUsr64 committed Apr 22, 2024
1 parent a19f303 commit 6d1e4a9
Show file tree
Hide file tree
Showing 2 changed files with 11 additions and 10 deletions.
6 changes: 3 additions & 3 deletions src/default_keymap.rs
Original file line number Diff line number Diff line change
Expand Up @@ -106,7 +106,7 @@ pub fn keymap() -> Keymap {
Some(FingerKey::Mouse(MouseEvent::Scroll(Direction::Down))),
Some(FingerKey::Mouse(MouseEvent::Scroll(Direction::Up))),
Some(FingerKey::Mouse(MouseEvent::Scroll(Direction::Right))),
Some(FingerKey::Mouse(MouseEvent::SetSpeed(16))),
Some(FingerKey::Mouse(MouseEvent::SetSpeed((16, 5)))),
//Row 2
Some(FingerKey::Keyboard(Keyboard::Tab)),
Some(FingerKey::Mouse(MouseEvent::Cursor(Direction::Left))),
Expand All @@ -117,7 +117,7 @@ pub fn keymap() -> Keymap {
Some(FingerKey::Mouse(MouseEvent::LeftClick)),
Some(FingerKey::Mouse(MouseEvent::RightClick)),
Some(FingerKey::Keyboard(Keyboard::ReturnEnter)),
Some(FingerKey::Mouse(MouseEvent::SetSpeed(2))),
Some(FingerKey::Mouse(MouseEvent::SetSpeed((2, 1)))),
//Row 3
None,
None,
Expand All @@ -128,7 +128,7 @@ pub fn keymap() -> Keymap {
None,
None,
None,
Some(FingerKey::Mouse(MouseEvent::SetSpeed(1))),
Some(FingerKey::Mouse(MouseEvent::SetSpeed((1, 1)))),
],
thumb_cluster: [
None,
Expand Down
15 changes: 8 additions & 7 deletions src/keymap.rs
Original file line number Diff line number Diff line change
Expand Up @@ -53,17 +53,18 @@ enum MouseEvent {
MiddleClick,
Cursor(Direction),
Scroll(Direction),
SetSpeed(u8),
/// (cursor, scroll) speeds
SetSpeed((i8, i8)),
}
struct MouseReportBuilder {
cursor: (i8, i8),
buttons: [bool; 3],
scroll_keys: [ScrollKey; 4],
scroll_key_state: [bool; 4],
speed: i8,
speed: (i8, i8),
}
impl MouseReportBuilder {
const DEFAULT_SPEED: i8 = 10;
const DEFAULT_SPEED: (i8, i8) = (10, 1);

const fn new() -> Self {
Self {
Expand Down Expand Up @@ -93,7 +94,7 @@ impl MouseReportBuilder {
Left => self.scroll_key_state[2] = true,
Right => self.scroll_key_state[3] = true,
},
MouseEvent::SetSpeed(val) => self.speed = val as i8,
MouseEvent::SetSpeed(val) => self.speed = val,
}
}

Expand All @@ -109,7 +110,7 @@ impl MouseReportBuilder {
.map(|(i, pressed)| *pressed as u8 * (1 << i))
.sum::<u8>();
//Divide by sqrt(2) if the cursor speed is two dimensional
let mut cursor_speed = self.speed;
let (mut cursor_speed, scroll_speed) = self.speed;
if self.cursor.0 != 0 && self.cursor.1 != 0 {
cursor_speed = cursor_speed.saturating_mul(10);
cursor_speed /= 14;
Expand All @@ -118,9 +119,9 @@ impl MouseReportBuilder {
}
}
let vertical_wheel =
(self.scroll_key_state[0] as i8 - self.scroll_key_state[1] as i8) * self.speed;
(self.scroll_key_state[0] as i8 - self.scroll_key_state[1] as i8) * scroll_speed;
let horizontal_wheel =
(self.scroll_key_state[3] as i8 - self.scroll_key_state[2] as i8) * self.speed;
(self.scroll_key_state[3] as i8 - self.scroll_key_state[2] as i8) * scroll_speed;
let report = WheelMouseReport {
buttons,
x: self.cursor.0 * cursor_speed,
Expand Down

0 comments on commit 6d1e4a9

Please sign in to comment.