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