How input modes work

awase switches its behavior based on the combination of the "IME state" and the "engine state."

IME Engine Behavior
ON ON Thumb-shift (NICOLA) input
ON OFF Ordinary IME input (romaji conversion)
OFF Either Direct alphanumeric input (the engine stops automatically)

When the IME is OFF, the engine stops automatically, so awase will not misbehave in password fields and similar contexts.

NICOLA standard layout diagram

This lists which character each key outputs in the bundled default layouts (JIS layout/nicola.yab / US layout/nicola_us.yab). The normal plane is produced by a single keystroke; the other three planes are produced by chording (a simultaneous keystroke) with the Muhenkan/Henkan key (thumb shift) or the pinky-shift key.

Roman-kana Literal (symbols/digits) Special key Unassigned

The layout is fully customizable. You can edit it directly in the "Layout Editor" tab of the Settings window, or create your own .yab file and switch to it (see Switching layouts).

Keyboard shortcuts

These are the shortcuts in the default configuration. They can be changed in config.toml.

Category Keys Action
IME Ctrl + Henkan Turn the IME ON. If it is already ON, reset it to hiragana / romaji / CapsLock OFF
IME Ctrl + Muhenkan Turn the IME OFF (idempotent — nothing happens if it is already OFF)
IME Left Shift solo tap Sustained "IME-ON half-width alphanumeric" toggle. Press and release without pressing any other key to switch on; tap again to release (currently supported by MS-IME only; GJI support is planned)
Engine Ctrl + Shift + Henkan Turn the NICOLA engine ON (enable thumb-shift input)
Engine Ctrl + Shift + Muhenkan Turn the NICOLA engine OFF (switch to romaji input)
Engine Ctrl + Shift + F12 Toggle the engine ON/OFF (global hotkey, configurable in config.toml)
System Ctrl + Shift + F11 Force-override the focus classification of the current window (switch between text input ↔ bypass)
Thumb shift Henkan Right thumb-shift key (while the engine is ON, pressed simultaneously with another key for NICOLA detection)
Thumb shift Muhenkan Left thumb-shift key (while the engine is ON, pressed simultaneously with another key for NICOLA detection)
IME Hankaku/Zenkaku Toggle the IME ON/OFF (standard Windows behavior)
Emergency Muhenkan × 3 (within 400 ms) Force the NICOLA engine OFF (for when a stuck Ctrl or similar keeps the shortcuts from working)
Emergency Ctrl+MuhenkanCtrl+HenkanCtrl+Muhenkan (within 2 seconds) Panic reset — force a return to the standard state (IME ON, hiragana, engine ON)

About idempotent IME control: Ctrl+Henkan is the operation "turn the IME ON." Unlike the traditional toggle approach, it always produces the intended result even if the current state has drifted. It operates independently of the engine ON/OFF state. If the IME is already ON, it aligns any in-progress state (katakana, half-width alphanumeric, etc.) to hiragana / romaji / CapsLock OFF and re-commits it.

About the "IME-ON half-width alphanumeric" toggle: A solo tap of left Shift temporarily stops only the NICOLA engine while keeping the IME open, letting you type alphanumeric characters directly (because the IME itself does not close, this works differently from a password field). Tapping left Shift alone again returns to normal kana input. It is also released automatically by a solo tap of the right Shift or by a focus change.

Tray-icon operations

The awase icon lives in the system tray at the far right of the taskbar.

Right-click menu

  • Select layout — Lists the .yab files in layouts_dir. Selecting one switches the layout immediately
  • Settings... — Opens the Settings window
  • Clear learning cache — Deletes the IME's learning-data cache
  • Restart process — Fully restarts the process when input misbehaves (see "Emergency operations & reset" for details)
  • Auto-start — Enables/disables auto-start at logon (checked = enabled)
  • Restart as administrator — Restarts awase elevated via UAC. This lets it work even with apps that require administrator privileges (some games, for example)
  • Enable/disable toggle — Toggles the engine ON/OFF (the same operation as Ctrl+Shift+F12)
  • Exit — Quits awase

Reading the icon

  • When the icon is shown normally — engine ON (thumb-shift input enabled)
  • When the icon is grayed out — engine OFF (ordinary input)

Settings window (awase-settings)

Open it by right-clicking the tray icon → "Settings...". After making changes, use the "Apply" button to save them and apply them immediately.

Basic Settings tab

ItemDescription
Keyboard modelChoose JIS (Japanese layout) or US (English layout)
Simultaneous-keystroke thresholdThe time window (ms) within which two keystrokes count as simultaneous. The NICOLA standard default is 100 ms
Confirm modeThe timing at which characters are committed. See the table below
Speculative-output waitThe wait (ms) before speculative output when using two_phase / adaptive_timing
Output modeUnicode (recommended), PerKey, or Batched. Normally leave it as Unicode
Hook modeRelay (recommended, stable) or Filter (low latency)
Auto-startWhether to start automatically at Windows logon
LayoutSelects the .yab layout file to use. "Rescan" refreshes the list

Confirm-mode options

ModeBehaviorSuited for
waitHolds until the timeout before committing. Most accuratePeople who want to type slowly and accurately
speculativeOutputs immediately and replaces on a simultaneous keystroke. Fastest, but flickers brieflyPeople who prioritize speed above all
two_phaseSpeculative output after a short wait. Between wait and speculativePeople who want a balance
adaptive_timingwait during continuous typing, speculative once typing pauses. Adapts to speed automaticallyPeople whose typing speed varies
ngram_predictiveDynamically decides speculative vs. wait using n-gram statistics. Uses context to improve accuracyPeople who want the smartest decision (recommended)

Key Settings tab

ItemDescription
Left thumb keyThe key used for the left thumb-shift key (default: VK_NONCONVERT = Muhenkan)
Right thumb keyThe key used for the right thumb-shift key (default: VK_CONVERT = Henkan)
Engine ON keyThe key that turns the NICOLA engine ON. Multiple entries allowed
Engine OFF keyThe key that turns the NICOLA engine OFF. Multiple entries allowed
IME ON keyThe key that turns the IME ON (idempotent). Multiple entries allowed
IME OFF keyThe key that turns the IME OFF (idempotent). Multiple entries allowed
Engine-toggle hotkeyA global hotkey that toggles the engine ON/OFF

IME Detection tab

These are the key settings awase uses to track changes in IME state. The defaults are usually fine.

ItemDescription
Toggle keyThe key the OS uses to toggle the IME ON/OFF (e.g. Hankaku/Zenkaku)
ON keyThe key the OS uses to turn the IME ON
OFF keyThe key the OS uses to turn the IME OFF

The "Restore defaults" button returns these to the standard settings.

Per-App Settings tab

Override behavior per app using the combination of process name and window class name.

Setting typeDescriptionExample use
Force as text inputAlways enable NICOLA input regardless of the automatic classificationApps that are mistakenly bypassed
Force as bypassAlways disable the engineStart menu, password managers
Force as VK output modeSend romaji as VK keystrokesChrome, Edge, Electron-based apps
Force as TSF output modeSend in TSF native modeTSF-direct apps such as Windows Terminal

You can find process names and class names in the log when you start with awase.exe --debug.

Advanced Settings tab

ItemDescription
n-gram filePath to the n-gram statistics data (.csv.gz or .toml). Used in ngram_predictive mode
n-gram adjustment rangeThe range (ms) by which n-gram prediction adjusts the simultaneous-keystroke threshold
n-gram min/max thresholdThe lower and upper bounds (ms) of the threshold adjusted by n-gram prediction
Focus debounceThe wait (ms) that prevents false detection during rapid Alt+Tab switching
IME polling intervalThe period (ms) for detecting changes such as when you operate the language bar with the mouse
Layout directoryPath to the folder that holds the .yab files

Key config.toml settings

awase's behavior can be tuned in detail in config.toml.

Customizing shortcuts

The following are the default values. Add a [keys] section to config.toml to override them.

[keys] # NICOLA engine ON (enable thumb-shift input) engine_on = ["Ctrl+Shift+変換"] # NICOLA engine OFF (switch to ordinary input) engine_off = ["Ctrl+Shift+無変換"] # IME ON (switch to hiragana input mode) ime_on = ["Ctrl+変換"] # IME OFF (switch to direct input mode) ime_off = ["Ctrl+無変換"] # Emergency: pressing Muhenkan alone three times within 400 ms turns the engine OFF. # A last resort for when Ctrl gets stuck and the shortcuts stop working. # Disable it with an empty string "" or by deleting the line. engine_off_solo_triple = "VK_NONCONVERT" # IME mode key sent when the engine turns ON (switch to full-width hiragana mode) engine_on_ime_key = "VK_DBE_DBCSCHAR" # IME mode key sent when the engine turns OFF (switch to half-width alphanumeric mode) engine_off_ime_key = "VK_DBE_SBCSCHAR"

