tests: Emulate clicking all submitting buttons
This commit is contained in:
@ -14,14 +14,37 @@ fn check_layout(name: &str) {
|
|||||||
.expect("layout broken");
|
.expect("layout broken");
|
||||||
|
|
||||||
let context = xkb::Context::new(xkb::CONTEXT_NO_FLAGS);
|
let context = xkb::Context::new(xkb::CONTEXT_NO_FLAGS);
|
||||||
xkb::Keymap::new_from_string(
|
|
||||||
|
let keymap_str = layout.keymap_str
|
||||||
|
.clone()
|
||||||
|
.into_string().expect("Failed to decode keymap string");
|
||||||
|
|
||||||
|
let keymap = xkb::Keymap::new_from_string(
|
||||||
&context,
|
&context,
|
||||||
layout.keymap_str
|
keymap_str.clone(),
|
||||||
.clone()
|
|
||||||
.into_string().expect("Failed to decode keymap string"),
|
|
||||||
xkb::KEYMAP_FORMAT_TEXT_V1,
|
xkb::KEYMAP_FORMAT_TEXT_V1,
|
||||||
xkb::KEYMAP_COMPILE_NO_FLAGS,
|
xkb::KEYMAP_COMPILE_NO_FLAGS,
|
||||||
).expect("Failed to create keymap");
|
).expect("Failed to create keymap");
|
||||||
|
|
||||||
|
let state = xkb::State::new(&keymap);
|
||||||
|
|
||||||
|
// "Press" each button with keysyms
|
||||||
|
for view in layout.views.values() {
|
||||||
|
for row in &view.rows {
|
||||||
|
for button in &row.buttons {
|
||||||
|
let keystate = button.state.borrow();
|
||||||
|
for keycode in &keystate.keycodes {
|
||||||
|
match state.key_get_one_sym(*keycode) {
|
||||||
|
xkb::KEY_NoSymbol => {
|
||||||
|
eprintln!("{}", keymap_str);
|
||||||
|
panic!("Keysym {} on key {:?} can't be resolved", keycode, button.name);
|
||||||
|
},
|
||||||
|
_ => {},
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fn main() -> () {
|
fn main() -> () {
|
||||||
|
|||||||
Reference in New Issue
Block a user