fix: 将键盘事件检测从keyCode改为scancode

统一使用scancode作为键盘事件的检测标准,提高跨平台兼容性
This commit is contained in:
ChestnutYueyue 2026-02-15 20:48:09 +08:00
parent efc9961d2d
commit a78e6f7a05
5 changed files with 6 additions and 6 deletions

View File

@ -318,7 +318,7 @@ auto eventService = app.events();
// 键盘事件
eventService->addListener(EventType::KeyPress, [](Event& e) {
auto& key = std::get<KeyEvent>(e.data);
if (key.keyCode == static_cast<int>(Key::Escape)) {
if (key.scancode == static_cast<int>(Key::Escape)) {
Application::get().quit();
}
});

View File

@ -495,7 +495,7 @@ auto eventService = app.events();
// 监听键盘事件
eventService->addListener(EventType::KeyPress, [](Event& e) {
auto& key = std::get<KeyEvent>(e.data);
if (key.keyCode == static_cast<int>(Key::Escape)) {
if (key.scancode == static_cast<int>(Key::Escape)) {
Application::get().quit();
}
});

View File

@ -314,12 +314,12 @@ public:
addListener(EventType::KeyPress, [](Event& e) {
auto& key = std::get<KeyEvent>(e.data);
if (key.keyCode == static_cast<int>(Key::Escape)) {
if (key.scancode == static_cast<int>(Key::Escape)) {
e.handled = true;
Application::get().quit();
}
if (key.keyCode == static_cast<int>(Key::Space)) {
if (key.scancode == static_cast<int>(Key::Space)) {
E2D_LOG_INFO("Space pressed!");
}
});

View File

@ -125,7 +125,7 @@ int main(int argc, char *argv[]) {
eventService->addListener(EventType::KeyPress, [](Event &e) {
auto &keyEvent = std::get<KeyEvent>(e.data);
if (keyEvent.keyCode == static_cast<int>(Key::Escape)) {
if (keyEvent.scancode == static_cast<int>(Key::Escape)) {
e.handled = true;
Application::get().quit();
}

View File

@ -17,7 +17,7 @@ public:
addListener(EventType::KeyPress, [](Event &e) {
auto &keyEvent = std::get<KeyEvent>(e.data);
if (keyEvent.keyCode == static_cast<int>(Key::Escape)) {
if (keyEvent.scancode == static_cast<int>(Key::Escape)) {
e.handled = true;
E2D_LOG_INFO("ESC !!!exit");
Application::get().quit();