If you are migrating from OVR Toolkit to XSOverlay and miss the chatbox-on-keyboard, or otherwise want chatbox functionality, this addon/plugin may be for you!
Note
This is an unofficial addon to XSOverlay, as there is no first-party plugin support in XSOverlay (as of 2025-10-06).
This plugin uses BepInEx to carry out patches, add functionality and whatnot. \
Caution
Last tested build: Build 680.
Newer patches should work but use with caution - random things might break due to changes by Xiexe
(do not report bugs to them without removing the plugin first, thank you)
The keyboard will get a large rework soon, so this plugin may break at that time too. :P
(images are slightly out of date, but it pretty much looks the same)
| Icon | Bar |
|---|---|
![]() |
![]() |
![]() |
![]() |
Open a PowerShell window, and run the following command:
Invoke-WebRequest -UseBasicParsing "https://raw.githubusercontent.com/nyakowint/xsoverlay-keyboard-osc/main/install.ps1" | Invoke-ExpressionIf you install steam games to an uncommon location you will need to enter the path to your XSOverlay folder.
To find it, open Steam, go to XSOverlay > Manage > Browse local files)
To update or remove the plugin, run the above script again and select your desired option. \
If you're having trouble, try manual installation
- Enable OSC. For VRChat you can find this in the Action Menu (Options > OSC > Enabled)
- Open the XSOverlay keyboard
- Press the message icon on the right hand side of the keyboard, under the lock button
- Congrats! Type away
Optionally, open XSOverlay's settings (Settings > KeyboardOSC) and change the plugin options to your liking
(this may break with an update, if it does you can still access the settings through localhost:42071 in your browser until a better way comes along)
Troubleshooting/other info is at the bottom of this readme.
Use the following shortcut keys for quick access to certain actions:
| Shortcut Key | Function |
|---|---|
| ESC | Clear current text |
| END | Clear last sent message (equivalent to pressing "Clear Chatbox" in radial menu) |
| TAB | Toggle silent message (indicated by orange text, disables your typing indicator and chatbox noise as well) |
| INSERT | Replace current text with your last message (does not send) |
| Backspace / Delete | Delete last character from right or left respectively |
| CTRL + C | Copy current text to clipboard |
| CTRL + V | Paste text from your clipboard |
| CTRL + Backspace | Delete last word (kinda broken lol) |
| ENTER | Send message to the chatbox (behavior depends on settings) |
Full compatibility with OSC in alternate platforms (resonite/chillout/others) is not guaranteed.
If it adheres mostly to VRChat OSC addresses it should be fine.
There are also a few text macro shortcuts built in:
| Trigger | Output |
|---|---|
//shrug |
¯\\_(ツ)_/¯ |
//happy |
(¬‿¬) |
//tflip |
┬─┬ |
//music |
🎵 |
//cookie |
🍪 |
//star |
⭐ |
//hrt |
💗 |
//hrt2 |
💕 |
//skull |
💀 |
//skull2 |
☠ |
//rx3 |
rawr x3 |
Note that the emojis do not look good in vrchat's chatbox at all lmao
The bar used for typing may have positional quirks until it's moved for the first time. I consider this a non-issue.
If you can't seem to get OSC to work, try one of these:
- Restart VRChat before trying anything else. OSC as a whole will just break sometimes.
- Change the OSC port used by XSOverlay, instructions how to do this -> > XSOverlay Docs < ( it does not use OSCQuery as of writing, so this is probably your issue)
- Reset your OSC config?
If this plugin's settings dont show up in the menu, or the pages are white/blank it's likely:
- XSOverlay has updated enough to break the plugin (most likely)
- You are using an outdated version of the plugin (check releases)
- You are using a custom theme and it is conflicting somehow. (this update isn't out tho)
- something else, bug me about it shrug
If you need help or have concerns please create an discussion for help or issue for bugs.
If the powershell script isn't working for you or you have other trouble, use these steps to install the plugin:
- Follow the BepInEx install guide into XSOverlay.
- Download both the plugin DLL and
BepInEx.cfgfrom Releases - IMPORTANT: Move
KeyboardOSC.dllinto<xso folder>/BepInEx/pluginsfolder, andBepInEx.cfginto<xso folder>/BepInEx/configfolder.- Make sure you have done the second part. if you dont then you will have a quite useless plugin :L
- or set it yourself:
HideManagerGameObject = true
- Start XSOverlay
Removing the plugin can be done in one of two ways:
- Run the powershell script above and select
Remove(option 3) - Follow the manual install steps in reverse order. Delete
BepInEx,doorstop_config.ini,winhttp.dlland other non overlay files from your XSOverlay folder.
Check the .csproj or actions workflow
but if you wanna build this just drop the necessary dlls from XSOverlay_Data/Managed into refs, restore and build w/
Release config. Plugin dll will be in builds folder



