Update orbclient, add scroll events

This commit is contained in:
Jeremy Soller
2017-02-27 21:48:15 -07:00
parent 96fbf1658f
commit f4d6fbb4a2
3 changed files with 19 additions and 9 deletions
+1 -1
View File
@@ -4,6 +4,6 @@ version = "0.1.0"
[dependencies]
bitflags = "0.7"
orbclient = "0.2"
orbclient = "0.3"
redox_event = { git = "https://github.com/redox-os/event.git" }
redox_syscall = "0.1"
+17 -7
View File
@@ -14,7 +14,7 @@ use std::os::unix::io::AsRawFd;
use std::mem;
use event::EventQueue;
use orbclient::{KeyEvent, MouseEvent};
use orbclient::{KeyEvent, MouseEvent, ScrollEvent};
use syscall::iopl;
mod controller;
@@ -98,11 +98,14 @@ impl<'a> Ps2d<'a> {
dy += 0x100;
}
let _extra = if self.extra_packet {
self.packets[3]
} else {
0
};
let mut dz = 0;
if self.extra_packet {
let mut scroll = (self.packets[3] & 0xF) as i8;
if scroll & (1 << 3) == 1 << 3 {
scroll -= 16;
}
dz = -scroll as i32;
}
self.input.write(&MouseEvent {
x: dx,
@@ -111,6 +114,13 @@ impl<'a> Ps2d<'a> {
middle_button: flags.contains(MIDDLE_BUTTON),
right_button: flags.contains(RIGHT_BUTTON)
}.to_event()).expect("ps2d: failed to write mouse event");
if dz != 0 {
self.input.write(&ScrollEvent {
x: 0,
y: dz,
}.to_event()).expect("ps2d: failed to write scroll event");
}
} else {
println!("ps2d: overflow {:X} {:X} {:X} {:X}", self.packets[0], self.packets[1], self.packets[2], self.packets[3]);
}
@@ -137,7 +147,7 @@ fn daemon(input: File) {
},
None => (keymap::english::get_char)
};
let mut ps2d = Ps2d::new(input, extra_packet,&keymap);
let mut ps2d = Ps2d::new(input, extra_packet, &keymap);
let mut event_queue = EventQueue::<(bool, u8)>::new().expect("ps2d: failed to create event queue");
+1 -1
View File
@@ -3,7 +3,7 @@ name = "vesad"
version = "0.1.0"
[dependencies]
orbclient = "0.2"
orbclient = "0.3"
ransid = "0.2"
rusttype = { version = "0.2", optional = true }
redox_syscall = "0.1"