This software only supports Windows 10 or Windows 11 on real machines. Therefore, it may not work on older Windows or virtual environments such as Wine or Virtual Box. If you have any problems or requests, please post them to GitHub Issues.
Installation
-
Download the potable version or the installer version. The installer version creates dependencies to the installed directory and the user directory, while the potable version does not create any files outside the unzipped root except for the startup file.
-
Install and run win-vind.exe.
-
If you can see the icon in the system tray, it is working properly.
Like this
Note
:exit
is the recommended termination.<F8> + <F9>
is safe forced termination.- win-vind could not operate some windows given high-rank authorization than itself. For example, if you start Task Manager having the highest authorization and select its window, you cannot move, click or scroll the mouse cursor by win-vind. If you want to operate all windows, I recommend giving win-vind the administrator authorization. (Please use Task Scheduler).
Quick Tutorial
1. Mode Transition
The basic concept is the same as Vim, but there are two Normal Mode and two Visual Mode, and Resident Mode.
Default mode layer overview
The two groups are GUI mode and Editor mode. There are two groups: GUI mode and Editor mode. The former allows us to control windows and mouse cursor, etc. The latter allows us to emulate Vim in input forms of web pages, Microsoft Office Word, etc.
Concepts of GUI Mode and Editor Mode
Resident Mode is an evacuation mode to prevent bindings from being collisions with shortcut keys while gaming on Steam or using Vim. For example, if you have added <Esc>
into the keymap of Insert Mode for faithful Vim emulation, you can use Resident Mode to prevent win-vind from being called by Vim’s <Esc>
.
Insert Mode and Resident Mode pass all key messages to Windows, while GUI Normal Mode, GUI Visual Mode, Edi Normal Mode, Edi Visual Mode, and Command Mode block them.
Visual Concepts of Mode
After the boot, win-vind will be in Insert Mode. Let’s make transitions of mode!
2. GUI Operation and Window Operation
- Switch to GUI Normal Mode with
<Esc-Left>
. - Please inputs
:!mspaint
to launch Microsoft Paint. - You can call EasyClick with
FF
.EasyClick Demo
- Let’s select windows with
<C-w>h
or<C-w>l
. - Please select Microsoft Paint and close it with
:close
.
3. Customize win-vind
win-vind uses Run Commands style configuration method. If you’ve ever written a .vimrc
, it’s easy to make it your win-vind.
Generally, there are three levels of key mapping: key2key, keyset2keyset, and cmd2cmd. key2key assigns one key to another. keyset2keyset assigns one key combination to another, such as <c-s>
to <m-h>
. cmd2cmd is a mapping scheme that generates another command in response to a sequential command input, such as qq
to <c-w>e
.
The keyset syntax uses the same expression as in Vim, where keys are connected by -
between <
and >
. However, there is no limit to the number of combinations, and you can connect as many as you like. (e.g. <Esc-b-c-a-d>
).
The following commands are supported. By the way, {
and }
themselves are not part of the syntax.
Syntax | Effects |
---|---|
set {option} |
Set the value of the option to true. |
set no{option} |
Set the value of the option to false. |
set {option} = {val} |
Set a value of the option. The value can be a string or a number that allows floating points. The string does not need quotation marks, and any character after the non-white character will be handled as the value. White spaces at both ends of the equals sign are ignored. |
{mode}map {in-key} {out-key} |
It performs key2key mapping with low-level. The keymap influences Windows as a whole, not just the win-vind scope. |
{mode}noremap {in-cmd} {func-id} |
It defines the map to call the function. |
{mode}noremap {in-keyset} {out-keyset} |
It performs keyset2keyset mapping in win-vind scope. However, since the {func-id} definition has higher priority than its syntax, it may result in exactly one level of recursive mapping. |
{mode}unmap {in-cmd} |
Remove the map corresponding to the {in-cmd} . |
{mode}mapclear |
Delete all maps. |
command {in-cmd} {func-id} |
It defines the command to call the function. |
delcommand {in-cmd} |
Remove the command corresponding to the {in-cmd} . |
comclear |
delete all commands. |
{mode}
is the Mode Prefix. And only UTF-8 format is supported for .vindrc
.
Let’s do the last tutorial!
- Go to Insert Mode.
-
This time, we will try Instant GUI Normal Mode with
<F8>
. It allows us to temporarily switch to the GUI Normal Mode.Instant GUI Normal Demo
- Open your
.vindrc
with:e ~/.win-vind/.vindrc
.Edit .vindrc Demo
- Write following commands into
.vindrc
.set cmd_fontname = Times New Roman imap <Capslock> <ctrl> inoremap <Alt> easy_click_left
- If you done, try reloading
.vindrc
with:source
of win-vind. (No arguments are needed.)Reload Demo
- In Insert Mode, you can use
<Capslock>
instead of<Ctrl>
and call EasyClick with a single<Alt>
.