Input refactoring:

osd/modules/input, emu/inpttype.cpp: Made most default joystick
assignments supplied by input modules.  Input modules take available
controls into consideration when generating default assignments.

emu/inpttype.ipp: Added a separate "Back" UI input separate from Cancel.
You may want an easier to hit combination for moving to the previous
menu than for exiting or cancelling input.  They both default to Escape.

emu/inpttype.ipp: Added a UI Help control.  Currently only used by
analog inputs menu

emu/inpttype.h: Moved I/O port field type enum to its own header and
sorted UI controls so they appear in a more logical order.

ui: Don't use UI Select to restore defaults - people should be getting
used to the UI Clear input by now.  UI Select cycles multi-value items
instead.

ui/inputmap.cpp: Don't use immediate cancel to cycle between clearing
and restoring default assignment (use UI Clear instead).

osd: Reduced the number of files needing to include the dreaded emu.h.
Got some implementation out of headers.
konami_53cf96
Vas Crabb 10 months ago
parent 20d7135179
commit d4589e0b29
  1. 11
      ctrlr/hotrod.cfg
  2. 11
      ctrlr/hotrodse.cfg
  3. 11
      ctrlr/scorpionxg.cfg
  4. 11
      ctrlr/slikstik.cfg
  5. 11
      ctrlr/xarcade.cfg
  6. 14
      docs/source/advanced/bgfx.rst
  7. 4
      docs/source/advanced/ctrlr_config.rst
  8. 8
      docs/source/plugins/autofire.rst
  9. 6
      docs/source/plugins/inputmacro.rst
  10. 4
      docs/source/techspecs/luareference.rst
  11. 49
      docs/source/usingmame/mamemenus.rst
  12. 40
      docs/source/usingmame/ui.rst
  13. 1117
      language/Afrikaans/strings.po
  14. 1117
      language/Albanian/strings.po
  15. 1117
      language/Arabic/strings.po
  16. 1117
      language/Basque/strings.po
  17. 1117
      language/Belarusian/strings.po
  18. 1117
      language/Bosnian/strings.po
  19. 1117
      language/Bulgarian/strings.po
  20. 1117
      language/Burmese/strings.po
  21. 1122
      language/Catalan/strings.po
  22. 1229
      language/Chinese_Simplified/strings.po
  23. 1229
      language/Chinese_Traditional/strings.po
  24. 1117
      language/Croatian/strings.po
  25. 1223
      language/Czech/strings.po
  26. 1117
      language/Danish/strings.po
  27. 1121
      language/Dutch/strings.po
  28. 1117
      language/English/strings.po
  29. 1117
      language/Estonian/strings.po
  30. 1117
      language/Finnish/strings.po
  31. 1124
      language/French/strings.po
  32. 1121
      language/French_Belgium/strings.po
  33. 1117
      language/French_Canada/strings.po
  34. 1117
      language/Georgian/strings.po
  35. 1300
      language/German/strings.po
  36. 1231
      language/Greek/strings.po
  37. 1117
      language/Hebrew/strings.po
  38. 1117
      language/Hindi/strings.po
  39. 1122
      language/Hungarian/strings.po
  40. 1117
      language/Indonesian/strings.po
  41. 1121
      language/Italian/strings.po
  42. 1253
      language/Japanese/strings.po
  43. 1121
      language/Korean/strings.po
  44. 1117
      language/Latvian/strings.po
  45. 1117
      language/Lithuanian/strings.po
  46. 1117
      language/Macedonian/strings.po
  47. 1121
      language/Norwegian/strings.po
  48. 1117
      language/Persian/strings.po
  49. 1117
      language/Polish/strings.po
  50. 1124
      language/Portuguese/strings.po
  51. 1246
      language/Portuguese_Brazil/strings.po
  52. 1117
      language/Romanian/strings.po
  53. 1121
      language/Russian/strings.po
  54. 1121
      language/Serbian/strings.po
  55. 1121
      language/Serbian_Cyrillic/strings.po
  56. 1223
      language/Slovak/strings.po
  57. 1117
      language/Slovenian/strings.po
  58. 1124
      language/Spanish/strings.po
  59. 1117
      language/Spanish_Mexico/strings.po
  60. 1121
      language/Swedish/strings.po
  61. 1117
      language/Thai/strings.po
  62. 1124
      language/Turkish/strings.po
  63. 1222
      language/Ukrainian/strings.po
  64. 1117
      language/Vietnamese/strings.po
  65. 4
      plugins/autofire/autofire_menu.lua
  66. 2
      plugins/cheat/init.lua
  67. 2
      plugins/cheatfind/init.lua
  68. 8
      plugins/commonui/init.lua
  69. 6
      plugins/inputmacro/inputmacro_menu.lua
  70. 1
      scripts/src/emu.lua
  71. 2
      scripts/src/osd/modules.lua
  72. 351
      src/emu/inpttype.h
  73. 818
      src/emu/inpttype.ipp
  74. 331
      src/emu/ioport.h
  75. 10
      src/frontend/mame/luaengine_input.cpp
  76. 46
      src/frontend/mame/ui/analogipt.cpp
  77. 8
      src/frontend/mame/ui/auditmenu.cpp
  78. 2
      src/frontend/mame/ui/auditmenu.h
  79. 26
      src/frontend/mame/ui/confswitch.cpp
  80. 2
      src/frontend/mame/ui/dirmenu.cpp
  81. 35
      src/frontend/mame/ui/filecreate.cpp
  82. 1
      src/frontend/mame/ui/filecreate.h
  83. 2
      src/frontend/mame/ui/filesel.h
  84. 17
      src/frontend/mame/ui/inputmap.cpp
  85. 12
      src/frontend/mame/ui/menu.cpp
  86. 2
      src/frontend/mame/ui/menu.h
  87. 5
      src/frontend/mame/ui/pluginopt.cpp
  88. 2
      src/frontend/mame/ui/pluginopt.h
  89. 4
      src/frontend/mame/ui/quitmenu.cpp
  90. 2
      src/frontend/mame/ui/selector.h
  91. 24
      src/frontend/mame/ui/selmenu.cpp
  92. 2
      src/frontend/mame/ui/simpleselgame.cpp
  93. 2
      src/frontend/mame/ui/simpleselgame.h
  94. 1
      src/frontend/mame/ui/sliders.cpp
  95. 4
      src/frontend/mame/ui/state.cpp
  96. 2
      src/frontend/mame/ui/swlist.h
  97. 4
      src/frontend/mame/ui/ui.cpp
  98. 2
      src/frontend/mame/ui/viewgfx.cpp
  99. 592
      src/osd/modules/input/assignmenthelper.cpp
  100. 118
      src/osd/modules/input/assignmenthelper.h
  101. Some files were not shown because too many files have changed in this diff Show More

