@tenado4301

Как проверить удерживается ли клавиша на Windows os?

Я попытался сделать это с помощью крейта winit, но там есть только нажатие и отпускание. Если вы удерживаете нажатой одну клавишу, а затем нажимаете вторую, то нажатие первой клавиши сбрасывается. Мне нужно знать, удерживается ли клавиша в данный момент нажатой или нет, независимо от других клавиш. Так как это сделано в библиотеке keyboard на python функция is_pressed()

Я не нашел ничего подобного на crates.io . Может быть, кто-то сталкивался с такой проблемой?
  • Вопрос задан
  • 87 просмотров
Пригласить эксперта
Ответы на вопрос 1
vabka
@vabka
Токсичный шарпист
Под виндой ты можешь попробовать крейт windows и функцию GetKeyState:
https://docs.microsoft.com/en-us/windows/win32/api...
cargo.toml
[package]
name = "windows_key_press"
version = "0.1.0"
edition = "2021"


[dependencies.windows]
version = "0.37.0"
features = ["Win32_UI_Input_KeyboardAndMouse"]

main.rs

use std::thread;
use windows::Win32::UI::Input::KeyboardAndMouse::{GetKeyState};
fn main() {
    const VK_SPACE: i32 = 0x20;
    const HIGHER_ORDER_BIT: i16 = -128;
    loop {
        let state = unsafe { GetKeyState(VK_SPACE) };
        let is_up = state & HIGHER_ORDER_BIT == 0;
        println!("{}", is_up);
        thread::sleep(std::time::Duration::from_millis(100));
    }
}
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы