@@ -128,35 +128,6 @@ trait A11yKeyboardMonitorHandler {}
128128
129129struct 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