IME Shift Fix
Windows utility that protects IME mode while selecting text with Shift+Click.
The foreground mode installs low-level keyboard and mouse hooks in the current user session. When a Shift key-up follows a Shift+left-click selection, the tool suppresses that key-up and posts/injects a replacement key-up so the target app does not toggle IME mode unexpectedly.
Usage
Run in the current terminal:
ime-shift-fix.exe
Install as a Windows service:
ime-shift-fix.exe --install
Uninstall the service:
ime-shift-fix.exe --uninstall
Show help:
ime-shift-fix.exe --help
Service Mode
The service does not install hooks inside Session 0. Instead, it starts the same executable in the active console user session with the internal --user option. That user-session process owns the hooks, so the behavior applies to the logged-in desktop.
--install and --uninstall first query whether the service already exists. They only request UAC elevation when a service state change is actually needed. The non-elevated parent waits for the elevated child process and then queries the service state again before printing the final result.
Internal options:
--service: entry point used by the Windows Service Control Manager.--user: entry point used by the service to run hooks in the logged-in user session.
These are implementation details and are not needed for normal manual use.
Build
Prerequisites
For the x86_64-pc-windows-msvc target, build from an MSVC developer environment:
- Open "Developer PowerShell for VS 2022", or run
VsDevCmd.batorvcvarsall.bat x64before building.
Building
cargo build --release
The release binary is written to target\release\ime-shift-fix.exe.
License
This project is licensed under either of the following, at your option:
- Apache License, Version 2.0
- MIT License