<type>documentation</type>
<domain>custom</domain>
<id>key-names</id>
<title>Key Names</title>
<date>$Date$</date>
<version>$Revision$</version>
<product>per+</product>

The best way to obtain the names of keys is to enter a new key binding in the 
`User Interface > Keyboard > Custom Key Bindings
<script:show_preferences_gui#prefname="gui.keymap-override">`__ preference.
Alternatively, refer to the following enumeration of all keys.

**Modifier keys** supported for key bindings are:

* ``Ctrl`` -- Either Control key.
* ``Shift`` -- Either Shift key.  This modifier is ignored with some key names, 
  as indicated below.
* ``Alt`` -- Either Alt key.  This is not recommended for general use because 
  bindings using it tend to conflict with menu accelerators and operating system or 
  window manager operations.  
~~~if (WEBSITE or PLATFORM == "osx"):
  On macOS, the `User Interface > Keyboard > Alt Key 
  <script:show_preferences_gui#prefname="gui.qt-osx-key-for-alt">`__
  preference is used to configure which keys invoke Alt-key bindings.
~~~
* ``Command`` -- Mac OS Command key.  This is intended for use only on macOS.

**Unmodified keys** such core western alphabet keys are specified as follows:

``A B C D E F G H I J K L M N O P Q R S T U V W X Y Z``  

**Digits and most punctuation** can be specified but the ``Shift`` modifier 
will be ignored to accomodate different international keyboards:

``0 1 2 3 4 5 6 7 8 9``

``\` ~ ! @ # $ % ^ & \* ( ) - _ + = [ ] { } \\ | ; : ' " / ? . > , <``

**Special keys** can also be used with any modifier:

``Escape, Space, BackSpace, Tab, Linefeed, Clear, Return, Pause, Scroll_Lock,
Sys_Req, Delete, Home, Left, Up, Right, Down, Prior, Page_Up, Next,
Page_Down, End, Begin, Select, Print, Execute, Insert, Undo, Redo, Menu,
Find, Cancel, Help, Break, Mode_switch, script_switch, Num_Lock,``

``F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, L1, F12, L2, F13, L3, F14, L4,
F15, L5, F16, L6, F17, L7, F18, L8, F19, L9, F20, L10, F21, R1, F22, R2,
F23, R3, F24, R4, F25, R5, F26, R6, F27, R7, F28, R8, F29, R9, F30, R10,
F31, R11, F32, R12, F33, R13, F34, R14, F35, R15,``

**Additional key names** that also ignore the ``Shift`` modifier include:

``AE, Aacute, Acircumflex, Adiaeresis, Agrave, Ampersand, Any, Apostrophe, Aring,
AsciiCircum, AsciiTilde, Asterisk, At, Atilde, Backslash, Bar, BraceLeft,
BraceRight, BracketLeft, BracketRight, Ccedilla, Colon, Comma, Dollar, ETH,
Eacute, Ecircumflex, Ediaeresis, Egrave, Equal, Exclam, Greater, Iacute,
Icircumflex, Idiaeresis, Igrave, Less, Minus, Ntilde, NumberSign, Oacute,
Ocircumflex, Odiaeresis, Ograve, Ooblique, Otilde, ParenLeft, ParenRight,
Percent, Period, Plus, Question, QuoteDbl, QuoteLeft, Semicolon, Slash, Space,
THORN, Uacute, Ucircumflex, Udiaeresis, Ugrave, Underscore, Yacute, acute,
brokenbar, cedilla, cent, copyright, currency, degree, diaeresis, division,
exclamdown, guillemotleft, guillemotright, hyphen, macron, masculine, mu,
multiply, nobreakspace, notsign, onehalf, onequarter, onesuperior, ordfeminine,
paragraph, periodcentered, plusminus, questiondown, registered, section,
ssharp, sterling, threequarters, threesuperior, twosuperior, ydiaeresis, yen``
