<?xml version="1.0" encoding="UTF-8"?>
<buttonmap version="2">
  <controller id="game.controller.default" type="RETRO_DEVICE_ANALOG">
    <!-- Up -->
    <feature name="up" mapto="RETRO_DEVICE_ID_JOYPAD_UP"/>
    <!-- Down -->
    <feature name="down" mapto="RETRO_DEVICE_ID_JOYPAD_DOWN"/>
    <!-- Right -->
    <feature name="right" mapto="RETRO_DEVICE_ID_JOYPAD_RIGHT"/>
    <!-- Left -->
    <feature name="left" mapto="RETRO_DEVICE_ID_JOYPAD_LEFT"/>
    <!-- Fire / Mouse button 1 -->
    <feature name="b" mapto="RETRO_DEVICE_ID_JOYPAD_A"/>
    <!-- Mouse button 2 -->
    <feature name="a" mapto="RETRO_DEVICE_ID_JOYPAD_B"/>
    <!-- Possibly unused -->
    <feature name="y" mapto="RETRO_DEVICE_ID_JOYPAD_X"/>
    <!-- Enter GUI -->
    <feature name="x" mapto="RETRO_DEVICE_ID_JOYPAD_Y"/>
    <!-- Keyboard overlay -->
    <feature name="start" mapto="RETRO_DEVICE_ID_JOYPAD_START"/>
    <!-- Mouse mode toggle -->
    <feature name="back" mapto="RETRO_DEVICE_ID_JOYPAD_SELECT"/>
    <!-- Toggle m/k status -->
    <feature name="lefttrigger" mapto="RETRO_DEVICE_ID_JOYPAD_L2"/>
    <!-- Toggle sound -->
    <feature name="righttrigger" mapto="RETRO_DEVICE_ID_JOYPAD_R2"/>
    <!-- Joystick number -->
    <feature name="leftbumper" mapto="RETRO_DEVICE_ID_JOYPAD_L"/>
    <!-- Mouse speed -->
    <feature name="rightbumper" mapto="RETRO_DEVICE_ID_JOYPAD_R"/>
    <!-- Mouse pointer (joystick mode) -->
    <feature name="leftstick" mapto="RETRO_DEVICE_INDEX_ANALOG_LEFT"/>
    <!-- Mouse pointer (mouse mode) -->
    <feature name="rightstick" mapto="RETRO_DEVICE_INDEX_ANALOG_RIGHT"/>
  </controller>
  <controller id="game.controller.mouse" type="RETRO_DEVICE_MOUSE">
    <feature name="left" mapto="RETRO_DEVICE_ID_MOUSE_LEFT"/>
    <feature name="right" mapto="RETRO_DEVICE_ID_MOUSE_RIGHT"/>
    <feature name="middle" mapto="RETRO_DEVICE_ID_MOUSE_MIDDLE"/>
    <feature name="wheelup" mapto="RETRO_DEVICE_ID_MOUSE_WHEELUP"/>
    <feature name="wheeldown" mapto="RETRO_DEVICE_ID_MOUSE_WHEELDOWN"/>
    <feature name="horizwheelup" mapto="RETRO_DEVICE_ID_MOUSE_HORIZ_WHEELUP"/>
    <feature name="horizwheeldown" mapto="RETRO_DEVICE_ID_MOUSE_HORIZ_WHEELDOWN"/>
    <feature name="pointer" mapto="RETRO_DEVICE_MOUSE"/>
  </controller>
  <controller id="game.controller.keyboard" type="RETRO_DEVICE_KEYBOARD">
    <feature name="backspace" mapto="RETROK_BACKSPACE"/>
    <feature name="tab" mapto="RETROK_TAB"/>
    <feature name="enter" mapto="RETROK_RETURN"/>
    <feature name="pause" mapto="RETROK_PAUSE"/>
    <feature name="escape" mapto="RETROK_ESCAPE"/>
    <feature name="space" mapto="RETROK_SPACE"/>
    <feature name="hash" mapto="RETROK_HASH"/>
    <feature name="quote" mapto="RETROK_QUOTE"/>
    <!-- Minus -->
    <feature name="rightparen" mapto="RETROK_RIGHTPAREN"/>
    <feature name="plus" mapto="RETROK_PLUS"/>
    <!-- M -->
    <feature name="comma" mapto="RETROK_COMMA"/>
    <!-- Equals -->
    <feature name="minus" mapto="RETROK_MINUS"/>
    <!-- Comma -->
    <feature name="period" mapto="RETROK_PERIOD"/>
    <!-- Period -->
    <feature name="slash" mapto="RETROK_SLASH"/>
    <feature name="0" mapto="RETROK_0"/>
    <feature name="1" mapto="RETROK_1"/>
    <feature name="2" mapto="RETROK_2"/>
    <feature name="3" mapto="RETROK_3"/>
    <feature name="4" mapto="RETROK_4"/>
    <feature name="5" mapto="RETROK_5"/>
    <feature name="6" mapto="RETROK_6"/>
    <feature name="7" mapto="RETROK_7"/>
    <feature name="8" mapto="RETROK_8"/>
    <feature name="9" mapto="RETROK_9"/>
    <!-- LTGT -->
    <feature name="less" mapto="RETROK_LESS"/>
    <!-- Slash -->
    <feature name="equals" mapto="RETROK_EQUALS"/>
    <feature name="leftbracket" mapto="RETROK_LEFTBRACKET"/>
    <feature name="backslash" mapto="RETROK_BACKSLASH"/>
    <feature name="rightbracket" mapto="RETROK_RIGHTBRACKET"/>
    <!-- Q -->
    <feature name="a" mapto="RETROK_a"/>
    <feature name="b" mapto="RETROK_b"/>
    <feature name="c" mapto="RETROK_c"/>
    <feature name="d" mapto="RETROK_d"/>
    <feature name="e" mapto="RETROK_e"/>
    <feature name="f" mapto="RETROK_f"/>
    <feature name="g" mapto="RETROK_g"/>
    <feature name="h" mapto="RETROK_h"/>
    <feature name="i" mapto="RETROK_i"/>
    <feature name="j" mapto="RETROK_j"/>
    <feature name="k" mapto="RETROK_k"/>
    <feature name="l" mapto="RETROK_l"/>
    <!-- Semicolon -->
    <feature name="m" mapto="RETROK_m"/>
    <feature name="n" mapto="RETROK_n"/>
    <feature name="o" mapto="RETROK_o"/>
    <feature name="p" mapto="RETROK_p"/>
    <!-- A -->
    <feature name="q" mapto="RETROK_q"/>
    <feature name="r" mapto="RETROK_r"/>
    <feature name="s" mapto="RETROK_s"/>
    <feature name="t" mapto="RETROK_t"/>
    <feature name="u" mapto="RETROK_u"/>
    <feature name="v" mapto="RETROK_v"/>
    <!-- Z -->
    <feature name="w" mapto="RETROK_w"/>
    <feature name="x" mapto="RETROK_x"/>
    <feature name="y" mapto="RETROK_y"/>
    <!-- W -->
    <feature name="z" mapto="RETROK_z"/>
    <feature name="delete" mapto="RETROK_DELETE"/>
    <!-- Numeric keypad -->
    <feature name="kp0" mapto="RETROK_KP0"/>
    <feature name="kp1" mapto="RETROK_KP1"/>
    <feature name="kp2" mapto="RETROK_KP2"/>
    <feature name="kp3" mapto="RETROK_KP3"/>
    <feature name="kp4" mapto="RETROK_KP4"/>
    <feature name="kp5" mapto="RETROK_KP5"/>
    <feature name="kp6" mapto="RETROK_KP6"/>
    <feature name="kp7" mapto="RETROK_KP7"/>
    <feature name="kp8" mapto="RETROK_KP8"/>
    <feature name="kp9" mapto="RETROK_KP9"/>
    <!-- Num Delete -->
    <feature name="kpperiod" mapto="RETROK_KP_PERIOD"/>
    <feature name="kpdivide" mapto="RETROK_KP_DIVIDE"/>
    <feature name="kpmultiply" mapto="RETROK_KP_MULTIPLY"/>
    <feature name="kpminus" mapto="RETROK_KP_MINUS"/>
    <feature name="kpplus" mapto="RETROK_KP_PLUS"/>
    <feature name="kpenter" mapto="RETROK_KP_ENTER"/>
    <!-- Arrows + Home/End pad -->
    <feature name="up" mapto="RETROK_UP"/>
    <feature name="down" mapto="RETROK_DOWN"/>
    <feature name="right" mapto="RETROK_RIGHT"/>
    <feature name="left" mapto="RETROK_LEFT"/>
    <!-- Help -->
    <feature name="insert" mapto="RETROK_INSERT"/>
    <!-- ( -->
    <feature name="home" mapto="RETROK_HOME"/>
    <!-- ) -->
    <feature name="end" mapto="RETROK_END"/>
    <!-- Function keys -->
    <feature name="f1" mapto="RETROK_F1"/>
    <feature name="f2" mapto="RETROK_F2"/>
    <feature name="f3" mapto="RETROK_F3"/>
    <feature name="f4" mapto="RETROK_F4"/>
    <feature name="f5" mapto="RETROK_F5"/>
    <feature name="f6" mapto="RETROK_F6"/>
    <feature name="f7" mapto="RETROK_F7"/>
    <feature name="f8" mapto="RETROK_F8"/>
    <feature name="f9" mapto="RETROK_F9"/>
    <feature name="f10" mapto="RETROK_F10"/>
    <!-- Key state modifier keys -->
    <feature name="capslock" mapto="RETROK_CAPSLOCK"/>
    <!-- Inhibit screen -->
    <feature name="scrolllock" mapto="RETROK_SCROLLOCK"/>
    <feature name="rightshift" mapto="RETROK_RSHIFT"/>
    <feature name="leftshift" mapto="RETROK_LSHIFT"/>
    <feature name="rightctrl" mapto="RETROK_RCTRL"/>
    <feature name="leftctrl" mapto="RETROK_LCTRL"/>
    <feature name="rightalt" mapto="RETROK_RALT"/>
    <feature name="leftalt" mapto="RETROK_LALT"/>
    <!-- Right AMI -->
    <feature name="rightmeta" mapto="RETROK_RMETA"/>
    <!-- Left AMI -->
    <feature name="leftmeta" mapto="RETROK_LMETA"/>
  </controller>
</buttonmap>
