seat: implement per-device keymaps
This commit is contained in:
parent
225995eb2f
commit
826f40adca
21 changed files with 293 additions and 71 deletions
|
|
@ -196,7 +196,20 @@ impl WlSeatGlobal {
|
|||
time_usec,
|
||||
key,
|
||||
state,
|
||||
} => self.key_event(time_usec, key, state),
|
||||
} => {
|
||||
let desired_kb_map_id = match dev.keymap_id.get() {
|
||||
Some(id) => id,
|
||||
None => self.seat_kb_map_id.get(),
|
||||
};
|
||||
if desired_kb_map_id != self.effective_kb_map_id.get() {
|
||||
let map = match dev.keymap.get() {
|
||||
Some(map) => map,
|
||||
None => self.seat_kb_map.get(),
|
||||
};
|
||||
self.set_effective_keymap(&map);
|
||||
}
|
||||
self.key_event(time_usec, key, state)
|
||||
}
|
||||
InputEvent::ConnectorPosition {
|
||||
time_usec,
|
||||
connector,
|
||||
|
|
|
|||
|
|
@ -38,7 +38,7 @@ impl WlKeyboard {
|
|||
}
|
||||
|
||||
pub fn send_keymap(&self) {
|
||||
let map = self.seat.global.kb_map.get();
|
||||
let map = self.seat.global.effective_kb_map.get();
|
||||
let fd = match self.seat.keymap_fd(&map) {
|
||||
Ok(fd) => fd,
|
||||
Err(e) => {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue