Update 3: Got it working! Unfortunately I've got to go to bed, but I'll try to post some Youtube videos tomorrow evening. I want to capture (1) the Munt Qt GUI and the Logitech LCD emulator running side-by-side, and (2) the physical G15 v2 keyboard LCD display in action.
Right now it basically just replicates the physical MT-32 LCD + LED. It would be cool to have additional screens to provide the other emulator status from the Qt GUI, with cycling via the keyboard's LCD buttons, but I'm happy to get this far.
P.S. The Logitech LCD API is pretty dumb. It's all globally-scoped free-standing functions. You basically get a 160x43 pixel "background" layer that is sent as a byte-per-pixel (yes, byte, despite being a monochromatic LCD) array of unsigned 8-bit chars, and a "foreground" layer comprised of 4 lines of proportional font text. The background and text layers are independent, such that you have to actually set a text row to an empty string to prevent it from covering up the background, even when you are updating the background. You have to call an update function to commit changes to the physical display, which I guess is nice because it allows you to basically double buffer the output. The only real issue I ran into with all of this is that Munt's LCD and LED widgets update independently, but on the Logitech LCD they share an output buffer (unless I want to make the LED text-based, which I might try).
I'm also not sure how to package the damn thing, since I had to build it with the MSVC toolchain in Qt Creator. There end up being a ton of DLL dependencies, both Microsoft and Qt. I'll try to figure something out if people are interested in playing with it; otherwise I'll probably just put the source on a Munt fork. I did make sure to add this stuff into CMake as an optional feature+dependency.