blhsrwznrghfzpr-ResoniteBetterIMESupport icon

ResoniteBetterIMESupport

Fixes IME composition display issues in Resonite with complex input methods such as Japanese

Last updated 3 days ago
Total downloads 14
Total rating 0 
Categories Mods
Dependency string blhsrwznrghfzpr-ResoniteBetterIMESupport-3.0.2
Dependants 0 other packages depend on this package

This mod requires the following mods to function

ResoniteModding-BepisLoader-1.5.1 icon
ResoniteModding-BepisLoader

A mod loader which allows using BepInEx with Resonite

Preferred version: 1.5.1
Nytra-InterprocessLib-3.0.0 icon
Nytra-InterprocessLib

Library for mods to send data to the renderer and back.

Preferred version: 3.0.0

README

ResoniteBetterIMESupport

Thunderstore Badge

A BepInEx plugin for Resonite that improves IME composition handling for input methods such as Japanese.

This mod keeps IME composition text synchronized while editing UIX text, including:

  • showing the IME composition caret at the correct position
  • moving the caret inside unconfirmed composition text
  • editing composition text with Delete/Backspace without letting Resonite delete the whole composition range
  • committing composition text through the normal IME flow

Related issue: Yellow-Dog-Man/Resonite-Issues#745

Project Layout

Resonite runs the Unity renderer and the main engine in separate processes, so this mod is split into two plugins:

  • ResoniteBetterIMESupport.Renderer/ResoniteBetterIMESupport.Renderer.csproj
    • Renderer-side plugin
    • Targets net472
    • Hooks Unity InputSystem IME composition events
    • Sends composition text, committed text, and caret offsets to the engine plugin
  • ResoniteBetterIMESupport.Engine/ResoniteBetterIMESupport.Engine.csproj
    • Engine-side plugin
    • Targets net10.0
    • Patches FrooxEngine text editing and text rendering
    • Applies IME composition to the active IText
    • Draws the composition caret at the IME caret offset
  • ResoniteBetterIMESupport.Shared/ImePipe.cs
    • Shared named-pipe IPC layer used by both plugins
  • Directory.Build.props
    • Shared build metadata and default Resonite/BepisLoader paths

Both plugin sides are required. Installing only one side will not provide working IME composition support.

Installation

Install BepisLoader for Resonite.

Download the latest release ZIP from the Releases page and extract it into your BepInEx/BepisLoader profile.

For the Gale default profile, the files should be placed like this:

  • Engine plugin:
    • %APPDATA%\com.kesomannen.gale\resonite\profiles\Default\BepInEx\plugins\blhsrwznrghfzpr-ResoniteBetterIMESupport\ResoniteBetterIMESupport.Engine.dll
  • Renderer plugin:
    • %APPDATA%\com.kesomannen.gale\resonite\profiles\Default\Renderer\BepInEx\plugins\blhsrwznrghfzpr-ResoniteBetterIMESupport\ResoniteBetterIMESupport.Renderer.dll

After installation, restart Resonite.

To confirm both sides loaded, check the logs:

  • Engine log:
    • %APPDATA%\com.kesomannen.gale\resonite\profiles\Default\BepInEx\LogOutput.log
    • Look for ResoniteBetterIMESupport.Engine loaded.
  • Renderer log:
    • %APPDATA%\com.kesomannen.gale\resonite\profiles\Default\Renderer\BepInEx\LogOutput.log
    • Look for ResoniteBetterIMESupport.Renderer loaded.

Development

The project expects the Resonite game files and BepisLoader profile at these default paths:

  • GamePath: %LOCALAPPDATA%\RESO Launcher\profiles\01bepis\Game
  • BepisLoaderProfilePath: %APPDATA%\com.kesomannen.gale\resonite\profiles\Default

GamePath is also auto-detected from common Steam install paths. You can set ResonitePath as a shorthand for GamePath.

Build both plugins:

dotnet build ResoniteBetterIMESupport.sln

Build and copy both plugins into the Gale default profile:

dotnet build ResoniteBetterIMESupport.sln -p:CopyToPlugins=true

This copies:

  • ResoniteBetterIMESupport.Renderer.dll to $(BepisLoaderProfilePath)\Renderer\BepInEx\plugins\blhsrwznrghfzpr-ResoniteBetterIMESupport
  • ResoniteBetterIMESupport.Engine.dll to $(BepisLoaderProfilePath)\BepInEx\plugins\blhsrwznrghfzpr-ResoniteBetterIMESupport

You can override paths when building:

dotnet build ResoniteBetterIMESupport.sln -p:GamePath="C:\Path\To\Game" -p:BepisLoaderProfilePath="C:\Path\To\Profile"

or:

dotnet build ResoniteBetterIMESupport.sln -p:ResonitePath="C:\Path\To\Game"

If Resonite is running, the engine-side DLL may be locked. Close Resonite and run the copy build again.

Packaging

Thunderstore packaging is configured by thunderstore.toml.

The package contains both plugin sides:

  • Renderer/BepInEx/plugins/blhsrwznrghfzpr-ResoniteBetterIMESupport/ResoniteBetterIMESupport.Renderer.dll
  • plugins/blhsrwznrghfzpr-ResoniteBetterIMESupport/ResoniteBetterIMESupport.Engine.dll

Build release binaries before packaging:

dotnet build ResoniteBetterIMESupport.sln -c Release

Then build the Thunderstore package with the configured tooling.

Fork Notice

This is a Resonite-focused fork maintained by blhsrwznrghfzpr.

Original project: hantabaru1014/NeosBetterIMESupport