Skip to content

Commit 63e2a9f

Browse files
committed
store set grabs
1 parent 330ede0 commit 63e2a9f

File tree

1 file changed

+19
-32
lines changed

1 file changed

+19
-32
lines changed

src/dbus/a11y_keyboard_monitor.rs

Lines changed: 19 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -128,35 +128,6 @@ trait A11yKeyboardMonitorHandler {}
128128

129129
struct KeyboardMonitor {
130130
clients: Arc<Mutex<Clients>>,
131-
//mod_names: Vec<String>,
132-
}
133-
134-
impl KeyboardMonitor {
135-
fn map_mods(&self, virtual_mods: &[Keysym], mods: u32) -> Vec<&str> {
136-
/*
137-
// TODO warn unrecognized modifier
138-
self.mod_names
139-
.iter()
140-
.map(|name| name.as_str())
141-
.enumerate()
142-
.filter(|(i, _)| {
143-
(*i as u32) < ATSPI_DEVICE_A11Y_MANAGER_VIRTUAL_MOD_START && (mods & (1 << i) != 0)
144-
})
145-
.map(|(_, name)| name)
146-
// XXX unwrap
147-
.chain(
148-
virtual_mods
149-
.iter()
150-
.enumerate()
151-
.filter(|(i, _)| {
152-
mods & (1 << (*i as u32 + ATSPI_DEVICE_A11Y_MANAGER_VIRTUAL_MOD_START)) != 0
153-
})
154-
.map(|(_, keysym)| keysym.name().unwrap()),
155-
)
156-
.collect()
157-
*/
158-
Vec::new()
159-
}
160131
}
161132

162133
#[zbus::interface(name = "org.freedesktop.a11y.KeyboardMonitor")]
@@ -193,16 +164,32 @@ impl KeyboardMonitor {
193164
}
194165
}
195166

196-
fn set_key_grabs(&self, virtual_modifiers: Vec<u32>, keystrokes: Vec<(u32, u32)>) {
167+
fn set_key_grabs(
168+
&self,
169+
#[zbus(header)] header: Header<'_>,
170+
virtual_modifiers: Vec<u32>,
171+
keystrokes: Vec<(u32, u32)>,
172+
) {
197173
let virtual_modifiers = virtual_modifiers
198174
.into_iter()
199175
.map(Keysym::from)
200176
.collect::<Vec<_>>();
201177
let keystrokes = keystrokes
202178
.into_iter()
203-
.map(|(k, mods)| (Keysym::from(k), self.map_mods(&virtual_modifiers, mods)))
179+
.map(|(k, mods)| (Keysym::from(k), Modifiers(mods)))
204180
.collect::<Vec<_>>();
205-
dbg!(virtual_modifiers, keystrokes);
181+
182+
if let Some(sender) = header.sender() {
183+
let mut clients = self.clients.lock().unwrap();
184+
let mut client = clients.get(sender);
185+
eprintln!(
186+
"key grabs set by {}: {:?}",
187+
sender,
188+
(&virtual_modifiers, &keystrokes)
189+
);
190+
client.virtual_modifiers = virtual_modifiers;
191+
client.keystrokes = keystrokes;
192+
}
206193
}
207194

208195
// TODO signal

0 commit comments

Comments
 (0)