Ei protocol support
- Use the configured keyboard layout, track ei seats to reconfigure their keyboards - DBus interface - Disambiguate input devices per backend instance - Add support for `ei_keysym` and `ei_text` - Act as input method for ei_text UTF-8 injection - Create a region per output for abosolute pointer position - Map ei region for touchscreen emulation - Release pointer buttons and keys on removal - Send modifiers to EI connections
This commit is contained in:
parent
e939a72b30
commit
f4ee52c46a
15 changed files with 1092 additions and 218 deletions
|
|
@ -211,7 +211,7 @@ fn init_libinput(
|
|||
state.backend.kms().input_devices.remove(&*device.name());
|
||||
}
|
||||
|
||||
state.process_input_event(event);
|
||||
state.process_input_event(event, crate::input::InputBackendId::Normal);
|
||||
|
||||
for output in state.common.shell.read().outputs() {
|
||||
state.backend.kms().schedule_render(output);
|
||||
|
|
|
|||
|
|
@ -310,7 +310,9 @@ impl State {
|
|||
WinitEvent::Focus(true) => {
|
||||
for seat in self.common.shell.read().seats.iter() {
|
||||
let devices = seat.user_data().get::<Devices>().unwrap();
|
||||
if devices.has_device(&WinitVirtualDevice) {
|
||||
if devices
|
||||
.has_device(&WinitVirtualDevice, &crate::input::InputBackendId::Normal)
|
||||
{
|
||||
seat.set_active_output(&self.backend.winit().output);
|
||||
break;
|
||||
}
|
||||
|
|
@ -340,7 +342,9 @@ impl State {
|
|||
render_ping.ping();
|
||||
}
|
||||
WinitEvent::Redraw => render_ping.ping(),
|
||||
WinitEvent::Input(event) => self.process_input_event(event),
|
||||
WinitEvent::Input(event) => {
|
||||
self.process_input_event(event, crate::input::InputBackendId::Normal)
|
||||
}
|
||||
WinitEvent::CloseRequested => {
|
||||
self.common.should_stop = true;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -534,14 +534,14 @@ impl State {
|
|||
let device = event.device();
|
||||
for seat in self.common.shell.read().seats.iter() {
|
||||
let devices = seat.user_data().get::<Devices>().unwrap();
|
||||
if devices.has_device(&device) {
|
||||
if devices.has_device(&device, &crate::input::InputBackendId::Normal) {
|
||||
seat.set_active_output(&output);
|
||||
break;
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
self.process_input_event(event);
|
||||
self.process_input_event(event, crate::input::InputBackendId::Normal);
|
||||
// TODO actually figure out the output
|
||||
for output in self.common.shell.read().outputs() {
|
||||
self.backend.x11().schedule_render(output);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue