Skip to content

Commit

Permalink
Better error messages on windows for registration errors returned by OS
Browse files Browse the repository at this point in the history
  • Loading branch information
Exidex committed Nov 14, 2024
1 parent f6dafbc commit 8ee9d9b
Showing 1 changed file with 16 additions and 2 deletions.
18 changes: 16 additions & 2 deletions src/platform_impl/windows/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ use std::ptr;

use keyboard_types::{Code, Modifiers};
use windows_sys::Win32::{
Foundation::{HWND, LPARAM, LRESULT, WPARAM},
Foundation::{HWND, LPARAM, LRESULT, WPARAM, WIN32_ERROR, ERROR_HOTKEY_ALREADY_REGISTERED},
UI::{
Input::KeyboardAndMouse::*,
WindowsAndMessaging::{
Expand Down Expand Up @@ -95,7 +95,21 @@ impl GlobalHotKeyManager {
let result =
unsafe { RegisterHotKey(self.hwnd, hotkey.id() as _, mods, vk_code as _) };
if result == 0 {
return Err(crate::Error::AlreadyRegistered(hotkey));
let error = std::io::Error::last_os_error();

return match error.raw_os_error() {
Some(raw_os_error) => {
let win32error = WIN32_ERROR::try_from(raw_os_error);
if let Ok(ERROR_HOTKEY_ALREADY_REGISTERED) = win32error {
Err(crate::Error::AlreadyRegistered(hotkey))
} else {
Err(crate::Error::OsError(error))
}
}
_ => {
Err(crate::Error::OsError(error))
}
}
}
}
_ => {
Expand Down

0 comments on commit 8ee9d9b

Please sign in to comment.