1
0
Fork 0
forked from wry/wry

seat: implement per-device keymaps

This commit is contained in:
Julian Orth 2024-04-12 17:06:16 +02:00
parent 225995eb2f
commit 826f40adca
21 changed files with 293 additions and 71 deletions

View file

@ -299,7 +299,23 @@ impl ConfigProxyHandler {
} else {
self.get_keymap(keymap)?
};
seat.set_keymap(&keymap);
seat.set_seat_keymap(&keymap);
Ok(())
}
fn handle_set_device_keymap(
&self,
device: InputDevice,
keymap: Keymap,
) -> Result<(), CphError> {
let dev = self.get_device_handler_data(device)?;
if keymap.is_invalid() {
dev.keymap_id.set(None);
dev.keymap.set(None);
} else {
let map = self.get_keymap(keymap)?;
dev.set_keymap(&map);
};
Ok(())
}
@ -1746,6 +1762,9 @@ impl ConfigProxyHandler {
self.handle_set_explicit_sync_enabled(enabled)
}
ClientMessage::GetSocketPath => self.handle_get_socket_path(),
ClientMessage::DeviceSetKeymap { device, keymap } => self
.handle_set_device_keymap(device, keymap)
.wrn("set_device_keymap")?,
}
Ok(())
}