To assign multiple keys, add them to the array: ["Ctrl+Shift+変換", "Ctrl+F8"]

A global hotkey (which works regardless of app focus) is set with engine_toggle_hotkey = "Ctrl+Shift+F12" under [general].

Simultaneous-keystroke detection

[general] # Simultaneous-keystroke detection threshold (milliseconds). The NICOLA standard default is 100 ms. simultaneous_threshold_ms = 100 # Confirm-mode selection # ngram_predictive - dynamically switch speculative/wait with n-gram prediction (recommended) # wait - hold until the timeout (most accurate) # speculative - output immediately (fastest) # two_phase - short wait -> speculative output -> replace # adaptive_timing - automatically adjust the threshold to typing speed confirm_mode = "ngram_predictive"

Customizing the thumb keys

[general] # Left thumb key (VK code name) left_thumb_key = "VK_NONCONVERT" # Muhenkan key # Right thumb key (VK code name) right_thumb_key = "VK_CONVERT" # Henkan key

Keyboard model and output method

[general] # Keyboard model (the default is fine if you use a JIS keyboard) # keyboard_model = "jis" # JIS keyboard (default) # keyboard_model = "us" # US keyboard # Send method for romaji output (normally no need to change) # unicode - send hiragana directly (no IME needed, recommended) # per_key - SendInput one character at a time (for compatibility with other hooks) # batched - all characters in a single SendInput output_mode = "unicode"

For the new Microsoft IME (Windows 10 20H1 or later), unicode mode is recommended. With per_key / batched, input may not be processed correctly.

Auto-start settings

[general] # Start automatically at Windows logon # "enabled" - enable auto-start # "disabled" - disable auto-start # "ask" - ask with a dialog on first launch (default) auto_start = "enabled"

Auto-start is registered in the HKCU\Software\Microsoft\Windows\CurrentVersion\Run registry key. The Startup folder is not used.

Overriding behavior for specific windows

[focus_overrides] # Force text input in specific apps force_text = [ { process = "myapp.exe", class = "MyWindowClass" }, ] # Skip the engine entirely in specific apps force_bypass = [ { process = "SearchHost.exe", class = "SearchHost" }, ]

If the start menu or search bar misbehaves, add it to force_bypass.

Per-app output-mode override

[focus_overrides] # Send as VK keystrokes (Chrome / Edge / VS Code and other Electron-based apps) force_vk = [ { process = "chrome.exe", class = "Chrome_RenderWidgetHostHWND" }, { process = "code.exe", class = "Chrome_RenderWidgetHostHWND" }, ] # Send in TSF native mode (Windows Terminal, etc.) force_tsf = [ { process = "WindowsTerminal.exe", class = "CASCADIA_HOSTING_WINDOW_CLASS" }, ]

Manually setting IME-detection keys

Automatic detection is usually sufficient, but you can set these manually if you use a special keyboard or IME.

[ime_sync] # Key that toggles the IME ON/OFF (e.g. Hankaku/Zenkaku) # toggle = ["VK_KANJI"] # Key that turns the IME directly ON # on = ["VK_DBE_HIRAGANA"] # Key that turns the IME directly OFF # off = ["VK_DBE_SBCSCHAR"]

Emergency operations & reset

These are the operations for when input misbehaves or you want to force the engine to stop.

Emergency reset (recommended — try this first)

Use this when input as a whole misbehaves — a modifier key is stuck, the IME is confused, pending characters remain, and so on.

Method 1 — tray icon (when the mouse is usable; more reliable)

Right-click the awase icon in the taskbar → "Restart process"
Fully restarts the awase process. This reliably clears any stuck state.

Method 2 — keyboard shortcut (panic reset)

Quickly enter Ctrl+MuhenkanCtrl+HenkanCtrl+Muhenkan within 2 seconds

(The IME-OFF → IME-ON → IME-OFF sequence. Repeatedly pressing the same key will not trigger it.)

