HandyControl 1.2.3 (28.11.2021) - Added Support for Pyro (Remote Control)

Requirements: Windows 10, .NET Framework 4.7.2

:inbox_tray: Download the newest version on MEGA
:inbox_tray: Download older versions up to 1.2.0

Main features :clapper: :scroll: :chart_with_upwards_trend:

  • Video & Audio support for DeoVR, MPC-BE, MPC-HC
  • Live script preview with navigation
  • Script Sequencer
  • Local script host for faster uploads
  • Script folder navigation with preview and quick load
  • Gamepad mapping with import/export and fast switching
  • Movement Sensor Integration for Handy & Nobra (updated)
  • Chapters for easy navigation (mappable)
  • Four different play modes
  • Stroke Generator, Stroke Recorder
  • VoiceAttack profile for voice commands
  • Dynamic heatmap generation (extended)
  • Script analysis: Histogram, Speed limit
  • Funscript Metadata Editor
  • Command line support
  • Nobra Vibrator
  • Documentation with Getting Started section

Modifications :pencil2:

  • Inversion, Offset, Random + Alternating jitter
  • Script & Video playback rate
  • Gap-Reduction, Smart jitter
  • Speed reduction, Speed scaling
  • CockHero HardMode, Funhalver
  • Shift timestamps
  • All modifications can be saved

Import/Export :floppy_disk:

  • .funscript to .csv conversion
  • .csv to .funscript conversion
  • .hcs/.hc file import
  • .meta file import (WankzVR)
  • .funscript size reduction
  • Excel clipboard support
  • Heatmap/Preview/Chapter image
  • Script to Sequencer Image
  • Export with Drag&Drop

Manual Mode

  • Supports Xbox 360 / Xbox One / Series X/S gamepad :video_game:
  • Switch between 8 different speed and stroke lenght presets.
  • Speed and stroke adjustments in steps with the gamepad.
  • Dynamic speed control with right and left trigger.

Mixed Mode

  • Combines Script Mode and Manual Mode
  • Play a script and override the movements with a gamepad
  • Can be used to fill gaps or to slow down the action
  • Automatic script fallback

:spiral_notepad: How to play a script

  • Enter your connection key in the settings.
  • Drag & Drop a script on the window or select one from the Script Folder.
  • If script and video filename match and you have MPC installed then it will open the player when you upload the script. Wait until the upload is completed. If you have installed K-Lite Codec Pack then MPC will be found automaticaly. Make sure that you have enabled the WebInterface setting in MPC.
  • Only navigate in the video by using HandyControl. Click the heatmap to jump to a position.
  • If the script is not in sync try to adjust the offset or press pause/play.
  • Drop an other video on HandyControl to change the video.
  • You can adjust the stroke lenght during play or use the gamepad to temporary override the action.
  • All script modifications require a re-upload.

:spiral_notepad: How to control Handy with a gamepad

  • To use the gamepad a hands free setup is recommended.
  • The gamepad connects automatically on application start or if the Connect Controller button is pressed.
  • You can use triggers and buttons together (speed / stroke).
  • If a script is playing you can fall back to script mode by releasing all buttons (setting)
  • You can splitt the full speed range to both triggers in the settings if you have both hands free.
  • Ask someone else to control your Handy if they have a gamepad.
  • If you dont have a gamepad you can also click the buttons.
  • Use the sliders to select new speed/stroke values. Assign them with right click on a button.

The dynamic speed update rate is limited due to the API server command limit.

:spiral_notepad: How mixed mode works

  • Load a script and connect your gamepad.
  • Define values for the automatic presets.
  • Play the script and press the triggers or buttons at any time to switch to manual mode. The script/video will continue in the background.
  • Use the gamepad to step up/down speed and stroke lenght.
  • Switch back to the script at any time.
  • If AutoReturn to Script Mode is enabled then the script automatically continues if you release the triggers or if you press stop.

History / Change notes

Release 1.2.3 (28.11.2021)
  • Added suport for mobile sensor ‘Pyro (Raspberry Pi)’
  • Commandline parameters /forward /backward for script navigation.
  • Setting to start the Script Host on startup.

Find a more detailed description in this post…

Release 1.2.2 (14.11.2021)

Find a more detailed description in this post…

Release 1.2.1 (24.10.2021)

Find a more detailed description in this post…

Release 1.2.0 (24.05.2021)

Find a more detailed description in this post…

Release 1.1.2 (09.05.2021)

Find a more detailed description in this post…

Release 1.1.1 (25.04.2021)

Find a more detailed description in this post…

Release 1.1.0 (18.04.2021)

Find a more detailed description in this post
New: Introducing ‘Chapters’
- Chapter editor with freely editable names list for fast allocation.
- Chapter description (tooltip only).
- Quick chapter selection with mouse clicks.
- Up to four chapters can be mapped to the gamepad (chapter bookmarks).
- Chapter navigation with gamepad (restart, previous, next).
- Chapter colors show average intensity.
- Chapter image export with settings.
- Automatic saving and updating.
- New file type .hc to store chapter settings and future elements.

New: Gamepad button mapping
- Most of the gamepad commands can now be freely mapped in the settings.
- Pressing right or left thumbpad can be used as modifier like [Shift].
- Buttons can be mapped to 2 different commands with quick or long press.
- In total there are 72 possible button/duration combinations available.
- Increased automatic mode presets from 4 to 8 (set speed and stroke by button).
- Default mapping on right click.

New: Gamepad navigation commands for Media Player Classic.
- Opens Menu of HandyControl (foreground window)
- Menu Navigation, Select Script, Close Menu.
- Uploads the script to Handy and minimize the app.

New: Script Folder Quick Load (random, next, previous) including shortcuts.
New: Setting to also upload the script to Handy for Quick Load.
New: Setting to show stroke and offset value changes in MPC (uses subtitles).
New: Script conversion feature “Shift Timestamps” by selected offset or entered value.
New: Separated settings for heatmap grid axis X/Y.

Fix: Loading behaviour of Media Player Classic
Fix: Video now continues when script has finished.
Fix: Heatmap Drag & Drop crash on temporary scripts.

Release 1.0.1 (28.03.2021)

Find a more detailed description in this post…
New: Media Player Classic can now be directly used to control the script playback.
New: Media Player Classic & DeoVR now support playback rate changes.
New: Setting for DeoVR to auto load scripts if the video changes.
New: Pressing left thumbstick on the gamepad toggles the video player connection state.
New: Pressing right thumbstick and dpad up resets sync offset to its default value (setting).
New: Pressing right thumbstick and dpad down resets sync offset to 0.
New: Long press dpad up/down moves the slider to top/bottom position.
New: Gamepad rumble feedback when DeoVR connects.
New: Getting started section in the documentation (loading and playing 2D/3D scripts).
Changed: Handy not connected message now automatically retries to send the command after 10 seconds.
Fix: Black lines in overlay heatmaps are now colored and grid is shown correctly.

Release 1.0.0 (18.03.2021)

Find a more detailed description in this post…
New: Stroke Generator can now use a dedicated script file (*.hcs) to create dynamic scripts.
New: Stroke Recorder to record stroke and speed commands on Handy and save them as *.hcs files.
New: Heatmap export settings including a new overlay mode, transparent backgrounds and sections.
New: Integration of FunHalver (by defucilis) as new script conversion option.
New: Setting ‘Show Markers in Preview’ will display little dots which help to see the timestamps.
Fix: Manual stroke slider commands not reacting in some cases.
Fix: GetSettings - Speed is now showing the value in %.
Fix: Heatmap resolution errors.

Older Releases
Release 0.15.0 (07.02.2021)

Find a more detailed description in this post…
New: Modification to limit the maximum speed of a script by reducing the stroke range.
New: Setting to change the stroking device limits for other target devices.
New: Setting to show metadata of loaded scripts in the logbox if available.
New: Setting to start the script automatically after it was uploaded to Handy.
New: Clicking a link in the logbox now opens the link in the browser.
New: Button to show the full script in the preview.
Changed: GUI repositioning
Fixed: Speed spikes in Stroke Generator when transition is disabled

