HID = Human Interface Device
Free Windows app that allows the keyboard lying in your drawer to be useful again.
- Features
- UI
- Usage
- Settings
- Profiles
- Key names
- Similar Tools
- Troubleshooting & Support
- Disclaimer
- License
- Key -> Combo: Press a single key to send a combo like
Ctrl+C
. - Key -> Text: Press a single key to send a text like
¯\_(ツ)_/¯
. - Key -> Run: Press a single key to run a command like
explorer.exe C:\Some\Path
. - Profiles: Switch between different sets of key bindings easily.
- Any USB keyboard: No matter how old or cheap.
- Unicode support: Emoji, math symbols, katakana? No problem.
- No drivers required: Just run the
.exe
. - Portable: No installation required.
- Minimal UI: Just the essentials.
- Configuration in
.ini
: Simple format, set and forget.
(Granted, the last two features can be viewed as lack of features by the "glass half empty" folks, but I like to think of them as simplicity.)
- Plug in a second (third, fourth, etc.) keyboard.
- Download the latest release from Releases and extract it.
- Run
HIDeous.exe
. - Press a key, a key code will appear in one of the rows.
- Note down the "Device Hash" of that keyboard.
- Edit
settings.ini
in the application directory. - Restart the app and you're done! 🎉
All settings are stored in settings.ini
in the same directory as the app.
This is my actual settings.ini
that I use at home, I just added comments to explain each section.
; ❌ Don't touch Global settings, unless something is broken.
[Global]
; When `1`, it will create `debug.log` in this directory with debug info.
; ⚠ Can be a lot of data, keep this disabled when not needed.
Debug=0
; How long to give the app to register a key, in milliseconds.
; If the app keeps missing keys, try increasing this.
KeyWaitTime=30
; ✅ Edit this section to name your keyboards.
; Left side = Any name you want to give your keyboard.
; Right side = Its Device Hash, find it in the UI.
[Devices]
Main_Keyboard=9CC297
NumPad=1A5553
; ✅ Edit this section to set bindings for a specific keyboard.
; This section configures my main keyboard.
;
; `text:` prefix will send a text.
; `keys:` prefix will send a key combination.
; `run:` prefix will run a command.
;
; ⚠ Never include a comment in the same line as a key binding. ⚠
[Main_Keyboard]
MULTIPLY=text:×
; ✅ The same, but for my external numpad.
[NumPad]
Numpad0=keys:WIN+F10
Numpad1=keys:WIN+F1
Numpad2=keys:WIN+F2
Numpad3=keys:WIN+F3
DECIMAL=keys:WIN+F11
ENTER=keys:WIN+F12
Numpad7=keys:CTRL+SHIFT+F9
Numpad8=keys:CTRL+SHIFT+F10
Numpad9=keys:CTRL+SHIFT+F11
ADD=keys:CTRL+SHIFT+F12
MULTIPLY=text:×
Numpad4=run:explorer.exe C:\data\ShareX\Screenshots
; Switch to the `settings.Secondary.ini` profile.
ESCAPE=profile:Secondary
; That's it! Save the file and restart the app.
By default, only key bindings from the main settings.ini
file are active.
To use a different set of key bindings, create a new .ini
file in the same directory as the app, e.g. settings.Secondary.ini
.
To switch to that profile, either select it from the UI or add a key binding with the profile:
prefix, e.g. ESCAPE=profile:Secondary
.
This allows you to have different sets of key bindings for different tasks or applications.
Example of the settings.Secondary.ini
file:
; https://github.com/dero/HIDeous
; ----------------------------------------------------
; REMEMBER TO RESTART THE APP AFTER CHANGING THIS FILE
; ----------------------------------------------------
; Don't repeat the [Global] and [Devices] sections, they are always
; loaded from the main settings file.
[NumPad]
; Remap the 0 key to a key combination different from the main profile.
Numpad0=keys:CTRL+SHIFT+ALT+F1
; Switch back to the default profile.
ESCAPE=profile:Default
You can mostly just use the intuitive name of the key, like A
, F1
, SHIFT
, etc. To find out key codes for more obscure keys, you can use the UI. Press a key and its code will appear in one of the rows.
And if that's not enough, you can find the long list of key codes baked into the app in the source code.
How's this different from AutoHotkey or HIDMacros?
It can tell apart individual keyboards. AHK can't easily do that.
It can print Unicode strings, which is something HIDMacros struggles with.
Then there's LuaMacros, which is a great tool, but it can be a bit hard to wrap your head around.
And it's newer, lighter and simpler than all of them. ⚖
Try running the app as an administrator.
If that doesn't help, it'd be great if you took the time to create an issue on GitHub. I'll do my best to help you out and you'll be helping make the app better for everyone.
Make sure the "Run on startup" toggle in the UI is off, then just delete the app directory.
This is essentially a keylogger. It doesn't do any shenanigans with your data, but thanks to access to your system, it could. Same as any other software you download from the internet.
If you can read and compile C++, you can check the source code and produce the binaries yourself. If you can't, either trust me or don't use this.
Also, I'm actually a web engineer, not a C++ developer by trade, so the code might be a bit rough around the edges. Constructive criticism is welcome. 🙇♂️
Do whatever you want with this. MIT License.
Attribution and nice words are appreciated, but not required. 🙂