@ -25,12 +25,21 @@
<newseq type="standard">KEYCODE_ENTER OR KEYCODE_LCONTROL</newseq>
</port>
<port type="UI_CONFIGURE">
<port type="UI_MENU">
<newseq type="standard">KEYCODE_TAB OR KEYCODE_1 KEYCODE_3</newseq>
</port>
<port type="UI_BACK">
<newseq type="standard">KEYCODE_ESC OR KEYCODE_LALT OR JOYCODE_1_BUTTON2</newseq>
</port>
<port type="UI_CANCEL">
<newseq type="standard">KEYCODE_ESC OR KEYCODE_2 KEYCODE_4</newseq>
</port>
<port type="UI_CLEAR">
<newseq type="standard">KEYCODE_DEL OR KEYCODE_SPACE OR JOYCODE_1_BUTTON3</newseq>
</port>
<port type="UI_HELP">
<newseq type="standard">KEYCODE_F1 OR KEYCODE_LSHIFT OR JOYCODE_1_BUTTON4</newseq>
</port>
<port type="START1">
<newseq type="standard">KEYCODE_1</newseq>

@ -25,12 +25,21 @@
<newseq type="standard">KEYCODE_ENTER OR KEYCODE_LCONTROL</newseq>
</port>
<port type="UI_CONFIGURE">
<port type="UI_MENU">
<newseq type="standard">KEYCODE_TAB OR KEYCODE_1 KEYCODE_3</newseq>
</port>
<port type="UI_BACK">
<newseq type="standard">KEYCODE_ESC OR KEYCODE_LALT OR JOYCODE_1_BUTTON2</newseq>
</port>
<port type="UI_CANCEL">
<newseq type="standard">KEYCODE_ESC OR KEYCODE_2 KEYCODE_4</newseq>
</port>
<port type="UI_CLEAR">
<newseq type="standard">KEYCODE_DEL OR KEYCODE_SPACE OR JOYCODE_1_BUTTON3</newseq>
</port>
<port type="UI_HELP">
<newseq type="standard">KEYCODE_F1 OR KEYCODE_LSHIFT OR JOYCODE_1_BUTTON4</newseq>
</port>
<port type="START1">
<newseq type="standard">KEYCODE_1</newseq>

@ -27,12 +27,21 @@
<newseq type="standard">KEYCODE_ENTER OR KEYCODE_LCONTROL</newseq>
</port>
<port type="UI_CONFIGURE">
<port type="UI_MENU">
<newseq type="standard">KEYCODE_TAB</newseq>
</port>
<port type="UI_BACK">
<newseq type="standard">KEYCODE_ESC OR KEYCODE_LALT OR JOYCODE_1_BUTTON2</newseq>
</port>
<port type="UI_CANCEL">
<newseq type="standard">KEYCODE_ESC</newseq>
</port>
<port type="UI_CLEAR">
<newseq type="standard">KEYCODE_DEL OR KEYCODE_SPACE OR JOYCODE_1_BUTTON3</newseq>
</port>
<port type="UI_HELP">
<newseq type="standard">KEYCODE_F1 OR KEYCODE_C OR JOYCODE_1_BUTTON4</newseq>
</port>
<port type="START1">
<newseq type="standard">KEYCODE_1</newseq>

@ -32,12 +32,21 @@
<newseq type="standard">KEYCODE_7 OR KEYCODE_ENTER OR JOYCODE_1_BUTTON1</newseq>
</port>
<port type="UI_CONFIGURE">
<port type="UI_MENU">
<newseq type="standard">KEYCODE_TAB OR KEYCODE_1 KEYCODE_5</newseq>
</port>
<port type="UI_BACK">
<newseq type="standard">KEYCODE_ESC OR KEYCODE_H OR JOYCODE_1_BUTTON2 OR KEYCODE_L</newseq>
</port>
<port type="UI_CANCEL">
<newseq type="standard">KEYCODE_ESC OR KEYCODE_2 KEYCODE_6</newseq>
</port>
<port type="UI_CLEAR">
<newseq type="standard">KEYCODE_DEL OR KEYCODE_9 OR JOYCODE_1_BUTTON3</newseq>
</port>
<port type="UI_HELP">
<newseq type="standard">KEYCODE_F1 OR KEYCODE_0 OR JOYCODE_1_BUTTON4</newseq>
</port>
<port type="START1">
<newseq type="standard">KEYCODE_1 OR JOYCODE_1_START</newseq>

@ -25,12 +25,21 @@
<newseq type="standard">KEYCODE_ENTER OR KEYCODE_LCONTROL</newseq>
</port>
<port type="UI_CONFIGURE">
<port type="UI_MENU">
<newseq type="standard">KEYCODE_TAB OR KEYCODE_1 KEYCODE_3</newseq>
</port>
<port type="UI_BACK">
<newseq type="standard">KEYCODE_ESC OR KEYCODE_LALT OR JOYCODE_1_BUTTON2</newseq>
</port>
<port type="UI_CANCEL">
<newseq type="standard">KEYCODE_ESC OR KEYCODE_2 KEYCODE_4</newseq>
</port>
<port type="UI_CLEAR">
<newseq type="standard">KEYCODE_DEL OR KEYCODE_SPACE OR JOYCODE_1_BUTTON3</newseq>
</port>
<port type="UI_HELP">
<newseq type="standard">KEYCODE_F1 OR KEYCODE_LSHIFT OR JOYCODE_1_BUTTON4</newseq>
</port>
<port type="START1">
<newseq type="standard">KEYCODE_1</newseq>