Release 0.14.0 (31.01.2021)

Find a more detailed description in this post…
New: Stroke Generator - Automatic strokes with script generation

Release 0.13.0 (24.01.2021)

Find a more detailed description in this post…
New: Video player support for DeoVR.
New: Video player support for Media Player Classic - Black Edition 64Bit.
New: Shoulder buttons on gamepad can now be used to navigate and skip gaps in the script.
New: Right Thumbstick press + D-PAD right/left can now be used to change sync offset.
New: Settings to define button pressing times to allow multiple events.
New: Selectable rumble feedback intensity for the gamepad.
New: Spacebar can now pause/continue the script/video.
New: Excel export now also opens Excel.
New: Commandline /speedup /speeddown /strokeup /strokedown /offsetup /offsetdown /repeat
Changed: Commandline execution for better VoiceAttack support.
Changed: Sequencer: Stroke range limit reduced from 10% to 5%
Changed: Sequencer: Stroke range limit auto-correction for images.

Release 0.12.0 (10.01.2021)

Find a more detailed description in this post…
New: Script sequencer now can create scripts from images.
New: Loop button to repeat the whole script or set markers A/B to repeat a script segment only.
New: Excel clipboard export can now also export the selected segment between the markers.
New: Excel clipboard import/export can now remove the script offset.
Fixed: Different bugs

Release 0.12.0 beta4 (01.01.2021)

Find a more detailed description in this post…

Release 0.12.0 beta3 (20.12.2020)

Find a more detailed description in this post…
New: Columns ‘repeat’ and ‘options’
New: Options INV & DOWN
New: Export button in excel template (macro)
Changed: Simplified internal break generation
Changed: Pattern alignment
Changed: Interface changed to Drop-Downs

Release 0.12.0 beta2 (18.12.2020)

Find a more detailed description in this post…
New: Added a pause feature to the Script Sequencer (beta version)

Release 0.12.0 beta1 (18.12.2020)

Find a more detailed description in this post…
New: Script Sequencer (beta version)

Release 0.11.0 (17.11.2020)

Find a more detailed description in this post…
New: Modification to linearly increase or decrease the script speed.
New: Remember dropped media file if it was dropped before the script.
New: Support for filetypes .flv, .mp3, .wav, .flac, .m4a, .ogg, .wma

Release 0.10.0 (01.11.2020)

Find a more detailed description in this post…
New: Compact layout of the main form. Scaling of elements enabled.
New: Collapsible menus on right and left side of the preview window.
New: Experimental support for Nobra Vibrator (Script, Manual, Mixed-Mode).
New: Button to suppress any API command.
New: Setting to select the IP for the Local Script Host.
New: Setting to disable preview tooltips for the script folders
New: Setting to disable script analysis for large script folders.
New: Setting to change the level of detail for tooltips.
New: Setting to change the heatmap resolution and autoscale.
New: Change heatmap resolution directly on the heatmap (Ctrl + Mouse Scroll).
New: More label sliders in the settings.
Changed: Dropping a video will use the new video if a script is already loaded.
Changed: Button ‘Off’ moved to main page with red icon. It now also reacts to ESC key.
Changed: Settings/MetadataEditor/About moved to context menu.
Changed: Gamepad button mapping moved to settings.
Changed: Gap reduction is now a button instead of a checkbox.

Release 0.9.1 (20.10.2020)

New: Export current preview as image with F12 key.
Fixed: CockHero(Hardmode) conversion bug.

Release 0.9.0 (18.10.2020)

Find a more detailed description in this post…
New: Funscript metadata editor with copy/paste function and EroScripts post creator.
New: Reactivated API command syncAdjustTimestamp which improves video sync.
New: Drag & Drop script and heatmap to other applications (Ctrl + Left Mouse).
New: Buttons to switch between different stroke lenght jitter modes.
New: Button to disable any video player commands.
New: Allows different video/script filenames if only one video is found in a folder.
New: Export option to reduce funscript size (remove rawActions).
New: Context menu entry to open the script with a text editor (Notepad++ or Notepad).
Changed: Exported funscript files now keep their structure and data by default.
Changed: API refresh rate default value from 500 to 250ms. API now supports 240 calls/min.
Changed: Script speed calculation now incorporates following plateau time.
Changed: Disabled updates for script speed overlays in Automatic Mode.
Changed: Font for the logbox for better alignment.
Changed: Funscript import handling.
Fixed: Import error for script with consecutive equal timestamps.

Release 0.8.0 (03.10.2020)

Find a more detailed description in this post…
New: Command line support to allow control by other applications.
New: Stroke lenght and speed adjustable with D-pad.
New: Speed slider on script page(compatible with mixed mode).
New: Setting to modify API refresh rate for upcomming API updates.
New: Setting to modify API timeout for commands.
New: Added support for .meta files (WankzVR) for conversion purpose.
New: Double click on jitter fields will use the SmartJitter settings even if SmartJitter is disabled.
Changed: API command/response handling to increase flexibility.
Changed: Improved Mixed Mode.
Changed: Improved logbox information from API.
Changed: API refresh rate increased after last API update. API now supports 120 calls/minute.
Changed: Button press is no longer setting speed while a trigger is held down.
Changed: Script import handling for unsupported formats.
Changed: Video now continues after script is done.
Fixed: SmartJitter not saving values.
Fixed: Tooltip spelling.

Release 0.7.0 (20.09.2020)

Find a more detailed description in this post…
New: Setting for Local Script Host added which enables Handy to download scripts faster.
New: Setting [Smart Jitter] automatically adds jitter to the script.
New: Menu option to convert CockHero scripts to HardMode. 1 Beat in Video = 1 Full Stroke Up/Down
New: Menu option to import/export Excel data from clipboard.
New: Two preview overlays that display the stroke speed in terms of Handy’s speed limit (400mm/s).
New: Histogram for stroke lenght distribution (byproduct of Smart Jitter).
New: Buttons to show/hide preview elements.
New: Inversion of script positions. Sometimes necessary after CockHero conversion.
Changed: Exporting a modified script now adds ‘_modified’ to the filename proposal.
Changed: Stroke Offset increased from 100 to 200 to support inversion.
Changed: Gamepad now also reconnects if [Auto Connect] is enabled.
Fixed: Heatmap zoom overlay now draws correct on scaling levels.
Fixed: Gamepad reconnection not working.
Fixed: Rare funscript import error.

Release 0.6.0 (06.09.2020)

Find a more detailed description in this post…
New: Full script folder structure now available in the context menu.
New: Modification to add jitter to the sync time (0-40%).
New: Stroke offset now support negative values to upscale the stroke lenght.
New: Setting to show heatmap preview for scripts in the script folder context menu.
New: Click on script preview can now also start/stop the script.
Changed: Full preview / Heatmap export.
Changed: Zoom range maximum increased from 5m to 120m.
Changed: Zoom range is now better visible on the heatmap on a white background.
Changed: Missing scripts are now removed from the last scripts list.
Changed: Error message now explains how to enable the Webinterface in MPC in case of a connection error.
Changed: MPC does not reset anymore if modifications to the same script are uploaded again.
Fixed: Funscript files downloaded with Firefox feature ‘Open with HandyControl’ are now loading correctly.
Fixed: Preview not showing full script range.
Fixed: Negative timestamp import error.

Release 0.5.0 (30.08.2020)

Find a more detailed description in this post…

New: Sync slider +/- 1000ms to manually adjust the synchronisation.
New: Start button can play/pause the script in script mode.
New: Start button can stop/restart the last used speed button in manual mode.
New: Select button enables sync mode if manual mode is active (return to script).
New: Modification for top/bottom offset values (inversion possible).
New: Modification to add stroke lenght jitter.
New: Setting to automatically fall back to sync mode if triggers are released or stop (Start button) is pressed in manual mode.
New: Setting to enable/disable rumble feedback (experimental).
New: Setting to automatically connect the gamepad on start. The status is visible in the statusstrip.
New: Settings now shows if MPC was found.
New: Speed and Stroke checkbox remember last value in manual mode.
New: Labels can be used as sliders to set values.
New: Reset values on right click.
New: Remember last used scripts.
New: Export current beatmap view as image.
Changed: Error messages now display the english translation.
Fix: MPC application path can now be selected manually.
Fix: Loading a new script to Handy will now set the current stroke lenght.

