1
0
Fork 0
forked from wry/wry

autocommit 2022-04-02 00:31:30 CEST

This commit is contained in:
Julian Orth 2022-04-02 00:31:30 +02:00
parent 2dd433aa04
commit 6ad6d83b7e
34 changed files with 446 additions and 161 deletions

View file

@ -93,8 +93,14 @@ impl MetalBackend {
fn handle_keyboard_key(self: &Rc<Self>, event: LibInputEvent) {
let (event, dev) = unpack!(self, event, keyboard_event);
let state = if event.key_state() == LIBINPUT_KEY_STATE_PRESSED {
if dev.pressed_keys.insert(event.key(), ()).is_some() {
return;
}
KeyState::Pressed
} else {
if dev.pressed_keys.remove(&event.key()).is_none() {
return;
}
KeyState::Released
};
dev.event(InputEvent::Key(event.key(), state));
@ -132,8 +138,14 @@ impl MetalBackend {
fn handle_pointer_button(self: &Rc<Self>, event: LibInputEvent) {
let (event, dev) = unpack!(self, event, pointer_event);
let state = if event.button_state() == LIBINPUT_BUTTON_STATE_PRESSED {
if dev.pressed_buttons.insert(event.button(), ()).is_some() {
return;
}
KeyState::Pressed
} else {
if dev.pressed_buttons.remove(&event.button()).is_none() {
return;
}
KeyState::Released
};
dev.event(InputEvent::Button(event.button(), state));

View file

@ -119,6 +119,7 @@ impl MetalBackend {
}
fn handle_input_device_removed(self: &Rc<Self>, dev: &Rc<MetalInputDevice>) {
dev.pre_pause();
log::info!("Device removed: {}", dev.devnode.to_bytes().as_bstr());
self.device_holder.input_devices.borrow_mut()[dev.slot] = None;
dev.fd.set(None);
@ -148,6 +149,7 @@ impl MetalBackend {
fn handle_input_device_paused(self: &Rc<Self>, dev: &Rc<MetalInputDevice>) {
log::info!("Device paused: {}", dev.devnode.to_bytes().as_bstr());
dev.pre_pause();
if let Some(rd) = dev.inputdev.take() {
rd.device().unset_slot();
}
@ -282,6 +284,8 @@ impl MetalBackend {
hscroll: Cell::new(0.0),
vscroll: Cell::new(0.0),
name: Default::default(),
pressed_keys: Default::default(),
pressed_buttons: Default::default(),
left_handed: Default::default(),
accel_profile: Default::default(),
accel_speed: Default::default(),