Can a plugin add on to the input system and be key-mappable?

Hi folks, I would like to make a plugin that takes input from a MIDI device and treats it as a first class citizen of the Unreal input system, ie you are able to create action mappings in the Unreal editor with a MIDI channel, can receive input events in blueprints from input along a MIDI channel, etc. Right now I am just trying to plan it out and see what is possible from a plugin.

The main use for me would be to create customizable dev/debug tools for adjusting lighting and camera layout using physical controls on a basic midi controller board containing an array of sliders and knobs. I could see VJs getting a kick out of it as well.

I see that portMIDI library is already distributed and used by the LiveEdit plugin, so gathering the MIDI input should be fine. And I know there is already an OSC plugin for Unreal, so I could just set up a patch in PureData to send my MIDI input into Unreal via OSC, and parse it there. But I think it would be awesome & more elegant for my purposes to just have the MIDI built in as a first class citizen, as I described.

But again, is it possible to add on to the input system in this fashion? Just thought I’d ask here first before diving in myself and seeing if it could work.


Yes. This is definitely doable and intended. I don’t have the code in front of me right now but something like EKeys::AddKey is what you’re looking for.

Awesome dude, thanks for the answer. I’ll start taking a look at this and post a WIP thread once I have something to show. Cheers