If you are talking about Gamer mice or special types of mice, those extra buttons tend to be programmable only through their own software so you can ignore them and stick with the standard 3- L,M,R and Wheel Axis as an extra… [but give your users the mapping schematics for other keyboard press button commands in your application so that they can remap those buttons on their mice to suit their use, you should program for the majority and never the minority…] it can be used as a button you know… I use it in games like BF3 to change posture from standing to crouch etc… so consider this if not using zoom via the mouse wheel…
I don’t think there is any query methods for mouse features, though you should be designing for possibilities with stages of requirement, such as if there is no middle mouse available place an not so important but handy function there, you should design for the minimum of inputs otherwise place requirements upon your users…
Anyway, with that being said, these should be helpful…
Good Luck.
For an idea of Input design, consider Blender3D, they design Middle Mouse and ‘cough’ right mouse for Windows and Linux but for Mac they subside the functionality to a keyboard input…
You can’t query the buttons, but there are 5 usable buttons on a mouse, Left, Right, Middle and XBUTTON1 AND XBUTTON2
Call Mouse.GetState() to get the state of either one. The OS will support all five and can recieve an input from all 5, but not all mice send data from all the buttons and provide just the basic 2 button setup.
it would be best to expect a 2 button mouse then allow the user to configure the other buttons if they are available.
The 4-th and 5th buttons are known as XButton1 and XButton2 in Monogame and are available as properties on MouseState, either through Mouse.GetState or Window.MouseState
Old XNA documentation links and since I can’t find any Monogame docs, a link to the source: