mirror of
https://github.com/holub/mame
synced 2025-04-28 11:11:48 +03:00

* Moved common code for drawing about box, info viewer, and other text box menus to a base class; removed the last of the info viewer logic and the multi-line item hack from the base menu class. * Added previous/next group navigation for general inputs and plugin input selection menus. * Moved message catalog logic to lib/util, allowing osd and emu to use localised messages. * Made the base menu class use the UI manager’s feature for holding session state rather than a static map and mutex. * Improved menu event handling model, and fixed many issues, particularly with menus behaving badly when hidden/shown. * Added better support for menus that don’t participate in the usual menu stack, like the menuless sliders and the save/load state menus. * Made a number of menus refresh state when being shown after being hidden (fixes MT08121 among other issues). * Fixed indication of mounted slot option in the slot option details menu. * Improved appearance of background menus when emulation isn't running - draw all menus in the stack, and darken the background menus to make the edges of the active menu clearer. * Fixed locale issues in -listxml. -debugger: Made GUI debuggers more uniform. * Added new memory view features to Win32 debugger. * Fixed spelling of hexadecimal in Cocoa debugger and added decimal address option. * Fixed duplicate keyboard shortcut in Cocoa debugger (Shift-Cmd-D was both new device window and 64-bit float format). * Made keyboard shortcuts slightly more consistent across debuggers. -plugins: Moved input selection menu and sequence polling code to a common library. Fixed the issue that prevented keyboard inputs being mapped with -steadykey on. -docs: Started adding some documentation for MAME's internal UI, and updated the list of example front-ends. -Regenerated message catalog sources. For translators, the new strings are mostly: * The names of the inputs provided by the OS-dependent layer for things like fullscreen and video features. These show up in the user interface inputs menu. * The names for automatically generated views. These show up in the video options menu - test with a system with a lot of screens to see more variants. * The input macro plugin UI. * A few format strings for analog input assignments. * A few strings for the about box header.
138 lines
5.3 KiB
ReStructuredText
138 lines
5.3 KiB
ReStructuredText
.. _ui:
|
||
|
||
MAME’s User Interface
|
||
=====================
|
||
|
||
.. contents:: :local:
|
||
|
||
|
||
.. _ui-intro:
|
||
|
||
Introduction
|
||
------------
|
||
|
||
MAME provides a simple user interface for selecting a system and software to
|
||
run and changing settings while running an emulated system. MAME’s user
|
||
interface is designed to be usable with a keyboard, game controller, or pointing
|
||
device, but will require a keyboard for initial configuration.
|
||
|
||
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)
|
||
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)
|
||
Show or hide the menu during emulation.
|
||
Escape (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>`).
|
||
|
||
|
||
.. _ui-menus:
|
||
|
||
Navigating menus
|
||
----------------
|
||
|
||
By default, MAME menus can be navigated using the keyboard cursor keys. All
|
||
the UI controls can be changed by going to the **General Inputs** menu and then
|
||
selecting **User Interface**. The default keyboard controls on a US ANSI QWERTY
|
||
layout keyboard, and the settings they correspond to, are as follows:
|
||
|
||
Up Arrow (UI Up)
|
||
Highlight the previous menu item, or the last item if the first item is
|
||
highlighted.
|
||
Down Arrow (UI Down)
|
||
Highlight the next menu item, or the first item if the last item is
|
||
highlighted.
|
||
Left Arrow (UI Left)
|
||
For menu items that are adjustable settings, reduce the value or select the
|
||
previous setting (these menu items show left- and right-facing triangles
|
||
beside the value).
|
||
Right Arrow (UI Left)
|
||
For menu items that are adjustable settings, increase the value or select
|
||
the next setting (these menu items show left- and right-facing triangles
|
||
beside the value).
|
||
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)
|
||
Close the menu, returning to the previous menu, or returning to the
|
||
emulated machine for the main menu (there’s usually an item at the bottom
|
||
of the menu for the same purpose).
|
||
Home (UI Home)
|
||
Highlight the first menu item and scroll to the top of the menu.
|
||
End (UI End)
|
||
Highlight the last menu item and scroll to the bottom of the menu.
|
||
Page Up (UI Page Up)
|
||
Scroll the menu up by one screen.
|
||
Page Down (UI Page Down)
|
||
Scroll the menu down by one screen.
|
||
[ (UI Previous Group)
|
||
Move to the previous group of items (not used by all menus).
|
||
] (UI Next Group)
|
||
Move to the next group of items (not used by all menus).
|
||
|
||
|
||
.. _ui-menus-gamectrl:
|
||
|
||
Using a game controller
|
||
~~~~~~~~~~~~~~~~~~~~~~~
|
||
|
||
MAME supports navigating menus with a game controller or joystick, but only the
|
||
most important UI controls have joystick assignments by default:
|
||
|
||
* Move the first joystick up or down in the Y axis to highlight the previous or
|
||
next menu item.
|
||
* 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 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
|
||
* **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
|
||
Group** and **UI Next Group** are not essential, but make navigating some
|
||
menus easier
|
||
|
||
If you’re not using an external front-end to launch systems in MAME, you should
|
||
assign joystick buttons (or combinations of buttons) to these controls to make
|
||
full use of the system and software selection menus:
|
||
|
||
* **UI Focus Next**/**UI Focus Previous** to navigate between panes
|
||
* **UI Add Remove favorite**, **UI Export List** and **UI Audit Media** if you
|
||
want access to these features without using a keyboard or pointing device
|
||
|
||
|
||
.. _ui-menus-mouse:
|
||
|
||
Using a mouse or trackball
|
||
~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||
|
||
MAME supports navigating menus using a mouse or trackball that works as a system
|
||
pointing device:
|
||
|
||
* Click menu items to highlight them.
|
||
* Double-click menu items to select them.
|
||
* Click the left- or right-pointing triangle to adjust settings.
|
||
* For menus with too many items to fit on the screen, click the upward- or
|
||
downward-pointing triangle at the top or bottom to scroll up or down by one
|
||
screen at a time.
|
||
* Use vertical scrolling gestures to scroll menus or text boxes with too many
|
||
items or lines to fit on the screen.
|
||
* 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.
|