The highlight are typed axes/buttons: ```Ada
type Logiteck_Extreme_3D_Pro_Axis_Type is (STICK_X, STICK_Y, STICK_Z, THROTTLE, HAT_X, HAT_Y);

type Logiteck_Extreme_3D_Pro_Button_Type is (BUTTON_01, BUTTON_02, BUTTON_03, BUTTON_04, BUTTON_05, BUTTON_06, BUTTON_07, BUTTON_08, BUTTON_09, BUTTON_10, BUTTON_11, BUTTON_12);


package L3D is new Linux_Joystick(Button_Type => Logiteck_Extreme_3D_Pro_Button_Type, Axis_Type => Logiteck_Extreme_3D_Pro_Axis_Type); ```

I wrote this as an exercise, no specific use cases in mind.

If you are developing graphic application, the framework you use (GLUT, GLFW etc.) might already have joystick input functionality that is cross platform.

From Artium