@ -155,7 +155,7 @@ bgfx_screen_chains
we want to give each player their own full screen display (two physical
monitors) along with the LCD, weโ€™ll go with::
-numscreens 2 -view0 "Player 1" -view1 "Player 2" -video bgfx -bgfx_screen_chains hlsl,unfiltered,unfiltered:hlsl,unfiltered,unfiltered
-numscreens 2 -view0 "Player 1" -view1 "Player 2" -video bgfx -bgfx_screen_chains hlsl,unfiltered:hlsl,unfiltered
This sets up the view for each display respectively, keeping HLSL effect on
the CRT for each window (physical display) while going unfiltered for the
@ -164,8 +164,7 @@ bgfx_screen_chains
If using only one window (one display), keep in mind the game still has
three screens, so we would use::
bgfx_screen_chains hlsl,unfiltered,unfiltered``
bgfx_screen_chains hlsl,unfiltered,unfiltered
Note that the commas are on the outside edges, and any colons are in the
middle.
@ -177,9 +176,6 @@ bgfx_shadow_mask
Tweaking BGFX HLSL Settings inside MAME
---------------------------------------
*Warning: Currently BGFX HLSL settings are not saved or loaded from any
configuration files. This is expected to change in the future.*
Start by loading MAME with the game of your choice (e.g. **mame pacman**).
The tilde key (**~**) brings up the on-screen display options. Use up and down
@ -189,6 +185,12 @@ these settings.
Note that settings are individually changeable on a per-screen basis.
BGFX slider settings are saved per-system in CFG files. If the
``bgfx_screen_chains`` setting has been set (either in an INI file or on the
command line), it will set the initial effects. If the ``bgfx_screen_chains``
setting has not been set, MAME will use the effects you chose the last time you
ran the system.
Using the included pillarbox filters
------------------------------------

@ -147,7 +147,7 @@ override the default control assignments for emulated inputs by type:
.. code-block:: XML
<input>
<port type="UI_CONFIGURE">
<port type="UI_MENU">
<newseq type="standard">KEYCODE_TAB OR KEYCODE_1 KEYCODE_5</newseq>
</port>
<port type="UI_CANCEL">
@ -170,7 +170,7 @@ override the default control assignments for emulated inputs by type:
This sets the following default input assignments:
Config Menu (User Interface)
Show/Hide Menu (User Interface)
Tab key, or 1 and 2 keys pressed simultaneously
UI Cancel (User Interface)
Escape key, or 2 and 6 keys pressed simultaneously

@ -66,10 +66,10 @@ Experiment with different values to get the best effect.
When adding a new autofire button, there is a **Cancel** option that changes to
**Create** after you set the input and hotkey. Select **Create** to finish
creating the autofire button and return to the list of autofire buttons. The
new autofire button will be added at the end of the list. Press the UI Cancel
key (Escape/Esc on the keyboard by default), or select **Cancel** before setting
the input/hotkey, to return to the previous menu without creating the new
autofire button.
new autofire button will be added at the end of the list. Press the UI Back key
(Escape/Esc on the keyboard by default), or select **Cancel** before setting the
input/hotkey, to return to the previous menu without creating the new autofire
button.
When modifying an existing autofire button, select **Done** or press the UI
Cancel key to return to the list of autofire buttons. Changes take effect

@ -55,7 +55,7 @@ whole:
descriptive. Press the UI Select key (Return/Enter on the keyboard or the
first button on the first joystick by default) to edit the current name, or
press the UI Clear key to type a new name. Press the UI Select key before
moving to another menu item to save the new name; press the UI Cancel key
moving to another menu item to save the new name; press the UI Back key
(Escape/Esc on the keyboard by default) to change discard the new name.
* Select **Activation combination** to set the control (or combination of
controls) you want to use to activate the macro. Keep in mind that regular
@ -112,11 +112,11 @@ When creating a new macro, there is a **Cancel** option that changes to
**Create** after you set the activating sequence and the first input for the
initially created step. Select **Create** to finish creating the macro and
return to the list of input macros. The new macro will be added at the end of
the list. Press the UI Cancel key, or select **Cancel** before setting the
the list. Press the UI Back key, or select **Cancel** before setting the
activation sequence/input, to return to the previous menu without creating the
new macro.
When editing an existing macro, select **Done** or press the UI Cancel key to
When editing an existing macro, select **Done** or press the UI Back key to
return to the list of input macros. Changes take effect immediately.

@ -2549,6 +2549,10 @@ manager.machine.uiinput
Methods
^^^^^^^
uiinput:reset()
Clears pending events and UI input states. Should be called when leaving a
modal state where input is handled directly (e.g. configuring an input
combination).
uiinput:find_mouse()
Returns host system mouse pointer X position, Y position, button state, and
the :ref:`render target <luareference-render-target>` it falls in. The

