MJOY-16 is multi-function joystick controller, designed by Mindaugas Milasauskas. It has 8 analog inputs for connecting control axis, 64 pushbuttons, 4 rotary encoders, 16 toggle switches and a HAT switch. Mindaugas' website is no longer online, but you can find the info here.
I bought the special components (microcontroller, X-tals, IC
Including the PCB, the total price will be around € 30.-
I build 2 MJOY-16 boards, to have sufficient control inputs for my complete cockpit. There is no more need for hacking a keyboard. You can edit the controller ID in the MJOY-16 software, to make the controllers appear in a specific order in Windows.
In my cockpit I wanted a simple way to tune the radios and autopilot/heading settings. I use the panel view on the 17" LCD for radio-stack and auto-pilot view. Rotary encoders are used for the adjustment, and I have a select switch to assign specific functions to the encoders. In this way you don't need a separate encoder for each function. Via FSUIPC config file, you can set the encoder function based on the select switch position. The basic connection diagram is shown below.
The MJOY-16 rotaries have a neat low and high speed function: Depending on the rotation speed, different joy-buttons are activated. Each rotary can thus activate 4 buttons: clockwise slow: button A, clockwise fast: button B, anti-clockwise slow: button C, and anti-clockwise fast: button D. This function is especially useful for tuning the ADF, that has a wide adjustment range. For the normal COMM and NAV radio tuning I did not use the slow/fast function, I assigned the fine-adjustment rotary slow&fast to the fraction decimals and the outer coarse rotary slow&fast to the whole-decimals. I used the push-switch on the radio-adjust rotaries for switching the Active/Stby radios. See the FSUIPC config file for examples how I assigned the buttons. See FSUIPC Compound Button Programming page for some explanation.
The rest of the cockpit switches are also connected to the
MJOY-16 boards. I used toggle switches for lights and switches that normally
use toggle types in small GA aircraft. MJOY-16 toggle switch inputs can
activate 2 buttons: Button A is momentary activated when the toggle switch
goes from open to closed position, and button B is momentarily activated
when the toggle switch goes from closed to open condition. Via FSUIPC you
can assign the A and B button actions to cockpit function on and off: for
example Gear-Up is assigned to button A and Gear-Down is assigned to button
B. In this way you always have a cockpit switch position that matches the
switch position in FS.
Note 2: MJOY-16 totally has about 120 joystick buttons. Windows and FS2004 (incl FSUIPC) only support up to 32 joystick buttons per joystick. In order to have the other MJOY-16 button actions recognized, Mindaugas made another great utility called MJOY Mapper. This utility recognizes all 120 button actions, and allows you to assign these to keyboard push actions. After this is done, you run MJOY Mapper before starting FS, and now FS and FSUIPC see the keyboard action.
Note 3: MJOY-16 can be set in MODE 1 or MODE2.