Computer mice these days tend to have additional buttons on sides/ and people periodically wonder whether they need to do anything particular to poll these buttons.
Technical
Most operating systems allow mice to have 5 buttons total - left, right, middle (wheel click), "X1", and "X2", alongside with horizontal and vertical wheel events.
It is a little challenging to find any specific information on intended use of X1/X2 buttons (as far as software goes), so we can only assume that they were intended to be general-purpose.
Implementation
- WinAPI (events)
Use WM_XBUTTON* events and check wParam to see which button it is. - WinAPI (raw)
Use GetAsyncKeyState or GetKeyboardState with VK_XBUTTON1 or VK_XBUTTON2. - GameMaker (Windows-related platforms)
keyboard_check_direct(5) and keyboard_check_direct(6), respectively (as it calls GetAsyncKeyState). - GameMaker (rest of the platforms)
You'll probably need a native extension.
However!
As support for X1/X2 buttons (and even horizontal scrolling outside of native components) remained considerably uncommon through the years, most additional buttons on mice simply emit keyboard events instead - either directly or with help of a driver.
For example, if your mouse has a "Back" button on it, that is most likely emitting a VK_BROWSER_BACK key press, or even simply Alt+Left.
So, what you really want is configurable controls/keyboard shortcuts (without restricting the range of allowed keys), although even otherwise, increasingly often mice come with configuration software that allows to remap the buttons, sometimes even on per-application basis:
Different mouse configuration apps: MSI, Redragon, Microsoft
So that's about all on this matter, really.
Nice post!