Release 0.4.1 (20.08.2020)

New: Droping a video will load the script if the name matches
New: Droping a folder will load the first script
New: Loading a new script brings the application to foreground
New: Debug information to count API calls per minute
Changed: Triggers reaction times improved for press and release
Changed: Reduced trigger update rate from 1.0 to 0.9 to avoid API limits
Fix: Sending commands when MPC is not open or script has no video available

Release 0.4.0 (16.08.2020)

New: Video support for Media Player Classic (64 Bit) - Script and video must have the same name
New: Synchronized script preview for better navigation
New: Triggers can now control the speed of Handy (full range allocable to both triggers)
New: Option to disable speed or stroke lenght when using the triggers together with the buttons
New: Modification ‘Reduce Gaps’ which reduces gap time to an adjustable max duration (not compatible with video sync)
New: Script export to save modified scripts back to .csv or .funscript (without rawAction)
New: Command line support to open a script with the “Open with…” context menu or by dropping it on the application icon
New: Log export possibility
Fix: Heatmap generation for scaling factors

Release 0.3.0 (07.08.2020)

Changed: Look of the app and optimized most of the code
New: Speed and intensity information for the script
New: Shortcut link in contect menu for your script folder
New: Heatmap image export in contect menu
New: A few autogenerated scripts for testing(.csv)
New: Slider setting to change the stroke lenght during play
New: Slider setting to change the speed of the script (10%-200%)

This app is under development so you can expect to find bugs. Please report them.

Keep in mind that every command latency is due to the server response time. Direct control of the Handy is currently not supported by Handy API V1 but will be available with API V2.


Amazing work.

Really appreciate the ability to run without a videos

I enjoy the handy but I prefer imagination over porn videos, so this app is great


A new update is available - See first post for details.


Very cool app @Lucifie!

1 Like

Absolutely loving that I can slow down the scripts.

Most of them I find way too fast, now I can slow down any script I want.

Can’t wait to see new features.

Can I suggest a orgasm mode? Press a button on an Xbox controller or space bar on keyboard and it goes from it’s current action and smoothly transitions into a gradually slowing movement.

Maybe even allow it to transition into a user made mini script at the push of a button.

I have no idea if the API has the ability for this or not.


Any specific version I should be using of mpc hc? It won’t launch the application when the script is loaded.


I have tested it with MPC-HC (Nightly, 64Bit)
I will add some info in the settings if the app was found.


I had this idea too but for this I need more functionality first. I thought about a little database where the user can store scripts or script segments. A cum script could then be added and if you press a button the app jumps to that point without affecting the video. A smooth transistion from script A to B would not work as Handy only plays the scripts as they are. Also HandyControl can not know when you jump from script A to script B.

For now you could reduce the stroke lenght during play step by step or switch to manual control and use the triggers.


Ok i downloaded MPC-HC (64-bit)

Build information:
Version: 1.9.7 (d75d8795b)
Compiler: MSVC v19.26.28806
Build date: Aug 1 2020

LAV Filters:
LAV Splitter:
LAV Video:
LAV Audio:
FFmpeg compiler: MinGW-w64 GCC 9.3.0

Operating system:
Name: Windows NT 10.0 (build 19041)
Version: 10.0 (64-bit)

I did what it said for the info bubble in handycontrol 0.4.1 under Misc section. It shows the video player
Media Player Classic Home Cinema (mpc-hc64.exe). I went into the mpchc application options and enabled the web interface with default port.

Scripts load correctly and the matching name of the associated video shows in the output of handcontrol app.

When I hit play the script starts playing but no video is opened.automatically.

Are there other options i need to enable? Do I need to set mpc as default app or anything. Do I need to port forward that default port?

Trying to get this to work as doing this through the handyfeeling website is tedious and has way less control than your app.

Any help would be appreciated.