@ -12,17 +12,18 @@ Introduction
------------
To show the :ref:`main menu <menus-main>` while running an emulated system in
MAME, press the **Config Menu** key or button (**Tab** by default). If the
emulated system has keyboard inputs, you may need to press the **UI Toggle** key
or button (**Scroll Lock**, or **Forward Delete** on macOS, by default) to
enable user interface controls first. You can dismiss a menu by pressing the
**UI Cancel** key or button (**Escape** by default). Dismissing a menu will
return to its parent menu, or to the running system in the case of the main
menu.
You can hide a menu and return to the running system by pressing the **Config
Menu** key or button. Pressing the **Config Menu** key or button again will
jump back to the same menu. This is useful when testing changes to settings.
MAME, press the **Show/Hide Menu** key or button (**Tab** by default). If the
emulated system has keyboard inputs, you may need to press the
**Toggle UI Controls** key or button (**Scroll Lock**, or **Forward Delete** on
macOS, by default) to enable user interface controls first. You can dismiss a
menu by pressing the **UI Back** key or button (**Escape** by default).
Dismissing a menu will return to its parent menu, or to the running system in
the case of the main menu.
You can hide a menu and return to the running system by pressing the
**Show/Hide Menu** key or button. Pressing the **Show/Hide Menu** key or button
again will jump back to the same menu. This is useful when testing changes to
settings.
Emulated system inputs are ignored while menus are displayed. You can still
pause or resume the running system while most menus are displayed by pressing
@ -43,17 +44,17 @@ For more information on navigating menus, :ref:`see the relevant section
Main menu
---------
The main menu is shown when you press the **Config Menu** key or button while
The main menu is shown when you press the **Show/Hide Menu** key or button while
running an emulated system or while the system information screen is displayed.
It provides access to menus used to change settings, control various features,
and show information about the running system and MAME itself.
If you press the **Config Menu** key or button to show the main menu while the
system information screen is displayed, the emulated system will not start until
the main menu is dismissed (either by selecting **Start System**, pressing the
**UI Cancel** key or button, or pressing the **Config Menu** key or button).
This can be useful for mounting media images or changing DIP switches and
machine configuration settings before the emulated system starts.
If you press the **Show/Hide Menu** key or button to show the main menu while
the system information screen is displayed, the emulated system will not start
until the main menu is dismissed (either by selecting **Start System**, pressing
the **UI Back** key or button, or pressing the **Show/Hide Menu** key or
button). This can be useful for mounting media images or changing DIP switches
and machine configuration settings before the emulated system starts.
Input Settings
Shows the :ref:`Input Settings <menus-inputopts>` menu, where you can assign
@ -127,13 +128,13 @@ Cheat
Plugin Options
Shows the Plugin Options menu, where you can access settings for enabled
plugins. This item is not shown if no plugins are enabled, or if the main
menu is shown before the emulated system starts (by pressing the Config Menu
key/button while the system information screen is displayed).
menu is shown before the emulated system starts (by pressing the Show/Hide
Menu key/button while the system information screen is displayed).
External DAT View
Shows the info viewer, which displays information loaded from various
external support files. This item is not shown if the :ref:`data plugin
<plugins-data>` is not enabled, or if the main menu is shown before the
emulated system starts (by pressing the Config Menu key/button while the
emulated system starts (by pressing the Show/Hide Menu key/button while the
system information screen is displayed).
Add To Favorites/Remove From Favorites
Adds the running system to the favourites list, or removes it if itโ€™s
@ -144,13 +145,13 @@ About MAME
Select New System
Shows the system selection menu, where you can select a system to start a
new emulation session. This item is not shown if the main menu is shown
before the emulated system starts (by pressing the Config Menu key/button
before the emulated system starts (by pressing the Show/Hide Menu key/button
while the system information screen is displayed).
Close Menu/Start System
Closes the main menu, returning control of the running system. Shows
**Start System** if the main menu is shown before the emulated system
starts (by pressing the Config Menu key/button while the system information
screen is displayed).
starts (by pressing the Show/Hide Menu key/button while the system
information screen is displayed).
.. _menus-inputopts:

@ -20,13 +20,13 @@ The default settings for the most important controls to know when running an
emulated system, and the settings they correspond to in case you want to change
them, are as follows:
Scroll Lock, or Forward Delete on macOS (UI Toggle)
Scroll Lock, or Forward Delete on macOS (Toggle UI Controls)
For emulated systems with keyboard inputs, enable or disable UI controls.
(MAME starts with UI controls disabled for systems with keyboard inputs
unless the :ref:`ui_active option <mame-commandline-uiactive>` is on.)
Tab (Config Menu)
Tab (Show/Hide Menu)
Show or hide the menu during emulation.
Escape (UI Cancel)
Escape (UI Back and UI Cancel)
Return to the system selection menu, or exit if MAME was started with a
system specified (from the command line or using an
:ref:`external front-end <frontends>`).
@ -60,7 +60,7 @@ Return/Enter keypad Enter (UI Select)
Select the highlighted menu item.
Forward Delete, or Fn+Delete on some compact keyboards (UI Clear)
Clear setting or reset to default value.
Escape (UI Cancel)
Escape (UI Back and UI Cancel)
Clear the search if searching the menu, otherwise close the menu, returning
to the previous menu, or returning to the emulated system in the case of the
main menu (thereโ€™s usually an item at the bottom of the menu for the same
@ -92,18 +92,24 @@ most important UI controls have joystick assignments by default:
* Move the first joystick left or right in the X axis to adjust settings.
* Press the first button on the first joystick to select the highlighted menu
item.
* If the first joystick has at least three buttons, press the second button on
the first joystick to close the menu, returning to the previous menu, or
returning to the emulated system in the case of the main menu (thereโ€™s usually
an item at the bottom of the menu for the same purpose).
For gamepad-style controllers, the left analog thumb stick usually controls UI
navigation. You may find it convenient to assign directional pad controls to UI
navigation in addition to or in place of the left thumb stick.
For gamepad-style controllers, the left analog thumb stick and directional pad
usually control UI navigation. Depending on the controller, the right analog
thumb stick, triggers and additional buttons may automatically be assigned to UI
inputs. Check the **User Interface** input assignments menu to see how controls
are assigned.
If you want to be able to use MAME with a game controller without needing a
keyboard, youโ€™ll need to assign joystick buttons (or combinations of buttons) to
these controls as well:
* **Config Menu** to show or dismiss the menu during emulation
* **UI Cancel** to close menus, return to the system selection menu, or exit
MAME
* **Show/Hide Menu** to show or hide the menu during emulation
* **UI Back** to close menus
* **UI Cancel** to return to the system selection menu or exit MAME
* **UI Clear** isnโ€™t essential for basic emulation, but itโ€™s used to clear or
reset some settings to defaults
* **UI Home**, **UI End**, **UI Page Up**, **UI Page Down**, **UI Previous
@ -138,8 +144,8 @@ pointing device:
* Click toolbar items to select them, or hover over them to see a description.
If you have enough additional mouse buttons, you may want to assign button
combinations to the **Config Menu**, **Pause** and/or **UI Cancel** inputs to
make it possible to use MAME without a keyboard.
combinations to the **Show/Hide Menu**, **Pause**, **UI Back** and/or
**UI Cancel** inputs to make it possible to use MAME without a keyboard.
.. _ui-inptcfg:
@ -220,10 +226,7 @@ input or a combination of inputs for a logical **and** operation:
* Press a key or button or move an analog control twice to add a **not** item to
the **and** operation. Pressing the same key or button or moving the same
analog control additional times toggles the **not** on and off.
* Pressing **UI Cancel** (**Escape** by default) *before* activating any other
controls clears the setting or restores the default assignment.
* Press **UI Cancel** *after* activating another control to leave the setting
unchanged.
* Press **UI Cancel** (**Escape** by default) to leave the setting unchanged.
* The new setting is shown below the menu. Wait one second after activating an
input to accept the new setting.
@ -344,10 +347,7 @@ When you select an axis setting, MAME will wait for you to enter an input:
direction of the control on or off.
* When appending to a setting, move an analog control other than the last
assigned control or press a key or button to add an **or** operation.
* Pressing **UI Cancel** (**Escape** by default) *before* activating any other
controls clears the setting or restores the default assignment.
* Pressing **UI Cancel** *after* activating another control leaves the setting
unchanged.
* Pressing **UI Cancel** (**Escape** by default) leaves the setting unchanged.
* The new setting is shown below the menu. Wait one second after moving an
analog control to accept the new setting.

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

@ -248,7 +248,7 @@ end
local function handle_edit_menu(index, event, buttons)
local section, adjusted_index = menu_section(index)
if ((section == MENU_SECTIONS.FOOTER) and (event == 'select')) or (event == 'cancel') then
if ((section == MENU_SECTIONS.FOOTER) and (event == 'select')) or (event == 'back') then
configure_menu_active = false
table.remove(menu_stack)
return true
@ -285,7 +285,7 @@ end
local function handle_add_menu(index, event, buttons)
local section, adjusted_index = menu_section(index)
if ((section == MENU_SECTIONS.FOOTER) and (event == 'select')) or (event == 'cancel') then
if ((section == MENU_SECTIONS.FOOTER) and (event == 'select')) or (event == 'back') then
configure_menu_active = false
table.remove(menu_stack)
if is_button_complete(current_button) and (event == 'select') then

@ -714,7 +714,7 @@ function cheat.startplugin()
local function menu_callback(index, event)
manager.machine:popmessage()
if hotkeymenu then
if event == "cancel" then
if event == "back" then
hotkeymenu = false
return true
else

@ -1044,7 +1044,7 @@ function cheatfind.startplugin()
end
local function menu_callback(index, event)
if event == "cancel" and pausesel == 1 then
if event == "back" and pausesel == 1 then
emu.unpause()
menu_is_showing = false
return false -- return false so menu will be popped off the stack

@ -106,7 +106,7 @@ function commonui.input_selection_menu(action, title, filter)
function menu:handle(index, event)
local selection
if (event == 'cancel') or ((index == input_item_cancel) and (event == 'select')) then
if (event == 'back') or ((index == input_item_cancel) and (event == 'select')) then
action(nil)
return true
elseif event == 'select' then
@ -177,16 +177,18 @@ function commonui.switch_polling_helper(starting_sequence)
if uiinput:pressed(cancel) then
-- UI_CANCEL pressed, abort
machine:popmessage()
uiinput:reset()
if (not poller.modified) or (modified_ticks == emu.osd_ticks()) then
-- cancelled immediately
self.sequence = nil
return true -- TODO: communicate this better?
self.sequence = nil -- TODO: communicate this better?
return true
else
-- entered something before cancelling
self.sequence = nil
return true
end
elseif poller:poll() then
uiinput:reset()
if poller.valid then
-- valid sequence entered
machine:popmessage()

@ -160,6 +160,8 @@ local function handle_edit_items(index, event)
end
edit_name_buffer = nil
return true
elseif event == 'back' then
return true -- swallow back while editing text
elseif event == 'cancel' then
edit_name_buffer = nil
return true
@ -434,7 +436,7 @@ local function handle_add(index, event)
local handled, selection = handle_edit_items(index, event)
if handled then
return true, selection
elseif event == 'cancel' then
elseif event == 'back' then
edit_current_macro = nil
edit_menu_active = false
edit_items = nil
@ -458,7 +460,7 @@ local function handle_edit(index, event)
local handled, selection = handle_edit_items(index, event)
if handled then
return true, selection
elseif (event == 'cancel') or ((index == edit_item_exit) and (event == 'select')) then
elseif (event == 'back') or ((index == edit_item_exit) and (event == 'select')) then
edit_current_macro = nil
edit_menu_active = false
edit_items = nil

@ -161,6 +161,7 @@ files {
MAME_DIR .. "src/emu/ioport.cpp",
MAME_DIR .. "src/emu/ioport.h",
MAME_DIR .. "src/emu/inpttype.ipp",
MAME_DIR .. "src/emu/inpttype.h",
MAME_DIR .. "src/emu/logmacro.h",
MAME_DIR .. "src/emu/machine.cpp",
MAME_DIR .. "src/emu/machine.h",

@ -76,6 +76,8 @@ function osdmodulesbuild()
MAME_DIR .. "src/osd/modules/font/font_osx.cpp",
MAME_DIR .. "src/osd/modules/font/font_sdl.cpp",
MAME_DIR .. "src/osd/modules/font/font_windows.cpp",
MAME_DIR .. "src/osd/modules/input/assignmenthelper.cpp",
MAME_DIR .. "src/osd/modules/input/assignmenthelper.h",
MAME_DIR .. "src/osd/modules/input/input_common.cpp",
MAME_DIR .. "src/osd/modules/input/input_common.h",
MAME_DIR .. "src/osd/modules/input/input_dinput.cpp",

@ -0,0 +1,351 @@
// license:BSD-3-Clause
// copyright-holders:Aaron Giles
/***************************************************************************
inpttype.ipp
Core-defined input types.
***************************************************************************/
#ifndef MAME_EMU_INPTTYPE_H
#define MAME_EMU_INPTTYPE_H
#pragma once
#include "interface/inputfwd.h"
#include "osdcomm.h"
enum ioport_type : osd::u32
{
// pseudo-port types
IPT_INVALID = 0,
IPT_UNUSED,
IPT_END,
IPT_UNKNOWN,
IPT_PORT,
IPT_DIPSWITCH,
IPT_CONFIG,
// start buttons
IPT_START1,
IPT_START2,
IPT_START3,
IPT_START4,
IPT_START5,
IPT_START6,
IPT_START7,
IPT_START8,
IPT_START9,
IPT_START10,
// coin slots
IPT_COIN1,
IPT_COIN2,
IPT_COIN3,
IPT_COIN4,
IPT_COIN5,
IPT_COIN6,
IPT_COIN7,
IPT_COIN8,
IPT_COIN9,
IPT_COIN10,
IPT_COIN11,
IPT_COIN12,
IPT_BILL1,
// service coin
IPT_SERVICE1,
IPT_SERVICE2,
IPT_SERVICE3,
IPT_SERVICE4,
// tilt inputs
IPT_TILT1,
IPT_TILT2,
IPT_TILT3,
IPT_TILT4,
// misc other digital inputs
IPT_POWER_ON,
IPT_POWER_OFF,
IPT_SERVICE,
IPT_TILT,
IPT_INTERLOCK,
IPT_MEMORY_RESET,
IPT_VOLUME_UP,
IPT_VOLUME_DOWN,
IPT_START, // use the numbered start button(s) for coin-ops
IPT_SELECT,
IPT_KEYPAD,
IPT_KEYBOARD,
// digital joystick inputs
IPT_DIGITAL_JOYSTICK_FIRST,
// use IPT_JOYSTICK for panels where the player has one single joystick
IPT_JOYSTICK_UP,
IPT_JOYSTICK_DOWN,
IPT_JOYSTICK_LEFT,
IPT_JOYSTICK_RIGHT,
// use IPT_JOYSTICKLEFT and IPT_JOYSTICKRIGHT for dual joystick panels
IPT_JOYSTICKRIGHT_UP,
IPT_JOYSTICKRIGHT_DOWN,
IPT_JOYSTICKRIGHT_LEFT,
IPT_JOYSTICKRIGHT_RIGHT,
IPT_JOYSTICKLEFT_UP,
IPT_JOYSTICKLEFT_DOWN,
IPT_JOYSTICKLEFT_LEFT,
IPT_JOYSTICKLEFT_RIGHT,
IPT_DIGITAL_JOYSTICK_LAST,
// action buttons
IPT_BUTTON1,
IPT_BUTTON2,
IPT_BUTTON3,
IPT_BUTTON4,
IPT_BUTTON5,
IPT_BUTTON6,
IPT_BUTTON7,
IPT_BUTTON8,
IPT_BUTTON9,
IPT_BUTTON10,
IPT_BUTTON11,
IPT_BUTTON12,
IPT_BUTTON13,
IPT_BUTTON14,
IPT_BUTTON15,
IPT_BUTTON16,
// mahjong inputs
IPT_MAHJONG_FIRST,
IPT_MAHJONG_A,
IPT_MAHJONG_B,
IPT_MAHJONG_C,
IPT_MAHJONG_D,
IPT_MAHJONG_E,
IPT_MAHJONG_F,
IPT_MAHJONG_G,
IPT_MAHJONG_H,
IPT_MAHJONG_I,
IPT_MAHJONG_J,
IPT_MAHJONG_K,
IPT_MAHJONG_L,
IPT_MAHJONG_M,
IPT_MAHJONG_N,
IPT_MAHJONG_O,
IPT_MAHJONG_P,
IPT_MAHJONG_Q,
IPT_MAHJONG_KAN,
IPT_MAHJONG_PON,
IPT_MAHJONG_CHI,
IPT_MAHJONG_REACH,
IPT_MAHJONG_RON,
IPT_MAHJONG_FLIP_FLOP,
IPT_MAHJONG_BET,
IPT_MAHJONG_SCORE,
IPT_MAHJONG_DOUBLE_UP,
IPT_MAHJONG_BIG,
IPT_MAHJONG_SMALL,
IPT_MAHJONG_LAST_CHANCE,
IPT_MAHJONG_LAST,
// hanafuda inputs
IPT_HANAFUDA_FIRST,
IPT_HANAFUDA_A,
IPT_HANAFUDA_B,
IPT_HANAFUDA_C,
IPT_HANAFUDA_D,
IPT_HANAFUDA_E,
IPT_HANAFUDA_F,
IPT_HANAFUDA_G,
IPT_HANAFUDA_H,
IPT_HANAFUDA_YES,
IPT_HANAFUDA_NO,
IPT_HANAFUDA_LAST,
// gambling inputs
IPT_GAMBLING_FIRST,
IPT_GAMBLE_KEYIN, // attendant
IPT_GAMBLE_KEYOUT, // attendant
IPT_GAMBLE_SERVICE, // attendant
IPT_GAMBLE_BOOK, // attendant
IPT_GAMBLE_DOOR, // attendant
// IPT_GAMBLE_DOOR2, // many gambling games have several doors.
// IPT_GAMBLE_DOOR3,
// IPT_GAMBLE_DOOR4,
// IPT_GAMBLE_DOOR5,
IPT_GAMBLE_PAYOUT, // player
IPT_GAMBLE_BET, // player
IPT_GAMBLE_DEAL, // player
IPT_GAMBLE_STAND, // player
IPT_GAMBLE_TAKE, // player
IPT_GAMBLE_D_UP, // player
IPT_GAMBLE_HALF, // player
IPT_GAMBLE_HIGH, // player
IPT_GAMBLE_LOW, // player
// poker-specific inputs
IPT_POKER_HOLD1,
IPT_POKER_HOLD2,
IPT_POKER_HOLD3,
IPT_POKER_HOLD4,
IPT_POKER_HOLD5,
IPT_POKER_CANCEL,
// slot-specific inputs
IPT_SLOT_STOP1,
IPT_SLOT_STOP2,
IPT_SLOT_STOP3,
IPT_SLOT_STOP4,
IPT_SLOT_STOP_ALL,
IPT_GAMBLING_LAST,
// analog inputs
IPT_ANALOG_FIRST,
IPT_ANALOG_ABSOLUTE_FIRST,
IPT_AD_STICK_X, // absolute // autocenter
IPT_AD_STICK_Y, // absolute // autocenter
IPT_AD_STICK_Z, // absolute // autocenter
IPT_PADDLE, // absolute // autocenter
IPT_PADDLE_V, // absolute // autocenter
IPT_PEDAL, // absolute // autocenter
IPT_PEDAL2, // absolute // autocenter
IPT_PEDAL3, // absolute // autocenter
IPT_LIGHTGUN_X, // absolute
IPT_LIGHTGUN_Y, // absolute
IPT_POSITIONAL, // absolute // autocenter if not wraps
IPT_POSITIONAL_V, // absolute // autocenter if not wraps
IPT_ANALOG_ABSOLUTE_LAST,
IPT_DIAL, // relative
IPT_DIAL_V, // relative
IPT_TRACKBALL_X, // relative
IPT_TRACKBALL_Y, // relative
IPT_MOUSE_X, // relative
IPT_MOUSE_Y, // relative
IPT_ANALOG_LAST,
// analog adjuster support
IPT_ADJUSTER,
// the following are special codes for user interface handling - not to be used by drivers!
IPT_UI_FIRST,
IPT_UI_MENU,
IPT_UI_SELECT,
IPT_UI_BACK,
IPT_UI_CANCEL,
IPT_UI_CLEAR,
IPT_UI_HELP,
IPT_UI_UP,
IPT_UI_DOWN,
IPT_UI_LEFT,
IPT_UI_RIGHT,
IPT_UI_HOME,
IPT_UI_END,
IPT_UI_PAGE_UP,
IPT_UI_PAGE_DOWN,
IPT_UI_PREV_GROUP,
IPT_UI_NEXT_GROUP,
IPT_UI_ON_SCREEN_DISPLAY,
IPT_UI_TOGGLE_UI,
IPT_UI_DEBUG_BREAK,
IPT_UI_PAUSE,
IPT_UI_PAUSE_SINGLE,
IPT_UI_REWIND_SINGLE,
IPT_UI_SAVE_STATE,
IPT_UI_LOAD_STATE,
IPT_UI_RESET_MACHINE,
IPT_UI_SOFT_RESET,
IPT_UI_SHOW_GFX,
IPT_UI_FRAMESKIP_DEC,
IPT_UI_FRAMESKIP_INC,
IPT_UI_THROTTLE,
IPT_UI_FAST_FORWARD,
IPT_UI_SHOW_FPS,
IPT_UI_SNAPSHOT,
IPT_UI_RECORD_MNG,
IPT_UI_RECORD_AVI,
IPT_UI_TOGGLE_CHEAT,
IPT_UI_DISPLAY_COMMENT,
IPT_UI_ZOOM_IN,
IPT_UI_ZOOM_OUT,
IPT_UI_ZOOM_DEFAULT,
IPT_UI_ROTATE,
IPT_UI_SHOW_PROFILER,
IPT_UI_RELEASE_POINTER,
IPT_UI_PASTE,
IPT_UI_TAPE_START,
IPT_UI_TAPE_STOP,
IPT_UI_FOCUS_NEXT,
IPT_UI_FOCUS_PREV,
IPT_UI_DATS,
IPT_UI_FAVORITES,
IPT_UI_EXPORT,
IPT_UI_AUDIT,
// additional OSD-specified UI port types (up to 16)
IPT_OSD_1,
IPT_OSD_2,
IPT_OSD_3,
IPT_OSD_4,
IPT_OSD_5,
IPT_OSD_6,
IPT_OSD_7,
IPT_OSD_8,
IPT_OSD_9,
IPT_OSD_10,
IPT_OSD_11,
IPT_OSD_12,
IPT_OSD_13,
IPT_OSD_14,
IPT_OSD_15,
IPT_OSD_16,
IPT_UI_LAST,
IPT_OTHER, // not mapped to standard defaults
IPT_SPECIAL, // uninterpreted characters
IPT_CUSTOM, // handled by custom code
IPT_OUTPUT,
IPT_COUNT,
// aliases for some types
IPT_PADDLE_H = IPT_PADDLE,
IPT_PEDAL1 = IPT_PEDAL,
IPT_POSITIONAL_H = IPT_POSITIONAL,
IPT_DIAL_H = IPT_DIAL
};
DECLARE_ENUM_INCDEC_OPERATORS(ioport_type)
// sequence types for input_port_seq() call
enum input_seq_type : int
{
SEQ_TYPE_INVALID = -1,
SEQ_TYPE_STANDARD = 0,
SEQ_TYPE_INCREMENT,
SEQ_TYPE_DECREMENT,
SEQ_TYPE_TOTAL
};
DECLARE_ENUM_INCDEC_OPERATORS(input_seq_type)
#endif // MAME_EMU_INPTTYPE_H

File diff suppressed because it is too large Load Diff

@ -17,6 +17,8 @@
#ifndef MAME_EMU_IOPORT_H
#define MAME_EMU_IOPORT_H
#include "inpttype.h"
#include "ioprocs.h"
#include <array>
@ -48,18 +50,6 @@ constexpr char32_t UCHAR_SHIFT_END = UCHAR_SHIFT_2;
constexpr char32_t UCHAR_MAMEKEY_BEGIN = UCHAR_PRIVATE + 2;
// sequence types for input_port_seq() call
enum input_seq_type : int
{
SEQ_TYPE_INVALID = -1,
SEQ_TYPE_STANDARD = 0,
SEQ_TYPE_INCREMENT,
SEQ_TYPE_DECREMENT,
SEQ_TYPE_TOTAL
};
DECLARE_ENUM_INCDEC_OPERATORS(input_seq_type)
// crosshair types
enum crosshair_axis_t
{
@ -89,323 +79,6 @@ enum ioport_group
};
// various input port types
enum ioport_type : u32
{
// pseudo-port types
IPT_INVALID = 0,
IPT_UNUSED,
IPT_END,
IPT_UNKNOWN,
IPT_PORT,
IPT_DIPSWITCH,
IPT_CONFIG,
// start buttons
IPT_START1,
IPT_START2,
IPT_START3,
IPT_START4,
IPT_START5,
IPT_START6,
IPT_START7,
IPT_START8,
IPT_START9,
IPT_START10,
// coin slots
IPT_COIN1,
IPT_COIN2,
IPT_COIN3,
IPT_COIN4,
IPT_COIN5,
IPT_COIN6,
IPT_COIN7,
IPT_COIN8,
IPT_COIN9,
IPT_COIN10,
IPT_COIN11,
IPT_COIN12,
IPT_BILL1,
// service coin
IPT_SERVICE1,
IPT_SERVICE2,
IPT_SERVICE3,
IPT_SERVICE4,
// tilt inputs
IPT_TILT1,
IPT_TILT2,
IPT_TILT3,
IPT_TILT4,
// misc other digital inputs
IPT_POWER_ON,
IPT_POWER_OFF,
IPT_SERVICE,
IPT_TILT,
IPT_INTERLOCK,
IPT_MEMORY_RESET,
IPT_VOLUME_UP,
IPT_VOLUME_DOWN,
IPT_START, // use the numbered start button(s) for coin-ops
IPT_SELECT,
IPT_KEYPAD,
IPT_KEYBOARD,
// digital joystick inputs
IPT_DIGITAL_JOYSTICK_FIRST,
// use IPT_JOYSTICK for panels where the player has one single joystick
IPT_JOYSTICK_UP,
IPT_JOYSTICK_DOWN,
IPT_JOYSTICK_LEFT,
IPT_JOYSTICK_RIGHT,
// use IPT_JOYSTICKLEFT and IPT_JOYSTICKRIGHT for dual joystick panels
IPT_JOYSTICKRIGHT_UP,
IPT_JOYSTICKRIGHT_DOWN,
IPT_JOYSTICKRIGHT_LEFT,
IPT_JOYSTICKRIGHT_RIGHT,
IPT_JOYSTICKLEFT_UP,
IPT_JOYSTICKLEFT_DOWN,
IPT_JOYSTICKLEFT_LEFT,
IPT_JOYSTICKLEFT_RIGHT,
IPT_DIGITAL_JOYSTICK_LAST,
// action buttons
IPT_BUTTON1,
IPT_BUTTON2,
IPT_BUTTON3,
IPT_BUTTON4,
IPT_BUTTON5,
IPT_BUTTON6,
IPT_BUTTON7,
IPT_BUTTON8,
IPT_BUTTON9,
IPT_BUTTON10,
IPT_BUTTON11,
IPT_BUTTON12,
IPT_BUTTON13,
IPT_BUTTON14,
IPT_BUTTON15,
IPT_BUTTON16,
// mahjong inputs
IPT_MAHJONG_FIRST,
IPT_MAHJONG_A,
IPT_MAHJONG_B,
IPT_MAHJONG_C,
IPT_MAHJONG_D,
IPT_MAHJONG_E,
IPT_MAHJONG_F,
IPT_MAHJONG_G,
IPT_MAHJONG_H,
IPT_MAHJONG_I,
IPT_MAHJONG_J,
IPT_MAHJONG_K,
IPT_MAHJONG_L,
IPT_MAHJONG_M,
IPT_MAHJONG_N,
IPT_MAHJONG_O,
IPT_MAHJONG_P,
IPT_MAHJONG_Q,
IPT_MAHJONG_KAN,
IPT_MAHJONG_PON,
IPT_MAHJONG_CHI,
IPT_MAHJONG_REACH,
IPT_MAHJONG_RON,
IPT_MAHJONG_FLIP_FLOP,
IPT_MAHJONG_BET,
IPT_MAHJONG_SCORE,
IPT_MAHJONG_DOUBLE_UP,
IPT_MAHJONG_BIG,
IPT_MAHJONG_SMALL,
IPT_MAHJONG_LAST_CHANCE,
IPT_MAHJONG_LAST,
// hanafuda inputs
IPT_HANAFUDA_FIRST,
IPT_HANAFUDA_A,
IPT_HANAFUDA_B,
IPT_HANAFUDA_C,
IPT_HANAFUDA_D,
IPT_HANAFUDA_E,
IPT_HANAFUDA_F,
IPT_HANAFUDA_G,
IPT_HANAFUDA_H,
IPT_HANAFUDA_YES,
IPT_HANAFUDA_NO,
IPT_HANAFUDA_LAST,
// gambling inputs
IPT_GAMBLING_FIRST,
IPT_GAMBLE_KEYIN, // attendant
IPT_GAMBLE_KEYOUT, // attendant
IPT_GAMBLE_SERVICE, // attendant
IPT_GAMBLE_BOOK, // attendant
IPT_GAMBLE_DOOR, // attendant
// IPT_GAMBLE_DOOR2, // many gambling games have several doors.
// IPT_GAMBLE_DOOR3,
// IPT_GAMBLE_DOOR4,
// IPT_GAMBLE_DOOR5,
IPT_GAMBLE_PAYOUT, // player
IPT_GAMBLE_BET, // player
IPT_GAMBLE_DEAL, // player
IPT_GAMBLE_STAND, // player
IPT_GAMBLE_TAKE, // player
IPT_GAMBLE_D_UP, // player
IPT_GAMBLE_HALF, // player
IPT_GAMBLE_HIGH, // player
IPT_GAMBLE_LOW, // player
// poker-specific inputs
IPT_POKER_HOLD1,
IPT_POKER_HOLD2,
IPT_POKER_HOLD3,
IPT_POKER_HOLD4,
IPT_POKER_HOLD5,
IPT_POKER_CANCEL,
// slot-specific inputs
IPT_SLOT_STOP1,
IPT_SLOT_STOP2,
IPT_SLOT_STOP3,
IPT_SLOT_STOP4,
IPT_SLOT_STOP_ALL,
IPT_GAMBLING_LAST,
// analog inputs
IPT_ANALOG_FIRST,
IPT_ANALOG_ABSOLUTE_FIRST,
IPT_AD_STICK_X, // absolute // autocenter
IPT_AD_STICK_Y, // absolute // autocenter
IPT_AD_STICK_Z, // absolute // autocenter
IPT_PADDLE, // absolute // autocenter
IPT_PADDLE_V, // absolute // autocenter
IPT_PEDAL, // absolute // autocenter
IPT_PEDAL2, // absolute // autocenter
IPT_PEDAL3, // absolute // autocenter
IPT_LIGHTGUN_X, // absolute
IPT_LIGHTGUN_Y, // absolute
IPT_POSITIONAL, // absolute // autocenter if not wraps
IPT_POSITIONAL_V, // absolute // autocenter if not wraps
IPT_ANALOG_ABSOLUTE_LAST,
IPT_DIAL, // relative
IPT_DIAL_V, // relative
IPT_TRACKBALL_X, // relative
IPT_TRACKBALL_Y, // relative
IPT_MOUSE_X, // relative
IPT_MOUSE_Y, // relative
IPT_ANALOG_LAST,
// analog adjuster support
IPT_ADJUSTER,
// the following are special codes for user interface handling - not to be used by drivers!
IPT_UI_FIRST,
IPT_UI_CONFIGURE,
IPT_UI_ON_SCREEN_DISPLAY,
IPT_UI_DEBUG_BREAK,
IPT_UI_PAUSE,
IPT_UI_PAUSE_SINGLE,
IPT_UI_REWIND_SINGLE,
IPT_UI_RESET_MACHINE,
IPT_UI_SOFT_RESET,
IPT_UI_SHOW_GFX,
IPT_UI_FRAMESKIP_DEC,
IPT_UI_FRAMESKIP_INC,
IPT_UI_THROTTLE,
IPT_UI_FAST_FORWARD,
IPT_UI_SHOW_FPS,