I find having to connect external joystick for SITL tests quite cumbersome, so i wrote a python script to generate virtual joystick events from keyboard keys. You can find it at python-uinput. The package only requires pygame to be installed to function. Simply run the script and calibrate joystick in QGC (set COM_RC_IN_MODE to virtual Joystick/No RC) to fly.
(Image to show status of joystick inputs while flying. Graphic taken from APM MissionPlanner.)