What method 2 does:

  • Forcibly releases any held-down Shift / Ctrl / Alt / Win state
  • Cancels the IME's uncommitted composition string
  • Reinitializes the IME state OFF → ON (hiragana input)
  • Flushes the engine's pending state (discards an uncommitted simultaneous keystroke, restores the engine-ON state)
  • Fully resets awase's internal state

On success, the tray balloon notification "State has been reset" is shown.

Force the engine OFF — triple-tap the Muhenkan key

A last resort for forcing the NICOLA engine to stop when even the normal shortcuts do not work — for example, when the Ctrl key is stuck. It is enabled by default (already assigned to the Muhenkan key).

[keys] # Key that turns the engine OFF when tapped alone three times within 400 ms (default: Muhenkan) engine_off_solo_triple = "VK_NONCONVERT" # Specify an empty string to disable it # engine_off_solo_triple = ""

Operation: tap Muhenkan alone, without pressing it together with another key, three times within 400 ms

* During normal thumb-shift input, this is counted as a "thumb-key solo timeout," so the design makes it unlikely to fire accidentally during the flow of typing.

Switching layouts (.yab)

Thumb-shift layouts are defined in .yab files. You can use several layouts and switch between them.

How to switch

  • Right-click the tray icon → Select layout — The easiest method. Switches immediately
  • Settings window "Basic Settings" tab — Choose from the layout dropdown → "Apply"
  • Edit config.toml — Change the default with default_layout = "nicola.yab"

Adding a custom layout

  1. Place a new .yab file in the folder specified by layouts_dir in config.toml (the default is config/)
  2. Press the "Rescan" button on the "Basic Settings" tab of the Settings window
  3. The new layout appears in the dropdown; select it and press "Apply"

For details on the .yab format, see the README on GitHub.

Logs & debugging

If something misbehaves, check the logs.

Log file location

  • Normal startup: awase.log in the same folder as awase.exe (appended to on each launch)
  • When installed via Scoop: %USERPROFILE%\scoop\apps\awase\current\awase.log

Start in debug mode

When you need detailed logs, start in debug mode from a command prompt.

awase.exe --debug

Alternatively, setting the environment variable RUST_LOG=debug before starting has the same effect.

Uninstalling

MSI installer version

Uninstall by selecting awase from Windows "Settings → Apps" or "Control Panel → Uninstall a program."

Scoop version

scoop uninstall awase

ZIP version (portable)

  1. Right-click the tray icon → "Exit" to quit awase
  2. If you set up auto-start, delete the "awase" task from Task Scheduler
  3. Delete the entire extracted folder

Initial setup steps

Recommended steps for using awase for the first time.

1. Confirm it is running

  • When you start awase, an icon appears in the system tray
  • Open a text editor and run an input test in Notepad or similar
  • Turn the IME ON with Ctrl+Henkan → thumb-shift input begins

2. Adjust the confirm mode

  • First try confirm_mode = "ngram_predictive" (recommended)
  • If there are many misconversions, change it to "wait" (accurate but somewhat slower)
  • If fast typing feels off, try "adaptive_timing"

3. If input does not work well in Chrome / Edge

  • Confirm you are using Google Japanese Input or Microsoft IME (awase supports both IMEs)
  • Turn the IME ON with Ctrl+Henkan before you start typing
  • If only the first character comes out as an alphabetic letter, awase corrects it automatically (TSF cold-start handling)

You may catch a momentary glimpse of "あ" (the throwaway-keystroke feature)

In Chrome and Windows Terminal, when you type for the first time right after the IME turns ON, "あ" may appear momentarily and immediately disappear. This is a sign that the throwaway-keystroke feature is working correctly.

In TSF apps such as Chrome, there is no official way to confirm from the outside whether the IME is ready to accept input. So awase briefly performs the operation "press the A key and delete it with BS" before the screen is drawn, and confirms that input is ready by observing whether the IME was able to convert it to "あ". Based on the information gained from this throwaway keystroke, it sends the character you actually want to type at exactly the right moment. Normally nothing appears on screen, but depending on timing, "あ" may be visible for just an instant.

5. Resetting when the engine misbehaves

  • Explicitly turn the engine ON with Ctrl+Shift+Henkan
  • Explicitly turn the IME ON with Ctrl+Henkan
  • If that still does not resolve it, right-click the tray icon → toggle with "Enable/disable toggle"