Releases: DaikiSuganuma/winremap
Release list
v0.7.0
WinRemap v0.7.0 — 記号キーが設定に書けるようになります
; や / や @ を、ようやくルールに書けます。README の「できないこと」から 1 項目消える版です。
新機能
-
記号キーをリマップできます
"C-;" = "Enter"のように、お使いのキーボードの刻印どおりに書きます。WinRemap は表を持たず、そのつど Windows に聞きます — 同じ0xC0が日本語 106 キーボードでは@、US 101 では`だからです。表を 1 つ持てば、利用者の半分にとって嘘になります。Oem1〜Oem102という配列によらない名前も使えます。文字では指せないキーが実在するためです(何も刻まれていないキー、\を出すキーが 2 つある配列)- Shift を押さないと打てない文字は、そのままでは書けません。
"C-@"は US 配列ではエラーになり、`@` needs Shift on this keyboard; write `S-2` insteadと代わりの綴りを案内します。黙ってS-を補うと、同じ設定ファイルが機械によって別のコマンドを意味することになるためです - 解決は設定を読み込むときに 1 回だけ行います。キーボードを差し替えたら、トレイの「再読み込み」を押してください
-
設定ウィンドウの「使えるキー名」が、そのキーボードの刻印を並べます
固定の一覧ではなく、つないである実物から読んでいます。 -
C--(Ctrl とマイナスキー)が書けるようになりました
-は修飾キーの区切りと同じ文字なので、パーサーが「修飾キー名が空」と読んで弾いていました。記号キー対応以前からあった不具合です。
修正
-
切り替えた先のアプリのルールが、ちゃんと適用されます
前面アプリの監視が、イベントの伝える「前面になったウィンドウ」ではなく「今どれが前面か」を Windows に聞き直していました。切り替えの最中に聞くと直前まで前面だったウィンドウが返ることがあり、実測で5 回に 1 回ほど、次にアプリを切り替えるまで1 つ前のアプリのキーマップが使われていました。アプリ別のルールが黙って効かず、ログの前面アプリ行も間違ったアプリを指していました。イベントが正しいウィンドウを運んでくるので、聞き直しをやめました。 -
ログが記号キーに生のコードを併記しなくなりました(
/ (0xBF)→/)
括弧は「このキーはまだ設定に書けない」という合図でもありました。書けるようになった以上は嘘になります。ログに出た綴りは、そのままルールに貼れます。 まだ書けないキーには従来どおりコードが付きます。
インストール
- Microsoft Store: https://apps.microsoft.com/detail/9N6TQDXRX5WV (警告なし・自動更新)
- インストーラー:
winremap-setup.exe(管理者権限不要・ユーザー単位) - ポータブル:
winremap.exe(1 ファイル。設定は%APPDATA%\winremap\config.toml)
SmartScreen(「Windows によって PC が保護されました」)はGitHub から落としたファイルに出ます。署名なしのためです。詳細情報 → 実行で起動できます。下記の検証を推奨します。Store 版ではこの警告自体が出ません。
ダウンロードの検証
(Get-FileHash .\winremap-setup.exe -Algorithm SHA256).Hash.ToLower() # SHA256SUMS と照合
gh attestation verify .\winremap-setup.exe --repo DaikiSuganuma/winremap
公式の配布経路は Microsoft Store と GitHub Releases の 2 つです。それ以外で配布されているバイナリは非公式です。
Full changelog: https://github.com/DaikiSuganuma/winremap/blob/v0.7.0/CHANGELOG.md
WinRemap v0.7.0 — Punctuation keys, at last
;, / and @ can finally go in your rules. This release removes an item from the Limitations list in the README.
New
-
Symbol and punctuation keys work in rules.
Write them the way your keyboard is engraved —"C-;" = "Enter". WinRemap carries no table and asks Windows instead, because the same0xC0prints@on a Japanese 106 keyboard and`on a US 101. One fixed table would be a lie to half its users.- The layout-independent names
Oem1–Oem102are accepted too, because some keys cannot be reached by character at all: a key that prints nothing, and layouts where two different keys both print\ - A character that needs Shift cannot be written as itself. On a US layout
"C-@"is an error that tells you the spelling to use:`@` needs Shift on this keyboard; write `S-2` instead. Silently adding theS-would make the same config file mean different chords on different machines - Keys are resolved once, when the config is loaded. Swap keyboards and you need "Reload config" from the tray
- The layout-independent names
-
The settings window's key-name popup lists the symbols your keyboard prints, read from the hardware rather than from a list.
-
C--(Ctrl and the minus key) can be written at all.-is also the modifier separator, so the parser read it as an empty modifier name and rejected it. That predates symbol keys.
Fixed
-
Rules apply to the application you switched to.
The foreground watcher asked Windows which window was in front, rather than using the one the event named. Asked mid-switch, that answer can be the window you just left — measured, about one switch in five kept resolving keys against the previous application until you switched again. Application-scoped keymaps silently did nothing, and the log's foreground line named the wrong app. The event carries the right window, so nothing has to be asked. -
The log no longer prints a raw code beside a symbol key (
/ (0xBF)is now/).
The parentheses also meant "this key cannot be written in the config yet", which is no longer true. What the log shows can be pasted straight into a rule. Keys that still cannot be written keep their code.
Install
- Microsoft Store: https://apps.microsoft.com/detail/9N6TQDXRX5WV (no warning, automatic updates)
- Installer:
winremap-setup.exe(per-user, no admin rights needed) - Portable:
winremap.exe(one file; config at%APPDATA%\winremap\config.toml)
SmartScreen ("Windows protected your PC") applies to files downloaded from GitHub, because those are unsigned. More info → Run anyway, and verifying your download is recommended. The Store version never shows it.
Verify your download
(Get-FileHash .\winremap-setup.exe -Algorithm SHA256).Hash.ToLower() # compare with SHA256SUMS
gh attestation verify .\winremap-setup.exe --repo DaikiSuganuma/winremap
There are two official channels: the Microsoft Store and GitHub Releases. Binaries distributed anywhere else are unofficial.
Full changelog: https://github.com/DaikiSuganuma/winremap/blob/v0.7.0/CHANGELOG.md
v0.6.0
WinRemap v0.6.0 — Microsoft Store から入れられるようになります
機能ではなく配布経路の版です。「Windows によって PC が保護されました」を消すために、Store 版を用意しました。
新機能
-
Microsoft Store 版
Microsoft がパッケージに署名するため、SmartScreen の警告が出ません。更新も自動で届きます。GitHub からの直接ダウンロードは今までどおりで、そちらは引き続き未署名です(検証手順は下記)。- 中身は同じソース・同じタグから作った同じビルドです。どちらを選ぶかは信頼の問題ではなく、インストールと更新の好みの問題です
- ストアページは認定を通り次第公開されます: https://apps.microsoft.com/detail/9N6TQDXRX5WV
- 2 つの経路の違い(更新・設定ファイルの場所・ポータブル利用の可否)はインストールガイドにまとめました
-
設定ファイルが無ければ、初回起動時に作ります
これまでは設定ファイルが無いと起動を拒否していました。インストーラーがファイルを置いていたので気づきにくかったのですが、ポータブル版を初めて動かすと必ず失敗する状態でした。今は最小サンプル(メモ帳のCtrl+H)を作り、どこに作ったかをログに出します。- 既にある設定を上書きすることはありません
--configでパスを明示した場合は従来どおり、そのファイルが無ければエラーです。打ち間違いを黙って通すと、何もリマップしない WinRemap ができあがるためです
修正
-
起動元のターミナルを閉じても、WinRemap が道連れで終了しなくなりました
--debugの出力先を確保するためにそのターミナルのコンソールへ接続していましたが、Windows はコンソールのウィンドウが閉じられるとそこに接続している全プロセスを終了させます。常駐に入った時点でコンソールを手放すようにしました。--debugを付けた場合はこれまでどおり端末に出力し、端末と運命を共にします(それがこのオプションの用途です)。 -
Store 版が、実在する設定ファイルのパスを表示します
パッケージ版は%APPDATA%への書き込みが非公開の場所へ振り替えられます。アプリ自身には見えませんが、パスを他のプログラムに渡した瞬間に露見します — 「テキストエディタで開く」「フォルダーを開く」が、エクスプローラーにもエディターにも存在しない場所を指していました。起動時に 1 回だけ解決するようにしたので、アドレスバーの表示・ファイル監視・外部起動がすべて同じ 1 つの場所を指します。- インストーラー版から乗り換えた場合は、それまでの設定ファイルがそのまま使われます(既定の設定で置き換えられません)
-
ヘルプサイトが
examples/suganuma.tomlにリンクしていました。0.5.0 でpersonal-ja.tomlに改名したファイルで、日英どちらのページでも 404 になっていました。
インストール
- Microsoft Store: 認定通過後に公開されます(警告なし・自動更新)
- インストーラー:
winremap-setup.exe(管理者権限不要・ユーザー単位) - ポータブル:
winremap.exe(1 ファイル。設定は%APPDATA%\winremap\config.toml)
SmartScreen(「Windows によって PC が保護されました」)はGitHub から落としたファイルに出ます。署名なしのためです。詳細情報 → 実行で起動できます。下記の検証を推奨します。Store 版ではこの警告自体が出ません。
ダウンロードの検証
(Get-FileHash .\winremap-setup.exe -Algorithm SHA256).Hash.ToLower() # SHA256SUMS と照合
gh attestation verify .\winremap-setup.exe --repo DaikiSuganuma/winremap
公式の配布経路は Microsoft Store と GitHub Releases の 2 つです。それ以外で配布されているバイナリは非公式です。
Full changelog: https://github.com/DaikiSuganuma/winremap/blob/v0.6.0/CHANGELOG.md
WinRemap v0.6.0 — Now on the Microsoft Store
A release about how WinRemap reaches you, not about what it does. The point of it is to make "Windows protected your PC" go away.
New
-
A Microsoft Store version.
Microsoft signs the package, so there is no SmartScreen warning, and updates arrive on their own. Downloading from GitHub works exactly as before, and those binaries remain unsigned (verification below).- It is the same build from the same source at the same tag. Choosing between them is not a question of trust — it is a question of how you like to install and update software
- The Store listing goes live when certification completes: https://apps.microsoft.com/detail/9N6TQDXRX5WV
- What actually differs between the two — updates, where your config file lives, whether portable use is possible — is laid out in the install guide
-
First run creates a config if you have none.
WinRemap used to refuse to start without one. That was easy to miss because the installer seeded the file for you — but it meant the portable exe failed the first time you ran it, every time. It now writes the minimal example (the NotepadCtrl+Hfix) and says where it put it.- An existing config is never overwritten
- A path given with
--configstill has to exist. A typo there should say so, rather than quietly producing a WinRemap that remaps nothing
Fixed
-
Closing the terminal you started WinRemap from no longer closes WinRemap.
It attached to that terminal's console so--debugoutput would have somewhere to go, and Windows kills every process attached to a console when its window closes. A normal launch now hands the console back as soon as remapping is live. With--debugit still streams to the terminal and still ends with it, which is what that flag is for. -
The Store build reports a config path that exists.
A packaged app has its%APPDATA%writes redirected somewhere private. WinRemap itself cannot see that — but the moment it hands the path to another program, it shows: "open in text editor" and "open folder" pointed at a location that was not there for Explorer or your editor. The path is now resolved once at startup, so the address bar, the file watch and both links agree on one location.- Switching over from the installed version keeps using the config you already had, rather than replacing it with a fresh default
-
The help site linked
examples/suganuma.toml, renamed topersonal-ja.tomlback in 0.5.0 — the link 404'd on both language versions.
Install
- Microsoft Store: live once certification completes (no warning, automatic updates)
- Installer:
winremap-setup.exe(per-user, no admin rights needed) - Portable:
winremap.exe(one file; config at%APPDATA%\winremap\config.toml)
SmartScreen ("Windows protected your PC") applies to files downloaded from GitHub, because those are unsigned. More info → Run anyway, and verifying your download is recommended. The Store version never shows it.
Verify your download
(Get-FileHash .\winremap-setup.exe -Algorithm SHA256).Hash.ToLower() # compare with SHA256SUMS
gh attestation verify .\winremap-setup.exe --repo DaikiSuganuma/winremap
There are two official channels: the Microsoft Store and GitHub Releases. Binaries distributed anywhere else are unofficial.
Full changelog: https://github.com/DaikiSuganuma/winremap/blob/v0.6.0/CHANGELOG.md
v0.5.0
WinRemap v0.5.0 — ログが、何が起きたかを言うようになりました
キー名だけを並べていたログが、いつ・何が届き・WinRemap が何をして・何を送ったかを出すようになりました。
新機能
-
キーが何を送るかを表示します
ASCII 制御コードを持つキー・コマンドは、それも出ます。18:01:51.517 [判定] C-h (BS 0x08) → Back (BS 0x08) に置換この組み合わせが WinRemap を作るきっかけでした。Ctrl+H と Backspace は同じに見えて、端末では違う動きをします。英数字にはコードを付けません — WinRemap が記録するのはキーであって、打った内容ではないからです(ログはディスクにも保存されません)。
- 端末は Backspace キーに DEL
0x7f、Ctrl+H に BS0x08を送り、アプリがその 2 つに別の動作を割り当てていることがあります。C-hをBackにリマップすると、端末はどちらでも0x7fを送るようになります。ログで両側ともBS 0x08と出るのは、それが Windows が Backspace キーに与えているコードだからです
- 端末は Backspace キーに DEL
-
ログに 2 つの表示モード
既定はキー 1 つにつき 1 行の判定です。[全イベント]にチェックを入れると、流れた入力をすべて出します — 物理キーの押下・解放と、それに対して WinRemap が送出したイベントの全部です。リマップは 2 つの時刻に分かれて起きます(置換先はキーを押した時に押され、離した時に離されます)。記録はチェックの有無にかかわらず取っているので、入れる前に押したキーの詳細も見えます。 -
読みやすくしました
各行にミリ秒までの時刻と、どの流れの行かを示すタグ([入力]・[判定]・[注入]・[操作]・[前面])が付きます。直前と同じ時刻は空欄になるので、1 回の押下に対する数行が 1 かたまりに見えます。前面アプリの報告は、applicationに書くべき値と適用されるキーマップを 1 行で出す形になりました。ウィンドウは初期状態で大きく開きます。 -
キーの名前が出ます
設定ファイルにまだ書けないキーも、0x61ではなくNum1 (0x61)と出ます。記号キーは、あなたのキーボードの配列が刻んでいる文字で出ます(0xC0は日本語配列では@、US 配列では`です)。 -
ログウィンドウが、読み込んでいる設定ファイルを名乗ります。 再読み込みしたときだけ出ていたものが、開いた時点で分かるようになりました。
-
設定ウィンドウとログウィンドウをスクリーンリーダーが読めるようになりました(UI Automation)。
変更
--debugが、端末に出すかどうかを決めるようになりました。 これまでは端末から起動しただけで実況が流れていました。オプションを付けなければ、シェルから起動してもエクスプローラーから起動したときと同じように何も出しません。付けた場合は、ログウィンドウと同じ内容(時刻・タグ付き)がその端末に出ます。エラーと--helpはログではないので従来どおり出ます。
インストール
- インストーラー:
winremap-setup.exe(管理者権限不要・ユーザー単位) - ポータブル:
winremap.exe(1 ファイル。設定は%APPDATA%\winremap\config.toml)
SmartScreen(「Windows によって PC が保護されました」)が出たら、署名なしのためです。詳細情報 → 実行で起動できます。下記の検証を推奨します。
ダウンロードの検証
(Get-FileHash .\winremap-setup.exe -Algorithm SHA256).Hash.ToLower() # SHA256SUMS と照合
gh attestation verify .\winremap-setup.exe --repo DaikiSuganuma/winremap
GitHub Releases 以外で配布されているバイナリは非公式です。
Full changelog: https://github.com/DaikiSuganuma/winremap/blob/v0.5.0/CHANGELOG.md
WinRemap v0.5.0 — The log now says what happened
A log that listed key names now tells you when something arrived, what WinRemap decided, and what it sent in reply.
New
-
The log says what a key sends.
Where a key or a chord carries an ASCII control code, the line names it:18:01:51.517 [decided] C-h (BS 0x08) → remapped to Back (BS 0x08)That pair is the reason WinRemap exists: Ctrl+H and Backspace look alike and behave differently in a terminal. Letters and digits never show a code — WinRemap logs keys, not what you typed, and the log still never touches the disk.
- A terminal sends DEL
0x7ffor the Backspace key and BS0x08for Ctrl+H, and an application may bind the two to different things. RemappingC-htoBackis what makes your terminal send0x7ffor both. The log showsBS 0x08on both sides because that is the code Windows itself gives the Backspace key
- A terminal sends DEL
-
Two views of the log.
The default is one line per key, saying what WinRemap decided. Tick Every event for the whole stream: every physical press and release, and everything WinRemap sent in reply. The two halves of a remap happen at different moments — the target is pressed when you press the key and released when you let go. Every line is recorded either way, so ticking the box explains the keys you already pressed. -
It is readable now.
Every line carries the time to the millisecond and a tag saying which stream it belongs to ([input],[decided],[injected],[action],[window]). A stamp equal to the one above it is left blank, so everything WinRemap did in reply to one press reads as a group. The report for the application in front is one line naming theapplicationvalue to write and the keymaps it reaches. The window opens larger. -
Keys are named.
A key the config cannot name yet reads asNum1 (0x61)rather than0x61, and punctuation shows the character your own keyboard layout prints on it (0xC0is@on a Japanese layout, a backquote on a US one). -
The log window says which config file is loaded, instead of only mentioning it on a reload.
-
The settings and log windows are readable by screen readers (UI Automation).
Changed
--debugnow decides whether a terminal gets anything. It used to print whenever one was attached, so starting WinRemap from a shell produced a running commentary nobody asked for. Without the flag it is now as quiet as a launch from Explorer; with it, the terminal gets exactly what the log window shows, stamps and tags included. Errors and--helpare not log output and print as before.
Install
- Installer:
winremap-setup.exe(per-user, no admin rights needed) - Portable:
winremap.exe(one file; config at%APPDATA%\winremap\config.toml)
If SmartScreen warns you ("Windows protected your PC"), it is because the binary is unsigned. More info → Run anyway. Verifying your download is recommended:
Verify your download
(Get-FileHash .\winremap-setup.exe -Algorithm SHA256).Hash.ToLower() # compare with SHA256SUMS
gh attestation verify .\winremap-setup.exe --repo DaikiSuganuma/winremap
Binaries distributed anywhere other than GitHub Releases are unofficial.
Full changelog: https://github.com/DaikiSuganuma/winremap/blob/v0.5.0/CHANGELOG.md
v0.4.0
WinRemap v0.4.0 — 設定ウィンドウで編集できるようになりました
これまで「今効いている設定」を眺めるだけだったウィンドウが、そのファイルのエディタになりました。
新機能
-
設定ウィンドウでの編集
[編集]を押すと、名前・対象アプリ・除外アプリ・規則が入力欄になります。キーマップはツリーから追加・削除・並べ替えでき、全体設定はスライダーとチェックボックスです。- キー記法は打ちながら解釈を表示します(
A-x uなら「Alt+x に続けて u」)。読めないときは理由と、近いキー名があれば候補を出します - [保存]はコマンドラインと同じ検証器で設定全体を検証します。問題があれば何も書かず、行番号付きで一覧します
- 検証を通れば原子的に書き込んで再読み込みするので、閲覧モードに戻った時点で新しい規則が効いています
- 編集していない箇所は 1 バイトも変わりません — コメント・空行・規則の並び順・書いた綴り・改行コード。規則を削除したときに消えるのはその行と行末コメントだけで、上に書いたコメントは次の規則へ引き継がれます
- 編集中に WinRemap の外でファイルが変わっていたら、黙って上書きせず確認します。未保存のまま閉じようとしたときも同様で、保存に失敗しても(読み取り専用・空き容量不足など)編集内容は失われません
- [今の前面アプリから取得]を押して 3 秒以内に目的のアプリを前面にすると、その exe 名が対象アプリ(または除外アプリ)に入ります
- ウィンドウを開いている間も、保存の瞬間も、リマップは止まりません
- キー記法は打ちながら解釈を表示します(
-
エクスプローラー風の画面と設定ファイルの切り替え
上部のアドレスバーに設定フォルダーと、その中の.tomlの一覧が出ます。別のファイルを選べばそちらへ切り替わり、トレイの「設定を再読み込み」も新しいファイルを見ます。ファイル名の横の ● は「読み込んだ後にディスク上で変わった」印です(自動では読み直しません)。左はアイコン付きのツリー、下はバージョン・起動時刻・直近の出来事を出すステータスバーになりました。
修正
- Visual C++ 再頒布可能パッケージが要らなくなりました。 v0.3.0 の実行ファイルは
vcruntime140.dllを必要とし、それが入っていない素の Windows では起動できませんでした(STATUS_DLL_NOT_FOUND)。C ランタイムを静的リンクしたので、Windows 標準の DLL だけで動きます
詳しい使い方はヘルプ(設定ガイド)を参照してください。同梱の examples/emacs.toml には、C-x C-s(保存)のような Emacs 風の 2 ストロークの書き方を追加しました。
インストール
- インストーラー:
winremap-setup.exe(管理者権限不要・ユーザー単位) - ポータブル:
winremap.exe(1 ファイル。設定は%APPDATA%\winremap\config.toml)
SmartScreen(「Windows によって PC が保護されました」)が出たら、署名なしのためです。詳細情報 → 実行で起動できます。下記の検証を推奨します。
ダウンロードの検証
(Get-FileHash .\winremap-setup.exe -Algorithm SHA256).Hash.ToLower() # SHA256SUMS と照合
gh attestation verify .\winremap-setup.exe --repo DaikiSuganuma/winremap
GitHub Releases 以外で配布されているバイナリは非公式です。
WinRemap v0.4.0 — Edit your config in the settings window
The window that only ever showed you the config in effect is now an editor for the file it came from.
New
-
Config editing in the settings window.
Press Edit and names, target apps, exclusions and rules become fields. Keymaps can be added, deleted and reordered from the tree; the general settings sit on sliders and checkboxes.- Key-notation fields say what they read as while you type (
A-x ushows "Alt+x, then u"), and flag what they cannot parse — with a suggestion when your key name is close to a real one - Save validates the whole config with the same parser the command line uses. If anything is wrong, nothing is written and the problems are listed with their line numbers
- A valid save is written atomically and reloaded, so the new rules are in effect before the window returns to viewing
- Everything you did not edit stays byte for byte as it was — comments, blank lines, the order of your rules, your spelling, and the file's line endings. Deleting a rule takes its line and the comment on that line; comments written above it move to the rule that follows
- If the file changed outside WinRemap while you were editing, Save asks instead of overwriting. Closing with unsaved changes asks too, and a save that fails (read-only file, no space) keeps your edits
- Capture the foreground app: press it, bring the app you mean to the front within three seconds, and its exe name lands on the application (or exclusion) list
- Remapping never pauses — not while the window is open, not while a save goes through
- Key-notation fields say what they read as while you type (
-
Explorer-style window, and switching config files.
The address bar names the folder your config lives in and lists the.tomlfiles beside it; pick another and WinRemap switches to it, tray reload included. A ● next to a file means it changed on disk since it was loaded (nothing is reloaded behind your back). The list on the left is an icon tree, and a status bar shows the version, when WinRemap started, and the last thing that happened.
Fixed
- The Visual C++ redistributable is no longer required. The v0.3.0 executable imported
vcruntime140.dlland would not start on a clean Windows without it (STATUS_DLL_NOT_FOUND). The C runtime is now linked statically, so the binary runs on the DLLs Windows ships with.
See the config guide for details. The bundled examples/emacs.toml also gained the Emacs C-x map (C-x C-s to save, and so on), showing how two-stroke sequences are written.
Install
- Installer:
winremap-setup.exe(per-user, no admin rights) - Portable:
winremap.exe(single file; config at%APPDATA%\winremap\config.toml)
If SmartScreen warns you, it's because the binaries are unsigned — More info → Run anyway, and verify the download below.
Verify your download
(Get-FileHash .\winremap-setup.exe -Algorithm SHA256).Hash.ToLower() # compare with SHA256SUMS
gh attestation verify .\winremap-setup.exe --repo DaikiSuganuma/winremap
Binaries from anywhere other than GitHub Releases are unofficial.
Full changelog: https://github.com/DaikiSuganuma/winremap/blob/v0.4.0/CHANGELOG.md
v0.3.0
WinRemap v0.3.0 — マクロ記憶
押した操作をその場で記録し、キー一つで再生できるようになりました。
新機能
- マクロ記憶(任意・既定オフ)
記憶キーを押して普段どおり操作し、もう一度押して終了。再生キーで同じ操作を繰り返せます。- 記録されるのは WinRemap が出力した結果(リマップ後のキー)なので、再生は「自分で打った」のと区別がつきません
[macro]にrecord_start/record_stop(省略で開始キーが兼任)/record_playを書くまで機能は動きません- 記憶できるのは 20 コマンド。上限に達したら黙って切らずに画面で知らせます
- 記憶中・再生中は、入力しているアプリのあるディスプレイにバナーが出続け、終了キー・再生キーと対象アプリ名を表示します
- ディスクには一切書きません。内容はメモリ上だけにあり、WinRemap を終了すると消えます
- 再生は専用スレッドで実行し、キーボードフックの中では動かしません(20 コマンド分の送出が低レベルフックのタイムアウトに達してフックが外れるのを避けるため)
詳しい使い方はヘルプ(マクロ記憶)を参照してください。
インストール
- インストーラー:
winremap-setup.exe(管理者権限不要・ユーザー単位) - ポータブル:
winremap.exe(1 ファイル。設定は%APPDATA%\winremap\config.toml)
SmartScreen(「Windows によって PC が保護されました」)が出たら、署名なしのためです。詳細情報 → 実行で起動できます。下記の検証を推奨します。
ダウンロードの検証
(Get-FileHash .\winremap-setup.exe -Algorithm SHA256).Hash.ToLower() # SHA256SUMS と照合
gh attestation verify .\winremap-setup.exe --repo DaikiSuganuma/winremap
GitHub Releases 以外で配布されているバイナリは非公式です。
WinRemap v0.3.0 — Macro recording
Record what you do, and replay it with a single key.
New
- Macro recording (optional, off by default).
Press the recording key, work as usual, press it again to stop, then replay as often as you like.- What is recorded is what WinRemap emitted (the remapped keys), so a replay is indistinguishable from typing it yourself
- Nothing happens until you name
record_start/record_stop(omit it and the start key toggles) /record_playunder[macro] - A recording holds 20 commands; reaching the limit ends it and tells you rather than dropping commands quietly
- While recording or replaying, a banner sits on the display holding the app you are typing into, naming that app and the stop/replay keys, and follows you between apps and monitors
- Nothing is written to disk — the recording lives in memory and is gone when WinRemap exits
- Replay runs on its own thread, never inside the keyboard hook, so 20 commands at the maximum pacing can't reach the low-level-hook timeout and cost you the hook
See the help page for details.
Install
- Installer:
winremap-setup.exe(per-user, no admin rights) - Portable:
winremap.exe(single file; config at%APPDATA%\winremap\config.toml)
If SmartScreen warns you, it's because the binaries are unsigned — More info → Run anyway, and verify the download below.
Verify your download
(Get-FileHash .\winremap-setup.exe -Algorithm SHA256).Hash.ToLower() # compare with SHA256SUMS
gh attestation verify .\winremap-setup.exe --repo DaikiSuganuma/winremap
Binaries from anywhere other than GitHub Releases are unofficial.
Full changelog: https://github.com/DaikiSuganuma/winremap/blob/v0.3.0/CHANGELOG.md
v0.2.0
WinRemap v0.2.0 — see what it's doing
The theme of this release is visibility. Launching no longer flashes a console window, and two new windows — a settings viewer and a live log — answer the questions that used to mean opening the config file and guessing.
📖 User guide: https://daikisuganuma.github.io/winremap/ (日本語)
Upgrading from v0.1.0? Your config keeps working as-is. Nothing was removed.
Highlights
- Settings window (tray → Settings) — shows the config in effect right now: every keymap, its target apps and exclusions, and its remap rules, each with the comment you wrote beside it in the file. Where the same key is bound in more than one keymap, a column names the others — only one of them can win, and that is invisible when reading either keymap alone. A key-notation legend (
C-= Ctrl, …) sits alongside the rules.- Read-only in this release. Edit the file — the Open in text editor link hands it to whatever you associated with
.toml— and press Reload config. The file's modification time and the load time sit side by side, so a config you saved but did not reload is obvious at a glance.
- Read-only in this release. Edit the file — the Open in text editor link hands it to whatever you associated with
- Log window (tray → Show log) — watch WinRemap decide, key by key, without starting it from a terminal. It records what you did too: tray picks, window opens, reloads. Debug logging runs only while the window is open, and nothing is ever written to disk.
- No more console window. Launching from Explorer, the Start menu or at sign-in is now silent. Start it from a terminal and
--debug/--help/--versionstill print there; without one, anything you must not miss (a config error, an unknown argument) becomes a dialog instead of vanishing. - IME indicator now works in the Windows 11 Notepad. Notepad is a WinUI 3 app whose editor runs on a second UI thread, and IME open status is per thread — so asking the foreground window always answered "off". WinRemap now asks every input thread of the foreground app.
[macro] delay_msreplaces the top-levelmacro_delay_ms, so it sits in a section like[ime_indicator]does. The old spelling still works; setting both is a validation error rather than a silent winner.- Tray menu polish: an app-name/version caption at the top, and icons on the commands.
Install
Installer (recommended)
winremap-setup.exe — per-user, no admin rights; optional start-at-sign-in; creates a starter config if you have none
Portable
winremap.exe — single file, no other footprint
SmartScreen warning? The binaries are not code-signed, so Windows may warn on first run. Click More info → Run anyway — and verify your download below.
Verify your download
(Get-FileHash .\winremap-setup.exe -Algorithm SHA256).Hash.ToLower() # compare with SHA256SUMS
gh attestation verify .\winremap-setup.exe --repo DaikiSuganuma/winremap
Official binaries are distributed only via GitHub Releases (SECURITY.md).
Known limitations (v0.2)
- The settings window shows the config; it does not edit it yet. Editing and saving — preserving your comments and ordering — is the next release.
- Elevated (admin) windows don't receive remapped input (UIPI) unless WinRemap also runs elevated.
- Punctuation/OEM keys (
;,,, …) are not supported yet. - Not recommended alongside other keyboard-hook software (Keyhac, AutoHotkey, …) remapping the same keys.
Full details: CHANGELOG · Limitations
Tray menu icons are from Bootstrap Icons (MIT) — see THIRD-PARTY-NOTICES.md.
日本語
今回のテーマは「何が起きているかを見えるようにする」です。起動時にコンソールウィンドウが出なくなり、
設定ウィンドウとログウィンドウが増えました。設定ファイルを開いて確かめていたことが、その場で分かります。
- 設定ウィンドウ(トレイ →「設定」) — 今まさに効いている設定を表示します。キーマップごとの対象アプリ・
除外アプリ・リマップ規則が、設定ファイルの同じ行に書いたコメント付きで並びます。同じキーを複数の
キーマップが束縛している場合は相手の名前も表示します(実際に効くのは 1 つだけのためです)。
本バージョンでは閲覧のみで、変更はファイルを編集して「設定を再読み込み」を押してください。 - ログウィンドウ(トレイ →「ログを表示」) — キーごとの処理内容をその場で確認できます。ログはディスクに
保存されません。 - 起動時にコンソールウィンドウが出なくなりました。 ターミナルから起動した場合は従来どおりそちらに出ます。
- Windows 11 のメモ帳で IME インジケーターが表示されるようになりました。
- マクロの間隔設定が
[macro]のdelay_msに移りました(v0.1 の書き方も引き続き有効です)。
設定ファイルは v0.1.0 のまま動きます。インストール手順・設定方法・FAQ は
日本語ヘルプを参照してください。
インストーラー(winremap-setup.exe)は管理者権限不要で、SmartScreen 警告が出た場合は
「詳細情報 → 実行」で起動できます(上記の検証手順の利用を推奨)。
Developed primarily by AI agents (Claude Code) with human review — see AI-assisted development.
v0.1.0
WinRemap v0.1.0 — first release
A per-application key remapper for Windows, written in Rust — inspired by
xremap (Linux) and Keyhac.
📖 User guide: https://daikisuganuma.github.io/winremap/ (日本語)
Highlights
- Per-application remapping — rules apply only to the exe names you list, or
globally (*) with anexcludelist. App rules always win over global ones. - One declarative TOML config with Emacs-style key notation (
"C-h" = "Back"),
familiar to Keyhac/fakeymacs users. Config errors are reported with line
numbers; a broken reload keeps the previous working config. - Two-stroke prefix keys (
"A-x u" = "C-z") and macros
("C-t" = ["C-Right", "C-Left", "C-S-Right"], up to 8 chords per press). - Task tray resident with enable/disable toggle and instant config reload
(atomic swap — no lost keystrokes). - IME status indicator (opt-in): flashes a translucent「あ」panel when the
IME turns on. Display only — WinRemap never switches the IME. - Japanese/English UI, auto-detected from the system language.
- The hook callback runs in pure Rust with no heap allocation, locking, or I/O —
no GC pauses, no hook-timeout workarounds.
Install
| Installer (recommended) | winremap-setup.exe — per-user, no admin rights; optional start-at-sign-in; creates a starter config if you have none |
| Portable | winremap.exe — single file, no other footprint |
SmartScreen warning? The binaries are not code-signed, so Windows may warn on
first run. Click More info → Run anyway — and verify your download below.
Verify your download
(Get-FileHash .\winremap-setup.exe -Algorithm SHA256).Hash.ToLower() # compare with SHA256SUMS
gh attestation verify .\winremap-setup.exe --repo DaikiSuganuma/winremapOfficial binaries are distributed only via GitHub Releases
(SECURITY.md).
Known limitations (v0.1)
- Elevated (admin) windows don't receive remapped input (UIPI) unless WinRemap
also runs elevated. - Punctuation/OEM keys (
;,,, …) are not supported yet. - A console window stays open (reload errors are printed there).
- Not recommended alongside other keyboard-hook software (Keyhac, AutoHotkey, …)
remapping the same keys.
Full details: CHANGELOG ·
Limitations
日本語
Windows 用のアプリ別キーリマッパーです。選んだアプリでだけキーを置き換えられます。
インストール手順・設定方法・FAQ は日本語ヘルプを参照してください。
インストーラー(winremap-setup.exe)は管理者権限不要で、SmartScreen 警告が出た場合は
「詳細情報 → 実行」で起動できます(上記の検証手順の利用を推奨)。
Developed primarily by AI agents (Claude Code) with human review — see
AI-assisted development.