The mpc-hc64.exe is always showed but just as info. It does not tell you if the app was found. HandyControl looks in your registry and searches for mpc-hc64.exe and opens the provided path. Maybe there is a problem with that if you use the portable version. I might add an option to select the executable manually to fix that.

Try to open MPC manually and load the video. Does it response to play/pause commands then? Check if your task manager shows the process with the name mpc-hc64.exe

I have not set any port forwarding on my machine and I have a dedicated firewall myself. HandyControl just sends commands to the webinterface. If you paste:

in your browser then MPC should start playing if its open.

In MPC where you set the port you can test the webinterface with more commands (Follow the Link)

Edit1: It seems that the regular MPC setup does not create the necessary registry keys. I got my MPC installed as part of K-Lite Codec Pack. This one probably created the keys. In this case I need to add the possibility to select the executable manually.

Edit2: Changed the code, so you can select the file manually if there is no registry key available or if you want to select a different executable path. Will be in the next release…


I guess I helped then sort of lol?

Yes all functions of mpc-hc work including the web interface but as you mentioned in your edits the standalone does not install registry the registry keys or perhaps variable paths or something.

I installed the k-lite pack and your application works perfectly now. Perhaps put that in the instructions or address it in the instructions on your new release.

Thank you for helping me get this working. 1 million times better than using the website control. Great software. Thank you for your work.

1 Like

Great application, I am sure :slight_smile: I have tried to get it to work for a few hours now, but it seems the program cannot find my device: API error: No machine connected.
My device is in wifi enabled mode. I am sure that I am missing a step, but I dee no manual on how to have it connected. Any help available maybe?

1 Like

Does you device connect to www.handyfeeling.com?

1 Like

Tried it again, found one mistake: I have to press only short the wifi and it connects to www.handfeeling.com. Now also loads the movie and script and uploads the script. All good now. I was just putting the device in wifi search by pressing too long on the button.

1 Like

Ah, yes. Single for connect and hold for setup.

The Handy desperately need better instructions. I’ve heard they’re improving the initial setup with a future firmware update.

1 Like

I just have uploaded a new version of HandyControl. See the complete change notes in the first post.

Regarding the video sync I have not much experience but it looks like the value is negative most of the time. If you upload a script, the log shows an average offset time. This time seems to be close to the real offset. Try to use this value if you need to adjust the sync. I need to test more…

I have added new functionality to allow Mixed Mode which I real like :blush:
You can find the instruction also in the first post.

You can use jitter to add a little variation to scripts that only have up/down strokes (e.g. CockHero). A value of 5-10% should be enough.

The offset values can be used to scale the script position from 0 to 100 on both borders. You can even invert the whole script. Since Handy only can set the upper stroke limit this is an easy way to move the action to the desired range.

Bottom Offset

I have moved my autogeneated scripts to a separate .zip file that can be found in the same Mega folder as the application.

Thats all for now. If you have new ideas or requests please let me know…

1 Like

Hey there,

I´m having problems with the HandyControl application. I can drag & drop the script into HandyControl just fine, it uploads it and as soon as i press play in the HandyControl overlay it will open up MPC-HC player. But then MPC-HC gives me an error saying:"An error occurred while sending the request.

At first I thought it might be because of the wrong version as there were some problems with that earlier. I waited for the release where u can choose the path of MPC-HC.exe but unfortunately that didn´t change anything.
I altough tried to run HandyControl as an admin but that won´t let me drag&drop scripts into HandyControl.

Anyone got a clue what I´m doing wrong or what might be fucked up?


Can you make it save Key?

1 Like

It does save the connection key. It also plays the script just fine on the handy. It just won´t play the script and the video on the same time.

1 Like

MPC does not send data to HandyControl. MPC should open during script upload before you press play. If you close MPC when a script plays, it will open again if you press play again. Try to load the video manually and then press play. Does that work?

Solution for Drag & Drop

Basically, you cannot drag from a lower privilege process into one running as an admin for security reasons. The only work around is to disable UAC or prevent UAC prompting for credentials if the user account is in the administrators group, thereby forcing everything an admin user runs to launch with admin level priv’s.

What do you mean?

1 Like