I've got a CH F-16 Combat Stick which looks similar but has more buttons. The way that one works is: the PC game port supports 4 buttons, so whenever you press a physical button on the joystick, it is encoded as a combination of those 4 game port button inputs. Here are my notes from reverse-engineering what those combinations are:
Button combinations (button 1 = LSB)
Button numbers are based on the numbers given by Linux 3.10.0 and 'jstest' with the analog joystick driver in "fullchf" mode.
0000 no button pressed
0001 button 1: trigger
0010 button 2: red button half-way down left side of stick (countermeasures)
0011 top-right hat left
0100 button 3: bottom right grey button (display management)
0101 button 5: lone red button above trigger (missile step/nose wheel steering/aerial refueling disconnect/A-G toggle)
0110 bottom-left hat down
0111 top-right hat down
1000 button 4: pinky switch
1001 button 6: top left red button (weapon release)
1010 bottom-left hat right
1011 top-right hat right
1100 bottom-left hat left
1101 UNDEFINED
1110 bottom-left hat up
1111 top-right hat up
(I think my notes about what the buttons actually do might pertain to Falcon 4.0, I'm not sure)
I'm pretty sure some games would let you select the joystick type and it would natively understand this "protocol" without a driver.
I'll see if I can find whether I have a driver disk for it. I think I might have both a driver disk and a sheet of paper that came with it, even though I got it second hand!