等待按键
(delay: i32)
| 83 | |
| 84 | /// 等待按键 |
| 85 | pub fn wait_key(delay: i32) -> Result<i32> { |
| 86 | let mut manager = WINDOW_MANAGER |
| 87 | .lock() |
| 88 | .map_err(|_| anyhow!("Failed to lock window manager"))?; |
| 89 | |
| 90 | if delay > 0 { |
| 91 | std::thread::sleep(Duration::from_millis(delay as u64)); |
| 92 | } |
| 93 | |
| 94 | for wrapper in manager.values_mut() { |
| 95 | let window = &mut wrapper.0; // 访问内部 Window |
| 96 | |
| 97 | // 映射常用键 |
| 98 | if window.is_key_down(Key::Escape) { |
| 99 | return Ok(27); |
| 100 | } |
| 101 | if window.is_key_down(Key::Space) { |
| 102 | return Ok(32); |
| 103 | } |
| 104 | if window.is_key_down(Key::Enter) { |
| 105 | return Ok(13); |
| 106 | } |
| 107 | if window.is_key_down(Key::Q) { |
| 108 | return Ok(113); |
| 109 | } |
| 110 | } |
| 111 | |
| 112 | Ok(-1) |
| 113 | } |
| 114 | |
| 115 | /// 销毁所有窗口 |
| 116 | pub fn destroy_all_windows() -> Result<()> { |