Interface with MJOY-16
Dual Concentric Rotary Encoder
FSUIPC compound button programming

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 socket) at
A nice compact double-sided PCB can be bought from (MEGA joystick). More info is also available at
To build this board, you don't need special skills, just careful drilling and soldering work. The ATMEGA chip can be programmed with a freeware programmer, via the parallel port of your PC that is connected to the ISP connector on the MJOY-16 board. 

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.

The complete MJOY-16 board in test setup, with connections for all switches, potmeters and encoders. Left picture is the programming cable.

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 1: Some switches on in FS are flipped in combination with other switches, (like A/P master switch). To avoid mismatch between cockpit and FS, I used simple push-button switches for these functions.

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.
In MODE1, the rotaries and toggle switches are assigned to the last of the joystick buttons, and you will need to assign these to keyboard strokes.
In MODE 2, the toggle and rotaries are assigned to the first 32 joystick buttons. This mode is easier for programming the auto pilot and radio adjust rotaries conditional functions in FSUIPC config. Note also that the PCB text printing on the MEGA joystick PCB is wrong: MODE and CENTER are swapped.      


Back Next